diff --git a/.DS_Store b/.DS_Store index d7f70dcb..c9ac0121 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/.obsidian/app.json b/.obsidian/app.json index fec66633..a6a837dd 100644 --- a/.obsidian/app.json +++ b/.obsidian/app.json @@ -11,8 +11,8 @@ "includeName": true, "pageSize": "A4", "landscape": false, - "margin": "2", - "downscalePercent": 75 + "margin": "0", + "downscalePercent": 95 }, "defaultViewMode": "source", "autoPairMarkdown": false, diff --git a/.obsidian/appearance.json b/.obsidian/appearance.json index 4fbe62fa..d5fe56bf 100644 --- a/.obsidian/appearance.json +++ b/.obsidian/appearance.json @@ -1,7 +1,7 @@ { "theme": "obsidian", "cssTheme": "Minimal", - "baseFontSize": 22.5, + "baseFontSize": 16.5, "enabledCssSnippets": [ "pdf_darkmode", "query_header_title", diff --git a/.obsidian/community-plugins.json b/.obsidian/community-plugins.json index 543c5fcd..ce798838 100644 --- a/.obsidian/community-plugins.json +++ b/.obsidian/community-plugins.json @@ -19,7 +19,6 @@ "pane-relief", "text-snippets-obsidian", "obsidian-share-as-gist", - "darlal-switcher-plus", "obsidian-quickshare", "obsidian-better-internal-link-inserter", "obsidian-contextual-typography", @@ -38,7 +37,6 @@ "postfix", "metaedit", "templater-obsidian", - "rss-reader", "obsidian-sequence-hotkeys", "obsidian-shellcommands", "obsidian-vimrc-support", @@ -47,6 +45,7 @@ "number-headings-obsidian", "obsidian-rollover-daily-todos", "obsidian-icon-shortcodes", - "obsidian-hider", - "customizable-page-header-buttons" + "darlal-switcher-plus", + "zotlit", + "obsidian-hider" ] \ No newline at end of file diff --git a/.obsidian/graph.json b/.obsidian/graph.json index d7ef77f9..75caf25b 100644 --- a/.obsidian/graph.json +++ b/.obsidian/graph.json @@ -130,6 +130,6 @@ "repelStrength": 6.39485677083333, "linkStrength": 1, "linkDistance": 30, - "scale": 1.0014338896636248, + "scale": 0.1031156391768266, "close": true } \ No newline at end of file diff --git a/.obsidian/hotkeys.json b/.obsidian/hotkeys.json index 5d468143..c128baaa 100644 --- a/.obsidian/hotkeys.json +++ b/.obsidian/hotkeys.json @@ -88,15 +88,6 @@ "key": "E" } ], - "obsidian-excalidraw-plugin:excalidraw-autocreate-and-embed": [ - { - "modifiers": [ - "Alt", - "Mod" - ], - "key": "E" - } - ], "editor:swap-line-down": [ { "modifiers": [ @@ -473,7 +464,14 @@ "key": "O" } ], - "switcher:open": [], + "switcher:open": [ + { + "modifiers": [ + "Mod" + ], + "key": "O" + } + ], "obsidian-completr:completr-close-suggestion-popup": [], "calendar:show-calendar-view": [], "obsidian-latex-suite:latex-suite-box-equation": [ @@ -686,12 +684,6 @@ ], "workspace:goto-tab-5": [], "mrj-jump-to-link:activate-jump-to-anywhere": [ - { - "modifiers": [ - "Ctrl" - ], - "key": ";" - }, { "modifiers": [ "Ctrl" @@ -740,5 +732,14 @@ ], "obsidian-completr:completr-fake-arrow-up": [], "obsidian-completr:completr-fake-arrow-down": [], - "obsidian-completr:completr-fake-enter": [] + "obsidian-completr:completr-fake-enter": [], + "obsidian-excalidraw-plugin:excalidraw-autocreate-and-embed-new-tab": [ + { + "modifiers": [ + "Alt", + "Mod" + ], + "key": "E" + } + ] } \ No newline at end of file diff --git a/.obsidian/plugins/breadcrumbs/data.json b/.obsidian/plugins/breadcrumbs/data.json index a1aff600..b1015849 100644 --- a/.obsidian/plugins/breadcrumbs/data.json +++ b/.obsidian/plugins/breadcrumbs/data.json @@ -4,7 +4,7 @@ "aliasesInIndex": false, "alphaSortAsc": false, "altLinkFields": [ - "alias" + "aliases" ], "CSVPaths": "", "createIndexIndent": " ", @@ -20,7 +20,7 @@ "dvWaitTime": 5000, "enableAlphaSort": true, "enableRelationSuggestor": true, - "fieldSuggestor": false, + "fieldSuggestor": true, "filterImpliedSiblingsOfDifferentTypes": false, "jugglLayout": "hierarchy", "limitWriteBCCheckboxes": [ @@ -28,7 +28,9 @@ "next", "prev", "author", - "source" + "source", + "same", + "opposes" ], "CHECKBOX_STATES_OVERWRITTEN": false, "gridDefaultDepth": 25, @@ -74,7 +76,8 @@ "limitTrailCheckboxes": [ "up", "author", - "supports" + "supports", + "opposes" ], "limitJumpToFirstFields": [ "up", @@ -82,13 +85,13 @@ "down", "next", "prev", - "same_author", "extercept", "includes", "supports", "supported_by", "refutes", - "refuted_by" + "refuted_by", + "opposes" ], "showAll": "All", "noPathMessage": "", @@ -156,6 +159,19 @@ "prev": [ "refuted_by" ] + }, + { + "up": [ + "opposes" + ], + "same": [ + "same" + ], + "down": [ + "opposes" + ], + "next": [], + "prev": [] } ], "writeBCsInline": true, diff --git a/.obsidian/plugins/obsidian-citation-plugin/data.json b/.obsidian/plugins/obsidian-citation-plugin/data.json new file mode 100644 index 00000000..fd3f8365 --- /dev/null +++ b/.obsidian/plugins/obsidian-citation-plugin/data.json @@ -0,0 +1,8 @@ +{ + "citationExportFormat": "csl-json", + "literatureNoteTitleTemplate": "@{{citekey}}", + "literatureNoteFolder": "Reading notes", + "literatureNoteContentTemplate": "---\ntitle: {{title}}\nyear: {{year}}\n---\nauthor:: {{authorString}}\nlink:: {{URL}}\n\n", + "markdownCitationTemplate": "[@{{citekey}}]", + "alternativeMarkdownCitationTemplate": "@{{citekey}}" +} \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-citation-plugin/main.js b/.obsidian/plugins/obsidian-citation-plugin/main.js new file mode 100644 index 00000000..d292f808 --- /dev/null +++ b/.obsidian/plugins/obsidian-citation-plugin/main.js @@ -0,0 +1,85889 @@ +'use strict'; + +var obsidian = require('obsidian'); +var sysPath = require('path'); +var require$$0$4 = require('events'); +var require$$0$2 = require('util'); +var fs$3 = require('fs'); +var require$$0$3 = require('stream'); +var require$$1$1 = require('os'); + +function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } + +var sysPath__default = /*#__PURE__*/_interopDefaultLegacy(sysPath); +var require$$0__default$2 = /*#__PURE__*/_interopDefaultLegacy(require$$0$4); +var require$$0__default = /*#__PURE__*/_interopDefaultLegacy(require$$0$2); +var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs$3); +var require$$0__default$1 = /*#__PURE__*/_interopDefaultLegacy(require$$0$3); +var require$$1__default = /*#__PURE__*/_interopDefaultLegacy(require$$1$1); + +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +/* global Reflect, Promise */ + +var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); +}; + +function __extends(d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +} + +var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; + +function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +} + +function __generator(thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +} + +var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function createCommonjsModule(fn, basedir, module) { + return module = { + path: basedir, + exports: {}, + require: function (path, base) { + return commonjsRequire(path, (base === undefined || base === null) ? module.path : base); + } + }, fn(module, module.exports), module.exports; +} + +function commonjsRequire () { + throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs'); +} + +const WIN_SLASH = '\\\\/'; +const WIN_NO_SLASH = `[^${WIN_SLASH}]`; + +/** + * Posix glob regex + */ + +const DOT_LITERAL = '\\.'; +const PLUS_LITERAL = '\\+'; +const QMARK_LITERAL = '\\?'; +const SLASH_LITERAL = '\\/'; +const ONE_CHAR = '(?=.)'; +const QMARK = '[^/]'; +const END_ANCHOR = `(?:${SLASH_LITERAL}|$)`; +const START_ANCHOR = `(?:^|${SLASH_LITERAL})`; +const DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`; +const NO_DOT = `(?!${DOT_LITERAL})`; +const NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`; +const NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`; +const NO_DOTS_SLASH = `(?!${DOTS_SLASH})`; +const QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`; +const STAR = `${QMARK}*?`; + +const POSIX_CHARS = { + DOT_LITERAL, + PLUS_LITERAL, + QMARK_LITERAL, + SLASH_LITERAL, + ONE_CHAR, + QMARK, + END_ANCHOR, + DOTS_SLASH, + NO_DOT, + NO_DOTS, + NO_DOT_SLASH, + NO_DOTS_SLASH, + QMARK_NO_DOT, + STAR, + START_ANCHOR +}; + +/** + * Windows glob regex + */ + +const WINDOWS_CHARS = { + ...POSIX_CHARS, + + SLASH_LITERAL: `[${WIN_SLASH}]`, + QMARK: WIN_NO_SLASH, + STAR: `${WIN_NO_SLASH}*?`, + DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`, + NO_DOT: `(?!${DOT_LITERAL})`, + NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`, + NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`, + NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`, + QMARK_NO_DOT: `[^.${WIN_SLASH}]`, + START_ANCHOR: `(?:^|[${WIN_SLASH}])`, + END_ANCHOR: `(?:[${WIN_SLASH}]|$)` +}; + +/** + * POSIX Bracket Regex + */ + +const POSIX_REGEX_SOURCE = { + alnum: 'a-zA-Z0-9', + alpha: 'a-zA-Z', + ascii: '\\x00-\\x7F', + blank: ' \\t', + cntrl: '\\x00-\\x1F\\x7F', + digit: '0-9', + graph: '\\x21-\\x7E', + lower: 'a-z', + print: '\\x20-\\x7E ', + punct: '\\-!"#$%&\'()\\*+,./:;<=>?@[\\]^_`{|}~', + space: ' \\t\\r\\n\\v\\f', + upper: 'A-Z', + word: 'A-Za-z0-9_', + xdigit: 'A-Fa-f0-9' +}; + +var constants = { + MAX_LENGTH: 1024 * 64, + POSIX_REGEX_SOURCE, + + // regular expressions + REGEX_BACKSLASH: /\\(?![*+?^${}(|)[\]])/g, + REGEX_NON_SPECIAL_CHARS: /^[^@![\].,$*+?^{}()|\\/]+/, + REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\]]/, + REGEX_SPECIAL_CHARS_BACKREF: /(\\?)((\W)(\3*))/g, + REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\]])/g, + REGEX_REMOVE_BACKSLASH: /(?:\[.*?[^\\]\]|\\(?=.))/g, + + // Replace globs with equivalent patterns to reduce parsing time. + REPLACEMENTS: { + '***': '*', + '**/**': '**', + '**/**/**': '**' + }, + + // Digits + CHAR_0: 48, /* 0 */ + CHAR_9: 57, /* 9 */ + + // Alphabet chars. + CHAR_UPPERCASE_A: 65, /* A */ + CHAR_LOWERCASE_A: 97, /* a */ + CHAR_UPPERCASE_Z: 90, /* Z */ + CHAR_LOWERCASE_Z: 122, /* z */ + + CHAR_LEFT_PARENTHESES: 40, /* ( */ + CHAR_RIGHT_PARENTHESES: 41, /* ) */ + + CHAR_ASTERISK: 42, /* * */ + + // Non-alphabetic chars. + CHAR_AMPERSAND: 38, /* & */ + CHAR_AT: 64, /* @ */ + CHAR_BACKWARD_SLASH: 92, /* \ */ + CHAR_CARRIAGE_RETURN: 13, /* \r */ + CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */ + CHAR_COLON: 58, /* : */ + CHAR_COMMA: 44, /* , */ + CHAR_DOT: 46, /* . */ + CHAR_DOUBLE_QUOTE: 34, /* " */ + CHAR_EQUAL: 61, /* = */ + CHAR_EXCLAMATION_MARK: 33, /* ! */ + CHAR_FORM_FEED: 12, /* \f */ + CHAR_FORWARD_SLASH: 47, /* / */ + CHAR_GRAVE_ACCENT: 96, /* ` */ + CHAR_HASH: 35, /* # */ + CHAR_HYPHEN_MINUS: 45, /* - */ + CHAR_LEFT_ANGLE_BRACKET: 60, /* < */ + CHAR_LEFT_CURLY_BRACE: 123, /* { */ + CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */ + CHAR_LINE_FEED: 10, /* \n */ + CHAR_NO_BREAK_SPACE: 160, /* \u00A0 */ + CHAR_PERCENT: 37, /* % */ + CHAR_PLUS: 43, /* + */ + CHAR_QUESTION_MARK: 63, /* ? */ + CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */ + CHAR_RIGHT_CURLY_BRACE: 125, /* } */ + CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */ + CHAR_SEMICOLON: 59, /* ; */ + CHAR_SINGLE_QUOTE: 39, /* ' */ + CHAR_SPACE: 32, /* */ + CHAR_TAB: 9, /* \t */ + CHAR_UNDERSCORE: 95, /* _ */ + CHAR_VERTICAL_LINE: 124, /* | */ + CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \uFEFF */ + + SEP: sysPath__default['default'].sep, + + /** + * Create EXTGLOB_CHARS + */ + + extglobChars(chars) { + return { + '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` }, + '?': { type: 'qmark', open: '(?:', close: ')?' }, + '+': { type: 'plus', open: '(?:', close: ')+' }, + '*': { type: 'star', open: '(?:', close: ')*' }, + '@': { type: 'at', open: '(?:', close: ')' } + }; + }, + + /** + * Create GLOB_CHARS + */ + + globChars(win32) { + return win32 === true ? WINDOWS_CHARS : POSIX_CHARS; + } +}; + +var utils = createCommonjsModule(function (module, exports) { + + +const win32 = process.platform === 'win32'; +const { + REGEX_BACKSLASH, + REGEX_REMOVE_BACKSLASH, + REGEX_SPECIAL_CHARS, + REGEX_SPECIAL_CHARS_GLOBAL +} = constants; + +exports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val); +exports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str); +exports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str); +exports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\$1'); +exports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/'); + +exports.removeBackslashes = str => { + return str.replace(REGEX_REMOVE_BACKSLASH, match => { + return match === '\\' ? '' : match; + }); +}; + +exports.supportsLookbehinds = () => { + const segs = process.version.slice(1).split('.').map(Number); + if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) { + return true; + } + return false; +}; + +exports.isWindows = options => { + if (options && typeof options.windows === 'boolean') { + return options.windows; + } + return win32 === true || sysPath__default['default'].sep === '\\'; +}; + +exports.escapeLast = (input, char, lastIdx) => { + const idx = input.lastIndexOf(char, lastIdx); + if (idx === -1) return input; + if (input[idx - 1] === '\\') return exports.escapeLast(input, char, idx - 1); + return `${input.slice(0, idx)}\\${input.slice(idx)}`; +}; + +exports.removePrefix = (input, state = {}) => { + let output = input; + if (output.startsWith('./')) { + output = output.slice(2); + state.prefix = './'; + } + return output; +}; + +exports.wrapOutput = (input, state = {}, options = {}) => { + const prepend = options.contains ? '' : '^'; + const append = options.contains ? '' : '$'; + + let output = `${prepend}(?:${input})${append}`; + if (state.negated === true) { + output = `(?:^(?!${output}).*$)`; + } + return output; +}; +}); + +const { + CHAR_ASTERISK, /* * */ + CHAR_AT, /* @ */ + CHAR_BACKWARD_SLASH, /* \ */ + CHAR_COMMA, /* , */ + CHAR_DOT, /* . */ + CHAR_EXCLAMATION_MARK, /* ! */ + CHAR_FORWARD_SLASH, /* / */ + CHAR_LEFT_CURLY_BRACE, /* { */ + CHAR_LEFT_PARENTHESES, /* ( */ + CHAR_LEFT_SQUARE_BRACKET, /* [ */ + CHAR_PLUS, /* + */ + CHAR_QUESTION_MARK, /* ? */ + CHAR_RIGHT_CURLY_BRACE, /* } */ + CHAR_RIGHT_PARENTHESES, /* ) */ + CHAR_RIGHT_SQUARE_BRACKET /* ] */ +} = constants; + +const isPathSeparator = code => { + return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH; +}; + +const depth = token => { + if (token.isPrefix !== true) { + token.depth = token.isGlobstar ? Infinity : 1; + } +}; + +/** + * Quickly scans a glob pattern and returns an object with a handful of + * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists), + * `glob` (the actual pattern), and `negated` (true if the path starts with `!`). + * + * ```js + * const pm = require('picomatch'); + * console.log(pm.scan('foo/bar/*.js')); + * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' } + * ``` + * @param {String} `str` + * @param {Object} `options` + * @return {Object} Returns an object with tokens and regex source string. + * @api public + */ + +const scan = (input, options) => { + const opts = options || {}; + + const length = input.length - 1; + const scanToEnd = opts.parts === true || opts.scanToEnd === true; + const slashes = []; + const tokens = []; + const parts = []; + + let str = input; + let index = -1; + let start = 0; + let lastIndex = 0; + let isBrace = false; + let isBracket = false; + let isGlob = false; + let isExtglob = false; + let isGlobstar = false; + let braceEscaped = false; + let backslashes = false; + let negated = false; + let finished = false; + let braces = 0; + let prev; + let code; + let token = { value: '', depth: 0, isGlob: false }; + + const eos = () => index >= length; + const peek = () => str.charCodeAt(index + 1); + const advance = () => { + prev = code; + return str.charCodeAt(++index); + }; + + while (index < length) { + code = advance(); + let next; + + if (code === CHAR_BACKWARD_SLASH) { + backslashes = token.backslashes = true; + code = advance(); + + if (code === CHAR_LEFT_CURLY_BRACE) { + braceEscaped = true; + } + continue; + } + + if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) { + braces++; + + while (eos() !== true && (code = advance())) { + if (code === CHAR_BACKWARD_SLASH) { + backslashes = token.backslashes = true; + advance(); + continue; + } + + if (code === CHAR_LEFT_CURLY_BRACE) { + braces++; + continue; + } + + if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) { + isBrace = token.isBrace = true; + isGlob = token.isGlob = true; + finished = true; + + if (scanToEnd === true) { + continue; + } + + break; + } + + if (braceEscaped !== true && code === CHAR_COMMA) { + isBrace = token.isBrace = true; + isGlob = token.isGlob = true; + finished = true; + + if (scanToEnd === true) { + continue; + } + + break; + } + + if (code === CHAR_RIGHT_CURLY_BRACE) { + braces--; + + if (braces === 0) { + braceEscaped = false; + isBrace = token.isBrace = true; + finished = true; + break; + } + } + } + + if (scanToEnd === true) { + continue; + } + + break; + } + + if (code === CHAR_FORWARD_SLASH) { + slashes.push(index); + tokens.push(token); + token = { value: '', depth: 0, isGlob: false }; + + if (finished === true) continue; + if (prev === CHAR_DOT && index === (start + 1)) { + start += 2; + continue; + } + + lastIndex = index + 1; + continue; + } + + if (opts.noext !== true) { + const isExtglobChar = code === CHAR_PLUS + || code === CHAR_AT + || code === CHAR_ASTERISK + || code === CHAR_QUESTION_MARK + || code === CHAR_EXCLAMATION_MARK; + + if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) { + isGlob = token.isGlob = true; + isExtglob = token.isExtglob = true; + finished = true; + + if (scanToEnd === true) { + while (eos() !== true && (code = advance())) { + if (code === CHAR_BACKWARD_SLASH) { + backslashes = token.backslashes = true; + code = advance(); + continue; + } + + if (code === CHAR_RIGHT_PARENTHESES) { + isGlob = token.isGlob = true; + finished = true; + break; + } + } + continue; + } + break; + } + } + + if (code === CHAR_ASTERISK) { + if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true; + isGlob = token.isGlob = true; + finished = true; + + if (scanToEnd === true) { + continue; + } + break; + } + + if (code === CHAR_QUESTION_MARK) { + isGlob = token.isGlob = true; + finished = true; + + if (scanToEnd === true) { + continue; + } + break; + } + + if (code === CHAR_LEFT_SQUARE_BRACKET) { + while (eos() !== true && (next = advance())) { + if (next === CHAR_BACKWARD_SLASH) { + backslashes = token.backslashes = true; + advance(); + continue; + } + + if (next === CHAR_RIGHT_SQUARE_BRACKET) { + isBracket = token.isBracket = true; + isGlob = token.isGlob = true; + finished = true; + + if (scanToEnd === true) { + continue; + } + break; + } + } + } + + if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) { + negated = token.negated = true; + start++; + continue; + } + + if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) { + isGlob = token.isGlob = true; + + if (scanToEnd === true) { + while (eos() !== true && (code = advance())) { + if (code === CHAR_LEFT_PARENTHESES) { + backslashes = token.backslashes = true; + code = advance(); + continue; + } + + if (code === CHAR_RIGHT_PARENTHESES) { + finished = true; + break; + } + } + continue; + } + break; + } + + if (isGlob === true) { + finished = true; + + if (scanToEnd === true) { + continue; + } + + break; + } + } + + if (opts.noext === true) { + isExtglob = false; + isGlob = false; + } + + let base = str; + let prefix = ''; + let glob = ''; + + if (start > 0) { + prefix = str.slice(0, start); + str = str.slice(start); + lastIndex -= start; + } + + if (base && isGlob === true && lastIndex > 0) { + base = str.slice(0, lastIndex); + glob = str.slice(lastIndex); + } else if (isGlob === true) { + base = ''; + glob = str; + } else { + base = str; + } + + if (base && base !== '' && base !== '/' && base !== str) { + if (isPathSeparator(base.charCodeAt(base.length - 1))) { + base = base.slice(0, -1); + } + } + + if (opts.unescape === true) { + if (glob) glob = utils.removeBackslashes(glob); + + if (base && backslashes === true) { + base = utils.removeBackslashes(base); + } + } + + const state = { + prefix, + input, + start, + base, + glob, + isBrace, + isBracket, + isGlob, + isExtglob, + isGlobstar, + negated + }; + + if (opts.tokens === true) { + state.maxDepth = 0; + if (!isPathSeparator(code)) { + tokens.push(token); + } + state.tokens = tokens; + } + + if (opts.parts === true || opts.tokens === true) { + let prevIndex; + + for (let idx = 0; idx < slashes.length; idx++) { + const n = prevIndex ? prevIndex + 1 : start; + const i = slashes[idx]; + const value = input.slice(n, i); + if (opts.tokens) { + if (idx === 0 && start !== 0) { + tokens[idx].isPrefix = true; + tokens[idx].value = prefix; + } else { + tokens[idx].value = value; + } + depth(tokens[idx]); + state.maxDepth += tokens[idx].depth; + } + if (idx !== 0 || value !== '') { + parts.push(value); + } + prevIndex = i; + } + + if (prevIndex && prevIndex + 1 < input.length) { + const value = input.slice(prevIndex + 1); + parts.push(value); + + if (opts.tokens) { + tokens[tokens.length - 1].value = value; + depth(tokens[tokens.length - 1]); + state.maxDepth += tokens[tokens.length - 1].depth; + } + } + + state.slashes = slashes; + state.parts = parts; + } + + return state; +}; + +var scan_1 = scan; + +/** + * Constants + */ + +const { + MAX_LENGTH, + POSIX_REGEX_SOURCE: POSIX_REGEX_SOURCE$1, + REGEX_NON_SPECIAL_CHARS, + REGEX_SPECIAL_CHARS_BACKREF, + REPLACEMENTS +} = constants; + +/** + * Helpers + */ + +const expandRange = (args, options) => { + if (typeof options.expandRange === 'function') { + return options.expandRange(...args, options); + } + + args.sort(); + const value = `[${args.join('-')}]`; + + try { + /* eslint-disable-next-line no-new */ + new RegExp(value); + } catch (ex) { + return args.map(v => utils.escapeRegex(v)).join('..'); + } + + return value; +}; + +/** + * Create the message for a syntax error + */ + +const syntaxError = (type, char) => { + return `Missing ${type}: "${char}" - use "\\\\${char}" to match literal characters`; +}; + +/** + * Parse the given input string. + * @param {String} input + * @param {Object} options + * @return {Object} + */ + +const parse = (input, options) => { + if (typeof input !== 'string') { + throw new TypeError('Expected a string'); + } + + input = REPLACEMENTS[input] || input; + + const opts = { ...options }; + const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; + + let len = input.length; + if (len > max) { + throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`); + } + + const bos = { type: 'bos', value: '', output: opts.prepend || '' }; + const tokens = [bos]; + + const capture = opts.capture ? '' : '?:'; + const win32 = utils.isWindows(options); + + // create constants based on platform, for windows or posix + const PLATFORM_CHARS = constants.globChars(win32); + const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS); + + const { + DOT_LITERAL, + PLUS_LITERAL, + SLASH_LITERAL, + ONE_CHAR, + DOTS_SLASH, + NO_DOT, + NO_DOT_SLASH, + NO_DOTS_SLASH, + QMARK, + QMARK_NO_DOT, + STAR, + START_ANCHOR + } = PLATFORM_CHARS; + + const globstar = (opts) => { + return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`; + }; + + const nodot = opts.dot ? '' : NO_DOT; + const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT; + let star = opts.bash === true ? globstar(opts) : STAR; + + if (opts.capture) { + star = `(${star})`; + } + + // minimatch options support + if (typeof opts.noext === 'boolean') { + opts.noextglob = opts.noext; + } + + const state = { + input, + index: -1, + start: 0, + dot: opts.dot === true, + consumed: '', + output: '', + prefix: '', + backtrack: false, + negated: false, + brackets: 0, + braces: 0, + parens: 0, + quotes: 0, + globstar: false, + tokens + }; + + input = utils.removePrefix(input, state); + len = input.length; + + const extglobs = []; + const braces = []; + const stack = []; + let prev = bos; + let value; + + /** + * Tokenizing helpers + */ + + const eos = () => state.index === len - 1; + const peek = state.peek = (n = 1) => input[state.index + n]; + const advance = state.advance = () => input[++state.index]; + const remaining = () => input.slice(state.index + 1); + const consume = (value = '', num = 0) => { + state.consumed += value; + state.index += num; + }; + const append = token => { + state.output += token.output != null ? token.output : token.value; + consume(token.value); + }; + + const negate = () => { + let count = 1; + + while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) { + advance(); + state.start++; + count++; + } + + if (count % 2 === 0) { + return false; + } + + state.negated = true; + state.start++; + return true; + }; + + const increment = type => { + state[type]++; + stack.push(type); + }; + + const decrement = type => { + state[type]--; + stack.pop(); + }; + + /** + * Push tokens onto the tokens array. This helper speeds up + * tokenizing by 1) helping us avoid backtracking as much as possible, + * and 2) helping us avoid creating extra tokens when consecutive + * characters are plain text. This improves performance and simplifies + * lookbehinds. + */ + + const push = tok => { + if (prev.type === 'globstar') { + const isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace'); + const isExtglob = tok.extglob === true || (extglobs.length && (tok.type === 'pipe' || tok.type === 'paren')); + + if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) { + state.output = state.output.slice(0, -prev.output.length); + prev.type = 'star'; + prev.value = '*'; + prev.output = star; + state.output += prev.output; + } + } + + if (extglobs.length && tok.type !== 'paren' && !EXTGLOB_CHARS[tok.value]) { + extglobs[extglobs.length - 1].inner += tok.value; + } + + if (tok.value || tok.output) append(tok); + if (prev && prev.type === 'text' && tok.type === 'text') { + prev.value += tok.value; + prev.output = (prev.output || '') + tok.value; + return; + } + + tok.prev = prev; + tokens.push(tok); + prev = tok; + }; + + const extglobOpen = (type, value) => { + const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' }; + + token.prev = prev; + token.parens = state.parens; + token.output = state.output; + const output = (opts.capture ? '(' : '') + token.open; + + increment('parens'); + push({ type, value, output: state.output ? '' : ONE_CHAR }); + push({ type: 'paren', extglob: true, value: advance(), output }); + extglobs.push(token); + }; + + const extglobClose = token => { + let output = token.close + (opts.capture ? ')' : ''); + + if (token.type === 'negate') { + let extglobStar = star; + + if (token.inner && token.inner.length > 1 && token.inner.includes('/')) { + extglobStar = globstar(opts); + } + + if (extglobStar !== star || eos() || /^\)+$/.test(remaining())) { + output = token.close = `)$))${extglobStar}`; + } + + if (token.prev.type === 'bos' && eos()) { + state.negatedExtglob = true; + } + } + + push({ type: 'paren', extglob: true, value, output }); + decrement('parens'); + }; + + /** + * Fast paths + */ + + if (opts.fastpaths !== false && !/(^[*!]|[/()[\]{}"])/.test(input)) { + let backslashes = false; + + let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => { + if (first === '\\') { + backslashes = true; + return m; + } + + if (first === '?') { + if (esc) { + return esc + first + (rest ? QMARK.repeat(rest.length) : ''); + } + if (index === 0) { + return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : ''); + } + return QMARK.repeat(chars.length); + } + + if (first === '.') { + return DOT_LITERAL.repeat(chars.length); + } + + if (first === '*') { + if (esc) { + return esc + first + (rest ? star : ''); + } + return star; + } + return esc ? m : `\\${m}`; + }); + + if (backslashes === true) { + if (opts.unescape === true) { + output = output.replace(/\\/g, ''); + } else { + output = output.replace(/\\+/g, m => { + return m.length % 2 === 0 ? '\\\\' : (m ? '\\' : ''); + }); + } + } + + if (output === input && opts.contains === true) { + state.output = input; + return state; + } + + state.output = utils.wrapOutput(output, state, options); + return state; + } + + /** + * Tokenize input until we reach end-of-string + */ + + while (!eos()) { + value = advance(); + + if (value === '\u0000') { + continue; + } + + /** + * Escaped characters + */ + + if (value === '\\') { + const next = peek(); + + if (next === '/' && opts.bash !== true) { + continue; + } + + if (next === '.' || next === ';') { + continue; + } + + if (!next) { + value += '\\'; + push({ type: 'text', value }); + continue; + } + + // collapse slashes to reduce potential for exploits + const match = /^\\+/.exec(remaining()); + let slashes = 0; + + if (match && match[0].length > 2) { + slashes = match[0].length; + state.index += slashes; + if (slashes % 2 !== 0) { + value += '\\'; + } + } + + if (opts.unescape === true) { + value = advance() || ''; + } else { + value += advance() || ''; + } + + if (state.brackets === 0) { + push({ type: 'text', value }); + continue; + } + } + + /** + * If we're inside a regex character class, continue + * until we reach the closing bracket. + */ + + if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) { + if (opts.posix !== false && value === ':') { + const inner = prev.value.slice(1); + if (inner.includes('[')) { + prev.posix = true; + + if (inner.includes(':')) { + const idx = prev.value.lastIndexOf('['); + const pre = prev.value.slice(0, idx); + const rest = prev.value.slice(idx + 2); + const posix = POSIX_REGEX_SOURCE$1[rest]; + if (posix) { + prev.value = pre + posix; + state.backtrack = true; + advance(); + + if (!bos.output && tokens.indexOf(prev) === 1) { + bos.output = ONE_CHAR; + } + continue; + } + } + } + } + + if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) { + value = `\\${value}`; + } + + if (value === ']' && (prev.value === '[' || prev.value === '[^')) { + value = `\\${value}`; + } + + if (opts.posix === true && value === '!' && prev.value === '[') { + value = '^'; + } + + prev.value += value; + append({ value }); + continue; + } + + /** + * If we're inside a quoted string, continue + * until we reach the closing double quote. + */ + + if (state.quotes === 1 && value !== '"') { + value = utils.escapeRegex(value); + prev.value += value; + append({ value }); + continue; + } + + /** + * Double quotes + */ + + if (value === '"') { + state.quotes = state.quotes === 1 ? 0 : 1; + if (opts.keepQuotes === true) { + push({ type: 'text', value }); + } + continue; + } + + /** + * Parentheses + */ + + if (value === '(') { + increment('parens'); + push({ type: 'paren', value }); + continue; + } + + if (value === ')') { + if (state.parens === 0 && opts.strictBrackets === true) { + throw new SyntaxError(syntaxError('opening', '(')); + } + + const extglob = extglobs[extglobs.length - 1]; + if (extglob && state.parens === extglob.parens + 1) { + extglobClose(extglobs.pop()); + continue; + } + + push({ type: 'paren', value, output: state.parens ? ')' : '\\)' }); + decrement('parens'); + continue; + } + + /** + * Square brackets + */ + + if (value === '[') { + if (opts.nobracket === true || !remaining().includes(']')) { + if (opts.nobracket !== true && opts.strictBrackets === true) { + throw new SyntaxError(syntaxError('closing', ']')); + } + + value = `\\${value}`; + } else { + increment('brackets'); + } + + push({ type: 'bracket', value }); + continue; + } + + if (value === ']') { + if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) { + push({ type: 'text', value, output: `\\${value}` }); + continue; + } + + if (state.brackets === 0) { + if (opts.strictBrackets === true) { + throw new SyntaxError(syntaxError('opening', '[')); + } + + push({ type: 'text', value, output: `\\${value}` }); + continue; + } + + decrement('brackets'); + + const prevValue = prev.value.slice(1); + if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) { + value = `/${value}`; + } + + prev.value += value; + append({ value }); + + // when literal brackets are explicitly disabled + // assume we should match with a regex character class + if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) { + continue; + } + + const escaped = utils.escapeRegex(prev.value); + state.output = state.output.slice(0, -prev.value.length); + + // when literal brackets are explicitly enabled + // assume we should escape the brackets to match literal characters + if (opts.literalBrackets === true) { + state.output += escaped; + prev.value = escaped; + continue; + } + + // when the user specifies nothing, try to match both + prev.value = `(${capture}${escaped}|${prev.value})`; + state.output += prev.value; + continue; + } + + /** + * Braces + */ + + if (value === '{' && opts.nobrace !== true) { + increment('braces'); + + const open = { + type: 'brace', + value, + output: '(', + outputIndex: state.output.length, + tokensIndex: state.tokens.length + }; + + braces.push(open); + push(open); + continue; + } + + if (value === '}') { + const brace = braces[braces.length - 1]; + + if (opts.nobrace === true || !brace) { + push({ type: 'text', value, output: value }); + continue; + } + + let output = ')'; + + if (brace.dots === true) { + const arr = tokens.slice(); + const range = []; + + for (let i = arr.length - 1; i >= 0; i--) { + tokens.pop(); + if (arr[i].type === 'brace') { + break; + } + if (arr[i].type !== 'dots') { + range.unshift(arr[i].value); + } + } + + output = expandRange(range, opts); + state.backtrack = true; + } + + if (brace.comma !== true && brace.dots !== true) { + const out = state.output.slice(0, brace.outputIndex); + const toks = state.tokens.slice(brace.tokensIndex); + brace.value = brace.output = '\\{'; + value = output = '\\}'; + state.output = out; + for (const t of toks) { + state.output += (t.output || t.value); + } + } + + push({ type: 'brace', value, output }); + decrement('braces'); + braces.pop(); + continue; + } + + /** + * Pipes + */ + + if (value === '|') { + if (extglobs.length > 0) { + extglobs[extglobs.length - 1].conditions++; + } + push({ type: 'text', value }); + continue; + } + + /** + * Commas + */ + + if (value === ',') { + let output = value; + + const brace = braces[braces.length - 1]; + if (brace && stack[stack.length - 1] === 'braces') { + brace.comma = true; + output = '|'; + } + + push({ type: 'comma', value, output }); + continue; + } + + /** + * Slashes + */ + + if (value === '/') { + // if the beginning of the glob is "./", advance the start + // to the current index, and don't add the "./" characters + // to the state. This greatly simplifies lookbehinds when + // checking for BOS characters like "!" and "." (not "./") + if (prev.type === 'dot' && state.index === state.start + 1) { + state.start = state.index + 1; + state.consumed = ''; + state.output = ''; + tokens.pop(); + prev = bos; // reset "prev" to the first token + continue; + } + + push({ type: 'slash', value, output: SLASH_LITERAL }); + continue; + } + + /** + * Dots + */ + + if (value === '.') { + if (state.braces > 0 && prev.type === 'dot') { + if (prev.value === '.') prev.output = DOT_LITERAL; + const brace = braces[braces.length - 1]; + prev.type = 'dots'; + prev.output += value; + prev.value += value; + brace.dots = true; + continue; + } + + if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') { + push({ type: 'text', value, output: DOT_LITERAL }); + continue; + } + + push({ type: 'dot', value, output: DOT_LITERAL }); + continue; + } + + /** + * Question marks + */ + + if (value === '?') { + const isGroup = prev && prev.value === '('; + if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') { + extglobOpen('qmark', value); + continue; + } + + if (prev && prev.type === 'paren') { + const next = peek(); + let output = value; + + if (next === '<' && !utils.supportsLookbehinds()) { + throw new Error('Node.js v10 or higher is required for regex lookbehinds'); + } + + if ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\w+>)/.test(remaining()))) { + output = `\\${value}`; + } + + push({ type: 'text', value, output }); + continue; + } + + if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) { + push({ type: 'qmark', value, output: QMARK_NO_DOT }); + continue; + } + + push({ type: 'qmark', value, output: QMARK }); + continue; + } + + /** + * Exclamation + */ + + if (value === '!') { + if (opts.noextglob !== true && peek() === '(') { + if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) { + extglobOpen('negate', value); + continue; + } + } + + if (opts.nonegate !== true && state.index === 0) { + negate(); + continue; + } + } + + /** + * Plus + */ + + if (value === '+') { + if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') { + extglobOpen('plus', value); + continue; + } + + if ((prev && prev.value === '(') || opts.regex === false) { + push({ type: 'plus', value, output: PLUS_LITERAL }); + continue; + } + + if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) { + push({ type: 'plus', value }); + continue; + } + + push({ type: 'plus', value: PLUS_LITERAL }); + continue; + } + + /** + * Plain text + */ + + if (value === '@') { + if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') { + push({ type: 'at', extglob: true, value, output: '' }); + continue; + } + + push({ type: 'text', value }); + continue; + } + + /** + * Plain text + */ + + if (value !== '*') { + if (value === '$' || value === '^') { + value = `\\${value}`; + } + + const match = REGEX_NON_SPECIAL_CHARS.exec(remaining()); + if (match) { + value += match[0]; + state.index += match[0].length; + } + + push({ type: 'text', value }); + continue; + } + + /** + * Stars + */ + + if (prev && (prev.type === 'globstar' || prev.star === true)) { + prev.type = 'star'; + prev.star = true; + prev.value += value; + prev.output = star; + state.backtrack = true; + state.globstar = true; + consume(value); + continue; + } + + let rest = remaining(); + if (opts.noextglob !== true && /^\([^?]/.test(rest)) { + extglobOpen('star', value); + continue; + } + + if (prev.type === 'star') { + if (opts.noglobstar === true) { + consume(value); + continue; + } + + const prior = prev.prev; + const before = prior.prev; + const isStart = prior.type === 'slash' || prior.type === 'bos'; + const afterStar = before && (before.type === 'star' || before.type === 'globstar'); + + if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) { + push({ type: 'star', value, output: '' }); + continue; + } + + const isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace'); + const isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren'); + if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) { + push({ type: 'star', value, output: '' }); + continue; + } + + // strip consecutive `/**/` + while (rest.slice(0, 3) === '/**') { + const after = input[state.index + 4]; + if (after && after !== '/') { + break; + } + rest = rest.slice(3); + consume('/**', 3); + } + + if (prior.type === 'bos' && eos()) { + prev.type = 'globstar'; + prev.value += value; + prev.output = globstar(opts); + state.output = prev.output; + state.globstar = true; + consume(value); + continue; + } + + if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) { + state.output = state.output.slice(0, -(prior.output + prev.output).length); + prior.output = `(?:${prior.output}`; + + prev.type = 'globstar'; + prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)'); + prev.value += value; + state.globstar = true; + state.output += prior.output + prev.output; + consume(value); + continue; + } + + if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') { + const end = rest[1] !== void 0 ? '|$' : ''; + + state.output = state.output.slice(0, -(prior.output + prev.output).length); + prior.output = `(?:${prior.output}`; + + prev.type = 'globstar'; + prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`; + prev.value += value; + + state.output += prior.output + prev.output; + state.globstar = true; + + consume(value + advance()); + + push({ type: 'slash', value: '/', output: '' }); + continue; + } + + if (prior.type === 'bos' && rest[0] === '/') { + prev.type = 'globstar'; + prev.value += value; + prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`; + state.output = prev.output; + state.globstar = true; + consume(value + advance()); + push({ type: 'slash', value: '/', output: '' }); + continue; + } + + // remove single star from output + state.output = state.output.slice(0, -prev.output.length); + + // reset previous token to globstar + prev.type = 'globstar'; + prev.output = globstar(opts); + prev.value += value; + + // reset output with globstar + state.output += prev.output; + state.globstar = true; + consume(value); + continue; + } + + const token = { type: 'star', value, output: star }; + + if (opts.bash === true) { + token.output = '.*?'; + if (prev.type === 'bos' || prev.type === 'slash') { + token.output = nodot + token.output; + } + push(token); + continue; + } + + if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) { + token.output = value; + push(token); + continue; + } + + if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') { + if (prev.type === 'dot') { + state.output += NO_DOT_SLASH; + prev.output += NO_DOT_SLASH; + + } else if (opts.dot === true) { + state.output += NO_DOTS_SLASH; + prev.output += NO_DOTS_SLASH; + + } else { + state.output += nodot; + prev.output += nodot; + } + + if (peek() !== '*') { + state.output += ONE_CHAR; + prev.output += ONE_CHAR; + } + } + + push(token); + } + + while (state.brackets > 0) { + if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']')); + state.output = utils.escapeLast(state.output, '['); + decrement('brackets'); + } + + while (state.parens > 0) { + if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')')); + state.output = utils.escapeLast(state.output, '('); + decrement('parens'); + } + + while (state.braces > 0) { + if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}')); + state.output = utils.escapeLast(state.output, '{'); + decrement('braces'); + } + + if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) { + push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` }); + } + + // rebuild the output if we had to backtrack at any point + if (state.backtrack === true) { + state.output = ''; + + for (const token of state.tokens) { + state.output += token.output != null ? token.output : token.value; + + if (token.suffix) { + state.output += token.suffix; + } + } + } + + return state; +}; + +/** + * Fast paths for creating regular expressions for common glob patterns. + * This can significantly speed up processing and has very little downside + * impact when none of the fast paths match. + */ + +parse.fastpaths = (input, options) => { + const opts = { ...options }; + const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH; + const len = input.length; + if (len > max) { + throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`); + } + + input = REPLACEMENTS[input] || input; + const win32 = utils.isWindows(options); + + // create constants based on platform, for windows or posix + const { + DOT_LITERAL, + SLASH_LITERAL, + ONE_CHAR, + DOTS_SLASH, + NO_DOT, + NO_DOTS, + NO_DOTS_SLASH, + STAR, + START_ANCHOR + } = constants.globChars(win32); + + const nodot = opts.dot ? NO_DOTS : NO_DOT; + const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT; + const capture = opts.capture ? '' : '?:'; + const state = { negated: false, prefix: '' }; + let star = opts.bash === true ? '.*?' : STAR; + + if (opts.capture) { + star = `(${star})`; + } + + const globstar = (opts) => { + if (opts.noglobstar === true) return star; + return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`; + }; + + const create = str => { + switch (str) { + case '*': + return `${nodot}${ONE_CHAR}${star}`; + + case '.*': + return `${DOT_LITERAL}${ONE_CHAR}${star}`; + + case '*.*': + return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`; + + case '*/*': + return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`; + + case '**': + return nodot + globstar(opts); + + case '**/*': + return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`; + + case '**/*.*': + return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`; + + case '**/.*': + return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`; + + default: { + const match = /^(.*?)\.(\w+)$/.exec(str); + if (!match) return; + + const source = create(match[1]); + if (!source) return; + + return source + DOT_LITERAL + match[2]; + } + } + }; + + const output = utils.removePrefix(input, state); + let source = create(output); + + if (source && opts.strictSlashes !== true) { + source += `${SLASH_LITERAL}?`; + } + + return source; +}; + +var parse_1 = parse; + +const isObject = val => val && typeof val === 'object' && !Array.isArray(val); + +/** + * Creates a matcher function from one or more glob patterns. The + * returned function takes a string to match as its first argument, + * and returns true if the string is a match. The returned matcher + * function also takes a boolean as the second argument that, when true, + * returns an object with additional information. + * + * ```js + * const picomatch = require('picomatch'); + * // picomatch(glob[, options]); + * + * const isMatch = picomatch('*.!(*a)'); + * console.log(isMatch('a.a')); //=> false + * console.log(isMatch('a.b')); //=> true + * ``` + * @name picomatch + * @param {String|Array} `globs` One or more glob patterns. + * @param {Object=} `options` + * @return {Function=} Returns a matcher function. + * @api public + */ + +const picomatch = (glob, options, returnState = false) => { + if (Array.isArray(glob)) { + const fns = glob.map(input => picomatch(input, options, returnState)); + const arrayMatcher = str => { + for (const isMatch of fns) { + const state = isMatch(str); + if (state) return state; + } + return false; + }; + return arrayMatcher; + } + + const isState = isObject(glob) && glob.tokens && glob.input; + + if (glob === '' || (typeof glob !== 'string' && !isState)) { + throw new TypeError('Expected pattern to be a non-empty string'); + } + + const opts = options || {}; + const posix = utils.isWindows(options); + const regex = isState + ? picomatch.compileRe(glob, options) + : picomatch.makeRe(glob, options, false, true); + + const state = regex.state; + delete regex.state; + + let isIgnored = () => false; + if (opts.ignore) { + const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null }; + isIgnored = picomatch(opts.ignore, ignoreOpts, returnState); + } + + const matcher = (input, returnObject = false) => { + const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix }); + const result = { glob, state, regex, posix, input, output, match, isMatch }; + + if (typeof opts.onResult === 'function') { + opts.onResult(result); + } + + if (isMatch === false) { + result.isMatch = false; + return returnObject ? result : false; + } + + if (isIgnored(input)) { + if (typeof opts.onIgnore === 'function') { + opts.onIgnore(result); + } + result.isMatch = false; + return returnObject ? result : false; + } + + if (typeof opts.onMatch === 'function') { + opts.onMatch(result); + } + return returnObject ? result : true; + }; + + if (returnState) { + matcher.state = state; + } + + return matcher; +}; + +/** + * Test `input` with the given `regex`. This is used by the main + * `picomatch()` function to test the input string. + * + * ```js + * const picomatch = require('picomatch'); + * // picomatch.test(input, regex[, options]); + * + * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\/([^/]*?))$/)); + * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' } + * ``` + * @param {String} `input` String to test. + * @param {RegExp} `regex` + * @return {Object} Returns an object with matching info. + * @api public + */ + +picomatch.test = (input, regex, options, { glob, posix } = {}) => { + if (typeof input !== 'string') { + throw new TypeError('Expected input to be a string'); + } + + if (input === '') { + return { isMatch: false, output: '' }; + } + + const opts = options || {}; + const format = opts.format || (posix ? utils.toPosixSlashes : null); + let match = input === glob; + let output = (match && format) ? format(input) : input; + + if (match === false) { + output = format ? format(input) : input; + match = output === glob; + } + + if (match === false || opts.capture === true) { + if (opts.matchBase === true || opts.basename === true) { + match = picomatch.matchBase(input, regex, options, posix); + } else { + match = regex.exec(output); + } + } + + return { isMatch: Boolean(match), match, output }; +}; + +/** + * Match the basename of a filepath. + * + * ```js + * const picomatch = require('picomatch'); + * // picomatch.matchBase(input, glob[, options]); + * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true + * ``` + * @param {String} `input` String to test. + * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe). + * @return {Boolean} + * @api public + */ + +picomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => { + const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options); + return regex.test(sysPath__default['default'].basename(input)); +}; + +/** + * Returns true if **any** of the given glob `patterns` match the specified `string`. + * + * ```js + * const picomatch = require('picomatch'); + * // picomatch.isMatch(string, patterns[, options]); + * + * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true + * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false + * ``` + * @param {String|Array} str The string to test. + * @param {String|Array} patterns One or more glob patterns to use for matching. + * @param {Object} [options] See available [options](#options). + * @return {Boolean} Returns true if any patterns match `str` + * @api public + */ + +picomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str); + +/** + * Parse a glob pattern to create the source string for a regular + * expression. + * + * ```js + * const picomatch = require('picomatch'); + * const result = picomatch.parse(pattern[, options]); + * ``` + * @param {String} `pattern` + * @param {Object} `options` + * @return {Object} Returns an object with useful properties and output to be used as a regex source string. + * @api public + */ + +picomatch.parse = (pattern, options) => { + if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options)); + return parse_1(pattern, { ...options, fastpaths: false }); +}; + +/** + * Scan a glob pattern to separate the pattern into segments. + * + * ```js + * const picomatch = require('picomatch'); + * // picomatch.scan(input[, options]); + * + * const result = picomatch.scan('!./foo/*.js'); + * console.log(result); + * { prefix: '!./', + * input: '!./foo/*.js', + * start: 3, + * base: 'foo', + * glob: '*.js', + * isBrace: false, + * isBracket: false, + * isGlob: true, + * isExtglob: false, + * isGlobstar: false, + * negated: true } + * ``` + * @param {String} `input` Glob pattern to scan. + * @param {Object} `options` + * @return {Object} Returns an object with + * @api public + */ + +picomatch.scan = (input, options) => scan_1(input, options); + +/** + * Create a regular expression from a parsed glob pattern. + * + * ```js + * const picomatch = require('picomatch'); + * const state = picomatch.parse('*.js'); + * // picomatch.compileRe(state[, options]); + * + * console.log(picomatch.compileRe(state)); + * //=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/ + * ``` + * @param {String} `state` The object returned from the `.parse` method. + * @param {Object} `options` + * @return {RegExp} Returns a regex created from the given pattern. + * @api public + */ + +picomatch.compileRe = (parsed, options, returnOutput = false, returnState = false) => { + if (returnOutput === true) { + return parsed.output; + } + + const opts = options || {}; + const prepend = opts.contains ? '' : '^'; + const append = opts.contains ? '' : '$'; + + let source = `${prepend}(?:${parsed.output})${append}`; + if (parsed && parsed.negated === true) { + source = `^(?!${source}).*$`; + } + + const regex = picomatch.toRegex(source, options); + if (returnState === true) { + regex.state = parsed; + } + + return regex; +}; + +picomatch.makeRe = (input, options, returnOutput = false, returnState = false) => { + if (!input || typeof input !== 'string') { + throw new TypeError('Expected a non-empty string'); + } + + const opts = options || {}; + let parsed = { negated: false, fastpaths: true }; + let prefix = ''; + let output; + + if (input.startsWith('./')) { + input = input.slice(2); + prefix = parsed.prefix = './'; + } + + if (opts.fastpaths !== false && (input[0] === '.' || input[0] === '*')) { + output = parse_1.fastpaths(input, options); + } + + if (output === undefined) { + parsed = parse_1(input, options); + parsed.prefix = prefix + (parsed.prefix || ''); + } else { + parsed.output = output; + } + + return picomatch.compileRe(parsed, options, returnOutput, returnState); +}; + +/** + * Create a regular expression from the given regex source string. + * + * ```js + * const picomatch = require('picomatch'); + * // picomatch.toRegex(source[, options]); + * + * const { output } = picomatch.parse('*.js'); + * console.log(picomatch.toRegex(output)); + * //=> /^(?:(?!\.)(?=.)[^/]*?\.js)$/ + * ``` + * @param {String} `source` Regular expression source string. + * @param {Object} `options` + * @return {RegExp} + * @api public + */ + +picomatch.toRegex = (source, options) => { + try { + const opts = options || {}; + return new RegExp(source, opts.flags || (opts.nocase ? 'i' : '')); + } catch (err) { + if (options && options.debug === true) throw err; + return /$^/; + } +}; + +/** + * Picomatch constants. + * @return {Object} + */ + +picomatch.constants = constants; + +/** + * Expose "picomatch" + */ + +var picomatch_1 = picomatch; + +var picomatch$1 = picomatch_1; + +const { Readable } = require$$0__default$1['default']; + +const { promisify } = require$$0__default['default']; + + +const readdir = promisify(fs__default['default'].readdir); +const stat = promisify(fs__default['default'].stat); +const lstat = promisify(fs__default['default'].lstat); +const realpath = promisify(fs__default['default'].realpath); + +/** + * @typedef {Object} EntryInfo + * @property {String} path + * @property {String} fullPath + * @property {fs.Stats=} stats + * @property {fs.Dirent=} dirent + * @property {String} basename + */ + +const BANG = '!'; +const NORMAL_FLOW_ERRORS = new Set(['ENOENT', 'EPERM', 'EACCES', 'ELOOP']); +const FILE_TYPE = 'files'; +const DIR_TYPE = 'directories'; +const FILE_DIR_TYPE = 'files_directories'; +const EVERYTHING_TYPE = 'all'; +const ALL_TYPES = [FILE_TYPE, DIR_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE]; + +const isNormalFlowError = error => NORMAL_FLOW_ERRORS.has(error.code); + +const normalizeFilter = filter => { + if (filter === undefined) return; + if (typeof filter === 'function') return filter; + + if (typeof filter === 'string') { + const glob = picomatch$1(filter.trim()); + return entry => glob(entry.basename); + } + + if (Array.isArray(filter)) { + const positive = []; + const negative = []; + for (const item of filter) { + const trimmed = item.trim(); + if (trimmed.charAt(0) === BANG) { + negative.push(picomatch$1(trimmed.slice(1))); + } else { + positive.push(picomatch$1(trimmed)); + } + } + + if (negative.length > 0) { + if (positive.length > 0) { + return entry => + positive.some(f => f(entry.basename)) && !negative.some(f => f(entry.basename)); + } + return entry => !negative.some(f => f(entry.basename)); + } + return entry => positive.some(f => f(entry.basename)); + } +}; + +class ReaddirpStream extends Readable { + static get defaultOptions() { + return { + root: '.', + /* eslint-disable no-unused-vars */ + fileFilter: (path) => true, + directoryFilter: (path) => true, + /* eslint-enable no-unused-vars */ + type: FILE_TYPE, + lstat: false, + depth: 2147483648, + alwaysStat: false + }; + } + + constructor(options = {}) { + super({ + objectMode: true, + autoDestroy: true, + highWaterMark: options.highWaterMark || 4096 + }); + const opts = { ...ReaddirpStream.defaultOptions, ...options }; + const { root, type } = opts; + + this._fileFilter = normalizeFilter(opts.fileFilter); + this._directoryFilter = normalizeFilter(opts.directoryFilter); + + const statMethod = opts.lstat ? lstat : stat; + // Use bigint stats if it's windows and stat() supports options (node 10+). + if (process.platform === 'win32' && stat.length === 3) { + this._stat = path => statMethod(path, { bigint: true }); + } else { + this._stat = statMethod; + } + + this._maxDepth = opts.depth; + this._wantsDir = [DIR_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE].includes(type); + this._wantsFile = [FILE_TYPE, FILE_DIR_TYPE, EVERYTHING_TYPE].includes(type); + this._wantsEverything = type === EVERYTHING_TYPE; + this._root = sysPath__default['default'].resolve(root); + this._isDirent = ('Dirent' in fs__default['default']) && !opts.alwaysStat; + this._statsProp = this._isDirent ? 'dirent' : 'stats'; + this._rdOptions = { encoding: 'utf8', withFileTypes: this._isDirent }; + + // Launch stream with one parent, the root dir. + this.parents = [this._exploreDir(root, 1)]; + this.reading = false; + this.parent = undefined; + } + + async _read(batch) { + if (this.reading) return; + this.reading = true; + + try { + while (!this.destroyed && batch > 0) { + const { path, depth, files = [] } = this.parent || {}; + + if (files.length > 0) { + const slice = files.splice(0, batch).map(dirent => this._formatEntry(dirent, path)); + for (const entry of await Promise.all(slice)) { + if (this.destroyed) return; + + const entryType = await this._getEntryType(entry); + if (entryType === 'directory' && this._directoryFilter(entry)) { + if (depth <= this._maxDepth) { + this.parents.push(this._exploreDir(entry.fullPath, depth + 1)); + } + + if (this._wantsDir) { + this.push(entry); + batch--; + } + } else if ((entryType === 'file' || this._includeAsFile(entry)) && this._fileFilter(entry)) { + if (this._wantsFile) { + this.push(entry); + batch--; + } + } + } + } else { + const parent = this.parents.pop(); + if (!parent) { + this.push(null); + break; + } + this.parent = await parent; + if (this.destroyed) return; + } + } + } catch (error) { + this.destroy(error); + } finally { + this.reading = false; + } + } + + async _exploreDir(path, depth) { + let files; + try { + files = await readdir(path, this._rdOptions); + } catch (error) { + this._onError(error); + } + return {files, depth, path}; + } + + async _formatEntry(dirent, path) { + let entry; + try { + const basename = this._isDirent ? dirent.name : dirent; + const fullPath = sysPath__default['default'].resolve(sysPath__default['default'].join(path, basename)); + entry = {path: sysPath__default['default'].relative(this._root, fullPath), fullPath, basename}; + entry[this._statsProp] = this._isDirent ? dirent : await this._stat(fullPath); + } catch (err) { + this._onError(err); + } + return entry; + } + + _onError(err) { + if (isNormalFlowError(err) && !this.destroyed) { + this.emit('warn', err); + } else { + this.destroy(err); + } + } + + async _getEntryType(entry) { + // entry may be undefined, because a warning or an error were emitted + // and the statsProp is undefined + const stats = entry && entry[this._statsProp]; + if (!stats) { + return; + } + if (stats.isFile()) { + return 'file'; + } + if (stats.isDirectory()) { + return 'directory'; + } + if (stats && stats.isSymbolicLink()) { + const full = entry.fullPath; + try { + const entryRealPath = await realpath(full); + const entryRealPathStats = await lstat(entryRealPath); + if (entryRealPathStats.isFile()) { + return 'file'; + } + if (entryRealPathStats.isDirectory()) { + const len = entryRealPath.length; + if (full.startsWith(entryRealPath) && full.substr(len, 1) === sysPath__default['default'].sep) { + return this._onError(new Error( + `Circular symlink detected: "${full}" points to "${entryRealPath}"` + )); + } + return 'directory'; + } + } catch (error) { + this._onError(error); + } + } + } + + _includeAsFile(entry) { + const stats = entry && entry[this._statsProp]; + + return stats && this._wantsEverything && !stats.isDirectory(); + } +} + +/** + * @typedef {Object} ReaddirpArguments + * @property {Function=} fileFilter + * @property {Function=} directoryFilter + * @property {String=} type + * @property {Number=} depth + * @property {String=} root + * @property {Boolean=} lstat + * @property {Boolean=} bigint + */ + +/** + * Main function which ends up calling readdirRec and reads all files and directories in given root recursively. + * @param {String} root Root directory + * @param {ReaddirpArguments=} options Options to specify root (start directory), filters and recursion depth + */ +const readdirp = (root, options = {}) => { + let type = options.entryType || options.type; + if (type === 'both') type = FILE_DIR_TYPE; // backwards-compatibility + if (type) options.type = type; + if (!root) { + throw new Error('readdirp: root argument is required. Usage: readdirp(root, options)'); + } else if (typeof root !== 'string') { + throw new TypeError('readdirp: root argument must be a string. Usage: readdirp(root, options)'); + } else if (type && !ALL_TYPES.includes(type)) { + throw new Error(`readdirp: Invalid type passed. Use one of ${ALL_TYPES.join(', ')}`); + } + + options.root = root; + return new ReaddirpStream(options); +}; + +const readdirpPromise = (root, options = {}) => { + return new Promise((resolve, reject) => { + const files = []; + readdirp(root, options) + .on('data', entry => files.push(entry)) + .on('end', () => resolve(files)) + .on('error', error => reject(error)); + }); +}; + +readdirp.promise = readdirpPromise; +readdirp.ReaddirpStream = ReaddirpStream; +readdirp.default = readdirp; + +var readdirp_1 = readdirp; + +/*! + * normalize-path + * + * Copyright (c) 2014-2018, Jon Schlinkert. + * Released under the MIT License. + */ + +var normalizePath = function(path, stripTrailing) { + if (typeof path !== 'string') { + throw new TypeError('expected path to be a string'); + } + + if (path === '\\' || path === '/') return '/'; + + var len = path.length; + if (len <= 1) return path; + + // ensure that win32 namespaces has two leading slashes, so that the path is + // handled properly by the win32 version of path.parse() after being normalized + // https://msdn.microsoft.com/library/windows/desktop/aa365247(v=vs.85).aspx#namespaces + var prefix = ''; + if (len > 4 && path[3] === '\\') { + var ch = path[2]; + if ((ch === '?' || ch === '.') && path.slice(0, 2) === '\\\\') { + path = path.slice(2); + prefix = '//'; + } + } + + var segs = path.split(/[/\\]+/); + if (stripTrailing !== false && segs[segs.length - 1] === '') { + segs.pop(); + } + return prefix + segs.join('/'); +}; + +var anymatch_1 = createCommonjsModule(function (module, exports) { + +Object.defineProperty(exports, "__esModule", { value: true }); + + + + +/** + * @typedef {(testString: string) => boolean} AnymatchFn + * @typedef {string|RegExp|AnymatchFn} AnymatchPattern + * @typedef {AnymatchPattern|AnymatchPattern[]} AnymatchMatcher + */ +const BANG = '!'; +const DEFAULT_OPTIONS = {returnIndex: false}; +const arrify = (item) => Array.isArray(item) ? item : [item]; + +/** + * @param {AnymatchPattern} matcher + * @param {object} options + * @returns {AnymatchFn} + */ +const createPattern = (matcher, options) => { + if (typeof matcher === 'function') { + return matcher; + } + if (typeof matcher === 'string') { + const glob = picomatch$1(matcher, options); + return (string) => matcher === string || glob(string); + } + if (matcher instanceof RegExp) { + return (string) => matcher.test(string); + } + return (string) => false; +}; + +/** + * @param {Array} patterns + * @param {Array} negPatterns + * @param {String|Array} args + * @param {Boolean} returnIndex + * @returns {boolean|number} + */ +const matchPatterns = (patterns, negPatterns, args, returnIndex) => { + const isList = Array.isArray(args); + const _path = isList ? args[0] : args; + if (!isList && typeof _path !== 'string') { + throw new TypeError('anymatch: second argument must be a string: got ' + + Object.prototype.toString.call(_path)) + } + const path = normalizePath(_path); + + for (let index = 0; index < negPatterns.length; index++) { + const nglob = negPatterns[index]; + if (nglob(path)) { + return returnIndex ? -1 : false; + } + } + + const applied = isList && [path].concat(args.slice(1)); + for (let index = 0; index < patterns.length; index++) { + const pattern = patterns[index]; + if (isList ? pattern(...applied) : pattern(path)) { + return returnIndex ? index : true; + } + } + + return returnIndex ? -1 : false; +}; + +/** + * @param {AnymatchMatcher} matchers + * @param {Array|string} testString + * @param {object} options + * @returns {boolean|number|Function} + */ +const anymatch = (matchers, testString, options = DEFAULT_OPTIONS) => { + if (matchers == null) { + throw new TypeError('anymatch: specify first argument'); + } + const opts = typeof options === 'boolean' ? {returnIndex: options} : options; + const returnIndex = opts.returnIndex || false; + + // Early cache for matchers. + const mtchers = arrify(matchers); + const negatedGlobs = mtchers + .filter(item => typeof item === 'string' && item.charAt(0) === BANG) + .map(item => item.slice(1)) + .map(item => picomatch$1(item, opts)); + const patterns = mtchers.map(matcher => createPattern(matcher, opts)); + + if (testString == null) { + return (testString, ri = false) => { + const returnIndex = typeof ri === 'boolean' ? ri : false; + return matchPatterns(patterns, negatedGlobs, testString, returnIndex); + } + } + + return matchPatterns(patterns, negatedGlobs, testString, returnIndex); +}; + +anymatch.default = anymatch; +module.exports = anymatch; +}); + +/*! + * is-extglob + * + * Copyright (c) 2014-2016, Jon Schlinkert. + * Licensed under the MIT License. + */ + +var isExtglob = function isExtglob(str) { + if (typeof str !== 'string' || str === '') { + return false; + } + + var match; + while ((match = /(\\).|([@?!+*]\(.*\))/g.exec(str))) { + if (match[2]) return true; + str = str.slice(match.index + match[0].length); + } + + return false; +}; + +/*! + * is-glob + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + */ + + +var chars = { '{': '}', '(': ')', '[': ']'}; +var strictRegex = /\\(.)|(^!|\*|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/; +var relaxedRegex = /\\(.)|(^!|[*?{}()[\]]|\(\?)/; + +var isGlob = function isGlob(str, options) { + if (typeof str !== 'string' || str === '') { + return false; + } + + if (isExtglob(str)) { + return true; + } + + var regex = strictRegex; + var match; + + // optionally relax regex + if (options && options.strict === false) { + regex = relaxedRegex; + } + + while ((match = regex.exec(str))) { + if (match[2]) return true; + var idx = match.index + match[0].length; + + // if an open bracket/brace/paren is escaped, + // set the index to the next closing character + var open = match[1]; + var close = open ? chars[open] : null; + if (open && close) { + var n = str.indexOf(close, idx); + if (n !== -1) { + idx = n + 1; + } + } + + str = str.slice(idx); + } + return false; +}; + +var pathPosixDirname = sysPath__default['default'].posix.dirname; +var isWin32 = require$$1__default['default'].platform() === 'win32'; + +var slash = '/'; +var backslash = /\\/g; +var enclosure = /[\{\[].*[\/]*.*[\}\]]$/; +var globby = /(^|[^\\])([\{\[]|\([^\)]+$)/; +var escaped = /\\([\!\*\?\|\[\]\(\)\{\}])/g; + +/** + * @param {string} str + * @param {Object} opts + * @param {boolean} [opts.flipBackslashes=true] + */ +var globParent = function globParent(str, opts) { + var options = Object.assign({ flipBackslashes: true }, opts); + + // flip windows path separators + if (options.flipBackslashes && isWin32 && str.indexOf(slash) < 0) { + str = str.replace(backslash, slash); + } + + // special case for strings ending in enclosure containing path separator + if (enclosure.test(str)) { + str += slash; + } + + // preserves full path in case of trailing path separator + str += 'a'; + + // remove path parts that are globby + do { + str = pathPosixDirname(str); + } while (isGlob(str) || globby.test(str)); + + // remove escape chars and return result + return str.replace(escaped, '$1'); +}; + +var utils$1 = createCommonjsModule(function (module, exports) { + +exports.isInteger = num => { + if (typeof num === 'number') { + return Number.isInteger(num); + } + if (typeof num === 'string' && num.trim() !== '') { + return Number.isInteger(Number(num)); + } + return false; +}; + +/** + * Find a node of the given type + */ + +exports.find = (node, type) => node.nodes.find(node => node.type === type); + +/** + * Find a node of the given type + */ + +exports.exceedsLimit = (min, max, step = 1, limit) => { + if (limit === false) return false; + if (!exports.isInteger(min) || !exports.isInteger(max)) return false; + return ((Number(max) - Number(min)) / Number(step)) >= limit; +}; + +/** + * Escape the given node with '\\' before node.value + */ + +exports.escapeNode = (block, n = 0, type) => { + let node = block.nodes[n]; + if (!node) return; + + if ((type && node.type === type) || node.type === 'open' || node.type === 'close') { + if (node.escaped !== true) { + node.value = '\\' + node.value; + node.escaped = true; + } + } +}; + +/** + * Returns true if the given brace node should be enclosed in literal braces + */ + +exports.encloseBrace = node => { + if (node.type !== 'brace') return false; + if ((node.commas >> 0 + node.ranges >> 0) === 0) { + node.invalid = true; + return true; + } + return false; +}; + +/** + * Returns true if a brace node is invalid. + */ + +exports.isInvalidBrace = block => { + if (block.type !== 'brace') return false; + if (block.invalid === true || block.dollar) return true; + if ((block.commas >> 0 + block.ranges >> 0) === 0) { + block.invalid = true; + return true; + } + if (block.open !== true || block.close !== true) { + block.invalid = true; + return true; + } + return false; +}; + +/** + * Returns true if a node is an open or close node + */ + +exports.isOpenOrClose = node => { + if (node.type === 'open' || node.type === 'close') { + return true; + } + return node.open === true || node.close === true; +}; + +/** + * Reduce an array of text nodes. + */ + +exports.reduce = nodes => nodes.reduce((acc, node) => { + if (node.type === 'text') acc.push(node.value); + if (node.type === 'range') node.type = 'text'; + return acc; +}, []); + +/** + * Flatten an array + */ + +exports.flatten = (...args) => { + const result = []; + const flat = arr => { + for (let i = 0; i < arr.length; i++) { + let ele = arr[i]; + Array.isArray(ele) ? flat(ele) : ele !== void 0 && result.push(ele); + } + return result; + }; + flat(args); + return result; +}; +}); + +var stringify = (ast, options = {}) => { + let stringify = (node, parent = {}) => { + let invalidBlock = options.escapeInvalid && utils$1.isInvalidBrace(parent); + let invalidNode = node.invalid === true && options.escapeInvalid === true; + let output = ''; + + if (node.value) { + if ((invalidBlock || invalidNode) && utils$1.isOpenOrClose(node)) { + return '\\' + node.value; + } + return node.value; + } + + if (node.value) { + return node.value; + } + + if (node.nodes) { + for (let child of node.nodes) { + output += stringify(child); + } + } + return output; + }; + + return stringify(ast); +}; + +/*! + * is-number + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Released under the MIT License. + */ + +var isNumber = function(num) { + if (typeof num === 'number') { + return num - num === 0; + } + if (typeof num === 'string' && num.trim() !== '') { + return Number.isFinite ? Number.isFinite(+num) : isFinite(+num); + } + return false; +}; + +const toRegexRange = (min, max, options) => { + if (isNumber(min) === false) { + throw new TypeError('toRegexRange: expected the first argument to be a number'); + } + + if (max === void 0 || min === max) { + return String(min); + } + + if (isNumber(max) === false) { + throw new TypeError('toRegexRange: expected the second argument to be a number.'); + } + + let opts = { relaxZeros: true, ...options }; + if (typeof opts.strictZeros === 'boolean') { + opts.relaxZeros = opts.strictZeros === false; + } + + let relax = String(opts.relaxZeros); + let shorthand = String(opts.shorthand); + let capture = String(opts.capture); + let wrap = String(opts.wrap); + let cacheKey = min + ':' + max + '=' + relax + shorthand + capture + wrap; + + if (toRegexRange.cache.hasOwnProperty(cacheKey)) { + return toRegexRange.cache[cacheKey].result; + } + + let a = Math.min(min, max); + let b = Math.max(min, max); + + if (Math.abs(a - b) === 1) { + let result = min + '|' + max; + if (opts.capture) { + return `(${result})`; + } + if (opts.wrap === false) { + return result; + } + return `(?:${result})`; + } + + let isPadded = hasPadding(min) || hasPadding(max); + let state = { min, max, a, b }; + let positives = []; + let negatives = []; + + if (isPadded) { + state.isPadded = isPadded; + state.maxLen = String(state.max).length; + } + + if (a < 0) { + let newMin = b < 0 ? Math.abs(b) : 1; + negatives = splitToPatterns(newMin, Math.abs(a), state, opts); + a = state.a = 0; + } + + if (b >= 0) { + positives = splitToPatterns(a, b, state, opts); + } + + state.negatives = negatives; + state.positives = positives; + state.result = collatePatterns(negatives, positives); + + if (opts.capture === true) { + state.result = `(${state.result})`; + } else if (opts.wrap !== false && (positives.length + negatives.length) > 1) { + state.result = `(?:${state.result})`; + } + + toRegexRange.cache[cacheKey] = state; + return state.result; +}; + +function collatePatterns(neg, pos, options) { + let onlyNegative = filterPatterns(neg, pos, '-', false) || []; + let onlyPositive = filterPatterns(pos, neg, '', false) || []; + let intersected = filterPatterns(neg, pos, '-?', true) || []; + let subpatterns = onlyNegative.concat(intersected).concat(onlyPositive); + return subpatterns.join('|'); +} + +function splitToRanges(min, max) { + let nines = 1; + let zeros = 1; + + let stop = countNines(min, nines); + let stops = new Set([max]); + + while (min <= stop && stop <= max) { + stops.add(stop); + nines += 1; + stop = countNines(min, nines); + } + + stop = countZeros(max + 1, zeros) - 1; + + while (min < stop && stop <= max) { + stops.add(stop); + zeros += 1; + stop = countZeros(max + 1, zeros) - 1; + } + + stops = [...stops]; + stops.sort(compare); + return stops; +} + +/** + * Convert a range to a regex pattern + * @param {Number} `start` + * @param {Number} `stop` + * @return {String} + */ + +function rangeToPattern(start, stop, options) { + if (start === stop) { + return { pattern: start, count: [], digits: 0 }; + } + + let zipped = zip(start, stop); + let digits = zipped.length; + let pattern = ''; + let count = 0; + + for (let i = 0; i < digits; i++) { + let [startDigit, stopDigit] = zipped[i]; + + if (startDigit === stopDigit) { + pattern += startDigit; + + } else if (startDigit !== '0' || stopDigit !== '9') { + pattern += toCharacterClass(startDigit, stopDigit); + + } else { + count++; + } + } + + if (count) { + pattern += options.shorthand === true ? '\\d' : '[0-9]'; + } + + return { pattern, count: [count], digits }; +} + +function splitToPatterns(min, max, tok, options) { + let ranges = splitToRanges(min, max); + let tokens = []; + let start = min; + let prev; + + for (let i = 0; i < ranges.length; i++) { + let max = ranges[i]; + let obj = rangeToPattern(String(start), String(max), options); + let zeros = ''; + + if (!tok.isPadded && prev && prev.pattern === obj.pattern) { + if (prev.count.length > 1) { + prev.count.pop(); + } + + prev.count.push(obj.count[0]); + prev.string = prev.pattern + toQuantifier(prev.count); + start = max + 1; + continue; + } + + if (tok.isPadded) { + zeros = padZeros(max, tok, options); + } + + obj.string = zeros + obj.pattern + toQuantifier(obj.count); + tokens.push(obj); + start = max + 1; + prev = obj; + } + + return tokens; +} + +function filterPatterns(arr, comparison, prefix, intersection, options) { + let result = []; + + for (let ele of arr) { + let { string } = ele; + + // only push if _both_ are negative... + if (!intersection && !contains(comparison, 'string', string)) { + result.push(prefix + string); + } + + // or _both_ are positive + if (intersection && contains(comparison, 'string', string)) { + result.push(prefix + string); + } + } + return result; +} + +/** + * Zip strings + */ + +function zip(a, b) { + let arr = []; + for (let i = 0; i < a.length; i++) arr.push([a[i], b[i]]); + return arr; +} + +function compare(a, b) { + return a > b ? 1 : b > a ? -1 : 0; +} + +function contains(arr, key, val) { + return arr.some(ele => ele[key] === val); +} + +function countNines(min, len) { + return Number(String(min).slice(0, -len) + '9'.repeat(len)); +} + +function countZeros(integer, zeros) { + return integer - (integer % Math.pow(10, zeros)); +} + +function toQuantifier(digits) { + let [start = 0, stop = ''] = digits; + if (stop || start > 1) { + return `{${start + (stop ? ',' + stop : '')}}`; + } + return ''; +} + +function toCharacterClass(a, b, options) { + return `[${a}${(b - a === 1) ? '' : '-'}${b}]`; +} + +function hasPadding(str) { + return /^-?(0+)\d/.test(str); +} + +function padZeros(value, tok, options) { + if (!tok.isPadded) { + return value; + } + + let diff = Math.abs(tok.maxLen - String(value).length); + let relax = options.relaxZeros !== false; + + switch (diff) { + case 0: + return ''; + case 1: + return relax ? '0?' : '0'; + case 2: + return relax ? '0{0,2}' : '00'; + default: { + return relax ? `0{0,${diff}}` : `0{${diff}}`; + } + } +} + +/** + * Cache + */ + +toRegexRange.cache = {}; +toRegexRange.clearCache = () => (toRegexRange.cache = {}); + +/** + * Expose `toRegexRange` + */ + +var toRegexRange_1 = toRegexRange; + +const isObject$1 = val => val !== null && typeof val === 'object' && !Array.isArray(val); + +const transform = toNumber => { + return value => toNumber === true ? Number(value) : String(value); +}; + +const isValidValue = value => { + return typeof value === 'number' || (typeof value === 'string' && value !== ''); +}; + +const isNumber$1 = num => Number.isInteger(+num); + +const zeros = input => { + let value = `${input}`; + let index = -1; + if (value[0] === '-') value = value.slice(1); + if (value === '0') return false; + while (value[++index] === '0'); + return index > 0; +}; + +const stringify$1 = (start, end, options) => { + if (typeof start === 'string' || typeof end === 'string') { + return true; + } + return options.stringify === true; +}; + +const pad = (input, maxLength, toNumber) => { + if (maxLength > 0) { + let dash = input[0] === '-' ? '-' : ''; + if (dash) input = input.slice(1); + input = (dash + input.padStart(dash ? maxLength - 1 : maxLength, '0')); + } + if (toNumber === false) { + return String(input); + } + return input; +}; + +const toMaxLen = (input, maxLength) => { + let negative = input[0] === '-' ? '-' : ''; + if (negative) { + input = input.slice(1); + maxLength--; + } + while (input.length < maxLength) input = '0' + input; + return negative ? ('-' + input) : input; +}; + +const toSequence = (parts, options) => { + parts.negatives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0); + parts.positives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0); + + let prefix = options.capture ? '' : '?:'; + let positives = ''; + let negatives = ''; + let result; + + if (parts.positives.length) { + positives = parts.positives.join('|'); + } + + if (parts.negatives.length) { + negatives = `-(${prefix}${parts.negatives.join('|')})`; + } + + if (positives && negatives) { + result = `${positives}|${negatives}`; + } else { + result = positives || negatives; + } + + if (options.wrap) { + return `(${prefix}${result})`; + } + + return result; +}; + +const toRange = (a, b, isNumbers, options) => { + if (isNumbers) { + return toRegexRange_1(a, b, { wrap: false, ...options }); + } + + let start = String.fromCharCode(a); + if (a === b) return start; + + let stop = String.fromCharCode(b); + return `[${start}-${stop}]`; +}; + +const toRegex = (start, end, options) => { + if (Array.isArray(start)) { + let wrap = options.wrap === true; + let prefix = options.capture ? '' : '?:'; + return wrap ? `(${prefix}${start.join('|')})` : start.join('|'); + } + return toRegexRange_1(start, end, options); +}; + +const rangeError = (...args) => { + return new RangeError('Invalid range arguments: ' + require$$0__default['default'].inspect(...args)); +}; + +const invalidRange = (start, end, options) => { + if (options.strictRanges === true) throw rangeError([start, end]); + return []; +}; + +const invalidStep = (step, options) => { + if (options.strictRanges === true) { + throw new TypeError(`Expected step "${step}" to be a number`); + } + return []; +}; + +const fillNumbers = (start, end, step = 1, options = {}) => { + let a = Number(start); + let b = Number(end); + + if (!Number.isInteger(a) || !Number.isInteger(b)) { + if (options.strictRanges === true) throw rangeError([start, end]); + return []; + } + + // fix negative zero + if (a === 0) a = 0; + if (b === 0) b = 0; + + let descending = a > b; + let startString = String(start); + let endString = String(end); + let stepString = String(step); + step = Math.max(Math.abs(step), 1); + + let padded = zeros(startString) || zeros(endString) || zeros(stepString); + let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0; + let toNumber = padded === false && stringify$1(start, end, options) === false; + let format = options.transform || transform(toNumber); + + if (options.toRegex && step === 1) { + return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options); + } + + let parts = { negatives: [], positives: [] }; + let push = num => parts[num < 0 ? 'negatives' : 'positives'].push(Math.abs(num)); + let range = []; + let index = 0; + + while (descending ? a >= b : a <= b) { + if (options.toRegex === true && step > 1) { + push(a); + } else { + range.push(pad(format(a, index), maxLen, toNumber)); + } + a = descending ? a - step : a + step; + index++; + } + + if (options.toRegex === true) { + return step > 1 + ? toSequence(parts, options) + : toRegex(range, null, { wrap: false, ...options }); + } + + return range; +}; + +const fillLetters = (start, end, step = 1, options = {}) => { + if ((!isNumber$1(start) && start.length > 1) || (!isNumber$1(end) && end.length > 1)) { + return invalidRange(start, end, options); + } + + + let format = options.transform || (val => String.fromCharCode(val)); + let a = `${start}`.charCodeAt(0); + let b = `${end}`.charCodeAt(0); + + let descending = a > b; + let min = Math.min(a, b); + let max = Math.max(a, b); + + if (options.toRegex && step === 1) { + return toRange(min, max, false, options); + } + + let range = []; + let index = 0; + + while (descending ? a >= b : a <= b) { + range.push(format(a, index)); + a = descending ? a - step : a + step; + index++; + } + + if (options.toRegex === true) { + return toRegex(range, null, { wrap: false, options }); + } + + return range; +}; + +const fill = (start, end, step, options = {}) => { + if (end == null && isValidValue(start)) { + return [start]; + } + + if (!isValidValue(start) || !isValidValue(end)) { + return invalidRange(start, end, options); + } + + if (typeof step === 'function') { + return fill(start, end, 1, { transform: step }); + } + + if (isObject$1(step)) { + return fill(start, end, 0, step); + } + + let opts = { ...options }; + if (opts.capture === true) opts.wrap = true; + step = step || opts.step || 1; + + if (!isNumber$1(step)) { + if (step != null && !isObject$1(step)) return invalidStep(step, opts); + return fill(start, end, 1, step); + } + + if (isNumber$1(start) && isNumber$1(end)) { + return fillNumbers(start, end, step, opts); + } + + return fillLetters(start, end, Math.max(Math.abs(step), 1), opts); +}; + +var fillRange = fill; + +const compile = (ast, options = {}) => { + let walk = (node, parent = {}) => { + let invalidBlock = utils$1.isInvalidBrace(parent); + let invalidNode = node.invalid === true && options.escapeInvalid === true; + let invalid = invalidBlock === true || invalidNode === true; + let prefix = options.escapeInvalid === true ? '\\' : ''; + let output = ''; + + if (node.isOpen === true) { + return prefix + node.value; + } + if (node.isClose === true) { + return prefix + node.value; + } + + if (node.type === 'open') { + return invalid ? (prefix + node.value) : '('; + } + + if (node.type === 'close') { + return invalid ? (prefix + node.value) : ')'; + } + + if (node.type === 'comma') { + return node.prev.type === 'comma' ? '' : (invalid ? node.value : '|'); + } + + if (node.value) { + return node.value; + } + + if (node.nodes && node.ranges > 0) { + let args = utils$1.reduce(node.nodes); + let range = fillRange(...args, { ...options, wrap: false, toRegex: true }); + + if (range.length !== 0) { + return args.length > 1 && range.length > 1 ? `(${range})` : range; + } + } + + if (node.nodes) { + for (let child of node.nodes) { + output += walk(child, node); + } + } + return output; + }; + + return walk(ast); +}; + +var compile_1 = compile; + +const append = (queue = '', stash = '', enclose = false) => { + let result = []; + + queue = [].concat(queue); + stash = [].concat(stash); + + if (!stash.length) return queue; + if (!queue.length) { + return enclose ? utils$1.flatten(stash).map(ele => `{${ele}}`) : stash; + } + + for (let item of queue) { + if (Array.isArray(item)) { + for (let value of item) { + result.push(append(value, stash, enclose)); + } + } else { + for (let ele of stash) { + if (enclose === true && typeof ele === 'string') ele = `{${ele}}`; + result.push(Array.isArray(ele) ? append(item, ele, enclose) : (item + ele)); + } + } + } + return utils$1.flatten(result); +}; + +const expand = (ast, options = {}) => { + let rangeLimit = options.rangeLimit === void 0 ? 1000 : options.rangeLimit; + + let walk = (node, parent = {}) => { + node.queue = []; + + let p = parent; + let q = parent.queue; + + while (p.type !== 'brace' && p.type !== 'root' && p.parent) { + p = p.parent; + q = p.queue; + } + + if (node.invalid || node.dollar) { + q.push(append(q.pop(), stringify(node, options))); + return; + } + + if (node.type === 'brace' && node.invalid !== true && node.nodes.length === 2) { + q.push(append(q.pop(), ['{}'])); + return; + } + + if (node.nodes && node.ranges > 0) { + let args = utils$1.reduce(node.nodes); + + if (utils$1.exceedsLimit(...args, options.step, rangeLimit)) { + throw new RangeError('expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.'); + } + + let range = fillRange(...args, options); + if (range.length === 0) { + range = stringify(node, options); + } + + q.push(append(q.pop(), range)); + node.nodes = []; + return; + } + + let enclose = utils$1.encloseBrace(node); + let queue = node.queue; + let block = node; + + while (block.type !== 'brace' && block.type !== 'root' && block.parent) { + block = block.parent; + queue = block.queue; + } + + for (let i = 0; i < node.nodes.length; i++) { + let child = node.nodes[i]; + + if (child.type === 'comma' && node.type === 'brace') { + if (i === 1) queue.push(''); + queue.push(''); + continue; + } + + if (child.type === 'close') { + q.push(append(q.pop(), queue, enclose)); + continue; + } + + if (child.value && child.type !== 'open') { + queue.push(append(queue.pop(), child.value)); + continue; + } + + if (child.nodes) { + walk(child, node); + } + } + + return queue; + }; + + return utils$1.flatten(walk(ast)); +}; + +var expand_1 = expand; + +var constants$1 = { + MAX_LENGTH: 1024 * 64, + + // Digits + CHAR_0: '0', /* 0 */ + CHAR_9: '9', /* 9 */ + + // Alphabet chars. + CHAR_UPPERCASE_A: 'A', /* A */ + CHAR_LOWERCASE_A: 'a', /* a */ + CHAR_UPPERCASE_Z: 'Z', /* Z */ + CHAR_LOWERCASE_Z: 'z', /* z */ + + CHAR_LEFT_PARENTHESES: '(', /* ( */ + CHAR_RIGHT_PARENTHESES: ')', /* ) */ + + CHAR_ASTERISK: '*', /* * */ + + // Non-alphabetic chars. + CHAR_AMPERSAND: '&', /* & */ + CHAR_AT: '@', /* @ */ + CHAR_BACKSLASH: '\\', /* \ */ + CHAR_BACKTICK: '`', /* ` */ + CHAR_CARRIAGE_RETURN: '\r', /* \r */ + CHAR_CIRCUMFLEX_ACCENT: '^', /* ^ */ + CHAR_COLON: ':', /* : */ + CHAR_COMMA: ',', /* , */ + CHAR_DOLLAR: '$', /* . */ + CHAR_DOT: '.', /* . */ + CHAR_DOUBLE_QUOTE: '"', /* " */ + CHAR_EQUAL: '=', /* = */ + CHAR_EXCLAMATION_MARK: '!', /* ! */ + CHAR_FORM_FEED: '\f', /* \f */ + CHAR_FORWARD_SLASH: '/', /* / */ + CHAR_HASH: '#', /* # */ + CHAR_HYPHEN_MINUS: '-', /* - */ + CHAR_LEFT_ANGLE_BRACKET: '<', /* < */ + CHAR_LEFT_CURLY_BRACE: '{', /* { */ + CHAR_LEFT_SQUARE_BRACKET: '[', /* [ */ + CHAR_LINE_FEED: '\n', /* \n */ + CHAR_NO_BREAK_SPACE: '\u00A0', /* \u00A0 */ + CHAR_PERCENT: '%', /* % */ + CHAR_PLUS: '+', /* + */ + CHAR_QUESTION_MARK: '?', /* ? */ + CHAR_RIGHT_ANGLE_BRACKET: '>', /* > */ + CHAR_RIGHT_CURLY_BRACE: '}', /* } */ + CHAR_RIGHT_SQUARE_BRACKET: ']', /* ] */ + CHAR_SEMICOLON: ';', /* ; */ + CHAR_SINGLE_QUOTE: '\'', /* ' */ + CHAR_SPACE: ' ', /* */ + CHAR_TAB: '\t', /* \t */ + CHAR_UNDERSCORE: '_', /* _ */ + CHAR_VERTICAL_LINE: '|', /* | */ + CHAR_ZERO_WIDTH_NOBREAK_SPACE: '\uFEFF' /* \uFEFF */ +}; + +/** + * Constants + */ + +const { + MAX_LENGTH: MAX_LENGTH$1, + CHAR_BACKSLASH, /* \ */ + CHAR_BACKTICK, /* ` */ + CHAR_COMMA: CHAR_COMMA$1, /* , */ + CHAR_DOT: CHAR_DOT$1, /* . */ + CHAR_LEFT_PARENTHESES: CHAR_LEFT_PARENTHESES$1, /* ( */ + CHAR_RIGHT_PARENTHESES: CHAR_RIGHT_PARENTHESES$1, /* ) */ + CHAR_LEFT_CURLY_BRACE: CHAR_LEFT_CURLY_BRACE$1, /* { */ + CHAR_RIGHT_CURLY_BRACE: CHAR_RIGHT_CURLY_BRACE$1, /* } */ + CHAR_LEFT_SQUARE_BRACKET: CHAR_LEFT_SQUARE_BRACKET$1, /* [ */ + CHAR_RIGHT_SQUARE_BRACKET: CHAR_RIGHT_SQUARE_BRACKET$1, /* ] */ + CHAR_DOUBLE_QUOTE, /* " */ + CHAR_SINGLE_QUOTE, /* ' */ + CHAR_NO_BREAK_SPACE, + CHAR_ZERO_WIDTH_NOBREAK_SPACE +} = constants$1; + +/** + * parse + */ + +const parse$1 = (input, options = {}) => { + if (typeof input !== 'string') { + throw new TypeError('Expected a string'); + } + + let opts = options || {}; + let max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH$1, opts.maxLength) : MAX_LENGTH$1; + if (input.length > max) { + throw new SyntaxError(`Input length (${input.length}), exceeds max characters (${max})`); + } + + let ast = { type: 'root', input, nodes: [] }; + let stack = [ast]; + let block = ast; + let prev = ast; + let brackets = 0; + let length = input.length; + let index = 0; + let depth = 0; + let value; + + /** + * Helpers + */ + + const advance = () => input[index++]; + const push = node => { + if (node.type === 'text' && prev.type === 'dot') { + prev.type = 'text'; + } + + if (prev && prev.type === 'text' && node.type === 'text') { + prev.value += node.value; + return; + } + + block.nodes.push(node); + node.parent = block; + node.prev = prev; + prev = node; + return node; + }; + + push({ type: 'bos' }); + + while (index < length) { + block = stack[stack.length - 1]; + value = advance(); + + /** + * Invalid chars + */ + + if (value === CHAR_ZERO_WIDTH_NOBREAK_SPACE || value === CHAR_NO_BREAK_SPACE) { + continue; + } + + /** + * Escaped chars + */ + + if (value === CHAR_BACKSLASH) { + push({ type: 'text', value: (options.keepEscaping ? value : '') + advance() }); + continue; + } + + /** + * Right square bracket (literal): ']' + */ + + if (value === CHAR_RIGHT_SQUARE_BRACKET$1) { + push({ type: 'text', value: '\\' + value }); + continue; + } + + /** + * Left square bracket: '[' + */ + + if (value === CHAR_LEFT_SQUARE_BRACKET$1) { + brackets++; + let next; + + while (index < length && (next = advance())) { + value += next; + + if (next === CHAR_LEFT_SQUARE_BRACKET$1) { + brackets++; + continue; + } + + if (next === CHAR_BACKSLASH) { + value += advance(); + continue; + } + + if (next === CHAR_RIGHT_SQUARE_BRACKET$1) { + brackets--; + + if (brackets === 0) { + break; + } + } + } + + push({ type: 'text', value }); + continue; + } + + /** + * Parentheses + */ + + if (value === CHAR_LEFT_PARENTHESES$1) { + block = push({ type: 'paren', nodes: [] }); + stack.push(block); + push({ type: 'text', value }); + continue; + } + + if (value === CHAR_RIGHT_PARENTHESES$1) { + if (block.type !== 'paren') { + push({ type: 'text', value }); + continue; + } + block = stack.pop(); + push({ type: 'text', value }); + block = stack[stack.length - 1]; + continue; + } + + /** + * Quotes: '|"|` + */ + + if (value === CHAR_DOUBLE_QUOTE || value === CHAR_SINGLE_QUOTE || value === CHAR_BACKTICK) { + let open = value; + let next; + + if (options.keepQuotes !== true) { + value = ''; + } + + while (index < length && (next = advance())) { + if (next === CHAR_BACKSLASH) { + value += next + advance(); + continue; + } + + if (next === open) { + if (options.keepQuotes === true) value += next; + break; + } + + value += next; + } + + push({ type: 'text', value }); + continue; + } + + /** + * Left curly brace: '{' + */ + + if (value === CHAR_LEFT_CURLY_BRACE$1) { + depth++; + + let dollar = prev.value && prev.value.slice(-1) === '$' || block.dollar === true; + let brace = { + type: 'brace', + open: true, + close: false, + dollar, + depth, + commas: 0, + ranges: 0, + nodes: [] + }; + + block = push(brace); + stack.push(block); + push({ type: 'open', value }); + continue; + } + + /** + * Right curly brace: '}' + */ + + if (value === CHAR_RIGHT_CURLY_BRACE$1) { + if (block.type !== 'brace') { + push({ type: 'text', value }); + continue; + } + + let type = 'close'; + block = stack.pop(); + block.close = true; + + push({ type, value }); + depth--; + + block = stack[stack.length - 1]; + continue; + } + + /** + * Comma: ',' + */ + + if (value === CHAR_COMMA$1 && depth > 0) { + if (block.ranges > 0) { + block.ranges = 0; + let open = block.nodes.shift(); + block.nodes = [open, { type: 'text', value: stringify(block) }]; + } + + push({ type: 'comma', value }); + block.commas++; + continue; + } + + /** + * Dot: '.' + */ + + if (value === CHAR_DOT$1 && depth > 0 && block.commas === 0) { + let siblings = block.nodes; + + if (depth === 0 || siblings.length === 0) { + push({ type: 'text', value }); + continue; + } + + if (prev.type === 'dot') { + block.range = []; + prev.value += value; + prev.type = 'range'; + + if (block.nodes.length !== 3 && block.nodes.length !== 5) { + block.invalid = true; + block.ranges = 0; + prev.type = 'text'; + continue; + } + + block.ranges++; + block.args = []; + continue; + } + + if (prev.type === 'range') { + siblings.pop(); + + let before = siblings[siblings.length - 1]; + before.value += prev.value + value; + prev = before; + block.ranges--; + continue; + } + + push({ type: 'dot', value }); + continue; + } + + /** + * Text + */ + + push({ type: 'text', value }); + } + + // Mark imbalanced braces and brackets as invalid + do { + block = stack.pop(); + + if (block.type !== 'root') { + block.nodes.forEach(node => { + if (!node.nodes) { + if (node.type === 'open') node.isOpen = true; + if (node.type === 'close') node.isClose = true; + if (!node.nodes) node.type = 'text'; + node.invalid = true; + } + }); + + // get the location of the block on parent.nodes (block's siblings) + let parent = stack[stack.length - 1]; + let index = parent.nodes.indexOf(block); + // replace the (invalid) block with it's nodes + parent.nodes.splice(index, 1, ...block.nodes); + } + } while (stack.length > 0); + + push({ type: 'eos' }); + return ast; +}; + +var parse_1$1 = parse$1; + +/** + * Expand the given pattern or create a regex-compatible string. + * + * ```js + * const braces = require('braces'); + * console.log(braces('{a,b,c}', { compile: true })); //=> ['(a|b|c)'] + * console.log(braces('{a,b,c}')); //=> ['a', 'b', 'c'] + * ``` + * @param {String} `str` + * @param {Object} `options` + * @return {String} + * @api public + */ + +const braces = (input, options = {}) => { + let output = []; + + if (Array.isArray(input)) { + for (let pattern of input) { + let result = braces.create(pattern, options); + if (Array.isArray(result)) { + output.push(...result); + } else { + output.push(result); + } + } + } else { + output = [].concat(braces.create(input, options)); + } + + if (options && options.expand === true && options.nodupes === true) { + output = [...new Set(output)]; + } + return output; +}; + +/** + * Parse the given `str` with the given `options`. + * + * ```js + * // braces.parse(pattern, [, options]); + * const ast = braces.parse('a/{b,c}/d'); + * console.log(ast); + * ``` + * @param {String} pattern Brace pattern to parse + * @param {Object} options + * @return {Object} Returns an AST + * @api public + */ + +braces.parse = (input, options = {}) => parse_1$1(input, options); + +/** + * Creates a braces string from an AST, or an AST node. + * + * ```js + * const braces = require('braces'); + * let ast = braces.parse('foo/{a,b}/bar'); + * console.log(stringify(ast.nodes[2])); //=> '{a,b}' + * ``` + * @param {String} `input` Brace pattern or AST. + * @param {Object} `options` + * @return {Array} Returns an array of expanded values. + * @api public + */ + +braces.stringify = (input, options = {}) => { + if (typeof input === 'string') { + return stringify(braces.parse(input, options), options); + } + return stringify(input, options); +}; + +/** + * Compiles a brace pattern into a regex-compatible, optimized string. + * This method is called by the main [braces](#braces) function by default. + * + * ```js + * const braces = require('braces'); + * console.log(braces.compile('a/{b,c}/d')); + * //=> ['a/(b|c)/d'] + * ``` + * @param {String} `input` Brace pattern or AST. + * @param {Object} `options` + * @return {Array} Returns an array of expanded values. + * @api public + */ + +braces.compile = (input, options = {}) => { + if (typeof input === 'string') { + input = braces.parse(input, options); + } + return compile_1(input, options); +}; + +/** + * Expands a brace pattern into an array. This method is called by the + * main [braces](#braces) function when `options.expand` is true. Before + * using this method it's recommended that you read the [performance notes](#performance)) + * and advantages of using [.compile](#compile) instead. + * + * ```js + * const braces = require('braces'); + * console.log(braces.expand('a/{b,c}/d')); + * //=> ['a/b/d', 'a/c/d']; + * ``` + * @param {String} `pattern` Brace pattern + * @param {Object} `options` + * @return {Array} Returns an array of expanded values. + * @api public + */ + +braces.expand = (input, options = {}) => { + if (typeof input === 'string') { + input = braces.parse(input, options); + } + + let result = expand_1(input, options); + + // filter out empty strings if specified + if (options.noempty === true) { + result = result.filter(Boolean); + } + + // filter out duplicates if specified + if (options.nodupes === true) { + result = [...new Set(result)]; + } + + return result; +}; + +/** + * Processes a brace pattern and returns either an expanded array + * (if `options.expand` is true), a highly optimized regex-compatible string. + * This method is called by the main [braces](#braces) function. + * + * ```js + * const braces = require('braces'); + * console.log(braces.create('user-{200..300}/project-{a,b,c}-{1..10}')) + * //=> 'user-(20[0-9]|2[1-9][0-9]|300)/project-(a|b|c)-([1-9]|10)' + * ``` + * @param {String} `pattern` Brace pattern + * @param {Object} `options` + * @return {Array} Returns an array of expanded values. + * @api public + */ + +braces.create = (input, options = {}) => { + if (input === '' || input.length < 3) { + return [input]; + } + + return options.expand !== true + ? braces.compile(input, options) + : braces.expand(input, options); +}; + +/** + * Expose "braces" + */ + +var braces_1 = braces; + +var require$$0 = [ + "3dm", + "3ds", + "3g2", + "3gp", + "7z", + "a", + "aac", + "adp", + "ai", + "aif", + "aiff", + "alz", + "ape", + "apk", + "appimage", + "ar", + "arj", + "asf", + "au", + "avi", + "bak", + "baml", + "bh", + "bin", + "bk", + "bmp", + "btif", + "bz2", + "bzip2", + "cab", + "caf", + "cgm", + "class", + "cmx", + "cpio", + "cr2", + "cur", + "dat", + "dcm", + "deb", + "dex", + "djvu", + "dll", + "dmg", + "dng", + "doc", + "docm", + "docx", + "dot", + "dotm", + "dra", + "DS_Store", + "dsk", + "dts", + "dtshd", + "dvb", + "dwg", + "dxf", + "ecelp4800", + "ecelp7470", + "ecelp9600", + "egg", + "eol", + "eot", + "epub", + "exe", + "f4v", + "fbs", + "fh", + "fla", + "flac", + "flatpak", + "fli", + "flv", + "fpx", + "fst", + "fvt", + "g3", + "gh", + "gif", + "graffle", + "gz", + "gzip", + "h261", + "h263", + "h264", + "icns", + "ico", + "ief", + "img", + "ipa", + "iso", + "jar", + "jpeg", + "jpg", + "jpgv", + "jpm", + "jxr", + "key", + "ktx", + "lha", + "lib", + "lvp", + "lz", + "lzh", + "lzma", + "lzo", + "m3u", + "m4a", + "m4v", + "mar", + "mdi", + "mht", + "mid", + "midi", + "mj2", + "mka", + "mkv", + "mmr", + "mng", + "mobi", + "mov", + "movie", + "mp3", + "mp4", + "mp4a", + "mpeg", + "mpg", + "mpga", + "mxu", + "nef", + "npx", + "numbers", + "nupkg", + "o", + "odp", + "ods", + "odt", + "oga", + "ogg", + "ogv", + "otf", + "ott", + "pages", + "pbm", + "pcx", + "pdb", + "pdf", + "pea", + "pgm", + "pic", + "png", + "pnm", + "pot", + "potm", + "potx", + "ppa", + "ppam", + "ppm", + "pps", + "ppsm", + "ppsx", + "ppt", + "pptm", + "pptx", + "psd", + "pya", + "pyc", + "pyo", + "pyv", + "qt", + "rar", + "ras", + "raw", + "resources", + "rgb", + "rip", + "rlc", + "rmf", + "rmvb", + "rpm", + "rtf", + "rz", + "s3m", + "s7z", + "scpt", + "sgi", + "shar", + "snap", + "sil", + "sketch", + "slk", + "smv", + "snk", + "so", + "stl", + "suo", + "sub", + "swf", + "tar", + "tbz", + "tbz2", + "tga", + "tgz", + "thmx", + "tif", + "tiff", + "tlz", + "ttc", + "ttf", + "txz", + "udf", + "uvh", + "uvi", + "uvm", + "uvp", + "uvs", + "uvu", + "viv", + "vob", + "war", + "wav", + "wax", + "wbmp", + "wdp", + "weba", + "webm", + "webp", + "whl", + "wim", + "wm", + "wma", + "wmv", + "wmx", + "woff", + "woff2", + "wrm", + "wvx", + "xbm", + "xif", + "xla", + "xlam", + "xls", + "xlsb", + "xlsm", + "xlsx", + "xlt", + "xltm", + "xltx", + "xm", + "xmind", + "xpi", + "xpm", + "xwd", + "xz", + "z", + "zip", + "zipx" +]; + +var binaryExtensions = require$$0; + +const extensions = new Set(binaryExtensions); + +var isBinaryPath = filePath => extensions.has(sysPath__default['default'].extname(filePath).slice(1).toLowerCase()); + +var constants$2 = createCommonjsModule(function (module, exports) { + +const {sep} = sysPath__default['default']; +const {platform} = process; + +exports.EV_ALL = 'all'; +exports.EV_READY = 'ready'; +exports.EV_ADD = 'add'; +exports.EV_CHANGE = 'change'; +exports.EV_ADD_DIR = 'addDir'; +exports.EV_UNLINK = 'unlink'; +exports.EV_UNLINK_DIR = 'unlinkDir'; +exports.EV_RAW = 'raw'; +exports.EV_ERROR = 'error'; + +exports.STR_DATA = 'data'; +exports.STR_END = 'end'; +exports.STR_CLOSE = 'close'; + +exports.FSEVENT_CREATED = 'created'; +exports.FSEVENT_MODIFIED = 'modified'; +exports.FSEVENT_DELETED = 'deleted'; +exports.FSEVENT_MOVED = 'moved'; +exports.FSEVENT_CLONED = 'cloned'; +exports.FSEVENT_UNKNOWN = 'unknown'; +exports.FSEVENT_TYPE_FILE = 'file'; +exports.FSEVENT_TYPE_DIRECTORY = 'directory'; +exports.FSEVENT_TYPE_SYMLINK = 'symlink'; + +exports.KEY_LISTENERS = 'listeners'; +exports.KEY_ERR = 'errHandlers'; +exports.KEY_RAW = 'rawEmitters'; +exports.HANDLER_KEYS = [exports.KEY_LISTENERS, exports.KEY_ERR, exports.KEY_RAW]; + +exports.DOT_SLASH = `.${sep}`; + +exports.BACK_SLASH_RE = /\\/g; +exports.DOUBLE_SLASH_RE = /\/\//; +exports.SLASH_OR_BACK_SLASH_RE = /[/\\]/; +exports.DOT_RE = /\..*\.(sw[px])$|~$|\.subl.*\.tmp/; +exports.REPLACER_RE = /^\.[/\\]/; + +exports.SLASH = '/'; +exports.SLASH_SLASH = '//'; +exports.BRACE_START = '{'; +exports.BANG = '!'; +exports.ONE_DOT = '.'; +exports.TWO_DOTS = '..'; +exports.STAR = '*'; +exports.GLOBSTAR = '**'; +exports.ROOT_GLOBSTAR = '/**/*'; +exports.SLASH_GLOBSTAR = '/**'; +exports.DIR_SUFFIX = 'Dir'; +exports.ANYMATCH_OPTS = {dot: true}; +exports.STRING_TYPE = 'string'; +exports.FUNCTION_TYPE = 'function'; +exports.EMPTY_STR = ''; +exports.EMPTY_FN = () => {}; +exports.IDENTITY_FN = val => val; + +exports.isWindows = platform === 'win32'; +exports.isMacos = platform === 'darwin'; +exports.isLinux = platform === 'linux'; +}); + +const fs = require('original-fs'); + +const { promisify: promisify$1 } = require$$0__default['default']; + +const { + isWindows, + isLinux, + EMPTY_FN, + EMPTY_STR, + KEY_LISTENERS, + KEY_ERR, + KEY_RAW, + HANDLER_KEYS, + EV_CHANGE, + EV_ADD, + EV_ADD_DIR, + EV_ERROR, + STR_DATA, + STR_END, + BRACE_START, + STAR: STAR$1 +} = constants$2; + +const THROTTLE_MODE_WATCH = 'watch'; + +const open$1 = promisify$1(fs.open); +const stat$1 = promisify$1(fs.stat); +const lstat$1 = promisify$1(fs.lstat); +const close = promisify$1(fs.close); +const fsrealpath = promisify$1(fs.realpath); + +const statMethods = { lstat: lstat$1, stat: stat$1 }; + +// TODO: emit errors properly. Example: EMFILE on Macos. +const foreach = (val, fn) => { + if (val instanceof Set) { + val.forEach(fn); + } else { + fn(val); + } +}; + +const addAndConvert = (main, prop, item) => { + let container = main[prop]; + if (!(container instanceof Set)) { + main[prop] = container = new Set([container]); + } + container.add(item); +}; + +const clearItem = cont => key => { + const set = cont[key]; + if (set instanceof Set) { + set.clear(); + } else { + delete cont[key]; + } +}; + +const delFromSet = (main, prop, item) => { + const container = main[prop]; + if (container instanceof Set) { + container.delete(item); + } else if (container === item) { + delete main[prop]; + } +}; + +const isEmptySet = (val) => val instanceof Set ? val.size === 0 : !val; + +/** + * @typedef {String} Path + */ + +// fs_watch helpers + +// object to hold per-process fs_watch instances +// (may be shared across chokidar FSWatcher instances) + +/** + * @typedef {Object} FsWatchContainer + * @property {Set} listeners + * @property {Set} errHandlers + * @property {Set} rawEmitters + * @property {fs.FSWatcher=} watcher + * @property {Boolean=} watcherUnusable + */ + +/** + * @type {Map} + */ +const FsWatchInstances = new Map(); + +/** + * Instantiates the fs_watch interface + * @param {String} path to be watched + * @param {Object} options to be passed to fs_watch + * @param {Function} listener main event handler + * @param {Function} errHandler emits info about errors + * @param {Function} emitRaw emits raw event data + * @returns {fs.FSWatcher} new fsevents instance + */ +function createFsWatchInstance(path, options, listener, errHandler, emitRaw) { + const handleEvent = (rawEvent, evPath) => { + listener(path); + emitRaw(rawEvent, evPath, {watchedPath: path}); + + // emit based on events occurring for files from a directory's watcher in + // case the file's watcher misses it (and rely on throttling to de-dupe) + if (evPath && path !== evPath) { + fsWatchBroadcast( + sysPath__default['default'].resolve(path, evPath), KEY_LISTENERS, sysPath__default['default'].join(path, evPath) + ); + } + }; + try { + return fs.watch(path, options, handleEvent); + } catch (error) { + errHandler(error); + } +} + +/** + * Helper for passing fs_watch event data to a collection of listeners + * @param {Path} fullPath absolute path bound to fs_watch instance + * @param {String} type listener type + * @param {*=} val1 arguments to be passed to listeners + * @param {*=} val2 + * @param {*=} val3 + */ +const fsWatchBroadcast = (fullPath, type, val1, val2, val3) => { + const cont = FsWatchInstances.get(fullPath); + if (!cont) return; + foreach(cont[type], (listener) => { + listener(val1, val2, val3); + }); +}; + +/** + * Instantiates the fs_watch interface or binds listeners + * to an existing one covering the same file system entry + * @param {String} path + * @param {String} fullPath absolute path + * @param {Object} options to be passed to fs_watch + * @param {Object} handlers container for event listener functions + */ +const setFsWatchListener = (path, fullPath, options, handlers) => { + const {listener, errHandler, rawEmitter} = handlers; + let cont = FsWatchInstances.get(fullPath); + + /** @type {fs.FSWatcher=} */ + let watcher; + if (!options.persistent) { + watcher = createFsWatchInstance( + path, options, listener, errHandler, rawEmitter + ); + return watcher.close.bind(watcher); + } + if (cont) { + addAndConvert(cont, KEY_LISTENERS, listener); + addAndConvert(cont, KEY_ERR, errHandler); + addAndConvert(cont, KEY_RAW, rawEmitter); + } else { + watcher = createFsWatchInstance( + path, + options, + fsWatchBroadcast.bind(null, fullPath, KEY_LISTENERS), + errHandler, // no need to use broadcast here + fsWatchBroadcast.bind(null, fullPath, KEY_RAW) + ); + if (!watcher) return; + watcher.on(EV_ERROR, async (error) => { + const broadcastErr = fsWatchBroadcast.bind(null, fullPath, KEY_ERR); + cont.watcherUnusable = true; // documented since Node 10.4.1 + // Workaround for https://github.com/joyent/node/issues/4337 + if (isWindows && error.code === 'EPERM') { + try { + const fd = await open$1(path, 'r'); + await close(fd); + broadcastErr(error); + } catch (err) {} + } else { + broadcastErr(error); + } + }); + cont = { + listeners: listener, + errHandlers: errHandler, + rawEmitters: rawEmitter, + watcher + }; + FsWatchInstances.set(fullPath, cont); + } + // const index = cont.listeners.indexOf(listener); + + // removes this instance's listeners and closes the underlying fs_watch + // instance if there are no more listeners left + return () => { + delFromSet(cont, KEY_LISTENERS, listener); + delFromSet(cont, KEY_ERR, errHandler); + delFromSet(cont, KEY_RAW, rawEmitter); + if (isEmptySet(cont.listeners)) { + // Check to protect against issue gh-730. + // if (cont.watcherUnusable) { + cont.watcher.close(); + // } + FsWatchInstances.delete(fullPath); + HANDLER_KEYS.forEach(clearItem(cont)); + cont.watcher = undefined; + Object.freeze(cont); + } + }; +}; + +// fs_watchFile helpers + +// object to hold per-process fs_watchFile instances +// (may be shared across chokidar FSWatcher instances) +const FsWatchFileInstances = new Map(); + +/** + * Instantiates the fs_watchFile interface or binds listeners + * to an existing one covering the same file system entry + * @param {String} path to be watched + * @param {String} fullPath absolute path + * @param {Object} options options to be passed to fs_watchFile + * @param {Object} handlers container for event listener functions + * @returns {Function} closer + */ +const setFsWatchFileListener = (path, fullPath, options, handlers) => { + const {listener, rawEmitter} = handlers; + let cont = FsWatchFileInstances.get(fullPath); + + /* eslint-disable no-unused-vars, prefer-destructuring */ + let listeners = new Set(); + let rawEmitters = new Set(); + + const copts = cont && cont.options; + if (copts && (copts.persistent < options.persistent || copts.interval > options.interval)) { + // "Upgrade" the watcher to persistence or a quicker interval. + // This creates some unlikely edge case issues if the user mixes + // settings in a very weird way, but solving for those cases + // doesn't seem worthwhile for the added complexity. + listeners = cont.listeners; + rawEmitters = cont.rawEmitters; + fs.unwatchFile(fullPath); + cont = undefined; + } + + /* eslint-enable no-unused-vars, prefer-destructuring */ + + if (cont) { + addAndConvert(cont, KEY_LISTENERS, listener); + addAndConvert(cont, KEY_RAW, rawEmitter); + } else { + // TODO + // listeners.add(listener); + // rawEmitters.add(rawEmitter); + cont = { + listeners: listener, + rawEmitters: rawEmitter, + options, + watcher: fs.watchFile(fullPath, options, (curr, prev) => { + foreach(cont.rawEmitters, (rawEmitter) => { + rawEmitter(EV_CHANGE, fullPath, {curr, prev}); + }); + const currmtime = curr.mtimeMs; + if (curr.size !== prev.size || currmtime > prev.mtimeMs || currmtime === 0) { + foreach(cont.listeners, (listener) => listener(path, curr)); + } + }) + }; + FsWatchFileInstances.set(fullPath, cont); + } + // const index = cont.listeners.indexOf(listener); + + // Removes this instance's listeners and closes the underlying fs_watchFile + // instance if there are no more listeners left. + return () => { + delFromSet(cont, KEY_LISTENERS, listener); + delFromSet(cont, KEY_RAW, rawEmitter); + if (isEmptySet(cont.listeners)) { + FsWatchFileInstances.delete(fullPath); + fs.unwatchFile(fullPath); + cont.options = cont.watcher = undefined; + Object.freeze(cont); + } + }; +}; + +/** + * @mixin + */ +class NodeFsHandler { + +/** + * @param {import("../index").FSWatcher} fsW + */ +constructor(fsW) { + this.fsw = fsW; + this._boundHandleError = (error) => fsW._handleError(error); +} + +/** + * Watch file for changes with fs_watchFile or fs_watch. + * @param {String} path to file or dir + * @param {Function} listener on fs change + * @returns {Function} closer for the watcher instance + */ +_watchWithNodeFs(path, listener) { + const opts = this.fsw.options; + const directory = sysPath__default['default'].dirname(path); + const basename = sysPath__default['default'].basename(path); + const parent = this.fsw._getWatchedDir(directory); + parent.add(basename); + const absolutePath = sysPath__default['default'].resolve(path); + const options = {persistent: opts.persistent}; + if (!listener) listener = EMPTY_FN; + + let closer; + if (opts.usePolling) { + options.interval = opts.enableBinaryInterval && isBinaryPath(basename) ? + opts.binaryInterval : opts.interval; + closer = setFsWatchFileListener(path, absolutePath, options, { + listener, + rawEmitter: this.fsw._emitRaw + }); + } else { + closer = setFsWatchListener(path, absolutePath, options, { + listener, + errHandler: this._boundHandleError, + rawEmitter: this.fsw._emitRaw + }); + } + return closer; +} + +/** + * Watch a file and emit add event if warranted. + * @param {Path} file Path + * @param {fs.Stats} stats result of fs_stat + * @param {Boolean} initialAdd was the file added at watch instantiation? + * @returns {Function} closer for the watcher instance + */ +_handleFile(file, stats, initialAdd) { + if (this.fsw.closed) { + return; + } + const dirname = sysPath__default['default'].dirname(file); + const basename = sysPath__default['default'].basename(file); + const parent = this.fsw._getWatchedDir(dirname); + // stats is always present + let prevStats = stats; + + // if the file is already being watched, do nothing + if (parent.has(basename)) return; + + const listener = async (path, newStats) => { + if (!this.fsw._throttle(THROTTLE_MODE_WATCH, file, 5)) return; + if (!newStats || newStats.mtimeMs === 0) { + try { + const newStats = await stat$1(file); + if (this.fsw.closed) return; + // Check that change event was not fired because of changed only accessTime. + const at = newStats.atimeMs; + const mt = newStats.mtimeMs; + if (!at || at <= mt || mt !== prevStats.mtimeMs) { + this.fsw._emit(EV_CHANGE, file, newStats); + } + if (isLinux && prevStats.ino !== newStats.ino) { + this.fsw._closeFile(path); + prevStats = newStats; + this.fsw._addPathCloser(path, this._watchWithNodeFs(file, listener)); + } else { + prevStats = newStats; + } + } catch (error) { + // Fix issues where mtime is null but file is still present + this.fsw._remove(dirname, basename); + } + // add is about to be emitted if file not already tracked in parent + } else if (parent.has(basename)) { + // Check that change event was not fired because of changed only accessTime. + const at = newStats.atimeMs; + const mt = newStats.mtimeMs; + if (!at || at <= mt || mt !== prevStats.mtimeMs) { + this.fsw._emit(EV_CHANGE, file, newStats); + } + prevStats = newStats; + } + }; + // kick off the watcher + const closer = this._watchWithNodeFs(file, listener); + + // emit an add event if we're supposed to + if (!(initialAdd && this.fsw.options.ignoreInitial) && this.fsw._isntIgnored(file)) { + if (!this.fsw._throttle(EV_ADD, file, 0)) return; + this.fsw._emit(EV_ADD, file, stats); + } + + return closer; +} + +/** + * Handle symlinks encountered while reading a dir. + * @param {Object} entry returned by readdirp + * @param {String} directory path of dir being read + * @param {String} path of this item + * @param {String} item basename of this item + * @returns {Promise} true if no more processing is needed for this entry. + */ +async _handleSymlink(entry, directory, path, item) { + if (this.fsw.closed) { + return; + } + const full = entry.fullPath; + const dir = this.fsw._getWatchedDir(directory); + + if (!this.fsw.options.followSymlinks) { + // watch symlink directly (don't follow) and detect changes + this.fsw._incrReadyCount(); + const linkPath = await fsrealpath(path); + if (this.fsw.closed) return; + if (dir.has(item)) { + if (this.fsw._symlinkPaths.get(full) !== linkPath) { + this.fsw._symlinkPaths.set(full, linkPath); + this.fsw._emit(EV_CHANGE, path, entry.stats); + } + } else { + dir.add(item); + this.fsw._symlinkPaths.set(full, linkPath); + this.fsw._emit(EV_ADD, path, entry.stats); + } + this.fsw._emitReady(); + return true; + } + + // don't follow the same symlink more than once + if (this.fsw._symlinkPaths.has(full)) { + return true; + } + + this.fsw._symlinkPaths.set(full, true); +} + +_handleRead(directory, initialAdd, wh, target, dir, depth, throttler) { + // Normalize the directory name on Windows + directory = sysPath__default['default'].join(directory, EMPTY_STR); + + if (!wh.hasGlob) { + throttler = this.fsw._throttle('readdir', directory, 1000); + if (!throttler) return; + } + + const previous = this.fsw._getWatchedDir(wh.path); + const current = new Set(); + + let stream = this.fsw._readdirp(directory, { + fileFilter: entry => wh.filterPath(entry), + directoryFilter: entry => wh.filterDir(entry), + depth: 0 + }).on(STR_DATA, async (entry) => { + if (this.fsw.closed) { + stream = undefined; + return; + } + const item = entry.path; + let path = sysPath__default['default'].join(directory, item); + current.add(item); + + if (entry.stats.isSymbolicLink() && await this._handleSymlink(entry, directory, path, item)) { + return; + } + + if (this.fsw.closed) { + stream = undefined; + return; + } + // Files that present in current directory snapshot + // but absent in previous are added to watch list and + // emit `add` event. + if (item === target || !target && !previous.has(item)) { + this.fsw._incrReadyCount(); + + // ensure relativeness of path is preserved in case of watcher reuse + path = sysPath__default['default'].join(dir, sysPath__default['default'].relative(dir, path)); + + this._addToNodeFs(path, initialAdd, wh, depth + 1); + } + }).on(EV_ERROR, this._boundHandleError); + + return new Promise(resolve => + stream.once(STR_END, () => { + if (this.fsw.closed) { + stream = undefined; + return; + } + const wasThrottled = throttler ? throttler.clear() : false; + + resolve(); + + // Files that absent in current directory snapshot + // but present in previous emit `remove` event + // and are removed from @watched[directory]. + previous.getChildren().filter((item) => { + return item !== directory && + !current.has(item) && + // in case of intersecting globs; + // a path may have been filtered out of this readdir, but + // shouldn't be removed because it matches a different glob + (!wh.hasGlob || wh.filterPath({ + fullPath: sysPath__default['default'].resolve(directory, item) + })); + }).forEach((item) => { + this.fsw._remove(directory, item); + }); + + stream = undefined; + + // one more time for any missed in case changes came in extremely quickly + if (wasThrottled) this._handleRead(directory, false, wh, target, dir, depth, throttler); + }) + ); +} + +/** + * Read directory to add / remove files from `@watched` list and re-read it on change. + * @param {String} dir fs path + * @param {fs.Stats} stats + * @param {Boolean} initialAdd + * @param {Number} depth relative to user-supplied path + * @param {String} target child path targeted for watch + * @param {Object} wh Common watch helpers for this path + * @param {String} realpath + * @returns {Promise} closer for the watcher instance. + */ +async _handleDir(dir, stats, initialAdd, depth, target, wh, realpath) { + const parentDir = this.fsw._getWatchedDir(sysPath__default['default'].dirname(dir)); + const tracked = parentDir.has(sysPath__default['default'].basename(dir)); + if (!(initialAdd && this.fsw.options.ignoreInitial) && !target && !tracked) { + if (!wh.hasGlob || wh.globFilter(dir)) this.fsw._emit(EV_ADD_DIR, dir, stats); + } + + // ensure dir is tracked (harmless if redundant) + parentDir.add(sysPath__default['default'].basename(dir)); + this.fsw._getWatchedDir(dir); + let throttler; + let closer; + + const oDepth = this.fsw.options.depth; + if ((oDepth == null || depth <= oDepth) && !this.fsw._symlinkPaths.has(realpath)) { + if (!target) { + await this._handleRead(dir, initialAdd, wh, target, dir, depth, throttler); + if (this.fsw.closed) return; + } + + closer = this._watchWithNodeFs(dir, (dirPath, stats) => { + // if current directory is removed, do nothing + if (stats && stats.mtimeMs === 0) return; + + this._handleRead(dirPath, false, wh, target, dir, depth, throttler); + }); + } + return closer; +} + +/** + * Handle added file, directory, or glob pattern. + * Delegates call to _handleFile / _handleDir after checks. + * @param {String} path to file or ir + * @param {Boolean} initialAdd was the file added at watch instantiation? + * @param {Object} priorWh depth relative to user-supplied path + * @param {Number} depth Child path actually targeted for watch + * @param {String=} target Child path actually targeted for watch + * @returns {Promise} + */ +async _addToNodeFs(path, initialAdd, priorWh, depth, target) { + const ready = this.fsw._emitReady; + if (this.fsw._isIgnored(path) || this.fsw.closed) { + ready(); + return false; + } + + const wh = this.fsw._getWatchHelpers(path, depth); + if (!wh.hasGlob && priorWh) { + wh.hasGlob = priorWh.hasGlob; + wh.globFilter = priorWh.globFilter; + wh.filterPath = entry => priorWh.filterPath(entry); + wh.filterDir = entry => priorWh.filterDir(entry); + } + + // evaluate what is at the path we're being asked to watch + try { + const stats = await statMethods[wh.statMethod](wh.watchPath); + if (this.fsw.closed) return; + if (this.fsw._isIgnored(wh.watchPath, stats)) { + ready(); + return false; + } + + const follow = this.fsw.options.followSymlinks && !path.includes(STAR$1) && !path.includes(BRACE_START); + let closer; + if (stats.isDirectory()) { + const targetPath = follow ? await fsrealpath(path) : path; + if (this.fsw.closed) return; + closer = await this._handleDir(wh.watchPath, stats, initialAdd, depth, target, wh, targetPath); + if (this.fsw.closed) return; + // preserve this symlink's target path + if (path !== targetPath && targetPath !== undefined) { + this.fsw._symlinkPaths.set(targetPath, true); + } + } else if (stats.isSymbolicLink()) { + const targetPath = follow ? await fsrealpath(path) : path; + if (this.fsw.closed) return; + const parent = sysPath__default['default'].dirname(wh.watchPath); + this.fsw._getWatchedDir(parent).add(wh.watchPath); + this.fsw._emit(EV_ADD, wh.watchPath, stats); + closer = await this._handleDir(parent, stats, initialAdd, depth, path, wh, targetPath); + if (this.fsw.closed) return; + + // preserve this symlink's target path + if (targetPath !== undefined) { + this.fsw._symlinkPaths.set(sysPath__default['default'].resolve(path), targetPath); + } + } else { + closer = this._handleFile(wh.watchPath, stats, initialAdd); + } + ready(); + + this.fsw._addPathCloser(path, closer); + return false; + + } catch (error) { + if (this.fsw._handleError(error)) { + ready(); + return path; + } + } +} + +} + +var nodefsHandler = NodeFsHandler; + +const fs$1 = require('original-fs'); + +const { promisify: promisify$2 } = require$$0__default['default']; + +let fsevents; +try { + fsevents = null; +} catch (error) { + if (process.env.CHOKIDAR_PRINT_FSEVENTS_REQUIRE_ERROR) console.error(error); +} + +if (fsevents) { + // TODO: real check + const mtch = process.version.match(/v(\d+)\.(\d+)/); + if (mtch && mtch[1] && mtch[2]) { + const maj = Number.parseInt(mtch[1], 10); + const min = Number.parseInt(mtch[2], 10); + if (maj === 8 && min < 16) { + fsevents = undefined; + } + } +} + +const { + EV_ADD: EV_ADD$1, + EV_CHANGE: EV_CHANGE$1, + EV_ADD_DIR: EV_ADD_DIR$1, + EV_UNLINK, + EV_ERROR: EV_ERROR$1, + STR_DATA: STR_DATA$1, + STR_END: STR_END$1, + FSEVENT_CREATED, + FSEVENT_MODIFIED, + FSEVENT_DELETED, + FSEVENT_MOVED, + // FSEVENT_CLONED, + FSEVENT_UNKNOWN, + FSEVENT_TYPE_FILE, + FSEVENT_TYPE_DIRECTORY, + FSEVENT_TYPE_SYMLINK, + + ROOT_GLOBSTAR, + DIR_SUFFIX, + DOT_SLASH, + FUNCTION_TYPE, + EMPTY_FN: EMPTY_FN$1, + IDENTITY_FN +} = constants$2; + +const Depth = (value) => isNaN(value) ? {} : {depth: value}; + +const stat$2 = promisify$2(fs$1.stat); +const lstat$2 = promisify$2(fs$1.lstat); +const realpath$1 = promisify$2(fs$1.realpath); + +const statMethods$1 = { stat: stat$2, lstat: lstat$2 }; + +/** + * @typedef {String} Path + */ + +/** + * @typedef {Object} FsEventsWatchContainer + * @property {Set} listeners + * @property {Function} rawEmitter + * @property {{stop: Function}} watcher + */ + +// fsevents instance helper functions +/** + * Object to hold per-process fsevents instances (may be shared across chokidar FSWatcher instances) + * @type {Map} + */ +const FSEventsWatchers = new Map(); + +// Threshold of duplicate path prefixes at which to start +// consolidating going forward +const consolidateThreshhold = 10; + +const wrongEventFlags = new Set([ + 69888, 70400, 71424, 72704, 73472, 131328, 131840, 262912 +]); + +/** + * Instantiates the fsevents interface + * @param {Path} path path to be watched + * @param {Function} callback called when fsevents is bound and ready + * @returns {{stop: Function}} new fsevents instance + */ +const createFSEventsInstance = (path, callback) => { + const stop = fsevents.watch(path, callback); + return {stop}; +}; + +/** + * Instantiates the fsevents interface or binds listeners to an existing one covering + * the same file tree. + * @param {Path} path - to be watched + * @param {Path} realPath - real path for symlinks + * @param {Function} listener - called when fsevents emits events + * @param {Function} rawEmitter - passes data to listeners of the 'raw' event + * @returns {Function} closer + */ +function setFSEventsListener(path, realPath, listener, rawEmitter) { + let watchPath = sysPath__default['default'].extname(path) ? sysPath__default['default'].dirname(path) : path; + const parentPath = sysPath__default['default'].dirname(watchPath); + let cont = FSEventsWatchers.get(watchPath); + + // If we've accumulated a substantial number of paths that + // could have been consolidated by watching one directory + // above the current one, create a watcher on the parent + // path instead, so that we do consolidate going forward. + if (couldConsolidate(parentPath)) { + watchPath = parentPath; + } + + const resolvedPath = sysPath__default['default'].resolve(path); + const hasSymlink = resolvedPath !== realPath; + + const filteredListener = (fullPath, flags, info) => { + if (hasSymlink) fullPath = fullPath.replace(realPath, resolvedPath); + if ( + fullPath === resolvedPath || + !fullPath.indexOf(resolvedPath + sysPath__default['default'].sep) + ) listener(fullPath, flags, info); + }; + + // check if there is already a watcher on a parent path + // modifies `watchPath` to the parent path when it finds a match + let watchedParent = false; + for (const watchedPath of FSEventsWatchers.keys()) { + if (realPath.indexOf(sysPath__default['default'].resolve(watchedPath) + sysPath__default['default'].sep) === 0) { + watchPath = watchedPath; + cont = FSEventsWatchers.get(watchPath); + watchedParent = true; + break; + } + } + + if (cont || watchedParent) { + cont.listeners.add(filteredListener); + } else { + cont = { + listeners: new Set([filteredListener]), + rawEmitter, + watcher: createFSEventsInstance(watchPath, (fullPath, flags) => { + if (!cont.listeners.size) return; + const info = fsevents.getInfo(fullPath, flags); + cont.listeners.forEach(list => { + list(fullPath, flags, info); + }); + + cont.rawEmitter(info.event, fullPath, info); + }) + }; + FSEventsWatchers.set(watchPath, cont); + } + + // removes this instance's listeners and closes the underlying fsevents + // instance if there are no more listeners left + return () => { + const lst = cont.listeners; + + lst.delete(filteredListener); + if (!lst.size) { + FSEventsWatchers.delete(watchPath); + if (cont.watcher) return cont.watcher.stop().then(() => { + cont.rawEmitter = cont.watcher = undefined; + Object.freeze(cont); + }); + } + }; +} + +// Decide whether or not we should start a new higher-level +// parent watcher +const couldConsolidate = (path) => { + let count = 0; + for (const watchPath of FSEventsWatchers.keys()) { + if (watchPath.indexOf(path) === 0) { + count++; + if (count >= consolidateThreshhold) { + return true; + } + } + } + + return false; +}; + +// returns boolean indicating whether fsevents can be used +const canUse = () => fsevents && FSEventsWatchers.size < 128; + +// determines subdirectory traversal levels from root to path +const calcDepth = (path, root) => { + let i = 0; + while (!path.indexOf(root) && (path = sysPath__default['default'].dirname(path)) !== root) i++; + return i; +}; + +// returns boolean indicating whether the fsevents' event info has the same type +// as the one returned by fs.stat +const sameTypes = (info, stats) => ( + info.type === FSEVENT_TYPE_DIRECTORY && stats.isDirectory() || + info.type === FSEVENT_TYPE_SYMLINK && stats.isSymbolicLink() || + info.type === FSEVENT_TYPE_FILE && stats.isFile() +); + +/** + * @mixin + */ +class FsEventsHandler { + +/** + * @param {import('../index').FSWatcher} fsw + */ +constructor(fsw) { + this.fsw = fsw; +} +checkIgnored(path, stats) { + const ipaths = this.fsw._ignoredPaths; + if (this.fsw._isIgnored(path, stats)) { + ipaths.add(path); + if (stats && stats.isDirectory()) { + ipaths.add(path + ROOT_GLOBSTAR); + } + return true; + } + + ipaths.delete(path); + ipaths.delete(path + ROOT_GLOBSTAR); +} + +addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts) { + const event = watchedDir.has(item) ? EV_CHANGE$1 : EV_ADD$1; + this.handleEvent(event, path, fullPath, realPath, parent, watchedDir, item, info, opts); +} + +async checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts) { + try { + const stats = await stat$2(path); + if (this.fsw.closed) return; + if (sameTypes(info, stats)) { + this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts); + } else { + this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts); + } + } catch (error) { + if (error.code === 'EACCES') { + this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts); + } else { + this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts); + } + } +} + +handleEvent(event, path, fullPath, realPath, parent, watchedDir, item, info, opts) { + if (this.fsw.closed || this.checkIgnored(path)) return; + + if (event === EV_UNLINK) { + const isDirectory = info.type === FSEVENT_TYPE_DIRECTORY; + // suppress unlink events on never before seen files + if (isDirectory || watchedDir.has(item)) { + this.fsw._remove(parent, item, isDirectory); + } + } else { + if (event === EV_ADD$1) { + // track new directories + if (info.type === FSEVENT_TYPE_DIRECTORY) this.fsw._getWatchedDir(path); + + if (info.type === FSEVENT_TYPE_SYMLINK && opts.followSymlinks) { + // push symlinks back to the top of the stack to get handled + const curDepth = opts.depth === undefined ? + undefined : calcDepth(fullPath, realPath) + 1; + return this._addToFsEvents(path, false, true, curDepth); + } + + // track new paths + // (other than symlinks being followed, which will be tracked soon) + this.fsw._getWatchedDir(parent).add(item); + } + /** + * @type {'add'|'addDir'|'unlink'|'unlinkDir'} + */ + const eventName = info.type === FSEVENT_TYPE_DIRECTORY ? event + DIR_SUFFIX : event; + this.fsw._emit(eventName, path); + if (eventName === EV_ADD_DIR$1) this._addToFsEvents(path, false, true); + } +} + +/** + * Handle symlinks encountered during directory scan + * @param {String} watchPath - file/dir path to be watched with fsevents + * @param {String} realPath - real path (in case of symlinks) + * @param {Function} transform - path transformer + * @param {Function} globFilter - path filter in case a glob pattern was provided + * @returns {Function} closer for the watcher instance +*/ +_watchWithFsEvents(watchPath, realPath, transform, globFilter) { + if (this.fsw.closed || this.fsw._isIgnored(watchPath)) return; + const opts = this.fsw.options; + const watchCallback = async (fullPath, flags, info) => { + if (this.fsw.closed) return; + if ( + opts.depth !== undefined && + calcDepth(fullPath, realPath) > opts.depth + ) return; + const path = transform(sysPath__default['default'].join( + watchPath, sysPath__default['default'].relative(watchPath, fullPath) + )); + if (globFilter && !globFilter(path)) return; + // ensure directories are tracked + const parent = sysPath__default['default'].dirname(path); + const item = sysPath__default['default'].basename(path); + const watchedDir = this.fsw._getWatchedDir( + info.type === FSEVENT_TYPE_DIRECTORY ? path : parent + ); + + // correct for wrong events emitted + if (wrongEventFlags.has(flags) || info.event === FSEVENT_UNKNOWN) { + if (typeof opts.ignored === FUNCTION_TYPE) { + let stats; + try { + stats = await stat$2(path); + } catch (error) {} + if (this.fsw.closed) return; + if (this.checkIgnored(path, stats)) return; + if (sameTypes(info, stats)) { + this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts); + } else { + this.handleEvent(EV_UNLINK, path, fullPath, realPath, parent, watchedDir, item, info, opts); + } + } else { + this.checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts); + } + } else { + switch (info.event) { + case FSEVENT_CREATED: + case FSEVENT_MODIFIED: + return this.addOrChange(path, fullPath, realPath, parent, watchedDir, item, info, opts); + case FSEVENT_DELETED: + case FSEVENT_MOVED: + return this.checkExists(path, fullPath, realPath, parent, watchedDir, item, info, opts); + } + } + }; + + const closer = setFSEventsListener( + watchPath, + realPath, + watchCallback, + this.fsw._emitRaw + ); + + this.fsw._emitReady(); + return closer; +} + +/** + * Handle symlinks encountered during directory scan + * @param {String} linkPath path to symlink + * @param {String} fullPath absolute path to the symlink + * @param {Function} transform pre-existing path transformer + * @param {Number} curDepth level of subdirectories traversed to where symlink is + * @returns {Promise} + */ +async _handleFsEventsSymlink(linkPath, fullPath, transform, curDepth) { + // don't follow the same symlink more than once + if (this.fsw.closed || this.fsw._symlinkPaths.has(fullPath)) return; + + this.fsw._symlinkPaths.set(fullPath, true); + this.fsw._incrReadyCount(); + + try { + const linkTarget = await realpath$1(linkPath); + if (this.fsw.closed) return; + if (this.fsw._isIgnored(linkTarget)) { + return this.fsw._emitReady(); + } + + this.fsw._incrReadyCount(); + + // add the linkTarget for watching with a wrapper for transform + // that causes emitted paths to incorporate the link's path + this._addToFsEvents(linkTarget || linkPath, (path) => { + let aliasedPath = linkPath; + if (linkTarget && linkTarget !== DOT_SLASH) { + aliasedPath = path.replace(linkTarget, linkPath); + } else if (path !== DOT_SLASH) { + aliasedPath = sysPath__default['default'].join(linkPath, path); + } + return transform(aliasedPath); + }, false, curDepth); + } catch(error) { + if (this.fsw._handleError(error)) { + return this.fsw._emitReady(); + } + } +} + +/** + * + * @param {Path} newPath + * @param {fs.Stats} stats + */ +emitAdd(newPath, stats, processPath, opts, forceAdd) { + const pp = processPath(newPath); + const isDir = stats.isDirectory(); + const dirObj = this.fsw._getWatchedDir(sysPath__default['default'].dirname(pp)); + const base = sysPath__default['default'].basename(pp); + + // ensure empty dirs get tracked + if (isDir) this.fsw._getWatchedDir(pp); + if (dirObj.has(base)) return; + dirObj.add(base); + + if (!opts.ignoreInitial || forceAdd === true) { + this.fsw._emit(isDir ? EV_ADD_DIR$1 : EV_ADD$1, pp, stats); + } +} + +initWatch(realPath, path, wh, processPath) { + if (this.fsw.closed) return; + const closer = this._watchWithFsEvents( + wh.watchPath, + sysPath__default['default'].resolve(realPath || wh.watchPath), + processPath, + wh.globFilter + ); + this.fsw._addPathCloser(path, closer); +} + +/** + * Handle added path with fsevents + * @param {String} path file/dir path or glob pattern + * @param {Function|Boolean=} transform converts working path to what the user expects + * @param {Boolean=} forceAdd ensure add is emitted + * @param {Number=} priorDepth Level of subdirectories already traversed. + * @returns {Promise} + */ +async _addToFsEvents(path, transform, forceAdd, priorDepth) { + if (this.fsw.closed) { + return; + } + const opts = this.fsw.options; + const processPath = typeof transform === FUNCTION_TYPE ? transform : IDENTITY_FN; + + const wh = this.fsw._getWatchHelpers(path); + + // evaluate what is at the path we're being asked to watch + try { + const stats = await statMethods$1[wh.statMethod](wh.watchPath); + if (this.fsw.closed) return; + if (this.fsw._isIgnored(wh.watchPath, stats)) { + throw null; + } + if (stats.isDirectory()) { + // emit addDir unless this is a glob parent + if (!wh.globFilter) this.emitAdd(processPath(path), stats, processPath, opts, forceAdd); + + // don't recurse further if it would exceed depth setting + if (priorDepth && priorDepth > opts.depth) return; + + // scan the contents of the dir + this.fsw._readdirp(wh.watchPath, { + fileFilter: entry => wh.filterPath(entry), + directoryFilter: entry => wh.filterDir(entry), + ...Depth(opts.depth - (priorDepth || 0)) + }).on(STR_DATA$1, (entry) => { + // need to check filterPath on dirs b/c filterDir is less restrictive + if (this.fsw.closed) { + return; + } + if (entry.stats.isDirectory() && !wh.filterPath(entry)) return; + + const joinedPath = sysPath__default['default'].join(wh.watchPath, entry.path); + const {fullPath} = entry; + + if (wh.followSymlinks && entry.stats.isSymbolicLink()) { + // preserve the current depth here since it can't be derived from + // real paths past the symlink + const curDepth = opts.depth === undefined ? + undefined : calcDepth(joinedPath, sysPath__default['default'].resolve(wh.watchPath)) + 1; + + this._handleFsEventsSymlink(joinedPath, fullPath, processPath, curDepth); + } else { + this.emitAdd(joinedPath, entry.stats, processPath, opts, forceAdd); + } + }).on(EV_ERROR$1, EMPTY_FN$1).on(STR_END$1, () => { + this.fsw._emitReady(); + }); + } else { + this.emitAdd(wh.watchPath, stats, processPath, opts, forceAdd); + this.fsw._emitReady(); + } + } catch (error) { + if (!error || this.fsw._handleError(error)) { + // TODO: Strange thing: "should not choke on an ignored watch path" will be failed without 2 ready calls -__- + this.fsw._emitReady(); + this.fsw._emitReady(); + } + } + + if (opts.persistent && forceAdd !== true) { + if (typeof transform === FUNCTION_TYPE) { + // realpath has already been resolved + this.initWatch(undefined, path, wh, processPath); + } else { + let realPath; + try { + realPath = await realpath$1(wh.watchPath); + } catch (e) {} + this.initWatch(realPath, path, wh, processPath); + } + } +} + +} + +var fseventsHandler = FsEventsHandler; +var canUse_1 = canUse; +fseventsHandler.canUse = canUse_1; + +const { EventEmitter } = require$$0__default$2['default']; +const fs$2 = require('original-fs'); + +const { promisify: promisify$3 } = require$$0__default['default']; + +const anymatch = anymatch_1.default; + + + + + + + +const { + EV_ALL, + EV_READY, + EV_ADD: EV_ADD$2, + EV_CHANGE: EV_CHANGE$2, + EV_UNLINK: EV_UNLINK$1, + EV_ADD_DIR: EV_ADD_DIR$2, + EV_UNLINK_DIR, + EV_RAW, + EV_ERROR: EV_ERROR$2, + + STR_CLOSE, + STR_END: STR_END$2, + + BACK_SLASH_RE, + DOUBLE_SLASH_RE, + SLASH_OR_BACK_SLASH_RE, + DOT_RE, + REPLACER_RE, + + SLASH, + SLASH_SLASH, + BRACE_START: BRACE_START$1, + BANG: BANG$1, + ONE_DOT, + TWO_DOTS, + GLOBSTAR, + SLASH_GLOBSTAR, + ANYMATCH_OPTS, + STRING_TYPE, + FUNCTION_TYPE: FUNCTION_TYPE$1, + EMPTY_STR: EMPTY_STR$1, + EMPTY_FN: EMPTY_FN$2, + + isWindows: isWindows$1, + isMacos +} = constants$2; + +const stat$3 = promisify$3(fs$2.stat); +const readdir$1 = promisify$3(fs$2.readdir); + +/** + * @typedef {String} Path + * @typedef {'all'|'add'|'addDir'|'change'|'unlink'|'unlinkDir'|'raw'|'error'|'ready'} EventName + * @typedef {'readdir'|'watch'|'add'|'remove'|'change'} ThrottleType + */ + +/** + * + * @typedef {Object} WatchHelpers + * @property {Boolean} followSymlinks + * @property {'stat'|'lstat'} statMethod + * @property {Path} path + * @property {Path} watchPath + * @property {Function} entryPath + * @property {Boolean} hasGlob + * @property {Object} globFilter + * @property {Function} filterPath + * @property {Function} filterDir + */ + +const arrify = (value = []) => Array.isArray(value) ? value : [value]; +const flatten = (list, result = []) => { + list.forEach(item => { + if (Array.isArray(item)) { + flatten(item, result); + } else { + result.push(item); + } + }); + return result; +}; + +const unifyPaths = (paths_) => { + /** + * @type {Array} + */ + const paths = flatten(arrify(paths_)); + if (!paths.every(p => typeof p === STRING_TYPE)) { + throw new TypeError(`Non-string provided as watch path: ${paths}`); + } + return paths.map(normalizePathToUnix); +}; + +// If SLASH_SLASH occurs at the beginning of path, it is not replaced +// because "//StoragePC/DrivePool/Movies" is a valid network path +const toUnix = (string) => { + let str = string.replace(BACK_SLASH_RE, SLASH); + let prepend = false; + if (str.startsWith(SLASH_SLASH)) { + prepend = true; + } + while (str.match(DOUBLE_SLASH_RE)) { + str = str.replace(DOUBLE_SLASH_RE, SLASH); + } + if (prepend) { + str = SLASH + str; + } + return str; +}; + +// Our version of upath.normalize +// TODO: this is not equal to path-normalize module - investigate why +const normalizePathToUnix = (path) => toUnix(sysPath__default['default'].normalize(toUnix(path))); + +const normalizeIgnored = (cwd = EMPTY_STR$1) => (path) => { + if (typeof path !== STRING_TYPE) return path; + return normalizePathToUnix(sysPath__default['default'].isAbsolute(path) ? path : sysPath__default['default'].join(cwd, path)); +}; + +const getAbsolutePath = (path, cwd) => { + if (sysPath__default['default'].isAbsolute(path)) { + return path; + } + if (path.startsWith(BANG$1)) { + return BANG$1 + sysPath__default['default'].join(cwd, path.slice(1)); + } + return sysPath__default['default'].join(cwd, path); +}; + +const undef = (opts, key) => opts[key] === undefined; + +/** + * Directory entry. + * @property {Path} path + * @property {Set} items + */ +class DirEntry { + /** + * @param {Path} dir + * @param {Function} removeWatcher + */ + constructor(dir, removeWatcher) { + this.path = dir; + this._removeWatcher = removeWatcher; + /** @type {Set} */ + this.items = new Set(); + } + + add(item) { + const {items} = this; + if (!items) return; + if (item !== ONE_DOT && item !== TWO_DOTS) items.add(item); + } + + async remove(item) { + const {items} = this; + if (!items) return; + items.delete(item); + if (items.size > 0) return; + + const dir = this.path; + try { + await readdir$1(dir); + } catch (err) { + if (this._removeWatcher) { + this._removeWatcher(sysPath__default['default'].dirname(dir), sysPath__default['default'].basename(dir)); + } + } + } + + has(item) { + const {items} = this; + if (!items) return; + return items.has(item); + } + + /** + * @returns {Array} + */ + getChildren() { + const {items} = this; + if (!items) return; + return [...items.values()]; + } + + dispose() { + this.items.clear(); + delete this.path; + delete this._removeWatcher; + delete this.items; + Object.freeze(this); + } +} + +const STAT_METHOD_F = 'stat'; +const STAT_METHOD_L = 'lstat'; +class WatchHelper { + constructor(path, watchPath, follow, fsw) { + this.fsw = fsw; + this.path = path = path.replace(REPLACER_RE, EMPTY_STR$1); + this.watchPath = watchPath; + this.fullWatchPath = sysPath__default['default'].resolve(watchPath); + this.hasGlob = watchPath !== path; + /** @type {object|boolean} */ + if (path === EMPTY_STR$1) this.hasGlob = false; + this.globSymlink = this.hasGlob && follow ? undefined : false; + this.globFilter = this.hasGlob ? anymatch(path, undefined, ANYMATCH_OPTS) : false; + this.dirParts = this.getDirParts(path); + this.dirParts.forEach((parts) => { + if (parts.length > 1) parts.pop(); + }); + this.followSymlinks = follow; + this.statMethod = follow ? STAT_METHOD_F : STAT_METHOD_L; + } + + checkGlobSymlink(entry) { + // only need to resolve once + // first entry should always have entry.parentDir === EMPTY_STR + if (this.globSymlink === undefined) { + this.globSymlink = entry.fullParentDir === this.fullWatchPath ? + false : {realPath: entry.fullParentDir, linkPath: this.fullWatchPath}; + } + + if (this.globSymlink) { + return entry.fullPath.replace(this.globSymlink.realPath, this.globSymlink.linkPath); + } + + return entry.fullPath; + } + + entryPath(entry) { + return sysPath__default['default'].join(this.watchPath, + sysPath__default['default'].relative(this.watchPath, this.checkGlobSymlink(entry)) + ); + } + + filterPath(entry) { + const {stats} = entry; + if (stats && stats.isSymbolicLink()) return this.filterDir(entry); + const resolvedPath = this.entryPath(entry); + const matchesGlob = this.hasGlob && typeof this.globFilter === FUNCTION_TYPE$1 ? + this.globFilter(resolvedPath) : true; + return matchesGlob && + this.fsw._isntIgnored(resolvedPath, stats) && + this.fsw._hasReadPermissions(stats); + } + + getDirParts(path) { + if (!this.hasGlob) return []; + const parts = []; + const expandedPath = path.includes(BRACE_START$1) ? braces_1.expand(path) : [path]; + expandedPath.forEach((path) => { + parts.push(sysPath__default['default'].relative(this.watchPath, path).split(SLASH_OR_BACK_SLASH_RE)); + }); + return parts; + } + + filterDir(entry) { + if (this.hasGlob) { + const entryParts = this.getDirParts(this.checkGlobSymlink(entry)); + let globstar = false; + this.unmatchedGlob = !this.dirParts.some((parts) => { + return parts.every((part, i) => { + if (part === GLOBSTAR) globstar = true; + return globstar || !entryParts[0][i] || anymatch(part, entryParts[0][i], ANYMATCH_OPTS); + }); + }); + } + return !this.unmatchedGlob && this.fsw._isntIgnored(this.entryPath(entry), entry.stats); + } +} + +/** + * Watches files & directories for changes. Emitted events: + * `add`, `addDir`, `change`, `unlink`, `unlinkDir`, `all`, `error` + * + * new FSWatcher() + * .add(directories) + * .on('add', path => log('File', path, 'was added')) + */ +class FSWatcher extends EventEmitter { +// Not indenting methods for history sake; for now. +constructor(_opts) { + super(); + + const opts = {}; + if (_opts) Object.assign(opts, _opts); // for frozen objects + + /** @type {Map} */ + this._watched = new Map(); + /** @type {Map} */ + this._closers = new Map(); + /** @type {Set} */ + this._ignoredPaths = new Set(); + + /** @type {Map} */ + this._throttled = new Map(); + + /** @type {Map} */ + this._symlinkPaths = new Map(); + + this._streams = new Set(); + this.closed = false; + + // Set up default options. + if (undef(opts, 'persistent')) opts.persistent = true; + if (undef(opts, 'ignoreInitial')) opts.ignoreInitial = false; + if (undef(opts, 'ignorePermissionErrors')) opts.ignorePermissionErrors = false; + if (undef(opts, 'interval')) opts.interval = 100; + if (undef(opts, 'binaryInterval')) opts.binaryInterval = 300; + if (undef(opts, 'disableGlobbing')) opts.disableGlobbing = false; + opts.enableBinaryInterval = opts.binaryInterval !== opts.interval; + + // Enable fsevents on OS X when polling isn't explicitly enabled. + if (undef(opts, 'useFsEvents')) opts.useFsEvents = !opts.usePolling; + + // If we can't use fsevents, ensure the options reflect it's disabled. + const canUseFsEvents = fseventsHandler.canUse(); + if (!canUseFsEvents) opts.useFsEvents = false; + + // Use polling on Mac if not using fsevents. + // Other platforms use non-polling fs_watch. + if (undef(opts, 'usePolling') && !opts.useFsEvents) { + opts.usePolling = isMacos; + } + + // Global override (useful for end-developers that need to force polling for all + // instances of chokidar, regardless of usage/dependency depth) + const envPoll = process.env.CHOKIDAR_USEPOLLING; + if (envPoll !== undefined) { + const envLower = envPoll.toLowerCase(); + + if (envLower === 'false' || envLower === '0') { + opts.usePolling = false; + } else if (envLower === 'true' || envLower === '1') { + opts.usePolling = true; + } else { + opts.usePolling = !!envLower; + } + } + const envInterval = process.env.CHOKIDAR_INTERVAL; + if (envInterval) { + opts.interval = Number.parseInt(envInterval, 10); + } + + // Editor atomic write normalization enabled by default with fs.watch + if (undef(opts, 'atomic')) opts.atomic = !opts.usePolling && !opts.useFsEvents; + if (opts.atomic) this._pendingUnlinks = new Map(); + + if (undef(opts, 'followSymlinks')) opts.followSymlinks = true; + + if (undef(opts, 'awaitWriteFinish')) opts.awaitWriteFinish = false; + if (opts.awaitWriteFinish === true) opts.awaitWriteFinish = {}; + const awf = opts.awaitWriteFinish; + if (awf) { + if (!awf.stabilityThreshold) awf.stabilityThreshold = 2000; + if (!awf.pollInterval) awf.pollInterval = 100; + this._pendingWrites = new Map(); + } + if (opts.ignored) opts.ignored = arrify(opts.ignored); + + let readyCalls = 0; + this._emitReady = () => { + readyCalls++; + if (readyCalls >= this._readyCount) { + this._emitReady = EMPTY_FN$2; + this._readyEmitted = true; + // use process.nextTick to allow time for listener to be bound + process.nextTick(() => this.emit(EV_READY)); + } + }; + this._emitRaw = (...args) => this.emit(EV_RAW, ...args); + this._readyEmitted = false; + this.options = opts; + + // Initialize with proper watcher. + if (opts.useFsEvents) { + this._fsEventsHandler = new fseventsHandler(this); + } else { + this._nodeFsHandler = new nodefsHandler(this); + } + + // You’re frozen when your heart’s not open. + Object.freeze(opts); +} + +// Public methods + +/** + * Adds paths to be watched on an existing FSWatcher instance + * @param {Path|Array} paths_ + * @param {String=} _origAdd private; for handling non-existent paths to be watched + * @param {Boolean=} _internal private; indicates a non-user add + * @returns {FSWatcher} for chaining + */ +add(paths_, _origAdd, _internal) { + const {cwd, disableGlobbing} = this.options; + this.closed = false; + let paths = unifyPaths(paths_); + if (cwd) { + paths = paths.map((path) => { + const absPath = getAbsolutePath(path, cwd); + + // Check `path` instead of `absPath` because the cwd portion can't be a glob + if (disableGlobbing || !isGlob(path)) { + return absPath; + } + return normalizePath(absPath); + }); + } + + // set aside negated glob strings + paths = paths.filter((path) => { + if (path.startsWith(BANG$1)) { + this._ignoredPaths.add(path.slice(1)); + return false; + } + + // if a path is being added that was previously ignored, stop ignoring it + this._ignoredPaths.delete(path); + this._ignoredPaths.delete(path + SLASH_GLOBSTAR); + + // reset the cached userIgnored anymatch fn + // to make ignoredPaths changes effective + this._userIgnored = undefined; + + return true; + }); + + if (this.options.useFsEvents && this._fsEventsHandler) { + if (!this._readyCount) this._readyCount = paths.length; + if (this.options.persistent) this._readyCount *= 2; + paths.forEach((path) => this._fsEventsHandler._addToFsEvents(path)); + } else { + if (!this._readyCount) this._readyCount = 0; + this._readyCount += paths.length; + Promise.all( + paths.map(async path => { + const res = await this._nodeFsHandler._addToNodeFs(path, !_internal, 0, 0, _origAdd); + if (res) this._emitReady(); + return res; + }) + ).then(results => { + if (this.closed) return; + results.filter(item => item).forEach(item => { + this.add(sysPath__default['default'].dirname(item), sysPath__default['default'].basename(_origAdd || item)); + }); + }); + } + + return this; +} + +/** + * Close watchers or start ignoring events from specified paths. + * @param {Path|Array} paths_ - string or array of strings, file/directory paths and/or globs + * @returns {FSWatcher} for chaining +*/ +unwatch(paths_) { + if (this.closed) return this; + const paths = unifyPaths(paths_); + const {cwd} = this.options; + + paths.forEach((path) => { + // convert to absolute path unless relative path already matches + if (!sysPath__default['default'].isAbsolute(path) && !this._closers.has(path)) { + if (cwd) path = sysPath__default['default'].join(cwd, path); + path = sysPath__default['default'].resolve(path); + } + + this._closePath(path); + + this._ignoredPaths.add(path); + if (this._watched.has(path)) { + this._ignoredPaths.add(path + SLASH_GLOBSTAR); + } + + // reset the cached userIgnored anymatch fn + // to make ignoredPaths changes effective + this._userIgnored = undefined; + }); + + return this; +} + +/** + * Close watchers and remove all listeners from watched paths. + * @returns {Promise}. +*/ +close() { + if (this.closed) return this._closePromise; + this.closed = true; + + // Memory management. + this.removeAllListeners(); + const closers = []; + this._closers.forEach(closerList => closerList.forEach(closer => { + const promise = closer(); + if (promise instanceof Promise) closers.push(promise); + })); + this._streams.forEach(stream => stream.destroy()); + this._userIgnored = undefined; + this._readyCount = 0; + this._readyEmitted = false; + this._watched.forEach(dirent => dirent.dispose()); + ['closers', 'watched', 'streams', 'symlinkPaths', 'throttled'].forEach(key => { + this[`_${key}`].clear(); + }); + + this._closePromise = closers.length ? Promise.all(closers).then(() => undefined) : Promise.resolve(); + return this._closePromise; +} + +/** + * Expose list of watched paths + * @returns {Object} for chaining +*/ +getWatched() { + const watchList = {}; + this._watched.forEach((entry, dir) => { + const key = this.options.cwd ? sysPath__default['default'].relative(this.options.cwd, dir) : dir; + watchList[key || ONE_DOT] = entry.getChildren().sort(); + }); + return watchList; +} + +emitWithAll(event, args) { + this.emit(...args); + if (event !== EV_ERROR$2) this.emit(EV_ALL, ...args); +} + +// Common helpers +// -------------- + +/** + * Normalize and emit events. + * Calling _emit DOES NOT MEAN emit() would be called! + * @param {EventName} event Type of event + * @param {Path} path File or directory path + * @param {*=} val1 arguments to be passed with event + * @param {*=} val2 + * @param {*=} val3 + * @returns the error if defined, otherwise the value of the FSWatcher instance's `closed` flag + */ +async _emit(event, path, val1, val2, val3) { + if (this.closed) return; + + const opts = this.options; + if (isWindows$1) path = sysPath__default['default'].normalize(path); + if (opts.cwd) path = sysPath__default['default'].relative(opts.cwd, path); + /** @type Array */ + const args = [event, path]; + if (val3 !== undefined) args.push(val1, val2, val3); + else if (val2 !== undefined) args.push(val1, val2); + else if (val1 !== undefined) args.push(val1); + + const awf = opts.awaitWriteFinish; + let pw; + if (awf && (pw = this._pendingWrites.get(path))) { + pw.lastChange = new Date(); + return this; + } + + if (opts.atomic) { + if (event === EV_UNLINK$1) { + this._pendingUnlinks.set(path, args); + setTimeout(() => { + this._pendingUnlinks.forEach((entry, path) => { + this.emit(...entry); + this.emit(EV_ALL, ...entry); + this._pendingUnlinks.delete(path); + }); + }, typeof opts.atomic === 'number' ? opts.atomic : 100); + return this; + } + if (event === EV_ADD$2 && this._pendingUnlinks.has(path)) { + event = args[0] = EV_CHANGE$2; + this._pendingUnlinks.delete(path); + } + } + + if (awf && (event === EV_ADD$2 || event === EV_CHANGE$2) && this._readyEmitted) { + const awfEmit = (err, stats) => { + if (err) { + event = args[0] = EV_ERROR$2; + args[1] = err; + this.emitWithAll(event, args); + } else if (stats) { + // if stats doesn't exist the file must have been deleted + if (args.length > 2) { + args[2] = stats; + } else { + args.push(stats); + } + this.emitWithAll(event, args); + } + }; + + this._awaitWriteFinish(path, awf.stabilityThreshold, event, awfEmit); + return this; + } + + if (event === EV_CHANGE$2) { + const isThrottled = !this._throttle(EV_CHANGE$2, path, 50); + if (isThrottled) return this; + } + + if (opts.alwaysStat && val1 === undefined && + (event === EV_ADD$2 || event === EV_ADD_DIR$2 || event === EV_CHANGE$2) + ) { + const fullPath = opts.cwd ? sysPath__default['default'].join(opts.cwd, path) : path; + let stats; + try { + stats = await stat$3(fullPath); + } catch (err) {} + // Suppress event when fs_stat fails, to avoid sending undefined 'stat' + if (!stats || this.closed) return; + args.push(stats); + } + this.emitWithAll(event, args); + + return this; +} + +/** + * Common handler for errors + * @param {Error} error + * @returns {Error|Boolean} The error if defined, otherwise the value of the FSWatcher instance's `closed` flag + */ +_handleError(error) { + const code = error && error.code; + if (error && code !== 'ENOENT' && code !== 'ENOTDIR' && + (!this.options.ignorePermissionErrors || (code !== 'EPERM' && code !== 'EACCES')) + ) { + this.emit(EV_ERROR$2, error); + } + return error || this.closed; +} + +/** + * Helper utility for throttling + * @param {ThrottleType} actionType type being throttled + * @param {Path} path being acted upon + * @param {Number} timeout duration of time to suppress duplicate actions + * @returns {Object|false} tracking object or false if action should be suppressed + */ +_throttle(actionType, path, timeout) { + if (!this._throttled.has(actionType)) { + this._throttled.set(actionType, new Map()); + } + + /** @type {Map} */ + const action = this._throttled.get(actionType); + /** @type {Object} */ + const actionPath = action.get(path); + + if (actionPath) { + actionPath.count++; + return false; + } + + let timeoutObject; + const clear = () => { + const item = action.get(path); + const count = item ? item.count : 0; + action.delete(path); + clearTimeout(timeoutObject); + if (item) clearTimeout(item.timeoutObject); + return count; + }; + timeoutObject = setTimeout(clear, timeout); + const thr = {timeoutObject, clear, count: 0}; + action.set(path, thr); + return thr; +} + +_incrReadyCount() { + return this._readyCount++; +} + +/** + * Awaits write operation to finish. + * Polls a newly created file for size variations. When files size does not change for 'threshold' milliseconds calls callback. + * @param {Path} path being acted upon + * @param {Number} threshold Time in milliseconds a file size must be fixed before acknowledging write OP is finished + * @param {EventName} event + * @param {Function} awfEmit Callback to be called when ready for event to be emitted. + */ +_awaitWriteFinish(path, threshold, event, awfEmit) { + let timeoutHandler; + + let fullPath = path; + if (this.options.cwd && !sysPath__default['default'].isAbsolute(path)) { + fullPath = sysPath__default['default'].join(this.options.cwd, path); + } + + const now = new Date(); + + const awaitWriteFinish = (prevStat) => { + fs$2.stat(fullPath, (err, curStat) => { + if (err || !this._pendingWrites.has(path)) { + if (err && err.code !== 'ENOENT') awfEmit(err); + return; + } + + const now = Number(new Date()); + + if (prevStat && curStat.size !== prevStat.size) { + this._pendingWrites.get(path).lastChange = now; + } + const pw = this._pendingWrites.get(path); + const df = now - pw.lastChange; + + if (df >= threshold) { + this._pendingWrites.delete(path); + awfEmit(undefined, curStat); + } else { + timeoutHandler = setTimeout( + awaitWriteFinish, + this.options.awaitWriteFinish.pollInterval, + curStat + ); + } + }); + }; + + if (!this._pendingWrites.has(path)) { + this._pendingWrites.set(path, { + lastChange: now, + cancelWait: () => { + this._pendingWrites.delete(path); + clearTimeout(timeoutHandler); + return event; + } + }); + timeoutHandler = setTimeout( + awaitWriteFinish, + this.options.awaitWriteFinish.pollInterval + ); + } +} + +_getGlobIgnored() { + return [...this._ignoredPaths.values()]; +} + +/** + * Determines whether user has asked to ignore this path. + * @param {Path} path filepath or dir + * @param {fs.Stats=} stats result of fs.stat + * @returns {Boolean} + */ +_isIgnored(path, stats) { + if (this.options.atomic && DOT_RE.test(path)) return true; + if (!this._userIgnored) { + const {cwd} = this.options; + const ign = this.options.ignored; + + const ignored = ign && ign.map(normalizeIgnored(cwd)); + const paths = arrify(ignored) + .filter((path) => typeof path === STRING_TYPE && !isGlob(path)) + .map((path) => path + SLASH_GLOBSTAR); + const list = this._getGlobIgnored().map(normalizeIgnored(cwd)).concat(ignored, paths); + this._userIgnored = anymatch(list, undefined, ANYMATCH_OPTS); + } + + return this._userIgnored([path, stats]); +} + +_isntIgnored(path, stat) { + return !this._isIgnored(path, stat); +} + +/** + * Provides a set of common helpers and properties relating to symlink and glob handling. + * @param {Path} path file, directory, or glob pattern being watched + * @param {Number=} depth at any depth > 0, this isn't a glob + * @returns {WatchHelper} object containing helpers for this path + */ +_getWatchHelpers(path, depth) { + const watchPath = depth || this.options.disableGlobbing || !isGlob(path) ? path : globParent(path); + const follow = this.options.followSymlinks; + + return new WatchHelper(path, watchPath, follow, this); +} + +// Directory helpers +// ----------------- + +/** + * Provides directory tracking objects + * @param {String} directory path of the directory + * @returns {DirEntry} the directory's tracking object + */ +_getWatchedDir(directory) { + if (!this._boundRemove) this._boundRemove = this._remove.bind(this); + const dir = sysPath__default['default'].resolve(directory); + if (!this._watched.has(dir)) this._watched.set(dir, new DirEntry(dir, this._boundRemove)); + return this._watched.get(dir); +} + +// File helpers +// ------------ + +/** + * Check for read permissions. + * Based on this answer on SO: https://stackoverflow.com/a/11781404/1358405 + * @param {fs.Stats} stats - object, result of fs_stat + * @returns {Boolean} indicates whether the file can be read +*/ +_hasReadPermissions(stats) { + if (this.options.ignorePermissionErrors) return true; + + // stats.mode may be bigint + const md = stats && Number.parseInt(stats.mode, 10); + const st = md & 0o777; + const it = Number.parseInt(st.toString(8)[0], 10); + return Boolean(4 & it); +} + +/** + * Handles emitting unlink events for + * files and directories, and via recursion, for + * files and directories within directories that are unlinked + * @param {String} directory within which the following item is located + * @param {String} item base path of item/directory + * @returns {void} +*/ +_remove(directory, item, isDirectory) { + // if what is being deleted is a directory, get that directory's paths + // for recursive deleting and cleaning of watched object + // if it is not a directory, nestedDirectoryChildren will be empty array + const path = sysPath__default['default'].join(directory, item); + const fullPath = sysPath__default['default'].resolve(path); + isDirectory = isDirectory != null + ? isDirectory + : this._watched.has(path) || this._watched.has(fullPath); + + // prevent duplicate handling in case of arriving here nearly simultaneously + // via multiple paths (such as _handleFile and _handleDir) + if (!this._throttle('remove', path, 100)) return; + + // if the only watched file is removed, watch for its return + if (!isDirectory && !this.options.useFsEvents && this._watched.size === 1) { + this.add(directory, item, true); + } + + // This will create a new entry in the watched object in either case + // so we got to do the directory check beforehand + const wp = this._getWatchedDir(path); + const nestedDirectoryChildren = wp.getChildren(); + + // Recursively remove children directories / files. + nestedDirectoryChildren.forEach(nested => this._remove(path, nested)); + + // Check if item was on the watched list and remove it + const parent = this._getWatchedDir(directory); + const wasTracked = parent.has(item); + parent.remove(item); + + // Fixes issue #1042 -> Relative paths were detected and added as symlinks + // (https://github.com/paulmillr/chokidar/blob/e1753ddbc9571bdc33b4a4af172d52cb6e611c10/lib/nodefs-handler.js#L612), + // but never removed from the map in case the path was deleted. + // This leads to an incorrect state if the path was recreated: + // https://github.com/paulmillr/chokidar/blob/e1753ddbc9571bdc33b4a4af172d52cb6e611c10/lib/nodefs-handler.js#L553 + if (this._symlinkPaths.has(fullPath)) { + this._symlinkPaths.delete(fullPath); + } + + // If we wait for this file to be fully written, cancel the wait. + let relPath = path; + if (this.options.cwd) relPath = sysPath__default['default'].relative(this.options.cwd, path); + if (this.options.awaitWriteFinish && this._pendingWrites.has(relPath)) { + const event = this._pendingWrites.get(relPath).cancelWait(); + if (event === EV_ADD$2) return; + } + + // The Entry will either be a directory that just got removed + // or a bogus entry to a file, in either case we have to remove it + this._watched.delete(path); + this._watched.delete(fullPath); + const eventName = isDirectory ? EV_UNLINK_DIR : EV_UNLINK$1; + if (wasTracked && !this._isIgnored(path)) this._emit(eventName, path); + + // Avoid conflicts if we later create another file with the same name + if (!this.options.useFsEvents) { + this._closePath(path); + } +} + +/** + * Closes all watchers for a path + * @param {Path} path + */ +_closePath(path) { + this._closeFile(path); + const dir = sysPath__default['default'].dirname(path); + this._getWatchedDir(dir).remove(sysPath__default['default'].basename(path)); +} + +/** + * Closes only file-specific watchers + * @param {Path} path + */ +_closeFile(path) { + const closers = this._closers.get(path); + if (!closers) return; + closers.forEach(closer => closer()); + this._closers.delete(path); +} + +/** + * + * @param {Path} path + * @param {Function} closer + */ +_addPathCloser(path, closer) { + if (!closer) return; + let list = this._closers.get(path); + if (!list) { + list = []; + this._closers.set(path, list); + } + list.push(closer); +} + +_readdirp(root, opts) { + if (this.closed) return; + const options = {type: EV_ALL, alwaysStat: true, lstat: true, ...opts}; + let stream = readdirp_1(root, options); + this._streams.add(stream); + stream.once(STR_CLOSE, () => { + stream = undefined; + }); + stream.once(STR_END$2, () => { + if (stream) { + this._streams.delete(stream); + stream = undefined; + } + }); + return stream; +} + +} + +/** + * Instantiates watcher with paths to be tracked. + * @param {String|Array} paths file/directory paths and/or globs + * @param {Object=} options chokidar opts + * @returns an instance of FSWatcher for chaining. + */ +const watch = (paths, options) => { + const watcher = new FSWatcher(options); + watcher.add(paths); + return watcher; +}; + +var watch_1 = watch; + +var utils$2 = createCommonjsModule(function (module, exports) { + +exports.__esModule = true; +exports.extend = extend; +exports.indexOf = indexOf; +exports.escapeExpression = escapeExpression; +exports.isEmpty = isEmpty; +exports.createFrame = createFrame; +exports.blockParams = blockParams; +exports.appendContextPath = appendContextPath; +var escape = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '`': '`', + '=': '=' +}; + +var badChars = /[&<>"'`=]/g, + possible = /[&<>"'`=]/; + +function escapeChar(chr) { + return escape[chr]; +} + +function extend(obj /* , ...source */) { + for (var i = 1; i < arguments.length; i++) { + for (var key in arguments[i]) { + if (Object.prototype.hasOwnProperty.call(arguments[i], key)) { + obj[key] = arguments[i][key]; + } + } + } + + return obj; +} + +var toString = Object.prototype.toString; + +exports.toString = toString; +// Sourced from lodash +// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt +/* eslint-disable func-style */ +var isFunction = function isFunction(value) { + return typeof value === 'function'; +}; +// fallback for older versions of Chrome and Safari +/* istanbul ignore next */ +if (isFunction(/x/)) { + exports.isFunction = isFunction = function (value) { + return typeof value === 'function' && toString.call(value) === '[object Function]'; + }; +} +exports.isFunction = isFunction; + +/* eslint-enable func-style */ + +/* istanbul ignore next */ +var isArray = Array.isArray || function (value) { + return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false; +}; + +exports.isArray = isArray; +// Older IE versions do not directly support indexOf so we must implement our own, sadly. + +function indexOf(array, value) { + for (var i = 0, len = array.length; i < len; i++) { + if (array[i] === value) { + return i; + } + } + return -1; +} + +function escapeExpression(string) { + if (typeof string !== 'string') { + // don't escape SafeStrings, since they're already safe + if (string && string.toHTML) { + return string.toHTML(); + } else if (string == null) { + return ''; + } else if (!string) { + return string + ''; + } + + // Force a string conversion as this will be done by the append regardless and + // the regex test will do this transparently behind the scenes, causing issues if + // an object's to string has escaped characters in it. + string = '' + string; + } + + if (!possible.test(string)) { + return string; + } + return string.replace(badChars, escapeChar); +} + +function isEmpty(value) { + if (!value && value !== 0) { + return true; + } else if (isArray(value) && value.length === 0) { + return true; + } else { + return false; + } +} + +function createFrame(object) { + var frame = extend({}, object); + frame._parent = object; + return frame; +} + +function blockParams(params, ids) { + params.path = ids; + return params; +} + +function appendContextPath(contextPath, id) { + return (contextPath ? contextPath + '.' : '') + id; +} + +}); + +var exception = createCommonjsModule(function (module, exports) { + +exports.__esModule = true; +var errorProps = ['description', 'fileName', 'lineNumber', 'endLineNumber', 'message', 'name', 'number', 'stack']; + +function Exception(message, node) { + var loc = node && node.loc, + line = undefined, + endLineNumber = undefined, + column = undefined, + endColumn = undefined; + + if (loc) { + line = loc.start.line; + endLineNumber = loc.end.line; + column = loc.start.column; + endColumn = loc.end.column; + + message += ' - ' + line + ':' + column; + } + + var tmp = Error.prototype.constructor.call(this, message); + + // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work. + for (var idx = 0; idx < errorProps.length; idx++) { + this[errorProps[idx]] = tmp[errorProps[idx]]; + } + + /* istanbul ignore else */ + if (Error.captureStackTrace) { + Error.captureStackTrace(this, Exception); + } + + try { + if (loc) { + this.lineNumber = line; + this.endLineNumber = endLineNumber; + + // Work around issue under safari where we can't directly set the column value + /* istanbul ignore next */ + if (Object.defineProperty) { + Object.defineProperty(this, 'column', { + value: column, + enumerable: true + }); + Object.defineProperty(this, 'endColumn', { + value: endColumn, + enumerable: true + }); + } else { + this.column = column; + this.endColumn = endColumn; + } + } + } catch (nop) { + /* Ignore if the browser is very particular */ + } +} + +Exception.prototype = new Error(); + +exports['default'] = Exception; +module.exports = exports['default']; + +}); + +var blockHelperMissing = createCommonjsModule(function (module, exports) { + +exports.__esModule = true; + + + +exports['default'] = function (instance) { + instance.registerHelper('blockHelperMissing', function (context, options) { + var inverse = options.inverse, + fn = options.fn; + + if (context === true) { + return fn(this); + } else if (context === false || context == null) { + return inverse(this); + } else if (utils$2.isArray(context)) { + if (context.length > 0) { + if (options.ids) { + options.ids = [options.name]; + } + + return instance.helpers.each(context, options); + } else { + return inverse(this); + } + } else { + if (options.data && options.ids) { + var data = utils$2.createFrame(options.data); + data.contextPath = utils$2.appendContextPath(options.data.contextPath, options.name); + options = { data: data }; + } + + return fn(context, options); + } + }); +}; + +module.exports = exports['default']; + +}); + +var each = createCommonjsModule(function (module, exports) { + +exports.__esModule = true; +// istanbul ignore next + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + + + + +var _exception2 = _interopRequireDefault(exception); + +exports['default'] = function (instance) { + instance.registerHelper('each', function (context, options) { + if (!options) { + throw new _exception2['default']('Must pass iterator to #each'); + } + + var fn = options.fn, + inverse = options.inverse, + i = 0, + ret = '', + data = undefined, + contextPath = undefined; + + if (options.data && options.ids) { + contextPath = utils$2.appendContextPath(options.data.contextPath, options.ids[0]) + '.'; + } + + if (utils$2.isFunction(context)) { + context = context.call(this); + } + + if (options.data) { + data = utils$2.createFrame(options.data); + } + + function execIteration(field, index, last) { + if (data) { + data.key = field; + data.index = index; + data.first = index === 0; + data.last = !!last; + + if (contextPath) { + data.contextPath = contextPath + field; + } + } + + ret = ret + fn(context[field], { + data: data, + blockParams: utils$2.blockParams([context[field], field], [contextPath + field, null]) + }); + } + + if (context && typeof context === 'object') { + if (utils$2.isArray(context)) { + for (var j = context.length; i < j; i++) { + if (i in context) { + execIteration(i, i, i === context.length - 1); + } + } + } else if (commonjsGlobal.Symbol && context[commonjsGlobal.Symbol.iterator]) { + var newContext = []; + var iterator = context[commonjsGlobal.Symbol.iterator](); + for (var it = iterator.next(); !it.done; it = iterator.next()) { + newContext.push(it.value); + } + context = newContext; + for (var j = context.length; i < j; i++) { + execIteration(i, i, i === context.length - 1); + } + } else { + (function () { + var priorKey = undefined; + + Object.keys(context).forEach(function (key) { + // We're running the iterations one step out of sync so we can detect + // the last iteration without have to scan the object twice and create + // an itermediate keys array. + if (priorKey !== undefined) { + execIteration(priorKey, i - 1); + } + priorKey = key; + i++; + }); + if (priorKey !== undefined) { + execIteration(priorKey, i - 1, true); + } + })(); + } + } + + if (i === 0) { + ret = inverse(this); + } + + return ret; + }); +}; + +module.exports = exports['default']; + +}); + +var helperMissing = createCommonjsModule(function (module, exports) { + +exports.__esModule = true; +// istanbul ignore next + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + + +var _exception2 = _interopRequireDefault(exception); + +exports['default'] = function (instance) { + instance.registerHelper('helperMissing', function () /* [args, ]options */{ + if (arguments.length === 1) { + // A missing field in a {{foo}} construct. + return undefined; + } else { + // Someone is actually trying to call something, blow up. + throw new _exception2['default']('Missing helper: "' + arguments[arguments.length - 1].name + '"'); + } + }); +}; + +module.exports = exports['default']; + +}); + +var _if = createCommonjsModule(function (module, exports) { + +exports.__esModule = true; +// istanbul ignore next + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + + + + +var _exception2 = _interopRequireDefault(exception); + +exports['default'] = function (instance) { + instance.registerHelper('if', function (conditional, options) { + if (arguments.length != 2) { + throw new _exception2['default']('#if requires exactly one argument'); + } + if (utils$2.isFunction(conditional)) { + conditional = conditional.call(this); + } + + // Default behavior is to render the positive path if the value is truthy and not empty. + // The `includeZero` option may be set to treat the condtional as purely not empty based on the + // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative. + if (!options.hash.includeZero && !conditional || utils$2.isEmpty(conditional)) { + return options.inverse(this); + } else { + return options.fn(this); + } + }); + + instance.registerHelper('unless', function (conditional, options) { + if (arguments.length != 2) { + throw new _exception2['default']('#unless requires exactly one argument'); + } + return instance.helpers['if'].call(this, conditional, { + fn: options.inverse, + inverse: options.fn, + hash: options.hash + }); + }); +}; + +module.exports = exports['default']; + +}); + +var log = createCommonjsModule(function (module, exports) { + +exports.__esModule = true; + +exports['default'] = function (instance) { + instance.registerHelper('log', function () /* message, options */{ + var args = [undefined], + options = arguments[arguments.length - 1]; + for (var i = 0; i < arguments.length - 1; i++) { + args.push(arguments[i]); + } + + var level = 1; + if (options.hash.level != null) { + level = options.hash.level; + } else if (options.data && options.data.level != null) { + level = options.data.level; + } + args[0] = level; + + instance.log.apply(instance, args); + }); +}; + +module.exports = exports['default']; + +}); + +var lookup = createCommonjsModule(function (module, exports) { + +exports.__esModule = true; + +exports['default'] = function (instance) { + instance.registerHelper('lookup', function (obj, field, options) { + if (!obj) { + // Note for 5.0: Change to "obj == null" in 5.0 + return obj; + } + return options.lookupProperty(obj, field); + }); +}; + +module.exports = exports['default']; + +}); + +var _with = createCommonjsModule(function (module, exports) { + +exports.__esModule = true; +// istanbul ignore next + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + + + + +var _exception2 = _interopRequireDefault(exception); + +exports['default'] = function (instance) { + instance.registerHelper('with', function (context, options) { + if (arguments.length != 2) { + throw new _exception2['default']('#with requires exactly one argument'); + } + if (utils$2.isFunction(context)) { + context = context.call(this); + } + + var fn = options.fn; + + if (!utils$2.isEmpty(context)) { + var data = options.data; + if (options.data && options.ids) { + data = utils$2.createFrame(options.data); + data.contextPath = utils$2.appendContextPath(options.data.contextPath, options.ids[0]); + } + + return fn(context, { + data: data, + blockParams: utils$2.blockParams([context], [data && data.contextPath]) + }); + } else { + return options.inverse(this); + } + }); +}; + +module.exports = exports['default']; + +}); + +var helpers = createCommonjsModule(function (module, exports) { + +exports.__esModule = true; +exports.registerDefaultHelpers = registerDefaultHelpers; +exports.moveHelperToHooks = moveHelperToHooks; +// istanbul ignore next + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + + +var _helpersBlockHelperMissing2 = _interopRequireDefault(blockHelperMissing); + + + +var _helpersEach2 = _interopRequireDefault(each); + + + +var _helpersHelperMissing2 = _interopRequireDefault(helperMissing); + + + +var _helpersIf2 = _interopRequireDefault(_if); + + + +var _helpersLog2 = _interopRequireDefault(log); + + + +var _helpersLookup2 = _interopRequireDefault(lookup); + + + +var _helpersWith2 = _interopRequireDefault(_with); + +function registerDefaultHelpers(instance) { + _helpersBlockHelperMissing2['default'](instance); + _helpersEach2['default'](instance); + _helpersHelperMissing2['default'](instance); + _helpersIf2['default'](instance); + _helpersLog2['default'](instance); + _helpersLookup2['default'](instance); + _helpersWith2['default'](instance); +} + +function moveHelperToHooks(instance, helperName, keepHelper) { + if (instance.helpers[helperName]) { + instance.hooks[helperName] = instance.helpers[helperName]; + if (!keepHelper) { + delete instance.helpers[helperName]; + } + } +} + +}); + +var inline = createCommonjsModule(function (module, exports) { + +exports.__esModule = true; + + + +exports['default'] = function (instance) { + instance.registerDecorator('inline', function (fn, props, container, options) { + var ret = fn; + if (!props.partials) { + props.partials = {}; + ret = function (context, options) { + // Create a new partials stack frame prior to exec. + var original = container.partials; + container.partials = utils$2.extend({}, original, props.partials); + var ret = fn(context, options); + container.partials = original; + return ret; + }; + } + + props.partials[options.args[0]] = options.fn; + + return ret; + }); +}; + +module.exports = exports['default']; + +}); + +var decorators = createCommonjsModule(function (module, exports) { + +exports.__esModule = true; +exports.registerDefaultDecorators = registerDefaultDecorators; +// istanbul ignore next + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + + +var _decoratorsInline2 = _interopRequireDefault(inline); + +function registerDefaultDecorators(instance) { + _decoratorsInline2['default'](instance); +} + +}); + +var logger_1 = createCommonjsModule(function (module, exports) { + +exports.__esModule = true; + + + +var logger = { + methodMap: ['debug', 'info', 'warn', 'error'], + level: 'info', + + // Maps a given level value to the `methodMap` indexes above. + lookupLevel: function lookupLevel(level) { + if (typeof level === 'string') { + var levelMap = utils$2.indexOf(logger.methodMap, level.toLowerCase()); + if (levelMap >= 0) { + level = levelMap; + } else { + level = parseInt(level, 10); + } + } + + return level; + }, + + // Can be overridden in the host environment + log: function log(level) { + level = logger.lookupLevel(level); + + if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) { + var method = logger.methodMap[level]; + // eslint-disable-next-line no-console + if (!console[method]) { + method = 'log'; + } + + for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + message[_key - 1] = arguments[_key]; + } + + console[method].apply(console, message); // eslint-disable-line no-console + } + } +}; + +exports['default'] = logger; +module.exports = exports['default']; + +}); + +var createNewLookupObject_1 = createCommonjsModule(function (module, exports) { + +exports.__esModule = true; +exports.createNewLookupObject = createNewLookupObject; + + + +/** + * Create a new object with "null"-prototype to avoid truthy results on prototype properties. + * The resulting object can be used with "object[property]" to check if a property exists + * @param {...object} sources a varargs parameter of source objects that will be merged + * @returns {object} + */ + +function createNewLookupObject() { + for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) { + sources[_key] = arguments[_key]; + } + + return utils$2.extend.apply(undefined, [Object.create(null)].concat(sources)); +} + +}); + +var protoAccess = createCommonjsModule(function (module, exports) { + +exports.__esModule = true; +exports.createProtoAccessControl = createProtoAccessControl; +exports.resultIsAllowed = resultIsAllowed; +exports.resetLoggedProperties = resetLoggedProperties; +// istanbul ignore next + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } } + + + + + +var logger = _interopRequireWildcard(logger_1); + +var loggedProperties = Object.create(null); + +function createProtoAccessControl(runtimeOptions) { + var defaultMethodWhiteList = Object.create(null); + defaultMethodWhiteList['constructor'] = false; + defaultMethodWhiteList['__defineGetter__'] = false; + defaultMethodWhiteList['__defineSetter__'] = false; + defaultMethodWhiteList['__lookupGetter__'] = false; + + var defaultPropertyWhiteList = Object.create(null); + // eslint-disable-next-line no-proto + defaultPropertyWhiteList['__proto__'] = false; + + return { + properties: { + whitelist: createNewLookupObject_1.createNewLookupObject(defaultPropertyWhiteList, runtimeOptions.allowedProtoProperties), + defaultValue: runtimeOptions.allowProtoPropertiesByDefault + }, + methods: { + whitelist: createNewLookupObject_1.createNewLookupObject(defaultMethodWhiteList, runtimeOptions.allowedProtoMethods), + defaultValue: runtimeOptions.allowProtoMethodsByDefault + } + }; +} + +function resultIsAllowed(result, protoAccessControl, propertyName) { + if (typeof result === 'function') { + return checkWhiteList(protoAccessControl.methods, propertyName); + } else { + return checkWhiteList(protoAccessControl.properties, propertyName); + } +} + +function checkWhiteList(protoAccessControlForType, propertyName) { + if (protoAccessControlForType.whitelist[propertyName] !== undefined) { + return protoAccessControlForType.whitelist[propertyName] === true; + } + if (protoAccessControlForType.defaultValue !== undefined) { + return protoAccessControlForType.defaultValue; + } + logUnexpecedPropertyAccessOnce(propertyName); + return false; +} + +function logUnexpecedPropertyAccessOnce(propertyName) { + if (loggedProperties[propertyName] !== true) { + loggedProperties[propertyName] = true; + logger.log('error', 'Handlebars: Access has been denied to resolve the property "' + propertyName + '" because it is not an "own property" of its parent.\n' + 'You can add a runtime option to disable the check or this warning:\n' + 'See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details'); + } +} + +function resetLoggedProperties() { + Object.keys(loggedProperties).forEach(function (propertyName) { + delete loggedProperties[propertyName]; + }); +} + +}); + +var base = createCommonjsModule(function (module, exports) { + +exports.__esModule = true; +exports.HandlebarsEnvironment = HandlebarsEnvironment; +// istanbul ignore next + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + + + + +var _exception2 = _interopRequireDefault(exception); + + + + + + + +var _logger2 = _interopRequireDefault(logger_1); + + + +var VERSION = '4.7.6'; +exports.VERSION = VERSION; +var COMPILER_REVISION = 8; +exports.COMPILER_REVISION = COMPILER_REVISION; +var LAST_COMPATIBLE_COMPILER_REVISION = 7; + +exports.LAST_COMPATIBLE_COMPILER_REVISION = LAST_COMPATIBLE_COMPILER_REVISION; +var REVISION_CHANGES = { + 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it + 2: '== 1.0.0-rc.3', + 3: '== 1.0.0-rc.4', + 4: '== 1.x.x', + 5: '== 2.0.0-alpha.x', + 6: '>= 2.0.0-beta.1', + 7: '>= 4.0.0 <4.3.0', + 8: '>= 4.3.0' +}; + +exports.REVISION_CHANGES = REVISION_CHANGES; +var objectType = '[object Object]'; + +function HandlebarsEnvironment(helpers$1, partials, decorators$1) { + this.helpers = helpers$1 || {}; + this.partials = partials || {}; + this.decorators = decorators$1 || {}; + + helpers.registerDefaultHelpers(this); + decorators.registerDefaultDecorators(this); +} + +HandlebarsEnvironment.prototype = { + constructor: HandlebarsEnvironment, + + logger: _logger2['default'], + log: _logger2['default'].log, + + registerHelper: function registerHelper(name, fn) { + if (utils$2.toString.call(name) === objectType) { + if (fn) { + throw new _exception2['default']('Arg not supported with multiple helpers'); + } + utils$2.extend(this.helpers, name); + } else { + this.helpers[name] = fn; + } + }, + unregisterHelper: function unregisterHelper(name) { + delete this.helpers[name]; + }, + + registerPartial: function registerPartial(name, partial) { + if (utils$2.toString.call(name) === objectType) { + utils$2.extend(this.partials, name); + } else { + if (typeof partial === 'undefined') { + throw new _exception2['default']('Attempting to register a partial called "' + name + '" as undefined'); + } + this.partials[name] = partial; + } + }, + unregisterPartial: function unregisterPartial(name) { + delete this.partials[name]; + }, + + registerDecorator: function registerDecorator(name, fn) { + if (utils$2.toString.call(name) === objectType) { + if (fn) { + throw new _exception2['default']('Arg not supported with multiple decorators'); + } + utils$2.extend(this.decorators, name); + } else { + this.decorators[name] = fn; + } + }, + unregisterDecorator: function unregisterDecorator(name) { + delete this.decorators[name]; + }, + /** + * Reset the memory of illegal property accesses that have already been logged. + * @deprecated should only be used in handlebars test-cases + */ + resetLoggedPropertyAccesses: function resetLoggedPropertyAccesses() { + protoAccess.resetLoggedProperties(); + } +}; + +var log = _logger2['default'].log; + +exports.log = log; +exports.createFrame = utils$2.createFrame; +exports.logger = _logger2['default']; + +}); + +var safeString = createCommonjsModule(function (module, exports) { + +exports.__esModule = true; +function SafeString(string) { + this.string = string; +} + +SafeString.prototype.toString = SafeString.prototype.toHTML = function () { + return '' + this.string; +}; + +exports['default'] = SafeString; +module.exports = exports['default']; + +}); + +var wrapHelper_1 = createCommonjsModule(function (module, exports) { + +exports.__esModule = true; +exports.wrapHelper = wrapHelper; + +function wrapHelper(helper, transformOptionsFn) { + if (typeof helper !== 'function') { + // This should not happen, but apparently it does in https://github.com/wycats/handlebars.js/issues/1639 + // We try to make the wrapper least-invasive by not wrapping it, if the helper is not a function. + return helper; + } + var wrapper = function wrapper() /* dynamic arguments */{ + var options = arguments[arguments.length - 1]; + arguments[arguments.length - 1] = transformOptionsFn(options); + return helper.apply(this, arguments); + }; + return wrapper; +} + +}); + +var runtime = createCommonjsModule(function (module, exports) { + +exports.__esModule = true; +exports.checkRevision = checkRevision; +exports.template = template; +exports.wrapProgram = wrapProgram; +exports.resolvePartial = resolvePartial; +exports.invokePartial = invokePartial; +exports.noop = noop; +// istanbul ignore next + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +// istanbul ignore next + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } } + + + +var Utils = _interopRequireWildcard(utils$2); + + + +var _exception2 = _interopRequireDefault(exception); + + + + + + + + + +function checkRevision(compilerInfo) { + var compilerRevision = compilerInfo && compilerInfo[0] || 1, + currentRevision = base.COMPILER_REVISION; + + if (compilerRevision >= base.LAST_COMPATIBLE_COMPILER_REVISION && compilerRevision <= base.COMPILER_REVISION) { + return; + } + + if (compilerRevision < base.LAST_COMPATIBLE_COMPILER_REVISION) { + var runtimeVersions = base.REVISION_CHANGES[currentRevision], + compilerVersions = base.REVISION_CHANGES[compilerRevision]; + throw new _exception2['default']('Template was precompiled with an older version of Handlebars than the current runtime. ' + 'Please update your precompiler to a newer version (' + runtimeVersions + ') or downgrade your runtime to an older version (' + compilerVersions + ').'); + } else { + // Use the embedded version info since the runtime doesn't know about this revision yet + throw new _exception2['default']('Template was precompiled with a newer version of Handlebars than the current runtime. ' + 'Please update your runtime to a newer version (' + compilerInfo[1] + ').'); + } +} + +function template(templateSpec, env) { + /* istanbul ignore next */ + if (!env) { + throw new _exception2['default']('No environment passed to template'); + } + if (!templateSpec || !templateSpec.main) { + throw new _exception2['default']('Unknown template object: ' + typeof templateSpec); + } + + templateSpec.main.decorator = templateSpec.main_d; + + // Note: Using env.VM references rather than local var references throughout this section to allow + // for external users to override these as pseudo-supported APIs. + env.VM.checkRevision(templateSpec.compiler); + + // backwards compatibility for precompiled templates with compiler-version 7 (<4.3.0) + var templateWasPrecompiledWithCompilerV7 = templateSpec.compiler && templateSpec.compiler[0] === 7; + + function invokePartialWrapper(partial, context, options) { + if (options.hash) { + context = Utils.extend({}, context, options.hash); + if (options.ids) { + options.ids[0] = true; + } + } + partial = env.VM.resolvePartial.call(this, partial, context, options); + + var extendedOptions = Utils.extend({}, options, { + hooks: this.hooks, + protoAccessControl: this.protoAccessControl + }); + + var result = env.VM.invokePartial.call(this, partial, context, extendedOptions); + + if (result == null && env.compile) { + options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env); + result = options.partials[options.name](context, extendedOptions); + } + if (result != null) { + if (options.indent) { + var lines = result.split('\n'); + for (var i = 0, l = lines.length; i < l; i++) { + if (!lines[i] && i + 1 === l) { + break; + } + + lines[i] = options.indent + lines[i]; + } + result = lines.join('\n'); + } + return result; + } else { + throw new _exception2['default']('The partial ' + options.name + ' could not be compiled when running in runtime-only mode'); + } + } + + // Just add water + var container = { + strict: function strict(obj, name, loc) { + if (!obj || !(name in obj)) { + throw new _exception2['default']('"' + name + '" not defined in ' + obj, { + loc: loc + }); + } + return obj[name]; + }, + lookupProperty: function lookupProperty(parent, propertyName) { + var result = parent[propertyName]; + if (result == null) { + return result; + } + if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { + return result; + } + + if (protoAccess.resultIsAllowed(result, container.protoAccessControl, propertyName)) { + return result; + } + return undefined; + }, + lookup: function lookup(depths, name) { + var len = depths.length; + for (var i = 0; i < len; i++) { + var result = depths[i] && container.lookupProperty(depths[i], name); + if (result != null) { + return depths[i][name]; + } + } + }, + lambda: function lambda(current, context) { + return typeof current === 'function' ? current.call(context) : current; + }, + + escapeExpression: Utils.escapeExpression, + invokePartial: invokePartialWrapper, + + fn: function fn(i) { + var ret = templateSpec[i]; + ret.decorator = templateSpec[i + '_d']; + return ret; + }, + + programs: [], + program: function program(i, data, declaredBlockParams, blockParams, depths) { + var programWrapper = this.programs[i], + fn = this.fn(i); + if (data || depths || blockParams || declaredBlockParams) { + programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths); + } else if (!programWrapper) { + programWrapper = this.programs[i] = wrapProgram(this, i, fn); + } + return programWrapper; + }, + + data: function data(value, depth) { + while (value && depth--) { + value = value._parent; + } + return value; + }, + mergeIfNeeded: function mergeIfNeeded(param, common) { + var obj = param || common; + + if (param && common && param !== common) { + obj = Utils.extend({}, common, param); + } + + return obj; + }, + // An empty object to use as replacement for null-contexts + nullContext: Object.seal({}), + + noop: env.VM.noop, + compilerInfo: templateSpec.compiler + }; + + function ret(context) { + var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; + + var data = options.data; + + ret._setup(options); + if (!options.partial && templateSpec.useData) { + data = initData(context, data); + } + var depths = undefined, + blockParams = templateSpec.useBlockParams ? [] : undefined; + if (templateSpec.useDepths) { + if (options.depths) { + depths = context != options.depths[0] ? [context].concat(options.depths) : options.depths; + } else { + depths = [context]; + } + } + + function main(context /*, options*/) { + return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths); + } + + main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams); + return main(context, options); + } + + ret.isTop = true; + + ret._setup = function (options) { + if (!options.partial) { + var mergedHelpers = Utils.extend({}, env.helpers, options.helpers); + wrapHelpersToPassLookupProperty(mergedHelpers, container); + container.helpers = mergedHelpers; + + if (templateSpec.usePartial) { + // Use mergeIfNeeded here to prevent compiling global partials multiple times + container.partials = container.mergeIfNeeded(options.partials, env.partials); + } + if (templateSpec.usePartial || templateSpec.useDecorators) { + container.decorators = Utils.extend({}, env.decorators, options.decorators); + } + + container.hooks = {}; + container.protoAccessControl = protoAccess.createProtoAccessControl(options); + + var keepHelperInHelpers = options.allowCallsToHelperMissing || templateWasPrecompiledWithCompilerV7; + helpers.moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers); + helpers.moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers); + } else { + container.protoAccessControl = options.protoAccessControl; // internal option + container.helpers = options.helpers; + container.partials = options.partials; + container.decorators = options.decorators; + container.hooks = options.hooks; + } + }; + + ret._child = function (i, data, blockParams, depths) { + if (templateSpec.useBlockParams && !blockParams) { + throw new _exception2['default']('must pass block params'); + } + if (templateSpec.useDepths && !depths) { + throw new _exception2['default']('must pass parent depths'); + } + + return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths); + }; + return ret; +} + +function wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) { + function prog(context) { + var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; + + var currentDepths = depths; + if (depths && context != depths[0] && !(context === container.nullContext && depths[0] === null)) { + currentDepths = [context].concat(depths); + } + + return fn(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), currentDepths); + } + + prog = executeDecorators(fn, prog, container, depths, data, blockParams); + + prog.program = i; + prog.depth = depths ? depths.length : 0; + prog.blockParams = declaredBlockParams || 0; + return prog; +} + +/** + * This is currently part of the official API, therefore implementation details should not be changed. + */ + +function resolvePartial(partial, context, options) { + if (!partial) { + if (options.name === '@partial-block') { + partial = options.data['partial-block']; + } else { + partial = options.partials[options.name]; + } + } else if (!partial.call && !options.name) { + // This is a dynamic partial that returned a string + options.name = partial; + partial = options.partials[partial]; + } + return partial; +} + +function invokePartial(partial, context, options) { + // Use the current closure context to save the partial-block if this partial + var currentPartialBlock = options.data && options.data['partial-block']; + options.partial = true; + if (options.ids) { + options.data.contextPath = options.ids[0] || options.data.contextPath; + } + + var partialBlock = undefined; + if (options.fn && options.fn !== noop) { + (function () { + options.data = base.createFrame(options.data); + // Wrapper function to get access to currentPartialBlock from the closure + var fn = options.fn; + partialBlock = options.data['partial-block'] = function partialBlockWrapper(context) { + var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; + + // Restore the partial-block from the closure for the execution of the block + // i.e. the part inside the block of the partial call. + options.data = base.createFrame(options.data); + options.data['partial-block'] = currentPartialBlock; + return fn(context, options); + }; + if (fn.partials) { + options.partials = Utils.extend({}, options.partials, fn.partials); + } + })(); + } + + if (partial === undefined && partialBlock) { + partial = partialBlock; + } + + if (partial === undefined) { + throw new _exception2['default']('The partial ' + options.name + ' could not be found'); + } else if (partial instanceof Function) { + return partial(context, options); + } +} + +function noop() { + return ''; +} + +function initData(context, data) { + if (!data || !('root' in data)) { + data = data ? base.createFrame(data) : {}; + data.root = context; + } + return data; +} + +function executeDecorators(fn, prog, container, depths, data, blockParams) { + if (fn.decorator) { + var props = {}; + prog = fn.decorator(prog, props, container, depths && depths[0], data, blockParams, depths); + Utils.extend(prog, props); + } + return prog; +} + +function wrapHelpersToPassLookupProperty(mergedHelpers, container) { + Object.keys(mergedHelpers).forEach(function (helperName) { + var helper = mergedHelpers[helperName]; + mergedHelpers[helperName] = passLookupPropertyOption(helper, container); + }); +} + +function passLookupPropertyOption(helper, container) { + var lookupProperty = container.lookupProperty; + return wrapHelper_1.wrapHelper(helper, function (options) { + return Utils.extend({ lookupProperty: lookupProperty }, options); + }); +} + +}); + +var noConflict = createCommonjsModule(function (module, exports) { + +exports.__esModule = true; + +exports['default'] = function (Handlebars) { + /* istanbul ignore next */ + var root = typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : window, + $Handlebars = root.Handlebars; + /* istanbul ignore next */ + Handlebars.noConflict = function () { + if (root.Handlebars === Handlebars) { + root.Handlebars = $Handlebars; + } + return Handlebars; + }; +}; + +module.exports = exports['default']; + +}); + +var handlebars_runtime = createCommonjsModule(function (module, exports) { + +exports.__esModule = true; +// istanbul ignore next + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + +// istanbul ignore next + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } } + + + +var base$1 = _interopRequireWildcard(base); + +// Each of these augment the Handlebars object. No need to setup here. +// (This is done to easily share code between commonjs and browse envs) + + + +var _handlebarsSafeString2 = _interopRequireDefault(safeString); + + + +var _handlebarsException2 = _interopRequireDefault(exception); + + + +var Utils = _interopRequireWildcard(utils$2); + + + +var runtime$1 = _interopRequireWildcard(runtime); + + + +var _handlebarsNoConflict2 = _interopRequireDefault(noConflict); + +// For compatibility and usage outside of module systems, make the Handlebars object a namespace +function create() { + var hb = new base$1.HandlebarsEnvironment(); + + Utils.extend(hb, base$1); + hb.SafeString = _handlebarsSafeString2['default']; + hb.Exception = _handlebarsException2['default']; + hb.Utils = Utils; + hb.escapeExpression = Utils.escapeExpression; + + hb.VM = runtime$1; + hb.template = function (spec) { + return runtime$1.template(spec, hb); + }; + + return hb; +} + +var inst = create(); +inst.create = create; + +_handlebarsNoConflict2['default'](inst); + +inst['default'] = inst; + +exports['default'] = inst; +module.exports = exports['default']; + +}); + +var ast = createCommonjsModule(function (module, exports) { + +exports.__esModule = true; +var AST = { + // Public API used to evaluate derived attributes regarding AST nodes + helpers: { + // a mustache is definitely a helper if: + // * it is an eligible helper, and + // * it has at least one parameter or hash segment + helperExpression: function helperExpression(node) { + return node.type === 'SubExpression' || (node.type === 'MustacheStatement' || node.type === 'BlockStatement') && !!(node.params && node.params.length || node.hash); + }, + + scopedId: function scopedId(path) { + return (/^\.|this\b/.test(path.original) + ); + }, + + // an ID is simple if it only has one part, and that part is not + // `..` or `this`. + simpleId: function simpleId(path) { + return path.parts.length === 1 && !AST.helpers.scopedId(path) && !path.depth; + } + } +}; + +// Must be exported as an object rather than the root of the module as the jison lexer +// must modify the object to operate properly. +exports['default'] = AST; +module.exports = exports['default']; + +}); + +var parser = createCommonjsModule(function (module, exports) { + +exports.__esModule = true; +var handlebars = (function () { + var parser = { trace: function trace() {}, + yy: {}, + symbols_: { "error": 2, "root": 3, "program": 4, "EOF": 5, "program_repetition0": 6, "statement": 7, "mustache": 8, "block": 9, "rawBlock": 10, "partial": 11, "partialBlock": 12, "content": 13, "COMMENT": 14, "CONTENT": 15, "openRawBlock": 16, "rawBlock_repetition0": 17, "END_RAW_BLOCK": 18, "OPEN_RAW_BLOCK": 19, "helperName": 20, "openRawBlock_repetition0": 21, "openRawBlock_option0": 22, "CLOSE_RAW_BLOCK": 23, "openBlock": 24, "block_option0": 25, "closeBlock": 26, "openInverse": 27, "block_option1": 28, "OPEN_BLOCK": 29, "openBlock_repetition0": 30, "openBlock_option0": 31, "openBlock_option1": 32, "CLOSE": 33, "OPEN_INVERSE": 34, "openInverse_repetition0": 35, "openInverse_option0": 36, "openInverse_option1": 37, "openInverseChain": 38, "OPEN_INVERSE_CHAIN": 39, "openInverseChain_repetition0": 40, "openInverseChain_option0": 41, "openInverseChain_option1": 42, "inverseAndProgram": 43, "INVERSE": 44, "inverseChain": 45, "inverseChain_option0": 46, "OPEN_ENDBLOCK": 47, "OPEN": 48, "mustache_repetition0": 49, "mustache_option0": 50, "OPEN_UNESCAPED": 51, "mustache_repetition1": 52, "mustache_option1": 53, "CLOSE_UNESCAPED": 54, "OPEN_PARTIAL": 55, "partialName": 56, "partial_repetition0": 57, "partial_option0": 58, "openPartialBlock": 59, "OPEN_PARTIAL_BLOCK": 60, "openPartialBlock_repetition0": 61, "openPartialBlock_option0": 62, "param": 63, "sexpr": 64, "OPEN_SEXPR": 65, "sexpr_repetition0": 66, "sexpr_option0": 67, "CLOSE_SEXPR": 68, "hash": 69, "hash_repetition_plus0": 70, "hashSegment": 71, "ID": 72, "EQUALS": 73, "blockParams": 74, "OPEN_BLOCK_PARAMS": 75, "blockParams_repetition_plus0": 76, "CLOSE_BLOCK_PARAMS": 77, "path": 78, "dataName": 79, "STRING": 80, "NUMBER": 81, "BOOLEAN": 82, "UNDEFINED": 83, "NULL": 84, "DATA": 85, "pathSegments": 86, "SEP": 87, "$accept": 0, "$end": 1 }, + terminals_: { 2: "error", 5: "EOF", 14: "COMMENT", 15: "CONTENT", 18: "END_RAW_BLOCK", 19: "OPEN_RAW_BLOCK", 23: "CLOSE_RAW_BLOCK", 29: "OPEN_BLOCK", 33: "CLOSE", 34: "OPEN_INVERSE", 39: "OPEN_INVERSE_CHAIN", 44: "INVERSE", 47: "OPEN_ENDBLOCK", 48: "OPEN", 51: "OPEN_UNESCAPED", 54: "CLOSE_UNESCAPED", 55: "OPEN_PARTIAL", 60: "OPEN_PARTIAL_BLOCK", 65: "OPEN_SEXPR", 68: "CLOSE_SEXPR", 72: "ID", 73: "EQUALS", 75: "OPEN_BLOCK_PARAMS", 77: "CLOSE_BLOCK_PARAMS", 80: "STRING", 81: "NUMBER", 82: "BOOLEAN", 83: "UNDEFINED", 84: "NULL", 85: "DATA", 87: "SEP" }, + productions_: [0, [3, 2], [4, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [13, 1], [10, 3], [16, 5], [9, 4], [9, 4], [24, 6], [27, 6], [38, 6], [43, 2], [45, 3], [45, 1], [26, 3], [8, 5], [8, 5], [11, 5], [12, 3], [59, 5], [63, 1], [63, 1], [64, 5], [69, 1], [71, 3], [74, 3], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [56, 1], [56, 1], [79, 2], [78, 1], [86, 3], [86, 1], [6, 0], [6, 2], [17, 0], [17, 2], [21, 0], [21, 2], [22, 0], [22, 1], [25, 0], [25, 1], [28, 0], [28, 1], [30, 0], [30, 2], [31, 0], [31, 1], [32, 0], [32, 1], [35, 0], [35, 2], [36, 0], [36, 1], [37, 0], [37, 1], [40, 0], [40, 2], [41, 0], [41, 1], [42, 0], [42, 1], [46, 0], [46, 1], [49, 0], [49, 2], [50, 0], [50, 1], [52, 0], [52, 2], [53, 0], [53, 1], [57, 0], [57, 2], [58, 0], [58, 1], [61, 0], [61, 2], [62, 0], [62, 1], [66, 0], [66, 2], [67, 0], [67, 1], [70, 1], [70, 2], [76, 1], [76, 2]], + performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) { + + var $0 = $$.length - 1; + switch (yystate) { + case 1: + return $$[$0 - 1]; + case 2: + this.$ = yy.prepareProgram($$[$0]); + break; + case 3: + this.$ = $$[$0]; + break; + case 4: + this.$ = $$[$0]; + break; + case 5: + this.$ = $$[$0]; + break; + case 6: + this.$ = $$[$0]; + break; + case 7: + this.$ = $$[$0]; + break; + case 8: + this.$ = $$[$0]; + break; + case 9: + this.$ = { + type: 'CommentStatement', + value: yy.stripComment($$[$0]), + strip: yy.stripFlags($$[$0], $$[$0]), + loc: yy.locInfo(this._$) + }; + + break; + case 10: + this.$ = { + type: 'ContentStatement', + original: $$[$0], + value: $$[$0], + loc: yy.locInfo(this._$) + }; + + break; + case 11: + this.$ = yy.prepareRawBlock($$[$0 - 2], $$[$0 - 1], $$[$0], this._$); + break; + case 12: + this.$ = { path: $$[$0 - 3], params: $$[$0 - 2], hash: $$[$0 - 1] }; + break; + case 13: + this.$ = yy.prepareBlock($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0], false, this._$); + break; + case 14: + this.$ = yy.prepareBlock($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0], true, this._$); + break; + case 15: + this.$ = { open: $$[$0 - 5], path: $$[$0 - 4], params: $$[$0 - 3], hash: $$[$0 - 2], blockParams: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 5], $$[$0]) }; + break; + case 16: + this.$ = { path: $$[$0 - 4], params: $$[$0 - 3], hash: $$[$0 - 2], blockParams: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 5], $$[$0]) }; + break; + case 17: + this.$ = { path: $$[$0 - 4], params: $$[$0 - 3], hash: $$[$0 - 2], blockParams: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 5], $$[$0]) }; + break; + case 18: + this.$ = { strip: yy.stripFlags($$[$0 - 1], $$[$0 - 1]), program: $$[$0] }; + break; + case 19: + var inverse = yy.prepareBlock($$[$0 - 2], $$[$0 - 1], $$[$0], $$[$0], false, this._$), + program = yy.prepareProgram([inverse], $$[$0 - 1].loc); + program.chained = true; + + this.$ = { strip: $$[$0 - 2].strip, program: program, chain: true }; + + break; + case 20: + this.$ = $$[$0]; + break; + case 21: + this.$ = { path: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 2], $$[$0]) }; + break; + case 22: + this.$ = yy.prepareMustache($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0 - 4], yy.stripFlags($$[$0 - 4], $$[$0]), this._$); + break; + case 23: + this.$ = yy.prepareMustache($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0 - 4], yy.stripFlags($$[$0 - 4], $$[$0]), this._$); + break; + case 24: + this.$ = { + type: 'PartialStatement', + name: $$[$0 - 3], + params: $$[$0 - 2], + hash: $$[$0 - 1], + indent: '', + strip: yy.stripFlags($$[$0 - 4], $$[$0]), + loc: yy.locInfo(this._$) + }; + + break; + case 25: + this.$ = yy.preparePartialBlock($$[$0 - 2], $$[$0 - 1], $$[$0], this._$); + break; + case 26: + this.$ = { path: $$[$0 - 3], params: $$[$0 - 2], hash: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 4], $$[$0]) }; + break; + case 27: + this.$ = $$[$0]; + break; + case 28: + this.$ = $$[$0]; + break; + case 29: + this.$ = { + type: 'SubExpression', + path: $$[$0 - 3], + params: $$[$0 - 2], + hash: $$[$0 - 1], + loc: yy.locInfo(this._$) + }; + + break; + case 30: + this.$ = { type: 'Hash', pairs: $$[$0], loc: yy.locInfo(this._$) }; + break; + case 31: + this.$ = { type: 'HashPair', key: yy.id($$[$0 - 2]), value: $$[$0], loc: yy.locInfo(this._$) }; + break; + case 32: + this.$ = yy.id($$[$0 - 1]); + break; + case 33: + this.$ = $$[$0]; + break; + case 34: + this.$ = $$[$0]; + break; + case 35: + this.$ = { type: 'StringLiteral', value: $$[$0], original: $$[$0], loc: yy.locInfo(this._$) }; + break; + case 36: + this.$ = { type: 'NumberLiteral', value: Number($$[$0]), original: Number($$[$0]), loc: yy.locInfo(this._$) }; + break; + case 37: + this.$ = { type: 'BooleanLiteral', value: $$[$0] === 'true', original: $$[$0] === 'true', loc: yy.locInfo(this._$) }; + break; + case 38: + this.$ = { type: 'UndefinedLiteral', original: undefined, value: undefined, loc: yy.locInfo(this._$) }; + break; + case 39: + this.$ = { type: 'NullLiteral', original: null, value: null, loc: yy.locInfo(this._$) }; + break; + case 40: + this.$ = $$[$0]; + break; + case 41: + this.$ = $$[$0]; + break; + case 42: + this.$ = yy.preparePath(true, $$[$0], this._$); + break; + case 43: + this.$ = yy.preparePath(false, $$[$0], this._$); + break; + case 44: + $$[$0 - 2].push({ part: yy.id($$[$0]), original: $$[$0], separator: $$[$0 - 1] });this.$ = $$[$0 - 2]; + break; + case 45: + this.$ = [{ part: yy.id($$[$0]), original: $$[$0] }]; + break; + case 46: + this.$ = []; + break; + case 47: + $$[$0 - 1].push($$[$0]); + break; + case 48: + this.$ = []; + break; + case 49: + $$[$0 - 1].push($$[$0]); + break; + case 50: + this.$ = []; + break; + case 51: + $$[$0 - 1].push($$[$0]); + break; + case 58: + this.$ = []; + break; + case 59: + $$[$0 - 1].push($$[$0]); + break; + case 64: + this.$ = []; + break; + case 65: + $$[$0 - 1].push($$[$0]); + break; + case 70: + this.$ = []; + break; + case 71: + $$[$0 - 1].push($$[$0]); + break; + case 78: + this.$ = []; + break; + case 79: + $$[$0 - 1].push($$[$0]); + break; + case 82: + this.$ = []; + break; + case 83: + $$[$0 - 1].push($$[$0]); + break; + case 86: + this.$ = []; + break; + case 87: + $$[$0 - 1].push($$[$0]); + break; + case 90: + this.$ = []; + break; + case 91: + $$[$0 - 1].push($$[$0]); + break; + case 94: + this.$ = []; + break; + case 95: + $$[$0 - 1].push($$[$0]); + break; + case 98: + this.$ = [$$[$0]]; + break; + case 99: + $$[$0 - 1].push($$[$0]); + break; + case 100: + this.$ = [$$[$0]]; + break; + case 101: + $$[$0 - 1].push($$[$0]); + break; + } + }, + table: [{ 3: 1, 4: 2, 5: [2, 46], 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 1: [3] }, { 5: [1, 4] }, { 5: [2, 2], 7: 5, 8: 6, 9: 7, 10: 8, 11: 9, 12: 10, 13: 11, 14: [1, 12], 15: [1, 20], 16: 17, 19: [1, 23], 24: 15, 27: 16, 29: [1, 21], 34: [1, 22], 39: [2, 2], 44: [2, 2], 47: [2, 2], 48: [1, 13], 51: [1, 14], 55: [1, 18], 59: 19, 60: [1, 24] }, { 1: [2, 1] }, { 5: [2, 47], 14: [2, 47], 15: [2, 47], 19: [2, 47], 29: [2, 47], 34: [2, 47], 39: [2, 47], 44: [2, 47], 47: [2, 47], 48: [2, 47], 51: [2, 47], 55: [2, 47], 60: [2, 47] }, { 5: [2, 3], 14: [2, 3], 15: [2, 3], 19: [2, 3], 29: [2, 3], 34: [2, 3], 39: [2, 3], 44: [2, 3], 47: [2, 3], 48: [2, 3], 51: [2, 3], 55: [2, 3], 60: [2, 3] }, { 5: [2, 4], 14: [2, 4], 15: [2, 4], 19: [2, 4], 29: [2, 4], 34: [2, 4], 39: [2, 4], 44: [2, 4], 47: [2, 4], 48: [2, 4], 51: [2, 4], 55: [2, 4], 60: [2, 4] }, { 5: [2, 5], 14: [2, 5], 15: [2, 5], 19: [2, 5], 29: [2, 5], 34: [2, 5], 39: [2, 5], 44: [2, 5], 47: [2, 5], 48: [2, 5], 51: [2, 5], 55: [2, 5], 60: [2, 5] }, { 5: [2, 6], 14: [2, 6], 15: [2, 6], 19: [2, 6], 29: [2, 6], 34: [2, 6], 39: [2, 6], 44: [2, 6], 47: [2, 6], 48: [2, 6], 51: [2, 6], 55: [2, 6], 60: [2, 6] }, { 5: [2, 7], 14: [2, 7], 15: [2, 7], 19: [2, 7], 29: [2, 7], 34: [2, 7], 39: [2, 7], 44: [2, 7], 47: [2, 7], 48: [2, 7], 51: [2, 7], 55: [2, 7], 60: [2, 7] }, { 5: [2, 8], 14: [2, 8], 15: [2, 8], 19: [2, 8], 29: [2, 8], 34: [2, 8], 39: [2, 8], 44: [2, 8], 47: [2, 8], 48: [2, 8], 51: [2, 8], 55: [2, 8], 60: [2, 8] }, { 5: [2, 9], 14: [2, 9], 15: [2, 9], 19: [2, 9], 29: [2, 9], 34: [2, 9], 39: [2, 9], 44: [2, 9], 47: [2, 9], 48: [2, 9], 51: [2, 9], 55: [2, 9], 60: [2, 9] }, { 20: 25, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 36, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 4: 37, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 39: [2, 46], 44: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 4: 38, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 44: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 15: [2, 48], 17: 39, 18: [2, 48] }, { 20: 41, 56: 40, 64: 42, 65: [1, 43], 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 4: 44, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 5: [2, 10], 14: [2, 10], 15: [2, 10], 18: [2, 10], 19: [2, 10], 29: [2, 10], 34: [2, 10], 39: [2, 10], 44: [2, 10], 47: [2, 10], 48: [2, 10], 51: [2, 10], 55: [2, 10], 60: [2, 10] }, { 20: 45, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 46, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 47, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 41, 56: 48, 64: 42, 65: [1, 43], 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 33: [2, 78], 49: 49, 65: [2, 78], 72: [2, 78], 80: [2, 78], 81: [2, 78], 82: [2, 78], 83: [2, 78], 84: [2, 78], 85: [2, 78] }, { 23: [2, 33], 33: [2, 33], 54: [2, 33], 65: [2, 33], 68: [2, 33], 72: [2, 33], 75: [2, 33], 80: [2, 33], 81: [2, 33], 82: [2, 33], 83: [2, 33], 84: [2, 33], 85: [2, 33] }, { 23: [2, 34], 33: [2, 34], 54: [2, 34], 65: [2, 34], 68: [2, 34], 72: [2, 34], 75: [2, 34], 80: [2, 34], 81: [2, 34], 82: [2, 34], 83: [2, 34], 84: [2, 34], 85: [2, 34] }, { 23: [2, 35], 33: [2, 35], 54: [2, 35], 65: [2, 35], 68: [2, 35], 72: [2, 35], 75: [2, 35], 80: [2, 35], 81: [2, 35], 82: [2, 35], 83: [2, 35], 84: [2, 35], 85: [2, 35] }, { 23: [2, 36], 33: [2, 36], 54: [2, 36], 65: [2, 36], 68: [2, 36], 72: [2, 36], 75: [2, 36], 80: [2, 36], 81: [2, 36], 82: [2, 36], 83: [2, 36], 84: [2, 36], 85: [2, 36] }, { 23: [2, 37], 33: [2, 37], 54: [2, 37], 65: [2, 37], 68: [2, 37], 72: [2, 37], 75: [2, 37], 80: [2, 37], 81: [2, 37], 82: [2, 37], 83: [2, 37], 84: [2, 37], 85: [2, 37] }, { 23: [2, 38], 33: [2, 38], 54: [2, 38], 65: [2, 38], 68: [2, 38], 72: [2, 38], 75: [2, 38], 80: [2, 38], 81: [2, 38], 82: [2, 38], 83: [2, 38], 84: [2, 38], 85: [2, 38] }, { 23: [2, 39], 33: [2, 39], 54: [2, 39], 65: [2, 39], 68: [2, 39], 72: [2, 39], 75: [2, 39], 80: [2, 39], 81: [2, 39], 82: [2, 39], 83: [2, 39], 84: [2, 39], 85: [2, 39] }, { 23: [2, 43], 33: [2, 43], 54: [2, 43], 65: [2, 43], 68: [2, 43], 72: [2, 43], 75: [2, 43], 80: [2, 43], 81: [2, 43], 82: [2, 43], 83: [2, 43], 84: [2, 43], 85: [2, 43], 87: [1, 50] }, { 72: [1, 35], 86: 51 }, { 23: [2, 45], 33: [2, 45], 54: [2, 45], 65: [2, 45], 68: [2, 45], 72: [2, 45], 75: [2, 45], 80: [2, 45], 81: [2, 45], 82: [2, 45], 83: [2, 45], 84: [2, 45], 85: [2, 45], 87: [2, 45] }, { 52: 52, 54: [2, 82], 65: [2, 82], 72: [2, 82], 80: [2, 82], 81: [2, 82], 82: [2, 82], 83: [2, 82], 84: [2, 82], 85: [2, 82] }, { 25: 53, 38: 55, 39: [1, 57], 43: 56, 44: [1, 58], 45: 54, 47: [2, 54] }, { 28: 59, 43: 60, 44: [1, 58], 47: [2, 56] }, { 13: 62, 15: [1, 20], 18: [1, 61] }, { 33: [2, 86], 57: 63, 65: [2, 86], 72: [2, 86], 80: [2, 86], 81: [2, 86], 82: [2, 86], 83: [2, 86], 84: [2, 86], 85: [2, 86] }, { 33: [2, 40], 65: [2, 40], 72: [2, 40], 80: [2, 40], 81: [2, 40], 82: [2, 40], 83: [2, 40], 84: [2, 40], 85: [2, 40] }, { 33: [2, 41], 65: [2, 41], 72: [2, 41], 80: [2, 41], 81: [2, 41], 82: [2, 41], 83: [2, 41], 84: [2, 41], 85: [2, 41] }, { 20: 64, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 26: 65, 47: [1, 66] }, { 30: 67, 33: [2, 58], 65: [2, 58], 72: [2, 58], 75: [2, 58], 80: [2, 58], 81: [2, 58], 82: [2, 58], 83: [2, 58], 84: [2, 58], 85: [2, 58] }, { 33: [2, 64], 35: 68, 65: [2, 64], 72: [2, 64], 75: [2, 64], 80: [2, 64], 81: [2, 64], 82: [2, 64], 83: [2, 64], 84: [2, 64], 85: [2, 64] }, { 21: 69, 23: [2, 50], 65: [2, 50], 72: [2, 50], 80: [2, 50], 81: [2, 50], 82: [2, 50], 83: [2, 50], 84: [2, 50], 85: [2, 50] }, { 33: [2, 90], 61: 70, 65: [2, 90], 72: [2, 90], 80: [2, 90], 81: [2, 90], 82: [2, 90], 83: [2, 90], 84: [2, 90], 85: [2, 90] }, { 20: 74, 33: [2, 80], 50: 71, 63: 72, 64: 75, 65: [1, 43], 69: 73, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 72: [1, 79] }, { 23: [2, 42], 33: [2, 42], 54: [2, 42], 65: [2, 42], 68: [2, 42], 72: [2, 42], 75: [2, 42], 80: [2, 42], 81: [2, 42], 82: [2, 42], 83: [2, 42], 84: [2, 42], 85: [2, 42], 87: [1, 50] }, { 20: 74, 53: 80, 54: [2, 84], 63: 81, 64: 75, 65: [1, 43], 69: 82, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 26: 83, 47: [1, 66] }, { 47: [2, 55] }, { 4: 84, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 39: [2, 46], 44: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 47: [2, 20] }, { 20: 85, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 4: 86, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 26: 87, 47: [1, 66] }, { 47: [2, 57] }, { 5: [2, 11], 14: [2, 11], 15: [2, 11], 19: [2, 11], 29: [2, 11], 34: [2, 11], 39: [2, 11], 44: [2, 11], 47: [2, 11], 48: [2, 11], 51: [2, 11], 55: [2, 11], 60: [2, 11] }, { 15: [2, 49], 18: [2, 49] }, { 20: 74, 33: [2, 88], 58: 88, 63: 89, 64: 75, 65: [1, 43], 69: 90, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 65: [2, 94], 66: 91, 68: [2, 94], 72: [2, 94], 80: [2, 94], 81: [2, 94], 82: [2, 94], 83: [2, 94], 84: [2, 94], 85: [2, 94] }, { 5: [2, 25], 14: [2, 25], 15: [2, 25], 19: [2, 25], 29: [2, 25], 34: [2, 25], 39: [2, 25], 44: [2, 25], 47: [2, 25], 48: [2, 25], 51: [2, 25], 55: [2, 25], 60: [2, 25] }, { 20: 92, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 74, 31: 93, 33: [2, 60], 63: 94, 64: 75, 65: [1, 43], 69: 95, 70: 76, 71: 77, 72: [1, 78], 75: [2, 60], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 74, 33: [2, 66], 36: 96, 63: 97, 64: 75, 65: [1, 43], 69: 98, 70: 76, 71: 77, 72: [1, 78], 75: [2, 66], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 74, 22: 99, 23: [2, 52], 63: 100, 64: 75, 65: [1, 43], 69: 101, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 74, 33: [2, 92], 62: 102, 63: 103, 64: 75, 65: [1, 43], 69: 104, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 33: [1, 105] }, { 33: [2, 79], 65: [2, 79], 72: [2, 79], 80: [2, 79], 81: [2, 79], 82: [2, 79], 83: [2, 79], 84: [2, 79], 85: [2, 79] }, { 33: [2, 81] }, { 23: [2, 27], 33: [2, 27], 54: [2, 27], 65: [2, 27], 68: [2, 27], 72: [2, 27], 75: [2, 27], 80: [2, 27], 81: [2, 27], 82: [2, 27], 83: [2, 27], 84: [2, 27], 85: [2, 27] }, { 23: [2, 28], 33: [2, 28], 54: [2, 28], 65: [2, 28], 68: [2, 28], 72: [2, 28], 75: [2, 28], 80: [2, 28], 81: [2, 28], 82: [2, 28], 83: [2, 28], 84: [2, 28], 85: [2, 28] }, { 23: [2, 30], 33: [2, 30], 54: [2, 30], 68: [2, 30], 71: 106, 72: [1, 107], 75: [2, 30] }, { 23: [2, 98], 33: [2, 98], 54: [2, 98], 68: [2, 98], 72: [2, 98], 75: [2, 98] }, { 23: [2, 45], 33: [2, 45], 54: [2, 45], 65: [2, 45], 68: [2, 45], 72: [2, 45], 73: [1, 108], 75: [2, 45], 80: [2, 45], 81: [2, 45], 82: [2, 45], 83: [2, 45], 84: [2, 45], 85: [2, 45], 87: [2, 45] }, { 23: [2, 44], 33: [2, 44], 54: [2, 44], 65: [2, 44], 68: [2, 44], 72: [2, 44], 75: [2, 44], 80: [2, 44], 81: [2, 44], 82: [2, 44], 83: [2, 44], 84: [2, 44], 85: [2, 44], 87: [2, 44] }, { 54: [1, 109] }, { 54: [2, 83], 65: [2, 83], 72: [2, 83], 80: [2, 83], 81: [2, 83], 82: [2, 83], 83: [2, 83], 84: [2, 83], 85: [2, 83] }, { 54: [2, 85] }, { 5: [2, 13], 14: [2, 13], 15: [2, 13], 19: [2, 13], 29: [2, 13], 34: [2, 13], 39: [2, 13], 44: [2, 13], 47: [2, 13], 48: [2, 13], 51: [2, 13], 55: [2, 13], 60: [2, 13] }, { 38: 55, 39: [1, 57], 43: 56, 44: [1, 58], 45: 111, 46: 110, 47: [2, 76] }, { 33: [2, 70], 40: 112, 65: [2, 70], 72: [2, 70], 75: [2, 70], 80: [2, 70], 81: [2, 70], 82: [2, 70], 83: [2, 70], 84: [2, 70], 85: [2, 70] }, { 47: [2, 18] }, { 5: [2, 14], 14: [2, 14], 15: [2, 14], 19: [2, 14], 29: [2, 14], 34: [2, 14], 39: [2, 14], 44: [2, 14], 47: [2, 14], 48: [2, 14], 51: [2, 14], 55: [2, 14], 60: [2, 14] }, { 33: [1, 113] }, { 33: [2, 87], 65: [2, 87], 72: [2, 87], 80: [2, 87], 81: [2, 87], 82: [2, 87], 83: [2, 87], 84: [2, 87], 85: [2, 87] }, { 33: [2, 89] }, { 20: 74, 63: 115, 64: 75, 65: [1, 43], 67: 114, 68: [2, 96], 69: 116, 70: 76, 71: 77, 72: [1, 78], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 33: [1, 117] }, { 32: 118, 33: [2, 62], 74: 119, 75: [1, 120] }, { 33: [2, 59], 65: [2, 59], 72: [2, 59], 75: [2, 59], 80: [2, 59], 81: [2, 59], 82: [2, 59], 83: [2, 59], 84: [2, 59], 85: [2, 59] }, { 33: [2, 61], 75: [2, 61] }, { 33: [2, 68], 37: 121, 74: 122, 75: [1, 120] }, { 33: [2, 65], 65: [2, 65], 72: [2, 65], 75: [2, 65], 80: [2, 65], 81: [2, 65], 82: [2, 65], 83: [2, 65], 84: [2, 65], 85: [2, 65] }, { 33: [2, 67], 75: [2, 67] }, { 23: [1, 123] }, { 23: [2, 51], 65: [2, 51], 72: [2, 51], 80: [2, 51], 81: [2, 51], 82: [2, 51], 83: [2, 51], 84: [2, 51], 85: [2, 51] }, { 23: [2, 53] }, { 33: [1, 124] }, { 33: [2, 91], 65: [2, 91], 72: [2, 91], 80: [2, 91], 81: [2, 91], 82: [2, 91], 83: [2, 91], 84: [2, 91], 85: [2, 91] }, { 33: [2, 93] }, { 5: [2, 22], 14: [2, 22], 15: [2, 22], 19: [2, 22], 29: [2, 22], 34: [2, 22], 39: [2, 22], 44: [2, 22], 47: [2, 22], 48: [2, 22], 51: [2, 22], 55: [2, 22], 60: [2, 22] }, { 23: [2, 99], 33: [2, 99], 54: [2, 99], 68: [2, 99], 72: [2, 99], 75: [2, 99] }, { 73: [1, 108] }, { 20: 74, 63: 125, 64: 75, 65: [1, 43], 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 5: [2, 23], 14: [2, 23], 15: [2, 23], 19: [2, 23], 29: [2, 23], 34: [2, 23], 39: [2, 23], 44: [2, 23], 47: [2, 23], 48: [2, 23], 51: [2, 23], 55: [2, 23], 60: [2, 23] }, { 47: [2, 19] }, { 47: [2, 77] }, { 20: 74, 33: [2, 72], 41: 126, 63: 127, 64: 75, 65: [1, 43], 69: 128, 70: 76, 71: 77, 72: [1, 78], 75: [2, 72], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 5: [2, 24], 14: [2, 24], 15: [2, 24], 19: [2, 24], 29: [2, 24], 34: [2, 24], 39: [2, 24], 44: [2, 24], 47: [2, 24], 48: [2, 24], 51: [2, 24], 55: [2, 24], 60: [2, 24] }, { 68: [1, 129] }, { 65: [2, 95], 68: [2, 95], 72: [2, 95], 80: [2, 95], 81: [2, 95], 82: [2, 95], 83: [2, 95], 84: [2, 95], 85: [2, 95] }, { 68: [2, 97] }, { 5: [2, 21], 14: [2, 21], 15: [2, 21], 19: [2, 21], 29: [2, 21], 34: [2, 21], 39: [2, 21], 44: [2, 21], 47: [2, 21], 48: [2, 21], 51: [2, 21], 55: [2, 21], 60: [2, 21] }, { 33: [1, 130] }, { 33: [2, 63] }, { 72: [1, 132], 76: 131 }, { 33: [1, 133] }, { 33: [2, 69] }, { 15: [2, 12], 18: [2, 12] }, { 14: [2, 26], 15: [2, 26], 19: [2, 26], 29: [2, 26], 34: [2, 26], 47: [2, 26], 48: [2, 26], 51: [2, 26], 55: [2, 26], 60: [2, 26] }, { 23: [2, 31], 33: [2, 31], 54: [2, 31], 68: [2, 31], 72: [2, 31], 75: [2, 31] }, { 33: [2, 74], 42: 134, 74: 135, 75: [1, 120] }, { 33: [2, 71], 65: [2, 71], 72: [2, 71], 75: [2, 71], 80: [2, 71], 81: [2, 71], 82: [2, 71], 83: [2, 71], 84: [2, 71], 85: [2, 71] }, { 33: [2, 73], 75: [2, 73] }, { 23: [2, 29], 33: [2, 29], 54: [2, 29], 65: [2, 29], 68: [2, 29], 72: [2, 29], 75: [2, 29], 80: [2, 29], 81: [2, 29], 82: [2, 29], 83: [2, 29], 84: [2, 29], 85: [2, 29] }, { 14: [2, 15], 15: [2, 15], 19: [2, 15], 29: [2, 15], 34: [2, 15], 39: [2, 15], 44: [2, 15], 47: [2, 15], 48: [2, 15], 51: [2, 15], 55: [2, 15], 60: [2, 15] }, { 72: [1, 137], 77: [1, 136] }, { 72: [2, 100], 77: [2, 100] }, { 14: [2, 16], 15: [2, 16], 19: [2, 16], 29: [2, 16], 34: [2, 16], 44: [2, 16], 47: [2, 16], 48: [2, 16], 51: [2, 16], 55: [2, 16], 60: [2, 16] }, { 33: [1, 138] }, { 33: [2, 75] }, { 33: [2, 32] }, { 72: [2, 101], 77: [2, 101] }, { 14: [2, 17], 15: [2, 17], 19: [2, 17], 29: [2, 17], 34: [2, 17], 39: [2, 17], 44: [2, 17], 47: [2, 17], 48: [2, 17], 51: [2, 17], 55: [2, 17], 60: [2, 17] }], + defaultActions: { 4: [2, 1], 54: [2, 55], 56: [2, 20], 60: [2, 57], 73: [2, 81], 82: [2, 85], 86: [2, 18], 90: [2, 89], 101: [2, 53], 104: [2, 93], 110: [2, 19], 111: [2, 77], 116: [2, 97], 119: [2, 63], 122: [2, 69], 135: [2, 75], 136: [2, 32] }, + parseError: function parseError(str, hash) { + throw new Error(str); + }, + parse: function parse(input) { + var self = this, + stack = [0], + vstack = [null], + lstack = [], + table = this.table, + yytext = "", + yylineno = 0, + yyleng = 0, + recovering = 0; + this.lexer.setInput(input); + this.lexer.yy = this.yy; + this.yy.lexer = this.lexer; + this.yy.parser = this; + if (typeof this.lexer.yylloc == "undefined") this.lexer.yylloc = {}; + var yyloc = this.lexer.yylloc; + lstack.push(yyloc); + var ranges = this.lexer.options && this.lexer.options.ranges; + if (typeof this.yy.parseError === "function") this.parseError = this.yy.parseError; + function lex() { + var token; + token = self.lexer.lex() || 1; + if (typeof token !== "number") { + token = self.symbols_[token] || token; + } + return token; + } + var symbol, + state, + action, + r, + yyval = {}, + p, + len, + newState, + expected; + while (true) { + state = stack[stack.length - 1]; + if (this.defaultActions[state]) { + action = this.defaultActions[state]; + } else { + if (symbol === null || typeof symbol == "undefined") { + symbol = lex(); + } + action = table[state] && table[state][symbol]; + } + if (typeof action === "undefined" || !action.length || !action[0]) { + var errStr = ""; + if (!recovering) { + expected = []; + for (p in table[state]) if (this.terminals_[p] && p > 2) { + expected.push("'" + this.terminals_[p] + "'"); + } + if (this.lexer.showPosition) { + errStr = "Parse error on line " + (yylineno + 1) + ":\n" + this.lexer.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; + } else { + errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == 1 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"); + } + this.parseError(errStr, { text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected }); + } + } + if (action[0] instanceof Array && action.length > 1) { + throw new Error("Parse Error: multiple actions possible at state: " + state + ", token: " + symbol); + } + switch (action[0]) { + case 1: + stack.push(symbol); + vstack.push(this.lexer.yytext); + lstack.push(this.lexer.yylloc); + stack.push(action[1]); + symbol = null; + { + yyleng = this.lexer.yyleng; + yytext = this.lexer.yytext; + yylineno = this.lexer.yylineno; + yyloc = this.lexer.yylloc; + if (recovering > 0) recovering--; + } + break; + case 2: + len = this.productions_[action[1]][1]; + yyval.$ = vstack[vstack.length - len]; + yyval._$ = { first_line: lstack[lstack.length - (len || 1)].first_line, last_line: lstack[lstack.length - 1].last_line, first_column: lstack[lstack.length - (len || 1)].first_column, last_column: lstack[lstack.length - 1].last_column }; + if (ranges) { + yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]]; + } + r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack); + if (typeof r !== "undefined") { + return r; + } + if (len) { + stack = stack.slice(0, -1 * len * 2); + vstack = vstack.slice(0, -1 * len); + lstack = lstack.slice(0, -1 * len); + } + stack.push(this.productions_[action[1]][0]); + vstack.push(yyval.$); + lstack.push(yyval._$); + newState = table[stack[stack.length - 2]][stack[stack.length - 1]]; + stack.push(newState); + break; + case 3: + return true; + } + } + return true; + } + }; + /* Jison generated lexer */ + var lexer = (function () { + var lexer = { EOF: 1, + parseError: function parseError(str, hash) { + if (this.yy.parser) { + this.yy.parser.parseError(str, hash); + } else { + throw new Error(str); + } + }, + setInput: function setInput(input) { + this._input = input; + this._more = this._less = this.done = false; + this.yylineno = this.yyleng = 0; + this.yytext = this.matched = this.match = ''; + this.conditionStack = ['INITIAL']; + this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 }; + if (this.options.ranges) this.yylloc.range = [0, 0]; + this.offset = 0; + return this; + }, + input: function input() { + var ch = this._input[0]; + this.yytext += ch; + this.yyleng++; + this.offset++; + this.match += ch; + this.matched += ch; + var lines = ch.match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno++; + this.yylloc.last_line++; + } else { + this.yylloc.last_column++; + } + if (this.options.ranges) this.yylloc.range[1]++; + + this._input = this._input.slice(1); + return ch; + }, + unput: function unput(ch) { + var len = ch.length; + var lines = ch.split(/(?:\r\n?|\n)/g); + + this._input = ch + this._input; + this.yytext = this.yytext.substr(0, this.yytext.length - len - 1); + //this.yyleng -= len; + this.offset -= len; + var oldLines = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1); + this.matched = this.matched.substr(0, this.matched.length - 1); + + if (lines.length - 1) this.yylineno -= lines.length - 1; + var r = this.yylloc.range; + + this.yylloc = { first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len + }; + + if (this.options.ranges) { + this.yylloc.range = [r[0], r[0] + this.yyleng - len]; + } + return this; + }, + more: function more() { + this._more = true; + return this; + }, + less: function less(n) { + this.unput(this.match.slice(n)); + }, + pastInput: function pastInput() { + var past = this.matched.substr(0, this.matched.length - this.match.length); + return (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\n/g, ""); + }, + upcomingInput: function upcomingInput() { + var next = this.match; + if (next.length < 20) { + next += this._input.substr(0, 20 - next.length); + } + return (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\n/g, ""); + }, + showPosition: function showPosition() { + var pre = this.pastInput(); + var c = new Array(pre.length + 1).join("-"); + return pre + this.upcomingInput() + "\n" + c + "^"; + }, + next: function next() { + if (this.done) { + return this.EOF; + } + if (!this._input) this.done = true; + + var token, match, tempMatch, index, lines; + if (!this._more) { + this.yytext = ''; + this.match = ''; + } + var rules = this._currentRules(); + for (var i = 0; i < rules.length; i++) { + tempMatch = this._input.match(this.rules[rules[i]]); + if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { + match = tempMatch; + index = i; + if (!this.options.flex) break; + } + } + if (match) { + lines = match[0].match(/(?:\r\n?|\n).*/g); + if (lines) this.yylineno += lines.length; + this.yylloc = { first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match[0].length }; + this.yytext += match[0]; + this.match += match[0]; + this.matches = match; + this.yyleng = this.yytext.length; + if (this.options.ranges) { + this.yylloc.range = [this.offset, this.offset += this.yyleng]; + } + this._more = false; + this._input = this._input.slice(match[0].length); + this.matched += match[0]; + token = this.performAction.call(this, this.yy, this, rules[index], this.conditionStack[this.conditionStack.length - 1]); + if (this.done && this._input) this.done = false; + if (token) return token;else return; + } + if (this._input === "") { + return this.EOF; + } else { + return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), { text: "", token: null, line: this.yylineno }); + } + }, + lex: function lex() { + var r = this.next(); + if (typeof r !== 'undefined') { + return r; + } else { + return this.lex(); + } + }, + begin: function begin(condition) { + this.conditionStack.push(condition); + }, + popState: function popState() { + return this.conditionStack.pop(); + }, + _currentRules: function _currentRules() { + return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; + }, + topState: function topState() { + return this.conditionStack[this.conditionStack.length - 2]; + }, + pushState: function begin(condition) { + this.begin(condition); + } }; + lexer.options = {}; + lexer.performAction = function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) { + + function strip(start, end) { + return yy_.yytext = yy_.yytext.substring(start, yy_.yyleng - end + start); + } + switch ($avoiding_name_collisions) { + case 0: + if (yy_.yytext.slice(-2) === "\\\\") { + strip(0, 1); + this.begin("mu"); + } else if (yy_.yytext.slice(-1) === "\\") { + strip(0, 1); + this.begin("emu"); + } else { + this.begin("mu"); + } + if (yy_.yytext) return 15; + + break; + case 1: + return 15; + case 2: + this.popState(); + return 15; + case 3: + this.begin('raw');return 15; + case 4: + this.popState(); + // Should be using `this.topState()` below, but it currently + // returns the second top instead of the first top. Opened an + // issue about it at https://github.com/zaach/jison/issues/291 + if (this.conditionStack[this.conditionStack.length - 1] === 'raw') { + return 15; + } else { + strip(5, 9); + return 'END_RAW_BLOCK'; + } + case 5: + return 15; + case 6: + this.popState(); + return 14; + case 7: + return 65; + case 8: + return 68; + case 9: + return 19; + case 10: + this.popState(); + this.begin('raw'); + return 23; + case 11: + return 55; + case 12: + return 60; + case 13: + return 29; + case 14: + return 47; + case 15: + this.popState();return 44; + case 16: + this.popState();return 44; + case 17: + return 34; + case 18: + return 39; + case 19: + return 51; + case 20: + return 48; + case 21: + this.unput(yy_.yytext); + this.popState(); + this.begin('com'); + + break; + case 22: + this.popState(); + return 14; + case 23: + return 48; + case 24: + return 73; + case 25: + return 72; + case 26: + return 72; + case 27: + return 87; + case 28: + // ignore whitespace + break; + case 29: + this.popState();return 54; + case 30: + this.popState();return 33; + case 31: + yy_.yytext = strip(1, 2).replace(/\\"/g, '"');return 80; + case 32: + yy_.yytext = strip(1, 2).replace(/\\'/g, "'");return 80; + case 33: + return 85; + case 34: + return 82; + case 35: + return 82; + case 36: + return 83; + case 37: + return 84; + case 38: + return 81; + case 39: + return 75; + case 40: + return 77; + case 41: + return 72; + case 42: + yy_.yytext = yy_.yytext.replace(/\\([\\\]])/g, '$1');return 72; + case 43: + return 'INVALID'; + case 44: + return 5; + } + }; + lexer.rules = [/^(?:[^\x00]*?(?=(\{\{)))/, /^(?:[^\x00]+)/, /^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/, /^(?:\{\{\{\{(?=[^\/]))/, /^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/, /^(?:[^\x00]+?(?=(\{\{\{\{)))/, /^(?:[\s\S]*?--(~)?\}\})/, /^(?:\()/, /^(?:\))/, /^(?:\{\{\{\{)/, /^(?:\}\}\}\})/, /^(?:\{\{(~)?>)/, /^(?:\{\{(~)?#>)/, /^(?:\{\{(~)?#\*?)/, /^(?:\{\{(~)?\/)/, /^(?:\{\{(~)?\^\s*(~)?\}\})/, /^(?:\{\{(~)?\s*else\s*(~)?\}\})/, /^(?:\{\{(~)?\^)/, /^(?:\{\{(~)?\s*else\b)/, /^(?:\{\{(~)?\{)/, /^(?:\{\{(~)?&)/, /^(?:\{\{(~)?!--)/, /^(?:\{\{(~)?![\s\S]*?\}\})/, /^(?:\{\{(~)?\*?)/, /^(?:=)/, /^(?:\.\.)/, /^(?:\.(?=([=~}\s\/.)|])))/, /^(?:[\/.])/, /^(?:\s+)/, /^(?:\}(~)?\}\})/, /^(?:(~)?\}\})/, /^(?:"(\\["]|[^"])*")/, /^(?:'(\\[']|[^'])*')/, /^(?:@)/, /^(?:true(?=([~}\s)])))/, /^(?:false(?=([~}\s)])))/, /^(?:undefined(?=([~}\s)])))/, /^(?:null(?=([~}\s)])))/, /^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/, /^(?:as\s+\|)/, /^(?:\|)/, /^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/, /^(?:\[(\\\]|[^\]])*\])/, /^(?:.)/, /^(?:$)/]; + lexer.conditions = { "mu": { "rules": [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44], "inclusive": false }, "emu": { "rules": [2], "inclusive": false }, "com": { "rules": [6], "inclusive": false }, "raw": { "rules": [3, 4, 5], "inclusive": false }, "INITIAL": { "rules": [0, 1, 44], "inclusive": true } }; + return lexer; + })(); + parser.lexer = lexer; + function Parser() { + this.yy = {}; + }Parser.prototype = parser;parser.Parser = Parser; + return new Parser(); +})();exports["default"] = handlebars; +module.exports = exports["default"]; + +}); + +var visitor = createCommonjsModule(function (module, exports) { + +exports.__esModule = true; +// istanbul ignore next + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + + +var _exception2 = _interopRequireDefault(exception); + +function Visitor() { + this.parents = []; +} + +Visitor.prototype = { + constructor: Visitor, + mutating: false, + + // Visits a given value. If mutating, will replace the value if necessary. + acceptKey: function acceptKey(node, name) { + var value = this.accept(node[name]); + if (this.mutating) { + // Hacky sanity check: This may have a few false positives for type for the helper + // methods but will generally do the right thing without a lot of overhead. + if (value && !Visitor.prototype[value.type]) { + throw new _exception2['default']('Unexpected node type "' + value.type + '" found when accepting ' + name + ' on ' + node.type); + } + node[name] = value; + } + }, + + // Performs an accept operation with added sanity check to ensure + // required keys are not removed. + acceptRequired: function acceptRequired(node, name) { + this.acceptKey(node, name); + + if (!node[name]) { + throw new _exception2['default'](node.type + ' requires ' + name); + } + }, + + // Traverses a given array. If mutating, empty respnses will be removed + // for child elements. + acceptArray: function acceptArray(array) { + for (var i = 0, l = array.length; i < l; i++) { + this.acceptKey(array, i); + + if (!array[i]) { + array.splice(i, 1); + i--; + l--; + } + } + }, + + accept: function accept(object) { + if (!object) { + return; + } + + /* istanbul ignore next: Sanity code */ + if (!this[object.type]) { + throw new _exception2['default']('Unknown type: ' + object.type, object); + } + + if (this.current) { + this.parents.unshift(this.current); + } + this.current = object; + + var ret = this[object.type](object); + + this.current = this.parents.shift(); + + if (!this.mutating || ret) { + return ret; + } else if (ret !== false) { + return object; + } + }, + + Program: function Program(program) { + this.acceptArray(program.body); + }, + + MustacheStatement: visitSubExpression, + Decorator: visitSubExpression, + + BlockStatement: visitBlock, + DecoratorBlock: visitBlock, + + PartialStatement: visitPartial, + PartialBlockStatement: function PartialBlockStatement(partial) { + visitPartial.call(this, partial); + + this.acceptKey(partial, 'program'); + }, + + ContentStatement: function ContentStatement() /* content */{}, + CommentStatement: function CommentStatement() /* comment */{}, + + SubExpression: visitSubExpression, + + PathExpression: function PathExpression() /* path */{}, + + StringLiteral: function StringLiteral() /* string */{}, + NumberLiteral: function NumberLiteral() /* number */{}, + BooleanLiteral: function BooleanLiteral() /* bool */{}, + UndefinedLiteral: function UndefinedLiteral() /* literal */{}, + NullLiteral: function NullLiteral() /* literal */{}, + + Hash: function Hash(hash) { + this.acceptArray(hash.pairs); + }, + HashPair: function HashPair(pair) { + this.acceptRequired(pair, 'value'); + } +}; + +function visitSubExpression(mustache) { + this.acceptRequired(mustache, 'path'); + this.acceptArray(mustache.params); + this.acceptKey(mustache, 'hash'); +} +function visitBlock(block) { + visitSubExpression.call(this, block); + + this.acceptKey(block, 'program'); + this.acceptKey(block, 'inverse'); +} +function visitPartial(partial) { + this.acceptRequired(partial, 'name'); + this.acceptArray(partial.params); + this.acceptKey(partial, 'hash'); +} + +exports['default'] = Visitor; +module.exports = exports['default']; + +}); + +var whitespaceControl = createCommonjsModule(function (module, exports) { + +exports.__esModule = true; +// istanbul ignore next + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + + +var _visitor2 = _interopRequireDefault(visitor); + +function WhitespaceControl() { + var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; + + this.options = options; +} +WhitespaceControl.prototype = new _visitor2['default'](); + +WhitespaceControl.prototype.Program = function (program) { + var doStandalone = !this.options.ignoreStandalone; + + var isRoot = !this.isRootSeen; + this.isRootSeen = true; + + var body = program.body; + for (var i = 0, l = body.length; i < l; i++) { + var current = body[i], + strip = this.accept(current); + + if (!strip) { + continue; + } + + var _isPrevWhitespace = isPrevWhitespace(body, i, isRoot), + _isNextWhitespace = isNextWhitespace(body, i, isRoot), + openStandalone = strip.openStandalone && _isPrevWhitespace, + closeStandalone = strip.closeStandalone && _isNextWhitespace, + inlineStandalone = strip.inlineStandalone && _isPrevWhitespace && _isNextWhitespace; + + if (strip.close) { + omitRight(body, i, true); + } + if (strip.open) { + omitLeft(body, i, true); + } + + if (doStandalone && inlineStandalone) { + omitRight(body, i); + + if (omitLeft(body, i)) { + // If we are on a standalone node, save the indent info for partials + if (current.type === 'PartialStatement') { + // Pull out the whitespace from the final line + current.indent = /([ \t]+$)/.exec(body[i - 1].original)[1]; + } + } + } + if (doStandalone && openStandalone) { + omitRight((current.program || current.inverse).body); + + // Strip out the previous content node if it's whitespace only + omitLeft(body, i); + } + if (doStandalone && closeStandalone) { + // Always strip the next node + omitRight(body, i); + + omitLeft((current.inverse || current.program).body); + } + } + + return program; +}; + +WhitespaceControl.prototype.BlockStatement = WhitespaceControl.prototype.DecoratorBlock = WhitespaceControl.prototype.PartialBlockStatement = function (block) { + this.accept(block.program); + this.accept(block.inverse); + + // Find the inverse program that is involed with whitespace stripping. + var program = block.program || block.inverse, + inverse = block.program && block.inverse, + firstInverse = inverse, + lastInverse = inverse; + + if (inverse && inverse.chained) { + firstInverse = inverse.body[0].program; + + // Walk the inverse chain to find the last inverse that is actually in the chain. + while (lastInverse.chained) { + lastInverse = lastInverse.body[lastInverse.body.length - 1].program; + } + } + + var strip = { + open: block.openStrip.open, + close: block.closeStrip.close, + + // Determine the standalone candiacy. Basically flag our content as being possibly standalone + // so our parent can determine if we actually are standalone + openStandalone: isNextWhitespace(program.body), + closeStandalone: isPrevWhitespace((firstInverse || program).body) + }; + + if (block.openStrip.close) { + omitRight(program.body, null, true); + } + + if (inverse) { + var inverseStrip = block.inverseStrip; + + if (inverseStrip.open) { + omitLeft(program.body, null, true); + } + + if (inverseStrip.close) { + omitRight(firstInverse.body, null, true); + } + if (block.closeStrip.open) { + omitLeft(lastInverse.body, null, true); + } + + // Find standalone else statments + if (!this.options.ignoreStandalone && isPrevWhitespace(program.body) && isNextWhitespace(firstInverse.body)) { + omitLeft(program.body); + omitRight(firstInverse.body); + } + } else if (block.closeStrip.open) { + omitLeft(program.body, null, true); + } + + return strip; +}; + +WhitespaceControl.prototype.Decorator = WhitespaceControl.prototype.MustacheStatement = function (mustache) { + return mustache.strip; +}; + +WhitespaceControl.prototype.PartialStatement = WhitespaceControl.prototype.CommentStatement = function (node) { + /* istanbul ignore next */ + var strip = node.strip || {}; + return { + inlineStandalone: true, + open: strip.open, + close: strip.close + }; +}; + +function isPrevWhitespace(body, i, isRoot) { + if (i === undefined) { + i = body.length; + } + + // Nodes that end with newlines are considered whitespace (but are special + // cased for strip operations) + var prev = body[i - 1], + sibling = body[i - 2]; + if (!prev) { + return isRoot; + } + + if (prev.type === 'ContentStatement') { + return (sibling || !isRoot ? /\r?\n\s*?$/ : /(^|\r?\n)\s*?$/).test(prev.original); + } +} +function isNextWhitespace(body, i, isRoot) { + if (i === undefined) { + i = -1; + } + + var next = body[i + 1], + sibling = body[i + 2]; + if (!next) { + return isRoot; + } + + if (next.type === 'ContentStatement') { + return (sibling || !isRoot ? /^\s*?\r?\n/ : /^\s*?(\r?\n|$)/).test(next.original); + } +} + +// Marks the node to the right of the position as omitted. +// I.e. {{foo}}' ' will mark the ' ' node as omitted. +// +// If i is undefined, then the first child will be marked as such. +// +// If mulitple is truthy then all whitespace will be stripped out until non-whitespace +// content is met. +function omitRight(body, i, multiple) { + var current = body[i == null ? 0 : i + 1]; + if (!current || current.type !== 'ContentStatement' || !multiple && current.rightStripped) { + return; + } + + var original = current.value; + current.value = current.value.replace(multiple ? /^\s+/ : /^[ \t]*\r?\n?/, ''); + current.rightStripped = current.value !== original; +} + +// Marks the node to the left of the position as omitted. +// I.e. ' '{{foo}} will mark the ' ' node as omitted. +// +// If i is undefined then the last child will be marked as such. +// +// If mulitple is truthy then all whitespace will be stripped out until non-whitespace +// content is met. +function omitLeft(body, i, multiple) { + var current = body[i == null ? body.length - 1 : i - 1]; + if (!current || current.type !== 'ContentStatement' || !multiple && current.leftStripped) { + return; + } + + // We omit the last node if it's whitespace only and not preceded by a non-content node. + var original = current.value; + current.value = current.value.replace(multiple ? /\s+$/ : /[ \t]+$/, ''); + current.leftStripped = current.value !== original; + return current.leftStripped; +} + +exports['default'] = WhitespaceControl; +module.exports = exports['default']; + +}); + +var helpers$1 = createCommonjsModule(function (module, exports) { + +exports.__esModule = true; +exports.SourceLocation = SourceLocation; +exports.id = id; +exports.stripFlags = stripFlags; +exports.stripComment = stripComment; +exports.preparePath = preparePath; +exports.prepareMustache = prepareMustache; +exports.prepareRawBlock = prepareRawBlock; +exports.prepareBlock = prepareBlock; +exports.prepareProgram = prepareProgram; +exports.preparePartialBlock = preparePartialBlock; +// istanbul ignore next + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + + +var _exception2 = _interopRequireDefault(exception); + +function validateClose(open, close) { + close = close.path ? close.path.original : close; + + if (open.path.original !== close) { + var errorNode = { loc: open.path.loc }; + + throw new _exception2['default'](open.path.original + " doesn't match " + close, errorNode); + } +} + +function SourceLocation(source, locInfo) { + this.source = source; + this.start = { + line: locInfo.first_line, + column: locInfo.first_column + }; + this.end = { + line: locInfo.last_line, + column: locInfo.last_column + }; +} + +function id(token) { + if (/^\[.*\]$/.test(token)) { + return token.substring(1, token.length - 1); + } else { + return token; + } +} + +function stripFlags(open, close) { + return { + open: open.charAt(2) === '~', + close: close.charAt(close.length - 3) === '~' + }; +} + +function stripComment(comment) { + return comment.replace(/^\{\{~?!-?-?/, '').replace(/-?-?~?\}\}$/, ''); +} + +function preparePath(data, parts, loc) { + loc = this.locInfo(loc); + + var original = data ? '@' : '', + dig = [], + depth = 0; + + for (var i = 0, l = parts.length; i < l; i++) { + var part = parts[i].part, + + // If we have [] syntax then we do not treat path references as operators, + // i.e. foo.[this] resolves to approximately context.foo['this'] + isLiteral = parts[i].original !== part; + original += (parts[i].separator || '') + part; + + if (!isLiteral && (part === '..' || part === '.' || part === 'this')) { + if (dig.length > 0) { + throw new _exception2['default']('Invalid path: ' + original, { loc: loc }); + } else if (part === '..') { + depth++; + } + } else { + dig.push(part); + } + } + + return { + type: 'PathExpression', + data: data, + depth: depth, + parts: dig, + original: original, + loc: loc + }; +} + +function prepareMustache(path, params, hash, open, strip, locInfo) { + // Must use charAt to support IE pre-10 + var escapeFlag = open.charAt(3) || open.charAt(2), + escaped = escapeFlag !== '{' && escapeFlag !== '&'; + + var decorator = /\*/.test(open); + return { + type: decorator ? 'Decorator' : 'MustacheStatement', + path: path, + params: params, + hash: hash, + escaped: escaped, + strip: strip, + loc: this.locInfo(locInfo) + }; +} + +function prepareRawBlock(openRawBlock, contents, close, locInfo) { + validateClose(openRawBlock, close); + + locInfo = this.locInfo(locInfo); + var program = { + type: 'Program', + body: contents, + strip: {}, + loc: locInfo + }; + + return { + type: 'BlockStatement', + path: openRawBlock.path, + params: openRawBlock.params, + hash: openRawBlock.hash, + program: program, + openStrip: {}, + inverseStrip: {}, + closeStrip: {}, + loc: locInfo + }; +} + +function prepareBlock(openBlock, program, inverseAndProgram, close, inverted, locInfo) { + if (close && close.path) { + validateClose(openBlock, close); + } + + var decorator = /\*/.test(openBlock.open); + + program.blockParams = openBlock.blockParams; + + var inverse = undefined, + inverseStrip = undefined; + + if (inverseAndProgram) { + if (decorator) { + throw new _exception2['default']('Unexpected inverse block on decorator', inverseAndProgram); + } + + if (inverseAndProgram.chain) { + inverseAndProgram.program.body[0].closeStrip = close.strip; + } + + inverseStrip = inverseAndProgram.strip; + inverse = inverseAndProgram.program; + } + + if (inverted) { + inverted = inverse; + inverse = program; + program = inverted; + } + + return { + type: decorator ? 'DecoratorBlock' : 'BlockStatement', + path: openBlock.path, + params: openBlock.params, + hash: openBlock.hash, + program: program, + inverse: inverse, + openStrip: openBlock.strip, + inverseStrip: inverseStrip, + closeStrip: close && close.strip, + loc: this.locInfo(locInfo) + }; +} + +function prepareProgram(statements, loc) { + if (!loc && statements.length) { + var firstLoc = statements[0].loc, + lastLoc = statements[statements.length - 1].loc; + + /* istanbul ignore else */ + if (firstLoc && lastLoc) { + loc = { + source: firstLoc.source, + start: { + line: firstLoc.start.line, + column: firstLoc.start.column + }, + end: { + line: lastLoc.end.line, + column: lastLoc.end.column + } + }; + } + } + + return { + type: 'Program', + body: statements, + strip: {}, + loc: loc + }; +} + +function preparePartialBlock(open, program, close, locInfo) { + validateClose(open, close); + + return { + type: 'PartialBlockStatement', + name: open.path, + params: open.params, + hash: open.hash, + program: program, + openStrip: open.strip, + closeStrip: close && close.strip, + loc: this.locInfo(locInfo) + }; +} + +}); + +var base$1 = createCommonjsModule(function (module, exports) { + +exports.__esModule = true; +exports.parseWithoutProcessing = parseWithoutProcessing; +exports.parse = parse; +// istanbul ignore next + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } } + +// istanbul ignore next + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + + +var _parser2 = _interopRequireDefault(parser); + + + +var _whitespaceControl2 = _interopRequireDefault(whitespaceControl); + + + +var Helpers = _interopRequireWildcard(helpers$1); + + + +exports.parser = _parser2['default']; + +var yy = {}; +utils$2.extend(yy, Helpers); + +function parseWithoutProcessing(input, options) { + // Just return if an already-compiled AST was passed in. + if (input.type === 'Program') { + return input; + } + + _parser2['default'].yy = yy; + + // Altering the shared object here, but this is ok as parser is a sync operation + yy.locInfo = function (locInfo) { + return new yy.SourceLocation(options && options.srcName, locInfo); + }; + + var ast = _parser2['default'].parse(input); + + return ast; +} + +function parse(input, options) { + var ast = parseWithoutProcessing(input, options); + var strip = new _whitespaceControl2['default'](options); + + return strip.accept(ast); +} + +}); + +var compiler = createCommonjsModule(function (module, exports) { + +exports.__esModule = true; +exports.Compiler = Compiler; +exports.precompile = precompile; +exports.compile = compile; +// istanbul ignore next + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + + +var _exception2 = _interopRequireDefault(exception); + + + + + +var _ast2 = _interopRequireDefault(ast); + +var slice = [].slice; + +function Compiler() {} + +// the foundHelper register will disambiguate helper lookup from finding a +// function in a context. This is necessary for mustache compatibility, which +// requires that context functions in blocks are evaluated by blockHelperMissing, +// and then proceed as if the resulting value was provided to blockHelperMissing. + +Compiler.prototype = { + compiler: Compiler, + + equals: function equals(other) { + var len = this.opcodes.length; + if (other.opcodes.length !== len) { + return false; + } + + for (var i = 0; i < len; i++) { + var opcode = this.opcodes[i], + otherOpcode = other.opcodes[i]; + if (opcode.opcode !== otherOpcode.opcode || !argEquals(opcode.args, otherOpcode.args)) { + return false; + } + } + + // We know that length is the same between the two arrays because they are directly tied + // to the opcode behavior above. + len = this.children.length; + for (var i = 0; i < len; i++) { + if (!this.children[i].equals(other.children[i])) { + return false; + } + } + + return true; + }, + + guid: 0, + + compile: function compile(program, options) { + this.sourceNode = []; + this.opcodes = []; + this.children = []; + this.options = options; + this.stringParams = options.stringParams; + this.trackIds = options.trackIds; + + options.blockParams = options.blockParams || []; + + options.knownHelpers = utils$2.extend(Object.create(null), { + helperMissing: true, + blockHelperMissing: true, + each: true, + 'if': true, + unless: true, + 'with': true, + log: true, + lookup: true + }, options.knownHelpers); + + return this.accept(program); + }, + + compileProgram: function compileProgram(program) { + var childCompiler = new this.compiler(), + // eslint-disable-line new-cap + result = childCompiler.compile(program, this.options), + guid = this.guid++; + + this.usePartial = this.usePartial || result.usePartial; + + this.children[guid] = result; + this.useDepths = this.useDepths || result.useDepths; + + return guid; + }, + + accept: function accept(node) { + /* istanbul ignore next: Sanity code */ + if (!this[node.type]) { + throw new _exception2['default']('Unknown type: ' + node.type, node); + } + + this.sourceNode.unshift(node); + var ret = this[node.type](node); + this.sourceNode.shift(); + return ret; + }, + + Program: function Program(program) { + this.options.blockParams.unshift(program.blockParams); + + var body = program.body, + bodyLength = body.length; + for (var i = 0; i < bodyLength; i++) { + this.accept(body[i]); + } + + this.options.blockParams.shift(); + + this.isSimple = bodyLength === 1; + this.blockParams = program.blockParams ? program.blockParams.length : 0; + + return this; + }, + + BlockStatement: function BlockStatement(block) { + transformLiteralToPath(block); + + var program = block.program, + inverse = block.inverse; + + program = program && this.compileProgram(program); + inverse = inverse && this.compileProgram(inverse); + + var type = this.classifySexpr(block); + + if (type === 'helper') { + this.helperSexpr(block, program, inverse); + } else if (type === 'simple') { + this.simpleSexpr(block); + + // now that the simple mustache is resolved, we need to + // evaluate it by executing `blockHelperMissing` + this.opcode('pushProgram', program); + this.opcode('pushProgram', inverse); + this.opcode('emptyHash'); + this.opcode('blockValue', block.path.original); + } else { + this.ambiguousSexpr(block, program, inverse); + + // now that the simple mustache is resolved, we need to + // evaluate it by executing `blockHelperMissing` + this.opcode('pushProgram', program); + this.opcode('pushProgram', inverse); + this.opcode('emptyHash'); + this.opcode('ambiguousBlockValue'); + } + + this.opcode('append'); + }, + + DecoratorBlock: function DecoratorBlock(decorator) { + var program = decorator.program && this.compileProgram(decorator.program); + var params = this.setupFullMustacheParams(decorator, program, undefined), + path = decorator.path; + + this.useDecorators = true; + this.opcode('registerDecorator', params.length, path.original); + }, + + PartialStatement: function PartialStatement(partial) { + this.usePartial = true; + + var program = partial.program; + if (program) { + program = this.compileProgram(partial.program); + } + + var params = partial.params; + if (params.length > 1) { + throw new _exception2['default']('Unsupported number of partial arguments: ' + params.length, partial); + } else if (!params.length) { + if (this.options.explicitPartialContext) { + this.opcode('pushLiteral', 'undefined'); + } else { + params.push({ type: 'PathExpression', parts: [], depth: 0 }); + } + } + + var partialName = partial.name.original, + isDynamic = partial.name.type === 'SubExpression'; + if (isDynamic) { + this.accept(partial.name); + } + + this.setupFullMustacheParams(partial, program, undefined, true); + + var indent = partial.indent || ''; + if (this.options.preventIndent && indent) { + this.opcode('appendContent', indent); + indent = ''; + } + + this.opcode('invokePartial', isDynamic, partialName, indent); + this.opcode('append'); + }, + PartialBlockStatement: function PartialBlockStatement(partialBlock) { + this.PartialStatement(partialBlock); + }, + + MustacheStatement: function MustacheStatement(mustache) { + this.SubExpression(mustache); + + if (mustache.escaped && !this.options.noEscape) { + this.opcode('appendEscaped'); + } else { + this.opcode('append'); + } + }, + Decorator: function Decorator(decorator) { + this.DecoratorBlock(decorator); + }, + + ContentStatement: function ContentStatement(content) { + if (content.value) { + this.opcode('appendContent', content.value); + } + }, + + CommentStatement: function CommentStatement() {}, + + SubExpression: function SubExpression(sexpr) { + transformLiteralToPath(sexpr); + var type = this.classifySexpr(sexpr); + + if (type === 'simple') { + this.simpleSexpr(sexpr); + } else if (type === 'helper') { + this.helperSexpr(sexpr); + } else { + this.ambiguousSexpr(sexpr); + } + }, + ambiguousSexpr: function ambiguousSexpr(sexpr, program, inverse) { + var path = sexpr.path, + name = path.parts[0], + isBlock = program != null || inverse != null; + + this.opcode('getContext', path.depth); + + this.opcode('pushProgram', program); + this.opcode('pushProgram', inverse); + + path.strict = true; + this.accept(path); + + this.opcode('invokeAmbiguous', name, isBlock); + }, + + simpleSexpr: function simpleSexpr(sexpr) { + var path = sexpr.path; + path.strict = true; + this.accept(path); + this.opcode('resolvePossibleLambda'); + }, + + helperSexpr: function helperSexpr(sexpr, program, inverse) { + var params = this.setupFullMustacheParams(sexpr, program, inverse), + path = sexpr.path, + name = path.parts[0]; + + if (this.options.knownHelpers[name]) { + this.opcode('invokeKnownHelper', params.length, name); + } else if (this.options.knownHelpersOnly) { + throw new _exception2['default']('You specified knownHelpersOnly, but used the unknown helper ' + name, sexpr); + } else { + path.strict = true; + path.falsy = true; + + this.accept(path); + this.opcode('invokeHelper', params.length, path.original, _ast2['default'].helpers.simpleId(path)); + } + }, + + PathExpression: function PathExpression(path) { + this.addDepth(path.depth); + this.opcode('getContext', path.depth); + + var name = path.parts[0], + scoped = _ast2['default'].helpers.scopedId(path), + blockParamId = !path.depth && !scoped && this.blockParamIndex(name); + + if (blockParamId) { + this.opcode('lookupBlockParam', blockParamId, path.parts); + } else if (!name) { + // Context reference, i.e. `{{foo .}}` or `{{foo ..}}` + this.opcode('pushContext'); + } else if (path.data) { + this.options.data = true; + this.opcode('lookupData', path.depth, path.parts, path.strict); + } else { + this.opcode('lookupOnContext', path.parts, path.falsy, path.strict, scoped); + } + }, + + StringLiteral: function StringLiteral(string) { + this.opcode('pushString', string.value); + }, + + NumberLiteral: function NumberLiteral(number) { + this.opcode('pushLiteral', number.value); + }, + + BooleanLiteral: function BooleanLiteral(bool) { + this.opcode('pushLiteral', bool.value); + }, + + UndefinedLiteral: function UndefinedLiteral() { + this.opcode('pushLiteral', 'undefined'); + }, + + NullLiteral: function NullLiteral() { + this.opcode('pushLiteral', 'null'); + }, + + Hash: function Hash(hash) { + var pairs = hash.pairs, + i = 0, + l = pairs.length; + + this.opcode('pushHash'); + + for (; i < l; i++) { + this.pushParam(pairs[i].value); + } + while (i--) { + this.opcode('assignToHash', pairs[i].key); + } + this.opcode('popHash'); + }, + + // HELPERS + opcode: function opcode(name) { + this.opcodes.push({ + opcode: name, + args: slice.call(arguments, 1), + loc: this.sourceNode[0].loc + }); + }, + + addDepth: function addDepth(depth) { + if (!depth) { + return; + } + + this.useDepths = true; + }, + + classifySexpr: function classifySexpr(sexpr) { + var isSimple = _ast2['default'].helpers.simpleId(sexpr.path); + + var isBlockParam = isSimple && !!this.blockParamIndex(sexpr.path.parts[0]); + + // a mustache is an eligible helper if: + // * its id is simple (a single part, not `this` or `..`) + var isHelper = !isBlockParam && _ast2['default'].helpers.helperExpression(sexpr); + + // if a mustache is an eligible helper but not a definite + // helper, it is ambiguous, and will be resolved in a later + // pass or at runtime. + var isEligible = !isBlockParam && (isHelper || isSimple); + + // if ambiguous, we can possibly resolve the ambiguity now + // An eligible helper is one that does not have a complex path, i.e. `this.foo`, `../foo` etc. + if (isEligible && !isHelper) { + var _name = sexpr.path.parts[0], + options = this.options; + if (options.knownHelpers[_name]) { + isHelper = true; + } else if (options.knownHelpersOnly) { + isEligible = false; + } + } + + if (isHelper) { + return 'helper'; + } else if (isEligible) { + return 'ambiguous'; + } else { + return 'simple'; + } + }, + + pushParams: function pushParams(params) { + for (var i = 0, l = params.length; i < l; i++) { + this.pushParam(params[i]); + } + }, + + pushParam: function pushParam(val) { + var value = val.value != null ? val.value : val.original || ''; + + if (this.stringParams) { + if (value.replace) { + value = value.replace(/^(\.?\.\/)*/g, '').replace(/\//g, '.'); + } + + if (val.depth) { + this.addDepth(val.depth); + } + this.opcode('getContext', val.depth || 0); + this.opcode('pushStringParam', value, val.type); + + if (val.type === 'SubExpression') { + // SubExpressions get evaluated and passed in + // in string params mode. + this.accept(val); + } + } else { + if (this.trackIds) { + var blockParamIndex = undefined; + if (val.parts && !_ast2['default'].helpers.scopedId(val) && !val.depth) { + blockParamIndex = this.blockParamIndex(val.parts[0]); + } + if (blockParamIndex) { + var blockParamChild = val.parts.slice(1).join('.'); + this.opcode('pushId', 'BlockParam', blockParamIndex, blockParamChild); + } else { + value = val.original || value; + if (value.replace) { + value = value.replace(/^this(?:\.|$)/, '').replace(/^\.\//, '').replace(/^\.$/, ''); + } + + this.opcode('pushId', val.type, value); + } + } + this.accept(val); + } + }, + + setupFullMustacheParams: function setupFullMustacheParams(sexpr, program, inverse, omitEmpty) { + var params = sexpr.params; + this.pushParams(params); + + this.opcode('pushProgram', program); + this.opcode('pushProgram', inverse); + + if (sexpr.hash) { + this.accept(sexpr.hash); + } else { + this.opcode('emptyHash', omitEmpty); + } + + return params; + }, + + blockParamIndex: function blockParamIndex(name) { + for (var depth = 0, len = this.options.blockParams.length; depth < len; depth++) { + var blockParams = this.options.blockParams[depth], + param = blockParams && utils$2.indexOf(blockParams, name); + if (blockParams && param >= 0) { + return [depth, param]; + } + } + } +}; + +function precompile(input, options, env) { + if (input == null || typeof input !== 'string' && input.type !== 'Program') { + throw new _exception2['default']('You must pass a string or Handlebars AST to Handlebars.precompile. You passed ' + input); + } + + options = options || {}; + if (!('data' in options)) { + options.data = true; + } + if (options.compat) { + options.useDepths = true; + } + + var ast = env.parse(input, options), + environment = new env.Compiler().compile(ast, options); + return new env.JavaScriptCompiler().compile(environment, options); +} + +function compile(input, options, env) { + if (options === undefined) options = {}; + + if (input == null || typeof input !== 'string' && input.type !== 'Program') { + throw new _exception2['default']('You must pass a string or Handlebars AST to Handlebars.compile. You passed ' + input); + } + + options = utils$2.extend({}, options); + if (!('data' in options)) { + options.data = true; + } + if (options.compat) { + options.useDepths = true; + } + + var compiled = undefined; + + function compileInput() { + var ast = env.parse(input, options), + environment = new env.Compiler().compile(ast, options), + templateSpec = new env.JavaScriptCompiler().compile(environment, options, undefined, true); + return env.template(templateSpec); + } + + // Template is only compiled on first use and cached after that point. + function ret(context, execOptions) { + if (!compiled) { + compiled = compileInput(); + } + return compiled.call(this, context, execOptions); + } + ret._setup = function (setupOptions) { + if (!compiled) { + compiled = compileInput(); + } + return compiled._setup(setupOptions); + }; + ret._child = function (i, data, blockParams, depths) { + if (!compiled) { + compiled = compileInput(); + } + return compiled._child(i, data, blockParams, depths); + }; + return ret; +} + +function argEquals(a, b) { + if (a === b) { + return true; + } + + if (utils$2.isArray(a) && utils$2.isArray(b) && a.length === b.length) { + for (var i = 0; i < a.length; i++) { + if (!argEquals(a[i], b[i])) { + return false; + } + } + return true; + } +} + +function transformLiteralToPath(sexpr) { + if (!sexpr.path.parts) { + var literal = sexpr.path; + // Casting to string here to make false and 0 literal values play nicely with the rest + // of the system. + sexpr.path = { + type: 'PathExpression', + data: false, + depth: 0, + parts: [literal.original + ''], + original: literal.original + '', + loc: literal.loc + }; + } +} + +}); + +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); + +/** + * Encode an integer in the range of 0 to 63 to a single base 64 digit. + */ +var encode = function (number) { + if (0 <= number && number < intToCharMap.length) { + return intToCharMap[number]; + } + throw new TypeError("Must be between 0 and 63: " + number); +}; + +/** + * Decode a single base 64 character code digit to an integer. Returns -1 on + * failure. + */ +var decode = function (charCode) { + var bigA = 65; // 'A' + var bigZ = 90; // 'Z' + + var littleA = 97; // 'a' + var littleZ = 122; // 'z' + + var zero = 48; // '0' + var nine = 57; // '9' + + var plus = 43; // '+' + var slash = 47; // '/' + + var littleOffset = 26; + var numberOffset = 52; + + // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ + if (bigA <= charCode && charCode <= bigZ) { + return (charCode - bigA); + } + + // 26 - 51: abcdefghijklmnopqrstuvwxyz + if (littleA <= charCode && charCode <= littleZ) { + return (charCode - littleA + littleOffset); + } + + // 52 - 61: 0123456789 + if (zero <= charCode && charCode <= nine) { + return (charCode - zero + numberOffset); + } + + // 62: + + if (charCode == plus) { + return 62; + } + + // 63: / + if (charCode == slash) { + return 63; + } + + // Invalid base64 digit. + return -1; +}; + +var base64 = { + encode: encode, + decode: decode +}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + * + * Based on the Base 64 VLQ implementation in Closure Compiler: + * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java + * + * Copyright 2011 The Closure Compiler Authors. All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + + +// A single base 64 digit can contain 6 bits of data. For the base 64 variable +// length quantities we use in the source map spec, the first bit is the sign, +// the next four bits are the actual value, and the 6th bit is the +// continuation bit. The continuation bit tells us whether there are more +// digits in this value following this digit. +// +// Continuation +// | Sign +// | | +// V V +// 101011 + +var VLQ_BASE_SHIFT = 5; + +// binary: 100000 +var VLQ_BASE = 1 << VLQ_BASE_SHIFT; + +// binary: 011111 +var VLQ_BASE_MASK = VLQ_BASE - 1; + +// binary: 100000 +var VLQ_CONTINUATION_BIT = VLQ_BASE; + +/** + * Converts from a two-complement value to a value where the sign bit is + * placed in the least significant bit. For example, as decimals: + * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) + * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) + */ +function toVLQSigned(aValue) { + return aValue < 0 + ? ((-aValue) << 1) + 1 + : (aValue << 1) + 0; +} + +/** + * Converts to a two-complement value from a value where the sign bit is + * placed in the least significant bit. For example, as decimals: + * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 + * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 + */ +function fromVLQSigned(aValue) { + var isNegative = (aValue & 1) === 1; + var shifted = aValue >> 1; + return isNegative + ? -shifted + : shifted; +} + +/** + * Returns the base 64 VLQ encoded value. + */ +var encode$1 = function base64VLQ_encode(aValue) { + var encoded = ""; + var digit; + + var vlq = toVLQSigned(aValue); + + do { + digit = vlq & VLQ_BASE_MASK; + vlq >>>= VLQ_BASE_SHIFT; + if (vlq > 0) { + // There are still more digits in this value, so we must make sure the + // continuation bit is marked. + digit |= VLQ_CONTINUATION_BIT; + } + encoded += base64.encode(digit); + } while (vlq > 0); + + return encoded; +}; + +/** + * Decodes the next base 64 VLQ value from the given string and returns the + * value and the rest of the string via the out parameter. + */ +var decode$1 = function base64VLQ_decode(aStr, aIndex, aOutParam) { + var strLen = aStr.length; + var result = 0; + var shift = 0; + var continuation, digit; + + do { + if (aIndex >= strLen) { + throw new Error("Expected more digits in base 64 VLQ value."); + } + + digit = base64.decode(aStr.charCodeAt(aIndex++)); + if (digit === -1) { + throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); + } + + continuation = !!(digit & VLQ_CONTINUATION_BIT); + digit &= VLQ_BASE_MASK; + result = result + (digit << shift); + shift += VLQ_BASE_SHIFT; + } while (continuation); + + aOutParam.value = fromVLQSigned(result); + aOutParam.rest = aIndex; +}; + +var base64Vlq = { + encode: encode$1, + decode: decode$1 +}; + +var util = createCommonjsModule(function (module, exports) { +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +/** + * This is a helper function for getting values from parameter/options + * objects. + * + * @param args The object we are extracting values from + * @param name The name of the property we are getting. + * @param defaultValue An optional value to return if the property is missing + * from the object. If this is not specified and the property is missing, an + * error will be thrown. + */ +function getArg(aArgs, aName, aDefaultValue) { + if (aName in aArgs) { + return aArgs[aName]; + } else if (arguments.length === 3) { + return aDefaultValue; + } else { + throw new Error('"' + aName + '" is a required argument.'); + } +} +exports.getArg = getArg; + +var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/; +var dataUrlRegexp = /^data:.+\,.+$/; + +function urlParse(aUrl) { + var match = aUrl.match(urlRegexp); + if (!match) { + return null; + } + return { + scheme: match[1], + auth: match[2], + host: match[3], + port: match[4], + path: match[5] + }; +} +exports.urlParse = urlParse; + +function urlGenerate(aParsedUrl) { + var url = ''; + if (aParsedUrl.scheme) { + url += aParsedUrl.scheme + ':'; + } + url += '//'; + if (aParsedUrl.auth) { + url += aParsedUrl.auth + '@'; + } + if (aParsedUrl.host) { + url += aParsedUrl.host; + } + if (aParsedUrl.port) { + url += ":" + aParsedUrl.port; + } + if (aParsedUrl.path) { + url += aParsedUrl.path; + } + return url; +} +exports.urlGenerate = urlGenerate; + +/** + * Normalizes a path, or the path portion of a URL: + * + * - Replaces consecutive slashes with one slash. + * - Removes unnecessary '.' parts. + * - Removes unnecessary '/..' parts. + * + * Based on code in the Node.js 'path' core module. + * + * @param aPath The path or url to normalize. + */ +function normalize(aPath) { + var path = aPath; + var url = urlParse(aPath); + if (url) { + if (!url.path) { + return aPath; + } + path = url.path; + } + var isAbsolute = exports.isAbsolute(path); + + var parts = path.split(/\/+/); + for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { + part = parts[i]; + if (part === '.') { + parts.splice(i, 1); + } else if (part === '..') { + up++; + } else if (up > 0) { + if (part === '') { + // The first part is blank if the path is absolute. Trying to go + // above the root is a no-op. Therefore we can remove all '..' parts + // directly after the root. + parts.splice(i + 1, up); + up = 0; + } else { + parts.splice(i, 2); + up--; + } + } + } + path = parts.join('/'); + + if (path === '') { + path = isAbsolute ? '/' : '.'; + } + + if (url) { + url.path = path; + return urlGenerate(url); + } + return path; +} +exports.normalize = normalize; + +/** + * Joins two paths/URLs. + * + * @param aRoot The root path or URL. + * @param aPath The path or URL to be joined with the root. + * + * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a + * scheme-relative URL: Then the scheme of aRoot, if any, is prepended + * first. + * - Otherwise aPath is a path. If aRoot is a URL, then its path portion + * is updated with the result and aRoot is returned. Otherwise the result + * is returned. + * - If aPath is absolute, the result is aPath. + * - Otherwise the two paths are joined with a slash. + * - Joining for example 'http://' and 'www.example.com' is also supported. + */ +function join(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + if (aPath === "") { + aPath = "."; + } + var aPathUrl = urlParse(aPath); + var aRootUrl = urlParse(aRoot); + if (aRootUrl) { + aRoot = aRootUrl.path || '/'; + } + + // `join(foo, '//www.example.org')` + if (aPathUrl && !aPathUrl.scheme) { + if (aRootUrl) { + aPathUrl.scheme = aRootUrl.scheme; + } + return urlGenerate(aPathUrl); + } + + if (aPathUrl || aPath.match(dataUrlRegexp)) { + return aPath; + } + + // `join('http://', 'www.example.com')` + if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { + aRootUrl.host = aPath; + return urlGenerate(aRootUrl); + } + + var joined = aPath.charAt(0) === '/' + ? aPath + : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); + + if (aRootUrl) { + aRootUrl.path = joined; + return urlGenerate(aRootUrl); + } + return joined; +} +exports.join = join; + +exports.isAbsolute = function (aPath) { + return aPath.charAt(0) === '/' || urlRegexp.test(aPath); +}; + +/** + * Make a path relative to a URL or another path. + * + * @param aRoot The root path or URL. + * @param aPath The path or URL to be made relative to aRoot. + */ +function relative(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + + aRoot = aRoot.replace(/\/$/, ''); + + // It is possible for the path to be above the root. In this case, simply + // checking whether the root is a prefix of the path won't work. Instead, we + // need to remove components from the root one by one, until either we find + // a prefix that fits, or we run out of components to remove. + var level = 0; + while (aPath.indexOf(aRoot + '/') !== 0) { + var index = aRoot.lastIndexOf("/"); + if (index < 0) { + return aPath; + } + + // If the only part of the root that is left is the scheme (i.e. http://, + // file:///, etc.), one or more slashes (/), or simply nothing at all, we + // have exhausted all components, so the path is not relative to the root. + aRoot = aRoot.slice(0, index); + if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { + return aPath; + } + + ++level; + } + + // Make sure we add a "../" for each component we removed from the root. + return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); +} +exports.relative = relative; + +var supportsNullProto = (function () { + var obj = Object.create(null); + return !('__proto__' in obj); +}()); + +function identity (s) { + return s; +} + +/** + * Because behavior goes wacky when you set `__proto__` on objects, we + * have to prefix all the strings in our set with an arbitrary character. + * + * See https://github.com/mozilla/source-map/pull/31 and + * https://github.com/mozilla/source-map/issues/30 + * + * @param String aStr + */ +function toSetString(aStr) { + if (isProtoString(aStr)) { + return '$' + aStr; + } + + return aStr; +} +exports.toSetString = supportsNullProto ? identity : toSetString; + +function fromSetString(aStr) { + if (isProtoString(aStr)) { + return aStr.slice(1); + } + + return aStr; +} +exports.fromSetString = supportsNullProto ? identity : fromSetString; + +function isProtoString(s) { + if (!s) { + return false; + } + + var length = s.length; + + if (length < 9 /* "__proto__".length */) { + return false; + } + + if (s.charCodeAt(length - 1) !== 95 /* '_' */ || + s.charCodeAt(length - 2) !== 95 /* '_' */ || + s.charCodeAt(length - 3) !== 111 /* 'o' */ || + s.charCodeAt(length - 4) !== 116 /* 't' */ || + s.charCodeAt(length - 5) !== 111 /* 'o' */ || + s.charCodeAt(length - 6) !== 114 /* 'r' */ || + s.charCodeAt(length - 7) !== 112 /* 'p' */ || + s.charCodeAt(length - 8) !== 95 /* '_' */ || + s.charCodeAt(length - 9) !== 95 /* '_' */) { + return false; + } + + for (var i = length - 10; i >= 0; i--) { + if (s.charCodeAt(i) !== 36 /* '$' */) { + return false; + } + } + + return true; +} + +/** + * Comparator between two mappings where the original positions are compared. + * + * Optionally pass in `true` as `onlyCompareGenerated` to consider two + * mappings with the same original source/line/column, but different generated + * line and column the same. Useful when searching for a mapping with a + * stubbed out mapping. + */ +function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { + var cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0 || onlyCompareOriginal) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); +} +exports.compareByOriginalPositions = compareByOriginalPositions; + +/** + * Comparator between two mappings with deflated source and name indices where + * the generated positions are compared. + * + * Optionally pass in `true` as `onlyCompareGenerated` to consider two + * mappings with the same generated line and column, but different + * source/name/original line and column the same. Useful when searching for a + * mapping with a stubbed out mapping. + */ +function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0 || onlyCompareGenerated) { + return cmp; + } + + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); +} +exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; + +function strcmp(aStr1, aStr2) { + if (aStr1 === aStr2) { + return 0; + } + + if (aStr1 === null) { + return 1; // aStr2 !== null + } + + if (aStr2 === null) { + return -1; // aStr1 !== null + } + + if (aStr1 > aStr2) { + return 1; + } + + return -1; +} + +/** + * Comparator between two mappings with inflated source and name strings where + * the generated positions are compared. + */ +function compareByGeneratedPositionsInflated(mappingA, mappingB) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); +} +exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; + +/** + * Strip any JSON XSSI avoidance prefix from the string (as documented + * in the source maps specification), and then parse the string as + * JSON. + */ +function parseSourceMapInput(str) { + return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, '')); +} +exports.parseSourceMapInput = parseSourceMapInput; + +/** + * Compute the URL of a source given the the source root, the source's + * URL, and the source map's URL. + */ +function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) { + sourceURL = sourceURL || ''; + + if (sourceRoot) { + // This follows what Chrome does. + if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') { + sourceRoot += '/'; + } + // The spec says: + // Line 4: An optional source root, useful for relocating source + // files on a server or removing repeated values in the + // “sources” entry. This value is prepended to the individual + // entries in the “source” field. + sourceURL = sourceRoot + sourceURL; + } + + // Historically, SourceMapConsumer did not take the sourceMapURL as + // a parameter. This mode is still somewhat supported, which is why + // this code block is conditional. However, it's preferable to pass + // the source map URL to SourceMapConsumer, so that this function + // can implement the source URL resolution algorithm as outlined in + // the spec. This block is basically the equivalent of: + // new URL(sourceURL, sourceMapURL).toString() + // ... except it avoids using URL, which wasn't available in the + // older releases of node still supported by this library. + // + // The spec says: + // If the sources are not absolute URLs after prepending of the + // “sourceRoot”, the sources are resolved relative to the + // SourceMap (like resolving script src in a html document). + if (sourceMapURL) { + var parsed = urlParse(sourceMapURL); + if (!parsed) { + throw new Error("sourceMapURL could not be parsed"); + } + if (parsed.path) { + // Strip the last path component, but keep the "/". + var index = parsed.path.lastIndexOf('/'); + if (index >= 0) { + parsed.path = parsed.path.substring(0, index + 1); + } + } + sourceURL = join(urlGenerate(parsed), sourceURL); + } + + return normalize(sourceURL); +} +exports.computeSourceURL = computeSourceURL; +}); + +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + +var has = Object.prototype.hasOwnProperty; +var hasNativeMap = typeof Map !== "undefined"; + +/** + * A data structure which is a combination of an array and a set. Adding a new + * member is O(1), testing for membership is O(1), and finding the index of an + * element is O(1). Removing elements from the set is not supported. Only + * strings are supported for membership. + */ +function ArraySet() { + this._array = []; + this._set = hasNativeMap ? new Map() : Object.create(null); +} + +/** + * Static method for creating ArraySet instances from an existing array. + */ +ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { + var set = new ArraySet(); + for (var i = 0, len = aArray.length; i < len; i++) { + set.add(aArray[i], aAllowDuplicates); + } + return set; +}; + +/** + * Return how many unique items are in this ArraySet. If duplicates have been + * added, than those do not count towards the size. + * + * @returns Number + */ +ArraySet.prototype.size = function ArraySet_size() { + return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; +}; + +/** + * Add the given string to this set. + * + * @param String aStr + */ +ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { + var sStr = hasNativeMap ? aStr : util.toSetString(aStr); + var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); + var idx = this._array.length; + if (!isDuplicate || aAllowDuplicates) { + this._array.push(aStr); + } + if (!isDuplicate) { + if (hasNativeMap) { + this._set.set(aStr, idx); + } else { + this._set[sStr] = idx; + } + } +}; + +/** + * Is the given string a member of this set? + * + * @param String aStr + */ +ArraySet.prototype.has = function ArraySet_has(aStr) { + if (hasNativeMap) { + return this._set.has(aStr); + } else { + var sStr = util.toSetString(aStr); + return has.call(this._set, sStr); + } +}; + +/** + * What is the index of the given string in the array? + * + * @param String aStr + */ +ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { + if (hasNativeMap) { + var idx = this._set.get(aStr); + if (idx >= 0) { + return idx; + } + } else { + var sStr = util.toSetString(aStr); + if (has.call(this._set, sStr)) { + return this._set[sStr]; + } + } + + throw new Error('"' + aStr + '" is not in the set.'); +}; + +/** + * What is the element at the given index? + * + * @param Number aIdx + */ +ArraySet.prototype.at = function ArraySet_at(aIdx) { + if (aIdx >= 0 && aIdx < this._array.length) { + return this._array[aIdx]; + } + throw new Error('No element indexed by ' + aIdx); +}; + +/** + * Returns the array representation of this set (which has the proper indices + * indicated by indexOf). Note that this is a copy of the internal array used + * for storing the members so that no one can mess with internal state. + */ +ArraySet.prototype.toArray = function ArraySet_toArray() { + return this._array.slice(); +}; + +var ArraySet_1 = ArraySet; + +var arraySet = { + ArraySet: ArraySet_1 +}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2014 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + + +/** + * Determine whether mappingB is after mappingA with respect to generated + * position. + */ +function generatedPositionAfter(mappingA, mappingB) { + // Optimized for most common case + var lineA = mappingA.generatedLine; + var lineB = mappingB.generatedLine; + var columnA = mappingA.generatedColumn; + var columnB = mappingB.generatedColumn; + return lineB > lineA || lineB == lineA && columnB >= columnA || + util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; +} + +/** + * A data structure to provide a sorted view of accumulated mappings in a + * performance conscious manner. It trades a neglibable overhead in general + * case for a large speedup in case of mappings being added in order. + */ +function MappingList() { + this._array = []; + this._sorted = true; + // Serves as infimum + this._last = {generatedLine: -1, generatedColumn: 0}; +} + +/** + * Iterate through internal items. This method takes the same arguments that + * `Array.prototype.forEach` takes. + * + * NOTE: The order of the mappings is NOT guaranteed. + */ +MappingList.prototype.unsortedForEach = + function MappingList_forEach(aCallback, aThisArg) { + this._array.forEach(aCallback, aThisArg); + }; + +/** + * Add the given source mapping. + * + * @param Object aMapping + */ +MappingList.prototype.add = function MappingList_add(aMapping) { + if (generatedPositionAfter(this._last, aMapping)) { + this._last = aMapping; + this._array.push(aMapping); + } else { + this._sorted = false; + this._array.push(aMapping); + } +}; + +/** + * Returns the flat, sorted array of mappings. The mappings are sorted by + * generated position. + * + * WARNING: This method returns internal data without copying, for + * performance. The return value must NOT be mutated, and should be treated as + * an immutable borrow. If you want to take ownership, you must make your own + * copy. + */ +MappingList.prototype.toArray = function MappingList_toArray() { + if (!this._sorted) { + this._array.sort(util.compareByGeneratedPositionsInflated); + this._sorted = true; + } + return this._array; +}; + +var MappingList_1 = MappingList; + +var mappingList = { + MappingList: MappingList_1 +}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + + +var ArraySet$1 = arraySet.ArraySet; +var MappingList$1 = mappingList.MappingList; + +/** + * An instance of the SourceMapGenerator represents a source map which is + * being built incrementally. You may pass an object with the following + * properties: + * + * - file: The filename of the generated source. + * - sourceRoot: A root for all relative URLs in this source map. + */ +function SourceMapGenerator(aArgs) { + if (!aArgs) { + aArgs = {}; + } + this._file = util.getArg(aArgs, 'file', null); + this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); + this._skipValidation = util.getArg(aArgs, 'skipValidation', false); + this._sources = new ArraySet$1(); + this._names = new ArraySet$1(); + this._mappings = new MappingList$1(); + this._sourcesContents = null; +} + +SourceMapGenerator.prototype._version = 3; + +/** + * Creates a new SourceMapGenerator based on a SourceMapConsumer + * + * @param aSourceMapConsumer The SourceMap. + */ +SourceMapGenerator.fromSourceMap = + function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { + var sourceRoot = aSourceMapConsumer.sourceRoot; + var generator = new SourceMapGenerator({ + file: aSourceMapConsumer.file, + sourceRoot: sourceRoot + }); + aSourceMapConsumer.eachMapping(function (mapping) { + var newMapping = { + generated: { + line: mapping.generatedLine, + column: mapping.generatedColumn + } + }; + + if (mapping.source != null) { + newMapping.source = mapping.source; + if (sourceRoot != null) { + newMapping.source = util.relative(sourceRoot, newMapping.source); + } + + newMapping.original = { + line: mapping.originalLine, + column: mapping.originalColumn + }; + + if (mapping.name != null) { + newMapping.name = mapping.name; + } + } + + generator.addMapping(newMapping); + }); + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var sourceRelative = sourceFile; + if (sourceRoot !== null) { + sourceRelative = util.relative(sourceRoot, sourceFile); + } + + if (!generator._sources.has(sourceRelative)) { + generator._sources.add(sourceRelative); + } + + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + generator.setSourceContent(sourceFile, content); + } + }); + return generator; + }; + +/** + * Add a single mapping from original source line and column to the generated + * source's line and column for this source map being created. The mapping + * object should have the following properties: + * + * - generated: An object with the generated line and column positions. + * - original: An object with the original line and column positions. + * - source: The original source file (relative to the sourceRoot). + * - name: An optional original token name for this mapping. + */ +SourceMapGenerator.prototype.addMapping = + function SourceMapGenerator_addMapping(aArgs) { + var generated = util.getArg(aArgs, 'generated'); + var original = util.getArg(aArgs, 'original', null); + var source = util.getArg(aArgs, 'source', null); + var name = util.getArg(aArgs, 'name', null); + + if (!this._skipValidation) { + this._validateMapping(generated, original, source, name); + } + + if (source != null) { + source = String(source); + if (!this._sources.has(source)) { + this._sources.add(source); + } + } + + if (name != null) { + name = String(name); + if (!this._names.has(name)) { + this._names.add(name); + } + } + + this._mappings.add({ + generatedLine: generated.line, + generatedColumn: generated.column, + originalLine: original != null && original.line, + originalColumn: original != null && original.column, + source: source, + name: name + }); + }; + +/** + * Set the source content for a source file. + */ +SourceMapGenerator.prototype.setSourceContent = + function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { + var source = aSourceFile; + if (this._sourceRoot != null) { + source = util.relative(this._sourceRoot, source); + } + + if (aSourceContent != null) { + // Add the source content to the _sourcesContents map. + // Create a new _sourcesContents map if the property is null. + if (!this._sourcesContents) { + this._sourcesContents = Object.create(null); + } + this._sourcesContents[util.toSetString(source)] = aSourceContent; + } else if (this._sourcesContents) { + // Remove the source file from the _sourcesContents map. + // If the _sourcesContents map is empty, set the property to null. + delete this._sourcesContents[util.toSetString(source)]; + if (Object.keys(this._sourcesContents).length === 0) { + this._sourcesContents = null; + } + } + }; + +/** + * Applies the mappings of a sub-source-map for a specific source file to the + * source map being generated. Each mapping to the supplied source file is + * rewritten using the supplied source map. Note: The resolution for the + * resulting mappings is the minimium of this map and the supplied map. + * + * @param aSourceMapConsumer The source map to be applied. + * @param aSourceFile Optional. The filename of the source file. + * If omitted, SourceMapConsumer's file property will be used. + * @param aSourceMapPath Optional. The dirname of the path to the source map + * to be applied. If relative, it is relative to the SourceMapConsumer. + * This parameter is needed when the two source maps aren't in the same + * directory, and the source map to be applied contains relative source + * paths. If so, those relative source paths need to be rewritten + * relative to the SourceMapGenerator. + */ +SourceMapGenerator.prototype.applySourceMap = + function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { + var sourceFile = aSourceFile; + // If aSourceFile is omitted, we will use the file property of the SourceMap + if (aSourceFile == null) { + if (aSourceMapConsumer.file == null) { + throw new Error( + 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + + 'or the source map\'s "file" property. Both were omitted.' + ); + } + sourceFile = aSourceMapConsumer.file; + } + var sourceRoot = this._sourceRoot; + // Make "sourceFile" relative if an absolute Url is passed. + if (sourceRoot != null) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + // Applying the SourceMap can add and remove items from the sources and + // the names array. + var newSources = new ArraySet$1(); + var newNames = new ArraySet$1(); + + // Find mappings for the "sourceFile" + this._mappings.unsortedForEach(function (mapping) { + if (mapping.source === sourceFile && mapping.originalLine != null) { + // Check if it can be mapped by the source map, then update the mapping. + var original = aSourceMapConsumer.originalPositionFor({ + line: mapping.originalLine, + column: mapping.originalColumn + }); + if (original.source != null) { + // Copy mapping + mapping.source = original.source; + if (aSourceMapPath != null) { + mapping.source = util.join(aSourceMapPath, mapping.source); + } + if (sourceRoot != null) { + mapping.source = util.relative(sourceRoot, mapping.source); + } + mapping.originalLine = original.line; + mapping.originalColumn = original.column; + if (original.name != null) { + mapping.name = original.name; + } + } + } + + var source = mapping.source; + if (source != null && !newSources.has(source)) { + newSources.add(source); + } + + var name = mapping.name; + if (name != null && !newNames.has(name)) { + newNames.add(name); + } + + }, this); + this._sources = newSources; + this._names = newNames; + + // Copy sourcesContents of applied map. + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aSourceMapPath != null) { + sourceFile = util.join(aSourceMapPath, sourceFile); + } + if (sourceRoot != null) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + this.setSourceContent(sourceFile, content); + } + }, this); + }; + +/** + * A mapping can have one of the three levels of data: + * + * 1. Just the generated position. + * 2. The Generated position, original position, and original source. + * 3. Generated and original position, original source, as well as a name + * token. + * + * To maintain consistency, we validate that any new mapping being added falls + * in to one of these categories. + */ +SourceMapGenerator.prototype._validateMapping = + function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, + aName) { + // When aOriginal is truthy but has empty values for .line and .column, + // it is most likely a programmer error. In this case we throw a very + // specific error message to try to guide them the right way. + // For example: https://github.com/Polymer/polymer-bundler/pull/519 + if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') { + throw new Error( + 'original.line and original.column are not numbers -- you probably meant to omit ' + + 'the original mapping entirely and only map the generated position. If so, pass ' + + 'null for the original mapping instead of an object with empty or null values.' + ); + } + + if (aGenerated && 'line' in aGenerated && 'column' in aGenerated + && aGenerated.line > 0 && aGenerated.column >= 0 + && !aOriginal && !aSource && !aName) { + // Case 1. + return; + } + else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated + && aOriginal && 'line' in aOriginal && 'column' in aOriginal + && aGenerated.line > 0 && aGenerated.column >= 0 + && aOriginal.line > 0 && aOriginal.column >= 0 + && aSource) { + // Cases 2 and 3. + return; + } + else { + throw new Error('Invalid mapping: ' + JSON.stringify({ + generated: aGenerated, + source: aSource, + original: aOriginal, + name: aName + })); + } + }; + +/** + * Serialize the accumulated mappings in to the stream of base 64 VLQs + * specified by the source map format. + */ +SourceMapGenerator.prototype._serializeMappings = + function SourceMapGenerator_serializeMappings() { + var previousGeneratedColumn = 0; + var previousGeneratedLine = 1; + var previousOriginalColumn = 0; + var previousOriginalLine = 0; + var previousName = 0; + var previousSource = 0; + var result = ''; + var next; + var mapping; + var nameIdx; + var sourceIdx; + + var mappings = this._mappings.toArray(); + for (var i = 0, len = mappings.length; i < len; i++) { + mapping = mappings[i]; + next = ''; + + if (mapping.generatedLine !== previousGeneratedLine) { + previousGeneratedColumn = 0; + while (mapping.generatedLine !== previousGeneratedLine) { + next += ';'; + previousGeneratedLine++; + } + } + else { + if (i > 0) { + if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { + continue; + } + next += ','; + } + } + + next += base64Vlq.encode(mapping.generatedColumn + - previousGeneratedColumn); + previousGeneratedColumn = mapping.generatedColumn; + + if (mapping.source != null) { + sourceIdx = this._sources.indexOf(mapping.source); + next += base64Vlq.encode(sourceIdx - previousSource); + previousSource = sourceIdx; + + // lines are stored 0-based in SourceMap spec version 3 + next += base64Vlq.encode(mapping.originalLine - 1 + - previousOriginalLine); + previousOriginalLine = mapping.originalLine - 1; + + next += base64Vlq.encode(mapping.originalColumn + - previousOriginalColumn); + previousOriginalColumn = mapping.originalColumn; + + if (mapping.name != null) { + nameIdx = this._names.indexOf(mapping.name); + next += base64Vlq.encode(nameIdx - previousName); + previousName = nameIdx; + } + } + + result += next; + } + + return result; + }; + +SourceMapGenerator.prototype._generateSourcesContent = + function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { + return aSources.map(function (source) { + if (!this._sourcesContents) { + return null; + } + if (aSourceRoot != null) { + source = util.relative(aSourceRoot, source); + } + var key = util.toSetString(source); + return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) + ? this._sourcesContents[key] + : null; + }, this); + }; + +/** + * Externalize the source map. + */ +SourceMapGenerator.prototype.toJSON = + function SourceMapGenerator_toJSON() { + var map = { + version: this._version, + sources: this._sources.toArray(), + names: this._names.toArray(), + mappings: this._serializeMappings() + }; + if (this._file != null) { + map.file = this._file; + } + if (this._sourceRoot != null) { + map.sourceRoot = this._sourceRoot; + } + if (this._sourcesContents) { + map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); + } + + return map; + }; + +/** + * Render the source map being generated to a string. + */ +SourceMapGenerator.prototype.toString = + function SourceMapGenerator_toString() { + return JSON.stringify(this.toJSON()); + }; + +var SourceMapGenerator_1 = SourceMapGenerator; + +var sourceMapGenerator = { + SourceMapGenerator: SourceMapGenerator_1 +}; + +var binarySearch = createCommonjsModule(function (module, exports) { +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +exports.GREATEST_LOWER_BOUND = 1; +exports.LEAST_UPPER_BOUND = 2; + +/** + * Recursive implementation of binary search. + * + * @param aLow Indices here and lower do not contain the needle. + * @param aHigh Indices here and higher do not contain the needle. + * @param aNeedle The element being searched for. + * @param aHaystack The non-empty array being searched. + * @param aCompare Function which takes two elements and returns -1, 0, or 1. + * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or + * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + */ +function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { + // This function terminates when one of the following is true: + // + // 1. We find the exact element we are looking for. + // + // 2. We did not find the exact element, but we can return the index of + // the next-closest element. + // + // 3. We did not find the exact element, and there is no next-closest + // element than the one we are searching for, so we return -1. + var mid = Math.floor((aHigh - aLow) / 2) + aLow; + var cmp = aCompare(aNeedle, aHaystack[mid], true); + if (cmp === 0) { + // Found the element we are looking for. + return mid; + } + else if (cmp > 0) { + // Our needle is greater than aHaystack[mid]. + if (aHigh - mid > 1) { + // The element is in the upper half. + return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); + } + + // The exact needle element was not found in this haystack. Determine if + // we are in termination case (3) or (2) and return the appropriate thing. + if (aBias == exports.LEAST_UPPER_BOUND) { + return aHigh < aHaystack.length ? aHigh : -1; + } else { + return mid; + } + } + else { + // Our needle is less than aHaystack[mid]. + if (mid - aLow > 1) { + // The element is in the lower half. + return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); + } + + // we are in termination case (3) or (2) and return the appropriate thing. + if (aBias == exports.LEAST_UPPER_BOUND) { + return mid; + } else { + return aLow < 0 ? -1 : aLow; + } + } +} + +/** + * This is an implementation of binary search which will always try and return + * the index of the closest element if there is no exact hit. This is because + * mappings between original and generated line/col pairs are single points, + * and there is an implicit region between each of them, so a miss just means + * that you aren't on the very start of a region. + * + * @param aNeedle The element you are looking for. + * @param aHaystack The array that is being searched. + * @param aCompare A function which takes the needle and an element in the + * array and returns -1, 0, or 1 depending on whether the needle is less + * than, equal to, or greater than the element, respectively. + * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or + * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. + */ +exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { + if (aHaystack.length === 0) { + return -1; + } + + var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, + aCompare, aBias || exports.GREATEST_LOWER_BOUND); + if (index < 0) { + return -1; + } + + // We have found either the exact element, or the next-closest element than + // the one we are searching for. However, there may be more than one such + // element. Make sure we always return the smallest of these. + while (index - 1 >= 0) { + if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { + break; + } + --index; + } + + return index; +}; +}); + +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +// It turns out that some (most?) JavaScript engines don't self-host +// `Array.prototype.sort`. This makes sense because C++ will likely remain +// faster than JS when doing raw CPU-intensive sorting. However, when using a +// custom comparator function, calling back and forth between the VM's C++ and +// JIT'd JS is rather slow *and* loses JIT type information, resulting in +// worse generated code for the comparator function than would be optimal. In +// fact, when sorting with a comparator, these costs outweigh the benefits of +// sorting in C++. By using our own JS-implemented Quick Sort (below), we get +// a ~3500ms mean speed-up in `bench/bench.html`. + +/** + * Swap the elements indexed by `x` and `y` in the array `ary`. + * + * @param {Array} ary + * The array. + * @param {Number} x + * The index of the first item. + * @param {Number} y + * The index of the second item. + */ +function swap(ary, x, y) { + var temp = ary[x]; + ary[x] = ary[y]; + ary[y] = temp; +} + +/** + * Returns a random integer within the range `low .. high` inclusive. + * + * @param {Number} low + * The lower bound on the range. + * @param {Number} high + * The upper bound on the range. + */ +function randomIntInRange(low, high) { + return Math.round(low + (Math.random() * (high - low))); +} + +/** + * The Quick Sort algorithm. + * + * @param {Array} ary + * An array to sort. + * @param {function} comparator + * Function to use to compare two items. + * @param {Number} p + * Start index of the array + * @param {Number} r + * End index of the array + */ +function doQuickSort(ary, comparator, p, r) { + // If our lower bound is less than our upper bound, we (1) partition the + // array into two pieces and (2) recurse on each half. If it is not, this is + // the empty array and our base case. + + if (p < r) { + // (1) Partitioning. + // + // The partitioning chooses a pivot between `p` and `r` and moves all + // elements that are less than or equal to the pivot to the before it, and + // all the elements that are greater than it after it. The effect is that + // once partition is done, the pivot is in the exact place it will be when + // the array is put in sorted order, and it will not need to be moved + // again. This runs in O(n) time. + + // Always choose a random pivot so that an input array which is reverse + // sorted does not cause O(n^2) running time. + var pivotIndex = randomIntInRange(p, r); + var i = p - 1; + + swap(ary, pivotIndex, r); + var pivot = ary[r]; + + // Immediately after `j` is incremented in this loop, the following hold + // true: + // + // * Every element in `ary[p .. i]` is less than or equal to the pivot. + // + // * Every element in `ary[i+1 .. j-1]` is greater than the pivot. + for (var j = p; j < r; j++) { + if (comparator(ary[j], pivot) <= 0) { + i += 1; + swap(ary, i, j); + } + } + + swap(ary, i + 1, j); + var q = i + 1; + + // (2) Recurse on each half. + + doQuickSort(ary, comparator, p, q - 1); + doQuickSort(ary, comparator, q + 1, r); + } +} + +/** + * Sort the given array in-place with the given comparator function. + * + * @param {Array} ary + * An array to sort. + * @param {function} comparator + * Function to use to compare two items. + */ +var quickSort_1 = function (ary, comparator) { + doQuickSort(ary, comparator, 0, ary.length - 1); +}; + +var quickSort = { + quickSort: quickSort_1 +}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + + + +var ArraySet$2 = arraySet.ArraySet; + +var quickSort$1 = quickSort.quickSort; + +function SourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + + return sourceMap.sections != null + ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL) + : new BasicSourceMapConsumer(sourceMap, aSourceMapURL); +} + +SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) { + return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL); +}; + +/** + * The version of the source mapping spec that we are consuming. + */ +SourceMapConsumer.prototype._version = 3; + +// `__generatedMappings` and `__originalMappings` are arrays that hold the +// parsed mapping coordinates from the source map's "mappings" attribute. They +// are lazily instantiated, accessed via the `_generatedMappings` and +// `_originalMappings` getters respectively, and we only parse the mappings +// and create these arrays once queried for a source location. We jump through +// these hoops because there can be many thousands of mappings, and parsing +// them is expensive, so we only want to do it if we must. +// +// Each object in the arrays is of the form: +// +// { +// generatedLine: The line number in the generated code, +// generatedColumn: The column number in the generated code, +// source: The path to the original source file that generated this +// chunk of code, +// originalLine: The line number in the original source that +// corresponds to this chunk of generated code, +// originalColumn: The column number in the original source that +// corresponds to this chunk of generated code, +// name: The name of the original symbol which generated this chunk of +// code. +// } +// +// All properties except for `generatedLine` and `generatedColumn` can be +// `null`. +// +// `_generatedMappings` is ordered by the generated positions. +// +// `_originalMappings` is ordered by the original positions. + +SourceMapConsumer.prototype.__generatedMappings = null; +Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { + configurable: true, + enumerable: true, + get: function () { + if (!this.__generatedMappings) { + this._parseMappings(this._mappings, this.sourceRoot); + } + + return this.__generatedMappings; + } +}); + +SourceMapConsumer.prototype.__originalMappings = null; +Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { + configurable: true, + enumerable: true, + get: function () { + if (!this.__originalMappings) { + this._parseMappings(this._mappings, this.sourceRoot); + } + + return this.__originalMappings; + } +}); + +SourceMapConsumer.prototype._charIsMappingSeparator = + function SourceMapConsumer_charIsMappingSeparator(aStr, index) { + var c = aStr.charAt(index); + return c === ";" || c === ","; + }; + +/** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ +SourceMapConsumer.prototype._parseMappings = + function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + throw new Error("Subclasses must implement _parseMappings"); + }; + +SourceMapConsumer.GENERATED_ORDER = 1; +SourceMapConsumer.ORIGINAL_ORDER = 2; + +SourceMapConsumer.GREATEST_LOWER_BOUND = 1; +SourceMapConsumer.LEAST_UPPER_BOUND = 2; + +/** + * Iterate over each mapping between an original source/line/column and a + * generated line/column in this source map. + * + * @param Function aCallback + * The function that is called with each mapping. + * @param Object aContext + * Optional. If specified, this object will be the value of `this` every + * time that `aCallback` is called. + * @param aOrder + * Either `SourceMapConsumer.GENERATED_ORDER` or + * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to + * iterate over the mappings sorted by the generated file's line/column + * order or the original's source/line/column order, respectively. Defaults to + * `SourceMapConsumer.GENERATED_ORDER`. + */ +SourceMapConsumer.prototype.eachMapping = + function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { + var context = aContext || null; + var order = aOrder || SourceMapConsumer.GENERATED_ORDER; + + var mappings; + switch (order) { + case SourceMapConsumer.GENERATED_ORDER: + mappings = this._generatedMappings; + break; + case SourceMapConsumer.ORIGINAL_ORDER: + mappings = this._originalMappings; + break; + default: + throw new Error("Unknown order of iteration."); + } + + var sourceRoot = this.sourceRoot; + mappings.map(function (mapping) { + var source = mapping.source === null ? null : this._sources.at(mapping.source); + source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL); + return { + source: source, + generatedLine: mapping.generatedLine, + generatedColumn: mapping.generatedColumn, + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: mapping.name === null ? null : this._names.at(mapping.name) + }; + }, this).forEach(aCallback, context); + }; + +/** + * Returns all generated line and column information for the original source, + * line, and column provided. If no column is provided, returns all mappings + * corresponding to a either the line we are searching for or the next + * closest line that has any mappings. Otherwise, returns all mappings + * corresponding to the given line and either the column we are searching for + * or the next closest column that has any offsets. + * + * The only argument is an object with the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number is 1-based. + * - column: Optional. the column number in the original source. + * The column number is 0-based. + * + * and an array of objects is returned, each with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ +SourceMapConsumer.prototype.allGeneratedPositionsFor = + function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { + var line = util.getArg(aArgs, 'line'); + + // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping + // returns the index of the closest mapping less than the needle. By + // setting needle.originalColumn to 0, we thus find the last mapping for + // the given line, provided such a mapping exists. + var needle = { + source: util.getArg(aArgs, 'source'), + originalLine: line, + originalColumn: util.getArg(aArgs, 'column', 0) + }; + + needle.source = this._findSourceIndex(needle.source); + if (needle.source < 0) { + return []; + } + + var mappings = []; + + var index = this._findMapping(needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + binarySearch.LEAST_UPPER_BOUND); + if (index >= 0) { + var mapping = this._originalMappings[index]; + + if (aArgs.column === undefined) { + var originalLine = mapping.originalLine; + + // Iterate until either we run out of mappings, or we run into + // a mapping for a different line than the one we found. Since + // mappings are sorted, this is guaranteed to find all mappings for + // the line we found. + while (mapping && mapping.originalLine === originalLine) { + mappings.push({ + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }); + + mapping = this._originalMappings[++index]; + } + } else { + var originalColumn = mapping.originalColumn; + + // Iterate until either we run out of mappings, or we run into + // a mapping for a different line than the one we were searching for. + // Since mappings are sorted, this is guaranteed to find all mappings for + // the line we are searching for. + while (mapping && + mapping.originalLine === line && + mapping.originalColumn == originalColumn) { + mappings.push({ + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }); + + mapping = this._originalMappings[++index]; + } + } + } + + return mappings; + }; + +var SourceMapConsumer_1 = SourceMapConsumer; + +/** + * A BasicSourceMapConsumer instance represents a parsed source map which we can + * query for information about the original file positions by giving it a file + * position in the generated source. + * + * The first parameter is the raw source map (either as a JSON string, or + * already parsed to an object). According to the spec, source maps have the + * following attributes: + * + * - version: Which version of the source map spec this map is following. + * - sources: An array of URLs to the original source files. + * - names: An array of identifiers which can be referrenced by individual mappings. + * - sourceRoot: Optional. The URL root from which all sources are relative. + * - sourcesContent: Optional. An array of contents of the original source files. + * - mappings: A string of base64 VLQs which contain the actual mappings. + * - file: Optional. The generated file this source map is associated with. + * + * Here is an example source map, taken from the source map spec[0]: + * + * { + * version : 3, + * file: "out.js", + * sourceRoot : "", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AA,AB;;ABCDE;" + * } + * + * The second parameter, if given, is a string whose value is the URL + * at which the source map was found. This URL is used to compute the + * sources array. + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# + */ +function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + + var version = util.getArg(sourceMap, 'version'); + var sources = util.getArg(sourceMap, 'sources'); + // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which + // requires the array) to play nice here. + var names = util.getArg(sourceMap, 'names', []); + var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); + var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); + var mappings = util.getArg(sourceMap, 'mappings'); + var file = util.getArg(sourceMap, 'file', null); + + // Once again, Sass deviates from the spec and supplies the version as a + // string rather than a number, so we use loose equality checking here. + if (version != this._version) { + throw new Error('Unsupported version: ' + version); + } + + if (sourceRoot) { + sourceRoot = util.normalize(sourceRoot); + } + + sources = sources + .map(String) + // Some source maps produce relative source paths like "./foo.js" instead of + // "foo.js". Normalize these first so that future comparisons will succeed. + // See bugzil.la/1090768. + .map(util.normalize) + // Always ensure that absolute sources are internally stored relative to + // the source root, if the source root is absolute. Not doing this would + // be particularly problematic when the source root is a prefix of the + // source (valid, but why??). See github issue #199 and bugzil.la/1188982. + .map(function (source) { + return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) + ? util.relative(sourceRoot, source) + : source; + }); + + // Pass `true` below to allow duplicate names and sources. While source maps + // are intended to be compressed and deduplicated, the TypeScript compiler + // sometimes generates source maps with duplicates in them. See Github issue + // #72 and bugzil.la/889492. + this._names = ArraySet$2.fromArray(names.map(String), true); + this._sources = ArraySet$2.fromArray(sources, true); + + this._absoluteSources = this._sources.toArray().map(function (s) { + return util.computeSourceURL(sourceRoot, s, aSourceMapURL); + }); + + this.sourceRoot = sourceRoot; + this.sourcesContent = sourcesContent; + this._mappings = mappings; + this._sourceMapURL = aSourceMapURL; + this.file = file; +} + +BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); +BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; + +/** + * Utility function to find the index of a source. Returns -1 if not + * found. + */ +BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) { + var relativeSource = aSource; + if (this.sourceRoot != null) { + relativeSource = util.relative(this.sourceRoot, relativeSource); + } + + if (this._sources.has(relativeSource)) { + return this._sources.indexOf(relativeSource); + } + + // Maybe aSource is an absolute URL as returned by |sources|. In + // this case we can't simply undo the transform. + var i; + for (i = 0; i < this._absoluteSources.length; ++i) { + if (this._absoluteSources[i] == aSource) { + return i; + } + } + + return -1; +}; + +/** + * Create a BasicSourceMapConsumer from a SourceMapGenerator. + * + * @param SourceMapGenerator aSourceMap + * The source map that will be consumed. + * @param String aSourceMapURL + * The URL at which the source map can be found (optional) + * @returns BasicSourceMapConsumer + */ +BasicSourceMapConsumer.fromSourceMap = + function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) { + var smc = Object.create(BasicSourceMapConsumer.prototype); + + var names = smc._names = ArraySet$2.fromArray(aSourceMap._names.toArray(), true); + var sources = smc._sources = ArraySet$2.fromArray(aSourceMap._sources.toArray(), true); + smc.sourceRoot = aSourceMap._sourceRoot; + smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), + smc.sourceRoot); + smc.file = aSourceMap._file; + smc._sourceMapURL = aSourceMapURL; + smc._absoluteSources = smc._sources.toArray().map(function (s) { + return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL); + }); + + // Because we are modifying the entries (by converting string sources and + // names to indices into the sources and names ArraySets), we have to make + // a copy of the entry or else bad things happen. Shared mutable state + // strikes again! See github issue #191. + + var generatedMappings = aSourceMap._mappings.toArray().slice(); + var destGeneratedMappings = smc.__generatedMappings = []; + var destOriginalMappings = smc.__originalMappings = []; + + for (var i = 0, length = generatedMappings.length; i < length; i++) { + var srcMapping = generatedMappings[i]; + var destMapping = new Mapping; + destMapping.generatedLine = srcMapping.generatedLine; + destMapping.generatedColumn = srcMapping.generatedColumn; + + if (srcMapping.source) { + destMapping.source = sources.indexOf(srcMapping.source); + destMapping.originalLine = srcMapping.originalLine; + destMapping.originalColumn = srcMapping.originalColumn; + + if (srcMapping.name) { + destMapping.name = names.indexOf(srcMapping.name); + } + + destOriginalMappings.push(destMapping); + } + + destGeneratedMappings.push(destMapping); + } + + quickSort$1(smc.__originalMappings, util.compareByOriginalPositions); + + return smc; + }; + +/** + * The version of the source mapping spec that we are consuming. + */ +BasicSourceMapConsumer.prototype._version = 3; + +/** + * The list of original sources. + */ +Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { + get: function () { + return this._absoluteSources.slice(); + } +}); + +/** + * Provide the JIT with a nice shape / hidden class. + */ +function Mapping() { + this.generatedLine = 0; + this.generatedColumn = 0; + this.source = null; + this.originalLine = null; + this.originalColumn = null; + this.name = null; +} + +/** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ +BasicSourceMapConsumer.prototype._parseMappings = + function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + var generatedLine = 1; + var previousGeneratedColumn = 0; + var previousOriginalLine = 0; + var previousOriginalColumn = 0; + var previousSource = 0; + var previousName = 0; + var length = aStr.length; + var index = 0; + var cachedSegments = {}; + var temp = {}; + var originalMappings = []; + var generatedMappings = []; + var mapping, str, segment, end, value; + + while (index < length) { + if (aStr.charAt(index) === ';') { + generatedLine++; + index++; + previousGeneratedColumn = 0; + } + else if (aStr.charAt(index) === ',') { + index++; + } + else { + mapping = new Mapping(); + mapping.generatedLine = generatedLine; + + // Because each offset is encoded relative to the previous one, + // many segments often have the same encoding. We can exploit this + // fact by caching the parsed variable length fields of each segment, + // allowing us to avoid a second parse if we encounter the same + // segment again. + for (end = index; end < length; end++) { + if (this._charIsMappingSeparator(aStr, end)) { + break; + } + } + str = aStr.slice(index, end); + + segment = cachedSegments[str]; + if (segment) { + index += str.length; + } else { + segment = []; + while (index < end) { + base64Vlq.decode(aStr, index, temp); + value = temp.value; + index = temp.rest; + segment.push(value); + } + + if (segment.length === 2) { + throw new Error('Found a source, but no line and column'); + } + + if (segment.length === 3) { + throw new Error('Found a source and line, but no column'); + } + + cachedSegments[str] = segment; + } + + // Generated column. + mapping.generatedColumn = previousGeneratedColumn + segment[0]; + previousGeneratedColumn = mapping.generatedColumn; + + if (segment.length > 1) { + // Original source. + mapping.source = previousSource + segment[1]; + previousSource += segment[1]; + + // Original line. + mapping.originalLine = previousOriginalLine + segment[2]; + previousOriginalLine = mapping.originalLine; + // Lines are stored 0-based + mapping.originalLine += 1; + + // Original column. + mapping.originalColumn = previousOriginalColumn + segment[3]; + previousOriginalColumn = mapping.originalColumn; + + if (segment.length > 4) { + // Original name. + mapping.name = previousName + segment[4]; + previousName += segment[4]; + } + } + + generatedMappings.push(mapping); + if (typeof mapping.originalLine === 'number') { + originalMappings.push(mapping); + } + } + } + + quickSort$1(generatedMappings, util.compareByGeneratedPositionsDeflated); + this.__generatedMappings = generatedMappings; + + quickSort$1(originalMappings, util.compareByOriginalPositions); + this.__originalMappings = originalMappings; + }; + +/** + * Find the mapping that best matches the hypothetical "needle" mapping that + * we are searching for in the given "haystack" of mappings. + */ +BasicSourceMapConsumer.prototype._findMapping = + function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, + aColumnName, aComparator, aBias) { + // To return the position we are searching for, we must first find the + // mapping for the given position and then return the opposite position it + // points to. Because the mappings are sorted, we can use binary search to + // find the best mapping. + + if (aNeedle[aLineName] <= 0) { + throw new TypeError('Line must be greater than or equal to 1, got ' + + aNeedle[aLineName]); + } + if (aNeedle[aColumnName] < 0) { + throw new TypeError('Column must be greater than or equal to 0, got ' + + aNeedle[aColumnName]); + } + + return binarySearch.search(aNeedle, aMappings, aComparator, aBias); + }; + +/** + * Compute the last column for each generated mapping. The last column is + * inclusive. + */ +BasicSourceMapConsumer.prototype.computeColumnSpans = + function SourceMapConsumer_computeColumnSpans() { + for (var index = 0; index < this._generatedMappings.length; ++index) { + var mapping = this._generatedMappings[index]; + + // Mappings do not contain a field for the last generated columnt. We + // can come up with an optimistic estimate, however, by assuming that + // mappings are contiguous (i.e. given two consecutive mappings, the + // first mapping ends where the second one starts). + if (index + 1 < this._generatedMappings.length) { + var nextMapping = this._generatedMappings[index + 1]; + + if (mapping.generatedLine === nextMapping.generatedLine) { + mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; + continue; + } + } + + // The last mapping for each line spans the entire line. + mapping.lastGeneratedColumn = Infinity; + } + }; + +/** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. The line number + * is 1-based. + * - column: The column number in the generated source. The column + * number is 0-based. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. The + * line number is 1-based. + * - column: The column number in the original source, or null. The + * column number is 0-based. + * - name: The original identifier, or null. + */ +BasicSourceMapConsumer.prototype.originalPositionFor = + function SourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, 'line'), + generatedColumn: util.getArg(aArgs, 'column') + }; + + var index = this._findMapping( + needle, + this._generatedMappings, + "generatedLine", + "generatedColumn", + util.compareByGeneratedPositionsDeflated, + util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) + ); + + if (index >= 0) { + var mapping = this._generatedMappings[index]; + + if (mapping.generatedLine === needle.generatedLine) { + var source = util.getArg(mapping, 'source', null); + if (source !== null) { + source = this._sources.at(source); + source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL); + } + var name = util.getArg(mapping, 'name', null); + if (name !== null) { + name = this._names.at(name); + } + return { + source: source, + line: util.getArg(mapping, 'originalLine', null), + column: util.getArg(mapping, 'originalColumn', null), + name: name + }; + } + } + + return { + source: null, + line: null, + column: null, + name: null + }; + }; + +/** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ +BasicSourceMapConsumer.prototype.hasContentsOfAllSources = + function BasicSourceMapConsumer_hasContentsOfAllSources() { + if (!this.sourcesContent) { + return false; + } + return this.sourcesContent.length >= this._sources.size() && + !this.sourcesContent.some(function (sc) { return sc == null; }); + }; + +/** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ +BasicSourceMapConsumer.prototype.sourceContentFor = + function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + if (!this.sourcesContent) { + return null; + } + + var index = this._findSourceIndex(aSource); + if (index >= 0) { + return this.sourcesContent[index]; + } + + var relativeSource = aSource; + if (this.sourceRoot != null) { + relativeSource = util.relative(this.sourceRoot, relativeSource); + } + + var url; + if (this.sourceRoot != null + && (url = util.urlParse(this.sourceRoot))) { + // XXX: file:// URIs and absolute paths lead to unexpected behavior for + // many users. We can help them out when they expect file:// URIs to + // behave like it would if they were running a local HTTP server. See + // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. + var fileUriAbsPath = relativeSource.replace(/^file:\/\//, ""); + if (url.scheme == "file" + && this._sources.has(fileUriAbsPath)) { + return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] + } + + if ((!url.path || url.path == "/") + && this._sources.has("/" + relativeSource)) { + return this.sourcesContent[this._sources.indexOf("/" + relativeSource)]; + } + } + + // This function is used recursively from + // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we + // don't want to throw if we can't find the source - we just want to + // return null, so we provide a flag to exit gracefully. + if (nullOnMissing) { + return null; + } + else { + throw new Error('"' + relativeSource + '" is not in the SourceMap.'); + } + }; + +/** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number + * is 1-based. + * - column: The column number in the original source. The column + * number is 0-based. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ +BasicSourceMapConsumer.prototype.generatedPositionFor = + function SourceMapConsumer_generatedPositionFor(aArgs) { + var source = util.getArg(aArgs, 'source'); + source = this._findSourceIndex(source); + if (source < 0) { + return { + line: null, + column: null, + lastColumn: null + }; + } + + var needle = { + source: source, + originalLine: util.getArg(aArgs, 'line'), + originalColumn: util.getArg(aArgs, 'column') + }; + + var index = this._findMapping( + needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) + ); + + if (index >= 0) { + var mapping = this._originalMappings[index]; + + if (mapping.source === needle.source) { + return { + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }; + } + } + + return { + line: null, + column: null, + lastColumn: null + }; + }; + +var BasicSourceMapConsumer_1 = BasicSourceMapConsumer; + +/** + * An IndexedSourceMapConsumer instance represents a parsed source map which + * we can query for information. It differs from BasicSourceMapConsumer in + * that it takes "indexed" source maps (i.e. ones with a "sections" field) as + * input. + * + * The first parameter is a raw source map (either as a JSON string, or already + * parsed to an object). According to the spec for indexed source maps, they + * have the following attributes: + * + * - version: Which version of the source map spec this map is following. + * - file: Optional. The generated file this source map is associated with. + * - sections: A list of section definitions. + * + * Each value under the "sections" field has two fields: + * - offset: The offset into the original specified at which this section + * begins to apply, defined as an object with a "line" and "column" + * field. + * - map: A source map definition. This source map could also be indexed, + * but doesn't have to be. + * + * Instead of the "map" field, it's also possible to have a "url" field + * specifying a URL to retrieve a source map from, but that's currently + * unsupported. + * + * Here's an example source map, taken from the source map spec[0], but + * modified to omit a section which uses the "url" field. + * + * { + * version : 3, + * file: "app.js", + * sections: [{ + * offset: {line:100, column:10}, + * map: { + * version : 3, + * file: "section.js", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AAAA,E;;ABCDE;" + * } + * }], + * } + * + * The second parameter, if given, is a string whose value is the URL + * at which the source map was found. This URL is used to compute the + * sources array. + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt + */ +function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + + var version = util.getArg(sourceMap, 'version'); + var sections = util.getArg(sourceMap, 'sections'); + + if (version != this._version) { + throw new Error('Unsupported version: ' + version); + } + + this._sources = new ArraySet$2(); + this._names = new ArraySet$2(); + + var lastOffset = { + line: -1, + column: 0 + }; + this._sections = sections.map(function (s) { + if (s.url) { + // The url field will require support for asynchronicity. + // See https://github.com/mozilla/source-map/issues/16 + throw new Error('Support for url field in sections not implemented.'); + } + var offset = util.getArg(s, 'offset'); + var offsetLine = util.getArg(offset, 'line'); + var offsetColumn = util.getArg(offset, 'column'); + + if (offsetLine < lastOffset.line || + (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) { + throw new Error('Section offsets must be ordered and non-overlapping.'); + } + lastOffset = offset; + + return { + generatedOffset: { + // The offset fields are 0-based, but we use 1-based indices when + // encoding/decoding from VLQ. + generatedLine: offsetLine + 1, + generatedColumn: offsetColumn + 1 + }, + consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL) + } + }); +} + +IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); +IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; + +/** + * The version of the source mapping spec that we are consuming. + */ +IndexedSourceMapConsumer.prototype._version = 3; + +/** + * The list of original sources. + */ +Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', { + get: function () { + var sources = []; + for (var i = 0; i < this._sections.length; i++) { + for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { + sources.push(this._sections[i].consumer.sources[j]); + } + } + return sources; + } +}); + +/** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. The line number + * is 1-based. + * - column: The column number in the generated source. The column + * number is 0-based. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. The + * line number is 1-based. + * - column: The column number in the original source, or null. The + * column number is 0-based. + * - name: The original identifier, or null. + */ +IndexedSourceMapConsumer.prototype.originalPositionFor = + function IndexedSourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, 'line'), + generatedColumn: util.getArg(aArgs, 'column') + }; + + // Find the section containing the generated position we're trying to map + // to an original position. + var sectionIndex = binarySearch.search(needle, this._sections, + function(needle, section) { + var cmp = needle.generatedLine - section.generatedOffset.generatedLine; + if (cmp) { + return cmp; + } + + return (needle.generatedColumn - + section.generatedOffset.generatedColumn); + }); + var section = this._sections[sectionIndex]; + + if (!section) { + return { + source: null, + line: null, + column: null, + name: null + }; + } + + return section.consumer.originalPositionFor({ + line: needle.generatedLine - + (section.generatedOffset.generatedLine - 1), + column: needle.generatedColumn - + (section.generatedOffset.generatedLine === needle.generatedLine + ? section.generatedOffset.generatedColumn - 1 + : 0), + bias: aArgs.bias + }); + }; + +/** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ +IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = + function IndexedSourceMapConsumer_hasContentsOfAllSources() { + return this._sections.every(function (s) { + return s.consumer.hasContentsOfAllSources(); + }); + }; + +/** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ +IndexedSourceMapConsumer.prototype.sourceContentFor = + function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + + var content = section.consumer.sourceContentFor(aSource, true); + if (content) { + return content; + } + } + if (nullOnMissing) { + return null; + } + else { + throw new Error('"' + aSource + '" is not in the SourceMap.'); + } + }; + +/** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number + * is 1-based. + * - column: The column number in the original source. The column + * number is 0-based. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ +IndexedSourceMapConsumer.prototype.generatedPositionFor = + function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + + // Only consider this section if the requested source is in the list of + // sources of the consumer. + if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) { + continue; + } + var generatedPosition = section.consumer.generatedPositionFor(aArgs); + if (generatedPosition) { + var ret = { + line: generatedPosition.line + + (section.generatedOffset.generatedLine - 1), + column: generatedPosition.column + + (section.generatedOffset.generatedLine === generatedPosition.line + ? section.generatedOffset.generatedColumn - 1 + : 0) + }; + return ret; + } + } + + return { + line: null, + column: null + }; + }; + +/** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ +IndexedSourceMapConsumer.prototype._parseMappings = + function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { + this.__generatedMappings = []; + this.__originalMappings = []; + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + var sectionMappings = section.consumer._generatedMappings; + for (var j = 0; j < sectionMappings.length; j++) { + var mapping = sectionMappings[j]; + + var source = section.consumer._sources.at(mapping.source); + source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL); + this._sources.add(source); + source = this._sources.indexOf(source); + + var name = null; + if (mapping.name) { + name = section.consumer._names.at(mapping.name); + this._names.add(name); + name = this._names.indexOf(name); + } + + // The mappings coming from the consumer for the section have + // generated positions relative to the start of the section, so we + // need to offset them to be relative to the start of the concatenated + // generated file. + var adjustedMapping = { + source: source, + generatedLine: mapping.generatedLine + + (section.generatedOffset.generatedLine - 1), + generatedColumn: mapping.generatedColumn + + (section.generatedOffset.generatedLine === mapping.generatedLine + ? section.generatedOffset.generatedColumn - 1 + : 0), + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: name + }; + + this.__generatedMappings.push(adjustedMapping); + if (typeof adjustedMapping.originalLine === 'number') { + this.__originalMappings.push(adjustedMapping); + } + } + } + + quickSort$1(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); + quickSort$1(this.__originalMappings, util.compareByOriginalPositions); + }; + +var IndexedSourceMapConsumer_1 = IndexedSourceMapConsumer; + +var sourceMapConsumer = { + SourceMapConsumer: SourceMapConsumer_1, + BasicSourceMapConsumer: BasicSourceMapConsumer_1, + IndexedSourceMapConsumer: IndexedSourceMapConsumer_1 +}; + +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var SourceMapGenerator$1 = sourceMapGenerator.SourceMapGenerator; + + +// Matches a Windows-style `\r\n` newline or a `\n` newline used by all other +// operating systems these days (capturing the result). +var REGEX_NEWLINE = /(\r?\n)/; + +// Newline character code for charCodeAt() comparisons +var NEWLINE_CODE = 10; + +// Private symbol for identifying `SourceNode`s when multiple versions of +// the source-map library are loaded. This MUST NOT CHANGE across +// versions! +var isSourceNode = "$$$isSourceNode$$$"; + +/** + * SourceNodes provide a way to abstract over interpolating/concatenating + * snippets of generated JavaScript source code while maintaining the line and + * column information associated with the original source code. + * + * @param aLine The original line number. + * @param aColumn The original column number. + * @param aSource The original source's filename. + * @param aChunks Optional. An array of strings which are snippets of + * generated JS, or other SourceNodes. + * @param aName The original identifier. + */ +function SourceNode(aLine, aColumn, aSource, aChunks, aName) { + this.children = []; + this.sourceContents = {}; + this.line = aLine == null ? null : aLine; + this.column = aColumn == null ? null : aColumn; + this.source = aSource == null ? null : aSource; + this.name = aName == null ? null : aName; + this[isSourceNode] = true; + if (aChunks != null) this.add(aChunks); +} + +/** + * Creates a SourceNode from generated code and a SourceMapConsumer. + * + * @param aGeneratedCode The generated code + * @param aSourceMapConsumer The SourceMap for the generated code + * @param aRelativePath Optional. The path that relative sources in the + * SourceMapConsumer should be relative to. + */ +SourceNode.fromStringWithSourceMap = + function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { + // The SourceNode we want to fill with the generated code + // and the SourceMap + var node = new SourceNode(); + + // All even indices of this array are one line of the generated code, + // while all odd indices are the newlines between two adjacent lines + // (since `REGEX_NEWLINE` captures its match). + // Processed fragments are accessed by calling `shiftNextLine`. + var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); + var remainingLinesIndex = 0; + var shiftNextLine = function() { + var lineContents = getNextLine(); + // The last line of a file might not have a newline. + var newLine = getNextLine() || ""; + return lineContents + newLine; + + function getNextLine() { + return remainingLinesIndex < remainingLines.length ? + remainingLines[remainingLinesIndex++] : undefined; + } + }; + + // We need to remember the position of "remainingLines" + var lastGeneratedLine = 1, lastGeneratedColumn = 0; + + // The generate SourceNodes we need a code range. + // To extract it current and last mapping is used. + // Here we store the last mapping. + var lastMapping = null; + + aSourceMapConsumer.eachMapping(function (mapping) { + if (lastMapping !== null) { + // We add the code from "lastMapping" to "mapping": + // First check if there is a new line in between. + if (lastGeneratedLine < mapping.generatedLine) { + // Associate first line with "lastMapping" + addMappingWithCode(lastMapping, shiftNextLine()); + lastGeneratedLine++; + lastGeneratedColumn = 0; + // The remaining code is added without mapping + } else { + // There is no new line in between. + // Associate the code between "lastGeneratedColumn" and + // "mapping.generatedColumn" with "lastMapping" + var nextLine = remainingLines[remainingLinesIndex] || ''; + var code = nextLine.substr(0, mapping.generatedColumn - + lastGeneratedColumn); + remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - + lastGeneratedColumn); + lastGeneratedColumn = mapping.generatedColumn; + addMappingWithCode(lastMapping, code); + // No more remaining code, continue + lastMapping = mapping; + return; + } + } + // We add the generated code until the first mapping + // to the SourceNode without any mapping. + // Each line is added as separate string. + while (lastGeneratedLine < mapping.generatedLine) { + node.add(shiftNextLine()); + lastGeneratedLine++; + } + if (lastGeneratedColumn < mapping.generatedColumn) { + var nextLine = remainingLines[remainingLinesIndex] || ''; + node.add(nextLine.substr(0, mapping.generatedColumn)); + remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); + lastGeneratedColumn = mapping.generatedColumn; + } + lastMapping = mapping; + }, this); + // We have processed all mappings. + if (remainingLinesIndex < remainingLines.length) { + if (lastMapping) { + // Associate the remaining code in the current line with "lastMapping" + addMappingWithCode(lastMapping, shiftNextLine()); + } + // and add the remaining lines without any mapping + node.add(remainingLines.splice(remainingLinesIndex).join("")); + } + + // Copy sourcesContent into SourceNode + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aRelativePath != null) { + sourceFile = util.join(aRelativePath, sourceFile); + } + node.setSourceContent(sourceFile, content); + } + }); + + return node; + + function addMappingWithCode(mapping, code) { + if (mapping === null || mapping.source === undefined) { + node.add(code); + } else { + var source = aRelativePath + ? util.join(aRelativePath, mapping.source) + : mapping.source; + node.add(new SourceNode(mapping.originalLine, + mapping.originalColumn, + source, + code, + mapping.name)); + } + } + }; + +/** + * Add a chunk of generated JS to this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ +SourceNode.prototype.add = function SourceNode_add(aChunk) { + if (Array.isArray(aChunk)) { + aChunk.forEach(function (chunk) { + this.add(chunk); + }, this); + } + else if (aChunk[isSourceNode] || typeof aChunk === "string") { + if (aChunk) { + this.children.push(aChunk); + } + } + else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; +}; + +/** + * Add a chunk of generated JS to the beginning of this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ +SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { + if (Array.isArray(aChunk)) { + for (var i = aChunk.length-1; i >= 0; i--) { + this.prepend(aChunk[i]); + } + } + else if (aChunk[isSourceNode] || typeof aChunk === "string") { + this.children.unshift(aChunk); + } + else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; +}; + +/** + * Walk over the tree of JS snippets in this node and its children. The + * walking function is called once for each snippet of JS and is passed that + * snippet and the its original associated source's line/column location. + * + * @param aFn The traversal function. + */ +SourceNode.prototype.walk = function SourceNode_walk(aFn) { + var chunk; + for (var i = 0, len = this.children.length; i < len; i++) { + chunk = this.children[i]; + if (chunk[isSourceNode]) { + chunk.walk(aFn); + } + else { + if (chunk !== '') { + aFn(chunk, { source: this.source, + line: this.line, + column: this.column, + name: this.name }); + } + } + } +}; + +/** + * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between + * each of `this.children`. + * + * @param aSep The separator. + */ +SourceNode.prototype.join = function SourceNode_join(aSep) { + var newChildren; + var i; + var len = this.children.length; + if (len > 0) { + newChildren = []; + for (i = 0; i < len-1; i++) { + newChildren.push(this.children[i]); + newChildren.push(aSep); + } + newChildren.push(this.children[i]); + this.children = newChildren; + } + return this; +}; + +/** + * Call String.prototype.replace on the very right-most source snippet. Useful + * for trimming whitespace from the end of a source node, etc. + * + * @param aPattern The pattern to replace. + * @param aReplacement The thing to replace the pattern with. + */ +SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { + var lastChild = this.children[this.children.length - 1]; + if (lastChild[isSourceNode]) { + lastChild.replaceRight(aPattern, aReplacement); + } + else if (typeof lastChild === 'string') { + this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); + } + else { + this.children.push(''.replace(aPattern, aReplacement)); + } + return this; +}; + +/** + * Set the source content for a source file. This will be added to the SourceMapGenerator + * in the sourcesContent field. + * + * @param aSourceFile The filename of the source file + * @param aSourceContent The content of the source file + */ +SourceNode.prototype.setSourceContent = + function SourceNode_setSourceContent(aSourceFile, aSourceContent) { + this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; + }; + +/** + * Walk over the tree of SourceNodes. The walking function is called for each + * source file content and is passed the filename and source content. + * + * @param aFn The traversal function. + */ +SourceNode.prototype.walkSourceContents = + function SourceNode_walkSourceContents(aFn) { + for (var i = 0, len = this.children.length; i < len; i++) { + if (this.children[i][isSourceNode]) { + this.children[i].walkSourceContents(aFn); + } + } + + var sources = Object.keys(this.sourceContents); + for (var i = 0, len = sources.length; i < len; i++) { + aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); + } + }; + +/** + * Return the string representation of this source node. Walks over the tree + * and concatenates all the various snippets together to one string. + */ +SourceNode.prototype.toString = function SourceNode_toString() { + var str = ""; + this.walk(function (chunk) { + str += chunk; + }); + return str; +}; + +/** + * Returns the string representation of this source node along with a source + * map. + */ +SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { + var generated = { + code: "", + line: 1, + column: 0 + }; + var map = new SourceMapGenerator$1(aArgs); + var sourceMappingActive = false; + var lastOriginalSource = null; + var lastOriginalLine = null; + var lastOriginalColumn = null; + var lastOriginalName = null; + this.walk(function (chunk, original) { + generated.code += chunk; + if (original.source !== null + && original.line !== null + && original.column !== null) { + if(lastOriginalSource !== original.source + || lastOriginalLine !== original.line + || lastOriginalColumn !== original.column + || lastOriginalName !== original.name) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + lastOriginalSource = original.source; + lastOriginalLine = original.line; + lastOriginalColumn = original.column; + lastOriginalName = original.name; + sourceMappingActive = true; + } else if (sourceMappingActive) { + map.addMapping({ + generated: { + line: generated.line, + column: generated.column + } + }); + lastOriginalSource = null; + sourceMappingActive = false; + } + for (var idx = 0, length = chunk.length; idx < length; idx++) { + if (chunk.charCodeAt(idx) === NEWLINE_CODE) { + generated.line++; + generated.column = 0; + // Mappings end at eol + if (idx + 1 === length) { + lastOriginalSource = null; + sourceMappingActive = false; + } else if (sourceMappingActive) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + } else { + generated.column++; + } + } + }); + this.walkSourceContents(function (sourceFile, sourceContent) { + map.setSourceContent(sourceFile, sourceContent); + }); + + return { code: generated.code, map: map }; +}; + +var SourceNode_1 = SourceNode; + +var sourceNode = { + SourceNode: SourceNode_1 +}; + +/* + * Copyright 2009-2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE.txt or: + * http://opensource.org/licenses/BSD-3-Clause + */ +var SourceMapGenerator$2 = sourceMapGenerator.SourceMapGenerator; +var SourceMapConsumer$1 = sourceMapConsumer.SourceMapConsumer; +var SourceNode$1 = sourceNode.SourceNode; + +var sourceMap = { + SourceMapGenerator: SourceMapGenerator$2, + SourceMapConsumer: SourceMapConsumer$1, + SourceNode: SourceNode$1 +}; + +var codeGen = createCommonjsModule(function (module, exports) { + +exports.__esModule = true; + + + +var SourceNode = undefined; + +try { + /* istanbul ignore next */ + if (typeof undefined !== 'function' || !undefined.amd) { + // We don't support this in AMD environments. For these environments, we asusme that + // they are running on the browser and thus have no need for the source-map library. + var SourceMap = sourceMap; + SourceNode = SourceMap.SourceNode; + } +} catch (err) {} +/* NOP */ + +/* istanbul ignore if: tested but not covered in istanbul due to dist build */ +if (!SourceNode) { + SourceNode = function (line, column, srcFile, chunks) { + this.src = ''; + if (chunks) { + this.add(chunks); + } + }; + /* istanbul ignore next */ + SourceNode.prototype = { + add: function add(chunks) { + if (utils$2.isArray(chunks)) { + chunks = chunks.join(''); + } + this.src += chunks; + }, + prepend: function prepend(chunks) { + if (utils$2.isArray(chunks)) { + chunks = chunks.join(''); + } + this.src = chunks + this.src; + }, + toStringWithSourceMap: function toStringWithSourceMap() { + return { code: this.toString() }; + }, + toString: function toString() { + return this.src; + } + }; +} + +function castChunk(chunk, codeGen, loc) { + if (utils$2.isArray(chunk)) { + var ret = []; + + for (var i = 0, len = chunk.length; i < len; i++) { + ret.push(codeGen.wrap(chunk[i], loc)); + } + return ret; + } else if (typeof chunk === 'boolean' || typeof chunk === 'number') { + // Handle primitives that the SourceNode will throw up on + return chunk + ''; + } + return chunk; +} + +function CodeGen(srcFile) { + this.srcFile = srcFile; + this.source = []; +} + +CodeGen.prototype = { + isEmpty: function isEmpty() { + return !this.source.length; + }, + prepend: function prepend(source, loc) { + this.source.unshift(this.wrap(source, loc)); + }, + push: function push(source, loc) { + this.source.push(this.wrap(source, loc)); + }, + + merge: function merge() { + var source = this.empty(); + this.each(function (line) { + source.add([' ', line, '\n']); + }); + return source; + }, + + each: function each(iter) { + for (var i = 0, len = this.source.length; i < len; i++) { + iter(this.source[i]); + } + }, + + empty: function empty() { + var loc = this.currentLocation || { start: {} }; + return new SourceNode(loc.start.line, loc.start.column, this.srcFile); + }, + wrap: function wrap(chunk) { + var loc = arguments.length <= 1 || arguments[1] === undefined ? this.currentLocation || { start: {} } : arguments[1]; + + if (chunk instanceof SourceNode) { + return chunk; + } + + chunk = castChunk(chunk, this, loc); + + return new SourceNode(loc.start.line, loc.start.column, this.srcFile, chunk); + }, + + functionCall: function functionCall(fn, type, params) { + params = this.generateList(params); + return this.wrap([fn, type ? '.' + type + '(' : '(', params, ')']); + }, + + quotedString: function quotedString(str) { + return '"' + (str + '').replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\n/g, '\\n').replace(/\r/g, '\\r').replace(/\u2028/g, '\\u2028') // Per Ecma-262 7.3 + 7.8.4 + .replace(/\u2029/g, '\\u2029') + '"'; + }, + + objectLiteral: function objectLiteral(obj) { + // istanbul ignore next + + var _this = this; + + var pairs = []; + + Object.keys(obj).forEach(function (key) { + var value = castChunk(obj[key], _this); + if (value !== 'undefined') { + pairs.push([_this.quotedString(key), ':', value]); + } + }); + + var ret = this.generateList(pairs); + ret.prepend('{'); + ret.add('}'); + return ret; + }, + + generateList: function generateList(entries) { + var ret = this.empty(); + + for (var i = 0, len = entries.length; i < len; i++) { + if (i) { + ret.add(','); + } + + ret.add(castChunk(entries[i], this)); + } + + return ret; + }, + + generateArray: function generateArray(entries) { + var ret = this.generateList(entries); + ret.prepend('['); + ret.add(']'); + + return ret; + } +}; + +exports['default'] = CodeGen; +module.exports = exports['default']; + +}); + +var javascriptCompiler = createCommonjsModule(function (module, exports) { + +exports.__esModule = true; +// istanbul ignore next + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + + + + +var _exception2 = _interopRequireDefault(exception); + + + + + +var _codeGen2 = _interopRequireDefault(codeGen); + +function Literal(value) { + this.value = value; +} + +function JavaScriptCompiler() {} + +JavaScriptCompiler.prototype = { + // PUBLIC API: You can override these methods in a subclass to provide + // alternative compiled forms for name lookup and buffering semantics + nameLookup: function nameLookup(parent, name /*, type */) { + return this.internalNameLookup(parent, name); + }, + depthedLookup: function depthedLookup(name) { + return [this.aliasable('container.lookup'), '(depths, "', name, '")']; + }, + + compilerInfo: function compilerInfo() { + var revision = base.COMPILER_REVISION, + versions = base.REVISION_CHANGES[revision]; + return [revision, versions]; + }, + + appendToBuffer: function appendToBuffer(source, location, explicit) { + // Force a source as this simplifies the merge logic. + if (!utils$2.isArray(source)) { + source = [source]; + } + source = this.source.wrap(source, location); + + if (this.environment.isSimple) { + return ['return ', source, ';']; + } else if (explicit) { + // This is a case where the buffer operation occurs as a child of another + // construct, generally braces. We have to explicitly output these buffer + // operations to ensure that the emitted code goes in the correct location. + return ['buffer += ', source, ';']; + } else { + source.appendToBuffer = true; + return source; + } + }, + + initializeBuffer: function initializeBuffer() { + return this.quotedString(''); + }, + // END PUBLIC API + internalNameLookup: function internalNameLookup(parent, name) { + this.lookupPropertyFunctionIsUsed = true; + return ['lookupProperty(', parent, ',', JSON.stringify(name), ')']; + }, + + lookupPropertyFunctionIsUsed: false, + + compile: function compile(environment, options, context, asObject) { + this.environment = environment; + this.options = options; + this.stringParams = this.options.stringParams; + this.trackIds = this.options.trackIds; + this.precompile = !asObject; + + this.name = this.environment.name; + this.isChild = !!context; + this.context = context || { + decorators: [], + programs: [], + environments: [] + }; + + this.preamble(); + + this.stackSlot = 0; + this.stackVars = []; + this.aliases = {}; + this.registers = { list: [] }; + this.hashes = []; + this.compileStack = []; + this.inlineStack = []; + this.blockParams = []; + + this.compileChildren(environment, options); + + this.useDepths = this.useDepths || environment.useDepths || environment.useDecorators || this.options.compat; + this.useBlockParams = this.useBlockParams || environment.useBlockParams; + + var opcodes = environment.opcodes, + opcode = undefined, + firstLoc = undefined, + i = undefined, + l = undefined; + + for (i = 0, l = opcodes.length; i < l; i++) { + opcode = opcodes[i]; + + this.source.currentLocation = opcode.loc; + firstLoc = firstLoc || opcode.loc; + this[opcode.opcode].apply(this, opcode.args); + } + + // Flush any trailing content that might be pending. + this.source.currentLocation = firstLoc; + this.pushSource(''); + + /* istanbul ignore next */ + if (this.stackSlot || this.inlineStack.length || this.compileStack.length) { + throw new _exception2['default']('Compile completed with content left on stack'); + } + + if (!this.decorators.isEmpty()) { + this.useDecorators = true; + + this.decorators.prepend(['var decorators = container.decorators, ', this.lookupPropertyFunctionVarDeclaration(), ';\n']); + this.decorators.push('return fn;'); + + if (asObject) { + this.decorators = Function.apply(this, ['fn', 'props', 'container', 'depth0', 'data', 'blockParams', 'depths', this.decorators.merge()]); + } else { + this.decorators.prepend('function(fn, props, container, depth0, data, blockParams, depths) {\n'); + this.decorators.push('}\n'); + this.decorators = this.decorators.merge(); + } + } else { + this.decorators = undefined; + } + + var fn = this.createFunctionContext(asObject); + if (!this.isChild) { + var ret = { + compiler: this.compilerInfo(), + main: fn + }; + + if (this.decorators) { + ret.main_d = this.decorators; // eslint-disable-line camelcase + ret.useDecorators = true; + } + + var _context = this.context; + var programs = _context.programs; + var decorators = _context.decorators; + + for (i = 0, l = programs.length; i < l; i++) { + if (programs[i]) { + ret[i] = programs[i]; + if (decorators[i]) { + ret[i + '_d'] = decorators[i]; + ret.useDecorators = true; + } + } + } + + if (this.environment.usePartial) { + ret.usePartial = true; + } + if (this.options.data) { + ret.useData = true; + } + if (this.useDepths) { + ret.useDepths = true; + } + if (this.useBlockParams) { + ret.useBlockParams = true; + } + if (this.options.compat) { + ret.compat = true; + } + + if (!asObject) { + ret.compiler = JSON.stringify(ret.compiler); + + this.source.currentLocation = { start: { line: 1, column: 0 } }; + ret = this.objectLiteral(ret); + + if (options.srcName) { + ret = ret.toStringWithSourceMap({ file: options.destName }); + ret.map = ret.map && ret.map.toString(); + } else { + ret = ret.toString(); + } + } else { + ret.compilerOptions = this.options; + } + + return ret; + } else { + return fn; + } + }, + + preamble: function preamble() { + // track the last context pushed into place to allow skipping the + // getContext opcode when it would be a noop + this.lastContext = 0; + this.source = new _codeGen2['default'](this.options.srcName); + this.decorators = new _codeGen2['default'](this.options.srcName); + }, + + createFunctionContext: function createFunctionContext(asObject) { + // istanbul ignore next + + var _this = this; + + var varDeclarations = ''; + + var locals = this.stackVars.concat(this.registers.list); + if (locals.length > 0) { + varDeclarations += ', ' + locals.join(', '); + } + + // Generate minimizer alias mappings + // + // When using true SourceNodes, this will update all references to the given alias + // as the source nodes are reused in situ. For the non-source node compilation mode, + // aliases will not be used, but this case is already being run on the client and + // we aren't concern about minimizing the template size. + var aliasCount = 0; + Object.keys(this.aliases).forEach(function (alias) { + var node = _this.aliases[alias]; + if (node.children && node.referenceCount > 1) { + varDeclarations += ', alias' + ++aliasCount + '=' + alias; + node.children[0] = 'alias' + aliasCount; + } + }); + + if (this.lookupPropertyFunctionIsUsed) { + varDeclarations += ', ' + this.lookupPropertyFunctionVarDeclaration(); + } + + var params = ['container', 'depth0', 'helpers', 'partials', 'data']; + + if (this.useBlockParams || this.useDepths) { + params.push('blockParams'); + } + if (this.useDepths) { + params.push('depths'); + } + + // Perform a second pass over the output to merge content when possible + var source = this.mergeSource(varDeclarations); + + if (asObject) { + params.push(source); + + return Function.apply(this, params); + } else { + return this.source.wrap(['function(', params.join(','), ') {\n ', source, '}']); + } + }, + mergeSource: function mergeSource(varDeclarations) { + var isSimple = this.environment.isSimple, + appendOnly = !this.forceBuffer, + appendFirst = undefined, + sourceSeen = undefined, + bufferStart = undefined, + bufferEnd = undefined; + this.source.each(function (line) { + if (line.appendToBuffer) { + if (bufferStart) { + line.prepend(' + '); + } else { + bufferStart = line; + } + bufferEnd = line; + } else { + if (bufferStart) { + if (!sourceSeen) { + appendFirst = true; + } else { + bufferStart.prepend('buffer += '); + } + bufferEnd.add(';'); + bufferStart = bufferEnd = undefined; + } + + sourceSeen = true; + if (!isSimple) { + appendOnly = false; + } + } + }); + + if (appendOnly) { + if (bufferStart) { + bufferStart.prepend('return '); + bufferEnd.add(';'); + } else if (!sourceSeen) { + this.source.push('return "";'); + } + } else { + varDeclarations += ', buffer = ' + (appendFirst ? '' : this.initializeBuffer()); + + if (bufferStart) { + bufferStart.prepend('return buffer + '); + bufferEnd.add(';'); + } else { + this.source.push('return buffer;'); + } + } + + if (varDeclarations) { + this.source.prepend('var ' + varDeclarations.substring(2) + (appendFirst ? '' : ';\n')); + } + + return this.source.merge(); + }, + + lookupPropertyFunctionVarDeclaration: function lookupPropertyFunctionVarDeclaration() { + return '\n lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n }\n '.trim(); + }, + + // [blockValue] + // + // On stack, before: hash, inverse, program, value + // On stack, after: return value of blockHelperMissing + // + // The purpose of this opcode is to take a block of the form + // `{{#this.foo}}...{{/this.foo}}`, resolve the value of `foo`, and + // replace it on the stack with the result of properly + // invoking blockHelperMissing. + blockValue: function blockValue(name) { + var blockHelperMissing = this.aliasable('container.hooks.blockHelperMissing'), + params = [this.contextName(0)]; + this.setupHelperArgs(name, 0, params); + + var blockName = this.popStack(); + params.splice(1, 0, blockName); + + this.push(this.source.functionCall(blockHelperMissing, 'call', params)); + }, + + // [ambiguousBlockValue] + // + // On stack, before: hash, inverse, program, value + // Compiler value, before: lastHelper=value of last found helper, if any + // On stack, after, if no lastHelper: same as [blockValue] + // On stack, after, if lastHelper: value + ambiguousBlockValue: function ambiguousBlockValue() { + // We're being a bit cheeky and reusing the options value from the prior exec + var blockHelperMissing = this.aliasable('container.hooks.blockHelperMissing'), + params = [this.contextName(0)]; + this.setupHelperArgs('', 0, params, true); + + this.flushInline(); + + var current = this.topStack(); + params.splice(1, 0, current); + + this.pushSource(['if (!', this.lastHelper, ') { ', current, ' = ', this.source.functionCall(blockHelperMissing, 'call', params), '}']); + }, + + // [appendContent] + // + // On stack, before: ... + // On stack, after: ... + // + // Appends the string value of `content` to the current buffer + appendContent: function appendContent(content) { + if (this.pendingContent) { + content = this.pendingContent + content; + } else { + this.pendingLocation = this.source.currentLocation; + } + + this.pendingContent = content; + }, + + // [append] + // + // On stack, before: value, ... + // On stack, after: ... + // + // Coerces `value` to a String and appends it to the current buffer. + // + // If `value` is truthy, or 0, it is coerced into a string and appended + // Otherwise, the empty string is appended + append: function append() { + if (this.isInline()) { + this.replaceStack(function (current) { + return [' != null ? ', current, ' : ""']; + }); + + this.pushSource(this.appendToBuffer(this.popStack())); + } else { + var local = this.popStack(); + this.pushSource(['if (', local, ' != null) { ', this.appendToBuffer(local, undefined, true), ' }']); + if (this.environment.isSimple) { + this.pushSource(['else { ', this.appendToBuffer("''", undefined, true), ' }']); + } + } + }, + + // [appendEscaped] + // + // On stack, before: value, ... + // On stack, after: ... + // + // Escape `value` and append it to the buffer + appendEscaped: function appendEscaped() { + this.pushSource(this.appendToBuffer([this.aliasable('container.escapeExpression'), '(', this.popStack(), ')'])); + }, + + // [getContext] + // + // On stack, before: ... + // On stack, after: ... + // Compiler value, after: lastContext=depth + // + // Set the value of the `lastContext` compiler value to the depth + getContext: function getContext(depth) { + this.lastContext = depth; + }, + + // [pushContext] + // + // On stack, before: ... + // On stack, after: currentContext, ... + // + // Pushes the value of the current context onto the stack. + pushContext: function pushContext() { + this.pushStackLiteral(this.contextName(this.lastContext)); + }, + + // [lookupOnContext] + // + // On stack, before: ... + // On stack, after: currentContext[name], ... + // + // Looks up the value of `name` on the current context and pushes + // it onto the stack. + lookupOnContext: function lookupOnContext(parts, falsy, strict, scoped) { + var i = 0; + + if (!scoped && this.options.compat && !this.lastContext) { + // The depthed query is expected to handle the undefined logic for the root level that + // is implemented below, so we evaluate that directly in compat mode + this.push(this.depthedLookup(parts[i++])); + } else { + this.pushContext(); + } + + this.resolvePath('context', parts, i, falsy, strict); + }, + + // [lookupBlockParam] + // + // On stack, before: ... + // On stack, after: blockParam[name], ... + // + // Looks up the value of `parts` on the given block param and pushes + // it onto the stack. + lookupBlockParam: function lookupBlockParam(blockParamId, parts) { + this.useBlockParams = true; + + this.push(['blockParams[', blockParamId[0], '][', blockParamId[1], ']']); + this.resolvePath('context', parts, 1); + }, + + // [lookupData] + // + // On stack, before: ... + // On stack, after: data, ... + // + // Push the data lookup operator + lookupData: function lookupData(depth, parts, strict) { + if (!depth) { + this.pushStackLiteral('data'); + } else { + this.pushStackLiteral('container.data(data, ' + depth + ')'); + } + + this.resolvePath('data', parts, 0, true, strict); + }, + + resolvePath: function resolvePath(type, parts, i, falsy, strict) { + // istanbul ignore next + + var _this2 = this; + + if (this.options.strict || this.options.assumeObjects) { + this.push(strictLookup(this.options.strict && strict, this, parts, type)); + return; + } + + var len = parts.length; + for (; i < len; i++) { + /* eslint-disable no-loop-func */ + this.replaceStack(function (current) { + var lookup = _this2.nameLookup(current, parts[i], type); + // We want to ensure that zero and false are handled properly if the context (falsy flag) + // needs to have the special handling for these values. + if (!falsy) { + return [' != null ? ', lookup, ' : ', current]; + } else { + // Otherwise we can use generic falsy handling + return [' && ', lookup]; + } + }); + /* eslint-enable no-loop-func */ + } + }, + + // [resolvePossibleLambda] + // + // On stack, before: value, ... + // On stack, after: resolved value, ... + // + // If the `value` is a lambda, replace it on the stack by + // the return value of the lambda + resolvePossibleLambda: function resolvePossibleLambda() { + this.push([this.aliasable('container.lambda'), '(', this.popStack(), ', ', this.contextName(0), ')']); + }, + + // [pushStringParam] + // + // On stack, before: ... + // On stack, after: string, currentContext, ... + // + // This opcode is designed for use in string mode, which + // provides the string value of a parameter along with its + // depth rather than resolving it immediately. + pushStringParam: function pushStringParam(string, type) { + this.pushContext(); + this.pushString(type); + + // If it's a subexpression, the string result + // will be pushed after this opcode. + if (type !== 'SubExpression') { + if (typeof string === 'string') { + this.pushString(string); + } else { + this.pushStackLiteral(string); + } + } + }, + + emptyHash: function emptyHash(omitEmpty) { + if (this.trackIds) { + this.push('{}'); // hashIds + } + if (this.stringParams) { + this.push('{}'); // hashContexts + this.push('{}'); // hashTypes + } + this.pushStackLiteral(omitEmpty ? 'undefined' : '{}'); + }, + pushHash: function pushHash() { + if (this.hash) { + this.hashes.push(this.hash); + } + this.hash = { values: {}, types: [], contexts: [], ids: [] }; + }, + popHash: function popHash() { + var hash = this.hash; + this.hash = this.hashes.pop(); + + if (this.trackIds) { + this.push(this.objectLiteral(hash.ids)); + } + if (this.stringParams) { + this.push(this.objectLiteral(hash.contexts)); + this.push(this.objectLiteral(hash.types)); + } + + this.push(this.objectLiteral(hash.values)); + }, + + // [pushString] + // + // On stack, before: ... + // On stack, after: quotedString(string), ... + // + // Push a quoted version of `string` onto the stack + pushString: function pushString(string) { + this.pushStackLiteral(this.quotedString(string)); + }, + + // [pushLiteral] + // + // On stack, before: ... + // On stack, after: value, ... + // + // Pushes a value onto the stack. This operation prevents + // the compiler from creating a temporary variable to hold + // it. + pushLiteral: function pushLiteral(value) { + this.pushStackLiteral(value); + }, + + // [pushProgram] + // + // On stack, before: ... + // On stack, after: program(guid), ... + // + // Push a program expression onto the stack. This takes + // a compile-time guid and converts it into a runtime-accessible + // expression. + pushProgram: function pushProgram(guid) { + if (guid != null) { + this.pushStackLiteral(this.programExpression(guid)); + } else { + this.pushStackLiteral(null); + } + }, + + // [registerDecorator] + // + // On stack, before: hash, program, params..., ... + // On stack, after: ... + // + // Pops off the decorator's parameters, invokes the decorator, + // and inserts the decorator into the decorators list. + registerDecorator: function registerDecorator(paramSize, name) { + var foundDecorator = this.nameLookup('decorators', name, 'decorator'), + options = this.setupHelperArgs(name, paramSize); + + this.decorators.push(['fn = ', this.decorators.functionCall(foundDecorator, '', ['fn', 'props', 'container', options]), ' || fn;']); + }, + + // [invokeHelper] + // + // On stack, before: hash, inverse, program, params..., ... + // On stack, after: result of helper invocation + // + // Pops off the helper's parameters, invokes the helper, + // and pushes the helper's return value onto the stack. + // + // If the helper is not found, `helperMissing` is called. + invokeHelper: function invokeHelper(paramSize, name, isSimple) { + var nonHelper = this.popStack(), + helper = this.setupHelper(paramSize, name); + + var possibleFunctionCalls = []; + + if (isSimple) { + // direct call to helper + possibleFunctionCalls.push(helper.name); + } + // call a function from the input object + possibleFunctionCalls.push(nonHelper); + if (!this.options.strict) { + possibleFunctionCalls.push(this.aliasable('container.hooks.helperMissing')); + } + + var functionLookupCode = ['(', this.itemsSeparatedBy(possibleFunctionCalls, '||'), ')']; + var functionCall = this.source.functionCall(functionLookupCode, 'call', helper.callParams); + this.push(functionCall); + }, + + itemsSeparatedBy: function itemsSeparatedBy(items, separator) { + var result = []; + result.push(items[0]); + for (var i = 1; i < items.length; i++) { + result.push(separator, items[i]); + } + return result; + }, + // [invokeKnownHelper] + // + // On stack, before: hash, inverse, program, params..., ... + // On stack, after: result of helper invocation + // + // This operation is used when the helper is known to exist, + // so a `helperMissing` fallback is not required. + invokeKnownHelper: function invokeKnownHelper(paramSize, name) { + var helper = this.setupHelper(paramSize, name); + this.push(this.source.functionCall(helper.name, 'call', helper.callParams)); + }, + + // [invokeAmbiguous] + // + // On stack, before: hash, inverse, program, params..., ... + // On stack, after: result of disambiguation + // + // This operation is used when an expression like `{{foo}}` + // is provided, but we don't know at compile-time whether it + // is a helper or a path. + // + // This operation emits more code than the other options, + // and can be avoided by passing the `knownHelpers` and + // `knownHelpersOnly` flags at compile-time. + invokeAmbiguous: function invokeAmbiguous(name, helperCall) { + this.useRegister('helper'); + + var nonHelper = this.popStack(); + + this.emptyHash(); + var helper = this.setupHelper(0, name, helperCall); + + var helperName = this.lastHelper = this.nameLookup('helpers', name, 'helper'); + + var lookup = ['(', '(helper = ', helperName, ' || ', nonHelper, ')']; + if (!this.options.strict) { + lookup[0] = '(helper = '; + lookup.push(' != null ? helper : ', this.aliasable('container.hooks.helperMissing')); + } + + this.push(['(', lookup, helper.paramsInit ? ['),(', helper.paramsInit] : [], '),', '(typeof helper === ', this.aliasable('"function"'), ' ? ', this.source.functionCall('helper', 'call', helper.callParams), ' : helper))']); + }, + + // [invokePartial] + // + // On stack, before: context, ... + // On stack after: result of partial invocation + // + // This operation pops off a context, invokes a partial with that context, + // and pushes the result of the invocation back. + invokePartial: function invokePartial(isDynamic, name, indent) { + var params = [], + options = this.setupParams(name, 1, params); + + if (isDynamic) { + name = this.popStack(); + delete options.name; + } + + if (indent) { + options.indent = JSON.stringify(indent); + } + options.helpers = 'helpers'; + options.partials = 'partials'; + options.decorators = 'container.decorators'; + + if (!isDynamic) { + params.unshift(this.nameLookup('partials', name, 'partial')); + } else { + params.unshift(name); + } + + if (this.options.compat) { + options.depths = 'depths'; + } + options = this.objectLiteral(options); + params.push(options); + + this.push(this.source.functionCall('container.invokePartial', '', params)); + }, + + // [assignToHash] + // + // On stack, before: value, ..., hash, ... + // On stack, after: ..., hash, ... + // + // Pops a value off the stack and assigns it to the current hash + assignToHash: function assignToHash(key) { + var value = this.popStack(), + context = undefined, + type = undefined, + id = undefined; + + if (this.trackIds) { + id = this.popStack(); + } + if (this.stringParams) { + type = this.popStack(); + context = this.popStack(); + } + + var hash = this.hash; + if (context) { + hash.contexts[key] = context; + } + if (type) { + hash.types[key] = type; + } + if (id) { + hash.ids[key] = id; + } + hash.values[key] = value; + }, + + pushId: function pushId(type, name, child) { + if (type === 'BlockParam') { + this.pushStackLiteral('blockParams[' + name[0] + '].path[' + name[1] + ']' + (child ? ' + ' + JSON.stringify('.' + child) : '')); + } else if (type === 'PathExpression') { + this.pushString(name); + } else if (type === 'SubExpression') { + this.pushStackLiteral('true'); + } else { + this.pushStackLiteral('null'); + } + }, + + // HELPERS + + compiler: JavaScriptCompiler, + + compileChildren: function compileChildren(environment, options) { + var children = environment.children, + child = undefined, + compiler = undefined; + + for (var i = 0, l = children.length; i < l; i++) { + child = children[i]; + compiler = new this.compiler(); // eslint-disable-line new-cap + + var existing = this.matchExistingProgram(child); + + if (existing == null) { + this.context.programs.push(''); // Placeholder to prevent name conflicts for nested children + var index = this.context.programs.length; + child.index = index; + child.name = 'program' + index; + this.context.programs[index] = compiler.compile(child, options, this.context, !this.precompile); + this.context.decorators[index] = compiler.decorators; + this.context.environments[index] = child; + + this.useDepths = this.useDepths || compiler.useDepths; + this.useBlockParams = this.useBlockParams || compiler.useBlockParams; + child.useDepths = this.useDepths; + child.useBlockParams = this.useBlockParams; + } else { + child.index = existing.index; + child.name = 'program' + existing.index; + + this.useDepths = this.useDepths || existing.useDepths; + this.useBlockParams = this.useBlockParams || existing.useBlockParams; + } + } + }, + matchExistingProgram: function matchExistingProgram(child) { + for (var i = 0, len = this.context.environments.length; i < len; i++) { + var environment = this.context.environments[i]; + if (environment && environment.equals(child)) { + return environment; + } + } + }, + + programExpression: function programExpression(guid) { + var child = this.environment.children[guid], + programParams = [child.index, 'data', child.blockParams]; + + if (this.useBlockParams || this.useDepths) { + programParams.push('blockParams'); + } + if (this.useDepths) { + programParams.push('depths'); + } + + return 'container.program(' + programParams.join(', ') + ')'; + }, + + useRegister: function useRegister(name) { + if (!this.registers[name]) { + this.registers[name] = true; + this.registers.list.push(name); + } + }, + + push: function push(expr) { + if (!(expr instanceof Literal)) { + expr = this.source.wrap(expr); + } + + this.inlineStack.push(expr); + return expr; + }, + + pushStackLiteral: function pushStackLiteral(item) { + this.push(new Literal(item)); + }, + + pushSource: function pushSource(source) { + if (this.pendingContent) { + this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent), this.pendingLocation)); + this.pendingContent = undefined; + } + + if (source) { + this.source.push(source); + } + }, + + replaceStack: function replaceStack(callback) { + var prefix = ['('], + stack = undefined, + createdStack = undefined, + usedLiteral = undefined; + + /* istanbul ignore next */ + if (!this.isInline()) { + throw new _exception2['default']('replaceStack on non-inline'); + } + + // We want to merge the inline statement into the replacement statement via ',' + var top = this.popStack(true); + + if (top instanceof Literal) { + // Literals do not need to be inlined + stack = [top.value]; + prefix = ['(', stack]; + usedLiteral = true; + } else { + // Get or create the current stack name for use by the inline + createdStack = true; + var _name = this.incrStack(); + + prefix = ['((', this.push(_name), ' = ', top, ')']; + stack = this.topStack(); + } + + var item = callback.call(this, stack); + + if (!usedLiteral) { + this.popStack(); + } + if (createdStack) { + this.stackSlot--; + } + this.push(prefix.concat(item, ')')); + }, + + incrStack: function incrStack() { + this.stackSlot++; + if (this.stackSlot > this.stackVars.length) { + this.stackVars.push('stack' + this.stackSlot); + } + return this.topStackName(); + }, + topStackName: function topStackName() { + return 'stack' + this.stackSlot; + }, + flushInline: function flushInline() { + var inlineStack = this.inlineStack; + this.inlineStack = []; + for (var i = 0, len = inlineStack.length; i < len; i++) { + var entry = inlineStack[i]; + /* istanbul ignore if */ + if (entry instanceof Literal) { + this.compileStack.push(entry); + } else { + var stack = this.incrStack(); + this.pushSource([stack, ' = ', entry, ';']); + this.compileStack.push(stack); + } + } + }, + isInline: function isInline() { + return this.inlineStack.length; + }, + + popStack: function popStack(wrapped) { + var inline = this.isInline(), + item = (inline ? this.inlineStack : this.compileStack).pop(); + + if (!wrapped && item instanceof Literal) { + return item.value; + } else { + if (!inline) { + /* istanbul ignore next */ + if (!this.stackSlot) { + throw new _exception2['default']('Invalid stack pop'); + } + this.stackSlot--; + } + return item; + } + }, + + topStack: function topStack() { + var stack = this.isInline() ? this.inlineStack : this.compileStack, + item = stack[stack.length - 1]; + + /* istanbul ignore if */ + if (item instanceof Literal) { + return item.value; + } else { + return item; + } + }, + + contextName: function contextName(context) { + if (this.useDepths && context) { + return 'depths[' + context + ']'; + } else { + return 'depth' + context; + } + }, + + quotedString: function quotedString(str) { + return this.source.quotedString(str); + }, + + objectLiteral: function objectLiteral(obj) { + return this.source.objectLiteral(obj); + }, + + aliasable: function aliasable(name) { + var ret = this.aliases[name]; + if (ret) { + ret.referenceCount++; + return ret; + } + + ret = this.aliases[name] = this.source.wrap(name); + ret.aliasable = true; + ret.referenceCount = 1; + + return ret; + }, + + setupHelper: function setupHelper(paramSize, name, blockHelper) { + var params = [], + paramsInit = this.setupHelperArgs(name, paramSize, params, blockHelper); + var foundHelper = this.nameLookup('helpers', name, 'helper'), + callContext = this.aliasable(this.contextName(0) + ' != null ? ' + this.contextName(0) + ' : (container.nullContext || {})'); + + return { + params: params, + paramsInit: paramsInit, + name: foundHelper, + callParams: [callContext].concat(params) + }; + }, + + setupParams: function setupParams(helper, paramSize, params) { + var options = {}, + contexts = [], + types = [], + ids = [], + objectArgs = !params, + param = undefined; + + if (objectArgs) { + params = []; + } + + options.name = this.quotedString(helper); + options.hash = this.popStack(); + + if (this.trackIds) { + options.hashIds = this.popStack(); + } + if (this.stringParams) { + options.hashTypes = this.popStack(); + options.hashContexts = this.popStack(); + } + + var inverse = this.popStack(), + program = this.popStack(); + + // Avoid setting fn and inverse if neither are set. This allows + // helpers to do a check for `if (options.fn)` + if (program || inverse) { + options.fn = program || 'container.noop'; + options.inverse = inverse || 'container.noop'; + } + + // The parameters go on to the stack in order (making sure that they are evaluated in order) + // so we need to pop them off the stack in reverse order + var i = paramSize; + while (i--) { + param = this.popStack(); + params[i] = param; + + if (this.trackIds) { + ids[i] = this.popStack(); + } + if (this.stringParams) { + types[i] = this.popStack(); + contexts[i] = this.popStack(); + } + } + + if (objectArgs) { + options.args = this.source.generateArray(params); + } + + if (this.trackIds) { + options.ids = this.source.generateArray(ids); + } + if (this.stringParams) { + options.types = this.source.generateArray(types); + options.contexts = this.source.generateArray(contexts); + } + + if (this.options.data) { + options.data = 'data'; + } + if (this.useBlockParams) { + options.blockParams = 'blockParams'; + } + return options; + }, + + setupHelperArgs: function setupHelperArgs(helper, paramSize, params, useRegister) { + var options = this.setupParams(helper, paramSize, params); + options.loc = JSON.stringify(this.source.currentLocation); + options = this.objectLiteral(options); + if (useRegister) { + this.useRegister('options'); + params.push('options'); + return ['options=', options]; + } else if (params) { + params.push(options); + return ''; + } else { + return options; + } + } +}; + +(function () { + var reservedWords = ('break else new var' + ' case finally return void' + ' catch for switch while' + ' continue function this with' + ' default if throw' + ' delete in try' + ' do instanceof typeof' + ' abstract enum int short' + ' boolean export interface static' + ' byte extends long super' + ' char final native synchronized' + ' class float package throws' + ' const goto private transient' + ' debugger implements protected volatile' + ' double import public let yield await' + ' null true false').split(' '); + + var compilerWords = JavaScriptCompiler.RESERVED_WORDS = {}; + + for (var i = 0, l = reservedWords.length; i < l; i++) { + compilerWords[reservedWords[i]] = true; + } +})(); + +/** + * @deprecated May be removed in the next major version + */ +JavaScriptCompiler.isValidJavaScriptVariableName = function (name) { + return !JavaScriptCompiler.RESERVED_WORDS[name] && /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name); +}; + +function strictLookup(requireTerminal, compiler, parts, type) { + var stack = compiler.popStack(), + i = 0, + len = parts.length; + if (requireTerminal) { + len--; + } + + for (; i < len; i++) { + stack = compiler.nameLookup(stack, parts[i], type); + } + + if (requireTerminal) { + return [compiler.aliasable('container.strict'), '(', stack, ', ', compiler.quotedString(parts[i]), ', ', JSON.stringify(compiler.source.currentLocation), ' )']; + } else { + return stack; + } +} + +exports['default'] = JavaScriptCompiler; +module.exports = exports['default']; + +}); + +var handlebars = createCommonjsModule(function (module, exports) { + +exports.__esModule = true; +// istanbul ignore next + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + + +var _handlebarsRuntime2 = _interopRequireDefault(handlebars_runtime); + +// Compiler imports + + + +var _handlebarsCompilerAst2 = _interopRequireDefault(ast); + + + + + + + +var _handlebarsCompilerJavascriptCompiler2 = _interopRequireDefault(javascriptCompiler); + + + +var _handlebarsCompilerVisitor2 = _interopRequireDefault(visitor); + + + +var _handlebarsNoConflict2 = _interopRequireDefault(noConflict); + +var _create = _handlebarsRuntime2['default'].create; +function create() { + var hb = _create(); + + hb.compile = function (input, options) { + return compiler.compile(input, options, hb); + }; + hb.precompile = function (input, options) { + return compiler.precompile(input, options, hb); + }; + + hb.AST = _handlebarsCompilerAst2['default']; + hb.Compiler = compiler.Compiler; + hb.JavaScriptCompiler = _handlebarsCompilerJavascriptCompiler2['default']; + hb.Parser = base$1.parser; + hb.parse = base$1.parse; + hb.parseWithoutProcessing = base$1.parseWithoutProcessing; + + return hb; +} + +var inst = create(); +inst.create = create; + +_handlebarsNoConflict2['default'](inst); + +inst.Visitor = _handlebarsCompilerVisitor2['default']; + +inst['default'] = inst; + +exports['default'] = inst; +module.exports = exports['default']; + +}); + +var printer = createCommonjsModule(function (module, exports) { + +exports.__esModule = true; +exports.print = print; +exports.PrintVisitor = PrintVisitor; +// istanbul ignore next + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + + +var _visitor2 = _interopRequireDefault(visitor); + +function print(ast) { + return new PrintVisitor().accept(ast); +} + +function PrintVisitor() { + this.padding = 0; +} + +PrintVisitor.prototype = new _visitor2['default'](); + +PrintVisitor.prototype.pad = function (string) { + var out = ''; + + for (var i = 0, l = this.padding; i < l; i++) { + out += ' '; + } + + out += string + '\n'; + return out; +}; + +PrintVisitor.prototype.Program = function (program) { + var out = '', + body = program.body, + i = undefined, + l = undefined; + + if (program.blockParams) { + var blockParams = 'BLOCK PARAMS: ['; + for (i = 0, l = program.blockParams.length; i < l; i++) { + blockParams += ' ' + program.blockParams[i]; + } + blockParams += ' ]'; + out += this.pad(blockParams); + } + + for (i = 0, l = body.length; i < l; i++) { + out += this.accept(body[i]); + } + + this.padding--; + + return out; +}; + +PrintVisitor.prototype.MustacheStatement = function (mustache) { + return this.pad('{{ ' + this.SubExpression(mustache) + ' }}'); +}; +PrintVisitor.prototype.Decorator = function (mustache) { + return this.pad('{{ DIRECTIVE ' + this.SubExpression(mustache) + ' }}'); +}; + +PrintVisitor.prototype.BlockStatement = PrintVisitor.prototype.DecoratorBlock = function (block) { + var out = ''; + + out += this.pad((block.type === 'DecoratorBlock' ? 'DIRECTIVE ' : '') + 'BLOCK:'); + this.padding++; + out += this.pad(this.SubExpression(block)); + if (block.program) { + out += this.pad('PROGRAM:'); + this.padding++; + out += this.accept(block.program); + this.padding--; + } + if (block.inverse) { + if (block.program) { + this.padding++; + } + out += this.pad('{{^}}'); + this.padding++; + out += this.accept(block.inverse); + this.padding--; + if (block.program) { + this.padding--; + } + } + this.padding--; + + return out; +}; + +PrintVisitor.prototype.PartialStatement = function (partial) { + var content = 'PARTIAL:' + partial.name.original; + if (partial.params[0]) { + content += ' ' + this.accept(partial.params[0]); + } + if (partial.hash) { + content += ' ' + this.accept(partial.hash); + } + return this.pad('{{> ' + content + ' }}'); +}; +PrintVisitor.prototype.PartialBlockStatement = function (partial) { + var content = 'PARTIAL BLOCK:' + partial.name.original; + if (partial.params[0]) { + content += ' ' + this.accept(partial.params[0]); + } + if (partial.hash) { + content += ' ' + this.accept(partial.hash); + } + + content += ' ' + this.pad('PROGRAM:'); + this.padding++; + content += this.accept(partial.program); + this.padding--; + + return this.pad('{{> ' + content + ' }}'); +}; + +PrintVisitor.prototype.ContentStatement = function (content) { + return this.pad("CONTENT[ '" + content.value + "' ]"); +}; + +PrintVisitor.prototype.CommentStatement = function (comment) { + return this.pad("{{! '" + comment.value + "' }}"); +}; + +PrintVisitor.prototype.SubExpression = function (sexpr) { + var params = sexpr.params, + paramStrings = [], + hash = undefined; + + for (var i = 0, l = params.length; i < l; i++) { + paramStrings.push(this.accept(params[i])); + } + + params = '[' + paramStrings.join(', ') + ']'; + + hash = sexpr.hash ? ' ' + this.accept(sexpr.hash) : ''; + + return this.accept(sexpr.path) + ' ' + params + hash; +}; + +PrintVisitor.prototype.PathExpression = function (id) { + var path = id.parts.join('/'); + return (id.data ? '@' : '') + 'PATH:' + path; +}; + +PrintVisitor.prototype.StringLiteral = function (string) { + return '"' + string.value + '"'; +}; + +PrintVisitor.prototype.NumberLiteral = function (number) { + return 'NUMBER{' + number.value + '}'; +}; + +PrintVisitor.prototype.BooleanLiteral = function (bool) { + return 'BOOLEAN{' + bool.value + '}'; +}; + +PrintVisitor.prototype.UndefinedLiteral = function () { + return 'UNDEFINED'; +}; + +PrintVisitor.prototype.NullLiteral = function () { + return 'NULL'; +}; + +PrintVisitor.prototype.Hash = function (hash) { + var pairs = hash.pairs, + joinedPairs = []; + + for (var i = 0, l = pairs.length; i < l; i++) { + joinedPairs.push(this.accept(pairs[i])); + } + + return 'HASH{' + joinedPairs.join(', ') + '}'; +}; +PrintVisitor.prototype.HashPair = function (pair) { + return pair.key + '=' + this.accept(pair.value); +}; +/* eslint-enable new-cap */ + +}); + +// USAGE: +// var handlebars = require('handlebars'); +/* eslint-disable no-var */ + +// var local = handlebars.create(); + +var handlebars$1 = handlebars['default']; + + +handlebars$1.PrintVisitor = printer.PrintVisitor; +handlebars$1.print = printer.print; + +var lib = handlebars$1; + +// Publish a Node.js require() handler for .handlebars and .hbs files +function extension(module, filename) { + var fs = fs__default['default']; + var templateString = fs.readFileSync(filename, 'utf8'); + module.exports = handlebars$1.compile(templateString); +} +/* istanbul ignore else */ +if (typeof commonjsRequire !== 'undefined' && commonjsRequire.extensions) { + commonjsRequire.extensions['.handlebars'] = extension; + commonjsRequire.extensions['.hbs'] = extension; +} + +/** + * Defines an event manager for the citations plugin. + */ +var CitationEvents = /** @class */ (function (_super) { + __extends(CitationEvents, _super); + function CitationEvents() { + return _super !== null && _super.apply(this, arguments) || this; + } + CitationEvents.prototype.on = function (name, callback, ctx) { + return _super.prototype.on.call(this, name, callback, ctx); + }; + CitationEvents.prototype.trigger = function (name) { + var data = []; + for (var _i = 1; _i < arguments.length; _i++) { + data[_i - 1] = arguments[_i]; + } + _super.prototype.trigger.call(this, name, data); + }; + return CitationEvents; +}(obsidian.Events)); + +var SearchModal = /** @class */ (function (_super) { + __extends(SearchModal, _super); + function SearchModal(app, plugin) { + var _this = _super.call(this, app) || this; + _this.limit = 50; + _this.plugin = plugin; + _this.resultContainerEl.addClass('zoteroModalResults'); + _this.inputEl.setAttribute('spellcheck', 'false'); + _this.loadingEl = _this.resultContainerEl.parentElement.createEl('div', { + cls: 'zoteroModalLoading', + }); + _this.loadingEl.createEl('div', { cls: 'zoteroModalLoadingAnimation' }); + _this.loadingEl.createEl('p', { + text: 'Loading citation database. Please wait...', + }); + return _this; + } + SearchModal.prototype.onOpen = function () { + var _this = this; + _super.prototype.onOpen.call(this); + this.eventRefs = [ + this.plugin.events.on('library-load-start', function () { + _this.setLoading(true); + }), + this.plugin.events.on('library-load-complete', function () { + _this.setLoading(false); + }), + ]; + this.setLoading(this.plugin.isLibraryLoading); + // Don't immediately register keyevent listeners. If the modal was triggered + // by an "Enter" keystroke (e.g. via the Obsidian command dialog), this event + // will be received here erroneously. + setTimeout(function () { + _this.inputEl.addEventListener('keydown', function (ev) { return _this.onInputKeydown(ev); }); + _this.inputEl.addEventListener('keyup', function (ev) { return _this.onInputKeyup(ev); }); + }, 200); + }; + SearchModal.prototype.onClose = function () { + var _this = this; + var _a; + (_a = this.eventRefs) === null || _a === void 0 ? void 0 : _a.forEach(function (e) { return _this.plugin.events.offref(e); }); + }; + SearchModal.prototype.getItems = function () { + if (this.plugin.isLibraryLoading) { + return []; + } + return Object.values(this.plugin.library.entries); + }; + SearchModal.prototype.getItemText = function (item) { + return item.title + " " + item.authorString + " " + item.year; + }; + SearchModal.prototype.setLoading = function (loading) { + if (loading) { + this.loadingEl.removeClass('d-none'); + this.inputEl.disabled = true; + this.resultContainerEl.empty(); + } + else { + this.loadingEl.addClass('d-none'); + this.inputEl.disabled = false; + this.inputEl.focus(); + // @ts-ignore: not exposed in API. + this.updateSuggestions(); + } + }; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + SearchModal.prototype.onChooseItem = function (item, evt) { + this.plugin.openLiteratureNote(item.id, false).catch(console.error); + }; + SearchModal.prototype.renderSuggestion = function (match, el) { + el.empty(); + var entry = match.item; + var entryTitle = entry.title || ''; + var container = el.createEl('div', { cls: 'zoteroResult' }); + var titleEl = container.createEl('span', { + cls: 'zoteroTitle', + }); + container.createEl('span', { cls: 'zoteroCitekey', text: entry.id }); + var authorsCls = entry.authorString + ? 'zoteroAuthors' + : 'zoteroAuthors zoteroAuthorsEmpty'; + var authorsEl = container.createEl('span', { + cls: authorsCls, + }); + // Prepare to highlight string matches for each part of the search item. + // Compute offsets of each rendered element's content within the string + // returned by `getItemText`. + var allMatches = match.match.matches; + var authorStringOffset = 1 + entryTitle.length; + // Filter a match list to contain only the relevant matches for a given + // substring, and with match indices shifted relative to the start of that + // substring + var shiftMatches = function (matches, start, end) { + return matches + .map(function (match) { + var matchStart = match[0], matchEnd = match[1]; + return [ + matchStart - start, + Math.min(matchEnd - start, end), + ]; + }) + .filter(function (match) { + var matchStart = match[0], matchEnd = match[1]; + return matchStart >= 0; + }); + }; + // Now highlight matched strings within each element + obsidian.renderMatches(titleEl, entryTitle, shiftMatches(allMatches, 0, entryTitle.length)); + if (entry.authorString) { + obsidian.renderMatches(authorsEl, entry.authorString, shiftMatches(allMatches, authorStringOffset, authorStringOffset + entry.authorString.length)); + } + }; + SearchModal.prototype.onInputKeydown = function (ev) { + if (ev.key == 'Tab') { + ev.preventDefault(); + } + }; + SearchModal.prototype.onInputKeyup = function (ev) { + if (ev.key == 'Enter' || ev.key == 'Tab') { + this.chooser.useSelectedItem(ev); + } + }; + return SearchModal; +}(obsidian.FuzzySuggestModal)); +var OpenNoteModal = /** @class */ (function (_super) { + __extends(OpenNoteModal, _super); + function OpenNoteModal(app, plugin) { + var _this = _super.call(this, app, plugin) || this; + _this.setInstructions([ + { command: '↑↓', purpose: 'to navigate' }, + { command: '↵', purpose: 'to open literature note' }, + { command: 'ctrl ↵', purpose: 'to open literature note in a new pane' }, + { command: 'tab', purpose: 'open in Zotero' }, + { command: 'shift tab', purpose: 'open PDF' }, + { command: 'esc', purpose: 'to dismiss' }, + ]); + return _this; + } + OpenNoteModal.prototype.onChooseItem = function (item, evt) { + if (evt instanceof MouseEvent || evt.key == 'Enter') { + var newPane = evt instanceof KeyboardEvent && evt.ctrlKey; + this.plugin.openLiteratureNote(item.id, newPane); + } + else if (evt.key == 'Tab') { + if (evt.shiftKey) { + var files = item.files || []; + var pdfPaths = files.filter(function (path) { + return path.toLowerCase().endsWith('pdf'); + }); + if (pdfPaths.length == 0) { + new obsidian.Notice('This reference has no associated PDF files.'); + } + else { + open("file://" + pdfPaths[0]); + } + } + else { + open(item.zoteroSelectURI); + } + } + }; + return OpenNoteModal; +}(SearchModal)); +var InsertNoteLinkModal = /** @class */ (function (_super) { + __extends(InsertNoteLinkModal, _super); + function InsertNoteLinkModal(app, plugin) { + var _this = _super.call(this, app, plugin) || this; + _this.setInstructions([ + { command: '↑↓', purpose: 'to navigate' }, + { command: '↵', purpose: 'to insert literature note reference' }, + { command: 'esc', purpose: 'to dismiss' }, + ]); + return _this; + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + InsertNoteLinkModal.prototype.onChooseItem = function (item, evt) { + this.plugin.insertLiteratureNoteLink(item.id).catch(console.error); + }; + return InsertNoteLinkModal; +}(SearchModal)); +var InsertNoteContentModal = /** @class */ (function (_super) { + __extends(InsertNoteContentModal, _super); + function InsertNoteContentModal(app, plugin) { + var _this = _super.call(this, app, plugin) || this; + _this.setInstructions([ + { command: '↑↓', purpose: 'to navigate' }, + { + command: '↵', + purpose: 'to insert literature note content in active pane', + }, + { command: 'esc', purpose: 'to dismiss' }, + ]); + return _this; + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + InsertNoteContentModal.prototype.onChooseItem = function (item, evt) { + this.plugin.insertLiteratureNoteContent(item.id).catch(console.error); + }; + return InsertNoteContentModal; +}(SearchModal)); +var InsertCitationModal = /** @class */ (function (_super) { + __extends(InsertCitationModal, _super); + function InsertCitationModal(app, plugin) { + var _this = _super.call(this, app, plugin) || this; + _this.setInstructions([ + { command: '↑↓', purpose: 'to navigate' }, + { command: '↵', purpose: 'to insert Markdown citation' }, + { command: 'shift ↵', purpose: 'to insert secondary Markdown citation' }, + { command: 'esc', purpose: 'to dismiss' }, + ]); + return _this; + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + InsertCitationModal.prototype.onChooseItem = function (item, evt) { + var isAlternative = evt instanceof KeyboardEvent && evt.shiftKey; + this.plugin + .insertMarkdownCitation(item.id, isAlternative) + .catch(console.error); + }; + return InsertCitationModal; +}(SearchModal)); + +/* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + +function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); +} + +function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } +} + +peg$subclass(peg$SyntaxError, Error); + +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + return s + .replace(/\\/g, '\\\\') + .replace(/"/g, '\\"') + .replace(/\0/g, '\\0') + .replace(/\t/g, '\\t') + .replace(/\n/g, '\\n') + .replace(/\r/g, '\\r') + .replace(/[\x00-\x0F]/g, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + return s + .replace(/\\/g, '\\\\') + .replace(/\]/g, '\\]') + .replace(/\^/g, '\\^') + .replace(/-/g, '\\-') + .replace(/\0/g, '\\0') + .replace(/\t/g, '\\t') + .replace(/\n/g, '\\n') + .replace(/\r/g, '\\r') + .replace(/[\x00-\x0F]/g, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + descriptions.sort(); + + if (descriptions.length > 0) { + for (i = 1, j = 1; i < descriptions.length; i++) { + if (descriptions[i - 1] !== descriptions[i]) { + descriptions[j] = descriptions[i]; + j++; + } + } + descriptions.length = j; + } + + switch (descriptions.length) { + case 1: + return descriptions[0]; + + case 2: + return descriptions[0] + " or " + descriptions[1]; + + default: + return descriptions.slice(0, -1).join(", ") + + ", or " + + descriptions[descriptions.length - 1]; + } + } + + function describeFound(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; + +function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { Bibliography: peg$parseBibliography }, + peg$startRuleFunction = peg$parseBibliography, + + peg$c0 = function(r) { + return { + kind: 'Bibliography', + loc: location(), + source: text(), + children: r, + } + }, + peg$c1 = "@", + peg$c2 = peg$literalExpectation("@", false), + peg$c3 = "comment", + peg$c4 = peg$literalExpectation("comment", true), + peg$c5 = function(v) { + return { + kind: 'BracedComment', + loc: location(), + source: text(), + value: v.slice(1, -1), + } + }, + peg$c6 = /^[^\n\r]/, + peg$c7 = peg$classExpectation(["\n", "\r"], true, false), + peg$c8 = /^[\n\r]/, + peg$c9 = peg$classExpectation(["\n", "\r"], false, false), + peg$c10 = function(v) { + return { + kind: 'LineComment', + loc: location(), + source: text(), + value: normalizeWhitespace(v), + } + }, + peg$c11 = /^[^@]/, + peg$c12 = peg$classExpectation(["@"], true, false), + peg$c13 = function(v) { + return { + kind: 'NonEntryText', + loc: location(), + source: text(), + value: normalizeWhitespace(v), + } + }, + peg$c14 = function(n) { return n; }, + peg$c15 = "{", + peg$c16 = peg$literalExpectation("{", false), + peg$c17 = /^[^{}]/, + peg$c18 = peg$classExpectation(["{", "}"], true, false), + peg$c19 = "}", + peg$c20 = peg$literalExpectation("}", false), + peg$c21 = function(comment) { return '{' + comment.join('') + '}' }, + peg$c22 = /^[A-Za-z]/, + peg$c23 = peg$classExpectation([["A", "Z"], ["a", "z"]], false, false), + peg$c24 = /^[({]/, + peg$c25 = peg$classExpectation(["(", "{"], false, false), + peg$c26 = /^[})]/, + peg$c27 = peg$classExpectation(["}", ")"], false, false), + peg$c28 = function(type, id, fields) { + return { + kind: 'Entry', + id: id || '', + type: type.toLowerCase(), + loc: location(), + source: text(), + fields: fields, + } + }, + peg$c29 = "preamble", + peg$c30 = peg$literalExpectation("preamble", true), + peg$c31 = function(opener, v, closer) { + switch (opener + closer) { + case '{}': + case '()': + break + default: + throw new Error(`Unbalanced opener-closer for preamble: ${opener}...${closer}`) + } + return { + kind: 'PreambleExpression', + loc: location(), + source: text(), + value: v.reduce((a, b) => a.concat(b), []), + } + }, + peg$c32 = "string", + peg$c33 = peg$literalExpectation("string", true), + peg$c34 = function(k, v) { + return { + kind: 'StringDeclaration', + loc: location(), + source: text(), + name: k, + value: v.reduce((a, b) => a.concat(b), []), + } + }, + peg$c35 = /^[^ \t\r\n,]/, + peg$c36 = peg$classExpectation([" ", "\t", "\r", "\n", ","], true, false), + peg$c37 = ",", + peg$c38 = peg$literalExpectation(",", false), + peg$c39 = function(id) { return id; }, + peg$c40 = function(name) { return isVerbatimField(name) && unnestFields.includes(name) }, + peg$c41 = function(name, value) { + // because this was abused so much, many processors treat double-outer-braces as single + return { + kind: 'Field', + loc: location(), + source: text(), + name: name, + loc: location(), + value: [ protect(value) ] + } + }, + peg$c42 = function(name) { return isVerbatimField(name) }, + peg$c43 = function(name, value) { + return { + kind: 'Field', + loc: location(), + source: text(), + name: name, + loc: location(), + value: [ protect(value) ] + } + }, + peg$c44 = function(name, value) { + // because this was abused so much, many processors treat double-outer-braces as single + if (unnestFields.includes(name) && Array.isArray(value) && value.length === 1 && value[0].kind === 'Block') { + if (options.unnestMode === 'preserve') { + value[0].case = 'preserve'; + } else { + value = value[0].value; + } + } + + return handle_markup_switches({ + kind: 'Field', + loc: location(), + source: text(), + name: name, + value: value, + }) + }, + peg$c45 = /^[_:a-zA-Z0-9\-]/, + peg$c46 = peg$classExpectation(["_", ":", ["a", "z"], ["A", "Z"], ["0", "9"], "-"], false, false), + peg$c47 = function(name) { return name.toLowerCase() }, + peg$c48 = "\"", + peg$c49 = peg$literalExpectation("\"", false), + peg$c50 = function(v) { + v = v || { + kind: 'Text', + loc: location(), + source: text(), + value: '', + }; + v.mode = 'verbatim'; + return basicTextConversions(v) + }, + peg$c51 = function(v) { + return basicTextConversions({ + kind: 'Text', + loc: location(), + source: text(), + value: v.join('').trim(), + mode: 'verbatim', + }) + }, + peg$c52 = function(v) { return v }, + peg$c53 = function(v) { return '{' + v.join('') + '}' }, + peg$c54 = function() { return math.set(false) }, + peg$c55 = function(v) { + return v.reduce((a, b) => a.concat(b), []); + }, + peg$c56 = function(v) { return v; }, + peg$c57 = "{\\verb", + peg$c58 = peg$literalExpectation("{\\verb", false), + peg$c59 = /^[a-zA-Z]/, + peg$c60 = peg$classExpectation([["a", "z"], ["A", "Z"]], false, false), + peg$c61 = /^[^\^_${}\\]/, + peg$c62 = peg$classExpectation(["^", "_", "$", "{", "}", "\\"], true, false), + peg$c63 = function(v) { + return basicTextConversions({ + kind: 'Text', + loc: location(), + source: text(), + value: normalizeWhitespace(v), + mode: math.on ? 'math' : 'text', + }) + }, + peg$c64 = /^[^\^_${}"\\]/, + peg$c65 = peg$classExpectation(["^", "_", "$", "{", "}", "\"", "\\"], true, false), + peg$c66 = /^[0-9]/, + peg$c67 = peg$classExpectation([["0", "9"]], false, false), + peg$c68 = function(v) { + return { + kind: 'Number', + loc: location(), + source: text(), + value: parseInt(v, 10), + } + }, + peg$c69 = function(v) { + return { + kind: 'StringReference', + loc: location(), + source: text(), + name: v, + } + }, + peg$c70 = "\\begin{", + peg$c71 = peg$literalExpectation("\\begin{", false), + peg$c72 = /^[a-zA-Z0-9]/, + peg$c73 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false), + peg$c74 = "\\end{", + peg$c75 = peg$literalExpectation("\\end{", false), + peg$c76 = function(env, v, cenv) { return env === cenv }, + peg$c77 = function(env, v, cenv) { + if (markup[env]) { + return { + kind: 'Block', + loc: location(), + source: text(), + value: v, + markup: { [markup[env]]: true }, + } + } else { + return { + kind: 'Environment', + loc: location(), + source: text(), + value: v, + env: env, + } + } + }, + peg$c78 = "{\\", + peg$c79 = peg$literalExpectation("{\\", false), + peg$c80 = "\\", + peg$c81 = peg$literalExpectation("\\", false), + peg$c82 = /^[ij]/, + peg$c83 = peg$classExpectation(["i", "j"], false, false), + peg$c84 = function(mark, char) { + return { + kind: 'DiacriticCommand', + loc: location(), + source: text(), + mark: mark, + dotless: !!char[1], + character: char[1] || char[0], + } + }, + peg$c85 = function(v) { + return basicTextConversions({ + kind: 'Text', + loc: location(), + source: text(), + value: v.join('').trim(), + mode: 'verbatim', + }) + }, + peg$c86 = function(v) { + const block = { + kind: 'Block', + loc: location(), + source: text(), + value: v, + markup: {}, + case: 'protect', + }; + + let leadingcmd = block.value.length && (block.value[0].kind.endsWith('Command') || block.value[0].kind === 'Environment') ? block.value[0] : null; + let leadingcmdblockarg = leadingcmd + && leadingcmd.kind === 'RegularCommand' + && leadingcmd.arguments.required.length + && leadingcmd.arguments.required[0].kind === 'Block' + && leadingcmd.arguments.required[0]; + + // https://github.com/retorquere/zotero-better-bibtex/issues/541#issuecomment-240156274 + if (leadingcmd) { + delete block.case; + + // command with a block cancels out case protection with containing block + // if a smallcaps block has set case to 'preserve' we want to keep this + if (leadingcmdblockarg && leadingcmdblockarg.case === 'protect') delete leadingcmdblockarg.case; + + // \sl, \it etc + if (markup[leadingcmd.command]) { + block.markup[markup[leadingcmd.command]] = true; + block.value.shift(); + } + } + + return handle_markup_switches(block) + }, + peg$c87 = function() { return !math.on }, + peg$c88 = "$", + peg$c89 = peg$literalExpectation("$", false), + peg$c90 = "$$", + peg$c91 = peg$literalExpectation("$$", false), + peg$c92 = function(mode) { return math.set(true) }, + peg$c93 = function(mode, v) { return math.set(false) }, + peg$c94 = function(mode, v) { + return { + kind: mode == '$$' ? 'DisplayMath' : 'InlineMath', + loc: location(), + source: text(), + value: v, + case: 'protect', + markup: {}, + } + }, + peg$c95 = "%", + peg$c96 = peg$literalExpectation("%", false), + peg$c97 = /^[^\r\n]/, + peg$c98 = peg$classExpectation(["\r", "\n"], true, false), + peg$c99 = function(v) { + return { + kind: 'LineComment', + loc: location(), + source: text(), + value: v, + } + }, + peg$c100 = /^[_\^]/, + peg$c101 = peg$classExpectation(["_", "^"], false, false), + peg$c102 = function(mode, v) { + if (v.kind === 'Block') v = v.value; + + return { + kind: mode === '_' ? 'SubscriptCommand' : 'SuperscriptCommand', + loc: location(), + source: text(), + value: v, + } + }, + peg$c103 = function(mark, v) { + return { + kind: 'RegularCommand', + loc: location(), + source: text(), + command: mark, + arguments: { + optional: [], + required: [ protect(v) ], + }, + } + }, + peg$c104 = /^[^A-Za-z0-9\t\r\n]/, + peg$c105 = peg$classExpectation([["A", "Z"], ["a", "z"], ["0", "9"], "\t", "\r", "\n"], true, false), + peg$c106 = function(v) { + return { + kind: 'SymbolCommand', + loc: location(), + source: text(), + command: v, + } + }, + peg$c107 = "newcommand", + peg$c108 = peg$literalExpectation("newcommand", false), + peg$c109 = function(cmd, name) { return name.value.length == 1 && name.value[0].kind === 'RegularCommand' }, + peg$c110 = function(cmd, name, optional, def) { + return { + kind: 'RegularCommand', + loc: location(), + source: text(), + command: cmd, + arguments: { + optional: [], + required: [name, def], + }, + } + }, + peg$c111 = "begin", + peg$c112 = peg$literalExpectation("begin", false), + peg$c113 = "end", + peg$c114 = peg$literalExpectation("end", false), + peg$c115 = function(cmd) { return verbatimCommands.includes(cmd) && (has_arguments[cmd] === 2) }, + peg$c116 = function(cmd, optional, req1, req2) { + return { + kind: 'RegularCommand', + loc: location(), + source: text(), + command: cmd, + arguments: { + optional: optional, + required: [protect(req1), protect(req2)], + }, + } + }, + peg$c117 = function(cmd) { return verbatimCommands.includes(cmd) && (has_arguments[cmd] === 1) }, + peg$c118 = function(cmd, optional, req) { + return { + kind: 'RegularCommand', + loc: location(), + source: text(), + command: cmd, + arguments: { + optional: optional, + required: [protect(req)], + }, + } + }, + peg$c119 = function(cmd) { return (has_arguments[cmd] === 2) }, + peg$c120 = function(cmd, optional, req1, req2) { + return { + kind: 'RegularCommand', + loc: location(), + source: text(), + command: cmd, + arguments: { + optional: optional, + required: [req1, req2], + }, + } + }, + peg$c121 = function(cmd) { return (has_arguments[cmd] === 1) }, + peg$c122 = function(cmd, optional, req) { + let m; + if (req.kind === 'Block') { + switch (cmd) { + case 'textsuperscript': + case 'sp': + req.markup.sup = true; + break + case 'textsubscript': + case 'sb': + req.markup.sub = true; + break + case 'textsc': + req.markup.smallCaps = true; + break + case 'enquote': + case 'mkbibquote': + req.markup.enquote = true; + break + case 'textbf': + case 'mkbibbold': + req.markup.bold = true; + break + case 'emph': + case 'textit': + case 'mkbibitalic': + case 'mkbibemph': + req.markup.italics = true; + break + default: + if (m = cmd.match(/^((sub)*)section$/)) { + req.markup[`h${(m[1].length / 3) + 1}`] = true; + } + } + } + + // ignore case stuff on bibcyr + if (cmd === 'bibcyr') delete req.case; + + return { + kind: 'RegularCommand', + loc: location(), + source: text(), + command: cmd, + arguments: { + optional: optional, + required: [req], + } + } + }, + peg$c123 = function(cmd, optional) { + return { + kind: 'RegularCommand', + loc: location(), + source: text(), + command: cmd, + arguments: { + optional: optional, + required: [], + } + } + }, + peg$c124 = "[", + peg$c125 = peg$literalExpectation("[", false), + peg$c126 = /^[^\]]/, + peg$c127 = peg$classExpectation(["]"], true, false), + peg$c128 = "]", + peg$c129 = peg$literalExpectation("]", false), + peg$c130 = function(v) { + return basicTextConversions({ + kind: 'Text', // this isn't really correct but I don't need these right now + loc: location(), + source: text(), + value: v, + mode: math.on ? 'math' : 'text', + }) + }, + peg$c131 = /^[^ \t\^_${}\\]/, + peg$c132 = peg$classExpectation([" ", "\t", "^", "_", "$", "{", "}", "\\"], true, false), + peg$c133 = function(v) { + return basicTextConversions({ + kind: 'Text', + loc: location(), + source: text(), + value: normalizeWhitespace([v]), + mode: math.on ? 'math' : 'text', + }) + }, + peg$c134 = /^[a-zA-Z\-_]/, + peg$c135 = peg$classExpectation([["a", "z"], ["A", "Z"], "-", "_"], false, false), + peg$c136 = /^[a-zA-Z0-9\-&_:]/, + peg$c137 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"], "-", "&", "_", ":"], false, false), + peg$c138 = /^['`"=~\^.]/, + peg$c139 = peg$classExpectation(["'", "`", "\"", "=", "~", "^", "."], false, false), + peg$c140 = /^['`"=~\^.cbuvdrHk]/, + peg$c141 = peg$classExpectation(["'", "`", "\"", "=", "~", "^", ".", "c", "b", "u", "v", "d", "r", "H", "k"], false, false), + peg$c142 = "=", + peg$c143 = peg$literalExpectation("=", false), + peg$c144 = "#", + peg$c145 = peg$literalExpectation("#", false), + peg$c146 = /^[\r\n]/, + peg$c147 = peg$classExpectation(["\r", "\n"], false, false), + peg$c149 = /^[ \t]/, + peg$c150 = peg$classExpectation([" ", "\t"], false, false), + peg$c151 = peg$otherExpectation("Optional Horizontal Whitespace"), + peg$c155 = /^[ \t\n\r]/, + peg$c156 = peg$classExpectation([" ", "\t", "\n", "\r"], false, false), + peg$c157 = peg$otherExpectation("Optional Whitespace"), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], p; + + if (details) { + return details; + } else { + p = pos - 1; + while (!peg$posDetailsCache[p]) { + p--; + } + + details = peg$posDetailsCache[p]; + details = { + line: details.line, + column: details.column + }; + + while (p < pos) { + if (input.charCodeAt(p) === 10) { + details.line++; + details.column = 1; + } else { + details.column++; + } + + p++; + } + + peg$posDetailsCache[pos] = details; + return details; + } + } + + function peg$computeLocation(startPos, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + endPosDetails = peg$computePosDetails(endPos); + + return { + start: { + offset: startPos, + line: startPosDetails.line, + column: startPosDetails.column + }, + end: { + offset: endPos, + line: endPosDetails.line, + column: endPosDetails.column + } + }; + } + + function peg$fail(expected) { + if (peg$currPos < peg$maxFailPos) { return; } + + if (peg$currPos > peg$maxFailPos) { + peg$maxFailPos = peg$currPos; + peg$maxFailExpected = []; + } + + peg$maxFailExpected.push(expected); + } + + function peg$buildStructuredError(expected, found, location) { + return new peg$SyntaxError( + peg$SyntaxError.buildMessage(expected, found), + expected, + found, + location + ); + } + + function peg$parseBibliography() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parse__(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parseNode(); + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parseNode(); + } + if (s2 !== peg$FAILED) { + s3 = peg$parse__(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c0(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseComment() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 64) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parse__(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 7).toLowerCase() === peg$c3) { + s3 = input.substr(peg$currPos, 7); + peg$currPos += 7; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parse__h(); + if (s4 !== peg$FAILED) { + s5 = peg$parseBracedComment(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(s5); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 64) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parse__(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 7).toLowerCase() === peg$c3) { + s3 = input.substr(peg$currPos, 7); + peg$currPos += 7; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parse__h(); + if (s4 !== peg$FAILED) { + s5 = []; + if (peg$c6.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c7); } + } + while (s6 !== peg$FAILED) { + s5.push(s6); + if (peg$c6.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c7); } + } + } + if (s5 !== peg$FAILED) { + s6 = []; + if (peg$c8.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c9); } + } + while (s7 !== peg$FAILED) { + s6.push(s7); + if (peg$c8.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c9); } + } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c10(s5); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$currPos; + if (peg$c11.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + if (s2 !== peg$FAILED) { + s3 = []; + if (peg$c6.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c7); } + } + while (s4 !== peg$FAILED) { + s3.push(s4); + if (peg$c6.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c7); } + } + } + if (s3 !== peg$FAILED) { + s2 = [s2, s3]; + s1 = s2; + } else { + peg$currPos = s1; + s1 = peg$FAILED; + } + } else { + peg$currPos = s1; + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + s2 = []; + if (peg$c8.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c9); } + } + while (s3 !== peg$FAILED) { + s2.push(s3); + if (peg$c8.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c9); } + } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s1); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } + } + + return s0; + } + + function peg$parseNode() { + var s0, s1; + + s0 = peg$currPos; + s1 = peg$parseComment(); + if (s1 === peg$FAILED) { + s1 = peg$parsePreambleExpression(); + if (s1 === peg$FAILED) { + s1 = peg$parseStringDeclaration(); + if (s1 === peg$FAILED) { + s1 = peg$parseEntry(); + } + } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseBracedComment() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 123) { + s1 = peg$c15; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s1 !== peg$FAILED) { + s2 = []; + if (peg$c17.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c18); } + } + if (s3 === peg$FAILED) { + s3 = peg$parseBracedComment(); + } + while (s3 !== peg$FAILED) { + s2.push(s3); + if (peg$c17.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c18); } + } + if (s3 === peg$FAILED) { + s3 = peg$parseBracedComment(); + } + } + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s3 = peg$c19; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c20); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c21(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseEntry() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 64) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parse__(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = []; + if (peg$c22.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c23); } + } + if (s5 !== peg$FAILED) { + while (s5 !== peg$FAILED) { + s4.push(s5); + if (peg$c22.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c23); } + } + } + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = input.substring(s3, peg$currPos); + } else { + s3 = s4; + } + if (s3 !== peg$FAILED) { + s4 = peg$parse__(); + if (s4 !== peg$FAILED) { + if (peg$c24.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c25); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parse__(); + if (s6 !== peg$FAILED) { + s7 = peg$parseEntryId(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parse__(); + if (s8 !== peg$FAILED) { + s9 = []; + s10 = peg$parseField(); + while (s10 !== peg$FAILED) { + s9.push(s10); + s10 = peg$parseField(); + } + if (s9 !== peg$FAILED) { + s10 = peg$parse__(); + if (s10 !== peg$FAILED) { + if (peg$c26.test(input.charAt(peg$currPos))) { + s11 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s11 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c27); } + } + if (s11 !== peg$FAILED) { + s12 = peg$parse__(); + if (s12 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c28(s3, s7, s9); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsePreambleExpression() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 64) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parse__(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 8).toLowerCase() === peg$c29) { + s3 = input.substr(peg$currPos, 8); + peg$currPos += 8; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parse__(); + if (s4 !== peg$FAILED) { + if (peg$c24.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c25); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parse__(); + if (s6 !== peg$FAILED) { + s7 = []; + s8 = peg$parseEnvironment(); + if (s8 === peg$FAILED) { + s8 = peg$parseBlock(); + if (s8 === peg$FAILED) { + s8 = peg$parseMath(); + if (s8 === peg$FAILED) { + s8 = peg$parseCommand(); + if (s8 === peg$FAILED) { + s8 = peg$parseText(); + } + } + } + } + while (s8 !== peg$FAILED) { + s7.push(s8); + s8 = peg$parseEnvironment(); + if (s8 === peg$FAILED) { + s8 = peg$parseBlock(); + if (s8 === peg$FAILED) { + s8 = peg$parseMath(); + if (s8 === peg$FAILED) { + s8 = peg$parseCommand(); + if (s8 === peg$FAILED) { + s8 = peg$parseText(); + } + } + } + } + } + if (s7 !== peg$FAILED) { + s8 = peg$parse__(); + if (s8 !== peg$FAILED) { + if (peg$c26.test(input.charAt(peg$currPos))) { + s9 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c27); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parse__(); + if (s10 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c31(s5, s7, s9); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseStringDeclaration() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 64) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parse__(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 6).toLowerCase() === peg$c32) { + s3 = input.substr(peg$currPos, 6); + peg$currPos += 6; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c33); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parse__(); + if (s4 !== peg$FAILED) { + if (peg$c24.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c25); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parse__(); + if (s6 !== peg$FAILED) { + s7 = peg$parseVariableName(); + if (s7 !== peg$FAILED) { + s8 = peg$parseFieldSeparator(); + if (s8 !== peg$FAILED) { + s9 = []; + s10 = peg$parseRegularValue(); + if (s10 !== peg$FAILED) { + while (s10 !== peg$FAILED) { + s9.push(s10); + s10 = peg$parseRegularValue(); + } + } else { + s9 = peg$FAILED; + } + if (s9 !== peg$FAILED) { + s10 = peg$parse__(); + if (s10 !== peg$FAILED) { + if (peg$c26.test(input.charAt(peg$currPos))) { + s11 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s11 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c27); } + } + if (s11 !== peg$FAILED) { + s12 = peg$parse__(); + if (s12 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c34(s7, s9); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseEntryId() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parse__(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = []; + if (peg$c35.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c36); } + } + while (s4 !== peg$FAILED) { + s3.push(s4); + if (peg$c35.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c36); } + } + } + if (s3 !== peg$FAILED) { + s2 = input.substring(s2, peg$currPos); + } else { + s2 = s3; + } + if (s2 !== peg$FAILED) { + s3 = peg$parse__(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s4 = peg$c37; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c38); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseField() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseFieldName(); + if (s1 !== peg$FAILED) { + peg$savedPos = peg$currPos; + s2 = peg$c40(s1); + if (s2) { + s2 = void 0; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$parseFieldSeparator(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 123) { + s4 = peg$c15; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (input.charCodeAt(peg$currPos) === 123) { + s6 = peg$c15; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + peg$silentFails--; + if (s6 !== peg$FAILED) { + peg$currPos = s5; + s5 = void 0; + } else { + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseVerbatimFieldValue(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s7 = peg$c19; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c20); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parseFieldTerminator(); + if (s8 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c41(s1, s6); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$parseFieldName(); + if (s1 !== peg$FAILED) { + peg$savedPos = peg$currPos; + s2 = peg$c42(s1); + if (s2) { + s2 = void 0; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$parseFieldSeparator(); + if (s3 !== peg$FAILED) { + s4 = peg$parseVerbatimFieldValue(); + if (s4 !== peg$FAILED) { + s5 = peg$parseFieldTerminator(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c43(s1, s4); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$parseFieldName(); + if (s1 !== peg$FAILED) { + s2 = peg$parseFieldSeparator(); + if (s2 !== peg$FAILED) { + s3 = peg$parseFieldValue(); + if (s3 !== peg$FAILED) { + s4 = peg$parseFieldTerminator(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1, s3); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } + } + + return s0; + } + + function peg$parseFieldName() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parse__(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = []; + if (peg$c45.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c46); } + } + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + if (peg$c45.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c46); } + } + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s2 = input.substring(s2, peg$currPos); + } else { + s2 = s3; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c47(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseVerbatimFieldValue() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 34) { + s1 = peg$c48; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c49); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseTextNoQuotes(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 34) { + s3 = peg$c48; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c49); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c50(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 123) { + s1 = peg$c15; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parseVerbatimText(); + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parseVerbatimText(); + } + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s3 = peg$c19; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c20); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c51(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } + + return s0; + } + + function peg$parseVerbatimText() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$currPos; + s2 = []; + if (peg$c17.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c18); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (peg$c17.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c18); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s1 = input.substring(s1, peg$currPos); + } else { + s1 = s2; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c52(s1); + } + s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 123) { + s1 = peg$c15; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parseVerbatimText(); + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parseVerbatimText(); + } + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s3 = peg$c19; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c20); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c53(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } + + return s0; + } + + function peg$parseFieldValue() { + var s0, s1, s2, s3; + + s0 = peg$parseNumber(); + if (s0 === peg$FAILED) { + s0 = peg$currPos; + peg$savedPos = peg$currPos; + s1 = peg$c54(); + if (s1) { + s1 = void 0; + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parseRegularValue(); + if (s3 === peg$FAILED) { + s3 = peg$parseStringValue(); + } + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parseRegularValue(); + if (s3 === peg$FAILED) { + s3 = peg$parseStringValue(); + } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } + + return s0; + } + + function peg$parseRegularValue() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 34) { + s1 = peg$c48; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c49); } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parseEnvironment(); + if (s3 === peg$FAILED) { + s3 = peg$parseBlock(); + if (s3 === peg$FAILED) { + s3 = peg$parseMath(); + if (s3 === peg$FAILED) { + s3 = peg$parseCommand(); + if (s3 === peg$FAILED) { + s3 = peg$parseTextNoQuotes(); + } + } + } + } + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parseEnvironment(); + if (s3 === peg$FAILED) { + s3 = peg$parseBlock(); + if (s3 === peg$FAILED) { + s3 = peg$parseMath(); + if (s3 === peg$FAILED) { + s3 = peg$parseCommand(); + if (s3 === peg$FAILED) { + s3 = peg$parseTextNoQuotes(); + } + } + } + } + } + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 34) { + s3 = peg$c48; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c49); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseConcat(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.substr(peg$currPos, 6) === peg$c57) { + s1 = peg$c57; + peg$currPos += 6; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + if (peg$c59.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c60); } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = []; + s4 = peg$parseVerbatimText(); + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parseVerbatimText(); + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s4 = peg$c19; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c20); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parseConcat(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c51(s3); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 123) { + s1 = peg$c15; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parseEnvironment(); + if (s3 === peg$FAILED) { + s3 = peg$parseBlock(); + if (s3 === peg$FAILED) { + s3 = peg$parseMath(); + if (s3 === peg$FAILED) { + s3 = peg$parseCommand(); + if (s3 === peg$FAILED) { + s3 = peg$parseText(); + } + } + } + } + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parseEnvironment(); + if (s3 === peg$FAILED) { + s3 = peg$parseBlock(); + if (s3 === peg$FAILED) { + s3 = peg$parseMath(); + if (s3 === peg$FAILED) { + s3 = peg$parseCommand(); + if (s3 === peg$FAILED) { + s3 = peg$parseText(); + } + } + } + } + } + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s3 = peg$c19; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c20); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseConcat(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$parseStringReference(); + if (s1 !== peg$FAILED) { + s2 = peg$parseConcat(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } + } + } + + return s0; + } + + function peg$parseStringValue() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseStringReference(); + if (s1 !== peg$FAILED) { + s2 = peg$parseConcat(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseText() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c61.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c62); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c61.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c62); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c63(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseTextNoQuotes() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c64.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c64.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c63(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseNumber() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$currPos; + s2 = []; + if (peg$c66.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (peg$c66.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s1 = input.substring(s1, peg$currPos); + } else { + s1 = s2; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c68(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseStringReference() { + var s0, s1; + + s0 = peg$currPos; + s1 = peg$parseVariableName(); + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c69(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseEnvironment() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 7) === peg$c70) { + s1 = peg$c70; + peg$currPos += 7; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = []; + if (peg$c72.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + if (peg$c72.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s2 = input.substring(s2, peg$currPos); + } else { + s2 = s3; + } + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s3 = peg$c19; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c20); } + } + if (s3 !== peg$FAILED) { + s4 = []; + s5 = peg$parseEnvironment(); + if (s5 === peg$FAILED) { + s5 = peg$parseBlock(); + if (s5 === peg$FAILED) { + s5 = peg$parseCommand(); + if (s5 === peg$FAILED) { + s5 = peg$parseMath(); + if (s5 === peg$FAILED) { + s5 = peg$parseText(); + } + } + } + } + while (s5 !== peg$FAILED) { + s4.push(s5); + s5 = peg$parseEnvironment(); + if (s5 === peg$FAILED) { + s5 = peg$parseBlock(); + if (s5 === peg$FAILED) { + s5 = peg$parseCommand(); + if (s5 === peg$FAILED) { + s5 = peg$parseMath(); + if (s5 === peg$FAILED) { + s5 = peg$parseText(); + } + } + } + } + } + if (s4 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c74) { + s5 = peg$c74; + peg$currPos += 5; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c75); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + s7 = []; + if (peg$c72.test(input.charAt(peg$currPos))) { + s8 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s8 !== peg$FAILED) { + while (s8 !== peg$FAILED) { + s7.push(s8); + if (peg$c72.test(input.charAt(peg$currPos))) { + s8 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + } + } else { + s7 = peg$FAILED; + } + if (s7 !== peg$FAILED) { + s6 = input.substring(s6, peg$currPos); + } else { + s6 = s7; + } + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s7 = peg$c19; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c20); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = peg$currPos; + s8 = peg$c76(s2, s4, s6); + if (s8) { + s8 = void 0; + } else { + s8 = peg$FAILED; + } + if (s8 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c77(s2, s4); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseBlock() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c78) { + s1 = peg$c78; + peg$currPos += 2; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c79); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseExtendedDiacritic(); + if (s2 !== peg$FAILED) { + s3 = peg$parse__(); + if (s3 !== peg$FAILED) { + if (peg$c72.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 92) { + s5 = peg$c80; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s5 !== peg$FAILED) { + if (peg$c82.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } + if (s4 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s5 = peg$c19; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c20); } + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c84(s2, s4); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.substr(peg$currPos, 6) === peg$c57) { + s1 = peg$c57; + peg$currPos += 6; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + if (peg$c59.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c60); } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = []; + s4 = peg$parseVerbatimText(); + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parseVerbatimText(); + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s4 = peg$c19; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c20); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c85(s3); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 123) { + s1 = peg$c15; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parseEnvironment(); + if (s3 === peg$FAILED) { + s3 = peg$parseBlock(); + if (s3 === peg$FAILED) { + s3 = peg$parseCommand(); + if (s3 === peg$FAILED) { + s3 = peg$parseMath(); + if (s3 === peg$FAILED) { + s3 = peg$parseText(); + } + } + } + } + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parseEnvironment(); + if (s3 === peg$FAILED) { + s3 = peg$parseBlock(); + if (s3 === peg$FAILED) { + s3 = peg$parseCommand(); + if (s3 === peg$FAILED) { + s3 = peg$parseMath(); + if (s3 === peg$FAILED) { + s3 = peg$parseText(); + } + } + } + } + } + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s3 = peg$c19; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c20); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c86(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } + } + + return s0; + } + + function peg$parseMath() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + peg$savedPos = peg$currPos; + s1 = peg$c87(); + if (s1) { + s1 = void 0; + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 36) { + s2 = peg$c88; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c90) { + s2 = peg$c90; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + } + if (s2 !== peg$FAILED) { + peg$savedPos = peg$currPos; + s3 = peg$c92(); + if (s3) { + s3 = void 0; + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = []; + s5 = peg$parseBlock(); + if (s5 === peg$FAILED) { + s5 = peg$parseCommand(); + if (s5 === peg$FAILED) { + s5 = peg$parseText(); + } + } + while (s5 !== peg$FAILED) { + s4.push(s5); + s5 = peg$parseBlock(); + if (s5 === peg$FAILED) { + s5 = peg$parseCommand(); + if (s5 === peg$FAILED) { + s5 = peg$parseText(); + } + } + } + if (s4 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 36) { + s5 = peg$c88; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s5 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c90) { + s5 = peg$c90; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + } + if (s5 !== peg$FAILED) { + peg$savedPos = peg$currPos; + s6 = peg$c93(); + if (s6) { + s6 = void 0; + } else { + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c94(s2, s4); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseLineComment() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 37) { + s1 = peg$c95; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parse__h(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = []; + if (peg$c97.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s5 !== peg$FAILED) { + while (s5 !== peg$FAILED) { + s4.push(s5); + if (peg$c97.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + } + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = input.substring(s3, peg$currPos); + } else { + s3 = s4; + } + if (s3 !== peg$FAILED) { + s4 = []; + s5 = peg$parseEOL(); + if (s5 !== peg$FAILED) { + while (s5 !== peg$FAILED) { + s4.push(s5); + s5 = peg$parseEOL(); + } + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c99(s3); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseCommand() { + var s0; + + s0 = peg$parseScriptCommand(); + if (s0 === peg$FAILED) { + s0 = peg$parseDiacriticCommand(); + if (s0 === peg$FAILED) { + s0 = peg$parseRegularCommand(); + if (s0 === peg$FAILED) { + s0 = peg$parseSymbolCommand(); + } + } + } + + return s0; + } + + function peg$parseScriptCommand() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (peg$c100.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c101); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parse__h(); + if (s2 !== peg$FAILED) { + s3 = peg$parseRequiredArgument(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c102(s1, s3); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseDiacriticCommand() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 92) { + s1 = peg$c80; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseSimpleDiacritic(); + if (s2 !== peg$FAILED) { + s3 = peg$parse__(); + if (s3 !== peg$FAILED) { + if (peg$c72.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 92) { + s5 = peg$c80; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s5 !== peg$FAILED) { + if (peg$c82.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c84(s2, s4); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 92) { + s1 = peg$c80; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseExtendedDiacritic(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 123) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + if (peg$c72.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 92) { + s5 = peg$c80; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s5 !== peg$FAILED) { + if (peg$c82.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } + if (s4 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s5 = peg$c19; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c20); } + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c84(s2, s4); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 92) { + s1 = peg$c80; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseExtendedDiacritic(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (input.charCodeAt(peg$currPos) === 123) { + s4 = peg$c15; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseRegularValue(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c103(s2, s4); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } + } + + return s0; + } + + function peg$parseSymbolCommand() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 92) { + s1 = peg$c80; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (peg$c104.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + if (s3 !== peg$FAILED) { + s2 = input.substring(s2, peg$currPos); + } else { + s2 = s3; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c106(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseRegularCommand() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 92) { + s1 = peg$c80; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 10) === peg$c107) { + s2 = peg$c107; + peg$currPos += 10; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c108); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseBlock(); + if (s3 !== peg$FAILED) { + peg$savedPos = peg$currPos; + s4 = peg$c109(s2, s3); + if (s4) { + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$parseOptionalArgument(); + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$parseOptionalArgument(); + } + if (s5 !== peg$FAILED) { + s6 = peg$parseRequiredArgument(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c110(s2, s3, s5, s6); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 92) { + s1 = peg$c80; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 5) === peg$c111) { + s3 = peg$c111; + peg$currPos += 5; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c112); } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 3) === peg$c113) { + s4 = peg$c113; + peg$currPos += 3; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c114); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = []; + if (peg$c22.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c23); } + } + if (s6 !== peg$FAILED) { + while (s6 !== peg$FAILED) { + s5.push(s6); + if (peg$c22.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c23); } + } + } + } else { + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + s4 = input.substring(s4, peg$currPos); + } else { + s4 = s5; + } + if (s4 !== peg$FAILED) { + peg$savedPos = peg$currPos; + s5 = peg$c115(s4); + if (s5) { + s5 = void 0; + } else { + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$parseOptionalArgument(); + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$parseOptionalArgument(); + } + if (s6 !== peg$FAILED) { + s7 = peg$parse__h(); + if (s7 !== peg$FAILED) { + s8 = peg$currPos; + peg$silentFails++; + if (input.charCodeAt(peg$currPos) === 123) { + s9 = peg$c15; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + peg$silentFails--; + if (s9 !== peg$FAILED) { + peg$currPos = s8; + s8 = void 0; + } else { + s8 = peg$FAILED; + } + if (s8 !== peg$FAILED) { + s9 = peg$parseVerbatimFieldValue(); + if (s9 !== peg$FAILED) { + s10 = peg$parseVerbatimFieldValue(); + if (s10 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c116(s4, s6, s9, s10); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 92) { + s1 = peg$c80; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 5) === peg$c111) { + s3 = peg$c111; + peg$currPos += 5; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c112); } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 3) === peg$c113) { + s4 = peg$c113; + peg$currPos += 3; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c114); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = []; + if (peg$c22.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c23); } + } + if (s6 !== peg$FAILED) { + while (s6 !== peg$FAILED) { + s5.push(s6); + if (peg$c22.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c23); } + } + } + } else { + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + s4 = input.substring(s4, peg$currPos); + } else { + s4 = s5; + } + if (s4 !== peg$FAILED) { + peg$savedPos = peg$currPos; + s5 = peg$c117(s4); + if (s5) { + s5 = void 0; + } else { + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$parseOptionalArgument(); + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$parseOptionalArgument(); + } + if (s6 !== peg$FAILED) { + s7 = peg$parse__h(); + if (s7 !== peg$FAILED) { + s8 = peg$currPos; + peg$silentFails++; + if (input.charCodeAt(peg$currPos) === 123) { + s9 = peg$c15; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + peg$silentFails--; + if (s9 !== peg$FAILED) { + peg$currPos = s8; + s8 = void 0; + } else { + s8 = peg$FAILED; + } + if (s8 !== peg$FAILED) { + s9 = peg$parseVerbatimFieldValue(); + if (s9 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c118(s4, s6, s9); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 92) { + s1 = peg$c80; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 5) === peg$c111) { + s3 = peg$c111; + peg$currPos += 5; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c112); } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 3) === peg$c113) { + s4 = peg$c113; + peg$currPos += 3; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c114); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = []; + if (peg$c22.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c23); } + } + if (s6 !== peg$FAILED) { + while (s6 !== peg$FAILED) { + s5.push(s6); + if (peg$c22.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c23); } + } + } + } else { + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + s4 = input.substring(s4, peg$currPos); + } else { + s4 = s5; + } + if (s4 !== peg$FAILED) { + peg$savedPos = peg$currPos; + s5 = peg$c119(s4); + if (s5) { + s5 = void 0; + } else { + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$parseOptionalArgument(); + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$parseOptionalArgument(); + } + if (s6 !== peg$FAILED) { + s7 = peg$parse__h(); + if (s7 !== peg$FAILED) { + s8 = peg$parseRequiredArgument(); + if (s8 !== peg$FAILED) { + s9 = peg$parseRequiredArgument(); + if (s9 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c120(s4, s6, s8, s9); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 92) { + s1 = peg$c80; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 5) === peg$c111) { + s3 = peg$c111; + peg$currPos += 5; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c112); } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 3) === peg$c113) { + s4 = peg$c113; + peg$currPos += 3; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c114); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = []; + if (peg$c22.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c23); } + } + if (s6 !== peg$FAILED) { + while (s6 !== peg$FAILED) { + s5.push(s6); + if (peg$c22.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c23); } + } + } + } else { + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + s4 = input.substring(s4, peg$currPos); + } else { + s4 = s5; + } + if (s4 !== peg$FAILED) { + peg$savedPos = peg$currPos; + s5 = peg$c121(s4); + if (s5) { + s5 = void 0; + } else { + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$parseOptionalArgument(); + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$parseOptionalArgument(); + } + if (s6 !== peg$FAILED) { + s7 = peg$parse__h(); + if (s7 !== peg$FAILED) { + s8 = peg$parseRequiredArgument(); + if (s8 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c122(s4, s6, s8); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 92) { + s1 = peg$c80; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 5) === peg$c111) { + s3 = peg$c111; + peg$currPos += 5; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c112); } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 3) === peg$c113) { + s4 = peg$c113; + peg$currPos += 3; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c114); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = []; + if (peg$c22.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c23); } + } + if (s6 !== peg$FAILED) { + while (s6 !== peg$FAILED) { + s5.push(s6); + if (peg$c22.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c23); } + } + } + } else { + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + s4 = input.substring(s4, peg$currPos); + } else { + s4 = s5; + } + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$parseOptionalArgument(); + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$parseOptionalArgument(); + } + if (s5 !== peg$FAILED) { + s6 = peg$parse__(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c123(s4, s5); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } + } + } + } + } + + return s0; + } + + function peg$parseOptionalArgument() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 91) { + s1 = peg$c124; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c125); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parse__h(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = []; + if (peg$c126.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c127); } + } + if (s5 !== peg$FAILED) { + while (s5 !== peg$FAILED) { + s4.push(s5); + if (peg$c126.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c127); } + } + } + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = input.substring(s3, peg$currPos); + } else { + s3 = s4; + } + if (s3 !== peg$FAILED) { + s4 = peg$parse__h(); + if (s4 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 93) { + s5 = peg$c128; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c129); } + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c130(s3); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseRequiredArgument() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parse__h(); + if (s1 !== peg$FAILED) { + if (peg$c131.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c132); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c133(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$parseBlock(); + if (s1 === peg$FAILED) { + s1 = peg$parseCommand(); + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c52(s1); + } + s0 = s1; + } + + return s0; + } + + function peg$parseVariableName() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$currPos; + if (peg$c134.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c135); } + } + if (s2 !== peg$FAILED) { + s3 = []; + if (peg$c136.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c137); } + } + while (s4 !== peg$FAILED) { + s3.push(s4); + if (peg$c136.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c137); } + } + } + if (s3 !== peg$FAILED) { + s2 = [s2, s3]; + s1 = s2; + } else { + peg$currPos = s1; + s1 = peg$FAILED; + } + } else { + peg$currPos = s1; + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + s0 = input.substring(s0, peg$currPos); + } else { + s0 = s1; + } + + return s0; + } + + function peg$parseSimpleDiacritic() { + var s0; + + if (peg$c138.test(input.charAt(peg$currPos))) { + s0 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c139); } + } + + return s0; + } + + function peg$parseExtendedDiacritic() { + var s0; + + if (peg$c140.test(input.charAt(peg$currPos))) { + s0 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c141); } + } + + return s0; + } + + function peg$parseFieldSeparator() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parse__(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 61) { + s2 = peg$c142; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c143); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parse__(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseFieldTerminator() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parse__(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c37; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c38); } + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parse__h(); + if (s3 !== peg$FAILED) { + s4 = []; + s5 = peg$parseLineComment(); + if (s5 === peg$FAILED) { + s5 = peg$parseEOL(); + } + while (s5 !== peg$FAILED) { + s4.push(s5); + s5 = peg$parseLineComment(); + if (s5 === peg$FAILED) { + s5 = peg$parseEOL(); + } + } + if (s4 !== peg$FAILED) { + s1 = [s1, s2, s3, s4]; + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseConcat() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parse__(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 35) { + s2 = peg$c144; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c145); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parse__(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseEOL() { + var s0; + + if (peg$c146.test(input.charAt(peg$currPos))) { + s0 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c147); } + } + + return s0; + } + + function peg$parse__h() { + var s0, s1; + + peg$silentFails++; + s0 = []; + if (peg$c149.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c150); } + } + while (s1 !== peg$FAILED) { + s0.push(s1); + if (peg$c149.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c150); } + } + } + peg$silentFails--; + if (s0 === peg$FAILED) { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c151); } + } + + return s0; + } + + function peg$parse__() { + var s0, s1; + + peg$silentFails++; + s0 = []; + if (peg$c155.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c156); } + } + while (s1 !== peg$FAILED) { + s0.push(s1); + if (peg$c155.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c156); } + } + } + peg$silentFails--; + if (s0 === peg$FAILED) { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c157); } + } + + return s0; + } + + + /* + MIT License + + Copyright (c) 2017 Derek P Sifford, parts copyright (c) 2019 by Emiliano Heyns + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + */ + + const markup = { + sl: 'italics', + em: 'italics', + it: 'italics', + itshape: 'italics', + + bf: 'bold', + bfseries: 'bold', + + sc: 'smallCaps', + scshape: 'smallCaps', + + tt: 'fixedWidth', + rm: 'roman', + sf: 'sansSerif', + verb: 'verbatim', + }; + + const unnestFields = (options.unnestFields || []).map(field => field.toLowerCase()); + const verbatimFields = (options.verbatimFields || [ 'urlraw', 'url', 'doi', 'file', 'files', 'eprint', 'verba', 'verbb', 'verbc' ]).map(field => typeof field === 'string' ? field.toLowerCase() : field); + const verbatimCommands = (options.verbatimCommands || ['texttt', 'url', 'href']); + + function isVerbatimField(name) { + return verbatimFields.find(p => (typeof p === 'string') ? name === p : name.match(p)) + } + + function normalizeWhitespace(textArr) { + return textArr.reduce((prev, curr) => { + if (/\s/.test(curr)) { + if (/\s/.test(prev[prev.length - 1])) { + return prev; + } else { + return prev + ' '; + } + } + return prev + curr; + }, ''); + } + + const has_arguments = { + ElsevierGlyph: 1, + end: 1, + begin: 1, + bibcyr: 1, + bibstring: 1, + chsf: 1, + cite: 1, + cyrchar: 1, + ding: 1, + emph: 1, + enquote: 1, + frac: 2, + href: 2, + hspace: 1, + mathrm: 1, + mbox: 1, + mkbibbold: 1, + mkbibemph: 1, + mkbibitalic: 1, + mkbibquote: 1, + newcommand: 2, + noopsort: 1, + ocirc: 1, + section: 1, + sb: 1, + sp: 1, + subsection: 1, + subsubsection: 1, + subsubsubsection: 1, + t: 1, + textbf: 1, + textit: 1, + textrm: 1, + textsc: 1, + textsubscript: 1, + textsuperscript: 1, + texttt: 1, + url: 1, + vphantom: 1, + vspace: 1, + }; + + if (options.combiningDiacritics) { + for (const cmd of options.combiningDiacritics) { + has_arguments[cmd] = 1; + } + } + + const math = { + on: false, + + set: function(state) { + this.on = state; + return true + } + }; + + function basicTextConversions(node) { + if (node.kind !== 'Text') throw new Error(node.kind + ' is not a Text node') + + switch (node.mode) { + case 'verbatim': + break + + case 'math': + node.value = node.value.replace(/~/g, '\u00A0'); + break + + case 'text': + node.value = node.value + .replace(/---/g, '\u2014') + .replace(/--/g, '\u2013') + .replace(//g, '\u00BF') + .replace(/~/g, '\u00A0') + .replace(/``/g, options.markup.enquote.open) + .replace(/''/g, options.markup.enquote.close); + break + + default: + throw new Error(`Unexpected text mode ${node.mode}`) + } + + return node + } + + function protect(v) { + let source; + if (Array.isArray(v)) { + source = v.map(e => e.source).join(''); + } else { + v = [ v ]; + source = v.source; + } + + return { + kind: 'Block', + value: v, + markup: {}, + case: 'protect', + source: source, + } + } + + function handle_markup_switches(block) { + const value = block.value; + if (!Array.isArray(value)) return block + + block.value = []; + + const pseudo = { + block: null, + markup: {}, + }; + function pseudo_block() { + pseudo.block = { + kind: 'Block', + loc: location(), + source: '', + value: [], + markup: JSON.parse(JSON.stringify(pseudo.markup)), + pseudo: true, + }; + block.value.push(pseudo.block); + } + for (const node of value) { + if (node.kind === 'Environment' || node.kind === 'Block') { + block.value.push(node); + + if (Object.keys(pseudo.markup).length) { + pseudo_block(); + } else { + pseudo.block = null; + } + continue + } + + if (node.kind === 'RegularCommand' && markup[node.command]) { + if (pseudo.markup.italics) { // https://github.com/citation-js/bibtex-parser-experiments/commit/cae475f075a05d1c074485a061b08ed245170c7e + delete pseudo.markup.italics; + if (markup[node.command] !== 'italics') pseudo.markup[markup[node.command]] = true; + } else { + pseudo.markup[markup[node.command]] = true; + } + + if (Object.keys(pseudo.markup).length) { + pseudo_block(); + } else { + pseudo.block = null; + } + } + + if (pseudo.block) { + pseudo.block.source += node.source; + pseudo.block.value.push(node); + + } else { + block.value.push(node); + + } + } + + block.value = block.value.filter(node => !(node.pseudo && node.value.length === 0)); + + return block + } + + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } +} + +var grammar = { + SyntaxError: peg$SyntaxError, + parse: peg$parse +}; + +var chunker = createCommonjsModule(function (module, exports) { +// Original work by Henrik Muehe (c) 2010 +// +// CommonJS port by Mikola Lysenko 2013 +// +Object.defineProperty(exports, "__esModule", { value: true }); +exports.parse = void 0; +class ParseError extends Error { + constructor(message, parser) { + message += ` @ ${parser.pos}`; + if (parser.parsing) + message += ` in ${JSON.stringify(parser.parsing)}`; + super(message); + this.name = 'ParseError'; + } +} +// tslint:disable-next-line prefer-template +const letter = new RegExp('[' + [ + // Letter, Uppercase + /\u0041-\u005A\u00C0-\u00D6\u00D8-\u00DE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178-\u0179\u017B\u017D\u0181-\u0182\u0184\u0186-\u0187\u0189-\u018B\u018E-\u0191\u0193-\u0194\u0196-\u0198\u019C-\u019D\u019F-\u01A0\u01A2\u01A4\u01A6-\u01A7\u01A9\u01AC\u01AE-\u01AF\u01B1-\u01B3\u01B5\u01B7-\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A-\u023B\u023D-\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u037F\u0386\u0388-\u038A\u038C\u038E-\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9-\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0-\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u13A0-\u13F5\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E-\u213F\u2145\u2183\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D-\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA-\uA7AD\uA7B0-\uA7B4\uA7B6\uFF21-\uFF3A/.source, + // Letter, Titlecase + /\u01C5\u01C8\u01CB\u01F2\u1F88-\u1F8F\u1F98-\u1F9F\u1FA8-\u1FAF\u1FBC\u1FCC\u1FFC/.source, + // Letter, Lowercase + /\u0061-\u007A\u00B5\u00DF-\u00F6\u00F8-\u00FF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137-\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148-\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C-\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA-\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9-\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC-\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF-\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F-\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02AF\u0371\u0373\u0377\u037B-\u037D\u0390\u03AC-\u03CE\u03D0-\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB-\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE-\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0561-\u0587\u13F8-\u13FD\u1D00-\u1D2B\u1D6B-\u1D77\u1D79-\u1D9A\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6-\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FC7\u1FD0-\u1FD3\u1FD6-\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6-\u1FF7\u210A\u210E-\u210F\u2113\u212F\u2134\u2139\u213C-\u213D\u2146-\u2149\u214E\u2184\u2C30-\u2C5E\u2C61\u2C65-\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73-\u2C74\u2C76-\u2C7B\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3-\u2CE4\u2CEC\u2CEE\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA771-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uA78E\uA791\uA793-\uA795\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7B5\uA7B7\uA7FA\uAB30-\uAB5A\uAB60-\uAB65\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A/.source, + // Letter, Modifier + /\u02B0-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0374\u037A\u0559\u0640\u06E5-\u06E6\u07F4-\u07F5\u07FA\u081A\u0824\u0828\u0971\u0E46\u0EC6\u10FC\u17D7\u1843\u1AA7\u1C78-\u1C7D\u1D2C-\u1D6A\u1D78\u1D9B-\u1DBF\u2071\u207F\u2090-\u209C\u2C7C-\u2C7D\u2D6F\u2E2F\u3005\u3031-\u3035\u303B\u309D-\u309E\u30FC-\u30FE\uA015\uA4F8-\uA4FD\uA60C\uA67F\uA69C-\uA69D\uA717-\uA71F\uA770\uA788\uA7F8-\uA7F9\uA9CF\uA9E6\uAA70\uAADD\uAAF3-\uAAF4\uAB5C-\uAB5F\uFF70\uFF9E-\uFF9F/.source, + // Letter, Other + /\u00AA\u00BA\u01BB\u01C0-\u01C3\u0294\u05D0-\u05EA\u05F0-\u05F2\u0620-\u063F\u0641-\u064A\u066E-\u066F\u0671-\u06D3\u06D5\u06EE-\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u0800-\u0815\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0972-\u0980\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC-\u09DD\u09DF-\u09E1\u09F0-\u09F1\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33\u0A35-\u0A36\u0A38-\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0-\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32-\u0B33\u0B35-\u0B39\u0B3D\u0B5C-\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60-\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0-\u0CE1\u0CF1-\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32-\u0E33\u0E40-\u0E45\u0E81-\u0E82\u0E84\u0E87-\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA-\u0EAB\u0EAD-\u0EB0\u0EB2-\u0EB3\u0EBD\u0EC0-\u0EC4\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065-\u1066\u106E-\u1070\u1075-\u1081\u108E\u10D0-\u10FA\u10FD-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17DC\u1820-\u1842\u1844-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE-\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C77\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5-\u1CF6\u2135-\u2138\u2D30-\u2D67\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3006\u303C\u3041-\u3096\u309F\u30A1-\u30FA\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA014\uA016-\uA48C\uA4D0-\uA4F7\uA500-\uA60B\uA610-\uA61F\uA62A-\uA62B\uA66E\uA6A0-\uA6E5\uA78F\uA7F7\uA7FB-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9E0-\uA9E4\uA9E7-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA6F\uAA71-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5-\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADC\uAAE0-\uAAEA\uAAF2\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF66-\uFF6F\uFF71-\uFF9D\uFFA0-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC/.source, +].join('') + ']'); +class BibtexParser { + parse(input, options = {}) { + // this._progress = 0 + this.pos = 0; + this.input = input; + this.max_entries = options.max_entries || 0; + this.entries = 0; + this.parsing = null; + this.chunks = []; + if (options.async) { + return this.bibtexAsync().then(() => this.chunks); + } + else { + this.bibtex(); + return this.chunks; + } + } + isWhitespace(s, horizontalOnly = false) { + return (s === ' ' || s === '\t' || (!horizontalOnly && (s === '\r' || s === '\n'))); + } + match(s) { + this.skipWhitespace(); + if (this.input.substr(this.pos, s.length) !== s) { + throw new ParseError(`Token mismatch, expected ${JSON.stringify(s)}, found ${JSON.stringify(this.input.substr(this.pos, 20))}...`, this); // tslint:disable-line no-magic-numbers + } + this.pos += s.length; + this.skipWhitespace(); + } + tryMatch(s) { + this.skipWhitespace(); + return (this.input.substr(this.pos, s.length) === s); + // this.skipWhitespace() + } + skipWhitespace() { + while (this.pos < this.input.length && this.isWhitespace(this.input[this.pos])) + this.pos++; + // shady + if (this.input[this.pos] === '%') { + while (this.pos < this.input.length && this.input[this.pos] !== '\n') + this.pos++; + while (this.pos < this.input.length && this.isWhitespace(this.input[this.pos])) + this.pos++; + } + } + value_braces() { + let bracecount = 0; + this.match('{'); + const start = this.pos; + let math = false; + while (true) { + switch (this.input[this.pos]) { + case '\\': + this.pos += 1; + break; + case '{': + bracecount++; + break; + case '}': + if (bracecount === 0) { + if (math) + throw new ParseError('Unclosed math section', this); + this.pos++; + return this.input.substring(start, this.pos - 1); + } + bracecount--; + break; + case '$': + math = !math; + break; + } + this.pos++; + if (this.pos >= this.input.length) { + throw new ParseError(`Unterminated brace-value ${JSON.stringify(this.input.substr(start, 20))}`, this); // tslint:disable-line no-magic-numbers + } + } + } + value_quotes() { + this.match('"'); + const start = this.pos; + let bracecount = 0; + while (true) { + switch (this.input[this.pos]) { + case '\\': + this.pos += 1; + break; + case '{': + bracecount++; + break; + case '}': + bracecount--; + break; + case '"': + if (bracecount <= 0) { + this.pos++; + return this.input.substring(start, this.pos - 1); + } + } + this.pos++; + if (this.pos >= this.input.length) { + throw new ParseError(`Unterminated quote-value ${JSON.stringify(this.input.substr(start, 20))}`, this); // tslint:disable-line no-magic-numbers + } + } + } + single_value() { + if (this.tryMatch('{')) { + return this.value_braces(); + } + else if (this.tryMatch('"')) { + return this.value_quotes(); + } + else { + return this.key(); + } + } + value() { + const values = []; + values.push(this.single_value()); + while (this.tryMatch('#')) { + this.match('#'); + values.push(this.single_value()); + } + return values.join(''); + } + key(allowUnicode = false) { + const start = this.pos; + while (true) { + if (this.pos === this.input.length) { + throw new ParseError('Runaway key', this); + } + if (this.input[this.pos].match(/['a-zA-Z0-9&;_:\\./-]/)) { + this.pos++; + } + else if (allowUnicode && this.input[this.pos].match(letter)) { + this.pos++; + } + else { + return this.input.substring(start, this.pos); + } + } + } + key_equals_value() { + const key = this.key(); + if (!this.tryMatch('=')) { + throw new ParseError(`... = value expected, equals sign missing: ${JSON.stringify(this.input.substr(this.pos, 20))}...`, this); // tslint:disable-line no-magic-numbers + } + this.match('='); + const val = this.value(); + return [key, val]; + } + key_value_list() { + this.key_equals_value(); + while (this.tryMatch(',')) { + this.match(','); + // fixes problems with commas at the end of a list + if (this.tryMatch('}')) { + break; + } + this.key_equals_value(); + } + } + entry(d) { + this.parsing = this.key(true); + this.match(','); + this.key_value_list(); + } + directive() { + this.match('@'); + return `@${this.key()}`.toLowerCase(); + } + string() { + this.key_equals_value(); + } + preamble() { + this.value(); + } + comment() { + while (this.isWhitespace(this.input[this.pos], true)) + this.pos++; + if (this.input[this.pos] === '{') { + this.value_braces(); + return; + } + while (this.input[this.pos] !== '\n' && this.pos < this.input.length) + this.pos++; + } + /* + private progress() { + const progress = Math.round((this.pos / this.input.length * 100) / 5) * 5 // tslint:disable-line no-magic-numbers + if (this._progress !== progress) { + this._progress = progress + process.stdout.write(` (${this._progress}%) `) + } + } + */ + hasMore() { + if (this.max_entries && this.entries >= this.max_entries) + return false; + return (this.pos < this.input.length); + } + bibtex() { + while (this.hasMore()) { + this.parseNext(); + } + } + bibtexAsync() { + return this.hasMore() ? (new Promise(resolve => resolve(this.parseNext()))).then(() => this.bibtexAsync()) : Promise.resolve(null); + } + parseNext() { + // this.progress() + const chunk = { + offset: { + pos: this.pos, + line: this.input.substring(0, this.pos).split('\n').length - 1, + }, + error: null, + text: null, + }; + this.skipWhitespace(); + if (this.pos >= this.input.length) + return; + let guard = ''; + try { + const d = this.directive(); + switch (d) { + case '@string': + this.match('{'); + this.string(); + this.match('}'); + chunk.stringDeclaration = true; + break; + case '@preamble': + this.match('{'); + this.preamble(); + this.match('}'); + chunk.preamble = true; + break; + case '@comment': + this.comment(); + chunk.comment = true; + break; + default: + if (this.tryMatch('{')) { + guard = '{}'; + } + else if (this.tryMatch('(')) { + guard = '()'; + } + else { + throw new ParseError(`Token mismatch, expected '{' or '(', found ${JSON.stringify(this.input.substr(this.pos, 20))}...`, this); // tslint:disable-line no-magic-numbers + } + this.match(guard[0]); + this.entry(d); + this.match(guard[1]); + chunk.entry = true; + this.entries++; + break; + } + } + catch (err) { + if (err.name !== 'ParseError') + throw err; + chunk.error = err.message, + // skip ahead to the next @ and try again + this.pos = chunk.offset.pos + 1; + while (this.pos < this.input.length && this.input[this.pos] !== '@') + this.pos++; + } + const text = this.input.substring(chunk.offset.pos, this.pos); + const last = this.chunks.length - 1; + if (chunk.error && this.chunks.length && this.chunks[last].error) { + this.chunks[last].text += text; + } + else { + chunk.text = text; + this.chunks.push(chunk); + } + } +} +/** + * Reads the bibtex input and splits it into separate chunks of `@string`s, `@comment`s, and bibtex entries. Useful for detecting if a file is bibtex file and for filtering out basic errors that would + * make the more sophisticated [[bibtex.parse]] reject the whole file + * + * @returns array of chunks, with markers for type and errors (if any) found. + */ +function parse(input, options = {}) { + return (new BibtexParser).parse(input, options); +} +exports.parse = parse; + +}); + +var $ = { + math: "\\$", + text: "\\$" +}; +var _ = { + math: "\\_", + text: "\\_" +}; +var require$$0$1 = { + "#": { + math: "\\#", + text: "\\#" +}, + $: $, + "%": { + math: "\\%", + text: "\\%" +}, + "&": { + math: "\\&", + text: "\\&" +}, + "/​": { + text: "\\slash", + commandspacer: true +}, + "<": { + math: "<" +}, + ">": { + math: ">" +}, + "\\": { + math: "\\backslash", + text: "\\textbackslash", + commandspacer: true +}, + "^": { + math: "\\sphat", + text: "\\^" +}, + _: _, + "i︠a︡": { + text: "\\t{ia}" +}, + "{": { + math: "\\lbrace", + text: "\\{" +}, + "}": { + math: "\\rbrace", + text: "\\}" +}, + "~": { + math: "\\sptilde", + text: "\\textasciitilde", + commandspacer: true +}, + " ": { + math: "~", + space: true, + text: "~" +}, + "¡": { + text: "\\textexclamdown", + commandspacer: true +}, + "¢": { + math: "\\cent", + text: "\\textcent", + commandspacer: true, + textpackages: [ + "textcomp" + ] +}, + "£": { + math: "\\pounds", + text: "\\textsterling", + commandspacer: true, + textpackages: [ + "textcomp" + ] +}, + "¤": { + text: "\\textcurrency", + commandspacer: true, + textpackages: [ + "textcomp" + ] +}, + "¥": { + math: "\\yen", + text: "\\textyen", + commandspacer: true, + textpackages: [ + "textcomp" + ] +}, + "¦": { + text: "\\textbrokenbar", + commandspacer: true, + textpackages: [ + "textcomp" + ] +}, + "§": { + text: "\\textsection", + commandspacer: true, + textpackages: [ + "textcomp" + ] +}, + "¨": { + math: "\\spddot", + text: "\\textasciidieresis", + commandspacer: true +}, + "©": { + text: "\\textcopyright", + commandspacer: true, + textpackages: [ + "textcomp" + ] +}, + "ª": { + text: "\\textordfeminine", + commandspacer: true, + textpackages: [ + "textcomp" + ] +}, + "«": { + text: "\\guillemotleft", + commandspacer: true +}, + "¬": { + math: "\\lnot" +}, + "­": { + math: "\\-", + text: "\\-" +}, + "®": { + math: "\\circledR", + text: "\\textregistered", + commandspacer: true, + textpackages: [ + "textcomp" + ] +}, + "¯": { + text: "\\textasciimacron", + commandspacer: true +}, + "°": { + math: "^\\circ", + text: "\\textdegree", + commandspacer: true, + textpackages: [ + "textcomp" + ] +}, + "±": { + math: "\\pm" +}, + "²": { + math: "^{2}" +}, + "³": { + math: "^{3}" +}, + "´": { + text: "\\textasciiacute", + commandspacer: true +}, + "µ": { + text: "\\textmu", + commandspacer: true +}, + "¶": { + text: "\\textparagraph", + commandspacer: true, + textpackages: [ + "textcomp" + ] +}, + "·": { + math: "\\cdot" +}, + "¸": { + text: "\\c", + commandspacer: true +}, + "¹": { + math: "^{1}" +}, + "º": { + text: "\\textordmasculine", + commandspacer: true, + textpackages: [ + "textcomp" + ] +}, + "»": { + text: "\\guillemotright", + commandspacer: true +}, + "¼": { + math: "\\frac{1}{4}" +}, + "½": { + math: "\\frac{1}{2}" +}, + "¾": { + math: "\\frac{3}{4}" +}, + "¿": { + text: "\\textquestiondown", + commandspacer: true +}, + "À": { + text: "\\`A" +}, + "Á": { + text: "\\'A" +}, + "Â": { + text: "\\^A" +}, + "Ã": { + text: "\\~A" +}, + "Ä": { + text: "\\\"A" +}, + "Å": { + text: "\\AA", + commandspacer: true +}, + "Æ": { + text: "\\AE", + commandspacer: true +}, + "Ç": { + text: "\\c{C}" +}, + "È": { + text: "\\`E" +}, + "É": { + text: "\\'E" +}, + "Ê": { + text: "\\^E" +}, + "Ë": { + text: "\\\"E" +}, + "Ì": { + text: "\\`I" +}, + "Í": { + text: "\\'I" +}, + "Î": { + text: "\\^I" +}, + "Ï": { + text: "\\\"I" +}, + "Ð": { + text: "\\DH", + commandspacer: true +}, + "Ñ": { + text: "\\~N" +}, + "Ò": { + text: "\\`O" +}, + "Ó": { + text: "\\'O" +}, + "Ô": { + text: "\\^O" +}, + "Õ": { + text: "\\~O" +}, + "Ö": { + text: "\\\"O" +}, + "×": { + math: "\\times", + text: "\\texttimes", + commandspacer: true +}, + "Ø": { + text: "\\O", + commandspacer: true +}, + "Ù": { + text: "\\`U" +}, + "Ú": { + text: "\\'U" +}, + "Û": { + text: "\\^U" +}, + "Ü": { + text: "\\\"U" +}, + "Ý": { + text: "\\'Y" +}, + "Þ": { + text: "\\TH", + commandspacer: true +}, + "ß": { + text: "\\ss", + commandspacer: true +}, + "à": { + text: "\\`a" +}, + "á": { + text: "\\'a" +}, + "â": { + text: "\\^a" +}, + "ã": { + text: "\\~a" +}, + "ä": { + text: "\\\"a" +}, + "å": { + text: "\\aa", + commandspacer: true +}, + "æ": { + text: "\\ae", + commandspacer: true +}, + "ç": { + text: "\\c{c}" +}, + "è": { + text: "\\`e" +}, + "é": { + text: "\\'e" +}, + "ê": { + text: "\\^e" +}, + "ë": { + text: "\\\"e" +}, + "ì": { + text: "\\`i" +}, + "í": { + text: "\\'i" +}, + "î": { + text: "\\^i" +}, + "ï": { + text: "\\\"i" +}, + "ð": { + math: "\\eth", + mathpackages: [ + "amssymb", + "arevmath" + ], + text: "\\dh", + commandspacer: true +}, + "ñ": { + text: "\\~n" +}, + "ò": { + text: "\\`o" +}, + "ó": { + text: "\\'o" +}, + "ô": { + text: "\\^o" +}, + "õ": { + text: "\\~o" +}, + "ö": { + text: "\\\"o" +}, + "÷": { + math: "\\div" +}, + "ø": { + text: "\\o", + commandspacer: true +}, + "ù": { + text: "\\`u" +}, + "ú": { + text: "\\'u" +}, + "û": { + text: "\\^u" +}, + "ü": { + text: "\\\"u" +}, + "ý": { + text: "\\'y" +}, + "þ": { + text: "\\th", + commandspacer: true +}, + "ÿ": { + text: "\\\"y" +}, + "Ā": { + text: "\\=A" +}, + "ā": { + text: "\\=a" +}, + "Ă": { + text: "\\u{A}" +}, + "ă": { + text: "\\u{a}" +}, + "Ą": { + text: "\\k{A}" +}, + "ą": { + text: "\\k{a}" +}, + "Ć": { + text: "\\'C" +}, + "ć": { + text: "\\'c" +}, + "Ĉ": { + text: "\\^C" +}, + "ĉ": { + text: "\\^c" +}, + "Ċ": { + text: "\\.C" +}, + "ċ": { + text: "\\.c" +}, + "Č": { + text: "\\v{C}" +}, + "č": { + text: "\\v{c}" +}, + "Ď": { + text: "\\v{D}" +}, + "ď": { + text: "\\v{d}" +}, + "Đ": { + text: "\\DJ", + commandspacer: true +}, + "đ": { + text: "\\dj", + commandspacer: true +}, + "Ē": { + text: "\\=E" +}, + "ē": { + text: "\\=e" +}, + "Ĕ": { + text: "\\u{E}" +}, + "ĕ": { + text: "\\u{e}" +}, + "Ė": { + text: "\\.E" +}, + "ė": { + text: "\\.e" +}, + "Ę": { + text: "\\k{E}" +}, + "ę": { + text: "\\k{e}" +}, + "Ě": { + text: "\\v{E}" +}, + "ě": { + text: "\\v{e}" +}, + "Ĝ": { + text: "\\^G" +}, + "ĝ": { + text: "\\^g" +}, + "Ğ": { + text: "\\u{G}" +}, + "ğ": { + text: "\\u{g}" +}, + "Ġ": { + text: "\\.G" +}, + "ġ": { + text: "\\.g" +}, + "Ģ": { + text: "\\c{G}" +}, + "ģ": { + text: "\\c{g}" +}, + "Ĥ": { + text: "\\^H" +}, + "ĥ": { + text: "\\^h" +}, + "Ħ": { + text: "{\\fontencoding{LELA}\\selectfont\\char40}" +}, + "ħ": { + math: "\\Elzxh" +}, + "Ĩ": { + text: "\\~I" +}, + "ĩ": { + text: "\\~i" +}, + "Ī": { + text: "\\=I" +}, + "ī": { + text: "\\=i" +}, + "Ĭ": { + text: "\\u{I}" +}, + "ĭ": { + text: "{\\u \\i}" +}, + "Į": { + text: "\\k{I}" +}, + "į": { + text: "\\k{i}" +}, + "İ": { + text: "\\.I" +}, + "ı": { + math: "\\imath", + text: "\\i", + commandspacer: true +}, + "IJ": { + text: "IJ" +}, + "ij": { + text: "ij" +}, + "Ĵ": { + text: "\\^J" +}, + "ĵ": { + text: "\\^\\j", + commandspacer: true +}, + "Ķ": { + text: "\\c{K}" +}, + "ķ": { + text: "\\c{k}" +}, + "ĸ": { + text: "{\\fontencoding{LELA}\\selectfont\\char91}" +}, + "Ĺ": { + text: "\\'L" +}, + "ĺ": { + text: "\\'l" +}, + "Ļ": { + text: "\\c{L}" +}, + "ļ": { + text: "\\c{l}" +}, + "Ľ": { + text: "\\v{L}" +}, + "ľ": { + text: "\\v{l}" +}, + "Ŀ": { + text: "{\\fontencoding{LELA}\\selectfont\\char201}" +}, + "ŀ": { + text: "{\\fontencoding{LELA}\\selectfont\\char202}" +}, + "Ł": { + text: "\\L", + commandspacer: true +}, + "ł": { + text: "\\l", + commandspacer: true +}, + "Ń": { + text: "\\'N" +}, + "ń": { + text: "\\'n" +}, + "Ņ": { + text: "\\c{N}" +}, + "ņ": { + text: "\\c{n}" +}, + "Ň": { + text: "\\v{N}" +}, + "ň": { + text: "\\v{n}" +}, + "ʼn": { + text: "'n" +}, + "Ŋ": { + text: "\\NG", + commandspacer: true +}, + "ŋ": { + text: "\\ng", + commandspacer: true +}, + "Ō": { + text: "\\=O" +}, + "ō": { + text: "\\=o" +}, + "Ŏ": { + text: "\\u{O}" +}, + "ŏ": { + text: "\\u{o}" +}, + "Ő": { + text: "\\H{O}" +}, + "ő": { + text: "\\H{o}" +}, + "Œ": { + text: "\\OE", + commandspacer: true +}, + "œ": { + text: "\\oe", + commandspacer: true +}, + "Ŕ": { + text: "\\'R" +}, + "ŕ": { + text: "\\'r" +}, + "Ŗ": { + text: "\\c{R}" +}, + "ŗ": { + text: "\\c{r}" +}, + "Ř": { + text: "\\v{R}" +}, + "ř": { + text: "\\v{r}" +}, + "Ś": { + text: "\\'S" +}, + "ś": { + text: "\\'s" +}, + "Ŝ": { + text: "\\^S" +}, + "ŝ": { + text: "\\^s" +}, + "Ş": { + text: "\\c{S}" +}, + "ş": { + text: "\\c{s}" +}, + "Š": { + text: "\\v{S}" +}, + "š": { + text: "\\v{s}" +}, + "Ţ": { + text: "\\c{T}" +}, + "ţ": { + text: "\\c{t}" +}, + "Ť": { + text: "\\v{T}" +}, + "ť": { + text: "\\v{t}" +}, + "Ŧ": { + text: "{\\fontencoding{LELA}\\selectfont\\char47}" +}, + "ŧ": { + text: "{\\fontencoding{LELA}\\selectfont\\char63}" +}, + "Ũ": { + text: "\\~U" +}, + "ũ": { + text: "\\~u" +}, + "Ū": { + text: "\\=U" +}, + "ū": { + text: "\\=u" +}, + "Ŭ": { + text: "\\u{U}" +}, + "ŭ": { + text: "\\u{u}" +}, + "Ů": { + text: "\\r{U}" +}, + "ů": { + text: "\\r{u}" +}, + "Ű": { + text: "\\H{U}" +}, + "ű": { + text: "\\H{u}" +}, + "Ų": { + text: "\\k{U}" +}, + "ų": { + text: "\\k{u}" +}, + "Ŵ": { + text: "\\^W" +}, + "ŵ": { + text: "\\^w" +}, + "Ŷ": { + text: "\\^Y" +}, + "ŷ": { + text: "\\^y" +}, + "Ÿ": { + text: "\\\"Y" +}, + "Ź": { + text: "\\'Z" +}, + "ź": { + text: "\\'z" +}, + "Ż": { + text: "\\.Z" +}, + "ż": { + text: "\\.z" +}, + "Ž": { + text: "\\v{Z}" +}, + "ž": { + text: "\\v{z}" +}, + "ſ": { + text: "s" +}, + "ƒ": { + math: "f" +}, + "ƕ": { + text: "\\texthvlig", + commandspacer: true +}, + "ƞ": { + text: "\\textnrleg", + commandspacer: true +}, + "ƪ": { + text: "\\textesh", + commandspacer: true +}, + "Ƶ": { + math: "\\Zbar" +}, + "ƺ": { + text: "{\\fontencoding{LELA}\\selectfont\\char195}" +}, + "ǂ": { + text: "\\textdoublepipe", + commandspacer: true +}, + "Ǎ": { + text: "\\v{A}" +}, + "ǎ": { + text: "\\v{a}" +}, + "Ǐ": { + text: "\\v{I}" +}, + "ǐ": { + text: "\\v{i}" +}, + "Ǒ": { + text: "\\v{O}" +}, + "ǒ": { + text: "\\v{o}" +}, + "Ǔ": { + text: "\\v{U}" +}, + "ǔ": { + text: "\\v{u}" +}, + "Ǧ": { + text: "\\v{G}" +}, + "ǧ": { + text: "\\v{g}" +}, + "Ǩ": { + text: "\\v{K}" +}, + "ǩ": { + text: "\\v{k}" +}, + "Ǫ": { + text: "\\k{O}" +}, + "ǫ": { + text: "\\k{o}" +}, + "ǰ": { + text: "\\v{j}" +}, + "Ǵ": { + text: "\\'G" +}, + "ǵ": { + text: "\\'g" +}, + "Ȩ": { + text: "\\c{E}" +}, + "ȩ": { + text: "\\c{e}" +}, + "ȷ": { + math: "\\jmath" +}, + "ɐ": { + math: "\\Elztrna" +}, + "ɒ": { + math: "\\Elztrnsa" +}, + "ɔ": { + math: "\\Elzopeno" +}, + "ɖ": { + math: "\\Elzrtld" +}, + "ɘ": { + text: "{\\fontencoding{LEIP}\\selectfont\\char61}" +}, + "ə": { + math: "\\Elzschwa" +}, + "ɛ": { + math: "\\varepsilon" +}, + "ɡ": { + text: "g" +}, + "ɣ": { + math: "\\Elzpgamma" +}, + "ɤ": { + math: "\\Elzpbgam" +}, + "ɥ": { + math: "\\Elztrnh" +}, + "ɬ": { + math: "\\Elzbtdl" +}, + "ɭ": { + math: "\\Elzrtll" +}, + "ɯ": { + math: "\\Elztrnm" +}, + "ɰ": { + math: "\\Elztrnmlr" +}, + "ɱ": { + math: "\\Elzltlmr" +}, + "ɲ": { + text: "\\Elzltln", + commandspacer: true +}, + "ɳ": { + math: "\\Elzrtln" +}, + "ɷ": { + math: "\\Elzclomeg" +}, + "ɸ": { + text: "\\textphi", + commandspacer: true +}, + "ɹ": { + math: "\\Elztrnr" +}, + "ɺ": { + math: "\\Elztrnrl" +}, + "ɻ": { + math: "\\Elzrttrnr" +}, + "ɼ": { + math: "\\Elzrl" +}, + "ɽ": { + math: "\\Elzrtlr" +}, + "ɾ": { + math: "\\Elzfhr" +}, + "ɿ": { + text: "{\\fontencoding{LEIP}\\selectfont\\char202}" +}, + "ʂ": { + math: "\\Elzrtls" +}, + "ʃ": { + math: "\\Elzesh" +}, + "ʇ": { + math: "\\Elztrnt" +}, + "ʈ": { + math: "\\Elzrtlt" +}, + "ʊ": { + math: "\\Elzpupsil" +}, + "ʋ": { + math: "\\Elzpscrv" +}, + "ʌ": { + math: "\\Elzinvv" +}, + "ʍ": { + math: "\\Elzinvw" +}, + "ʎ": { + math: "\\Elztrny" +}, + "ʐ": { + math: "\\Elzrtlz" +}, + "ʒ": { + math: "\\Elzyogh" +}, + "ʔ": { + math: "\\Elzglst" +}, + "ʕ": { + math: "\\Elzreglst" +}, + "ʖ": { + math: "\\Elzinglst" +}, + "ʞ": { + text: "\\textturnk", + commandspacer: true +}, + "ʤ": { + math: "\\Elzdyogh" +}, + "ʧ": { + math: "\\Elztesh" +}, + "ʰ": { + math: "^{h}", + text: "\\textsuperscript{h}" +}, + "ʲ": { + math: "^{j}", + text: "\\textsuperscript{j}" +}, + "ʳ": { + math: "^{r}", + text: "\\textsuperscript{r}" +}, + "ʷ": { + math: "^{w}", + text: "\\textsuperscript{w}" +}, + "ʸ": { + math: "^{y}", + text: "\\textsuperscript{y}" +}, + "ʹ": { + text: "'" +}, + "ʻ": { + text: "'" +}, + "ʼ": { + text: "'" +}, + "ʽ": { + text: "'" +}, + "ʿ": { + text: "\\lasp", + commandspacer: true, + textpackages: [ + "mathscinet" + ] +}, + "ˆ": { + text: "\\textasciicircum", + commandspacer: true +}, + "ˇ": { + text: "\\textasciicaron", + commandspacer: true +}, + "ˈ": { + math: "\\Elzverts" +}, + "ˉ": { + text: "-" +}, + "ˌ": { + math: "\\Elzverti" +}, + "ː": { + math: "\\Elzlmrk" +}, + "ˑ": { + math: "\\Elzhlmrk" +}, + "˒": { + math: "\\Elzsbrhr" +}, + "˓": { + math: "\\Elzsblhr" +}, + "˔": { + math: "\\Elzrais" +}, + "˕": { + math: "\\Elzlow" +}, + "˘": { + text: "\\textasciibreve", + commandspacer: true +}, + "˙": { + text: "\\textperiodcentered", + commandspacer: true, + textpackages: [ + "textcomp" + ] +}, + "˚": { + text: "\\r{}" +}, + "˛": { + text: "\\k{}" +}, + "˜": { + text: "\\texttildelow", + commandspacer: true +}, + "˝": { + text: "\\H{}" +}, + "ˡ": { + math: "^{l}", + text: "\\textsuperscript{l}" +}, + "ˢ": { + math: "^{s}", + text: "\\textsuperscript{s}" +}, + "ˣ": { + math: "^{x}", + text: "\\textsuperscript{x}" +}, + "˥": { + text: "\\tone{55}" +}, + "˦": { + text: "\\tone{44}" +}, + "˧": { + text: "\\tone{33}" +}, + "˨": { + text: "\\tone{22}" +}, + "˩": { + text: "\\tone{11}" +}, + "̀": { + math: "\\grave", + combiningdiacritic: true, + text: "\\`" +}, + "̀̄": { + text: "\\textgravemacron", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̄̀": { + text: "\\textgravemacron", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̀̇": { + text: "\\textgravedot", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̇̀": { + text: "\\textgravedot", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "́": { + math: "\\acute", + combiningdiacritic: true, + text: "\\'" +}, + "́̄": { + text: "\\textacutemacron", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̄́": { + text: "\\textacutemacron", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "́̌": { + text: "\\textacutewedge", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̌́": { + text: "\\textacutewedge", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̂": { + math: "\\hat", + combiningdiacritic: true, + text: "\\^" +}, + "̂̇": { + text: "\\textcircumdot", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̇̂": { + text: "\\textcircumdot", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̃": { + math: "\\tilde", + combiningdiacritic: true, + text: "\\~" +}, + "̃̇": { + text: "\\texttildedot", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̇̃": { + text: "\\texttildedot", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̄": { + math: "\\bar", + combiningdiacritic: true, + text: "\\=" +}, + "̅": { + math: "\\overline", + combiningdiacritic: true +}, + "̆": { + math: "\\breve", + combiningdiacritic: true, + text: "\\u", + commandspacer: true +}, + "̆̄": { + text: "\\textbrevemacron", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̄̆": { + text: "\\textbrevemacron", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̇": { + math: "\\dot", + combiningdiacritic: true, + text: "\\." +}, + "̇́": { + text: "\\textdotacute", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "́̇": { + text: "\\textdotacute", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̇̆": { + text: "\\textdotbreve", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̆̇": { + text: "\\textdotbreve", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̈": { + math: "\\ddot", + combiningdiacritic: true, + text: "\\\"" +}, + "̉": { + math: "\\ovhook" +}, + "̊": { + math: "\\mathring", + combiningdiacritic: true, + text: "\\r", + commandspacer: true +}, + "̊̄": { + text: "\\textringmacron", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̄̊": { + text: "\\textringmacron", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̋": { + text: "\\H", + commandspacer: true, + combiningdiacritic: true +}, + "̌": { + math: "\\check", + text: "\\v", + commandspacer: true, + combiningdiacritic: true +}, + "̍": { + text: "\\textvbaraccent", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̎": { + text: "\\textdoublevbaraccent", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̏": { + text: "\\textdoublegrave", + commandspacer: true, + combiningdiacritic: true +}, + "̐": { + text: "\\textdotbreve", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̑": { + text: "{\\fontencoding{LECO}\\selectfont\\char177}" +}, + "̒": { + math: "\\oturnedcomma" +}, + "̕": { + math: "\\ocommatopright" +}, + "̖": { + text: "\\textsubgrave", + commandspacer: true, + combiningdiacritic: true +}, + "̘": { + text: "\\textadvancing", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̙": { + text: "\\textretracting", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̚": { + math: "\\droang", + text: "\\textcorner", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̜": { + text: "\\textsublhalfring", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̝": { + text: "\\textraising", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̞": { + text: "\\textlowering", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̟": { + text: "\\textsubplus", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̡": { + math: "\\Elzpalh" +}, + "̢": { + text: "\\Elzrh", + commandspacer: true +}, + "̣": { + text: "\\d", + commandspacer: true, + combiningdiacritic: true +}, + "̤": { + text: "\\textsubumlaut", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̥": { + text: "\\textsubring", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̧": { + text: "\\c", + commandspacer: true, + combiningdiacritic: true +}, + "̨": { + text: "\\k", + commandspacer: true, + combiningdiacritic: true +}, + "̩": { + text: "\\textsyllabic", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̪": { + math: "\\Elzsbbrg", + text: "\\textsubbridge", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̫": { + text: "{\\fontencoding{LECO}\\selectfont\\char203}" +}, + "̬": { + text: "\\textsubwedge", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̯": { + text: "\\textsubarch", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̰": { + math: "\\utilde", + text: "\\textsubtilde", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̱": { + math: "\\underbar", + combiningdiacritic: true, + text: "\\textsubbar", + commandspacer: true, + textpackages: [ + "tipa" + ] +}, + "̲": { + math: "\\underline" +}, + "̴": { + text: "\\textsuperimposetilde", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̵": { + text: "\\Elzxl", + commandspacer: true +}, + "̶": { + text: "\\Elzbar", + commandspacer: true +}, + "̷": { + text: "{\\fontencoding{LECO}\\selectfont\\char215}" +}, + "̸": { + math: "\\not" +}, + "̹": { + text: "\\textsubrhalfring", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̺": { + text: "\\textinvsubbridge", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̻": { + text: "\\textsubsquare", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̼": { + text: "\\textseagull", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̽": { + text: "\\textovercross", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "͡": { + text: "{\\fontencoding{LECO}\\selectfont\\char225}" +}, + "ʹ": { + text: "'" +}, + "͵": { + text: "," +}, + ";": { + text: ";" +}, + "Ά": { + text: "\\'A" +}, + "Έ": { + text: "\\'E" +}, + "Ή": { + text: "\\'H" +}, + "Ί": { + text: "{\\'{}I}" +}, + "Ό": { + text: "{\\'{}O}" +}, + "Ύ": { + math: "\\mathrm{'Y}" +}, + "Ώ": { + math: "\\mathrm{'\\Omega}" +}, + "ΐ": { + math: "\\acute{\\ddot{\\iota}}" +}, + "Α": { + math: "A" +}, + "Β": { + math: "B" +}, + "Γ": { + math: "\\Gamma" +}, + "Δ": { + math: "\\Delta" +}, + "Ε": { + math: "E" +}, + "Ζ": { + math: "Z" +}, + "Η": { + math: "H" +}, + "Θ": { + math: "\\Theta" +}, + "Ι": { + math: "I" +}, + "Κ": { + math: "K" +}, + "Λ": { + math: "\\Lambda" +}, + "Μ": { + math: "M" +}, + "Ν": { + math: "N" +}, + "Ξ": { + math: "\\Xi" +}, + "Ο": { + math: "O" +}, + "Π": { + math: "\\Pi" +}, + "Ρ": { + math: "P" +}, + "Σ": { + math: "\\Sigma" +}, + "Τ": { + math: "T" +}, + "Υ": { + math: "\\Upsilon" +}, + "Φ": { + math: "\\Phi" +}, + "Χ": { + math: "X" +}, + "Ψ": { + math: "\\Psi" +}, + "Ω": { + math: "\\Omega" +}, + "Ϊ": { + math: "\\mathrm{\\ddot{I}}" +}, + "Ϋ": { + math: "\\mathrm{\\ddot{Y}}" +}, + "ά": { + text: "{\\'$\\alpha$}" +}, + "έ": { + math: "\\acute{\\epsilon}" +}, + "ή": { + math: "\\acute{\\eta}" +}, + "ί": { + math: "\\acute{\\iota}" +}, + "ΰ": { + math: "\\acute{\\ddot{\\upsilon}}" +}, + "α": { + math: "\\alpha" +}, + "β": { + math: "\\beta" +}, + "γ": { + math: "\\gamma" +}, + "δ": { + math: "\\delta" +}, + "ε": { + math: "\\epsilon" +}, + "ζ": { + math: "\\zeta" +}, + "η": { + math: "\\eta" +}, + "θ": { + math: "\\theta", + text: "\\texttheta", + commandspacer: true +}, + "ι": { + math: "\\iota" +}, + "κ": { + math: "\\kappa" +}, + "λ": { + math: "\\lambda" +}, + "μ": { + math: "\\mu" +}, + "ν": { + math: "\\nu" +}, + "ξ": { + math: "\\xi" +}, + "ο": { + math: "o" +}, + "π": { + math: "\\pi" +}, + "ρ": { + math: "\\rho" +}, + "ς": { + math: "\\varsigma" +}, + "σ": { + math: "\\sigma" +}, + "τ": { + math: "\\tau" +}, + "υ": { + math: "\\upsilon" +}, + "φ": { + math: "\\varphi" +}, + "χ": { + math: "\\chi" +}, + "ψ": { + math: "\\psi" +}, + "ω": { + math: "\\omega" +}, + "ϊ": { + math: "\\ddot{\\iota}" +}, + "ϋ": { + math: "\\ddot{\\upsilon}" +}, + "ό": { + text: "\\'o" +}, + "ύ": { + math: "\\acute{\\upsilon}" +}, + "ώ": { + math: "\\acute{\\omega}" +}, + "ϐ": { + math: "\\varbeta", + text: "\\Pisymbol{ppi022}{87}" +}, + "ϑ": { + math: "\\vartheta", + text: "\\textvartheta", + commandspacer: true +}, + "ϒ": { + math: "\\Upsilon" +}, + "ϕ": { + math: "\\phi" +}, + "ϖ": { + math: "\\varpi" +}, + "Ϙ": { + math: "\\Qoppa" +}, + "ϙ": { + math: "\\qoppa" +}, + "Ϛ": { + math: "\\Stigma" +}, + "ϛ": { + math: "\\stigma" +}, + "Ϝ": { + math: "\\Digamma" +}, + "ϝ": { + math: "\\digamma" +}, + "Ϟ": { + math: "\\Koppa" +}, + "ϟ": { + math: "\\koppa" +}, + "Ϡ": { + math: "\\Sampi" +}, + "ϡ": { + math: "\\sampi" +}, + "ϰ": { + math: "\\varkappa" +}, + "ϱ": { + math: "\\varrho" +}, + "ϴ": { + math: "\\upvarTheta", + text: "\\textTheta", + commandspacer: true +}, + "ϵ": { + math: "\\epsilon" +}, + "϶": { + math: "\\backepsilon" +}, + "Ё": { + text: "\\cyrchar\\CYRYO", + commandspacer: true +}, + "Ђ": { + text: "\\cyrchar\\CYRDJE", + commandspacer: true +}, + "Ѓ": { + text: "\\cyrchar{\\'\\CYRG}" +}, + "Є": { + text: "\\cyrchar\\CYRIE", + commandspacer: true +}, + "Ѕ": { + text: "\\cyrchar\\CYRDZE", + commandspacer: true +}, + "І": { + text: "\\cyrchar\\CYRII", + commandspacer: true +}, + "Ї": { + text: "\\cyrchar\\CYRYI", + commandspacer: true +}, + "Ј": { + text: "\\cyrchar\\CYRJE", + commandspacer: true +}, + "Љ": { + text: "\\cyrchar\\CYRLJE", + commandspacer: true +}, + "Њ": { + text: "\\cyrchar\\CYRNJE", + commandspacer: true +}, + "Ћ": { + text: "\\cyrchar\\CYRTSHE", + commandspacer: true +}, + "Ќ": { + text: "\\cyrchar{\\'\\CYRK}" +}, + "Ў": { + text: "\\cyrchar\\CYRUSHRT", + commandspacer: true +}, + "Џ": { + text: "\\cyrchar\\CYRDZHE", + commandspacer: true +}, + "А": { + text: "\\cyrchar\\CYRA", + commandspacer: true +}, + "Б": { + text: "\\cyrchar\\CYRB", + commandspacer: true +}, + "В": { + text: "\\cyrchar\\CYRV", + commandspacer: true +}, + "Г": { + text: "\\cyrchar\\CYRG", + commandspacer: true +}, + "Д": { + text: "\\cyrchar\\CYRD", + commandspacer: true +}, + "Е": { + text: "\\cyrchar\\CYRE", + commandspacer: true +}, + "Ж": { + text: "\\cyrchar\\CYRZH", + commandspacer: true +}, + "З": { + text: "\\cyrchar\\CYRZ", + commandspacer: true +}, + "И": { + text: "\\cyrchar\\CYRI", + commandspacer: true +}, + "Й": { + text: "\\cyrchar\\CYRISHRT", + commandspacer: true +}, + "К": { + text: "\\cyrchar\\CYRK", + commandspacer: true +}, + "Л": { + text: "\\cyrchar\\CYRL", + commandspacer: true +}, + "М": { + text: "\\cyrchar\\CYRM", + commandspacer: true +}, + "Н": { + text: "\\cyrchar\\CYRN", + commandspacer: true +}, + "О": { + text: "\\cyrchar\\CYRO", + commandspacer: true +}, + "П": { + text: "\\cyrchar\\CYRP", + commandspacer: true +}, + "Р": { + text: "\\cyrchar\\CYRR", + commandspacer: true +}, + "С": { + text: "\\cyrchar\\CYRS", + commandspacer: true +}, + "Т": { + text: "\\cyrchar\\CYRT", + commandspacer: true +}, + "У": { + text: "\\cyrchar\\CYRU", + commandspacer: true +}, + "Ф": { + text: "\\cyrchar\\CYRF", + commandspacer: true +}, + "Х": { + text: "\\cyrchar\\CYRH", + commandspacer: true +}, + "Ц": { + text: "\\cyrchar\\CYRC", + commandspacer: true +}, + "Ч": { + text: "\\cyrchar\\CYRCH", + commandspacer: true +}, + "Ш": { + text: "\\cyrchar\\CYRSH", + commandspacer: true +}, + "Щ": { + text: "\\cyrchar\\CYRSHCH", + commandspacer: true +}, + "Ъ": { + text: "\\cyrchar\\CYRHRDSN", + commandspacer: true +}, + "Ы": { + text: "\\cyrchar\\CYRERY", + commandspacer: true +}, + "Ь": { + text: "\\cyrchar\\CYRSFTSN", + commandspacer: true +}, + "Э": { + text: "\\cyrchar\\CYREREV", + commandspacer: true +}, + "Ю": { + text: "\\cyrchar\\CYRYU", + commandspacer: true +}, + "Я": { + text: "\\cyrchar\\CYRYA", + commandspacer: true +}, + "а": { + text: "\\cyrchar\\cyra", + commandspacer: true +}, + "б": { + text: "\\cyrchar\\cyrb", + commandspacer: true +}, + "в": { + text: "\\cyrchar\\cyrv", + commandspacer: true +}, + "г": { + text: "\\cyrchar\\cyrg", + commandspacer: true +}, + "д": { + text: "\\cyrchar\\cyrd", + commandspacer: true +}, + "е": { + text: "\\cyrchar\\cyre", + commandspacer: true +}, + "ж": { + text: "\\cyrchar\\cyrzh", + commandspacer: true +}, + "з": { + text: "\\cyrchar\\cyrz", + commandspacer: true +}, + "и": { + text: "\\cyrchar\\cyri", + commandspacer: true +}, + "й": { + text: "\\cyrchar\\cyrishrt", + commandspacer: true +}, + "к": { + text: "\\cyrchar\\cyrk", + commandspacer: true +}, + "л": { + text: "\\cyrchar\\cyrl", + commandspacer: true +}, + "м": { + text: "\\cyrchar\\cyrm", + commandspacer: true +}, + "н": { + text: "\\cyrchar\\cyrn", + commandspacer: true +}, + "о": { + text: "\\cyrchar\\cyro", + commandspacer: true +}, + "п": { + text: "\\cyrchar\\cyrp", + commandspacer: true +}, + "р": { + text: "\\cyrchar\\cyrr", + commandspacer: true +}, + "с": { + text: "\\cyrchar\\cyrs", + commandspacer: true +}, + "т": { + text: "\\cyrchar\\cyrt", + commandspacer: true +}, + "у": { + text: "\\cyrchar\\cyru", + commandspacer: true +}, + "ф": { + text: "\\cyrchar\\cyrf", + commandspacer: true +}, + "х": { + text: "\\cyrchar\\cyrh", + commandspacer: true +}, + "ц": { + text: "\\cyrchar\\cyrc", + commandspacer: true +}, + "ч": { + text: "\\cyrchar\\cyrch", + commandspacer: true +}, + "ш": { + text: "\\cyrchar\\cyrsh", + commandspacer: true +}, + "щ": { + text: "\\cyrchar\\cyrshch", + commandspacer: true +}, + "ъ": { + text: "\\cyrchar\\cyrhrdsn", + commandspacer: true +}, + "ы": { + text: "\\cyrchar\\cyrery", + commandspacer: true +}, + "ь": { + text: "\\cyrchar\\cyrsftsn", + commandspacer: true +}, + "э": { + text: "\\cyrchar\\cyrerev", + commandspacer: true +}, + "ю": { + text: "\\cyrchar\\cyryu", + commandspacer: true +}, + "я": { + text: "\\cyrchar\\cyrya", + commandspacer: true +}, + "ё": { + text: "\\cyrchar\\cyryo", + commandspacer: true +}, + "ђ": { + text: "\\cyrchar\\cyrdje", + commandspacer: true +}, + "ѓ": { + text: "\\cyrchar{\\'\\cyrg}" +}, + "є": { + text: "\\cyrchar\\cyrie", + commandspacer: true +}, + "ѕ": { + text: "\\cyrchar\\cyrdze", + commandspacer: true +}, + "і": { + text: "\\cyrchar\\cyrii", + commandspacer: true +}, + "ї": { + text: "\\cyrchar\\cyryi", + commandspacer: true +}, + "ј": { + text: "\\cyrchar\\cyrje", + commandspacer: true +}, + "љ": { + text: "\\cyrchar\\cyrlje", + commandspacer: true +}, + "њ": { + text: "\\cyrchar\\cyrnje", + commandspacer: true +}, + "ћ": { + text: "\\cyrchar\\cyrtshe", + commandspacer: true +}, + "ќ": { + text: "\\cyrchar{\\'\\cyrk}" +}, + "ў": { + text: "\\cyrchar\\cyrushrt", + commandspacer: true +}, + "џ": { + text: "\\cyrchar\\cyrdzhe", + commandspacer: true +}, + "Ѡ": { + text: "\\cyrchar\\CYROMEGA", + commandspacer: true +}, + "ѡ": { + text: "\\cyrchar\\cyromega", + commandspacer: true +}, + "Ѣ": { + text: "\\cyrchar\\CYRYAT", + commandspacer: true +}, + "Ѥ": { + text: "\\cyrchar\\CYRIOTE", + commandspacer: true +}, + "ѥ": { + text: "\\cyrchar\\cyriote", + commandspacer: true +}, + "Ѧ": { + text: "\\cyrchar\\CYRLYUS", + commandspacer: true +}, + "ѧ": { + text: "\\cyrchar\\cyrlyus", + commandspacer: true +}, + "Ѩ": { + text: "\\cyrchar\\CYRIOTLYUS", + commandspacer: true +}, + "ѩ": { + text: "\\cyrchar\\cyriotlyus", + commandspacer: true +}, + "Ѫ": { + text: "\\cyrchar\\CYRBYUS", + commandspacer: true +}, + "Ѭ": { + text: "\\cyrchar\\CYRIOTBYUS", + commandspacer: true +}, + "ѭ": { + text: "\\cyrchar\\cyriotbyus", + commandspacer: true +}, + "Ѯ": { + text: "\\cyrchar\\CYRKSI", + commandspacer: true +}, + "ѯ": { + text: "\\cyrchar\\cyrksi", + commandspacer: true +}, + "Ѱ": { + text: "\\cyrchar\\CYRPSI", + commandspacer: true +}, + "ѱ": { + text: "\\cyrchar\\cyrpsi", + commandspacer: true +}, + "Ѳ": { + text: "\\cyrchar\\CYRFITA", + commandspacer: true +}, + "Ѵ": { + text: "\\cyrchar\\CYRIZH", + commandspacer: true +}, + "Ѹ": { + text: "\\cyrchar\\CYRUK", + commandspacer: true +}, + "ѹ": { + text: "\\cyrchar\\cyruk", + commandspacer: true +}, + "Ѻ": { + text: "\\cyrchar\\CYROMEGARND", + commandspacer: true +}, + "ѻ": { + text: "\\cyrchar\\cyromegarnd", + commandspacer: true +}, + "Ѽ": { + text: "\\cyrchar\\CYROMEGATITLO", + commandspacer: true +}, + "ѽ": { + text: "\\cyrchar\\cyromegatitlo", + commandspacer: true +}, + "Ѿ": { + text: "\\cyrchar\\CYROT", + commandspacer: true +}, + "ѿ": { + text: "\\cyrchar\\cyrot", + commandspacer: true +}, + "Ҁ": { + text: "\\cyrchar\\CYRKOPPA", + commandspacer: true +}, + "ҁ": { + text: "\\cyrchar\\cyrkoppa", + commandspacer: true +}, + "҂": { + text: "\\cyrchar\\cyrthousands", + commandspacer: true +}, + "҈": { + text: "\\cyrchar\\cyrhundredthousands", + commandspacer: true +}, + "҉": { + text: "\\cyrchar\\cyrmillions", + commandspacer: true +}, + "Ҍ": { + text: "\\cyrchar\\CYRSEMISFTSN", + commandspacer: true +}, + "ҍ": { + text: "\\cyrchar\\cyrsemisftsn", + commandspacer: true +}, + "Ҏ": { + text: "\\cyrchar\\CYRRTICK", + commandspacer: true +}, + "ҏ": { + text: "\\cyrchar\\cyrrtick", + commandspacer: true +}, + "Ґ": { + text: "\\cyrchar\\CYRGUP", + commandspacer: true +}, + "ґ": { + text: "\\cyrchar\\cyrgup", + commandspacer: true +}, + "Ғ": { + text: "\\cyrchar\\CYRGHCRS", + commandspacer: true +}, + "ғ": { + text: "\\cyrchar\\cyrghcrs", + commandspacer: true +}, + "Ҕ": { + text: "\\cyrchar\\CYRGHK", + commandspacer: true +}, + "ҕ": { + text: "\\cyrchar\\cyrghk", + commandspacer: true +}, + "Җ": { + text: "\\cyrchar\\CYRZHDSC", + commandspacer: true +}, + "җ": { + text: "\\cyrchar\\cyrzhdsc", + commandspacer: true +}, + "Ҙ": { + text: "\\cyrchar\\CYRZDSC", + commandspacer: true +}, + "ҙ": { + text: "\\cyrchar\\cyrzdsc", + commandspacer: true +}, + "Қ": { + text: "\\cyrchar\\CYRKDSC", + commandspacer: true +}, + "қ": { + text: "\\cyrchar\\cyrkdsc", + commandspacer: true +}, + "Ҝ": { + text: "\\cyrchar\\CYRKVCRS", + commandspacer: true +}, + "ҝ": { + text: "\\cyrchar\\cyrkvcrs", + commandspacer: true +}, + "Ҟ": { + text: "\\cyrchar\\CYRKHCRS", + commandspacer: true +}, + "ҟ": { + text: "\\cyrchar\\cyrkhcrs", + commandspacer: true +}, + "Ҡ": { + text: "\\cyrchar\\CYRKBEAK", + commandspacer: true +}, + "ҡ": { + text: "\\cyrchar\\cyrkbeak", + commandspacer: true +}, + "Ң": { + text: "\\cyrchar\\CYRNDSC", + commandspacer: true +}, + "ң": { + text: "\\cyrchar\\cyrndsc", + commandspacer: true +}, + "Ҥ": { + text: "\\cyrchar\\CYRNG", + commandspacer: true +}, + "ҥ": { + text: "\\cyrchar\\cyrng", + commandspacer: true +}, + "Ҧ": { + text: "\\cyrchar\\CYRPHK", + commandspacer: true +}, + "ҧ": { + text: "\\cyrchar\\cyrphk", + commandspacer: true +}, + "Ҩ": { + text: "\\cyrchar\\CYRABHHA", + commandspacer: true +}, + "ҩ": { + text: "\\cyrchar\\cyrabhha", + commandspacer: true +}, + "Ҫ": { + text: "\\cyrchar\\CYRSDSC", + commandspacer: true +}, + "ҫ": { + text: "\\cyrchar\\cyrsdsc", + commandspacer: true +}, + "Ҭ": { + text: "\\cyrchar\\CYRTDSC", + commandspacer: true +}, + "ҭ": { + text: "\\cyrchar\\cyrtdsc", + commandspacer: true +}, + "Ү": { + text: "\\cyrchar\\CYRY", + commandspacer: true +}, + "ү": { + text: "\\cyrchar\\cyry", + commandspacer: true +}, + "Ұ": { + text: "\\cyrchar\\CYRYHCRS", + commandspacer: true +}, + "ұ": { + text: "\\cyrchar\\cyryhcrs", + commandspacer: true +}, + "Ҳ": { + text: "\\cyrchar\\CYRHDSC", + commandspacer: true +}, + "ҳ": { + text: "\\cyrchar\\cyrhdsc", + commandspacer: true +}, + "Ҵ": { + text: "\\cyrchar\\CYRTETSE", + commandspacer: true +}, + "ҵ": { + text: "\\cyrchar\\cyrtetse", + commandspacer: true +}, + "Ҷ": { + text: "\\cyrchar\\CYRCHRDSC", + commandspacer: true +}, + "ҷ": { + text: "\\cyrchar\\cyrchrdsc", + commandspacer: true +}, + "Ҹ": { + text: "\\cyrchar\\CYRCHVCRS", + commandspacer: true +}, + "ҹ": { + text: "\\cyrchar\\cyrchvcrs", + commandspacer: true +}, + "Һ": { + text: "\\cyrchar\\CYRSHHA", + commandspacer: true +}, + "һ": { + text: "\\cyrchar\\cyrshha", + commandspacer: true +}, + "Ҽ": { + text: "\\cyrchar\\CYRABHCH", + commandspacer: true +}, + "ҽ": { + text: "\\cyrchar\\cyrabhch", + commandspacer: true +}, + "Ҿ": { + text: "\\cyrchar\\CYRABHCHDSC", + commandspacer: true +}, + "ҿ": { + text: "\\cyrchar\\cyrabhchdsc", + commandspacer: true +}, + "Ӏ": { + text: "\\cyrchar\\CYRpalochka", + commandspacer: true +}, + "Ӄ": { + text: "\\cyrchar\\CYRKHK", + commandspacer: true +}, + "ӄ": { + text: "\\cyrchar\\cyrkhk", + commandspacer: true +}, + "Ӈ": { + text: "\\cyrchar\\CYRNHK", + commandspacer: true +}, + "ӈ": { + text: "\\cyrchar\\cyrnhk", + commandspacer: true +}, + "Ӌ": { + text: "\\cyrchar\\CYRCHLDSC", + commandspacer: true +}, + "ӌ": { + text: "\\cyrchar\\cyrchldsc", + commandspacer: true +}, + "Ӕ": { + text: "\\cyrchar\\CYRAE", + commandspacer: true +}, + "ӕ": { + text: "\\cyrchar\\cyrae", + commandspacer: true +}, + "Ә": { + text: "\\cyrchar\\CYRSCHWA", + commandspacer: true +}, + "ә": { + text: "\\cyrchar\\cyrschwa", + commandspacer: true +}, + "Ӡ": { + text: "\\cyrchar\\CYRABHDZE", + commandspacer: true +}, + "ӡ": { + text: "\\cyrchar\\cyrabhdze", + commandspacer: true +}, + "Ө": { + text: "\\cyrchar\\CYROTLD", + commandspacer: true +}, + "ө": { + text: "\\cyrchar\\cyrotld", + commandspacer: true +}, + "ࡱ": { + math: "\\\\backslash" +}, + "ᵃ": { + math: "^{a}", + text: "\\textsuperscript{a}" +}, + "ᵇ": { + math: "^{b}", + text: "\\textsuperscript{b}" +}, + "ᵈ": { + math: "^{d}", + text: "\\textsuperscript{d}" +}, + "ᵉ": { + math: "^{e}", + text: "\\textsuperscript{e}" +}, + "ᵍ": { + math: "^{g}", + text: "\\textsuperscript{g}" +}, + "ᵏ": { + math: "^{k}", + text: "\\textsuperscript{k}" +}, + "ᵐ": { + math: "^{m}", + text: "\\textsuperscript{m}" +}, + "ᵒ": { + math: "^{o}", + text: "\\textsuperscript{o}" +}, + "ᵖ": { + math: "^{p}", + text: "\\textsuperscript{p}" +}, + "ᵗ": { + math: "^{t}", + text: "\\textsuperscript{t}" +}, + "ᵘ": { + math: "^{u}", + text: "\\textsuperscript{u}" +}, + "ᵛ": { + math: "^{v}", + text: "\\textsuperscript{v}" +}, + "ᶜ": { + math: "^{c}", + text: "\\textsuperscript{c}" +}, + "ᶠ": { + math: "^{f}", + text: "\\textsuperscript{f}" +}, + "ᶻ": { + math: "^{z}", + text: "\\textsuperscript{z}" +}, + "Ḃ": { + text: "\\.B" +}, + "ḃ": { + text: "\\.b" +}, + "Ḅ": { + text: "\\d{B}" +}, + "ḅ": { + text: "\\d{b}" +}, + "Ḇ": { + text: "\\b{B}" +}, + "ḇ": { + text: "\\b{b}" +}, + "Ḋ": { + text: "\\.D" +}, + "ḋ": { + text: "\\.d" +}, + "Ḍ": { + text: "\\d{D}" +}, + "ḍ": { + text: "\\d{d}" +}, + "Ḏ": { + text: "\\b{D}" +}, + "ḏ": { + text: "\\b{d}" +}, + "Ḑ": { + text: "\\c{D}" +}, + "ḑ": { + text: "\\c{d}" +}, + "Ḝ": { + text: "\\c{\\u{E}}" +}, + "ḝ": { + text: "\\c{\\u{e}}" +}, + "Ḟ": { + text: "\\.F" +}, + "ḟ": { + text: "\\.f" +}, + "Ḡ": { + text: "\\=G" +}, + "ḡ": { + text: "\\=g" +}, + "Ḣ": { + text: "\\.H" +}, + "ḣ": { + text: "\\.h" +}, + "Ḥ": { + text: "\\d{H}" +}, + "ḥ": { + text: "\\d{h}" +}, + "Ḧ": { + text: "\\\"H" +}, + "ḧ": { + text: "\\\"h" +}, + "Ḩ": { + text: "\\c{H}" +}, + "ḩ": { + text: "\\c{h}" +}, + "Ḱ": { + text: "\\'K" +}, + "ḱ": { + text: "\\'k" +}, + "Ḳ": { + text: "\\d{K}" +}, + "ḳ": { + text: "\\d{k}" +}, + "Ḵ": { + text: "\\b{K}" +}, + "ḵ": { + text: "\\b{k}" +}, + "Ḷ": { + text: "\\d{L}" +}, + "ḷ": { + text: "\\d{l}" +}, + "Ḻ": { + text: "\\b{L}" +}, + "ḻ": { + text: "\\b{l}" +}, + "Ḿ": { + text: "\\'M" +}, + "ḿ": { + text: "\\'m" +}, + "Ṁ": { + text: "\\.M" +}, + "ṁ": { + text: "\\.m" +}, + "Ṃ": { + text: "\\d{M}" +}, + "ṃ": { + text: "\\d{m}" +}, + "Ṅ": { + text: "\\.N" +}, + "ṅ": { + text: "\\.n" +}, + "Ṇ": { + text: "\\d{N}" +}, + "ṇ": { + text: "\\d{n}" +}, + "Ṉ": { + text: "\\b{N}" +}, + "ṉ": { + text: "\\b{n}" +}, + "Ṕ": { + text: "\\'P" +}, + "ṕ": { + text: "\\'p" +}, + "Ṗ": { + text: "\\.P" +}, + "ṗ": { + text: "\\.p" +}, + "Ṙ": { + text: "\\.R" +}, + "ṙ": { + text: "\\.r" +}, + "Ṛ": { + text: "\\d{R}" +}, + "ṛ": { + text: "\\d{r}" +}, + "Ṟ": { + text: "\\b{R}" +}, + "ṟ": { + text: "\\b{r}" +}, + "Ṡ": { + text: "\\.S" +}, + "ṡ": { + text: "\\.s" +}, + "Ṣ": { + text: "\\d{S}" +}, + "ṣ": { + text: "\\d{s}" +}, + "Ṫ": { + text: "\\.T" +}, + "ṫ": { + text: "\\.t" +}, + "Ṭ": { + text: "\\d{T}" +}, + "ṭ": { + text: "\\d{t}" +}, + "Ṯ": { + text: "\\b{T}" +}, + "ṯ": { + text: "\\b{t}" +}, + "Ṽ": { + text: "\\~V" +}, + "ṽ": { + text: "\\~v" +}, + "Ṿ": { + text: "\\d{V}" +}, + "ṿ": { + text: "\\d{v}" +}, + "Ẁ": { + text: "\\`W" +}, + "ẁ": { + text: "\\`w" +}, + "Ẃ": { + text: "\\'W" +}, + "ẃ": { + text: "\\'w" +}, + "Ẅ": { + text: "\\\"W" +}, + "ẅ": { + text: "\\\"w" +}, + "Ẇ": { + text: "\\.W" +}, + "ẇ": { + text: "\\.w" +}, + "Ẉ": { + text: "\\d{W}" +}, + "ẉ": { + text: "\\d{w}" +}, + "Ẋ": { + text: "\\.X" +}, + "ẋ": { + text: "\\.x" +}, + "Ẍ": { + text: "\\\"X" +}, + "ẍ": { + text: "\\\"x" +}, + "Ẏ": { + text: "\\.Y" +}, + "ẏ": { + text: "\\.y" +}, + "Ẑ": { + text: "\\^Z" +}, + "ẑ": { + text: "\\^z" +}, + "Ẓ": { + text: "\\d{Z}" +}, + "ẓ": { + text: "\\d{z}" +}, + "Ẕ": { + text: "\\b{Z}" +}, + "ẕ": { + text: "\\b{z}" +}, + "ẖ": { + text: "\\b{h}" +}, + "ẗ": { + text: "\\\"t" +}, + "ẘ": { + text: "\\r{w}" +}, + "ẙ": { + text: "\\r{y}" +}, + "Ạ": { + text: "\\d{A}" +}, + "ạ": { + text: "\\d{a}" +}, + "Ẹ": { + text: "\\d{E}" +}, + "ẹ": { + text: "\\d{e}" +}, + "Ẽ": { + text: "\\~E" +}, + "ẽ": { + text: "\\~e" +}, + "Ị": { + text: "\\d{I}" +}, + "ị": { + text: "\\d{i}" +}, + "Ọ": { + text: "\\d{O}" +}, + "ọ": { + text: "\\d{o}" +}, + "Ụ": { + text: "\\d{U}" +}, + "ụ": { + text: "\\d{u}" +}, + "Ỳ": { + text: "\\`Y" +}, + "ỳ": { + text: "\\`y" +}, + "Ỵ": { + text: "\\d{Y}" +}, + "ỵ": { + text: "\\d{y}" +}, + "Ỹ": { + text: "\\~Y" +}, + "ỹ": { + text: "\\~y" +}, + " ": { + text: " ", + space: true +}, + " ": { + math: "\\quad", + space: true +}, + " ": { + text: "\\hspace{0.6em}", + space: true +}, + " ": { + math: "\\quad", + space: true, + text: "\\hspace{1em}" +}, + " ": { + text: "\\;", + space: true +}, + " ": { + text: "\\hspace{0.25em}", + space: true +}, + " ": { + text: "\\hspace{0.166em}", + space: true +}, + " ": { + text: "\\hphantom{0}", + space: true +}, + " ": { + text: "\\hphantom{,}", + space: true +}, + " ": { + text: "\\,", + space: true +}, + " ": { + math: "\\mkern1mu", + space: true +}, + "​": { + text: "\\mbox", + commandspacer: true, + space: true +}, + "‌": { + text: "{\\aftergroup\\ignorespaces}" +}, + "‐": { + text: "-" +}, + "‑": { + text: "-" +}, + "‒": { + text: "-" +}, + "–": { + text: "\\textendash", + commandspacer: true +}, + "—": { + text: "\\textemdash", + commandspacer: true +}, + "―": { + math: "\\horizbar", + text: "\\rule{1em}{1pt}" +}, + "‖": { + math: "\\Vert" +}, + "‗": { + math: "\\twolowline" +}, + "‘": { + text: "`" +}, + "’": { + text: "'" +}, + "‚": { + text: "," +}, + "‛": { + math: "\\Elzreapos" +}, + "“": { + text: "``" +}, + "”": { + text: "''" +}, + "„": { + text: ",," +}, + "‟": { + text: "\\quotedblbase", + commandspacer: true +}, + "†": { + math: "\\dagger", + text: "\\textdagger", + commandspacer: true, + textpackages: [ + "textcomp" + ] +}, + "‡": { + math: "\\ddagger", + text: "\\textdaggerdbl", + commandspacer: true, + textpackages: [ + "textcomp" + ] +}, + "•": { + math: "\\bullet", + text: "\\textbullet", + commandspacer: true, + textpackages: [ + "textcomp" + ] +}, + "‣": { + text: ">" +}, + "․": { + text: "." +}, + "‥": { + math: "\\enleadertwodots", + text: ".." +}, + "…": { + math: "\\ldots", + text: "\\ldots", + commandspacer: true +}, + "‧": { + text: "-" +}, + " ": { + text: " ", + space: true +}, + "‰": { + text: "\\textperthousand", + commandspacer: true, + textpackages: [ + "textcomp" + ] +}, + "‱": { + text: "\\textpertenthousand", + commandspacer: true, + textpackages: [ + "textcomp" + ] +}, + "′": { + math: "{'}" +}, + "″": { + math: "{''}" +}, + "‴": { + math: "{'''}" +}, + "‵": { + math: "\\backprime" +}, + "‶": { + math: "\\backdprime" +}, + "‷": { + math: "\\backtrprime" +}, + "‸": { + math: "\\caretinsert" +}, + "‹": { + text: "\\guilsinglleft", + commandspacer: true +}, + "›": { + text: "\\guilsinglright", + commandspacer: true +}, + "‼": { + math: "\\Exclam" +}, + "‾": { + text: "-" +}, + "⁃": { + math: "\\hyphenbullet" +}, + "⁄": { + math: "\\fracslash" +}, + "⁇": { + math: "\\Question" +}, + "⁈": { + text: "?!" +}, + "⁉": { + text: "!?" +}, + "⁊": { + text: "7" +}, + "⁐": { + math: "\\closure" +}, + "⁗": { + math: "''''" +}, + " ": { + math: "\\:", + space: true, + text: "\\:" +}, + "⁠": { + text: "\\nolinebreak", + commandspacer: true +}, + "⁰": { + math: "^{0}" +}, + "ⁱ": { + math: "^{i}", + text: "\\textsuperscript{i}" +}, + "⁴": { + math: "^{4}" +}, + "⁵": { + math: "^{5}" +}, + "⁶": { + math: "^{6}" +}, + "⁷": { + math: "^{7}" +}, + "⁸": { + math: "^{8}" +}, + "⁹": { + math: "^{9}" +}, + "⁺": { + math: "^{+}" +}, + "⁻": { + math: "^{-}" +}, + "⁼": { + math: "^{=}" +}, + "⁽": { + math: "^{(}" +}, + "⁾": { + math: "^{)}" +}, + "ⁿ": { + math: "^{n}", + text: "\\textsuperscript{n}" +}, + "₀": { + math: "_{0}" +}, + "₁": { + math: "_{1}" +}, + "₂": { + math: "_{2}" +}, + "₃": { + math: "_{3}" +}, + "₄": { + math: "_{4}" +}, + "₅": { + math: "_{5}" +}, + "₆": { + math: "_{6}" +}, + "₇": { + math: "_{7}" +}, + "₈": { + math: "_{8}" +}, + "₉": { + math: "_{9}" +}, + "₊": { + math: "_{+}" +}, + "₋": { + math: "_{-}" +}, + "₌": { + math: "_{=}" +}, + "₍": { + math: "_{(}" +}, + "₎": { + math: "_{)}" +}, + "ₐ": { + math: "_{a}", + text: "\\textsubscript{a}" +}, + "ₑ": { + math: "_{e}", + text: "\\textsubscript{e}" +}, + "ₒ": { + math: "_{o}", + text: "\\textsubscript{o}" +}, + "ₓ": { + math: "_{x}", + text: "\\textsubscript{x}" +}, + "ₔ": { + text: "\\textsubscript{\\textschwa}", + textpackages: [ + "tipa" + ] +}, + "ₕ": { + math: "_{h}", + text: "\\textsubscript{h}" +}, + "ₖ": { + math: "_{k}", + text: "\\textsubscript{k}" +}, + "ₗ": { + math: "_{l}", + text: "\\textsubscript{l}" +}, + "ₘ": { + math: "_{m}", + text: "\\textsubscript{m}" +}, + "ₙ": { + math: "_{n}", + text: "\\textsubscript{n}" +}, + "ₚ": { + math: "_{p}", + text: "\\textsubscript{p}" +}, + "ₛ": { + math: "_{s}", + text: "\\textsubscript{s}" +}, + "ₜ": { + math: "_{t}", + text: "\\textsubscript{t}" +}, + "₧": { + text: "\\ensuremath{\\Elzpes}" +}, + "€": { + math: "\\euro", + text: "\\texteuro", + commandspacer: true +}, + "⃐": { + math: "\\lvec" +}, + "⃑": { + math: "\\rightharpoonup", + mathpackages: [ + "amsmath", + "amssymb" + ] +}, + "⃒": { + math: "\\vertoverlay" +}, + "⃖": { + math: "\\LVec" +}, + "⃗": { + math: "\\vec" +}, + "⃛": { + math: "\\dddot" +}, + "⃜": { + math: "\\ddddot" +}, + "⃝": { + math: "\\enclosecircle" +}, + "⃞": { + math: "\\enclosesquare" +}, + "⃟": { + math: "\\enclosediamond" +}, + "⃡": { + math: "\\overleftrightarrow" +}, + "⃤": { + math: "\\enclosetriangle" +}, + "⃧": { + math: "\\annuity" +}, + "⃨": { + math: "\\threeunderdot" +}, + "⃩": { + math: "\\widebridgeabove" +}, + "⃬": { + math: "\\underrightharpoondown" +}, + "⃭": { + math: "\\underleftharpoondown" +}, + "⃮": { + math: "\\underleftarrow" +}, + "⃯": { + math: "\\underrightarrow" +}, + "⃰": { + math: "\\asteraccent" +}, + "℀": { + text: "a/c" +}, + "℁": { + text: "a/s" +}, + "ℂ": { + math: "\\mathbb{C}" +}, + "℃": { + text: "\\textcelsius", + commandspacer: true +}, + "℅": { + text: "c/o" +}, + "℆": { + text: "c/u" +}, + "ℇ": { + math: "\\Euler" +}, + "℉": { + text: "F" +}, + "ℊ": { + math: "\\mathscr{g}" +}, + "ℋ": { + math: "\\mathscr{H}" +}, + "ℌ": { + math: "\\mathfrak{H}" +}, + "ℍ": { + math: "\\mathbb{H}" +}, + "ℎ": { + math: "\\Planckconst" +}, + "ℏ": { + math: "\\hslash" +}, + "ℐ": { + math: "\\mathscr{I}" +}, + "ℑ": { + math: "\\mathfrak{I}" +}, + "ℒ": { + math: "\\mathscr{L}" +}, + "ℓ": { + math: "\\mathscr{l}" +}, + "ℕ": { + math: "\\mathbb{N}" +}, + "№": { + text: "\\cyrchar\\textnumero", + commandspacer: true +}, + "℗": { + text: "\\textcircledP", + commandspacer: true +}, + "℘": { + math: "\\wp" +}, + "ℙ": { + math: "\\mathbb{P}" +}, + "ℚ": { + math: "\\mathbb{Q}" +}, + "ℛ": { + math: "\\mathscr{R}" +}, + "ℜ": { + math: "\\mathfrak{R}" +}, + "ℝ": { + math: "\\mathbb{R}" +}, + "℞": { + math: "\\Elzxrat" +}, + "℠": { + text: "\\textservicemark", + commandspacer: true +}, + "℡": { + text: "TEL" +}, + "™": { + text: "\\texttrademark", + commandspacer: true, + textpackages: [ + "textcomp" + ] +}, + "ℤ": { + math: "\\mathbb{Z}" +}, + "Ω": { + math: "\\Omega" +}, + "℧": { + math: "\\mho" +}, + "ℨ": { + math: "\\mathfrak{Z}" +}, + "℩": { + text: "\\textriota", + commandspacer: true +}, + "K": { + text: "K" +}, + "Å": { + math: "\\Angstroem", + text: "\\AA", + commandspacer: true +}, + "ℬ": { + math: "\\mathscr{B}" +}, + "ℭ": { + math: "\\mathfrak{C}" +}, + "℮": { + text: "\\textestimated", + commandspacer: true +}, + "ℯ": { + math: "\\mathscr{e}" +}, + "ℰ": { + math: "\\mathscr{E}" +}, + "ℱ": { + math: "\\mathscr{F}" +}, + "Ⅎ": { + math: "\\Finv" +}, + "ℳ": { + math: "\\mathscr{M}" +}, + "ℴ": { + math: "\\mathscr{o}" +}, + "ℵ": { + math: "\\aleph" +}, + "ℶ": { + math: "\\beth" +}, + "ℷ": { + math: "\\gimel" +}, + "ℸ": { + math: "\\daleth" +}, + "ℼ": { + math: "\\mathbb{\\pi}" +}, + "ℽ": { + math: "\\mathbb{\\gamma}" +}, + "ℾ": { + math: "\\mathbb{\\Gamma}" +}, + "ℿ": { + math: "\\mathbb{\\Pi}" +}, + "⅀": { + math: "\\mathbb{\\Sigma}" +}, + "⅁": { + math: "\\Game" +}, + "⅂": { + math: "\\sansLturned" +}, + "⅃": { + math: "\\sansLmirrored" +}, + "⅄": { + math: "\\Yup" +}, + "ⅅ": { + math: "\\CapitalDifferentialD" +}, + "ⅆ": { + math: "\\DifferentialD" +}, + "ⅇ": { + math: "\\ExponetialE" +}, + "ⅈ": { + math: "\\ComplexI" +}, + "ⅉ": { + math: "\\ComplexJ" +}, + "⅊": { + math: "\\PropertyLine" +}, + "⅋": { + math: "\\invamp" +}, + "⅐": { + math: "\\frac{1}{7}" +}, + "⅑": { + math: "\\frac{1}{9}" +}, + "⅒": { + math: "\\frac{1}{10}" +}, + "⅓": { + math: "\\frac{1}{3}" +}, + "⅔": { + math: "\\frac{2}{3}" +}, + "⅕": { + math: "\\frac{1}{5}" +}, + "⅖": { + math: "\\frac{2}{5}" +}, + "⅗": { + math: "\\frac{3}{5}" +}, + "⅘": { + math: "\\frac{4}{5}" +}, + "⅙": { + math: "\\frac{1}{6}" +}, + "⅚": { + math: "\\frac{5}{6}" +}, + "⅛": { + math: "\\frac{1}{8}" +}, + "⅜": { + math: "\\frac{3}{8}" +}, + "⅝": { + math: "\\frac{5}{8}" +}, + "⅞": { + math: "\\frac{7}{8}" +}, + "⅟": { + math: "\\frac{1}" +}, + "Ⅰ": { + text: "I" +}, + "Ⅱ": { + text: "II" +}, + "Ⅲ": { + text: "III" +}, + "Ⅳ": { + text: "IV" +}, + "Ⅴ": { + text: "V" +}, + "Ⅵ": { + text: "VI" +}, + "Ⅶ": { + text: "VII" +}, + "Ⅷ": { + text: "VIII" +}, + "Ⅸ": { + text: "IX" +}, + "Ⅹ": { + text: "X" +}, + "Ⅺ": { + text: "XI" +}, + "Ⅻ": { + text: "XII" +}, + "Ⅼ": { + text: "L" +}, + "Ⅽ": { + text: "C" +}, + "Ⅾ": { + text: "D" +}, + "Ⅿ": { + text: "M" +}, + "ⅰ": { + text: "i" +}, + "ⅱ": { + text: "ii" +}, + "ⅲ": { + text: "iii" +}, + "ⅳ": { + text: "iv" +}, + "ⅴ": { + text: "v" +}, + "ⅵ": { + text: "vi" +}, + "ⅶ": { + text: "vii" +}, + "ⅷ": { + text: "viii" +}, + "ⅸ": { + text: "ix" +}, + "ⅹ": { + text: "x" +}, + "ⅺ": { + text: "xi" +}, + "ⅻ": { + text: "xii" +}, + "ⅼ": { + text: "l" +}, + "ⅽ": { + text: "c" +}, + "ⅾ": { + text: "d" +}, + "ⅿ": { + text: "m" +}, + "↉": { + math: "\\frac{0}{3}" +}, + "←": { + math: "\\leftarrow" +}, + "↑": { + math: "\\uparrow" +}, + "→": { + math: "\\rightarrow", + text: "\\textrightarrow", + commandspacer: true, + textpackages: [ + "textcomp" + ] +}, + "↓": { + math: "\\downarrow" +}, + "↔": { + math: "\\leftrightarrow" +}, + "↕": { + math: "\\updownarrow" +}, + "↖": { + math: "\\nwarrow" +}, + "↗": { + math: "\\nearrow" +}, + "↘": { + math: "\\searrow" +}, + "↙": { + math: "\\swarrow" +}, + "↚": { + math: "\\nleftarrow" +}, + "↛": { + math: "\\nrightarrow" +}, + "↜": { + math: "\\arrowwaveleft" +}, + "↝": { + math: "\\arrowwaveright" +}, + "↞": { + math: "\\twoheadleftarrow" +}, + "↟": { + math: "\\twoheaduparrow" +}, + "↠": { + math: "\\twoheadrightarrow" +}, + "↡": { + math: "\\twoheaddownarrow" +}, + "↢": { + math: "\\leftarrowtail" +}, + "↣": { + math: "\\rightarrowtail" +}, + "↤": { + math: "\\mapsfrom" +}, + "↥": { + math: "\\MapsUp" +}, + "↦": { + math: "\\mapsto" +}, + "↧": { + math: "\\MapsDown" +}, + "↨": { + math: "\\updownarrowbar" +}, + "↩": { + math: "\\hookleftarrow" +}, + "↪": { + math: "\\hookrightarrow" +}, + "↫": { + math: "\\looparrowleft" +}, + "↬": { + math: "\\looparrowright" +}, + "↭": { + math: "\\leftrightsquigarrow" +}, + "↮": { + math: "\\nleftrightarrow" +}, + "↯": { + math: "\\lightning" +}, + "↰": { + math: "\\Lsh" +}, + "↱": { + math: "\\Rsh" +}, + "↲": { + math: "\\dlsh" +}, + "↳": { + text: "\\reflectbox{\\carriagereturn}", + textpackages: [ + "graphics", + "unicode-math" + ] +}, + "↴": { + math: "\\linefeed" +}, + "↵": { + math: "\\carriagereturn" +}, + "↶": { + math: "\\curvearrowleft" +}, + "↷": { + math: "\\curvearrowright" +}, + "↸": { + math: "\\barovernorthwestarrow" +}, + "↹": { + math: "\\barleftarrowrightarrowba" +}, + "↺": { + math: "\\circlearrowleft" +}, + "↻": { + math: "\\circlearrowright" +}, + "↼": { + math: "\\leftharpoonup" +}, + "↽": { + math: "\\leftharpoondown" +}, + "↾": { + math: "\\upharpoonright" +}, + "↿": { + math: "\\upharpoonleft" +}, + "⇀": { + math: "\\rightharpoonup", + mathpackages: [ + "amsmath", + "amssymb" + ] +}, + "⇁": { + math: "\\rightharpoondown" +}, + "⇂": { + math: "\\downharpoonright" +}, + "⇃": { + math: "\\downharpoonleft" +}, + "⇄": { + math: "\\rightleftarrows" +}, + "⇅": { + math: "\\dblarrowupdown" +}, + "⇆": { + math: "\\leftrightarrows" +}, + "⇇": { + math: "\\leftleftarrows" +}, + "⇈": { + math: "\\upuparrows" +}, + "⇉": { + math: "\\rightrightarrows" +}, + "⇊": { + math: "\\downdownarrows" +}, + "⇋": { + math: "\\leftrightharpoons" +}, + "⇌": { + math: "\\rightleftharpoons" +}, + "⇍": { + math: "\\nLeftarrow" +}, + "⇎": { + math: "\\nLeftrightarrow" +}, + "⇏": { + math: "\\nRightarrow" +}, + "⇐": { + math: "\\Leftarrow" +}, + "⇑": { + math: "\\Uparrow" +}, + "⇒": { + math: "\\Rightarrow" +}, + "⇓": { + math: "\\Downarrow" +}, + "⇔": { + math: "\\Leftrightarrow" +}, + "⇕": { + math: "\\Updownarrow" +}, + "⇖": { + math: "\\Nwarrow" +}, + "⇗": { + math: "\\Nearrow" +}, + "⇘": { + math: "\\Searrow" +}, + "⇙": { + math: "\\Swarrow" +}, + "⇚": { + math: "\\Lleftarrow" +}, + "⇛": { + math: "\\Rrightarrow" +}, + "⇜": { + math: "\\leftsquigarrow" +}, + "⇝": { + math: "\\rightsquigarrow" +}, + "⇞": { + math: "\\nHuparrow" +}, + "⇟": { + math: "\\nHdownarrow" +}, + "⇠": { + math: "\\dashleftarrow" +}, + "⇡": { + math: "\\updasharrow" +}, + "⇢": { + math: "\\dashrightarrow" +}, + "⇣": { + math: "\\downdasharrow" +}, + "⇤": { + math: "\\LeftArrowBar" +}, + "⇥": { + math: "\\RightArrowBar" +}, + "⇦": { + math: "\\leftwhitearrow" +}, + "⇧": { + math: "\\upwhitearrow" +}, + "⇨": { + math: "\\rightwhitearrow" +}, + "⇩": { + math: "\\downwhitearrow" +}, + "⇪": { + math: "\\whitearrowupfrombar" +}, + "⇴": { + math: "\\circleonrightarrow" +}, + "⇵": { + math: "\\DownArrowUpArrow" +}, + "⇶": { + math: "\\rightthreearrows" +}, + "⇷": { + math: "\\nvleftarrow" +}, + "⇸": { + math: "\\pfun" +}, + "⇹": { + math: "\\nvleftrightarrow" +}, + "⇺": { + math: "\\nVleftarrow" +}, + "⇻": { + math: "\\ffun" +}, + "⇼": { + math: "\\nVleftrightarrow" +}, + "⇽": { + math: "\\leftarrowtriangle" +}, + "⇾": { + math: "\\rightarrowtriangle" +}, + "⇿": { + math: "\\leftrightarrowtriangle" +}, + "∀": { + math: "\\forall" +}, + "∁": { + math: "\\complement" +}, + "∂": { + math: "\\partial" +}, + "∃": { + math: "\\exists" +}, + "∄": { + math: "\\nexists" +}, + "∅": { + math: "\\varnothing" +}, + "∆": { + math: "\\increment" +}, + "∇": { + math: "\\nabla" +}, + "∈": { + math: "\\in" +}, + "∉": { + math: "\\not\\in" +}, + "∊": { + math: "\\smallin" +}, + "∋": { + math: "\\ni" +}, + "∌": { + math: "\\not\\ni" +}, + "∍": { + math: "\\smallni" +}, + "∎": { + math: "\\QED" +}, + "∏": { + math: "\\prod" +}, + "∐": { + math: "\\coprod" +}, + "∑": { + math: "\\sum" +}, + "−": { + math: "-", + text: "-" +}, + "∓": { + math: "\\mp" +}, + "∔": { + math: "\\dotplus" +}, + "∕": { + text: "/" +}, + "∖": { + math: "\\setminus" +}, + "∗": { + math: "{_\\ast}" +}, + "∘": { + math: "\\circ" +}, + "∙": { + math: "\\bullet" +}, + "√": { + math: "\\surd" +}, + "∛": { + math: "\\sqrt[3]" +}, + "∜": { + math: "\\sqrt[4]" +}, + "∝": { + math: "\\propto" +}, + "∞": { + math: "\\infty" +}, + "∟": { + math: "\\rightangle" +}, + "∠": { + math: "\\angle" +}, + "∡": { + math: "\\measuredangle" +}, + "∢": { + math: "\\sphericalangle" +}, + "∣": { + math: "\\mid" +}, + "∤": { + math: "\\nmid" +}, + "∥": { + math: "\\parallel" +}, + "∦": { + math: "\\nparallel" +}, + "∧": { + math: "\\wedge" +}, + "∨": { + math: "\\vee" +}, + "∩": { + math: "\\cap" +}, + "∪": { + math: "\\cup" +}, + "∫": { + math: "\\int" +}, + "∬": { + math: "{\\int\\!\\int}" +}, + "∭": { + math: "{\\int\\!\\int\\!\\int}" +}, + "∮": { + math: "\\oint" +}, + "∯": { + math: "\\surfintegral" +}, + "∰": { + math: "\\volintegral" +}, + "∱": { + math: "\\clwintegral" +}, + "∲": { + math: "\\lcirclerightint", + mathpackages: [ + "MnSymbol" + ] +}, + "∳": { + math: "\\rcirclerightint", + mathpackages: [ + "MnSymbol" + ] +}, + "∴": { + math: "\\therefore" +}, + "∵": { + math: "\\because" +}, + "∶": { + math: ":" +}, + "∷": { + math: "\\Colon" +}, + "∸": { + math: "\\dotdiv", + mathpackages: [ + "mathabx" + ] +}, + "∹": { + math: "\\eqcolon" +}, + "∺": { + math: "\\mathbin{{:}\\!\\!{-}\\!\\!{:}}" +}, + "∻": { + math: "\\homothetic" +}, + "∼": { + math: "\\sim" +}, + "∽": { + math: "\\backsim" +}, + "∾": { + math: "\\lazysinv" +}, + "∿": { + math: "\\AC" +}, + "≀": { + math: "\\wr" +}, + "≁": { + math: "\\not\\sim" +}, + "≂": { + math: "\\texteqsim", + mathpackages: [ + "xecjk" + ] +}, + "≂̸": { + math: "\\NotEqualTilde" +}, + "≃": { + math: "\\simeq" +}, + "≄": { + math: "\\not\\simeq" +}, + "≅": { + math: "\\cong" +}, + "≆": { + math: "\\approxnotequal" +}, + "≇": { + math: "\\not\\cong" +}, + "≈": { + math: "\\approx" +}, + "≉": { + math: "\\not\\approx" +}, + "≊": { + math: "\\approxeq" +}, + "≋": { + math: "\\tildetrpl" +}, + "≋̸": { + math: "\\not\\apid" +}, + "≌": { + math: "\\allequal" +}, + "≍": { + math: "\\asymp" +}, + "≎": { + math: "\\Bumpeq" +}, + "≎̸": { + math: "\\NotHumpDownHump" +}, + "≏": { + math: "\\bumpeq" +}, + "≏̸": { + math: "\\NotHumpEqual" +}, + "≐": { + math: "\\doteq" +}, + "≐̸": { + math: "\\not\\doteq" +}, + "≑": { + math: "\\doteqdot" +}, + "≒": { + math: "\\fallingdotseq" +}, + "≓": { + math: "\\risingdotseq" +}, + "≔": { + math: "\\coloneq", + text: ":=" +}, + "≕": { + math: "=:" +}, + "≖": { + math: "\\eqcirc" +}, + "≗": { + math: "\\circeq" +}, + "≘": { + math: "\\arceq" +}, + "≙": { + math: "\\estimates" +}, + "≛": { + math: "\\starequal" +}, + "≜": { + math: "\\triangleq" +}, + "≝": { + math: "\\eqdef" +}, + "≞": { + math: "\\measeq" +}, + "≠": { + math: "\\neq" +}, + "≡": { + math: "\\equiv" +}, + "≢": { + math: "\\not\\equiv" +}, + "≣": { + math: "\\Equiv" +}, + "≤": { + math: "\\leq" +}, + "≥": { + math: "\\geq" +}, + "≦": { + math: "\\leqq" +}, + "≧": { + math: "\\geqq" +}, + "≨": { + math: "\\lneqq" +}, + "≨︀": { + math: "\\lvertneqq" +}, + "≩": { + math: "\\gneqq" +}, + "≩︀": { + math: "\\gvertneqq" +}, + "≪": { + math: "\\ll" +}, + "≪̸": { + math: "\\NotLessLess" +}, + "≫": { + math: "\\gg" +}, + "≫̸": { + math: "\\NotGreaterGreater" +}, + "≬": { + math: "\\between" +}, + "≭": { + math: "{\\not\\kern-0.3em\\times}" +}, + "≮": { + math: "\\not<" +}, + "≯": { + math: "\\not>" +}, + "≰": { + math: "\\not\\leq" +}, + "≱": { + math: "\\not\\geq" +}, + "≲": { + math: "\\lessequivlnt" +}, + "≳": { + math: "\\greaterequivlnt" +}, + "≶": { + math: "\\lessgtr" +}, + "≷": { + math: "\\gtrless" +}, + "≸": { + math: "\\notlessgreater" +}, + "≹": { + math: "\\notgreaterless" +}, + "≺": { + math: "\\prec" +}, + "≻": { + math: "\\succ" +}, + "≼": { + math: "\\preccurlyeq" +}, + "≽": { + math: "\\succcurlyeq" +}, + "≾": { + math: "\\precapprox" +}, + "≾̸": { + math: "\\NotPrecedesTilde" +}, + "≿": { + math: "\\succapprox" +}, + "≿̸": { + math: "\\NotSucceedsTilde" +}, + "⊀": { + math: "\\not\\prec" +}, + "⊁": { + math: "\\not\\succ" +}, + "⊂": { + math: "\\subset" +}, + "⊃": { + math: "\\supset" +}, + "⊄": { + math: "\\not\\subset" +}, + "⊅": { + math: "\\not\\supset" +}, + "⊆": { + math: "\\subseteq" +}, + "⊇": { + math: "\\supseteq" +}, + "⊈": { + math: "\\not\\subseteq" +}, + "⊉": { + math: "\\not\\supseteq" +}, + "⊊": { + math: "\\subsetneq" +}, + "⊊︀": { + math: "\\varsubsetneqq" +}, + "⊋": { + math: "\\supsetneq" +}, + "⊋︀": { + math: "\\varsupsetneq" +}, + "⊌": { + math: "\\cupleftarrow" +}, + "⊍": { + math: "\\cupdot" +}, + "⊎": { + math: "\\uplus" +}, + "⊏": { + math: "\\sqsubset" +}, + "⊏̸": { + math: "\\NotSquareSubset" +}, + "⊐": { + math: "\\sqsupset" +}, + "⊐̸": { + math: "\\NotSquareSuperset" +}, + "⊑": { + math: "\\sqsubseteq" +}, + "⊒": { + math: "\\sqsupseteq" +}, + "⊓": { + math: "\\sqcap" +}, + "⊔": { + math: "\\sqcup" +}, + "⊕": { + math: "\\oplus" +}, + "⊖": { + math: "\\ominus" +}, + "⊗": { + math: "\\otimes" +}, + "⊘": { + math: "\\oslash" +}, + "⊙": { + math: "\\odot" +}, + "⊚": { + math: "\\circledcirc" +}, + "⊛": { + math: "\\circledast" +}, + "⊜": { + math: "\\circledequal" +}, + "⊝": { + math: "\\circleddash" +}, + "⊞": { + math: "\\boxplus" +}, + "⊟": { + math: "\\boxminus" +}, + "⊠": { + math: "\\boxtimes" +}, + "⊡": { + math: "\\boxdot" +}, + "⊢": { + math: "\\vdash" +}, + "⊣": { + math: "\\dashv" +}, + "⊤": { + math: "\\top" +}, + "⊥": { + math: "\\perp" +}, + "⊦": { + math: "\\assert" +}, + "⊧": { + math: "\\truestate" +}, + "⊨": { + math: "\\forcesextra" +}, + "⊩": { + math: "\\Vdash" +}, + "⊪": { + math: "\\Vvdash" +}, + "⊫": { + math: "\\VDash" +}, + "⊬": { + math: "\\nvdash" +}, + "⊭": { + math: "\\nvDash" +}, + "⊮": { + math: "\\nVdash" +}, + "⊯": { + math: "\\nVDash" +}, + "⊰": { + math: "\\prurel" +}, + "⊱": { + math: "\\scurel" +}, + "⊲": { + math: "\\vartriangleleft" +}, + "⊳": { + math: "\\vartriangleright" +}, + "⊴": { + math: "\\trianglelefteq" +}, + "⊵": { + math: "\\trianglerighteq" +}, + "⊶": { + math: "\\original" +}, + "⊷": { + math: "\\image" +}, + "⊸": { + math: "\\multimap" +}, + "⊹": { + math: "\\hermitconjmatrix" +}, + "⊺": { + math: "\\intercal" +}, + "⊻": { + math: "\\veebar" +}, + "⊼": { + math: "\\barwedge" +}, + "⊽": { + math: "\\barvee" +}, + "⊾": { + math: "\\rightanglearc" +}, + "⊿": { + math: "\\varlrtriangle" +}, + "⋂": { + math: "\\bigcap" +}, + "⋃": { + math: "\\bigcup" +}, + "⋄": { + math: "\\diamond" +}, + "⋅": { + math: "\\cdot" +}, + "⋆": { + math: "\\star" +}, + "⋇": { + math: "\\divideontimes" +}, + "⋈": { + math: "\\bowtie" +}, + "⋉": { + math: "\\ltimes" +}, + "⋊": { + math: "\\rtimes" +}, + "⋋": { + math: "\\leftthreetimes" +}, + "⋌": { + math: "\\rightthreetimes" +}, + "⋍": { + math: "\\backsimeq" +}, + "⋎": { + math: "\\curlyvee" +}, + "⋏": { + math: "\\curlywedge" +}, + "⋐": { + math: "\\Subset" +}, + "⋑": { + math: "\\Supset" +}, + "⋒": { + math: "\\Cap" +}, + "⋓": { + math: "\\Cup" +}, + "⋔": { + math: "\\pitchfork" +}, + "⋕": { + math: "\\hash" +}, + "⋖": { + math: "\\lessdot" +}, + "⋗": { + math: "\\gtrdot" +}, + "⋘": { + math: "\\verymuchless" +}, + "⋙": { + math: "\\verymuchgreater" +}, + "⋚": { + math: "\\lesseqgtr" +}, + "⋛": { + math: "\\gtreqless" +}, + "⋜": { + math: "\\eqless" +}, + "⋝": { + math: "\\eqgtr" +}, + "⋞": { + math: "\\curlyeqprec" +}, + "⋟": { + math: "\\curlyeqsucc" +}, + "⋠": { + math: "\\npreceq" +}, + "⋡": { + math: "\\nsucceq" +}, + "⋢": { + math: "\\not\\sqsubseteq" +}, + "⋣": { + math: "\\not\\sqsupseteq" +}, + "⋤": { + math: "\\sqsubsetneq" +}, + "⋥": { + math: "\\Elzsqspne" +}, + "⋦": { + math: "\\lnsim" +}, + "⋧": { + math: "\\gnsim" +}, + "⋨": { + math: "\\precedesnotsimilar" +}, + "⋩": { + math: "\\succnsim" +}, + "⋪": { + math: "\\ntriangleleft" +}, + "⋫": { + math: "\\ntriangleright" +}, + "⋬": { + math: "\\ntrianglelefteq" +}, + "⋭": { + math: "\\ntrianglerighteq" +}, + "⋮": { + math: "\\vdots" +}, + "⋯": { + math: "\\cdots" +}, + "⋰": { + math: "\\upslopeellipsis" +}, + "⋱": { + math: "\\downslopeellipsis" +}, + "⋲": { + math: "\\disin" +}, + "⋳": { + math: "\\varisins" +}, + "⋴": { + math: "\\isins" +}, + "⋵": { + math: "\\isindot" +}, + "⋶": { + math: "\\barin" +}, + "⋷": { + math: "\\isinobar" +}, + "⋸": { + math: "\\isinvb" +}, + "⋹": { + math: "\\isinE" +}, + "⋺": { + math: "\\nisd" +}, + "⋻": { + math: "\\varnis" +}, + "⋼": { + math: "\\nis" +}, + "⋽": { + math: "\\varniobar" +}, + "⋾": { + math: "\\niobar" +}, + "⋿": { + math: "\\bagmember" +}, + "⌀": { + math: "\\diameter" +}, + "⌂": { + math: "\\house" +}, + "⌅": { + math: "\\varbarwedge", + text: "\\barwedge", + commandspacer: true +}, + "⌆": { + math: "\\perspcorrespond" +}, + "⌈": { + math: "\\lceil" +}, + "⌉": { + math: "\\rceil" +}, + "⌊": { + math: "\\lfloor" +}, + "⌋": { + math: "\\rfloor" +}, + "⌐": { + math: "\\invneg" +}, + "⌑": { + math: "\\wasylozenge" +}, + "⌒": { + math: "\\profline" +}, + "⌓": { + math: "\\profsurf" +}, + "⌕": { + math: "\\recorder" +}, + "⌖": { + math: "{\\mathchar\"2208}" +}, + "⌗": { + math: "\\viewdata" +}, + "⌙": { + math: "\\turnednot" +}, + "⌜": { + math: "\\ulcorner" +}, + "⌝": { + math: "\\urcorner" +}, + "⌞": { + math: "\\llcorner" +}, + "⌟": { + math: "\\lrcorner" +}, + "⌠": { + math: "\\inttop" +}, + "⌡": { + math: "\\intbottom" +}, + "⌢": { + math: "\\frown" +}, + "⌣": { + math: "\\smile" +}, + "〈": { + math: "\\langle" +}, + "〉": { + math: "\\rangle" +}, + "⌬": { + math: "\\varhexagonlrbonds" +}, + "⌲": { + math: "\\conictaper" +}, + "⌶": { + math: "\\topbot" +}, + "⌹": { + math: "\\APLinv" +}, + "⌿": { + math: "\\notslash" +}, + "⍀": { + math: "\\notbackslash" +}, + "⍇": { + math: "\\APLleftarrowbox" +}, + "⍈": { + math: "\\APLrightarrowbox" +}, + "⍉": { + math: "\\invdiameter" +}, + "⍐": { + math: "\\APLuparrowbox" +}, + "⍓": { + math: "\\APLboxupcaret" +}, + "⍗": { + math: "\\APLdownarrowbox" +}, + "⍝": { + math: "\\APLcomment" +}, + "⍞": { + math: "\\APLinput" +}, + "⍟": { + math: "\\APLlog" +}, + "⍰": { + math: "\\APLboxquestion" +}, + "⍼": { + math: "\\rangledownzigzagarrow" +}, + "⎔": { + math: "\\hexagon" +}, + "⎛": { + math: "\\lparenuend" +}, + "⎜": { + math: "\\lparenextender" +}, + "⎝": { + math: "\\lparenlend" +}, + "⎞": { + math: "\\rparenuend" +}, + "⎟": { + math: "\\rparenextender" +}, + "⎠": { + math: "\\rparenlend" +}, + "⎡": { + math: "\\lbrackuend" +}, + "⎢": { + math: "\\lbrackextender" +}, + "⎣": { + math: "\\Elzdlcorn" +}, + "⎤": { + math: "\\rbrackuend" +}, + "⎥": { + math: "\\rbrackextender" +}, + "⎦": { + math: "\\rbracklend" +}, + "⎧": { + math: "\\lbraceuend" +}, + "⎨": { + math: "\\lbracemid" +}, + "⎩": { + math: "\\lbracelend" +}, + "⎪": { + math: "\\vbraceextender" +}, + "⎫": { + math: "\\rbraceuend" +}, + "⎬": { + math: "\\rbracemid" +}, + "⎭": { + math: "\\rbracelend" +}, + "⎮": { + math: "\\intextender" +}, + "⎯": { + math: "\\harrowextender" +}, + "⎰": { + math: "\\lmoustache" +}, + "⎱": { + math: "\\rmoustache" +}, + "⎲": { + math: "\\sumtop" +}, + "⎳": { + math: "\\sumbottom" +}, + "⎴": { + math: "\\overbracket" +}, + "⎵": { + math: "\\underbracket" +}, + "⎶": { + math: "\\bbrktbrk" +}, + "⎷": { + math: "\\sqrtbottom" +}, + "⎸": { + math: "\\lvboxline" +}, + "⎹": { + math: "\\rvboxline" +}, + "⏎": { + math: "\\varcarriagereturn" +}, + "⏜": { + math: "\\overparen" +}, + "⏝": { + math: "\\underparen" +}, + "⏞": { + math: "\\overbrace" +}, + "⏟": { + math: "\\underbrace" +}, + "⏠": { + math: "\\obrbrak" +}, + "⏡": { + math: "\\ubrbrak" +}, + "⏢": { + math: "\\trapezium" +}, + "⏣": { + math: "\\benzenr" +}, + "⏤": { + math: "\\strns" +}, + "⏥": { + math: "\\fltns" +}, + "⏦": { + math: "\\accurrent" +}, + "⏧": { + math: "\\elinters" +}, + "␀": { + text: "NUL" +}, + "␁": { + text: "SOH" +}, + "␂": { + text: "STX" +}, + "␃": { + text: "ETX" +}, + "␄": { + text: "EOT" +}, + "␅": { + text: "ENQ" +}, + "␆": { + text: "ACK" +}, + "␇": { + text: "BEL" +}, + "␈": { + text: "BS" +}, + "␉": { + text: "HT" +}, + "␊": { + text: "LF" +}, + "␋": { + text: "VT" +}, + "␌": { + text: "FF" +}, + "␍": { + text: "CR" +}, + "␎": { + text: "SO" +}, + "␏": { + text: "SI" +}, + "␐": { + text: "DLE" +}, + "␑": { + text: "DC1" +}, + "␒": { + text: "DC2" +}, + "␓": { + text: "DC3" +}, + "␔": { + text: "DC4" +}, + "␕": { + text: "NAK" +}, + "␖": { + text: "SYN" +}, + "␗": { + text: "ETB" +}, + "␘": { + text: "CAN" +}, + "␙": { + text: "EM" +}, + "␚": { + text: "SUB" +}, + "␛": { + text: "ESC" +}, + "␜": { + text: "FS" +}, + "␝": { + text: "GS" +}, + "␞": { + text: "RS" +}, + "␟": { + text: "US" +}, + "␠": { + text: "SP" +}, + "␡": { + text: "DEL" +}, + "␣": { + text: "\\textvisiblespace", + commandspacer: true +}, + "␤": { + text: "NL" +}, + "␥": { + text: "///" +}, + "␦": { + text: "?" +}, + "①": { + text: "\\ding{172}" +}, + "②": { + text: "\\ding{173}" +}, + "③": { + text: "\\ding{174}" +}, + "④": { + text: "\\ding{175}" +}, + "⑤": { + text: "\\ding{176}" +}, + "⑥": { + text: "\\ding{177}" +}, + "⑦": { + text: "\\ding{178}" +}, + "⑧": { + text: "\\ding{179}" +}, + "⑨": { + text: "\\ding{180}" +}, + "⑩": { + text: "\\ding{181}" +}, + "⑪": { + text: "(11)" +}, + "⑫": { + text: "(12)" +}, + "⑬": { + text: "(13)" +}, + "⑭": { + text: "(14)" +}, + "⑮": { + text: "(15)" +}, + "⑯": { + text: "(16)" +}, + "⑰": { + text: "(17)" +}, + "⑱": { + text: "(18)" +}, + "⑲": { + text: "(19)" +}, + "⑳": { + text: "(20)" +}, + "⑴": { + text: "(1)" +}, + "⑵": { + text: "(2)" +}, + "⑶": { + text: "(3)" +}, + "⑷": { + text: "(4)" +}, + "⑸": { + text: "(5)" +}, + "⑹": { + text: "(6)" +}, + "⑺": { + text: "(7)" +}, + "⑻": { + text: "(8)" +}, + "⑼": { + text: "(9)" +}, + "⑽": { + text: "(10)" +}, + "⑾": { + text: "(11)" +}, + "⑿": { + text: "(12)" +}, + "⒀": { + text: "(13)" +}, + "⒁": { + text: "(14)" +}, + "⒂": { + text: "(15)" +}, + "⒃": { + text: "(16)" +}, + "⒄": { + text: "(17)" +}, + "⒅": { + text: "(18)" +}, + "⒆": { + text: "(19)" +}, + "⒇": { + text: "(20)" +}, + "⒈": { + text: "1." +}, + "⒉": { + text: "2." +}, + "⒊": { + text: "3." +}, + "⒋": { + text: "4." +}, + "⒌": { + text: "5." +}, + "⒍": { + text: "6." +}, + "⒎": { + text: "7." +}, + "⒏": { + text: "8." +}, + "⒐": { + text: "9." +}, + "⒑": { + text: "10." +}, + "⒒": { + text: "11." +}, + "⒓": { + text: "12." +}, + "⒔": { + text: "13." +}, + "⒕": { + text: "14." +}, + "⒖": { + text: "15." +}, + "⒗": { + text: "16." +}, + "⒘": { + text: "17." +}, + "⒙": { + text: "18." +}, + "⒚": { + text: "19." +}, + "⒛": { + text: "20." +}, + "⒜": { + text: "(a)" +}, + "⒝": { + text: "(b)" +}, + "⒞": { + text: "(c)" +}, + "⒟": { + text: "(d)" +}, + "⒠": { + text: "(e)" +}, + "⒡": { + text: "(f)" +}, + "⒢": { + text: "(g)" +}, + "⒣": { + text: "(h)" +}, + "⒤": { + text: "(i)" +}, + "⒥": { + text: "(j)" +}, + "⒦": { + text: "(k)" +}, + "⒧": { + text: "(l)" +}, + "⒨": { + text: "(m)" +}, + "⒩": { + text: "(n)" +}, + "⒪": { + text: "(o)" +}, + "⒫": { + text: "(p)" +}, + "⒬": { + text: "(q)" +}, + "⒭": { + text: "(r)" +}, + "⒮": { + text: "(s)" +}, + "⒯": { + text: "(t)" +}, + "⒰": { + text: "(u)" +}, + "⒱": { + text: "(v)" +}, + "⒲": { + text: "(w)" +}, + "⒳": { + text: "(x)" +}, + "⒴": { + text: "(y)" +}, + "⒵": { + text: "(z)" +}, + "Ⓐ": { + text: "(A)" +}, + "Ⓑ": { + text: "(B)" +}, + "Ⓒ": { + text: "(C)" +}, + "Ⓓ": { + text: "(D)" +}, + "Ⓔ": { + text: "(E)" +}, + "Ⓕ": { + text: "(F)" +}, + "Ⓖ": { + text: "(G)" +}, + "Ⓗ": { + text: "(H)" +}, + "Ⓘ": { + text: "(I)" +}, + "Ⓙ": { + text: "(J)" +}, + "Ⓚ": { + text: "(K)" +}, + "Ⓛ": { + text: "(L)" +}, + "Ⓜ": { + text: "(M)" +}, + "Ⓝ": { + text: "(N)" +}, + "Ⓞ": { + text: "(O)" +}, + "Ⓟ": { + text: "(P)" +}, + "Ⓠ": { + text: "(Q)" +}, + "Ⓡ": { + text: "(R)" +}, + "Ⓢ": { + math: "\\circledS" +}, + "Ⓣ": { + text: "(T)" +}, + "Ⓤ": { + text: "(U)" +}, + "Ⓥ": { + text: "(V)" +}, + "Ⓦ": { + text: "(W)" +}, + "Ⓧ": { + text: "(X)" +}, + "Ⓨ": { + text: "(Y)" +}, + "Ⓩ": { + text: "(Z)" +}, + "ⓐ": { + text: "(a)" +}, + "ⓑ": { + text: "(b)" +}, + "ⓒ": { + text: "(c)" +}, + "ⓓ": { + text: "(d)" +}, + "ⓔ": { + text: "(e)" +}, + "ⓕ": { + text: "(f)" +}, + "ⓖ": { + text: "(g)" +}, + "ⓗ": { + text: "(h)" +}, + "ⓘ": { + text: "(i)" +}, + "ⓙ": { + text: "(j)" +}, + "ⓚ": { + text: "(k)" +}, + "ⓛ": { + text: "(l)" +}, + "ⓜ": { + text: "(m)" +}, + "ⓝ": { + text: "(n)" +}, + "ⓞ": { + text: "(o)" +}, + "ⓟ": { + text: "(p)" +}, + "ⓠ": { + text: "(q)" +}, + "ⓡ": { + text: "(r)" +}, + "ⓢ": { + text: "(s)" +}, + "ⓣ": { + text: "(t)" +}, + "ⓤ": { + text: "(u)" +}, + "ⓥ": { + text: "(v)" +}, + "ⓦ": { + text: "(w)" +}, + "ⓧ": { + text: "(x)" +}, + "ⓨ": { + text: "(y)" +}, + "ⓩ": { + text: "(z)" +}, + "⓪": { + text: "(0)" +}, + "─": { + text: "-" +}, + "━": { + text: "=" +}, + "│": { + text: "|" +}, + "┃": { + text: "|" +}, + "┄": { + text: "-" +}, + "┅": { + text: "=" +}, + "┆": { + math: "\\Elzdshfnc" +}, + "┇": { + text: "|" +}, + "┈": { + text: "-" +}, + "┉": { + text: "=" +}, + "┊": { + text: "|" +}, + "┋": { + text: "|" +}, + "┌": { + text: "+" +}, + "┍": { + text: "+" +}, + "┎": { + text: "+" +}, + "┏": { + text: "+" +}, + "┐": { + text: "+" +}, + "┑": { + text: "+" +}, + "┒": { + text: "+" +}, + "┓": { + text: "+" +}, + "└": { + text: "+" +}, + "┕": { + text: "+" +}, + "┖": { + text: "+" +}, + "┗": { + text: "+" +}, + "┘": { + text: "+" +}, + "┙": { + math: "\\Elzsqfnw" +}, + "┚": { + text: "+" +}, + "┛": { + text: "+" +}, + "├": { + text: "+" +}, + "┝": { + text: "+" +}, + "┞": { + text: "+" +}, + "┟": { + text: "+" +}, + "┠": { + text: "+" +}, + "┡": { + text: "+" +}, + "┢": { + text: "+" +}, + "┣": { + text: "+" +}, + "┤": { + text: "+" +}, + "┥": { + text: "+" +}, + "┦": { + text: "+" +}, + "┧": { + text: "+" +}, + "┨": { + text: "+" +}, + "┩": { + text: "+" +}, + "┪": { + text: "+" +}, + "┫": { + text: "+" +}, + "┬": { + text: "+" +}, + "┭": { + text: "+" +}, + "┮": { + text: "+" +}, + "┯": { + text: "+" +}, + "┰": { + text: "+" +}, + "┱": { + text: "+" +}, + "┲": { + text: "+" +}, + "┳": { + text: "+" +}, + "┴": { + text: "+" +}, + "┵": { + text: "+" +}, + "┶": { + text: "+" +}, + "┷": { + text: "+" +}, + "┸": { + text: "+" +}, + "┹": { + text: "+" +}, + "┺": { + text: "+" +}, + "┻": { + text: "+" +}, + "┼": { + text: "+" +}, + "┽": { + text: "+" +}, + "┾": { + text: "+" +}, + "┿": { + text: "+" +}, + "╀": { + text: "+" +}, + "╁": { + text: "+" +}, + "╂": { + text: "+" +}, + "╃": { + text: "+" +}, + "╄": { + text: "+" +}, + "╅": { + text: "+" +}, + "╆": { + text: "+" +}, + "╇": { + text: "+" +}, + "╈": { + text: "+" +}, + "╉": { + text: "+" +}, + "╊": { + text: "+" +}, + "╋": { + text: "+" +}, + "╌": { + text: "-" +}, + "╍": { + text: "=" +}, + "╎": { + text: "|" +}, + "╏": { + text: "|" +}, + "═": { + text: "=" +}, + "║": { + text: "|" +}, + "╒": { + text: "+" +}, + "╓": { + text: "+" +}, + "╔": { + text: "+" +}, + "╕": { + text: "+" +}, + "╖": { + text: "+" +}, + "╗": { + text: "+" +}, + "╘": { + text: "+" +}, + "╙": { + text: "+" +}, + "╚": { + text: "+" +}, + "╛": { + text: "+" +}, + "╜": { + text: "+" +}, + "╝": { + text: "+" +}, + "╞": { + text: "+" +}, + "╟": { + text: "+" +}, + "╠": { + text: "+" +}, + "╡": { + text: "+" +}, + "╢": { + text: "+" +}, + "╣": { + text: "+" +}, + "╤": { + text: "+" +}, + "╥": { + text: "+" +}, + "╦": { + text: "+" +}, + "╧": { + text: "+" +}, + "╨": { + text: "+" +}, + "╩": { + text: "+" +}, + "╪": { + text: "+" +}, + "╫": { + text: "+" +}, + "╬": { + text: "+" +}, + "╭": { + text: "+" +}, + "╮": { + text: "+" +}, + "╯": { + text: "+" +}, + "╰": { + text: "+" +}, + "╱": { + math: "\\diagup" +}, + "╲": { + text: "\\" +}, + "╳": { + text: "X" +}, + "╼": { + text: "-" +}, + "╽": { + text: "|" +}, + "╾": { + text: "-" +}, + "╿": { + text: "|" +}, + "▀": { + math: "\\blockuphalf" +}, + "▄": { + math: "\\blocklowhalf" +}, + "█": { + math: "\\blockfull" +}, + "▌": { + math: "\\blocklefthalf" +}, + "▐": { + math: "\\blockrighthalf" +}, + "░": { + math: "\\blockqtrshaded" +}, + "▒": { + math: "\\blockhalfshaded" +}, + "▓": { + math: "\\blockthreeqtrshaded" +}, + "■": { + math: "\\mdlgblksquare", + text: "\\ding{110}" +}, + "□": { + math: "\\square" +}, + "▢": { + math: "\\squoval" +}, + "▣": { + math: "\\blackinwhitesquare" +}, + "▤": { + math: "\\squarehfill" +}, + "▥": { + math: "\\squarevfill" +}, + "▦": { + math: "\\squarehvfill" +}, + "▧": { + math: "\\squarenwsefill" +}, + "▨": { + math: "\\squareneswfill" +}, + "▩": { + math: "\\squarecrossfill" +}, + "▪": { + math: "\\blacksquare" +}, + "▫": { + math: "\\smwhtsquare" +}, + "▬": { + math: "\\hrectangleblack" +}, + "▭": { + math: "\\fbox{~~}" +}, + "▮": { + math: "\\vrectangleblack" +}, + "▯": { + math: "\\Elzvrecto" +}, + "▰": { + math: "\\parallelogramblack" +}, + "▲": { + math: "\\bigblacktriangleup", + text: "\\ding{115}" +}, + "△": { + math: "\\bigtriangleup" +}, + "▴": { + math: "\\blacktriangle" +}, + "▵": { + math: "\\vartriangle" +}, + "▶": { + math: "\\RHD" +}, + "▷": { + math: "\\rhd" +}, + "▸": { + math: "\\blacktriangleright" +}, + "▹": { + math: "\\triangleright" +}, + "►": { + math: "\\blackpointerright" +}, + "▻": { + math: "\\whitepointerright" +}, + "▼": { + math: "\\bigblacktriangledown", + text: "\\ding{116}" +}, + "▽": { + math: "\\bigtriangledown" +}, + "▾": { + math: "\\blacktriangledown" +}, + "▿": { + math: "\\triangledown" +}, + "◀": { + math: "\\LHD" +}, + "◁": { + math: "\\lhd" +}, + "◂": { + math: "\\blacktriangleleft" +}, + "◃": { + math: "\\triangleleft" +}, + "◄": { + math: "\\blackpointerleft" +}, + "◅": { + math: "\\whitepointerleft" +}, + "◆": { + math: "\\Diamondblack", + text: "\\ding{117}" +}, + "◇": { + math: "\\Diamond" +}, + "◈": { + math: "\\blackinwhitediamond" +}, + "◉": { + math: "\\fisheye" +}, + "◊": { + math: "\\lozenge" +}, + "○": { + math: "\\bigcirc" +}, + "◌": { + math: "\\dottedcircle" +}, + "◍": { + math: "\\circlevertfill" +}, + "◎": { + math: "\\bullseye" +}, + "●": { + math: "\\CIRCLE", + text: "\\ding{108}" +}, + "◐": { + math: "\\Elzcirfl" +}, + "◑": { + math: "\\Elzcirfr" +}, + "◒": { + math: "\\Elzcirfb" +}, + "◓": { + math: "\\circletophalfblack" +}, + "◔": { + math: "\\circleurquadblack" +}, + "◕": { + math: "\\blackcircleulquadwhite" +}, + "◖": { + math: "\\LEFTCIRCLE" +}, + "◗": { + math: "\\RIGHTCIRCLE", + text: "\\ding{119}" +}, + "◘": { + math: "\\Elzrvbull" +}, + "◙": { + math: "\\inversewhitecircle" +}, + "◚": { + math: "\\invwhiteupperhalfcircle" +}, + "◛": { + math: "\\invwhitelowerhalfcircle" +}, + "◜": { + math: "\\ularc" +}, + "◝": { + math: "\\urarc" +}, + "◞": { + math: "\\lrarc" +}, + "◟": { + math: "\\llarc" +}, + "◠": { + math: "\\topsemicircle" +}, + "◡": { + math: "\\botsemicircle" +}, + "◢": { + math: "\\lrblacktriangle" +}, + "◣": { + math: "\\llblacktriangle" +}, + "◤": { + math: "\\ulblacktriangle" +}, + "◥": { + math: "\\urblacktriangle" +}, + "◦": { + math: "\\smwhtcircle" +}, + "◧": { + math: "\\Elzsqfl" +}, + "◨": { + math: "\\Elzsqfr" +}, + "◩": { + math: "\\squareulblack" +}, + "◪": { + math: "\\Elzsqfse" +}, + "◫": { + math: "\\boxbar" +}, + "◬": { + math: "\\trianglecdot" +}, + "◭": { + math: "\\triangleleftblack" +}, + "◮": { + math: "\\trianglerightblack" +}, + "◯": { + math: "\\bigcirc" +}, + "◰": { + math: "\\squareulquad" +}, + "◱": { + math: "\\squarellquad" +}, + "◲": { + math: "\\squarelrquad" +}, + "◳": { + math: "\\squareurquad" +}, + "◴": { + math: "\\circleulquad" +}, + "◵": { + math: "\\circlellquad" +}, + "◶": { + math: "\\circlelrquad" +}, + "◷": { + math: "\\circleurquad" +}, + "◸": { + math: "\\ultriangle" +}, + "◹": { + math: "\\urtriangle" +}, + "◺": { + math: "\\lltriangle" +}, + "◻": { + math: "\\square" +}, + "◼": { + math: "\\blacksquare" +}, + "◽": { + math: "\\mdsmwhtsquare" +}, + "◾": { + math: "\\mdsmblksquare" +}, + "◿": { + math: "\\lrtriangle" +}, + "★": { + math: "\\bigstar", + text: "\\ding{72}" +}, + "☆": { + math: "\\bigwhitestar", + text: "\\ding{73}" +}, + "☉": { + math: "\\Sun" +}, + "☎": { + text: "\\ding{37}" +}, + "☐": { + math: "\\Square" +}, + "☑": { + math: "\\CheckedBox" +}, + "☒": { + math: "\\XBox" +}, + "☓": { + text: "X" +}, + "☕": { + math: "\\steaming" +}, + "☛": { + text: "\\ding{42}" +}, + "☞": { + math: "\\pointright", + text: "\\ding{43}" +}, + "☠": { + math: "\\skull" +}, + "☡": { + math: "\\danger" +}, + "☢": { + math: "\\radiation" +}, + "☣": { + math: "\\biohazard" +}, + "☯": { + math: "\\yinyang" +}, + "☹": { + math: "\\frownie" +}, + "☺": { + math: "\\smiley" +}, + "☻": { + math: "\\blacksmiley" +}, + "☼": { + math: "\\sun" +}, + "☽": { + text: "\\rightmoon", + commandspacer: true, + textpackages: [ + "wasysym" + ] +}, + "☾": { + text: "\\leftmoon", + commandspacer: true, + textpackages: [ + "wasysym" + ] +}, + "☿": { + math: "\\mercury", + text: "\\mercury", + commandspacer: true +}, + "♀": { + math: "\\female", + text: "\\venus", + commandspacer: true +}, + "♁": { + math: "\\earth" +}, + "♂": { + math: "\\male", + text: "\\male", + commandspacer: true +}, + "♃": { + math: "\\jupiter", + text: "\\jupiter", + commandspacer: true +}, + "♄": { + math: "\\saturn", + text: "\\saturn", + commandspacer: true +}, + "♅": { + math: "\\uranus", + text: "\\uranus", + commandspacer: true +}, + "♆": { + math: "\\neptune", + text: "\\neptune", + commandspacer: true +}, + "♇": { + math: "\\pluto", + text: "\\pluto", + commandspacer: true +}, + "♈": { + math: "\\aries", + text: "\\aries", + commandspacer: true +}, + "♉": { + math: "\\taurus", + text: "\\taurus", + commandspacer: true +}, + "♊": { + math: "\\gemini", + text: "\\gemini", + commandspacer: true +}, + "♋": { + math: "\\cancer", + text: "\\cancer", + commandspacer: true +}, + "♌": { + math: "\\leo", + text: "\\leo", + commandspacer: true +}, + "♍": { + math: "\\virgo", + text: "\\virgo", + commandspacer: true +}, + "♎": { + math: "\\libra", + text: "\\libra", + commandspacer: true +}, + "♏": { + math: "\\scorpio", + text: "\\scorpio", + commandspacer: true +}, + "♐": { + math: "\\sagittarius", + text: "\\sagittarius", + commandspacer: true +}, + "♑": { + math: "\\capricornus", + text: "\\capricornus", + commandspacer: true +}, + "♒": { + math: "\\aquarius", + text: "\\aquarius", + commandspacer: true +}, + "♓": { + math: "\\pisces", + text: "\\pisces", + commandspacer: true +}, + "♠": { + math: "\\spadesuit", + text: "\\ding{171}" +}, + "♡": { + math: "\\heartsuit" +}, + "♢": { + math: "\\diamond" +}, + "♣": { + math: "\\clubsuit", + text: "\\ding{168}" +}, + "♤": { + math: "\\varspadesuit" +}, + "♥": { + math: "\\varheartsuit", + text: "\\ding{170}" +}, + "♦": { + math: "\\vardiamondsuit", + text: "\\ding{169}" +}, + "♧": { + math: "\\varclubsuit" +}, + "♩": { + math: "\\quarternote", + text: "\\quarternote", + commandspacer: true +}, + "♪": { + math: "\\eighthnote", + text: "\\eighthnote", + commandspacer: true +}, + "♫": { + math: "\\twonotes" +}, + "♬": { + math: "\\sixteenthnote" +}, + "♭": { + math: "\\flat" +}, + "♮": { + math: "\\natural" +}, + "♯": { + math: "\\sharp" +}, + "♻": { + math: "\\recycle" +}, + "♾": { + math: "\\acidfree" +}, + "⚀": { + math: "\\dicei" +}, + "⚁": { + math: "\\diceii" +}, + "⚂": { + math: "\\diceiii" +}, + "⚃": { + math: "\\diceiv" +}, + "⚄": { + math: "\\dicev" +}, + "⚅": { + math: "\\dicevi" +}, + "⚆": { + math: "\\circledrightdot" +}, + "⚇": { + math: "\\circledtwodots" +}, + "⚈": { + math: "\\blackcircledrightdot" +}, + "⚉": { + math: "\\blackcircledtwodots" +}, + "⚓": { + math: "\\anchor" +}, + "⚔": { + math: "\\swords" +}, + "⚠": { + math: "\\warning" +}, + "⚥": { + math: "\\Hermaphrodite" +}, + "⚪": { + math: "\\medcirc" +}, + "⚫": { + math: "\\medbullet" +}, + "⚬": { + math: "\\mdsmwhtcircle" +}, + "⚲": { + math: "\\neuter" +}, + "✁": { + text: "\\ding{33}" +}, + "✂": { + text: "\\ding{34}" +}, + "✃": { + text: "\\ding{35}" +}, + "✄": { + text: "\\ding{36}" +}, + "✆": { + text: "\\ding{38}" +}, + "✇": { + text: "\\ding{39}" +}, + "✈": { + text: "\\ding{40}" +}, + "✉": { + text: "\\ding{41}" +}, + "✌": { + text: "\\ding{44}" +}, + "✍": { + text: "\\ding{45}" +}, + "✎": { + math: "\\pencil", + text: "\\ding{46}" +}, + "✏": { + text: "\\ding{47}" +}, + "✐": { + text: "\\ding{48}" +}, + "✑": { + text: "\\ding{49}" +}, + "✒": { + text: "\\ding{50}" +}, + "✓": { + math: "\\checkmark", + text: "\\ding{51}" +}, + "✔": { + text: "\\ding{52}" +}, + "✕": { + text: "\\ding{53}" +}, + "✖": { + text: "\\ding{54}" +}, + "✗": { + math: "\\ballotx", + text: "\\ding{55}" +}, + "✘": { + text: "\\ding{56}" +}, + "✙": { + text: "\\ding{57}" +}, + "✚": { + text: "\\ding{58}" +}, + "✛": { + text: "\\ding{59}" +}, + "✜": { + text: "\\ding{60}" +}, + "✝": { + text: "\\ding{61}" +}, + "✞": { + text: "\\ding{62}" +}, + "✟": { + text: "\\ding{63}" +}, + "✠": { + math: "\\maltese", + text: "\\ding{64}" +}, + "✡": { + text: "\\ding{65}" +}, + "✢": { + text: "\\ding{66}" +}, + "✣": { + text: "\\ding{67}" +}, + "✤": { + text: "\\ding{68}" +}, + "✥": { + text: "\\ding{69}" +}, + "✦": { + text: "\\ding{70}" +}, + "✧": { + text: "\\ding{71}" +}, + "✩": { + text: "\\ding{73}" +}, + "✪": { + math: "\\circledstar", + text: "\\ding{74}" +}, + "✫": { + text: "\\ding{75}" +}, + "✬": { + text: "\\ding{76}" +}, + "✭": { + text: "\\ding{77}" +}, + "✮": { + text: "\\ding{78}" +}, + "✯": { + text: "\\ding{79}" +}, + "✰": { + text: "\\ding{80}" +}, + "✱": { + text: "\\ding{81}" +}, + "✲": { + text: "\\ding{82}" +}, + "✳": { + text: "\\ding{83}" +}, + "✴": { + text: "\\ding{84}" +}, + "✵": { + text: "\\ding{85}" +}, + "✶": { + math: "\\varstar", + text: "\\ding{86}" +}, + "✷": { + text: "\\ding{87}" +}, + "✸": { + text: "\\ding{88}" +}, + "✹": { + text: "\\ding{89}" +}, + "✺": { + text: "\\ding{90}" +}, + "✻": { + text: "\\ding{91}" +}, + "✼": { + text: "\\ding{92}" +}, + "✽": { + math: "\\dingasterisk", + text: "\\ding{93}" +}, + "✾": { + text: "\\ding{94}" +}, + "✿": { + text: "\\ding{95}" +}, + "❀": { + text: "\\ding{96}" +}, + "❁": { + text: "\\ding{97}" +}, + "❂": { + text: "\\ding{98}" +}, + "❃": { + text: "\\ding{99}" +}, + "❄": { + text: "\\ding{100}" +}, + "❅": { + text: "\\ding{101}" +}, + "❆": { + text: "\\ding{102}" +}, + "❇": { + text: "\\ding{103}" +}, + "❈": { + text: "\\ding{104}" +}, + "❉": { + text: "\\ding{105}" +}, + "❊": { + text: "\\ding{106}" +}, + "❋": { + text: "\\ding{107}" +}, + "❍": { + text: "\\ding{109}" +}, + "❏": { + text: "\\ding{111}" +}, + "❐": { + text: "\\ding{112}" +}, + "❑": { + text: "\\ding{113}" +}, + "❒": { + text: "\\ding{114}" +}, + "❖": { + text: "\\ding{118}" +}, + "❘": { + text: "\\ding{120}" +}, + "❙": { + text: "\\ding{121}" +}, + "❚": { + text: "\\ding{122}" +}, + "❛": { + text: "\\ding{123}" +}, + "❜": { + text: "\\ding{124}" +}, + "❝": { + text: "\\ding{125}" +}, + "❞": { + text: "\\ding{126}" +}, + "❡": { + text: "\\ding{161}" +}, + "❢": { + text: "\\ding{162}" +}, + "❣": { + text: "\\ding{163}" +}, + "❤": { + text: "\\ding{164}" +}, + "❥": { + text: "\\ding{165}" +}, + "❦": { + text: "\\ding{166}" +}, + "❧": { + text: "\\ding{167}" +}, + "❲": { + math: "\\lbrbrak" +}, + "❳": { + math: "\\rbrbrak" +}, + "❶": { + text: "\\ding{182}" +}, + "❷": { + text: "\\ding{183}" +}, + "❸": { + text: "\\ding{184}" +}, + "❹": { + text: "\\ding{185}" +}, + "❺": { + text: "\\ding{186}" +}, + "❻": { + text: "\\ding{187}" +}, + "❼": { + text: "\\ding{188}" +}, + "❽": { + text: "\\ding{189}" +}, + "❾": { + text: "\\ding{190}" +}, + "❿": { + text: "\\ding{191}" +}, + "➀": { + text: "\\ding{192}" +}, + "➁": { + text: "\\ding{193}" +}, + "➂": { + text: "\\ding{194}" +}, + "➃": { + text: "\\ding{195}" +}, + "➄": { + text: "\\ding{196}" +}, + "➅": { + text: "\\ding{197}" +}, + "➆": { + text: "\\ding{198}" +}, + "➇": { + text: "\\ding{199}" +}, + "➈": { + text: "\\ding{200}" +}, + "➉": { + text: "\\ding{201}" +}, + "➊": { + text: "\\ding{202}" +}, + "➋": { + text: "\\ding{203}" +}, + "➌": { + text: "\\ding{204}" +}, + "➍": { + text: "\\ding{205}" +}, + "➎": { + text: "\\ding{206}" +}, + "➏": { + text: "\\ding{207}" +}, + "➐": { + text: "\\ding{208}" +}, + "➑": { + text: "\\ding{209}" +}, + "➒": { + text: "\\ding{210}" +}, + "➓": { + text: "\\ding{211}" +}, + "➔": { + text: "\\ding{212}" +}, + "➘": { + text: "\\ding{216}" +}, + "➙": { + text: "\\ding{217}" +}, + "➚": { + text: "\\ding{218}" +}, + "➛": { + math: "\\draftingarrow", + text: "\\ding{219}" +}, + "➜": { + text: "\\ding{220}" +}, + "➝": { + text: "\\ding{221}" +}, + "➞": { + text: "\\ding{222}" +}, + "➟": { + text: "\\ding{223}" +}, + "➠": { + text: "\\ding{224}" +}, + "➡": { + text: "\\ding{225}" +}, + "➢": { + math: "\\arrowbullet", + text: "\\ding{226}" +}, + "➣": { + text: "\\ding{227}" +}, + "➤": { + text: "\\ding{228}" +}, + "➥": { + text: "\\ding{229}" +}, + "➦": { + text: "\\ding{230}" +}, + "➧": { + text: "\\ding{231}" +}, + "➨": { + text: "\\ding{232}" +}, + "➩": { + text: "\\ding{233}" +}, + "➪": { + text: "\\ding{234}" +}, + "➫": { + text: "\\ding{235}" +}, + "➬": { + text: "\\ding{236}" +}, + "➭": { + text: "\\ding{237}" +}, + "➮": { + text: "\\ding{238}" +}, + "➯": { + text: "\\ding{239}" +}, + "➱": { + text: "\\ding{241}" +}, + "➲": { + text: "\\ding{242}" +}, + "➳": { + text: "\\ding{243}" +}, + "➴": { + text: "\\ding{244}" +}, + "➵": { + text: "\\ding{245}" +}, + "➶": { + text: "\\ding{246}" +}, + "➷": { + text: "\\ding{247}" +}, + "➸": { + text: "\\ding{248}" +}, + "➹": { + text: "\\ding{249}" +}, + "➺": { + text: "\\ding{250}" +}, + "➻": { + text: "\\ding{251}" +}, + "➼": { + text: "\\ding{252}" +}, + "➽": { + text: "\\ding{253}" +}, + "➾": { + text: "\\ding{254}" +}, + "⟀": { + math: "\\threedangle" +}, + "⟁": { + math: "\\whiteinwhitetriangle" +}, + "⟂": { + math: "\\perp" +}, + "⟃": { + math: "\\subsetcirc" +}, + "⟄": { + math: "\\supsetcirc" +}, + "⟅": { + math: "\\Lbag" +}, + "⟆": { + math: "\\Rbag" +}, + "⟇": { + math: "\\veedot" +}, + "⟈": { + math: "\\bsolhsub" +}, + "⟉": { + math: "\\suphsol" +}, + "⟌": { + math: "\\longdivision" +}, + "⟐": { + math: "\\Diamonddot" +}, + "⟑": { + math: "\\wedgedot" +}, + "⟒": { + math: "\\upin" +}, + "⟓": { + math: "\\pullback" +}, + "⟔": { + math: "\\pushout" +}, + "⟕": { + math: "\\leftouterjoin" +}, + "⟖": { + math: "\\rightouterjoin" +}, + "⟗": { + math: "\\fullouterjoin" +}, + "⟘": { + math: "\\bigbot" +}, + "⟙": { + math: "\\bigtop" +}, + "⟚": { + math: "\\DashVDash" +}, + "⟛": { + math: "\\dashVdash" +}, + "⟜": { + math: "\\multimapinv" +}, + "⟝": { + math: "\\vlongdash" +}, + "⟞": { + math: "\\longdashv" +}, + "⟟": { + math: "\\cirbot" +}, + "⟠": { + math: "\\lozengeminus" +}, + "⟡": { + math: "\\concavediamond" +}, + "⟢": { + math: "\\concavediamondtickleft" +}, + "⟣": { + math: "\\concavediamondtickright" +}, + "⟤": { + math: "\\whitesquaretickleft" +}, + "⟥": { + math: "\\whitesquaretickright" +}, + "⟦": { + math: "\\llbracket" +}, + "⟧": { + math: "\\rrbracket" +}, + "⟨": { + math: "\\langle" +}, + "⟩": { + math: "\\rangle" +}, + "⟪": { + math: "\\lang" +}, + "⟫": { + math: "\\rang" +}, + "⟬": { + math: "\\Lbrbrak" +}, + "⟭": { + math: "\\Rbrbrak" +}, + "⟮": { + math: "\\lgroup" +}, + "⟯": { + math: "\\rgroup" +}, + "⟰": { + math: "\\UUparrow" +}, + "⟱": { + math: "\\DDownarrow" +}, + "⟲": { + math: "\\acwgapcirclearrow" +}, + "⟳": { + math: "\\cwgapcirclearrow" +}, + "⟴": { + math: "\\rightarrowonoplus" +}, + "⟵": { + math: "\\longleftarrow" +}, + "⟶": { + math: "\\longrightarrow" +}, + "⟷": { + math: "\\longleftrightarrow" +}, + "⟸": { + math: "\\Longleftarrow" +}, + "⟹": { + math: "\\Longrightarrow" +}, + "⟺": { + math: "\\Longleftrightarrow" +}, + "⟻": { + math: "\\longmapsfrom" +}, + "⟼": { + math: "\\longmapsto" +}, + "⟽": { + math: "\\Longmapsfrom" +}, + "⟾": { + math: "\\Longmapsto" +}, + "⟿": { + math: "\\sim\\joinrel\\leadsto" +}, + "⤀": { + math: "\\psur" +}, + "⤁": { + math: "\\nVtwoheadrightarrow" +}, + "⤂": { + math: "\\nvLeftarrow" +}, + "⤃": { + math: "\\nvRightarrow" +}, + "⤄": { + math: "\\nvLeftrightarrow" +}, + "⤆": { + math: "\\Mapsfrom" +}, + "⤇": { + math: "\\Mapsto" +}, + "⤈": { + math: "\\downarrowbarred" +}, + "⤉": { + math: "\\uparrowbarred" +}, + "⤊": { + math: "\\Uuparrow" +}, + "⤋": { + math: "\\Ddownarrow" +}, + "⤌": { + math: "\\leftbkarrow" +}, + "⤍": { + math: "\\rightbkarrow" +}, + "⤎": { + math: "\\leftdbkarrow" +}, + "⤏": { + math: "\\dbkarow" +}, + "⤐": { + math: "\\drbkarow" +}, + "⤑": { + math: "\\rightdotarrow" +}, + "⤒": { + math: "\\UpArrowBar" +}, + "⤓": { + math: "\\DownArrowBar" +}, + "⤔": { + math: "\\pinj" +}, + "⤕": { + math: "\\finj" +}, + "⤖": { + math: "\\bij" +}, + "⤗": { + math: "\\nvtwoheadrightarrowtail" +}, + "⤘": { + math: "\\nVtwoheadrightarrowtail" +}, + "⤙": { + math: "\\lefttail" +}, + "⤚": { + math: "\\righttail" +}, + "⤛": { + math: "\\leftdbltail" +}, + "⤜": { + math: "\\rightdbltail" +}, + "⤝": { + math: "\\diamondleftarrow" +}, + "⤞": { + math: "\\rightarrowdiamond" +}, + "⤟": { + math: "\\diamondleftarrowbar" +}, + "⤠": { + math: "\\barrightarrowdiamond" +}, + "⤡": { + math: "\\nwsearrow" +}, + "⤢": { + math: "\\neswarrow" +}, + "⤫": { + math: "\\rdiagovfdiag" +}, + "⤬": { + math: "\\fdiagovrdiag" +}, + "⤭": { + math: "\\seovnearrow" +}, + "⤮": { + math: "\\neovsearrow" +}, + "⤯": { + math: "\\fdiagovnearrow" +}, + "⤰": { + math: "\\rdiagovsearrow" +}, + "⤱": { + math: "\\neovnwarrow" +}, + "⤲": { + math: "\\nwovnearrow" +}, + "⤴": { + math: "\\uprightcurvearrow" +}, + "⤵": { + math: "\\downrightcurvedarrow" +}, + "⤸": { + math: "\\cwrightarcarrow" +}, + "⤹": { + math: "\\acwleftarcarrow" +}, + "⤺": { + math: "\\acwoverarcarrow" +}, + "⤻": { + math: "\\acwunderarcarrow" +}, + "⤼": { + math: "\\curvearrowrightminus" +}, + "⤽": { + math: "\\curvearrowleftplus" +}, + "⤾": { + math: "\\cwundercurvearrow" +}, + "⤿": { + math: "\\ccwundercurvearrow" +}, + "⥀": { + math: "\\Elolarr" +}, + "⥁": { + math: "\\Elorarr" +}, + "⥂": { + math: "\\ElzRlarr" +}, + "⥃": { + math: "\\leftarrowshortrightarrow" +}, + "⥄": { + math: "\\ElzrLarr" +}, + "⥅": { + math: "\\rightarrowplus" +}, + "⥆": { + math: "\\leftarrowplus" +}, + "⥇": { + math: "\\Elzrarrx" +}, + "⥈": { + math: "\\leftrightarrowcircle" +}, + "⥉": { + math: "\\twoheaduparrowcircle" +}, + "⥊": { + math: "\\leftrightharpoon" +}, + "⥋": { + math: "\\rightleftharpoon" +}, + "⥌": { + math: "\\updownharpoonrightleft" +}, + "⥍": { + math: "\\updownharpoonleftright" +}, + "⥎": { + math: "\\LeftRightVector" +}, + "⥏": { + math: "\\RightUpDownVector" +}, + "⥐": { + math: "\\DownLeftRightVector" +}, + "⥑": { + math: "\\LeftUpDownVector" +}, + "⥒": { + math: "\\LeftVectorBar" +}, + "⥓": { + math: "\\RightVectorBar" +}, + "⥔": { + math: "\\RightUpVectorBar" +}, + "⥕": { + math: "\\RightDownVectorBar" +}, + "⥖": { + math: "\\DownLeftVectorBar" +}, + "⥗": { + math: "\\DownRightVectorBar" +}, + "⥘": { + math: "\\LeftUpVectorBar" +}, + "⥙": { + math: "\\LeftDownVectorBar" +}, + "⥚": { + math: "\\LeftTeeVector" +}, + "⥛": { + math: "\\RightTeeVector" +}, + "⥜": { + math: "\\RightUpTeeVector" +}, + "⥝": { + math: "\\RightDownTeeVector" +}, + "⥞": { + math: "\\DownLeftTeeVector" +}, + "⥟": { + math: "\\DownRightTeeVector" +}, + "⥠": { + math: "\\LeftUpTeeVector" +}, + "⥡": { + math: "\\LeftDownTeeVector" +}, + "⥢": { + math: "\\leftleftharpoons" +}, + "⥣": { + math: "\\upupharpoons" +}, + "⥤": { + math: "\\rightrightharpoons" +}, + "⥥": { + math: "\\downdownharpoons" +}, + "⥦": { + math: "\\leftrightharpoonsup" +}, + "⥧": { + math: "\\leftrightharpoonsdown" +}, + "⥨": { + math: "\\rightleftharpoonsup" +}, + "⥩": { + math: "\\rightleftharpoonsdown" +}, + "⥪": { + math: "\\leftbarharpoon" +}, + "⥫": { + math: "\\barleftharpoon" +}, + "⥬": { + math: "\\rightbarharpoon" +}, + "⥭": { + math: "\\barrightharpoon" +}, + "⥮": { + math: "\\UpEquilibrium" +}, + "⥯": { + math: "\\ReverseUpEquilibrium" +}, + "⥰": { + math: "\\RoundImplies" +}, + "⥱": { + math: "\\equalrightarrow" +}, + "⥲": { + math: "\\similarrightarrow" +}, + "⥳": { + math: "\\leftarrowsimilar" +}, + "⥴": { + math: "\\rightarrowsimilar" +}, + "⥵": { + math: "\\rightarrowapprox" +}, + "⥶": { + math: "\\ltlarr" +}, + "⥷": { + math: "\\leftarrowless" +}, + "⥸": { + math: "\\gtrarr" +}, + "⥹": { + math: "\\subrarr" +}, + "⥺": { + math: "\\leftarrowsubset" +}, + "⥻": { + math: "\\suplarr" +}, + "⥾": { + math: "\\upfishtail" +}, + "⥿": { + math: "\\downfishtail" +}, + "⦀": { + math: "\\Elztfnc" +}, + "⦁": { + math: "\\spot" +}, + "⦂": { + math: "\\typecolon" +}, + "⦃": { + math: "\\lBrace" +}, + "⦄": { + math: "\\rBrace" +}, + "⦆": { + math: "\\Elroang" +}, + "⦇": { + math: "\\limg" +}, + "⦈": { + math: "\\rimg" +}, + "⦉": { + math: "\\lblot" +}, + "⦊": { + math: "\\rblot" +}, + "⦋": { + math: "\\lbrackubar" +}, + "⦌": { + math: "\\rbrackubar" +}, + "⦍": { + math: "\\lbrackultick" +}, + "⦎": { + math: "\\rbracklrtick" +}, + "⦏": { + math: "\\lbracklltick" +}, + "⦐": { + math: "\\rbrackurtick" +}, + "⦑": { + math: "\\langledot" +}, + "⦒": { + math: "\\rangledot" +}, + "⦓": { + math: "<\\kern-0.58em(" +}, + "⦕": { + math: "\\Lparengtr" +}, + "⦖": { + math: "\\Rparenless" +}, + "⦗": { + math: "\\lblkbrbrak" +}, + "⦘": { + math: "\\rblkbrbrak" +}, + "⦙": { + math: "\\Elzddfnc" +}, + "⦚": { + math: "\\vzigzag" +}, + "⦛": { + math: "\\measuredangleleft" +}, + "⦜": { + math: "\\Angle" +}, + "⦝": { + math: "\\rightanglemdot" +}, + "⦞": { + math: "\\angles" +}, + "⦟": { + math: "\\angdnr" +}, + "⦠": { + math: "\\Elzlpargt" +}, + "⦡": { + math: "\\sphericalangleup" +}, + "⦢": { + math: "\\turnangle" +}, + "⦣": { + math: "\\revangle" +}, + "⦤": { + math: "\\angleubar" +}, + "⦥": { + math: "\\revangleubar" +}, + "⦦": { + math: "\\wideangledown" +}, + "⦧": { + math: "\\wideangleup" +}, + "⦨": { + math: "\\measanglerutone" +}, + "⦩": { + math: "\\measanglelutonw" +}, + "⦪": { + math: "\\measanglerdtose" +}, + "⦫": { + math: "\\measangleldtosw" +}, + "⦬": { + math: "\\measangleurtone" +}, + "⦭": { + math: "\\measangleultonw" +}, + "⦮": { + math: "\\measangledrtose" +}, + "⦯": { + math: "\\measangledltosw" +}, + "⦰": { + math: "\\revemptyset" +}, + "⦱": { + math: "\\emptysetobar" +}, + "⦲": { + math: "\\emptysetocirc" +}, + "⦳": { + math: "\\emptysetoarr" +}, + "⦴": { + math: "\\emptysetoarrl" +}, + "⦷": { + math: "\\circledparallel" +}, + "⦸": { + math: "\\circledbslash" +}, + "⦹": { + math: "\\operp" +}, + "⦺": { + math: "\\obot" +}, + "⦻": { + math: "\\olcross" +}, + "⦼": { + math: "\\odotslashdot" +}, + "⦽": { + math: "\\uparrowoncircle" +}, + "⦾": { + math: "\\circledwhitebullet" +}, + "⦿": { + math: "\\circledbullet" +}, + "⧀": { + math: "\\circledless" +}, + "⧁": { + math: "\\circledgtr" +}, + "⧂": { + math: "\\cirscir" +}, + "⧃": { + math: "\\cirE" +}, + "⧄": { + math: "\\boxslash" +}, + "⧅": { + math: "\\boxbslash" +}, + "⧆": { + math: "\\boxast" +}, + "⧇": { + math: "\\boxcircle" +}, + "⧈": { + math: "\\boxbox" +}, + "⧉": { + math: "\\boxonbox" +}, + "⧊": { + math: "\\ElzLap" +}, + "⧋": { + math: "\\Elzdefas" +}, + "⧌": { + math: "\\triangles" +}, + "⧍": { + math: "\\triangleserifs" +}, + "⧎": { + math: "\\rtriltri" +}, + "⧏": { + math: "\\LeftTriangleBar" +}, + "⧏̸": { + math: "\\NotLeftTriangleBar" +}, + "⧐": { + math: "\\RightTriangleBar" +}, + "⧐̸": { + math: "\\NotRightTriangleBar" +}, + "⧑": { + math: "\\lfbowtie" +}, + "⧒": { + math: "\\rfbowtie" +}, + "⧓": { + math: "\\fbowtie" +}, + "⧔": { + math: "\\lftimes" +}, + "⧕": { + math: "\\rftimes" +}, + "⧖": { + math: "\\hourglass" +}, + "⧗": { + math: "\\blackhourglass" +}, + "⧘": { + math: "\\lvzigzag" +}, + "⧙": { + math: "\\rvzigzag" +}, + "⧚": { + math: "\\Lvzigzag" +}, + "⧛": { + math: "\\Rvzigzag" +}, + "⧝": { + math: "\\tieinfty" +}, + "⧞": { + math: "\\nvinfty" +}, + "⧟": { + math: "\\multimapboth" +}, + "⧠": { + math: "\\laplac" +}, + "⧡": { + math: "\\lrtriangleeq" +}, + "⧢": { + math: "\\shuffle" +}, + "⧣": { + math: "\\eparsl" +}, + "⧤": { + math: "\\smeparsl" +}, + "⧥": { + math: "\\eqvparsl" +}, + "⧦": { + math: "\\gleichstark" +}, + "⧧": { + math: "\\thermod" +}, + "⧨": { + math: "\\downtriangleleftblack" +}, + "⧩": { + math: "\\downtrianglerightblack" +}, + "⧪": { + math: "\\blackdiamonddownarrow" +}, + "⧫": { + math: "\\blacklozenge" +}, + "⧬": { + math: "\\circledownarrow" +}, + "⧭": { + math: "\\blackcircledownarrow" +}, + "⧮": { + math: "\\errbarsquare" +}, + "⧯": { + math: "\\errbarblacksquare" +}, + "⧰": { + math: "\\errbardiamond" +}, + "⧱": { + math: "\\errbarblackdiamond" +}, + "⧲": { + math: "\\errbarcircle" +}, + "⧳": { + math: "\\errbarblackcircle" +}, + "⧴": { + math: "\\RuleDelayed" +}, + "⧵": { + math: "\\setminus" +}, + "⧶": { + math: "\\dsol" +}, + "⧷": { + math: "\\rsolbar" +}, + "⧸": { + math: "\\xsol" +}, + "⧹": { + math: "\\zhide" +}, + "⧺": { + math: "\\doubleplus" +}, + "⧻": { + math: "\\tripleplus" +}, + "⧼": { + math: "\\lcurvyangle" +}, + "⧽": { + math: "\\rcurvyangle" +}, + "⧾": { + math: "\\tplus" +}, + "⧿": { + math: "\\tminus" +}, + "⨀": { + math: "\\bigodot" +}, + "⨁": { + math: "\\bigoplus" +}, + "⨂": { + math: "\\bigotimes" +}, + "⨃": { + math: "\\bigcupdot" +}, + "⨄": { + math: "\\Elxuplus" +}, + "⨅": { + math: "\\ElzThr" +}, + "⨆": { + math: "\\Elxsqcup" +}, + "⨇": { + math: "\\ElzInf" +}, + "⨈": { + math: "\\ElzSup" +}, + "⨉": { + math: "\\varprod" +}, + "⨊": { + math: "\\modtwosum" +}, + "⨋": { + math: "\\sumint" +}, + "⨌": { + math: "\\iiiint" +}, + "⨍": { + math: "\\ElzCint" +}, + "⨎": { + math: "\\intBar" +}, + "⨏": { + math: "\\clockoint" +}, + "⨑": { + math: "\\awint" +}, + "⨒": { + math: "\\rppolint" +}, + "⨓": { + math: "\\scpolint" +}, + "⨔": { + math: "\\npolint" +}, + "⨕": { + math: "\\pointint" +}, + "⨖": { + math: "\\sqrint" +}, + "⨗": { + math: "\\intlarhk" +}, + "⨘": { + math: "\\intx" +}, + "⨙": { + math: "\\intcap" +}, + "⨚": { + math: "\\intcup" +}, + "⨛": { + math: "\\upint" +}, + "⨜": { + math: "\\lowint" +}, + "⨝": { + math: "\\Join" +}, + "⨞": { + math: "\\bigtriangleleft" +}, + "⨟": { + math: "\\zcmp" +}, + "⨠": { + math: "\\zpipe" +}, + "⨡": { + math: "\\zproject" +}, + "⨢": { + math: "\\ringplus" +}, + "⨣": { + math: "\\plushat" +}, + "⨤": { + math: "\\simplus" +}, + "⨦": { + math: "\\plussim" +}, + "⨧": { + math: "\\plussubtwo" +}, + "⨨": { + math: "\\plustrif" +}, + "⨩": { + math: "\\commaminus" +}, + "⨫": { + math: "\\minusfdots" +}, + "⨬": { + math: "\\minusrdots" +}, + "⨯": { + math: "\\ElzTimes" +}, + "⨰": { + math: "\\dottimes" +}, + "⨱": { + math: "\\timesbar" +}, + "⨲": { + math: "\\btimes" +}, + "⨳": { + math: "\\smashtimes" +}, + "⨶": { + math: "\\otimeshat" +}, + "⨷": { + math: "\\Otimes" +}, + "⨸": { + math: "\\odiv" +}, + "⨹": { + math: "\\triangleplus" +}, + "⨺": { + math: "\\triangleminus" +}, + "⨻": { + math: "\\triangletimes" +}, + "⨽": { + math: "\\intprodr" +}, + "⨾": { + math: "\\fcmp" +}, + "⨿": { + math: "\\amalg" +}, + "⩀": { + math: "\\capdot" +}, + "⩁": { + math: "\\uminus" +}, + "⩂": { + math: "\\barcup" +}, + "⩃": { + math: "\\barcap" +}, + "⩄": { + math: "\\capwedge" +}, + "⩅": { + math: "\\cupvee" +}, + "⩆": { + math: "\\cupovercap" +}, + "⩇": { + math: "\\capovercup" +}, + "⩈": { + math: "\\cupbarcap" +}, + "⩉": { + math: "\\capbarcup" +}, + "⩊": { + math: "\\twocups" +}, + "⩋": { + math: "\\twocaps" +}, + "⩌": { + math: "\\closedvarcup" +}, + "⩍": { + math: "\\closedvarcap" +}, + "⩎": { + math: "\\Sqcap" +}, + "⩏": { + math: "\\Sqcup" +}, + "⩐": { + math: "\\closedvarcupsmashprod" +}, + "⩑": { + math: "\\wedgeodot" +}, + "⩒": { + math: "\\veeodot" +}, + "⩓": { + math: "\\ElzAnd" +}, + "⩔": { + math: "\\ElzOr" +}, + "⩖": { + math: "\\ElOr" +}, + "⩗": { + math: "\\bigslopedvee" +}, + "⩘": { + math: "\\bigslopedwedge" +}, + "⩙": { + math: "\\veeonwedge" +}, + "⩚": { + math: "\\wedgemidvert" +}, + "⩛": { + math: "\\veemidvert" +}, + "⩜": { + math: "\\midbarwedge" +}, + "⩝": { + math: "\\midbarvee" +}, + "⩞": { + math: "\\perspcorrespond" +}, + "⩟": { + math: "\\Elzminhat" +}, + "⩠": { + math: "\\wedgedoublebar" +}, + "⩡": { + math: "\\varveebar" +}, + "⩢": { + math: "\\doublebarvee" +}, + "⩤": { + math: "\\dsub" +}, + "⩥": { + math: "\\rsub" +}, + "⩦": { + math: "\\eqdot" +}, + "⩧": { + math: "\\dotequiv" +}, + "⩨": { + math: "\\equivVert" +}, + "⩩": { + math: "\\equivVvert" +}, + "⩪": { + math: "\\dotsim" +}, + "⩫": { + math: "\\simrdots" +}, + "⩬": { + math: "\\simminussim" +}, + "⩭": { + math: "\\congdot" +}, + "⩮": { + math: "\\stackrel{*}{=}" +}, + "⩯": { + math: "\\hatapprox" +}, + "⩰": { + math: "\\approxeqq" +}, + "⩱": { + math: "\\eqqplus" +}, + "⩲": { + math: "\\pluseqq" +}, + "⩳": { + math: "\\eqqsim" +}, + "⩴": { + math: "\\Coloneqq" +}, + "⩵": { + math: "\\Equal" +}, + "⩶": { + math: "\\Same" +}, + "⩷": { + math: "\\ddotseq" +}, + "⩸": { + math: "\\equivDD" +}, + "⩹": { + math: "\\ltcir" +}, + "⩺": { + math: "\\gtcir" +}, + "⩻": { + math: "\\ltquest" +}, + "⩼": { + math: "\\gtquest" +}, + "⩽": { + math: "\\leqslant", + mathpackages: [ + "amssymb" + ] +}, + "⩽̸": { + math: "\\nleqslant", + mathpackages: [ + "amssymb" + ] +}, + "⩾": { + math: "\\geqslant", + mathpackages: [ + "amssymb" + ] +}, + "⩾̸": { + math: "\\ngeqslant", + mathpackages: [ + "amssymb" + ] +}, + "⩿": { + math: "\\lesdot" +}, + "⪀": { + math: "\\gesdot" +}, + "⪁": { + math: "\\lesdoto" +}, + "⪂": { + math: "\\gesdoto" +}, + "⪃": { + math: "\\lesdotor" +}, + "⪄": { + math: "\\gesdotol" +}, + "⪅": { + math: "\\lessapprox" +}, + "⪆": { + math: "\\gtrapprox" +}, + "⪇": { + math: "\\lneq" +}, + "⪈": { + math: "\\gneq" +}, + "⪉": { + math: "\\lnapprox" +}, + "⪊": { + math: "\\gnapprox" +}, + "⪋": { + math: "\\lesseqqgtr" +}, + "⪌": { + math: "\\gtreqqless" +}, + "⪍": { + math: "\\lsime" +}, + "⪎": { + math: "\\gsime" +}, + "⪏": { + math: "\\lsimg" +}, + "⪐": { + math: "\\gsiml" +}, + "⪑": { + math: "\\lgE" +}, + "⪒": { + math: "\\glE" +}, + "⪓": { + math: "\\lesges" +}, + "⪔": { + math: "\\gesles" +}, + "⪕": { + math: "\\eqslantless" +}, + "⪖": { + math: "\\eqslantgtr" +}, + "⪗": { + math: "\\elsdot" +}, + "⪘": { + math: "\\egsdot" +}, + "⪙": { + math: "\\eqqless" +}, + "⪚": { + math: "\\eqqgtr" +}, + "⪛": { + math: "\\eqqslantless" +}, + "⪜": { + math: "\\eqqslantgtr" +}, + "⪝": { + math: "\\Pisymbol{ppi020}{117}" +}, + "⪞": { + math: "\\Pisymbol{ppi020}{105}" +}, + "⪟": { + math: "\\simlE" +}, + "⪠": { + math: "\\simgE" +}, + "⪡": { + math: "\\NestedLessLess" +}, + "⪡̸": { + math: "\\NotNestedLessLess" +}, + "⪢": { + math: "\\NestedGreaterGreater" +}, + "⪢̸": { + math: "\\NotNestedGreaterGreater" +}, + "⪣": { + math: "\\partialmeetcontraction" +}, + "⪤": { + math: "\\glj" +}, + "⪥": { + math: "\\gla" +}, + "⪦": { + math: "\\leftslice" +}, + "⪧": { + math: "\\rightslice" +}, + "⪨": { + math: "\\lescc" +}, + "⪩": { + math: "\\gescc" +}, + "⪪": { + math: "\\smt" +}, + "⪫": { + math: "\\lat" +}, + "⪬": { + math: "\\smte" +}, + "⪭": { + math: "\\late" +}, + "⪮": { + math: "\\bumpeqq" +}, + "⪯": { + math: "\\preceq" +}, + "⪯̸": { + math: "\\not\\preceq" +}, + "⪰": { + math: "\\succeq" +}, + "⪰̸": { + math: "\\not\\succeq" +}, + "⪱": { + math: "\\precneq" +}, + "⪲": { + math: "\\succneq" +}, + "⪳": { + math: "\\preceqq" +}, + "⪴": { + math: "\\succeqq" +}, + "⪵": { + math: "\\precneqq" +}, + "⪶": { + math: "\\succneqq" +}, + "⪷": { + math: "\\precapprox" +}, + "⪸": { + math: "\\succapprox" +}, + "⪹": { + math: "\\precnapprox" +}, + "⪺": { + math: "\\succnapprox" +}, + "⪻": { + math: "\\llcurly" +}, + "⪼": { + math: "\\ggcurly" +}, + "⪽": { + math: "\\subsetdot" +}, + "⪾": { + math: "\\supsetdot" +}, + "⪿": { + math: "\\subsetplus" +}, + "⫀": { + math: "\\supsetplus" +}, + "⫁": { + math: "\\submult" +}, + "⫂": { + math: "\\supmult" +}, + "⫃": { + math: "\\subedot" +}, + "⫄": { + math: "\\supedot" +}, + "⫅": { + math: "\\subseteqq" +}, + "⫅̸": { + math: "\\nsubseteqq" +}, + "⫆": { + math: "\\supseteqq" +}, + "⫆̸": { + math: "\\nsupseteqq" +}, + "⫇": { + math: "\\subsim" +}, + "⫈": { + math: "\\supsim" +}, + "⫉": { + math: "\\subsetapprox" +}, + "⫊": { + math: "\\supsetapprox" +}, + "⫋": { + math: "\\subsetneqq" +}, + "⫌": { + math: "\\supsetneqq" +}, + "⫍": { + math: "\\lsqhook" +}, + "⫎": { + math: "\\rsqhook" +}, + "⫏": { + math: "\\csub" +}, + "⫐": { + math: "\\csup" +}, + "⫑": { + math: "\\csube" +}, + "⫒": { + math: "\\csupe" +}, + "⫓": { + math: "\\subsup" +}, + "⫔": { + math: "\\supsub" +}, + "⫕": { + math: "\\subsub" +}, + "⫖": { + math: "\\supsup" +}, + "⫗": { + math: "\\suphsub" +}, + "⫘": { + math: "\\supdsub" +}, + "⫙": { + math: "\\forkv" +}, + "⫚": { + math: "\\topfork" +}, + "⫛": { + math: "\\mlcp" +}, + "⫝̸": { + math: "\\forks" +}, + "⫝": { + math: "\\forksnot" +}, + "⫝̸": { + math: "\\forks" +}, + "⫞": { + math: "\\shortlefttack" +}, + "⫟": { + math: "\\shortdowntack" +}, + "⫠": { + math: "\\shortuptack" +}, + "⫡": { + math: "\\perps" +}, + "⫢": { + math: "\\vDdash" +}, + "⫣": { + math: "\\dashV" +}, + "⫤": { + math: "\\Dashv" +}, + "⫥": { + math: "\\DashV" +}, + "⫦": { + math: "\\varVdash" +}, + "⫧": { + math: "\\Barv" +}, + "⫨": { + math: "\\vBar" +}, + "⫩": { + math: "\\vBarv" +}, + "⫪": { + math: "\\Top" +}, + "⫬": { + math: "\\Not" +}, + "⫭": { + math: "\\bNot" +}, + "⫮": { + math: "\\revnmid" +}, + "⫯": { + math: "\\cirmid" +}, + "⫰": { + math: "\\midcir" +}, + "⫱": { + math: "\\topcir" +}, + "⫲": { + math: "\\nhpar" +}, + "⫳": { + math: "\\parsim" +}, + "⫴": { + math: "\\interleave" +}, + "⫵": { + math: "\\nhVvert" +}, + "⫶": { + math: "\\Elztdcol" +}, + "⫷": { + math: "\\lllnest" +}, + "⫸": { + math: "\\gggnest" +}, + "⫹": { + math: "\\leqqslant" +}, + "⫺": { + math: "\\geqqslant" +}, + "⫻": { + math: "\\trslash" +}, + "⫼": { + math: "\\biginterleave" +}, + "⫽": { + math: "{{/}\\!\\!{/}}" +}, + "⫽⃥": { + math: "{\\rlap{\\textbackslash}{{/}\\!\\!{/}}}" +}, + "⫾": { + math: "\\talloblong" +}, + "⫿": { + math: "\\bigtalloblong" +}, + "⬒": { + math: "\\squaretopblack" +}, + "⬓": { + math: "\\squarebotblack" +}, + "⬔": { + math: "\\squareurblack" +}, + "⬕": { + math: "\\squarellblack" +}, + "⬖": { + math: "\\diamondleftblack" +}, + "⬗": { + math: "\\diamondrightblack" +}, + "⬘": { + math: "\\diamondtopblack" +}, + "⬙": { + math: "\\diamondbotblack" +}, + "⬚": { + math: "\\dottedsquare" +}, + "⬛": { + math: "\\blacksquare" +}, + "⬜": { + math: "\\square" +}, + "⬝": { + math: "\\vysmblksquare" +}, + "⬞": { + math: "\\vysmwhtsquare" +}, + "⬟": { + math: "\\pentagonblack" +}, + "⬠": { + math: "\\pentagon" +}, + "⬡": { + math: "\\varhexagon" +}, + "⬢": { + math: "\\varhexagonblack" +}, + "⬣": { + math: "\\hexagonblack" +}, + "⬤": { + math: "\\lgblkcircle" +}, + "⬥": { + math: "\\mdblkdiamond" +}, + "⬦": { + math: "\\mdwhtdiamond" +}, + "⬧": { + math: "\\mdblklozenge" +}, + "⬨": { + math: "\\mdwhtlozenge" +}, + "⬩": { + math: "\\smblkdiamond" +}, + "⬪": { + math: "\\smblklozenge" +}, + "⬫": { + math: "\\smwhtlozenge" +}, + "⬬": { + math: "\\blkhorzoval" +}, + "⬭": { + math: "\\whthorzoval" +}, + "⬮": { + math: "\\blkvertoval" +}, + "⬯": { + math: "\\whtvertoval" +}, + "⬰": { + math: "\\circleonleftarrow" +}, + "⬱": { + math: "\\leftthreearrows" +}, + "⬲": { + math: "\\leftarrowonoplus" +}, + "⬳": { + math: "\\longleftsquigarrow" +}, + "⬴": { + math: "\\nvtwoheadleftarrow" +}, + "⬵": { + math: "\\nVtwoheadleftarrow" +}, + "⬶": { + math: "\\twoheadmapsfrom" +}, + "⬷": { + math: "\\twoheadleftdbkarrow" +}, + "⬸": { + math: "\\leftdotarrow" +}, + "⬹": { + math: "\\nvleftarrowtail" +}, + "⬺": { + math: "\\nVleftarrowtail" +}, + "⬻": { + math: "\\twoheadleftarrowtail" +}, + "⬼": { + math: "\\nvtwoheadleftarrowtail" +}, + "⬽": { + math: "\\nVtwoheadleftarrowtail" +}, + "⬾": { + math: "\\leftarrowx" +}, + "⬿": { + math: "\\leftcurvedarrow" +}, + "⭀": { + math: "\\equalleftarrow" +}, + "⭁": { + math: "\\bsimilarleftarrow" +}, + "⭂": { + math: "\\leftarrowbackapprox" +}, + "⭃": { + math: "\\rightarrowgtr" +}, + "⭄": { + math: "\\rightarrowsupset" +}, + "⭅": { + math: "\\LLeftarrow" +}, + "⭆": { + math: "\\RRightarrow" +}, + "⭇": { + math: "\\bsimilarrightarrow" +}, + "⭈": { + math: "\\rightarrowbackapprox" +}, + "⭉": { + math: "\\similarleftarrow" +}, + "⭊": { + math: "\\leftarrowapprox" +}, + "⭋": { + math: "\\leftarrowbsimilar" +}, + "⭌": { + math: "\\rightarrowbsimilar" +}, + "⭐": { + math: "\\medwhitestar" +}, + "⭑": { + math: "\\medblackstar" +}, + "⭒": { + math: "\\smwhitestar" +}, + "⭓": { + math: "\\rightpentagonblack" +}, + "⭔": { + math: "\\rightpentagon" +}, + "〈": { + math: "\\langle" +}, + "〉": { + math: "\\rangle" +}, + "〒": { + math: "\\postalmark" +}, + "〔": { + math: "\\lbrbrak" +}, + "〕": { + math: "\\rbrbrak" +}, + "〚": { + math: "\\openbracketleft" +}, + "〛": { + math: "\\openbracketright" +}, + "〰": { + math: "\\hzigzag" +}, + "ff": { + text: "ff" +}, + "fi": { + text: "fi" +}, + "fl": { + text: "fl" +}, + "ffi": { + text: "ffi" +}, + "ffl": { + text: "ffl" +}, + "ſt": { + text: "st" +}, + "st": { + text: "st" +}, + "�": { + text: "\\dbend", + commandspacer: true +}, + "𝐀": { + math: "\\mathbf{A}" +}, + "𝐁": { + math: "\\mathbf{B}" +}, + "𝐂": { + math: "\\mathbf{C}" +}, + "𝐃": { + math: "\\mathbf{D}" +}, + "𝐄": { + math: "\\mathbf{E}" +}, + "𝐅": { + math: "\\mathbf{F}" +}, + "𝐆": { + math: "\\mathbf{G}" +}, + "𝐇": { + math: "\\mathbf{H}" +}, + "𝐈": { + math: "\\mathbf{I}" +}, + "𝐉": { + math: "\\mathbf{J}" +}, + "𝐊": { + math: "\\mathbf{K}" +}, + "𝐋": { + math: "\\mathbf{L}" +}, + "𝐌": { + math: "\\mathbf{M}" +}, + "𝐍": { + math: "\\mathbf{N}" +}, + "𝐎": { + math: "\\mathbf{O}" +}, + "𝐏": { + math: "\\mathbf{P}" +}, + "𝐐": { + math: "\\mathbf{Q}" +}, + "𝐑": { + math: "\\mathbf{R}" +}, + "𝐒": { + math: "\\mathbf{S}" +}, + "𝐓": { + math: "\\mathbf{T}" +}, + "𝐔": { + math: "\\mathbf{U}" +}, + "𝐕": { + math: "\\mathbf{V}" +}, + "𝐖": { + math: "\\mathbf{W}" +}, + "𝐗": { + math: "\\mathbf{X}" +}, + "𝐘": { + math: "\\mathbf{Y}" +}, + "𝐙": { + math: "\\mathbf{Z}" +}, + "𝐚": { + math: "\\mathbf{a}" +}, + "𝐛": { + math: "\\mathbf{b}" +}, + "𝐜": { + math: "\\mathbf{c}" +}, + "𝐝": { + math: "\\mathbf{d}" +}, + "𝐞": { + math: "\\mathbf{e}" +}, + "𝐟": { + math: "\\mathbf{f}" +}, + "𝐠": { + math: "\\mathbf{g}" +}, + "𝐡": { + math: "\\mathbf{h}" +}, + "𝐢": { + math: "\\mathbf{i}" +}, + "𝐣": { + math: "\\mathbf{j}" +}, + "𝐤": { + math: "\\mathbf{k}" +}, + "𝐥": { + math: "\\mathbf{l}" +}, + "𝐦": { + math: "\\mathbf{m}" +}, + "𝐧": { + math: "\\mathbf{n}" +}, + "𝐨": { + math: "\\mathbf{o}" +}, + "𝐩": { + math: "\\mathbf{p}" +}, + "𝐪": { + math: "\\mathbf{q}" +}, + "𝐫": { + math: "\\mathbf{r}" +}, + "𝐬": { + math: "\\mathbf{s}" +}, + "𝐭": { + math: "\\mathbf{t}" +}, + "𝐮": { + math: "\\mathbf{u}" +}, + "𝐯": { + math: "\\mathbf{v}" +}, + "𝐰": { + math: "\\mathbf{w}" +}, + "𝐱": { + math: "\\mathbf{x}" +}, + "𝐲": { + math: "\\mathbf{y}" +}, + "𝐳": { + math: "\\mathbf{z}" +}, + "𝐴": { + math: "\\mathsl{A}" +}, + "𝐵": { + math: "\\mathsl{B}" +}, + "𝐶": { + math: "\\mathsl{C}" +}, + "𝐷": { + math: "\\mathsl{D}" +}, + "𝐸": { + math: "\\mathsl{E}" +}, + "𝐹": { + math: "\\mathsl{F}" +}, + "𝐺": { + math: "\\mathsl{G}" +}, + "𝐻": { + math: "\\mathsl{H}" +}, + "𝐼": { + math: "\\mathsl{I}" +}, + "𝐽": { + math: "\\mathsl{J}" +}, + "𝐾": { + math: "\\mathsl{K}" +}, + "𝐿": { + math: "\\mathsl{L}" +}, + "𝑀": { + math: "\\mathsl{M}" +}, + "𝑁": { + math: "\\mathsl{N}" +}, + "𝑂": { + math: "\\mathsl{O}" +}, + "𝑃": { + math: "\\mathsl{P}" +}, + "𝑄": { + math: "\\mathsl{Q}" +}, + "𝑅": { + math: "\\mathsl{R}" +}, + "𝑆": { + math: "\\mathsl{S}" +}, + "𝑇": { + math: "\\mathsl{T}" +}, + "𝑈": { + math: "\\mathsl{U}" +}, + "𝑉": { + math: "\\mathsl{V}" +}, + "𝑊": { + math: "\\mathsl{W}" +}, + "𝑋": { + math: "\\mathsl{X}" +}, + "𝑌": { + math: "\\mathsl{Y}" +}, + "𝑍": { + math: "\\mathsl{Z}" +}, + "𝑎": { + math: "\\mathsl{a}" +}, + "𝑏": { + math: "\\mathsl{b}" +}, + "𝑐": { + math: "\\mathsl{c}" +}, + "𝑑": { + math: "\\mathsl{d}" +}, + "𝑒": { + math: "\\mathsl{e}" +}, + "𝑓": { + math: "\\mathsl{f}" +}, + "𝑔": { + math: "\\mathsl{g}" +}, + "𝑖": { + math: "\\mathsl{i}" +}, + "𝑗": { + math: "\\mathsl{j}" +}, + "𝑘": { + math: "\\mathsl{k}" +}, + "𝑙": { + math: "\\mathsl{l}" +}, + "𝑚": { + math: "\\mathsl{m}" +}, + "𝑛": { + math: "\\mathsl{n}" +}, + "𝑜": { + math: "\\mathsl{o}" +}, + "𝑝": { + math: "\\mathsl{p}" +}, + "𝑞": { + math: "\\mathsl{q}" +}, + "𝑟": { + math: "\\mathsl{r}" +}, + "𝑠": { + math: "\\mathsl{s}" +}, + "𝑡": { + math: "\\mathsl{t}" +}, + "𝑢": { + math: "\\mathsl{u}" +}, + "𝑣": { + math: "\\mathsl{v}" +}, + "𝑤": { + math: "\\mathsl{w}" +}, + "𝑥": { + math: "\\mathsl{x}" +}, + "𝑦": { + math: "\\mathsl{y}" +}, + "𝑧": { + math: "\\mathsl{z}" +}, + "𝑨": { + math: "\\mathbit{A}" +}, + "𝑩": { + math: "\\mathbit{B}" +}, + "𝑪": { + math: "\\mathbit{C}" +}, + "𝑫": { + math: "\\mathbit{D}" +}, + "𝑬": { + math: "\\mathbit{E}" +}, + "𝑭": { + math: "\\mathbit{F}" +}, + "𝑮": { + math: "\\mathbit{G}" +}, + "𝑯": { + math: "\\mathbit{H}" +}, + "𝑰": { + math: "\\mathbit{I}" +}, + "𝑱": { + math: "\\mathbit{J}" +}, + "𝑲": { + math: "\\mathbit{K}" +}, + "𝑳": { + math: "\\mathbit{L}" +}, + "𝑴": { + math: "\\mathbit{M}" +}, + "𝑵": { + math: "\\mathbit{N}" +}, + "𝑶": { + math: "\\mathbit{O}" +}, + "𝑷": { + math: "\\mathbit{P}" +}, + "𝑸": { + math: "\\mathbit{Q}" +}, + "𝑹": { + math: "\\mathbit{R}" +}, + "𝑺": { + math: "\\mathbit{S}" +}, + "𝑻": { + math: "\\mathbit{T}" +}, + "𝑼": { + math: "\\mathbit{U}" +}, + "𝑽": { + math: "\\mathbit{V}" +}, + "𝑾": { + math: "\\mathbit{W}" +}, + "𝑿": { + math: "\\mathbit{X}" +}, + "𝒀": { + math: "\\mathbit{Y}" +}, + "𝒁": { + math: "\\mathbit{Z}" +}, + "𝒂": { + math: "\\mathbit{a}" +}, + "𝒃": { + math: "\\mathbit{b}" +}, + "𝒄": { + math: "\\mathbit{c}" +}, + "𝒅": { + math: "\\mathbit{d}" +}, + "𝒆": { + math: "\\mathbit{e}" +}, + "𝒇": { + math: "\\mathbit{f}" +}, + "𝒈": { + math: "\\mathbit{g}" +}, + "𝒉": { + math: "\\mathbit{h}" +}, + "𝒊": { + math: "\\mathbit{i}" +}, + "𝒋": { + math: "\\mathbit{j}" +}, + "𝒌": { + math: "\\mathbit{k}" +}, + "𝒍": { + math: "\\mathbit{l}" +}, + "𝒎": { + math: "\\mathbit{m}" +}, + "𝒏": { + math: "\\mathbit{n}" +}, + "𝒐": { + math: "\\mathbit{o}" +}, + "𝒑": { + math: "\\mathbit{p}" +}, + "𝒒": { + math: "\\mathbit{q}" +}, + "𝒓": { + math: "\\mathbit{r}" +}, + "𝒔": { + math: "\\mathbit{s}" +}, + "𝒕": { + math: "\\mathbit{t}" +}, + "𝒖": { + math: "\\mathbit{u}" +}, + "𝒗": { + math: "\\mathbit{v}" +}, + "𝒘": { + math: "\\mathbit{w}" +}, + "𝒙": { + math: "\\mathbit{x}" +}, + "𝒚": { + math: "\\mathbit{y}" +}, + "𝒛": { + math: "\\mathbit{z}" +}, + "𝒜": { + math: "\\mathscr{A}" +}, + "𝒞": { + math: "\\mathscr{C}" +}, + "𝒟": { + math: "\\mathscr{D}" +}, + "𝒢": { + math: "\\mathscr{G}" +}, + "𝒥": { + math: "\\mathscr{J}" +}, + "𝒦": { + math: "\\mathscr{K}" +}, + "𝒩": { + math: "\\mathscr{N}" +}, + "𝒪": { + math: "\\mathscr{O}" +}, + "𝒫": { + math: "\\mathscr{P}" +}, + "𝒬": { + math: "\\mathscr{Q}" +}, + "𝒮": { + math: "\\mathscr{S}" +}, + "𝒯": { + math: "\\mathscr{T}" +}, + "𝒰": { + math: "\\mathscr{U}" +}, + "𝒱": { + math: "\\mathscr{V}" +}, + "𝒲": { + math: "\\mathscr{W}" +}, + "𝒳": { + math: "\\mathscr{X}" +}, + "𝒴": { + math: "\\mathscr{Y}" +}, + "𝒵": { + math: "\\mathscr{Z}" +}, + "𝒶": { + math: "\\mathscr{a}" +}, + "𝒷": { + math: "\\mathscr{b}" +}, + "𝒸": { + math: "\\mathscr{c}" +}, + "𝒹": { + math: "\\mathscr{d}" +}, + "𝒻": { + math: "\\mathscr{f}" +}, + "𝒽": { + math: "\\mathscr{h}" +}, + "𝒾": { + math: "\\mathscr{i}" +}, + "𝒿": { + math: "\\mathscr{j}" +}, + "𝓀": { + math: "\\mathscr{k}" +}, + "𝓁": { + math: "\\mathscr{l}" +}, + "𝓂": { + math: "\\mathscr{m}" +}, + "𝓃": { + math: "\\mathscr{n}" +}, + "𝓅": { + math: "\\mathscr{p}" +}, + "𝓆": { + math: "\\mathscr{q}" +}, + "𝓇": { + math: "\\mathscr{r}" +}, + "𝓈": { + math: "\\mathscr{s}" +}, + "𝓉": { + math: "\\mathscr{t}" +}, + "𝓊": { + math: "\\mathscr{u}" +}, + "𝓋": { + math: "\\mathscr{v}" +}, + "𝓌": { + math: "\\mathscr{w}" +}, + "𝓍": { + math: "\\mathscr{x}" +}, + "𝓎": { + math: "\\mathscr{y}" +}, + "𝓏": { + math: "\\mathscr{z}" +}, + "𝓐": { + math: "\\mathmit{A}" +}, + "𝓑": { + math: "\\mathmit{B}" +}, + "𝓒": { + math: "\\mathmit{C}" +}, + "𝓓": { + math: "\\mathmit{D}" +}, + "𝓔": { + math: "\\mathmit{E}" +}, + "𝓕": { + math: "\\mathmit{F}" +}, + "𝓖": { + math: "\\mathmit{G}" +}, + "𝓗": { + math: "\\mathmit{H}" +}, + "𝓘": { + math: "\\mathmit{I}" +}, + "𝓙": { + math: "\\mathmit{J}" +}, + "𝓚": { + math: "\\mathmit{K}" +}, + "𝓛": { + math: "\\mathmit{L}" +}, + "𝓜": { + math: "\\mathmit{M}" +}, + "𝓝": { + math: "\\mathmit{N}" +}, + "𝓞": { + math: "\\mathmit{O}" +}, + "𝓟": { + math: "\\mathmit{P}" +}, + "𝓠": { + math: "\\mathmit{Q}" +}, + "𝓡": { + math: "\\mathmit{R}" +}, + "𝓢": { + math: "\\mathmit{S}" +}, + "𝓣": { + math: "\\mathmit{T}" +}, + "𝓤": { + math: "\\mathmit{U}" +}, + "𝓥": { + math: "\\mathmit{V}" +}, + "𝓦": { + math: "\\mathmit{W}" +}, + "𝓧": { + math: "\\mathmit{X}" +}, + "𝓨": { + math: "\\mathmit{Y}" +}, + "𝓩": { + math: "\\mathmit{Z}" +}, + "𝓪": { + math: "\\mathmit{a}" +}, + "𝓫": { + math: "\\mathmit{b}" +}, + "𝓬": { + math: "\\mathmit{c}" +}, + "𝓭": { + math: "\\mathmit{d}" +}, + "𝓮": { + math: "\\mathmit{e}" +}, + "𝓯": { + math: "\\mathmit{f}" +}, + "𝓰": { + math: "\\mathmit{g}" +}, + "𝓱": { + math: "\\mathmit{h}" +}, + "𝓲": { + math: "\\mathmit{i}" +}, + "𝓳": { + math: "\\mathmit{j}" +}, + "𝓴": { + math: "\\mathmit{k}" +}, + "𝓵": { + math: "\\mathmit{l}" +}, + "𝓶": { + math: "\\mathmit{m}" +}, + "𝓷": { + math: "\\mathmit{n}" +}, + "𝓸": { + math: "\\mathmit{o}" +}, + "𝓹": { + math: "\\mathmit{p}" +}, + "𝓺": { + math: "\\mathmit{q}" +}, + "𝓻": { + math: "\\mathmit{r}" +}, + "𝓼": { + math: "\\mathmit{s}" +}, + "𝓽": { + math: "\\mathmit{t}" +}, + "𝓾": { + math: "\\mathmit{u}" +}, + "𝓿": { + math: "\\mathmit{v}" +}, + "𝔀": { + math: "\\mathmit{w}" +}, + "𝔁": { + math: "\\mathmit{x}" +}, + "𝔂": { + math: "\\mathmit{y}" +}, + "𝔃": { + math: "\\mathmit{z}" +}, + "𝔄": { + math: "\\mathfrak{A}" +}, + "𝔅": { + math: "\\mathfrak{B}" +}, + "𝔇": { + math: "\\mathfrak{D}" +}, + "𝔈": { + math: "\\mathfrak{E}" +}, + "𝔉": { + math: "\\mathfrak{F}" +}, + "𝔊": { + math: "\\mathfrak{G}" +}, + "𝔍": { + math: "\\mathfrak{J}" +}, + "𝔎": { + math: "\\mathfrak{K}" +}, + "𝔏": { + math: "\\mathfrak{L}" +}, + "𝔐": { + math: "\\mathfrak{M}" +}, + "𝔑": { + math: "\\mathfrak{N}" +}, + "𝔒": { + math: "\\mathfrak{O}" +}, + "𝔓": { + math: "\\mathfrak{P}" +}, + "𝔔": { + math: "\\mathfrak{Q}" +}, + "𝔖": { + math: "\\mathfrak{S}" +}, + "𝔗": { + math: "\\mathfrak{T}" +}, + "𝔘": { + math: "\\mathfrak{U}" +}, + "𝔙": { + math: "\\mathfrak{V}" +}, + "𝔚": { + math: "\\mathfrak{W}" +}, + "𝔛": { + math: "\\mathfrak{X}" +}, + "𝔜": { + math: "\\mathfrak{Y}" +}, + "𝔞": { + math: "\\mathfrak{a}" +}, + "𝔟": { + math: "\\mathfrak{b}" +}, + "𝔠": { + math: "\\mathfrak{c}" +}, + "𝔡": { + math: "\\mathfrak{d}" +}, + "𝔢": { + math: "\\mathfrak{e}" +}, + "𝔣": { + math: "\\mathfrak{f}" +}, + "𝔤": { + math: "\\mathfrak{g}" +}, + "𝔥": { + math: "\\mathfrak{h}" +}, + "𝔦": { + math: "\\mathfrak{i}" +}, + "𝔧": { + math: "\\mathfrak{j}" +}, + "𝔨": { + math: "\\mathfrak{k}" +}, + "𝔩": { + math: "\\mathfrak{l}" +}, + "𝔪": { + math: "\\mathfrak{m}" +}, + "𝔫": { + math: "\\mathfrak{n}" +}, + "𝔬": { + math: "\\mathfrak{o}" +}, + "𝔭": { + math: "\\mathfrak{p}" +}, + "𝔮": { + math: "\\mathfrak{q}" +}, + "𝔯": { + math: "\\mathfrak{r}" +}, + "𝔰": { + math: "\\mathfrak{s}" +}, + "𝔱": { + math: "\\mathfrak{t}" +}, + "𝔲": { + math: "\\mathfrak{u}" +}, + "𝔳": { + math: "\\mathfrak{v}" +}, + "𝔴": { + math: "\\mathfrak{w}" +}, + "𝔵": { + math: "\\mathfrak{x}" +}, + "𝔶": { + math: "\\mathfrak{y}" +}, + "𝔷": { + math: "\\mathfrak{z}" +}, + "𝔸": { + math: "\\mathbb{A}" +}, + "𝔹": { + math: "\\mathbb{B}" +}, + "𝔻": { + math: "\\mathbb{D}" +}, + "𝔼": { + math: "\\mathbb{E}" +}, + "𝔽": { + math: "\\mathbb{F}" +}, + "𝔾": { + math: "\\mathbb{G}" +}, + "𝕀": { + math: "\\mathbb{I}" +}, + "𝕁": { + math: "\\mathbb{J}" +}, + "𝕂": { + math: "\\mathbb{K}" +}, + "𝕃": { + math: "\\mathbb{L}" +}, + "𝕄": { + math: "\\mathbb{M}" +}, + "𝕆": { + math: "\\mathbb{O}" +}, + "𝕊": { + math: "\\mathbb{S}" +}, + "𝕋": { + math: "\\mathbb{T}" +}, + "𝕌": { + math: "\\mathbb{U}" +}, + "𝕍": { + math: "\\mathbb{V}" +}, + "𝕎": { + math: "\\mathbb{W}" +}, + "𝕏": { + math: "\\mathbb{X}" +}, + "𝕐": { + math: "\\mathbb{Y}" +}, + "𝕒": { + math: "\\mathbb{a}" +}, + "𝕓": { + math: "\\mathbb{b}" +}, + "𝕔": { + math: "\\mathbb{c}" +}, + "𝕕": { + math: "\\mathbb{d}" +}, + "𝕖": { + math: "\\mathbb{e}" +}, + "𝕗": { + math: "\\mathbb{f}" +}, + "𝕘": { + math: "\\mathbb{g}" +}, + "𝕙": { + math: "\\mathbb{h}" +}, + "𝕚": { + math: "\\mathbb{i}" +}, + "𝕛": { + math: "\\mathbb{j}" +}, + "𝕜": { + math: "\\mathbb{k}" +}, + "𝕝": { + math: "\\mathbb{l}" +}, + "𝕞": { + math: "\\mathbb{m}" +}, + "𝕟": { + math: "\\mathbb{n}" +}, + "𝕠": { + math: "\\mathbb{o}" +}, + "𝕡": { + math: "\\mathbb{p}" +}, + "𝕢": { + math: "\\mathbb{q}" +}, + "𝕣": { + math: "\\mathbb{r}" +}, + "𝕤": { + math: "\\mathbb{s}" +}, + "𝕥": { + math: "\\mathbb{t}" +}, + "𝕦": { + math: "\\mathbb{u}" +}, + "𝕧": { + math: "\\mathbb{v}" +}, + "𝕨": { + math: "\\mathbb{w}" +}, + "𝕩": { + math: "\\mathbb{x}" +}, + "𝕪": { + math: "\\mathbb{y}" +}, + "𝕫": { + math: "\\mathbb{z}" +}, + "𝕬": { + math: "\\mathslbb{A}" +}, + "𝕭": { + math: "\\mathslbb{B}" +}, + "𝕮": { + math: "\\mathslbb{C}" +}, + "𝕯": { + math: "\\mathslbb{D}" +}, + "𝕰": { + math: "\\mathslbb{E}" +}, + "𝕱": { + math: "\\mathslbb{F}" +}, + "𝕲": { + math: "\\mathslbb{G}" +}, + "𝕳": { + math: "\\mathslbb{H}" +}, + "𝕴": { + math: "\\mathslbb{I}" +}, + "𝕵": { + math: "\\mathslbb{J}" +}, + "𝕶": { + math: "\\mathslbb{K}" +}, + "𝕷": { + math: "\\mathslbb{L}" +}, + "𝕸": { + math: "\\mathslbb{M}" +}, + "𝕹": { + math: "\\mathslbb{N}" +}, + "𝕺": { + math: "\\mathslbb{O}" +}, + "𝕻": { + math: "\\mathslbb{P}" +}, + "𝕼": { + math: "\\mathslbb{Q}" +}, + "𝕽": { + math: "\\mathslbb{R}" +}, + "𝕾": { + math: "\\mathslbb{S}" +}, + "𝕿": { + math: "\\mathslbb{T}" +}, + "𝖀": { + math: "\\mathslbb{U}" +}, + "𝖁": { + math: "\\mathslbb{V}" +}, + "𝖂": { + math: "\\mathslbb{W}" +}, + "𝖃": { + math: "\\mathslbb{X}" +}, + "𝖄": { + math: "\\mathslbb{Y}" +}, + "𝖅": { + math: "\\mathslbb{Z}" +}, + "𝖆": { + math: "\\mathslbb{a}" +}, + "𝖇": { + math: "\\mathslbb{b}" +}, + "𝖈": { + math: "\\mathslbb{c}" +}, + "𝖉": { + math: "\\mathslbb{d}" +}, + "𝖊": { + math: "\\mathslbb{e}" +}, + "𝖋": { + math: "\\mathslbb{f}" +}, + "𝖌": { + math: "\\mathslbb{g}" +}, + "𝖍": { + math: "\\mathslbb{h}" +}, + "𝖎": { + math: "\\mathslbb{i}" +}, + "𝖏": { + math: "\\mathslbb{j}" +}, + "𝖐": { + math: "\\mathslbb{k}" +}, + "𝖑": { + math: "\\mathslbb{l}" +}, + "𝖒": { + math: "\\mathslbb{m}" +}, + "𝖓": { + math: "\\mathslbb{n}" +}, + "𝖔": { + math: "\\mathslbb{o}" +}, + "𝖕": { + math: "\\mathslbb{p}" +}, + "𝖖": { + math: "\\mathslbb{q}" +}, + "𝖗": { + math: "\\mathslbb{r}" +}, + "𝖘": { + math: "\\mathslbb{s}" +}, + "𝖙": { + math: "\\mathslbb{t}" +}, + "𝖚": { + math: "\\mathslbb{u}" +}, + "𝖛": { + math: "\\mathslbb{v}" +}, + "𝖜": { + math: "\\mathslbb{w}" +}, + "𝖝": { + math: "\\mathslbb{x}" +}, + "𝖞": { + math: "\\mathslbb{y}" +}, + "𝖟": { + math: "\\mathslbb{z}" +}, + "𝖠": { + math: "\\mathsf{A}" +}, + "𝖡": { + math: "\\mathsf{B}" +}, + "𝖢": { + math: "\\mathsf{C}" +}, + "𝖣": { + math: "\\mathsf{D}" +}, + "𝖤": { + math: "\\mathsf{E}" +}, + "𝖥": { + math: "\\mathsf{F}" +}, + "𝖦": { + math: "\\mathsf{G}" +}, + "𝖧": { + math: "\\mathsf{H}" +}, + "𝖨": { + math: "\\mathsf{I}" +}, + "𝖩": { + math: "\\mathsf{J}" +}, + "𝖪": { + math: "\\mathsf{K}" +}, + "𝖫": { + math: "\\mathsf{L}" +}, + "𝖬": { + math: "\\mathsf{M}" +}, + "𝖭": { + math: "\\mathsf{N}" +}, + "𝖮": { + math: "\\mathsf{O}" +}, + "𝖯": { + math: "\\mathsf{P}" +}, + "𝖰": { + math: "\\mathsf{Q}" +}, + "𝖱": { + math: "\\mathsf{R}" +}, + "𝖲": { + math: "\\mathsf{S}" +}, + "𝖳": { + math: "\\mathsf{T}" +}, + "𝖴": { + math: "\\mathsf{U}" +}, + "𝖵": { + math: "\\mathsf{V}" +}, + "𝖶": { + math: "\\mathsf{W}" +}, + "𝖷": { + math: "\\mathsf{X}" +}, + "𝖸": { + math: "\\mathsf{Y}" +}, + "𝖹": { + math: "\\mathsf{Z}" +}, + "𝖺": { + math: "\\mathsf{a}" +}, + "𝖻": { + math: "\\mathsf{b}" +}, + "𝖼": { + math: "\\mathsf{c}" +}, + "𝖽": { + math: "\\mathsf{d}" +}, + "𝖾": { + math: "\\mathsf{e}" +}, + "𝖿": { + math: "\\mathsf{f}" +}, + "𝗀": { + math: "\\mathsf{g}" +}, + "𝗁": { + math: "\\mathsf{h}" +}, + "𝗂": { + math: "\\mathsf{i}" +}, + "𝗃": { + math: "\\mathsf{j}" +}, + "𝗄": { + math: "\\mathsf{k}" +}, + "𝗅": { + math: "\\mathsf{l}" +}, + "𝗆": { + math: "\\mathsf{m}" +}, + "𝗇": { + math: "\\mathsf{n}" +}, + "𝗈": { + math: "\\mathsf{o}" +}, + "𝗉": { + math: "\\mathsf{p}" +}, + "𝗊": { + math: "\\mathsf{q}" +}, + "𝗋": { + math: "\\mathsf{r}" +}, + "𝗌": { + math: "\\mathsf{s}" +}, + "𝗍": { + math: "\\mathsf{t}" +}, + "𝗎": { + math: "\\mathsf{u}" +}, + "𝗏": { + math: "\\mathsf{v}" +}, + "𝗐": { + math: "\\mathsf{w}" +}, + "𝗑": { + math: "\\mathsf{x}" +}, + "𝗒": { + math: "\\mathsf{y}" +}, + "𝗓": { + math: "\\mathsf{z}" +}, + "𝗔": { + math: "\\mathsfbf{A}" +}, + "𝗕": { + math: "\\mathsfbf{B}" +}, + "𝗖": { + math: "\\mathsfbf{C}" +}, + "𝗗": { + math: "\\mathsfbf{D}" +}, + "𝗘": { + math: "\\mathsfbf{E}" +}, + "𝗙": { + math: "\\mathsfbf{F}" +}, + "𝗚": { + math: "\\mathsfbf{G}" +}, + "𝗛": { + math: "\\mathsfbf{H}" +}, + "𝗜": { + math: "\\mathsfbf{I}" +}, + "𝗝": { + math: "\\mathsfbf{J}" +}, + "𝗞": { + math: "\\mathsfbf{K}" +}, + "𝗟": { + math: "\\mathsfbf{L}" +}, + "𝗠": { + math: "\\mathsfbf{M}" +}, + "𝗡": { + math: "\\mathsfbf{N}" +}, + "𝗢": { + math: "\\mathsfbf{O}" +}, + "𝗣": { + math: "\\mathsfbf{P}" +}, + "𝗤": { + math: "\\mathsfbf{Q}" +}, + "𝗥": { + math: "\\mathsfbf{R}" +}, + "𝗦": { + math: "\\mathsfbf{S}" +}, + "𝗧": { + math: "\\mathsfbf{T}" +}, + "𝗨": { + math: "\\mathsfbf{U}" +}, + "𝗩": { + math: "\\mathsfbf{V}" +}, + "𝗪": { + math: "\\mathsfbf{W}" +}, + "𝗫": { + math: "\\mathsfbf{X}" +}, + "𝗬": { + math: "\\mathsfbf{Y}" +}, + "𝗭": { + math: "\\mathsfbf{Z}" +}, + "𝗮": { + math: "\\mathsfbf{a}" +}, + "𝗯": { + math: "\\mathsfbf{b}" +}, + "𝗰": { + math: "\\mathsfbf{c}" +}, + "𝗱": { + math: "\\mathsfbf{d}" +}, + "𝗲": { + math: "\\mathsfbf{e}" +}, + "𝗳": { + math: "\\mathsfbf{f}" +}, + "𝗴": { + math: "\\mathsfbf{g}" +}, + "𝗵": { + math: "\\mathsfbf{h}" +}, + "𝗶": { + math: "\\mathsfbf{i}" +}, + "𝗷": { + math: "\\mathsfbf{j}" +}, + "𝗸": { + math: "\\mathsfbf{k}" +}, + "𝗹": { + math: "\\mathsfbf{l}" +}, + "𝗺": { + math: "\\mathsfbf{m}" +}, + "𝗻": { + math: "\\mathsfbf{n}" +}, + "𝗼": { + math: "\\mathsfbf{o}" +}, + "𝗽": { + math: "\\mathsfbf{p}" +}, + "𝗾": { + math: "\\mathsfbf{q}" +}, + "𝗿": { + math: "\\mathsfbf{r}" +}, + "𝘀": { + math: "\\mathsfbf{s}" +}, + "𝘁": { + math: "\\mathsfbf{t}" +}, + "𝘂": { + math: "\\mathsfbf{u}" +}, + "𝘃": { + math: "\\mathsfbf{v}" +}, + "𝘄": { + math: "\\mathsfbf{w}" +}, + "𝘅": { + math: "\\mathsfbf{x}" +}, + "𝘆": { + math: "\\mathsfbf{y}" +}, + "𝘇": { + math: "\\mathsfbf{z}" +}, + "𝘈": { + math: "\\mathsfsl{A}" +}, + "𝘉": { + math: "\\mathsfsl{B}" +}, + "𝘊": { + math: "\\mathsfsl{C}" +}, + "𝘋": { + math: "\\mathsfsl{D}" +}, + "𝘌": { + math: "\\mathsfsl{E}" +}, + "𝘍": { + math: "\\mathsfsl{F}" +}, + "𝘎": { + math: "\\mathsfsl{G}" +}, + "𝘏": { + math: "\\mathsfsl{H}" +}, + "𝘐": { + math: "\\mathsfsl{I}" +}, + "𝘑": { + math: "\\mathsfsl{J}" +}, + "𝘒": { + math: "\\mathsfsl{K}" +}, + "𝘓": { + math: "\\mathsfsl{L}" +}, + "𝘔": { + math: "\\mathsfsl{M}" +}, + "𝘕": { + math: "\\mathsfsl{N}" +}, + "𝘖": { + math: "\\mathsfsl{O}" +}, + "𝘗": { + math: "\\mathsfsl{P}" +}, + "𝘘": { + math: "\\mathsfsl{Q}" +}, + "𝘙": { + math: "\\mathsfsl{R}" +}, + "𝘚": { + math: "\\mathsfsl{S}" +}, + "𝘛": { + math: "\\mathsfsl{T}" +}, + "𝘜": { + math: "\\mathsfsl{U}" +}, + "𝘝": { + math: "\\mathsfsl{V}" +}, + "𝘞": { + math: "\\mathsfsl{W}" +}, + "𝘟": { + math: "\\mathsfsl{X}" +}, + "𝘠": { + math: "\\mathsfsl{Y}" +}, + "𝘡": { + math: "\\mathsfsl{Z}" +}, + "𝘢": { + math: "\\mathsfsl{a}" +}, + "𝘣": { + math: "\\mathsfsl{b}" +}, + "𝘤": { + math: "\\mathsfsl{c}" +}, + "𝘥": { + math: "\\mathsfsl{d}" +}, + "𝘦": { + math: "\\mathsfsl{e}" +}, + "𝘧": { + math: "\\mathsfsl{f}" +}, + "𝘨": { + math: "\\mathsfsl{g}" +}, + "𝘩": { + math: "\\mathsfsl{h}" +}, + "𝘪": { + math: "\\mathsfsl{i}" +}, + "𝘫": { + math: "\\mathsfsl{j}" +}, + "𝘬": { + math: "\\mathsfsl{k}" +}, + "𝘭": { + math: "\\mathsfsl{l}" +}, + "𝘮": { + math: "\\mathsfsl{m}" +}, + "𝘯": { + math: "\\mathsfsl{n}" +}, + "𝘰": { + math: "\\mathsfsl{o}" +}, + "𝘱": { + math: "\\mathsfsl{p}" +}, + "𝘲": { + math: "\\mathsfsl{q}" +}, + "𝘳": { + math: "\\mathsfsl{r}" +}, + "𝘴": { + math: "\\mathsfsl{s}" +}, + "𝘵": { + math: "\\mathsfsl{t}" +}, + "𝘶": { + math: "\\mathsfsl{u}" +}, + "𝘷": { + math: "\\mathsfsl{v}" +}, + "𝘸": { + math: "\\mathsfsl{w}" +}, + "𝘹": { + math: "\\mathsfsl{x}" +}, + "𝘺": { + math: "\\mathsfsl{y}" +}, + "𝘻": { + math: "\\mathsfsl{z}" +}, + "𝘼": { + math: "\\mathsfbfsl{A}" +}, + "𝘽": { + math: "\\mathsfbfsl{B}" +}, + "𝘾": { + math: "\\mathsfbfsl{C}" +}, + "𝘿": { + math: "\\mathsfbfsl{D}" +}, + "𝙀": { + math: "\\mathsfbfsl{E}" +}, + "𝙁": { + math: "\\mathsfbfsl{F}" +}, + "𝙂": { + math: "\\mathsfbfsl{G}" +}, + "𝙃": { + math: "\\mathsfbfsl{H}" +}, + "𝙄": { + math: "\\mathsfbfsl{I}" +}, + "𝙅": { + math: "\\mathsfbfsl{J}" +}, + "𝙆": { + math: "\\mathsfbfsl{K}" +}, + "𝙇": { + math: "\\mathsfbfsl{L}" +}, + "𝙈": { + math: "\\mathsfbfsl{M}" +}, + "𝙉": { + math: "\\mathsfbfsl{N}" +}, + "𝙊": { + math: "\\mathsfbfsl{O}" +}, + "𝙋": { + math: "\\mathsfbfsl{P}" +}, + "𝙌": { + math: "\\mathsfbfsl{Q}" +}, + "𝙍": { + math: "\\mathsfbfsl{R}" +}, + "𝙎": { + math: "\\mathsfbfsl{S}" +}, + "𝙏": { + math: "\\mathsfbfsl{T}" +}, + "𝙐": { + math: "\\mathsfbfsl{U}" +}, + "𝙑": { + math: "\\mathsfbfsl{V}" +}, + "𝙒": { + math: "\\mathsfbfsl{W}" +}, + "𝙓": { + math: "\\mathsfbfsl{X}" +}, + "𝙔": { + math: "\\mathsfbfsl{Y}" +}, + "𝙕": { + math: "\\mathsfbfsl{Z}" +}, + "𝙖": { + math: "\\mathsfbfsl{a}" +}, + "𝙗": { + math: "\\mathsfbfsl{b}" +}, + "𝙘": { + math: "\\mathsfbfsl{c}" +}, + "𝙙": { + math: "\\mathsfbfsl{d}" +}, + "𝙚": { + math: "\\mathsfbfsl{e}" +}, + "𝙛": { + math: "\\mathsfbfsl{f}" +}, + "𝙜": { + math: "\\mathsfbfsl{g}" +}, + "𝙝": { + math: "\\mathsfbfsl{h}" +}, + "𝙞": { + math: "\\mathsfbfsl{i}" +}, + "𝙟": { + math: "\\mathsfbfsl{j}" +}, + "𝙠": { + math: "\\mathsfbfsl{k}" +}, + "𝙡": { + math: "\\mathsfbfsl{l}" +}, + "𝙢": { + math: "\\mathsfbfsl{m}" +}, + "𝙣": { + math: "\\mathsfbfsl{n}" +}, + "𝙤": { + math: "\\mathsfbfsl{o}" +}, + "𝙥": { + math: "\\mathsfbfsl{p}" +}, + "𝙦": { + math: "\\mathsfbfsl{q}" +}, + "𝙧": { + math: "\\mathsfbfsl{r}" +}, + "𝙨": { + math: "\\mathsfbfsl{s}" +}, + "𝙩": { + math: "\\mathsfbfsl{t}" +}, + "𝙪": { + math: "\\mathsfbfsl{u}" +}, + "𝙫": { + math: "\\mathsfbfsl{v}" +}, + "𝙬": { + math: "\\mathsfbfsl{w}" +}, + "𝙭": { + math: "\\mathsfbfsl{x}" +}, + "𝙮": { + math: "\\mathsfbfsl{y}" +}, + "𝙯": { + math: "\\mathsfbfsl{z}" +}, + "𝙰": { + math: "\\mathtt{A}" +}, + "𝙱": { + math: "\\mathtt{B}" +}, + "𝙲": { + math: "\\mathtt{C}" +}, + "𝙳": { + math: "\\mathtt{D}" +}, + "𝙴": { + math: "\\mathtt{E}" +}, + "𝙵": { + math: "\\mathtt{F}" +}, + "𝙶": { + math: "\\mathtt{G}" +}, + "𝙷": { + math: "\\mathtt{H}" +}, + "𝙸": { + math: "\\mathtt{I}" +}, + "𝙹": { + math: "\\mathtt{J}" +}, + "𝙺": { + math: "\\mathtt{K}" +}, + "𝙻": { + math: "\\mathtt{L}" +}, + "𝙼": { + math: "\\mathtt{M}" +}, + "𝙽": { + math: "\\mathtt{N}" +}, + "𝙾": { + math: "\\mathtt{O}" +}, + "𝙿": { + math: "\\mathtt{P}" +}, + "𝚀": { + math: "\\mathtt{Q}" +}, + "𝚁": { + math: "\\mathtt{R}" +}, + "𝚂": { + math: "\\mathtt{S}" +}, + "𝚃": { + math: "\\mathtt{T}" +}, + "𝚄": { + math: "\\mathtt{U}" +}, + "𝚅": { + math: "\\mathtt{V}" +}, + "𝚆": { + math: "\\mathtt{W}" +}, + "𝚇": { + math: "\\mathtt{X}" +}, + "𝚈": { + math: "\\mathtt{Y}" +}, + "𝚉": { + math: "\\mathtt{Z}" +}, + "𝚊": { + math: "\\mathtt{a}" +}, + "𝚋": { + math: "\\mathtt{b}" +}, + "𝚌": { + math: "\\mathtt{c}" +}, + "𝚍": { + math: "\\mathtt{d}" +}, + "𝚎": { + math: "\\mathtt{e}" +}, + "𝚏": { + math: "\\mathtt{f}" +}, + "𝚐": { + math: "\\mathtt{g}" +}, + "𝚑": { + math: "\\mathtt{h}" +}, + "𝚒": { + math: "\\mathtt{i}" +}, + "𝚓": { + math: "\\mathtt{j}" +}, + "𝚔": { + math: "\\mathtt{k}" +}, + "𝚕": { + math: "\\mathtt{l}" +}, + "𝚖": { + math: "\\mathtt{m}" +}, + "𝚗": { + math: "\\mathtt{n}" +}, + "𝚘": { + math: "\\mathtt{o}" +}, + "𝚙": { + math: "\\mathtt{p}" +}, + "𝚚": { + math: "\\mathtt{q}" +}, + "𝚛": { + math: "\\mathtt{r}" +}, + "𝚜": { + math: "\\mathtt{s}" +}, + "𝚝": { + math: "\\mathtt{t}" +}, + "𝚞": { + math: "\\mathtt{u}" +}, + "𝚟": { + math: "\\mathtt{v}" +}, + "𝚠": { + math: "\\mathtt{w}" +}, + "𝚡": { + math: "\\mathtt{x}" +}, + "𝚢": { + math: "\\mathtt{y}" +}, + "𝚣": { + math: "\\mathtt{z}" +}, + "𝚤": { + math: "\\imath" +}, + "𝚥": { + math: "\\jmath" +}, + "𝚨": { + math: "\\mathbf{A}" +}, + "𝚩": { + math: "\\mathbf{B}" +}, + "𝚪": { + math: "\\mathbf{\\Gamma}" +}, + "𝚫": { + math: "\\mathbf{\\Delta}" +}, + "𝚬": { + math: "\\mathbf{E}" +}, + "𝚭": { + math: "\\mathbf{Z}" +}, + "𝚮": { + math: "\\mathbf{H}" +}, + "𝚯": { + math: "\\mathbf{\\Theta}" +}, + "𝚰": { + math: "\\mathbf{I}" +}, + "𝚱": { + math: "\\mathbf{K}" +}, + "𝚲": { + math: "\\mathbf{\\Lambda}" +}, + "𝚳": { + math: "M" +}, + "𝚴": { + math: "N" +}, + "𝚵": { + math: "\\mathbf{\\Xi}" +}, + "𝚶": { + math: "O" +}, + "𝚷": { + math: "\\mathbf{\\Pi}" +}, + "𝚸": { + math: "\\mathbf{P}" +}, + "𝚹": { + math: "\\mathbf{\\vartheta}" +}, + "𝚺": { + math: "\\mathbf{\\Sigma}" +}, + "𝚻": { + math: "\\mathbf{T}" +}, + "𝚼": { + math: "\\mathbf{\\Upsilon}" +}, + "𝚽": { + math: "\\mathbf{\\Phi}" +}, + "𝚾": { + math: "\\mathbf{X}" +}, + "𝚿": { + math: "\\mathbf{\\Psi}" +}, + "𝛀": { + math: "\\mathbf{\\Omega}" +}, + "𝛁": { + math: "\\mathbf{\\nabla}" +}, + "𝛂": { + math: "\\mathbf{\\alpha}" +}, + "𝛃": { + math: "\\mathbf{\\beta}" +}, + "𝛄": { + math: "\\mathbf{\\gamma}" +}, + "𝛅": { + math: "\\mathbf{\\delta}" +}, + "𝛆": { + math: "\\mathbf{\\epsilon}" +}, + "𝛇": { + math: "\\mathbf{\\zeta}" +}, + "𝛈": { + math: "\\mathbf{\\eta}" +}, + "𝛉": { + math: "\\mathbf{\\theta}" +}, + "𝛊": { + math: "\\mathbf{I}" +}, + "𝛋": { + math: "\\mathbf{K}" +}, + "𝛌": { + math: "\\mathbf{\\lambda}" +}, + "𝛍": { + math: "M" +}, + "𝛎": { + math: "N" +}, + "𝛏": { + math: "\\mathbf{\\xi}" +}, + "𝛐": { + math: "O" +}, + "𝛑": { + math: "\\mathbf{\\pi}" +}, + "𝛒": { + math: "\\mathbf{P}" +}, + "𝛓": { + math: "\\mathbf{\\varsigma}" +}, + "𝛔": { + math: "\\mathbf{\\sigma}" +}, + "𝛕": { + math: "\\mathbf{T}" +}, + "𝛖": { + math: "\\mathbf{\\upsilon}" +}, + "𝛗": { + math: "\\mathbf{\\phi}" +}, + "𝛘": { + math: "\\mathbf{X}" +}, + "𝛙": { + math: "\\mathbf{\\psi}" +}, + "𝛚": { + math: "\\mathbf{\\omega}" +}, + "𝛛": { + math: "\\partial" +}, + "𝛜": { + math: "\\in" +}, + "𝛝": { + math: "\\mathbf{\\vartheta}" +}, + "𝛞": { + math: "\\mathbf{\\varkappa}" +}, + "𝛟": { + math: "\\mathbf{\\phi}" +}, + "𝛠": { + math: "\\mathbf{\\varrho}" +}, + "𝛡": { + math: "\\mathbf{\\varpi}" +}, + "𝛢": { + math: "\\mathsl{A}" +}, + "𝛣": { + math: "\\mathsl{B}" +}, + "𝛤": { + math: "\\mathsl{\\Gamma}" +}, + "𝛥": { + math: "\\mathsl{\\Delta}" +}, + "𝛦": { + math: "\\mathsl{E}" +}, + "𝛧": { + math: "\\mathsl{Z}" +}, + "𝛨": { + math: "\\mathsl{H}" +}, + "𝛩": { + math: "\\mathsl{\\Theta}" +}, + "𝛪": { + math: "\\mathsl{I}" +}, + "𝛫": { + math: "\\mathsl{K}" +}, + "𝛬": { + math: "\\mathsl{\\Lambda}" +}, + "𝛭": { + math: "M" +}, + "𝛮": { + math: "N" +}, + "𝛯": { + math: "\\mathsl{\\Xi}" +}, + "𝛰": { + math: "O" +}, + "𝛱": { + math: "\\mathsl{\\Pi}" +}, + "𝛲": { + math: "\\mathsl{P}" +}, + "𝛳": { + math: "\\mathsl{\\Theta}" +}, + "𝛴": { + math: "\\mathsl{\\Sigma}" +}, + "𝛵": { + math: "\\mathsl{T}" +}, + "𝛶": { + math: "\\mathsl{\\Upsilon}" +}, + "𝛷": { + math: "\\mathsl{\\Phi}" +}, + "𝛸": { + math: "\\mathsl{X}" +}, + "𝛹": { + math: "\\mathsl{\\Psi}" +}, + "𝛺": { + math: "\\mathsl{\\Omega}" +}, + "𝛻": { + math: "\\mathsl{\\nabla}" +}, + "𝛼": { + math: "\\mathsl{A}" +}, + "𝛽": { + math: "\\mathsl{B}" +}, + "𝛾": { + math: "\\mathsl{\\gamma}" +}, + "𝛿": { + math: "\\mathsl{\\delta}" +}, + "𝜀": { + math: "\\mathsl{E}" +}, + "𝜁": { + math: "\\mathsl{Z}" +}, + "𝜂": { + math: "\\mathsl{H}" +}, + "𝜃": { + math: "\\mathsl{\\theta}" +}, + "𝜄": { + math: "\\mathsl{I}" +}, + "𝜅": { + math: "\\mathsl{K}" +}, + "𝜆": { + math: "\\mathsl{\\lambda}" +}, + "𝜇": { + math: "\\mu" +}, + "𝜈": { + math: "\\nu" +}, + "𝜉": { + math: "\\mathsl{\\xi}" +}, + "𝜊": { + math: "o" +}, + "𝜋": { + math: "\\mathsl{\\pi}" +}, + "𝜌": { + math: "\\mathsl{P}" +}, + "𝜍": { + math: "\\mathsl{\\varsigma}" +}, + "𝜎": { + math: "\\mathsl{\\sigma}" +}, + "𝜏": { + math: "\\mathsl{T}" +}, + "𝜐": { + math: "\\mathsl{\\upsilon}" +}, + "𝜑": { + math: "\\mathsl{\\varphi}" +}, + "𝜒": { + math: "\\mathsl{X}" +}, + "𝜓": { + math: "\\mathsl{\\psi}" +}, + "𝜔": { + math: "\\mathsl{\\omega}" +}, + "𝜕": { + math: "\\partial" +}, + "𝜖": { + math: "\\in" +}, + "𝜗": { + math: "\\mathsl{\\vartheta}" +}, + "𝜘": { + math: "\\mathsl{\\varkappa}" +}, + "𝜙": { + math: "\\mathsl{\\phi}" +}, + "𝜚": { + math: "\\mathsl{\\varrho}" +}, + "𝜛": { + math: "\\mathsl{\\varpi}" +}, + "𝜜": { + math: "\\mathbit{A}" +}, + "𝜝": { + math: "\\mathbit{B}" +}, + "𝜞": { + math: "\\mathbit{\\Gamma}" +}, + "𝜟": { + math: "\\mathbit{\\Delta}" +}, + "𝜠": { + math: "\\mathbit{E}" +}, + "𝜡": { + math: "\\mathbit{Z}" +}, + "𝜢": { + math: "\\mathbit{H}" +}, + "𝜣": { + math: "\\mathbit{\\Theta}" +}, + "𝜤": { + math: "\\mathbit{I}" +}, + "𝜥": { + math: "\\mathbit{K}" +}, + "𝜦": { + math: "\\mathbit{\\Lambda}" +}, + "𝜧": { + math: "M" +}, + "𝜨": { + math: "N" +}, + "𝜩": { + math: "\\mathbit{\\Xi}" +}, + "𝜪": { + math: "O" +}, + "𝜫": { + math: "\\mathbit{\\Pi}" +}, + "𝜬": { + math: "\\mathbit{P}" +}, + "𝜭": { + math: "\\mathbit{O}" +}, + "𝜮": { + math: "\\mathbit{\\Sigma}" +}, + "𝜯": { + math: "\\mathbit{T}" +}, + "𝜰": { + math: "\\mathbit{\\Upsilon}" +}, + "𝜱": { + math: "\\mathbit{\\Phi}" +}, + "𝜲": { + math: "\\mathbit{X}" +}, + "𝜳": { + math: "\\mathbit{\\Psi}" +}, + "𝜴": { + math: "\\mathbit{\\Omega}" +}, + "𝜵": { + math: "\\mathbit{\\nabla}" +}, + "𝜶": { + math: "\\mathbit{\\alpha}" +}, + "𝜷": { + math: "\\mathbit{\\beta}" +}, + "𝜸": { + math: "\\mathbit{\\gamma}" +}, + "𝜹": { + math: "\\mathbit{\\delta}" +}, + "𝜺": { + math: "\\mathbit{\\epsilon}" +}, + "𝜻": { + math: "\\mathbit{\\zeta}" +}, + "𝜼": { + math: "\\mathbit{\\eta}" +}, + "𝜽": { + math: "\\mathbit{\\theta}" +}, + "𝜾": { + math: "\\mathbit{\\imath}" +}, + "𝜿": { + math: "\\mathbit{\\kappa}" +}, + "𝝀": { + math: "\\mathbit{\\lambda}" +}, + "𝝁": { + math: "\\mu" +}, + "𝝂": { + math: "N" +}, + "𝝃": { + math: "\\mathbit{\\xi}" +}, + "𝝄": { + math: "O" +}, + "𝝅": { + math: "\\mathbit{\\pi}" +}, + "𝝆": { + math: "\\mathbit{\\rho}" +}, + "𝝇": { + math: "\\mathbit{\\varsigma}" +}, + "𝝈": { + math: "\\mathbit{\\sigma}" +}, + "𝝉": { + math: "\\mathbit{\\tau}" +}, + "𝝊": { + math: "\\mathbit{\\upsilon}" +}, + "𝝋": { + math: "\\mathbit{\\varphi}" +}, + "𝝌": { + math: "\\mathbit{\\chi}" +}, + "𝝍": { + math: "\\mathbit{\\psi}" +}, + "𝝎": { + math: "\\mathbit{\\omega}" +}, + "𝝏": { + math: "\\partial" +}, + "𝝐": { + math: "\\in" +}, + "𝝑": { + math: "\\mathbit{\\vartheta}" +}, + "𝝒": { + math: "\\mathbit{\\varkappa}" +}, + "𝝓": { + math: "\\mathbit{\\phi}" +}, + "𝝔": { + math: "\\mathbit{\\varrho}" +}, + "𝝕": { + math: "\\mathbit{\\varpi}" +}, + "𝝖": { + math: "\\mathsfbf{A}" +}, + "𝝗": { + math: "\\mathsfbf{B}" +}, + "𝝘": { + math: "\\mathsfbf{\\Gamma}" +}, + "𝝙": { + math: "\\mathsfbf{\\Delta}" +}, + "𝝚": { + math: "\\mathsfbf{E}" +}, + "𝝛": { + math: "\\mathsfbf{Z}" +}, + "𝝜": { + math: "\\mathsfbf{H}" +}, + "𝝝": { + math: "\\mathsfbf{\\Theta}" +}, + "𝝞": { + math: "\\mathsfbf{I}" +}, + "𝝟": { + math: "\\mathsfbf{K}" +}, + "𝝠": { + math: "\\mathsfbf{\\Lambda}" +}, + "𝝡": { + math: "M" +}, + "𝝢": { + math: "N" +}, + "𝝣": { + math: "\\mathsfbf{\\Xi}" +}, + "𝝤": { + math: "O" +}, + "𝝥": { + math: "\\mathsfbf{\\Pi}" +}, + "𝝦": { + math: "\\mathsfbf{P}" +}, + "𝝧": { + math: "\\mathsfbf{\\Theta}" +}, + "𝝨": { + math: "\\mathsfbf{\\Sigma}" +}, + "𝝩": { + math: "\\mathsfbf{T}" +}, + "𝝪": { + math: "\\mathsfbf{\\Upsilon}" +}, + "𝝫": { + math: "\\mathsfbf{\\Phi}" +}, + "𝝬": { + math: "\\mathsfbf{X}" +}, + "𝝭": { + math: "\\mathsfbf{\\Psi}" +}, + "𝝮": { + math: "\\mathsfbf{\\Omega}" +}, + "𝝯": { + math: "\\mathsfbf{\\nabla}" +}, + "𝝰": { + math: "\\mathsfbf{\\alpha}" +}, + "𝝱": { + math: "\\mathsfbf{\\beta}" +}, + "𝝲": { + math: "\\mathsfbf{\\gamma}" +}, + "𝝳": { + math: "\\mathsfbf{\\delta}" +}, + "𝝴": { + math: "\\mathsfbf{\\varepsilon}" +}, + "𝝵": { + math: "\\mathsfbf{\\zeta}" +}, + "𝝶": { + math: "\\mathsfbf{\\eta}" +}, + "𝝷": { + math: "\\mathsfbf{\\theta}" +}, + "𝝸": { + math: "\\mathsfbf{\\imath}" +}, + "𝝹": { + math: "\\mathsfbf{\\kappa}" +}, + "𝝺": { + math: "\\mathsfbf{\\lambda}" +}, + "𝝻": { + math: "\\mu" +}, + "𝝼": { + math: "\\nu" +}, + "𝝽": { + math: "\\mathsfbf{\\xi}" +}, + "𝝾": { + math: "o" +}, + "𝝿": { + math: "\\mathsfbf{\\pi}" +}, + "𝞀": { + math: "\\mathsfbf{\\rho}" +}, + "𝞁": { + math: "\\mathsfbf{\\varsigma}" +}, + "𝞂": { + math: "\\mathsfbf{\\sigma}" +}, + "𝞃": { + math: "\\mathsfbf{\\tau}" +}, + "𝞄": { + math: "\\mathsfbf{\\upsilon}" +}, + "𝞅": { + math: "\\mathsfbf{\\varphi}" +}, + "𝞆": { + math: "\\mathsfbf{\\chi}" +}, + "𝞇": { + math: "\\mathsfbf{\\psi}" +}, + "𝞈": { + math: "\\mathsfbf{\\omega}" +}, + "𝞉": { + math: "\\partial" +}, + "𝞊": { + math: "\\in" +}, + "𝞋": { + math: "\\mathsfbf{\\vartheta}" +}, + "𝞌": { + math: "\\mathsfbf{\\varkappa}" +}, + "𝞍": { + math: "\\mathsfbf{\\phi}" +}, + "𝞎": { + math: "\\mathsfbf{\\varrho}" +}, + "𝞏": { + math: "\\mathsfbf{\\varpi}" +}, + "𝞐": { + math: "\\mathsfbfsl{A}" +}, + "𝞑": { + math: "\\mathsfbfsl{B}" +}, + "𝞒": { + math: "\\mathsfbfsl{\\Gamma}" +}, + "𝞓": { + math: "\\mathsfbfsl{\\Delta}" +}, + "𝞔": { + math: "\\mathsfbfsl{E}" +}, + "𝞕": { + math: "\\mathsfbfsl{Z}" +}, + "𝞖": { + math: "\\mathsfbfsl{H}" +}, + "𝞗": { + math: "\\mathsfbfsl{\\Theta}" +}, + "𝞘": { + math: "\\mathsfbfsl{I}" +}, + "𝞙": { + math: "\\mathsfbfsl{K}" +}, + "𝞚": { + math: "\\mathsfbfsl{\\Lambda}" +}, + "𝞛": { + math: "\\mathsfbfsl{M}" +}, + "𝞜": { + math: "\\mathsfbfsl{N}" +}, + "𝞝": { + math: "\\mathsfbfsl{\\Xi}" +}, + "𝞞": { + math: "\\mathsfbfsl{O}" +}, + "𝞟": { + math: "\\mathsfbfsl{\\Pi}" +}, + "𝞠": { + math: "\\mathsfbfsl{P}" +}, + "𝞡": { + math: "\\mathsfbfsl{\\Theta}" +}, + "𝞢": { + math: "\\mathsfbfsl{\\Sigma}" +}, + "𝞣": { + math: "\\mathsfbfsl{T}" +}, + "𝞤": { + math: "\\mathsfbfsl{\\Upsilon}" +}, + "𝞥": { + math: "\\mathsfbfsl{\\Phi}" +}, + "𝞦": { + math: "\\mathsfbfsl{X}" +}, + "𝞧": { + math: "\\mathsfbfsl{\\Psi}" +}, + "𝞨": { + math: "\\mathsfbfsl{\\Omega}" +}, + "𝞩": { + math: "\\mathsfbfsl{\\nabla}" +}, + "𝞪": { + math: "\\mathsfbfsl{\\alpha}" +}, + "𝞫": { + math: "\\mathsfbfsl{\\beta}" +}, + "𝞬": { + math: "\\mathsfbfsl{\\gamma}" +}, + "𝞭": { + math: "\\mathsfbfsl{\\delta}" +}, + "𝞮": { + math: "\\mathsfbfsl{\\varepsilon}" +}, + "𝞯": { + math: "\\mathsfbfsl{\\zeta}" +}, + "𝞰": { + math: "\\mathsfbfsl{\\eta}" +}, + "𝞱": { + math: "\\mathsfbfsl{\\theta}" +}, + "𝞲": { + math: "\\mathsfbfsl{\\imath}" +}, + "𝞳": { + math: "\\mathsfbfsl{\\kappa}" +}, + "𝞴": { + math: "\\mathsfbfsl{\\lambda}" +}, + "𝞵": { + math: "\\mu" +}, + "𝞶": { + math: "\\nu" +}, + "𝞷": { + math: "\\mathsfbfsl{\\xi}" +}, + "𝞸": { + math: "o" +}, + "𝞹": { + math: "\\mathsfbfsl{\\pi}" +}, + "𝞺": { + math: "\\mathsfbfsl{\\rho}" +}, + "𝞻": { + math: "\\mathsfbfsl{\\varsigma}" +}, + "𝞼": { + math: "\\mathsfbfsl{\\sigma}" +}, + "𝞽": { + math: "\\mathsfbfsl{\\tau}" +}, + "𝞾": { + math: "\\mathsfbfsl{\\upsilon}" +}, + "𝞿": { + math: "\\mathsfbfsl{\\varphi}" +}, + "𝟀": { + math: "\\mathsfbfsl{\\chi}" +}, + "𝟁": { + math: "\\mathsfbfsl{\\psi}" +}, + "𝟂": { + math: "\\mathsfbfsl{\\omega}" +}, + "𝟃": { + math: "\\partial" +}, + "𝟄": { + math: "\\in" +}, + "𝟅": { + math: "\\mathsfbfsl{\\vartheta}" +}, + "𝟆": { + math: "\\mathsfbfsl{\\varkappa}" +}, + "𝟇": { + math: "\\mathsfbfsl{\\phi}" +}, + "𝟈": { + math: "\\mathsfbfsl{\\varrho}" +}, + "𝟉": { + math: "\\mathsfbfsl{\\varpi}" +}, + "𝟊": { + math: "\\mbfDigamma" +}, + "𝟋": { + math: "\\mbfdigamma" +}, + "𝟎": { + math: "\\mathbf{0}" +}, + "𝟏": { + math: "\\mathbf{1}" +}, + "𝟐": { + math: "\\mathbf{2}" +}, + "𝟑": { + math: "\\mathbf{3}" +}, + "𝟒": { + math: "\\mathbf{4}" +}, + "𝟓": { + math: "\\mathbf{5}" +}, + "𝟔": { + math: "\\mathbf{6}" +}, + "𝟕": { + math: "\\mathbf{7}" +}, + "𝟖": { + math: "\\mathbf{8}" +}, + "𝟗": { + math: "\\mathbf{9}" +}, + "𝟘": { + math: "\\mathbb{0}" +}, + "𝟙": { + math: "\\mathbb{1}" +}, + "𝟚": { + math: "\\mathbb{2}" +}, + "𝟛": { + math: "\\mathbb{3}" +}, + "𝟜": { + math: "\\mathbb{4}" +}, + "𝟝": { + math: "\\mathbb{5}" +}, + "𝟞": { + math: "\\mathbb{6}" +}, + "𝟟": { + math: "\\mathbb{7}" +}, + "𝟠": { + math: "\\mathbb{8}" +}, + "𝟡": { + math: "\\mathbb{9}" +}, + "𝟢": { + math: "\\mathsf{0}" +}, + "𝟣": { + math: "\\mathsf{1}" +}, + "𝟤": { + math: "\\mathsf{2}" +}, + "𝟥": { + math: "\\mathsf{3}" +}, + "𝟦": { + math: "\\mathsf{4}" +}, + "𝟧": { + math: "\\mathsf{5}" +}, + "𝟨": { + math: "\\mathsf{6}" +}, + "𝟩": { + math: "\\mathsf{7}" +}, + "𝟪": { + math: "\\mathsf{8}" +}, + "𝟫": { + math: "\\mathsf{9}" +}, + "𝟬": { + math: "\\mathsfbf{0}" +}, + "𝟭": { + math: "\\mathsfbf{1}" +}, + "𝟮": { + math: "\\mathsfbf{2}" +}, + "𝟯": { + math: "\\mathsfbf{3}" +}, + "𝟰": { + math: "\\mathsfbf{4}" +}, + "𝟱": { + math: "\\mathsfbf{5}" +}, + "𝟲": { + math: "\\mathsfbf{6}" +}, + "𝟳": { + math: "\\mathsfbf{7}" +}, + "𝟴": { + math: "\\mathsfbf{8}" +}, + "𝟵": { + math: "\\mathsfbf{9}" +}, + "𝟶": { + math: "\\mathtt{0}" +}, + "𝟷": { + math: "\\mathtt{1}" +}, + "𝟸": { + math: "\\mathtt{2}" +}, + "𝟹": { + math: "\\mathtt{3}" +}, + "𝟺": { + math: "\\mathtt{4}" +}, + "𝟻": { + math: "\\mathtt{5}" +}, + "𝟼": { + math: "\\mathtt{6}" +}, + "𝟽": { + math: "\\mathtt{7}" +}, + "𝟾": { + math: "\\mathtt{8}" +}, + "𝟿": { + math: "\\mathtt{9}" +} +}; + +var $$1 = { + math: "\\$", + text: "\\$" +}; +var _$1 = { + math: "\\_", + text: "\\_" +}; +var require$$1 = { + "#": { + math: "\\#", + text: "\\#" +}, + $: $$1, + "%": { + math: "\\%", + text: "\\%" +}, + "&": { + math: "\\&", + text: "\\&" +}, + "/​": { + text: "{\\slash}" +}, + "<": { + math: "<" +}, + ">": { + math: ">" +}, + "\\": { + math: "\\backslash", + text: "{\\textbackslash}" +}, + "^": { + math: "\\sphat", + text: "\\^" +}, + _: _$1, + "i︠a︡": { + text: "\\t{ia}" +}, + "{": { + math: "\\lbrace", + text: "\\{" +}, + "}": { + math: "\\rbrace", + text: "\\}" +}, + "~": { + math: "\\sptilde", + text: "{\\textasciitilde}" +}, + " ": { + math: "~", + space: true, + text: "~" +}, + "¡": { + text: "{\\textexclamdown}" +}, + "¢": { + math: "\\cent", + text: "{\\textcent}", + textpackages: [ + "textcomp" + ] +}, + "£": { + math: "\\pounds", + text: "{\\textsterling}", + textpackages: [ + "textcomp" + ] +}, + "¤": { + text: "{\\textcurrency}", + textpackages: [ + "textcomp" + ] +}, + "¥": { + math: "\\yen", + text: "{\\textyen}", + textpackages: [ + "textcomp" + ] +}, + "¦": { + text: "{\\textbrokenbar}", + textpackages: [ + "textcomp" + ] +}, + "§": { + text: "{\\textsection}", + textpackages: [ + "textcomp" + ] +}, + "¨": { + math: "\\spddot", + text: "{\\textasciidieresis}" +}, + "©": { + text: "{\\textcopyright}", + textpackages: [ + "textcomp" + ] +}, + "ª": { + text: "{\\textordfeminine}", + textpackages: [ + "textcomp" + ] +}, + "«": { + text: "{\\guillemotleft}" +}, + "¬": { + math: "\\lnot" +}, + "­": { + math: "\\-", + text: "\\-" +}, + "®": { + math: "\\circledR", + text: "{\\textregistered}", + textpackages: [ + "textcomp" + ] +}, + "¯": { + text: "{\\textasciimacron}" +}, + "°": { + math: "^\\circ", + text: "{\\textdegree}", + textpackages: [ + "textcomp" + ] +}, + "±": { + math: "\\pm" +}, + "²": { + math: "^{2}" +}, + "³": { + math: "^{3}" +}, + "´": { + text: "{\\textasciiacute}" +}, + "µ": { + text: "{\\textmu}" +}, + "¶": { + text: "{\\textparagraph}", + textpackages: [ + "textcomp" + ] +}, + "·": { + math: "\\cdot" +}, + "¸": { + text: "{\\c}" +}, + "¹": { + math: "^{1}" +}, + "º": { + text: "{\\textordmasculine}", + textpackages: [ + "textcomp" + ] +}, + "»": { + text: "{\\guillemotright}" +}, + "¼": { + math: "\\frac{1}{4}" +}, + "½": { + math: "\\frac{1}{2}" +}, + "¾": { + math: "\\frac{3}{4}" +}, + "¿": { + text: "{\\textquestiondown}" +}, + "À": { + text: "{\\`A}" +}, + "Á": { + text: "{\\'A}" +}, + "Â": { + text: "{\\^A}" +}, + "Ã": { + text: "{\\~A}" +}, + "Ä": { + text: "{\\\"A}" +}, + "Å": { + text: "{\\AA}" +}, + "Æ": { + text: "{\\AE}" +}, + "Ç": { + text: "{\\c C}" +}, + "È": { + text: "{\\`E}" +}, + "É": { + text: "{\\'E}" +}, + "Ê": { + text: "{\\^E}" +}, + "Ë": { + text: "{\\\"E}" +}, + "Ì": { + text: "{\\`I}" +}, + "Í": { + text: "{\\'I}" +}, + "Î": { + text: "{\\^I}" +}, + "Ï": { + text: "{\\\"I}" +}, + "Ð": { + text: "{\\DH}" +}, + "Ñ": { + text: "{\\~N}" +}, + "Ò": { + text: "{\\`O}" +}, + "Ó": { + text: "{\\'O}" +}, + "Ô": { + text: "{\\^O}" +}, + "Õ": { + text: "{\\~O}" +}, + "Ö": { + text: "{\\\"O}" +}, + "×": { + math: "\\times", + text: "{\\texttimes}" +}, + "Ø": { + text: "{\\O}" +}, + "Ù": { + text: "{\\`U}" +}, + "Ú": { + text: "{\\'U}" +}, + "Û": { + text: "{\\^U}" +}, + "Ü": { + text: "{\\\"U}" +}, + "Ý": { + text: "{\\'Y}" +}, + "Þ": { + text: "{\\TH}" +}, + "ß": { + text: "{\\ss}" +}, + "à": { + text: "{\\`a}" +}, + "á": { + text: "{\\'a}" +}, + "â": { + text: "{\\^a}" +}, + "ã": { + text: "{\\~a}" +}, + "ä": { + text: "{\\\"a}" +}, + "å": { + text: "{\\aa}" +}, + "æ": { + text: "{\\ae}" +}, + "ç": { + text: "{\\c c}" +}, + "è": { + text: "{\\`e}" +}, + "é": { + text: "{\\'e}" +}, + "ê": { + text: "{\\^e}" +}, + "ë": { + text: "{\\\"e}" +}, + "ì": { + text: "{\\`i}" +}, + "í": { + text: "{\\'i}" +}, + "î": { + text: "{\\^i}" +}, + "ï": { + text: "{\\\"i}" +}, + "ð": { + math: "\\eth", + mathpackages: [ + "amssymb", + "arevmath" + ], + text: "{\\dh}" +}, + "ñ": { + text: "{\\~n}" +}, + "ò": { + text: "{\\`o}" +}, + "ó": { + text: "{\\'o}" +}, + "ô": { + text: "{\\^o}" +}, + "õ": { + text: "{\\~o}" +}, + "ö": { + text: "{\\\"o}" +}, + "÷": { + math: "\\div" +}, + "ø": { + text: "{\\o}" +}, + "ù": { + text: "{\\`u}" +}, + "ú": { + text: "{\\'u}" +}, + "û": { + text: "{\\^u}" +}, + "ü": { + text: "{\\\"u}" +}, + "ý": { + text: "{\\'y}" +}, + "þ": { + text: "{\\th}" +}, + "ÿ": { + text: "{\\\"y}" +}, + "Ā": { + text: "{\\=A}" +}, + "ā": { + text: "{\\=a}" +}, + "Ă": { + text: "{\\u A}" +}, + "ă": { + text: "{\\u a}" +}, + "Ą": { + text: "{\\k{A}}" +}, + "ą": { + text: "{\\k{a}}" +}, + "Ć": { + text: "{\\'C}" +}, + "ć": { + text: "{\\'c}" +}, + "Ĉ": { + text: "{\\^C}" +}, + "ĉ": { + text: "{\\^c}" +}, + "Ċ": { + text: "{\\.C}" +}, + "ċ": { + text: "{\\.c}" +}, + "Č": { + text: "{\\v C}" +}, + "č": { + text: "{\\v c}" +}, + "Ď": { + text: "{\\v D}" +}, + "ď": { + text: "{\\v d}" +}, + "Đ": { + text: "{\\DJ}" +}, + "đ": { + text: "{\\dj}" +}, + "Ē": { + text: "{\\=E}" +}, + "ē": { + text: "{\\=e}" +}, + "Ĕ": { + text: "{\\u E}" +}, + "ĕ": { + text: "{\\u e}" +}, + "Ė": { + text: "{\\.E}" +}, + "ė": { + text: "{\\.e}" +}, + "Ę": { + text: "{\\k{E}}" +}, + "ę": { + text: "{\\k{e}}" +}, + "Ě": { + text: "{\\v E}" +}, + "ě": { + text: "{\\v e}" +}, + "Ĝ": { + text: "{\\^G}" +}, + "ĝ": { + text: "{\\^g}" +}, + "Ğ": { + text: "{\\u G}" +}, + "ğ": { + text: "{\\u g}" +}, + "Ġ": { + text: "{\\.G}" +}, + "ġ": { + text: "{\\.g}" +}, + "Ģ": { + text: "{\\c G}" +}, + "ģ": { + text: "{\\c g}" +}, + "Ĥ": { + text: "{\\^H}" +}, + "ĥ": { + text: "{\\^h}" +}, + "Ħ": { + text: "{\\fontencoding{LELA}\\selectfont\\char40}" +}, + "ħ": { + math: "\\Elzxh" +}, + "Ĩ": { + text: "{\\~I}" +}, + "ĩ": { + text: "{\\~i}" +}, + "Ī": { + text: "{\\=I}" +}, + "ī": { + text: "{\\=i}" +}, + "Ĭ": { + text: "{\\u I}" +}, + "ĭ": { + text: "{\\u \\i}" +}, + "Į": { + text: "{\\k{I}}" +}, + "į": { + text: "{\\k{i}}" +}, + "İ": { + text: "{\\.I}" +}, + "ı": { + math: "\\imath", + text: "{\\i}" +}, + "IJ": { + text: "IJ" +}, + "ij": { + text: "ij" +}, + "Ĵ": { + text: "{\\^J}" +}, + "ĵ": { + text: "{\\^\\j}" +}, + "Ķ": { + text: "{\\c K}" +}, + "ķ": { + text: "{\\c k}" +}, + "ĸ": { + text: "{\\fontencoding{LELA}\\selectfont\\char91}" +}, + "Ĺ": { + text: "{\\'L}" +}, + "ĺ": { + text: "{\\'l}" +}, + "Ļ": { + text: "{\\c L}" +}, + "ļ": { + text: "{\\c l}" +}, + "Ľ": { + text: "{\\v L}" +}, + "ľ": { + text: "{\\v l}" +}, + "Ŀ": { + text: "{\\fontencoding{LELA}\\selectfont\\char201}" +}, + "ŀ": { + text: "{\\fontencoding{LELA}\\selectfont\\char202}" +}, + "Ł": { + text: "{\\L}" +}, + "ł": { + text: "{\\l}" +}, + "Ń": { + text: "{\\'N}" +}, + "ń": { + text: "{\\'n}" +}, + "Ņ": { + text: "{\\c N}" +}, + "ņ": { + text: "{\\c n}" +}, + "Ň": { + text: "{\\v N}" +}, + "ň": { + text: "{\\v n}" +}, + "ʼn": { + text: "'n" +}, + "Ŋ": { + text: "{\\NG}" +}, + "ŋ": { + text: "{\\ng}" +}, + "Ō": { + text: "{\\=O}" +}, + "ō": { + text: "{\\=o}" +}, + "Ŏ": { + text: "{\\u O}" +}, + "ŏ": { + text: "{\\u o}" +}, + "Ő": { + text: "{\\H O}" +}, + "ő": { + text: "{\\H o}" +}, + "Œ": { + text: "{\\OE}" +}, + "œ": { + text: "{\\oe}" +}, + "Ŕ": { + text: "{\\'R}" +}, + "ŕ": { + text: "{\\'r}" +}, + "Ŗ": { + text: "{\\c R}" +}, + "ŗ": { + text: "{\\c r}" +}, + "Ř": { + text: "{\\v R}" +}, + "ř": { + text: "{\\v r}" +}, + "Ś": { + text: "{\\'S}" +}, + "ś": { + text: "{\\'s}" +}, + "Ŝ": { + text: "{\\^S}" +}, + "ŝ": { + text: "{\\^s}" +}, + "Ş": { + text: "{\\c S}" +}, + "ş": { + text: "{\\c s}" +}, + "Š": { + text: "{\\v S}" +}, + "š": { + text: "{\\v s}" +}, + "Ţ": { + text: "{\\c T}" +}, + "ţ": { + text: "{\\c t}" +}, + "Ť": { + text: "{\\v T}" +}, + "ť": { + text: "{\\v t}" +}, + "Ŧ": { + text: "{\\fontencoding{LELA}\\selectfont\\char47}" +}, + "ŧ": { + text: "{\\fontencoding{LELA}\\selectfont\\char63}" +}, + "Ũ": { + text: "{\\~U}" +}, + "ũ": { + text: "{\\~u}" +}, + "Ū": { + text: "{\\=U}" +}, + "ū": { + text: "{\\=u}" +}, + "Ŭ": { + text: "{\\u U}" +}, + "ŭ": { + text: "{\\u u}" +}, + "Ů": { + text: "{\\r{U}}" +}, + "ů": { + text: "{\\r{u}}" +}, + "Ű": { + text: "{\\H U}" +}, + "ű": { + text: "{\\H u}" +}, + "Ų": { + text: "{\\k{U}}" +}, + "ų": { + text: "{\\k{u}}" +}, + "Ŵ": { + text: "{\\^W}" +}, + "ŵ": { + text: "{\\^w}" +}, + "Ŷ": { + text: "{\\^Y}" +}, + "ŷ": { + text: "{\\^y}" +}, + "Ÿ": { + text: "{\\\"Y}" +}, + "Ź": { + text: "{\\'Z}" +}, + "ź": { + text: "{\\'z}" +}, + "Ż": { + text: "{\\.Z}" +}, + "ż": { + text: "{\\.z}" +}, + "Ž": { + text: "{\\v Z}" +}, + "ž": { + text: "{\\v z}" +}, + "ſ": { + text: "s" +}, + "ƒ": { + math: "f" +}, + "ƕ": { + text: "{\\texthvlig}" +}, + "ƞ": { + text: "{\\textnrleg}" +}, + "ƪ": { + text: "{\\textesh}" +}, + "Ƶ": { + math: "\\Zbar" +}, + "ƺ": { + text: "{\\fontencoding{LELA}\\selectfont\\char195}" +}, + "ǂ": { + text: "{\\textdoublepipe}" +}, + "Ǎ": { + text: "{\\v A}" +}, + "ǎ": { + text: "{\\v a}" +}, + "Ǐ": { + text: "{\\v I}" +}, + "ǐ": { + text: "{\\v i}" +}, + "Ǒ": { + text: "{\\v O}" +}, + "ǒ": { + text: "{\\v o}" +}, + "Ǔ": { + text: "{\\v U}" +}, + "ǔ": { + text: "{\\v u}" +}, + "Ǧ": { + text: "{\\v G}" +}, + "ǧ": { + text: "{\\v g}" +}, + "Ǩ": { + text: "{\\v K}" +}, + "ǩ": { + text: "{\\v k}" +}, + "Ǫ": { + text: "{\\k{O}}" +}, + "ǫ": { + text: "{\\k{o}}" +}, + "ǰ": { + text: "{\\v j}" +}, + "Ǵ": { + text: "{\\'G}" +}, + "ǵ": { + text: "{\\'g}" +}, + "Ȩ": { + text: "{\\c E}" +}, + "ȩ": { + text: "{\\c e}" +}, + "ȷ": { + math: "\\jmath" +}, + "ɐ": { + math: "\\Elztrna" +}, + "ɒ": { + math: "\\Elztrnsa" +}, + "ɔ": { + math: "\\Elzopeno" +}, + "ɖ": { + math: "\\Elzrtld" +}, + "ɘ": { + text: "{\\fontencoding{LEIP}\\selectfont\\char61}" +}, + "ə": { + math: "\\Elzschwa" +}, + "ɛ": { + math: "\\varepsilon" +}, + "ɡ": { + text: "g" +}, + "ɣ": { + math: "\\Elzpgamma" +}, + "ɤ": { + math: "\\Elzpbgam" +}, + "ɥ": { + math: "\\Elztrnh" +}, + "ɬ": { + math: "\\Elzbtdl" +}, + "ɭ": { + math: "\\Elzrtll" +}, + "ɯ": { + math: "\\Elztrnm" +}, + "ɰ": { + math: "\\Elztrnmlr" +}, + "ɱ": { + math: "\\Elzltlmr" +}, + "ɲ": { + text: "{\\Elzltln}" +}, + "ɳ": { + math: "\\Elzrtln" +}, + "ɷ": { + math: "\\Elzclomeg" +}, + "ɸ": { + text: "{\\textphi}" +}, + "ɹ": { + math: "\\Elztrnr" +}, + "ɺ": { + math: "\\Elztrnrl" +}, + "ɻ": { + math: "\\Elzrttrnr" +}, + "ɼ": { + math: "\\Elzrl" +}, + "ɽ": { + math: "\\Elzrtlr" +}, + "ɾ": { + math: "\\Elzfhr" +}, + "ɿ": { + text: "{\\fontencoding{LEIP}\\selectfont\\char202}" +}, + "ʂ": { + math: "\\Elzrtls" +}, + "ʃ": { + math: "\\Elzesh" +}, + "ʇ": { + math: "\\Elztrnt" +}, + "ʈ": { + math: "\\Elzrtlt" +}, + "ʊ": { + math: "\\Elzpupsil" +}, + "ʋ": { + math: "\\Elzpscrv" +}, + "ʌ": { + math: "\\Elzinvv" +}, + "ʍ": { + math: "\\Elzinvw" +}, + "ʎ": { + math: "\\Elztrny" +}, + "ʐ": { + math: "\\Elzrtlz" +}, + "ʒ": { + math: "\\Elzyogh" +}, + "ʔ": { + math: "\\Elzglst" +}, + "ʕ": { + math: "\\Elzreglst" +}, + "ʖ": { + math: "\\Elzinglst" +}, + "ʞ": { + text: "{\\textturnk}" +}, + "ʤ": { + math: "\\Elzdyogh" +}, + "ʧ": { + math: "\\Elztesh" +}, + "ʰ": { + math: "^{h}", + text: "\\textsuperscript{h}" +}, + "ʲ": { + math: "^{j}", + text: "\\textsuperscript{j}" +}, + "ʳ": { + math: "^{r}", + text: "\\textsuperscript{r}" +}, + "ʷ": { + math: "^{w}", + text: "\\textsuperscript{w}" +}, + "ʸ": { + math: "^{y}", + text: "\\textsuperscript{y}" +}, + "ʹ": { + text: "'" +}, + "ʻ": { + text: "'" +}, + "ʼ": { + text: "'" +}, + "ʽ": { + text: "'" +}, + "ʿ": { + text: "{\\lasp}", + textpackages: [ + "mathscinet" + ] +}, + "ˆ": { + text: "{\\textasciicircum}" +}, + "ˇ": { + text: "{\\textasciicaron}" +}, + "ˈ": { + math: "\\Elzverts" +}, + "ˉ": { + text: "-" +}, + "ˌ": { + math: "\\Elzverti" +}, + "ː": { + math: "\\Elzlmrk" +}, + "ˑ": { + math: "\\Elzhlmrk" +}, + "˒": { + math: "\\Elzsbrhr" +}, + "˓": { + math: "\\Elzsblhr" +}, + "˔": { + math: "\\Elzrais" +}, + "˕": { + math: "\\Elzlow" +}, + "˘": { + text: "{\\textasciibreve}" +}, + "˙": { + text: "{\\textperiodcentered}", + textpackages: [ + "textcomp" + ] +}, + "˚": { + text: "{\\r{}}" +}, + "˛": { + text: "{\\k{}}" +}, + "˜": { + text: "{\\texttildelow}" +}, + "˝": { + text: "{\\H{}}" +}, + "ˡ": { + math: "^{l}", + text: "\\textsuperscript{l}" +}, + "ˢ": { + math: "^{s}", + text: "\\textsuperscript{s}" +}, + "ˣ": { + math: "^{x}", + text: "\\textsuperscript{x}" +}, + "˥": { + text: "\\tone{55}" +}, + "˦": { + text: "\\tone{44}" +}, + "˧": { + text: "\\tone{33}" +}, + "˨": { + text: "\\tone{22}" +}, + "˩": { + text: "\\tone{11}" +}, + "̀": { + math: "\\grave", + combiningdiacritic: true, + text: "\\`" +}, + "̀̄": { + text: "{\\textgravemacron}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̄̀": { + text: "{\\textgravemacron}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̀̇": { + text: "{\\textgravedot}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̇̀": { + text: "{\\textgravedot}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "́": { + math: "\\acute", + combiningdiacritic: true, + text: "\\'" +}, + "́̄": { + text: "{\\textacutemacron}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̄́": { + text: "{\\textacutemacron}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "́̌": { + text: "{\\textacutewedge}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̌́": { + text: "{\\textacutewedge}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̂": { + math: "\\hat", + combiningdiacritic: true, + text: "\\^" +}, + "̂̇": { + text: "{\\textcircumdot}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̇̂": { + text: "{\\textcircumdot}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̃": { + math: "\\tilde", + combiningdiacritic: true, + text: "\\~" +}, + "̃̇": { + text: "{\\texttildedot}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̇̃": { + text: "{\\texttildedot}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̄": { + math: "\\bar", + combiningdiacritic: true, + text: "\\=" +}, + "̅": { + math: "\\overline", + combiningdiacritic: true +}, + "̆": { + math: "\\breve", + combiningdiacritic: true, + text: "{\\u}" +}, + "̆̄": { + text: "{\\textbrevemacron}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̄̆": { + text: "{\\textbrevemacron}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̇": { + math: "\\dot", + combiningdiacritic: true, + text: "\\." +}, + "̇́": { + text: "{\\textdotacute}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "́̇": { + text: "{\\textdotacute}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̇̆": { + text: "{\\textdotbreve}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̆̇": { + text: "{\\textdotbreve}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̈": { + math: "\\ddot", + combiningdiacritic: true, + text: "\\\"" +}, + "̉": { + math: "\\ovhook" +}, + "̊": { + math: "\\mathring", + combiningdiacritic: true, + text: "{\\r}" +}, + "̊̄": { + text: "{\\textringmacron}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̄̊": { + text: "{\\textringmacron}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̋": { + text: "{\\H}", + combiningdiacritic: true +}, + "̌": { + math: "\\check", + text: "{\\v}", + combiningdiacritic: true +}, + "̍": { + text: "{\\textvbaraccent}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̎": { + text: "{\\textdoublevbaraccent}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̏": { + text: "{\\textdoublegrave}", + combiningdiacritic: true +}, + "̐": { + text: "{\\textdotbreve}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̑": { + text: "{\\fontencoding{LECO}\\selectfont\\char177}" +}, + "̒": { + math: "\\oturnedcomma" +}, + "̕": { + math: "\\ocommatopright" +}, + "̖": { + text: "{\\textsubgrave}", + combiningdiacritic: true +}, + "̘": { + text: "{\\textadvancing}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̙": { + text: "{\\textretracting}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̚": { + math: "\\droang", + text: "{\\textcorner}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̜": { + text: "{\\textsublhalfring}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̝": { + text: "{\\textraising}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̞": { + text: "{\\textlowering}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̟": { + text: "{\\textsubplus}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̡": { + math: "\\Elzpalh" +}, + "̢": { + text: "{\\Elzrh}" +}, + "̣": { + text: "{\\d}", + combiningdiacritic: true +}, + "̤": { + text: "{\\textsubumlaut}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̥": { + text: "{\\textsubring}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̧": { + text: "{\\c}", + combiningdiacritic: true +}, + "̨": { + text: "{\\k}", + combiningdiacritic: true +}, + "̩": { + text: "{\\textsyllabic}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̪": { + math: "\\Elzsbbrg", + text: "{\\textsubbridge}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̫": { + text: "{\\fontencoding{LECO}\\selectfont\\char203}" +}, + "̬": { + text: "{\\textsubwedge}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̯": { + text: "{\\textsubarch}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̰": { + math: "\\utilde", + text: "{\\textsubtilde}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̱": { + math: "\\underbar", + combiningdiacritic: true, + text: "{\\textsubbar}", + textpackages: [ + "tipa" + ] +}, + "̲": { + math: "\\underline" +}, + "̴": { + text: "{\\textsuperimposetilde}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̵": { + text: "{\\Elzxl}" +}, + "̶": { + text: "{\\Elzbar}" +}, + "̷": { + text: "{\\fontencoding{LECO}\\selectfont\\char215}" +}, + "̸": { + math: "\\not" +}, + "̹": { + text: "{\\textsubrhalfring}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̺": { + text: "{\\textinvsubbridge}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̻": { + text: "{\\textsubsquare}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̼": { + text: "{\\textseagull}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "̽": { + text: "{\\textovercross}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] +}, + "͡": { + text: "{\\fontencoding{LECO}\\selectfont\\char225}" +}, + "ʹ": { + text: "'" +}, + "͵": { + text: "," +}, + ";": { + text: ";" +}, + "Ά": { + text: "{\\'A}" +}, + "Έ": { + text: "{\\'E}" +}, + "Ή": { + text: "{\\'H}" +}, + "Ί": { + text: "{\\'{}I}" +}, + "Ό": { + text: "{\\'{}O}" +}, + "Ύ": { + math: "\\mathrm{'Y}" +}, + "Ώ": { + math: "\\mathrm{'\\Omega}" +}, + "ΐ": { + math: "\\acute{\\ddot{\\iota}}" +}, + "Α": { + math: "A" +}, + "Β": { + math: "B" +}, + "Γ": { + math: "\\Gamma" +}, + "Δ": { + math: "\\Delta" +}, + "Ε": { + math: "E" +}, + "Ζ": { + math: "Z" +}, + "Η": { + math: "H" +}, + "Θ": { + math: "\\Theta" +}, + "Ι": { + math: "I" +}, + "Κ": { + math: "K" +}, + "Λ": { + math: "\\Lambda" +}, + "Μ": { + math: "M" +}, + "Ν": { + math: "N" +}, + "Ξ": { + math: "\\Xi" +}, + "Ο": { + math: "O" +}, + "Π": { + math: "\\Pi" +}, + "Ρ": { + math: "P" +}, + "Σ": { + math: "\\Sigma" +}, + "Τ": { + math: "T" +}, + "Υ": { + math: "\\Upsilon" +}, + "Φ": { + math: "\\Phi" +}, + "Χ": { + math: "X" +}, + "Ψ": { + math: "\\Psi" +}, + "Ω": { + math: "\\Omega" +}, + "Ϊ": { + math: "\\mathrm{\\ddot{I}}" +}, + "Ϋ": { + math: "\\mathrm{\\ddot{Y}}" +}, + "ά": { + text: "{\\'$\\alpha$}" +}, + "έ": { + math: "\\acute{\\epsilon}" +}, + "ή": { + math: "\\acute{\\eta}" +}, + "ί": { + math: "\\acute{\\iota}" +}, + "ΰ": { + math: "\\acute{\\ddot{\\upsilon}}" +}, + "α": { + math: "\\alpha" +}, + "β": { + math: "\\beta" +}, + "γ": { + math: "\\gamma" +}, + "δ": { + math: "\\delta" +}, + "ε": { + math: "\\epsilon" +}, + "ζ": { + math: "\\zeta" +}, + "η": { + math: "\\eta" +}, + "θ": { + math: "\\theta", + text: "{\\texttheta}" +}, + "ι": { + math: "\\iota" +}, + "κ": { + math: "\\kappa" +}, + "λ": { + math: "\\lambda" +}, + "μ": { + math: "\\mu" +}, + "ν": { + math: "\\nu" +}, + "ξ": { + math: "\\xi" +}, + "ο": { + math: "o" +}, + "π": { + math: "\\pi" +}, + "ρ": { + math: "\\rho" +}, + "ς": { + math: "\\varsigma" +}, + "σ": { + math: "\\sigma" +}, + "τ": { + math: "\\tau" +}, + "υ": { + math: "\\upsilon" +}, + "φ": { + math: "\\varphi" +}, + "χ": { + math: "\\chi" +}, + "ψ": { + math: "\\psi" +}, + "ω": { + math: "\\omega" +}, + "ϊ": { + math: "\\ddot{\\iota}" +}, + "ϋ": { + math: "\\ddot{\\upsilon}" +}, + "ό": { + text: "{\\'o}" +}, + "ύ": { + math: "\\acute{\\upsilon}" +}, + "ώ": { + math: "\\acute{\\omega}" +}, + "ϐ": { + math: "\\varbeta", + text: "\\Pisymbol{ppi022}{87}" +}, + "ϑ": { + math: "\\vartheta", + text: "{\\textvartheta}" +}, + "ϒ": { + math: "\\Upsilon" +}, + "ϕ": { + math: "\\phi" +}, + "ϖ": { + math: "\\varpi" +}, + "Ϙ": { + math: "\\Qoppa" +}, + "ϙ": { + math: "\\qoppa" +}, + "Ϛ": { + math: "\\Stigma" +}, + "ϛ": { + math: "\\stigma" +}, + "Ϝ": { + math: "\\Digamma" +}, + "ϝ": { + math: "\\digamma" +}, + "Ϟ": { + math: "\\Koppa" +}, + "ϟ": { + math: "\\koppa" +}, + "Ϡ": { + math: "\\Sampi" +}, + "ϡ": { + math: "\\sampi" +}, + "ϰ": { + math: "\\varkappa" +}, + "ϱ": { + math: "\\varrho" +}, + "ϴ": { + math: "\\upvarTheta", + text: "{\\textTheta}" +}, + "ϵ": { + math: "\\epsilon" +}, + "϶": { + math: "\\backepsilon" +}, + "Ё": { + text: "{\\cyrchar\\CYRYO}" +}, + "Ђ": { + text: "{\\cyrchar\\CYRDJE}" +}, + "Ѓ": { + text: "{\\cyrchar{\\'\\CYRG}}" +}, + "Є": { + text: "{\\cyrchar\\CYRIE}" +}, + "Ѕ": { + text: "{\\cyrchar\\CYRDZE}" +}, + "І": { + text: "{\\cyrchar\\CYRII}" +}, + "Ї": { + text: "{\\cyrchar\\CYRYI}" +}, + "Ј": { + text: "{\\cyrchar\\CYRJE}" +}, + "Љ": { + text: "{\\cyrchar\\CYRLJE}" +}, + "Њ": { + text: "{\\cyrchar\\CYRNJE}" +}, + "Ћ": { + text: "{\\cyrchar\\CYRTSHE}" +}, + "Ќ": { + text: "{\\cyrchar{\\'\\CYRK}}" +}, + "Ў": { + text: "{\\cyrchar\\CYRUSHRT}" +}, + "Џ": { + text: "{\\cyrchar\\CYRDZHE}" +}, + "А": { + text: "{\\cyrchar\\CYRA}" +}, + "Б": { + text: "{\\cyrchar\\CYRB}" +}, + "В": { + text: "{\\cyrchar\\CYRV}" +}, + "Г": { + text: "{\\cyrchar\\CYRG}" +}, + "Д": { + text: "{\\cyrchar\\CYRD}" +}, + "Е": { + text: "{\\cyrchar\\CYRE}" +}, + "Ж": { + text: "{\\cyrchar\\CYRZH}" +}, + "З": { + text: "{\\cyrchar\\CYRZ}" +}, + "И": { + text: "{\\cyrchar\\CYRI}" +}, + "Й": { + text: "{\\cyrchar\\CYRISHRT}" +}, + "К": { + text: "{\\cyrchar\\CYRK}" +}, + "Л": { + text: "{\\cyrchar\\CYRL}" +}, + "М": { + text: "{\\cyrchar\\CYRM}" +}, + "Н": { + text: "{\\cyrchar\\CYRN}" +}, + "О": { + text: "{\\cyrchar\\CYRO}" +}, + "П": { + text: "{\\cyrchar\\CYRP}" +}, + "Р": { + text: "{\\cyrchar\\CYRR}" +}, + "С": { + text: "{\\cyrchar\\CYRS}" +}, + "Т": { + text: "{\\cyrchar\\CYRT}" +}, + "У": { + text: "{\\cyrchar\\CYRU}" +}, + "Ф": { + text: "{\\cyrchar\\CYRF}" +}, + "Х": { + text: "{\\cyrchar\\CYRH}" +}, + "Ц": { + text: "{\\cyrchar\\CYRC}" +}, + "Ч": { + text: "{\\cyrchar\\CYRCH}" +}, + "Ш": { + text: "{\\cyrchar\\CYRSH}" +}, + "Щ": { + text: "{\\cyrchar\\CYRSHCH}" +}, + "Ъ": { + text: "{\\cyrchar\\CYRHRDSN}" +}, + "Ы": { + text: "{\\cyrchar\\CYRERY}" +}, + "Ь": { + text: "{\\cyrchar\\CYRSFTSN}" +}, + "Э": { + text: "{\\cyrchar\\CYREREV}" +}, + "Ю": { + text: "{\\cyrchar\\CYRYU}" +}, + "Я": { + text: "{\\cyrchar\\CYRYA}" +}, + "а": { + text: "{\\cyrchar\\cyra}" +}, + "б": { + text: "{\\cyrchar\\cyrb}" +}, + "в": { + text: "{\\cyrchar\\cyrv}" +}, + "г": { + text: "{\\cyrchar\\cyrg}" +}, + "д": { + text: "{\\cyrchar\\cyrd}" +}, + "е": { + text: "{\\cyrchar\\cyre}" +}, + "ж": { + text: "{\\cyrchar\\cyrzh}" +}, + "з": { + text: "{\\cyrchar\\cyrz}" +}, + "и": { + text: "{\\cyrchar\\cyri}" +}, + "й": { + text: "{\\cyrchar\\cyrishrt}" +}, + "к": { + text: "{\\cyrchar\\cyrk}" +}, + "л": { + text: "{\\cyrchar\\cyrl}" +}, + "м": { + text: "{\\cyrchar\\cyrm}" +}, + "н": { + text: "{\\cyrchar\\cyrn}" +}, + "о": { + text: "{\\cyrchar\\cyro}" +}, + "п": { + text: "{\\cyrchar\\cyrp}" +}, + "р": { + text: "{\\cyrchar\\cyrr}" +}, + "с": { + text: "{\\cyrchar\\cyrs}" +}, + "т": { + text: "{\\cyrchar\\cyrt}" +}, + "у": { + text: "{\\cyrchar\\cyru}" +}, + "ф": { + text: "{\\cyrchar\\cyrf}" +}, + "х": { + text: "{\\cyrchar\\cyrh}" +}, + "ц": { + text: "{\\cyrchar\\cyrc}" +}, + "ч": { + text: "{\\cyrchar\\cyrch}" +}, + "ш": { + text: "{\\cyrchar\\cyrsh}" +}, + "щ": { + text: "{\\cyrchar\\cyrshch}" +}, + "ъ": { + text: "{\\cyrchar\\cyrhrdsn}" +}, + "ы": { + text: "{\\cyrchar\\cyrery}" +}, + "ь": { + text: "{\\cyrchar\\cyrsftsn}" +}, + "э": { + text: "{\\cyrchar\\cyrerev}" +}, + "ю": { + text: "{\\cyrchar\\cyryu}" +}, + "я": { + text: "{\\cyrchar\\cyrya}" +}, + "ё": { + text: "{\\cyrchar\\cyryo}" +}, + "ђ": { + text: "{\\cyrchar\\cyrdje}" +}, + "ѓ": { + text: "{\\cyrchar{\\'\\cyrg}}" +}, + "є": { + text: "{\\cyrchar\\cyrie}" +}, + "ѕ": { + text: "{\\cyrchar\\cyrdze}" +}, + "і": { + text: "{\\cyrchar\\cyrii}" +}, + "ї": { + text: "{\\cyrchar\\cyryi}" +}, + "ј": { + text: "{\\cyrchar\\cyrje}" +}, + "љ": { + text: "{\\cyrchar\\cyrlje}" +}, + "њ": { + text: "{\\cyrchar\\cyrnje}" +}, + "ћ": { + text: "{\\cyrchar\\cyrtshe}" +}, + "ќ": { + text: "{\\cyrchar{\\'\\cyrk}}" +}, + "ў": { + text: "{\\cyrchar\\cyrushrt}" +}, + "џ": { + text: "{\\cyrchar\\cyrdzhe}" +}, + "Ѡ": { + text: "{\\cyrchar\\CYROMEGA}" +}, + "ѡ": { + text: "{\\cyrchar\\cyromega}" +}, + "Ѣ": { + text: "{\\cyrchar\\CYRYAT}" +}, + "Ѥ": { + text: "{\\cyrchar\\CYRIOTE}" +}, + "ѥ": { + text: "{\\cyrchar\\cyriote}" +}, + "Ѧ": { + text: "{\\cyrchar\\CYRLYUS}" +}, + "ѧ": { + text: "{\\cyrchar\\cyrlyus}" +}, + "Ѩ": { + text: "{\\cyrchar\\CYRIOTLYUS}" +}, + "ѩ": { + text: "{\\cyrchar\\cyriotlyus}" +}, + "Ѫ": { + text: "{\\cyrchar\\CYRBYUS}" +}, + "Ѭ": { + text: "{\\cyrchar\\CYRIOTBYUS}" +}, + "ѭ": { + text: "{\\cyrchar\\cyriotbyus}" +}, + "Ѯ": { + text: "{\\cyrchar\\CYRKSI}" +}, + "ѯ": { + text: "{\\cyrchar\\cyrksi}" +}, + "Ѱ": { + text: "{\\cyrchar\\CYRPSI}" +}, + "ѱ": { + text: "{\\cyrchar\\cyrpsi}" +}, + "Ѳ": { + text: "{\\cyrchar\\CYRFITA}" +}, + "Ѵ": { + text: "{\\cyrchar\\CYRIZH}" +}, + "Ѹ": { + text: "{\\cyrchar\\CYRUK}" +}, + "ѹ": { + text: "{\\cyrchar\\cyruk}" +}, + "Ѻ": { + text: "{\\cyrchar\\CYROMEGARND}" +}, + "ѻ": { + text: "{\\cyrchar\\cyromegarnd}" +}, + "Ѽ": { + text: "{\\cyrchar\\CYROMEGATITLO}" +}, + "ѽ": { + text: "{\\cyrchar\\cyromegatitlo}" +}, + "Ѿ": { + text: "{\\cyrchar\\CYROT}" +}, + "ѿ": { + text: "{\\cyrchar\\cyrot}" +}, + "Ҁ": { + text: "{\\cyrchar\\CYRKOPPA}" +}, + "ҁ": { + text: "{\\cyrchar\\cyrkoppa}" +}, + "҂": { + text: "{\\cyrchar\\cyrthousands}" +}, + "҈": { + text: "{\\cyrchar\\cyrhundredthousands}" +}, + "҉": { + text: "{\\cyrchar\\cyrmillions}" +}, + "Ҍ": { + text: "{\\cyrchar\\CYRSEMISFTSN}" +}, + "ҍ": { + text: "{\\cyrchar\\cyrsemisftsn}" +}, + "Ҏ": { + text: "{\\cyrchar\\CYRRTICK}" +}, + "ҏ": { + text: "{\\cyrchar\\cyrrtick}" +}, + "Ґ": { + text: "{\\cyrchar\\CYRGUP}" +}, + "ґ": { + text: "{\\cyrchar\\cyrgup}" +}, + "Ғ": { + text: "{\\cyrchar\\CYRGHCRS}" +}, + "ғ": { + text: "{\\cyrchar\\cyrghcrs}" +}, + "Ҕ": { + text: "{\\cyrchar\\CYRGHK}" +}, + "ҕ": { + text: "{\\cyrchar\\cyrghk}" +}, + "Җ": { + text: "{\\cyrchar\\CYRZHDSC}" +}, + "җ": { + text: "{\\cyrchar\\cyrzhdsc}" +}, + "Ҙ": { + text: "{\\cyrchar\\CYRZDSC}" +}, + "ҙ": { + text: "{\\cyrchar\\cyrzdsc}" +}, + "Қ": { + text: "{\\cyrchar\\CYRKDSC}" +}, + "қ": { + text: "{\\cyrchar\\cyrkdsc}" +}, + "Ҝ": { + text: "{\\cyrchar\\CYRKVCRS}" +}, + "ҝ": { + text: "{\\cyrchar\\cyrkvcrs}" +}, + "Ҟ": { + text: "{\\cyrchar\\CYRKHCRS}" +}, + "ҟ": { + text: "{\\cyrchar\\cyrkhcrs}" +}, + "Ҡ": { + text: "{\\cyrchar\\CYRKBEAK}" +}, + "ҡ": { + text: "{\\cyrchar\\cyrkbeak}" +}, + "Ң": { + text: "{\\cyrchar\\CYRNDSC}" +}, + "ң": { + text: "{\\cyrchar\\cyrndsc}" +}, + "Ҥ": { + text: "{\\cyrchar\\CYRNG}" +}, + "ҥ": { + text: "{\\cyrchar\\cyrng}" +}, + "Ҧ": { + text: "{\\cyrchar\\CYRPHK}" +}, + "ҧ": { + text: "{\\cyrchar\\cyrphk}" +}, + "Ҩ": { + text: "{\\cyrchar\\CYRABHHA}" +}, + "ҩ": { + text: "{\\cyrchar\\cyrabhha}" +}, + "Ҫ": { + text: "{\\cyrchar\\CYRSDSC}" +}, + "ҫ": { + text: "{\\cyrchar\\cyrsdsc}" +}, + "Ҭ": { + text: "{\\cyrchar\\CYRTDSC}" +}, + "ҭ": { + text: "{\\cyrchar\\cyrtdsc}" +}, + "Ү": { + text: "{\\cyrchar\\CYRY}" +}, + "ү": { + text: "{\\cyrchar\\cyry}" +}, + "Ұ": { + text: "{\\cyrchar\\CYRYHCRS}" +}, + "ұ": { + text: "{\\cyrchar\\cyryhcrs}" +}, + "Ҳ": { + text: "{\\cyrchar\\CYRHDSC}" +}, + "ҳ": { + text: "{\\cyrchar\\cyrhdsc}" +}, + "Ҵ": { + text: "{\\cyrchar\\CYRTETSE}" +}, + "ҵ": { + text: "{\\cyrchar\\cyrtetse}" +}, + "Ҷ": { + text: "{\\cyrchar\\CYRCHRDSC}" +}, + "ҷ": { + text: "{\\cyrchar\\cyrchrdsc}" +}, + "Ҹ": { + text: "{\\cyrchar\\CYRCHVCRS}" +}, + "ҹ": { + text: "{\\cyrchar\\cyrchvcrs}" +}, + "Һ": { + text: "{\\cyrchar\\CYRSHHA}" +}, + "һ": { + text: "{\\cyrchar\\cyrshha}" +}, + "Ҽ": { + text: "{\\cyrchar\\CYRABHCH}" +}, + "ҽ": { + text: "{\\cyrchar\\cyrabhch}" +}, + "Ҿ": { + text: "{\\cyrchar\\CYRABHCHDSC}" +}, + "ҿ": { + text: "{\\cyrchar\\cyrabhchdsc}" +}, + "Ӏ": { + text: "{\\cyrchar\\CYRpalochka}" +}, + "Ӄ": { + text: "{\\cyrchar\\CYRKHK}" +}, + "ӄ": { + text: "{\\cyrchar\\cyrkhk}" +}, + "Ӈ": { + text: "{\\cyrchar\\CYRNHK}" +}, + "ӈ": { + text: "{\\cyrchar\\cyrnhk}" +}, + "Ӌ": { + text: "{\\cyrchar\\CYRCHLDSC}" +}, + "ӌ": { + text: "{\\cyrchar\\cyrchldsc}" +}, + "Ӕ": { + text: "{\\cyrchar\\CYRAE}" +}, + "ӕ": { + text: "{\\cyrchar\\cyrae}" +}, + "Ә": { + text: "{\\cyrchar\\CYRSCHWA}" +}, + "ә": { + text: "{\\cyrchar\\cyrschwa}" +}, + "Ӡ": { + text: "{\\cyrchar\\CYRABHDZE}" +}, + "ӡ": { + text: "{\\cyrchar\\cyrabhdze}" +}, + "Ө": { + text: "{\\cyrchar\\CYROTLD}" +}, + "ө": { + text: "{\\cyrchar\\cyrotld}" +}, + "ࡱ": { + math: "\\\\backslash" +}, + "ᵃ": { + math: "^{a}", + text: "\\textsuperscript{a}" +}, + "ᵇ": { + math: "^{b}", + text: "\\textsuperscript{b}" +}, + "ᵈ": { + math: "^{d}", + text: "\\textsuperscript{d}" +}, + "ᵉ": { + math: "^{e}", + text: "\\textsuperscript{e}" +}, + "ᵍ": { + math: "^{g}", + text: "\\textsuperscript{g}" +}, + "ᵏ": { + math: "^{k}", + text: "\\textsuperscript{k}" +}, + "ᵐ": { + math: "^{m}", + text: "\\textsuperscript{m}" +}, + "ᵒ": { + math: "^{o}", + text: "\\textsuperscript{o}" +}, + "ᵖ": { + math: "^{p}", + text: "\\textsuperscript{p}" +}, + "ᵗ": { + math: "^{t}", + text: "\\textsuperscript{t}" +}, + "ᵘ": { + math: "^{u}", + text: "\\textsuperscript{u}" +}, + "ᵛ": { + math: "^{v}", + text: "\\textsuperscript{v}" +}, + "ᶜ": { + math: "^{c}", + text: "\\textsuperscript{c}" +}, + "ᶠ": { + math: "^{f}", + text: "\\textsuperscript{f}" +}, + "ᶻ": { + math: "^{z}", + text: "\\textsuperscript{z}" +}, + "Ḃ": { + text: "{\\.B}" +}, + "ḃ": { + text: "{\\.b}" +}, + "Ḅ": { + text: "{\\d B}" +}, + "ḅ": { + text: "{\\d b}" +}, + "Ḇ": { + text: "{\\b B}" +}, + "ḇ": { + text: "{\\b b}" +}, + "Ḋ": { + text: "{\\.D}" +}, + "ḋ": { + text: "{\\.d}" +}, + "Ḍ": { + text: "{\\d D}" +}, + "ḍ": { + text: "{\\d d}" +}, + "Ḏ": { + text: "{\\b D}" +}, + "ḏ": { + text: "{\\b d}" +}, + "Ḑ": { + text: "{\\c D}" +}, + "ḑ": { + text: "{\\c d}" +}, + "Ḝ": { + text: "{\\c{\\u{E}}}" +}, + "ḝ": { + text: "{\\c{\\u{e}}}" +}, + "Ḟ": { + text: "{\\.F}" +}, + "ḟ": { + text: "{\\.f}" +}, + "Ḡ": { + text: "{\\=G}" +}, + "ḡ": { + text: "{\\=g}" +}, + "Ḣ": { + text: "{\\.H}" +}, + "ḣ": { + text: "{\\.h}" +}, + "Ḥ": { + text: "{\\d H}" +}, + "ḥ": { + text: "{\\d h}" +}, + "Ḧ": { + text: "{\\\"H}" +}, + "ḧ": { + text: "{\\\"h}" +}, + "Ḩ": { + text: "{\\c H}" +}, + "ḩ": { + text: "{\\c h}" +}, + "Ḱ": { + text: "{\\'K}" +}, + "ḱ": { + text: "{\\'k}" +}, + "Ḳ": { + text: "{\\d K}" +}, + "ḳ": { + text: "{\\d k}" +}, + "Ḵ": { + text: "{\\b K}" +}, + "ḵ": { + text: "{\\b k}" +}, + "Ḷ": { + text: "{\\d L}" +}, + "ḷ": { + text: "{\\d l}" +}, + "Ḻ": { + text: "{\\b L}" +}, + "ḻ": { + text: "{\\b l}" +}, + "Ḿ": { + text: "{\\'M}" +}, + "ḿ": { + text: "{\\'m}" +}, + "Ṁ": { + text: "{\\.M}" +}, + "ṁ": { + text: "{\\.m}" +}, + "Ṃ": { + text: "{\\d M}" +}, + "ṃ": { + text: "{\\d m}" +}, + "Ṅ": { + text: "{\\.N}" +}, + "ṅ": { + text: "{\\.n}" +}, + "Ṇ": { + text: "{\\d N}" +}, + "ṇ": { + text: "{\\d n}" +}, + "Ṉ": { + text: "{\\b N}" +}, + "ṉ": { + text: "{\\b n}" +}, + "Ṕ": { + text: "{\\'P}" +}, + "ṕ": { + text: "{\\'p}" +}, + "Ṗ": { + text: "{\\.P}" +}, + "ṗ": { + text: "{\\.p}" +}, + "Ṙ": { + text: "{\\.R}" +}, + "ṙ": { + text: "{\\.r}" +}, + "Ṛ": { + text: "{\\d R}" +}, + "ṛ": { + text: "{\\d r}" +}, + "Ṟ": { + text: "{\\b R}" +}, + "ṟ": { + text: "{\\b r}" +}, + "Ṡ": { + text: "{\\.S}" +}, + "ṡ": { + text: "{\\.s}" +}, + "Ṣ": { + text: "{\\d S}" +}, + "ṣ": { + text: "{\\d s}" +}, + "Ṫ": { + text: "{\\.T}" +}, + "ṫ": { + text: "{\\.t}" +}, + "Ṭ": { + text: "{\\d T}" +}, + "ṭ": { + text: "{\\d t}" +}, + "Ṯ": { + text: "{\\b T}" +}, + "ṯ": { + text: "{\\b t}" +}, + "Ṽ": { + text: "{\\~V}" +}, + "ṽ": { + text: "{\\~v}" +}, + "Ṿ": { + text: "{\\d V}" +}, + "ṿ": { + text: "{\\d v}" +}, + "Ẁ": { + text: "{\\`W}" +}, + "ẁ": { + text: "{\\`w}" +}, + "Ẃ": { + text: "{\\'W}" +}, + "ẃ": { + text: "{\\'w}" +}, + "Ẅ": { + text: "{\\\"W}" +}, + "ẅ": { + text: "{\\\"w}" +}, + "Ẇ": { + text: "{\\.W}" +}, + "ẇ": { + text: "{\\.w}" +}, + "Ẉ": { + text: "{\\d W}" +}, + "ẉ": { + text: "{\\d w}" +}, + "Ẋ": { + text: "{\\.X}" +}, + "ẋ": { + text: "{\\.x}" +}, + "Ẍ": { + text: "{\\\"X}" +}, + "ẍ": { + text: "{\\\"x}" +}, + "Ẏ": { + text: "{\\.Y}" +}, + "ẏ": { + text: "{\\.y}" +}, + "Ẑ": { + text: "{\\^Z}" +}, + "ẑ": { + text: "{\\^z}" +}, + "Ẓ": { + text: "{\\d Z}" +}, + "ẓ": { + text: "{\\d z}" +}, + "Ẕ": { + text: "{\\b Z}" +}, + "ẕ": { + text: "{\\b z}" +}, + "ẖ": { + text: "{\\b h}" +}, + "ẗ": { + text: "{\\\"t}" +}, + "ẘ": { + text: "{\\r{w}}" +}, + "ẙ": { + text: "{\\r{y}}" +}, + "Ạ": { + text: "{\\d A}" +}, + "ạ": { + text: "{\\d a}" +}, + "Ẹ": { + text: "{\\d E}" +}, + "ẹ": { + text: "{\\d e}" +}, + "Ẽ": { + text: "{\\~E}" +}, + "ẽ": { + text: "{\\~e}" +}, + "Ị": { + text: "{\\d I}" +}, + "ị": { + text: "{\\d i}" +}, + "Ọ": { + text: "{\\d O}" +}, + "ọ": { + text: "{\\d o}" +}, + "Ụ": { + text: "{\\d U}" +}, + "ụ": { + text: "{\\d u}" +}, + "Ỳ": { + text: "{\\`Y}" +}, + "ỳ": { + text: "{\\`y}" +}, + "Ỵ": { + text: "{\\d Y}" +}, + "ỵ": { + text: "{\\d y}" +}, + "Ỹ": { + text: "{\\~Y}" +}, + "ỹ": { + text: "{\\~y}" +}, + " ": { + text: " ", + space: true +}, + " ": { + math: "\\quad", + space: true +}, + " ": { + text: "\\hspace{0.6em}", + space: true +}, + " ": { + math: "\\quad", + space: true, + text: "\\hspace{1em}" +}, + " ": { + text: "\\;", + space: true +}, + " ": { + text: "\\hspace{0.25em}", + space: true +}, + " ": { + text: "\\hspace{0.166em}", + space: true +}, + " ": { + text: "\\hphantom{0}", + space: true +}, + " ": { + text: "\\hphantom{,}", + space: true +}, + " ": { + text: "\\,", + space: true +}, + " ": { + math: "\\mkern1mu", + space: true +}, + "​": { + text: "{\\mbox}", + space: true +}, + "‌": { + text: "{\\aftergroup\\ignorespaces}" +}, + "‐": { + text: "-" +}, + "‑": { + text: "-" +}, + "‒": { + text: "-" +}, + "–": { + text: "{\\textendash}" +}, + "—": { + text: "{\\textemdash}" +}, + "―": { + math: "\\horizbar", + text: "\\rule{1em}{1pt}" +}, + "‖": { + math: "\\Vert" +}, + "‗": { + math: "\\twolowline" +}, + "‘": { + text: "`" +}, + "’": { + text: "'" +}, + "‚": { + text: "," +}, + "‛": { + math: "\\Elzreapos" +}, + "“": { + text: "``" +}, + "”": { + text: "''" +}, + "„": { + text: ",," +}, + "‟": { + text: "{\\quotedblbase}" +}, + "†": { + math: "\\dagger", + text: "{\\textdagger}", + textpackages: [ + "textcomp" + ] +}, + "‡": { + math: "\\ddagger", + text: "{\\textdaggerdbl}", + textpackages: [ + "textcomp" + ] +}, + "•": { + math: "\\bullet", + text: "{\\textbullet}", + textpackages: [ + "textcomp" + ] +}, + "‣": { + text: ">" +}, + "․": { + text: "." +}, + "‥": { + math: "\\enleadertwodots", + text: ".." +}, + "…": { + math: "\\ldots", + text: "{\\ldots}" +}, + "‧": { + text: "-" +}, + " ": { + text: " ", + space: true +}, + "‰": { + text: "{\\textperthousand}", + textpackages: [ + "textcomp" + ] +}, + "‱": { + text: "{\\textpertenthousand}", + textpackages: [ + "textcomp" + ] +}, + "′": { + math: "{'}" +}, + "″": { + math: "{''}" +}, + "‴": { + math: "{'''}" +}, + "‵": { + math: "\\backprime" +}, + "‶": { + math: "\\backdprime" +}, + "‷": { + math: "\\backtrprime" +}, + "‸": { + math: "\\caretinsert" +}, + "‹": { + text: "{\\guilsinglleft}" +}, + "›": { + text: "{\\guilsinglright}" +}, + "‼": { + math: "\\Exclam" +}, + "‾": { + text: "-" +}, + "⁃": { + math: "\\hyphenbullet" +}, + "⁄": { + math: "\\fracslash" +}, + "⁇": { + math: "\\Question" +}, + "⁈": { + text: "?!" +}, + "⁉": { + text: "!?" +}, + "⁊": { + text: "7" +}, + "⁐": { + math: "\\closure" +}, + "⁗": { + math: "''''" +}, + " ": { + math: "\\:", + space: true, + text: "\\:" +}, + "⁠": { + text: "{\\nolinebreak}" +}, + "⁰": { + math: "^{0}" +}, + "ⁱ": { + math: "^{i}", + text: "\\textsuperscript{i}" +}, + "⁴": { + math: "^{4}" +}, + "⁵": { + math: "^{5}" +}, + "⁶": { + math: "^{6}" +}, + "⁷": { + math: "^{7}" +}, + "⁸": { + math: "^{8}" +}, + "⁹": { + math: "^{9}" +}, + "⁺": { + math: "^{+}" +}, + "⁻": { + math: "^{-}" +}, + "⁼": { + math: "^{=}" +}, + "⁽": { + math: "^{(}" +}, + "⁾": { + math: "^{)}" +}, + "ⁿ": { + math: "^{n}", + text: "\\textsuperscript{n}" +}, + "₀": { + math: "_{0}" +}, + "₁": { + math: "_{1}" +}, + "₂": { + math: "_{2}" +}, + "₃": { + math: "_{3}" +}, + "₄": { + math: "_{4}" +}, + "₅": { + math: "_{5}" +}, + "₆": { + math: "_{6}" +}, + "₇": { + math: "_{7}" +}, + "₈": { + math: "_{8}" +}, + "₉": { + math: "_{9}" +}, + "₊": { + math: "_{+}" +}, + "₋": { + math: "_{-}" +}, + "₌": { + math: "_{=}" +}, + "₍": { + math: "_{(}" +}, + "₎": { + math: "_{)}" +}, + "ₐ": { + math: "_{a}", + text: "\\textsubscript{a}" +}, + "ₑ": { + math: "_{e}", + text: "\\textsubscript{e}" +}, + "ₒ": { + math: "_{o}", + text: "\\textsubscript{o}" +}, + "ₓ": { + math: "_{x}", + text: "\\textsubscript{x}" +}, + "ₔ": { + text: "\\textsubscript{\\textschwa}", + textpackages: [ + "tipa" + ] +}, + "ₕ": { + math: "_{h}", + text: "\\textsubscript{h}" +}, + "ₖ": { + math: "_{k}", + text: "\\textsubscript{k}" +}, + "ₗ": { + math: "_{l}", + text: "\\textsubscript{l}" +}, + "ₘ": { + math: "_{m}", + text: "\\textsubscript{m}" +}, + "ₙ": { + math: "_{n}", + text: "\\textsubscript{n}" +}, + "ₚ": { + math: "_{p}", + text: "\\textsubscript{p}" +}, + "ₛ": { + math: "_{s}", + text: "\\textsubscript{s}" +}, + "ₜ": { + math: "_{t}", + text: "\\textsubscript{t}" +}, + "₧": { + text: "\\ensuremath{\\Elzpes}" +}, + "€": { + math: "\\euro", + text: "{\\texteuro}" +}, + "⃐": { + math: "\\lvec" +}, + "⃑": { + math: "\\rightharpoonup", + mathpackages: [ + "amsmath", + "amssymb" + ] +}, + "⃒": { + math: "\\vertoverlay" +}, + "⃖": { + math: "\\LVec" +}, + "⃗": { + math: "\\vec" +}, + "⃛": { + math: "\\dddot" +}, + "⃜": { + math: "\\ddddot" +}, + "⃝": { + math: "\\enclosecircle" +}, + "⃞": { + math: "\\enclosesquare" +}, + "⃟": { + math: "\\enclosediamond" +}, + "⃡": { + math: "\\overleftrightarrow" +}, + "⃤": { + math: "\\enclosetriangle" +}, + "⃧": { + math: "\\annuity" +}, + "⃨": { + math: "\\threeunderdot" +}, + "⃩": { + math: "\\widebridgeabove" +}, + "⃬": { + math: "\\underrightharpoondown" +}, + "⃭": { + math: "\\underleftharpoondown" +}, + "⃮": { + math: "\\underleftarrow" +}, + "⃯": { + math: "\\underrightarrow" +}, + "⃰": { + math: "\\asteraccent" +}, + "℀": { + text: "a/c" +}, + "℁": { + text: "a/s" +}, + "ℂ": { + math: "\\mathbb{C}" +}, + "℃": { + text: "{\\textcelsius}" +}, + "℅": { + text: "c/o" +}, + "℆": { + text: "c/u" +}, + "ℇ": { + math: "\\Euler" +}, + "℉": { + text: "F" +}, + "ℊ": { + math: "\\mathscr{g}" +}, + "ℋ": { + math: "\\mathscr{H}" +}, + "ℌ": { + math: "\\mathfrak{H}" +}, + "ℍ": { + math: "\\mathbb{H}" +}, + "ℎ": { + math: "\\Planckconst" +}, + "ℏ": { + math: "\\hslash" +}, + "ℐ": { + math: "\\mathscr{I}" +}, + "ℑ": { + math: "\\mathfrak{I}" +}, + "ℒ": { + math: "\\mathscr{L}" +}, + "ℓ": { + math: "\\mathscr{l}" +}, + "ℕ": { + math: "\\mathbb{N}" +}, + "№": { + text: "{\\cyrchar\\textnumero}" +}, + "℗": { + text: "{\\textcircledP}" +}, + "℘": { + math: "\\wp" +}, + "ℙ": { + math: "\\mathbb{P}" +}, + "ℚ": { + math: "\\mathbb{Q}" +}, + "ℛ": { + math: "\\mathscr{R}" +}, + "ℜ": { + math: "\\mathfrak{R}" +}, + "ℝ": { + math: "\\mathbb{R}" +}, + "℞": { + math: "\\Elzxrat" +}, + "℠": { + text: "{\\textservicemark}" +}, + "℡": { + text: "TEL" +}, + "™": { + text: "{\\texttrademark}", + textpackages: [ + "textcomp" + ] +}, + "ℤ": { + math: "\\mathbb{Z}" +}, + "Ω": { + math: "\\Omega" +}, + "℧": { + math: "\\mho" +}, + "ℨ": { + math: "\\mathfrak{Z}" +}, + "℩": { + text: "{\\textriota}" +}, + "K": { + text: "K" +}, + "Å": { + math: "\\Angstroem", + text: "{\\AA}" +}, + "ℬ": { + math: "\\mathscr{B}" +}, + "ℭ": { + math: "\\mathfrak{C}" +}, + "℮": { + text: "{\\textestimated}" +}, + "ℯ": { + math: "\\mathscr{e}" +}, + "ℰ": { + math: "\\mathscr{E}" +}, + "ℱ": { + math: "\\mathscr{F}" +}, + "Ⅎ": { + math: "\\Finv" +}, + "ℳ": { + math: "\\mathscr{M}" +}, + "ℴ": { + math: "\\mathscr{o}" +}, + "ℵ": { + math: "\\aleph" +}, + "ℶ": { + math: "\\beth" +}, + "ℷ": { + math: "\\gimel" +}, + "ℸ": { + math: "\\daleth" +}, + "ℼ": { + math: "\\mathbb{\\pi}" +}, + "ℽ": { + math: "\\mathbb{\\gamma}" +}, + "ℾ": { + math: "\\mathbb{\\Gamma}" +}, + "ℿ": { + math: "\\mathbb{\\Pi}" +}, + "⅀": { + math: "\\mathbb{\\Sigma}" +}, + "⅁": { + math: "\\Game" +}, + "⅂": { + math: "\\sansLturned" +}, + "⅃": { + math: "\\sansLmirrored" +}, + "⅄": { + math: "\\Yup" +}, + "ⅅ": { + math: "\\CapitalDifferentialD" +}, + "ⅆ": { + math: "\\DifferentialD" +}, + "ⅇ": { + math: "\\ExponetialE" +}, + "ⅈ": { + math: "\\ComplexI" +}, + "ⅉ": { + math: "\\ComplexJ" +}, + "⅊": { + math: "\\PropertyLine" +}, + "⅋": { + math: "\\invamp" +}, + "⅐": { + math: "\\frac{1}{7}" +}, + "⅑": { + math: "\\frac{1}{9}" +}, + "⅒": { + math: "\\frac{1}{10}" +}, + "⅓": { + math: "\\frac{1}{3}" +}, + "⅔": { + math: "\\frac{2}{3}" +}, + "⅕": { + math: "\\frac{1}{5}" +}, + "⅖": { + math: "\\frac{2}{5}" +}, + "⅗": { + math: "\\frac{3}{5}" +}, + "⅘": { + math: "\\frac{4}{5}" +}, + "⅙": { + math: "\\frac{1}{6}" +}, + "⅚": { + math: "\\frac{5}{6}" +}, + "⅛": { + math: "\\frac{1}{8}" +}, + "⅜": { + math: "\\frac{3}{8}" +}, + "⅝": { + math: "\\frac{5}{8}" +}, + "⅞": { + math: "\\frac{7}{8}" +}, + "⅟": { + math: "\\frac{1}" +}, + "Ⅰ": { + text: "I" +}, + "Ⅱ": { + text: "II" +}, + "Ⅲ": { + text: "III" +}, + "Ⅳ": { + text: "IV" +}, + "Ⅴ": { + text: "V" +}, + "Ⅵ": { + text: "VI" +}, + "Ⅶ": { + text: "VII" +}, + "Ⅷ": { + text: "VIII" +}, + "Ⅸ": { + text: "IX" +}, + "Ⅹ": { + text: "X" +}, + "Ⅺ": { + text: "XI" +}, + "Ⅻ": { + text: "XII" +}, + "Ⅼ": { + text: "L" +}, + "Ⅽ": { + text: "C" +}, + "Ⅾ": { + text: "D" +}, + "Ⅿ": { + text: "M" +}, + "ⅰ": { + text: "i" +}, + "ⅱ": { + text: "ii" +}, + "ⅲ": { + text: "iii" +}, + "ⅳ": { + text: "iv" +}, + "ⅴ": { + text: "v" +}, + "ⅵ": { + text: "vi" +}, + "ⅶ": { + text: "vii" +}, + "ⅷ": { + text: "viii" +}, + "ⅸ": { + text: "ix" +}, + "ⅹ": { + text: "x" +}, + "ⅺ": { + text: "xi" +}, + "ⅻ": { + text: "xii" +}, + "ⅼ": { + text: "l" +}, + "ⅽ": { + text: "c" +}, + "ⅾ": { + text: "d" +}, + "ⅿ": { + text: "m" +}, + "↉": { + math: "\\frac{0}{3}" +}, + "←": { + math: "\\leftarrow" +}, + "↑": { + math: "\\uparrow" +}, + "→": { + math: "\\rightarrow", + text: "{\\textrightarrow}", + textpackages: [ + "textcomp" + ] +}, + "↓": { + math: "\\downarrow" +}, + "↔": { + math: "\\leftrightarrow" +}, + "↕": { + math: "\\updownarrow" +}, + "↖": { + math: "\\nwarrow" +}, + "↗": { + math: "\\nearrow" +}, + "↘": { + math: "\\searrow" +}, + "↙": { + math: "\\swarrow" +}, + "↚": { + math: "\\nleftarrow" +}, + "↛": { + math: "\\nrightarrow" +}, + "↜": { + math: "\\arrowwaveleft" +}, + "↝": { + math: "\\arrowwaveright" +}, + "↞": { + math: "\\twoheadleftarrow" +}, + "↟": { + math: "\\twoheaduparrow" +}, + "↠": { + math: "\\twoheadrightarrow" +}, + "↡": { + math: "\\twoheaddownarrow" +}, + "↢": { + math: "\\leftarrowtail" +}, + "↣": { + math: "\\rightarrowtail" +}, + "↤": { + math: "\\mapsfrom" +}, + "↥": { + math: "\\MapsUp" +}, + "↦": { + math: "\\mapsto" +}, + "↧": { + math: "\\MapsDown" +}, + "↨": { + math: "\\updownarrowbar" +}, + "↩": { + math: "\\hookleftarrow" +}, + "↪": { + math: "\\hookrightarrow" +}, + "↫": { + math: "\\looparrowleft" +}, + "↬": { + math: "\\looparrowright" +}, + "↭": { + math: "\\leftrightsquigarrow" +}, + "↮": { + math: "\\nleftrightarrow" +}, + "↯": { + math: "\\lightning" +}, + "↰": { + math: "\\Lsh" +}, + "↱": { + math: "\\Rsh" +}, + "↲": { + math: "\\dlsh" +}, + "↳": { + text: "\\reflectbox{\\carriagereturn}", + textpackages: [ + "graphics", + "unicode-math" + ] +}, + "↴": { + math: "\\linefeed" +}, + "↵": { + math: "\\carriagereturn" +}, + "↶": { + math: "\\curvearrowleft" +}, + "↷": { + math: "\\curvearrowright" +}, + "↸": { + math: "\\barovernorthwestarrow" +}, + "↹": { + math: "\\barleftarrowrightarrowba" +}, + "↺": { + math: "\\circlearrowleft" +}, + "↻": { + math: "\\circlearrowright" +}, + "↼": { + math: "\\leftharpoonup" +}, + "↽": { + math: "\\leftharpoondown" +}, + "↾": { + math: "\\upharpoonright" +}, + "↿": { + math: "\\upharpoonleft" +}, + "⇀": { + math: "\\rightharpoonup", + mathpackages: [ + "amsmath", + "amssymb" + ] +}, + "⇁": { + math: "\\rightharpoondown" +}, + "⇂": { + math: "\\downharpoonright" +}, + "⇃": { + math: "\\downharpoonleft" +}, + "⇄": { + math: "\\rightleftarrows" +}, + "⇅": { + math: "\\dblarrowupdown" +}, + "⇆": { + math: "\\leftrightarrows" +}, + "⇇": { + math: "\\leftleftarrows" +}, + "⇈": { + math: "\\upuparrows" +}, + "⇉": { + math: "\\rightrightarrows" +}, + "⇊": { + math: "\\downdownarrows" +}, + "⇋": { + math: "\\leftrightharpoons" +}, + "⇌": { + math: "\\rightleftharpoons" +}, + "⇍": { + math: "\\nLeftarrow" +}, + "⇎": { + math: "\\nLeftrightarrow" +}, + "⇏": { + math: "\\nRightarrow" +}, + "⇐": { + math: "\\Leftarrow" +}, + "⇑": { + math: "\\Uparrow" +}, + "⇒": { + math: "\\Rightarrow" +}, + "⇓": { + math: "\\Downarrow" +}, + "⇔": { + math: "\\Leftrightarrow" +}, + "⇕": { + math: "\\Updownarrow" +}, + "⇖": { + math: "\\Nwarrow" +}, + "⇗": { + math: "\\Nearrow" +}, + "⇘": { + math: "\\Searrow" +}, + "⇙": { + math: "\\Swarrow" +}, + "⇚": { + math: "\\Lleftarrow" +}, + "⇛": { + math: "\\Rrightarrow" +}, + "⇜": { + math: "\\leftsquigarrow" +}, + "⇝": { + math: "\\rightsquigarrow" +}, + "⇞": { + math: "\\nHuparrow" +}, + "⇟": { + math: "\\nHdownarrow" +}, + "⇠": { + math: "\\dashleftarrow" +}, + "⇡": { + math: "\\updasharrow" +}, + "⇢": { + math: "\\dashrightarrow" +}, + "⇣": { + math: "\\downdasharrow" +}, + "⇤": { + math: "\\LeftArrowBar" +}, + "⇥": { + math: "\\RightArrowBar" +}, + "⇦": { + math: "\\leftwhitearrow" +}, + "⇧": { + math: "\\upwhitearrow" +}, + "⇨": { + math: "\\rightwhitearrow" +}, + "⇩": { + math: "\\downwhitearrow" +}, + "⇪": { + math: "\\whitearrowupfrombar" +}, + "⇴": { + math: "\\circleonrightarrow" +}, + "⇵": { + math: "\\DownArrowUpArrow" +}, + "⇶": { + math: "\\rightthreearrows" +}, + "⇷": { + math: "\\nvleftarrow" +}, + "⇸": { + math: "\\pfun" +}, + "⇹": { + math: "\\nvleftrightarrow" +}, + "⇺": { + math: "\\nVleftarrow" +}, + "⇻": { + math: "\\ffun" +}, + "⇼": { + math: "\\nVleftrightarrow" +}, + "⇽": { + math: "\\leftarrowtriangle" +}, + "⇾": { + math: "\\rightarrowtriangle" +}, + "⇿": { + math: "\\leftrightarrowtriangle" +}, + "∀": { + math: "\\forall" +}, + "∁": { + math: "\\complement" +}, + "∂": { + math: "\\partial" +}, + "∃": { + math: "\\exists" +}, + "∄": { + math: "\\nexists" +}, + "∅": { + math: "\\varnothing" +}, + "∆": { + math: "\\increment" +}, + "∇": { + math: "\\nabla" +}, + "∈": { + math: "\\in" +}, + "∉": { + math: "\\not\\in" +}, + "∊": { + math: "\\smallin" +}, + "∋": { + math: "\\ni" +}, + "∌": { + math: "\\not\\ni" +}, + "∍": { + math: "\\smallni" +}, + "∎": { + math: "\\QED" +}, + "∏": { + math: "\\prod" +}, + "∐": { + math: "\\coprod" +}, + "∑": { + math: "\\sum" +}, + "−": { + math: "-", + text: "-" +}, + "∓": { + math: "\\mp" +}, + "∔": { + math: "\\dotplus" +}, + "∕": { + text: "/" +}, + "∖": { + math: "\\setminus" +}, + "∗": { + math: "{_\\ast}" +}, + "∘": { + math: "\\circ" +}, + "∙": { + math: "\\bullet" +}, + "√": { + math: "\\surd" +}, + "∛": { + math: "\\sqrt[3]" +}, + "∜": { + math: "\\sqrt[4]" +}, + "∝": { + math: "\\propto" +}, + "∞": { + math: "\\infty" +}, + "∟": { + math: "\\rightangle" +}, + "∠": { + math: "\\angle" +}, + "∡": { + math: "\\measuredangle" +}, + "∢": { + math: "\\sphericalangle" +}, + "∣": { + math: "\\mid" +}, + "∤": { + math: "\\nmid" +}, + "∥": { + math: "\\parallel" +}, + "∦": { + math: "\\nparallel" +}, + "∧": { + math: "\\wedge" +}, + "∨": { + math: "\\vee" +}, + "∩": { + math: "\\cap" +}, + "∪": { + math: "\\cup" +}, + "∫": { + math: "\\int" +}, + "∬": { + math: "{\\int\\!\\int}" +}, + "∭": { + math: "{\\int\\!\\int\\!\\int}" +}, + "∮": { + math: "\\oint" +}, + "∯": { + math: "\\surfintegral" +}, + "∰": { + math: "\\volintegral" +}, + "∱": { + math: "\\clwintegral" +}, + "∲": { + math: "\\lcirclerightint", + mathpackages: [ + "MnSymbol" + ] +}, + "∳": { + math: "\\rcirclerightint", + mathpackages: [ + "MnSymbol" + ] +}, + "∴": { + math: "\\therefore" +}, + "∵": { + math: "\\because" +}, + "∶": { + math: ":" +}, + "∷": { + math: "\\Colon" +}, + "∸": { + math: "\\dotdiv", + mathpackages: [ + "mathabx" + ] +}, + "∹": { + math: "\\eqcolon" +}, + "∺": { + math: "\\mathbin{{:}\\!\\!{-}\\!\\!{:}}" +}, + "∻": { + math: "\\homothetic" +}, + "∼": { + math: "\\sim" +}, + "∽": { + math: "\\backsim" +}, + "∾": { + math: "\\lazysinv" +}, + "∿": { + math: "\\AC" +}, + "≀": { + math: "\\wr" +}, + "≁": { + math: "\\not\\sim" +}, + "≂": { + math: "\\texteqsim", + mathpackages: [ + "xecjk" + ] +}, + "≂̸": { + math: "\\NotEqualTilde" +}, + "≃": { + math: "\\simeq" +}, + "≄": { + math: "\\not\\simeq" +}, + "≅": { + math: "\\cong" +}, + "≆": { + math: "\\approxnotequal" +}, + "≇": { + math: "\\not\\cong" +}, + "≈": { + math: "\\approx" +}, + "≉": { + math: "\\not\\approx" +}, + "≊": { + math: "\\approxeq" +}, + "≋": { + math: "\\tildetrpl" +}, + "≋̸": { + math: "\\not\\apid" +}, + "≌": { + math: "\\allequal" +}, + "≍": { + math: "\\asymp" +}, + "≎": { + math: "\\Bumpeq" +}, + "≎̸": { + math: "\\NotHumpDownHump" +}, + "≏": { + math: "\\bumpeq" +}, + "≏̸": { + math: "\\NotHumpEqual" +}, + "≐": { + math: "\\doteq" +}, + "≐̸": { + math: "\\not\\doteq" +}, + "≑": { + math: "\\doteqdot" +}, + "≒": { + math: "\\fallingdotseq" +}, + "≓": { + math: "\\risingdotseq" +}, + "≔": { + math: "\\coloneq", + text: ":=" +}, + "≕": { + math: "=:" +}, + "≖": { + math: "\\eqcirc" +}, + "≗": { + math: "\\circeq" +}, + "≘": { + math: "\\arceq" +}, + "≙": { + math: "\\estimates" +}, + "≛": { + math: "\\starequal" +}, + "≜": { + math: "\\triangleq" +}, + "≝": { + math: "\\eqdef" +}, + "≞": { + math: "\\measeq" +}, + "≠": { + math: "\\neq" +}, + "≡": { + math: "\\equiv" +}, + "≢": { + math: "\\not\\equiv" +}, + "≣": { + math: "\\Equiv" +}, + "≤": { + math: "\\leq" +}, + "≥": { + math: "\\geq" +}, + "≦": { + math: "\\leqq" +}, + "≧": { + math: "\\geqq" +}, + "≨": { + math: "\\lneqq" +}, + "≨︀": { + math: "\\lvertneqq" +}, + "≩": { + math: "\\gneqq" +}, + "≩︀": { + math: "\\gvertneqq" +}, + "≪": { + math: "\\ll" +}, + "≪̸": { + math: "\\NotLessLess" +}, + "≫": { + math: "\\gg" +}, + "≫̸": { + math: "\\NotGreaterGreater" +}, + "≬": { + math: "\\between" +}, + "≭": { + math: "{\\not\\kern-0.3em\\times}" +}, + "≮": { + math: "\\not<" +}, + "≯": { + math: "\\not>" +}, + "≰": { + math: "\\not\\leq" +}, + "≱": { + math: "\\not\\geq" +}, + "≲": { + math: "\\lessequivlnt" +}, + "≳": { + math: "\\greaterequivlnt" +}, + "≶": { + math: "\\lessgtr" +}, + "≷": { + math: "\\gtrless" +}, + "≸": { + math: "\\notlessgreater" +}, + "≹": { + math: "\\notgreaterless" +}, + "≺": { + math: "\\prec" +}, + "≻": { + math: "\\succ" +}, + "≼": { + math: "\\preccurlyeq" +}, + "≽": { + math: "\\succcurlyeq" +}, + "≾": { + math: "\\precapprox" +}, + "≾̸": { + math: "\\NotPrecedesTilde" +}, + "≿": { + math: "\\succapprox" +}, + "≿̸": { + math: "\\NotSucceedsTilde" +}, + "⊀": { + math: "\\not\\prec" +}, + "⊁": { + math: "\\not\\succ" +}, + "⊂": { + math: "\\subset" +}, + "⊃": { + math: "\\supset" +}, + "⊄": { + math: "\\not\\subset" +}, + "⊅": { + math: "\\not\\supset" +}, + "⊆": { + math: "\\subseteq" +}, + "⊇": { + math: "\\supseteq" +}, + "⊈": { + math: "\\not\\subseteq" +}, + "⊉": { + math: "\\not\\supseteq" +}, + "⊊": { + math: "\\subsetneq" +}, + "⊊︀": { + math: "\\varsubsetneqq" +}, + "⊋": { + math: "\\supsetneq" +}, + "⊋︀": { + math: "\\varsupsetneq" +}, + "⊌": { + math: "\\cupleftarrow" +}, + "⊍": { + math: "\\cupdot" +}, + "⊎": { + math: "\\uplus" +}, + "⊏": { + math: "\\sqsubset" +}, + "⊏̸": { + math: "\\NotSquareSubset" +}, + "⊐": { + math: "\\sqsupset" +}, + "⊐̸": { + math: "\\NotSquareSuperset" +}, + "⊑": { + math: "\\sqsubseteq" +}, + "⊒": { + math: "\\sqsupseteq" +}, + "⊓": { + math: "\\sqcap" +}, + "⊔": { + math: "\\sqcup" +}, + "⊕": { + math: "\\oplus" +}, + "⊖": { + math: "\\ominus" +}, + "⊗": { + math: "\\otimes" +}, + "⊘": { + math: "\\oslash" +}, + "⊙": { + math: "\\odot" +}, + "⊚": { + math: "\\circledcirc" +}, + "⊛": { + math: "\\circledast" +}, + "⊜": { + math: "\\circledequal" +}, + "⊝": { + math: "\\circleddash" +}, + "⊞": { + math: "\\boxplus" +}, + "⊟": { + math: "\\boxminus" +}, + "⊠": { + math: "\\boxtimes" +}, + "⊡": { + math: "\\boxdot" +}, + "⊢": { + math: "\\vdash" +}, + "⊣": { + math: "\\dashv" +}, + "⊤": { + math: "\\top" +}, + "⊥": { + math: "\\perp" +}, + "⊦": { + math: "\\assert" +}, + "⊧": { + math: "\\truestate" +}, + "⊨": { + math: "\\forcesextra" +}, + "⊩": { + math: "\\Vdash" +}, + "⊪": { + math: "\\Vvdash" +}, + "⊫": { + math: "\\VDash" +}, + "⊬": { + math: "\\nvdash" +}, + "⊭": { + math: "\\nvDash" +}, + "⊮": { + math: "\\nVdash" +}, + "⊯": { + math: "\\nVDash" +}, + "⊰": { + math: "\\prurel" +}, + "⊱": { + math: "\\scurel" +}, + "⊲": { + math: "\\vartriangleleft" +}, + "⊳": { + math: "\\vartriangleright" +}, + "⊴": { + math: "\\trianglelefteq" +}, + "⊵": { + math: "\\trianglerighteq" +}, + "⊶": { + math: "\\original" +}, + "⊷": { + math: "\\image" +}, + "⊸": { + math: "\\multimap" +}, + "⊹": { + math: "\\hermitconjmatrix" +}, + "⊺": { + math: "\\intercal" +}, + "⊻": { + math: "\\veebar" +}, + "⊼": { + math: "\\barwedge" +}, + "⊽": { + math: "\\barvee" +}, + "⊾": { + math: "\\rightanglearc" +}, + "⊿": { + math: "\\varlrtriangle" +}, + "⋂": { + math: "\\bigcap" +}, + "⋃": { + math: "\\bigcup" +}, + "⋄": { + math: "\\diamond" +}, + "⋅": { + math: "\\cdot" +}, + "⋆": { + math: "\\star" +}, + "⋇": { + math: "\\divideontimes" +}, + "⋈": { + math: "\\bowtie" +}, + "⋉": { + math: "\\ltimes" +}, + "⋊": { + math: "\\rtimes" +}, + "⋋": { + math: "\\leftthreetimes" +}, + "⋌": { + math: "\\rightthreetimes" +}, + "⋍": { + math: "\\backsimeq" +}, + "⋎": { + math: "\\curlyvee" +}, + "⋏": { + math: "\\curlywedge" +}, + "⋐": { + math: "\\Subset" +}, + "⋑": { + math: "\\Supset" +}, + "⋒": { + math: "\\Cap" +}, + "⋓": { + math: "\\Cup" +}, + "⋔": { + math: "\\pitchfork" +}, + "⋕": { + math: "\\hash" +}, + "⋖": { + math: "\\lessdot" +}, + "⋗": { + math: "\\gtrdot" +}, + "⋘": { + math: "\\verymuchless" +}, + "⋙": { + math: "\\verymuchgreater" +}, + "⋚": { + math: "\\lesseqgtr" +}, + "⋛": { + math: "\\gtreqless" +}, + "⋜": { + math: "\\eqless" +}, + "⋝": { + math: "\\eqgtr" +}, + "⋞": { + math: "\\curlyeqprec" +}, + "⋟": { + math: "\\curlyeqsucc" +}, + "⋠": { + math: "\\npreceq" +}, + "⋡": { + math: "\\nsucceq" +}, + "⋢": { + math: "\\not\\sqsubseteq" +}, + "⋣": { + math: "\\not\\sqsupseteq" +}, + "⋤": { + math: "\\sqsubsetneq" +}, + "⋥": { + math: "\\Elzsqspne" +}, + "⋦": { + math: "\\lnsim" +}, + "⋧": { + math: "\\gnsim" +}, + "⋨": { + math: "\\precedesnotsimilar" +}, + "⋩": { + math: "\\succnsim" +}, + "⋪": { + math: "\\ntriangleleft" +}, + "⋫": { + math: "\\ntriangleright" +}, + "⋬": { + math: "\\ntrianglelefteq" +}, + "⋭": { + math: "\\ntrianglerighteq" +}, + "⋮": { + math: "\\vdots" +}, + "⋯": { + math: "\\cdots" +}, + "⋰": { + math: "\\upslopeellipsis" +}, + "⋱": { + math: "\\downslopeellipsis" +}, + "⋲": { + math: "\\disin" +}, + "⋳": { + math: "\\varisins" +}, + "⋴": { + math: "\\isins" +}, + "⋵": { + math: "\\isindot" +}, + "⋶": { + math: "\\barin" +}, + "⋷": { + math: "\\isinobar" +}, + "⋸": { + math: "\\isinvb" +}, + "⋹": { + math: "\\isinE" +}, + "⋺": { + math: "\\nisd" +}, + "⋻": { + math: "\\varnis" +}, + "⋼": { + math: "\\nis" +}, + "⋽": { + math: "\\varniobar" +}, + "⋾": { + math: "\\niobar" +}, + "⋿": { + math: "\\bagmember" +}, + "⌀": { + math: "\\diameter" +}, + "⌂": { + math: "\\house" +}, + "⌅": { + math: "\\varbarwedge", + text: "{\\barwedge}" +}, + "⌆": { + math: "\\perspcorrespond" +}, + "⌈": { + math: "\\lceil" +}, + "⌉": { + math: "\\rceil" +}, + "⌊": { + math: "\\lfloor" +}, + "⌋": { + math: "\\rfloor" +}, + "⌐": { + math: "\\invneg" +}, + "⌑": { + math: "\\wasylozenge" +}, + "⌒": { + math: "\\profline" +}, + "⌓": { + math: "\\profsurf" +}, + "⌕": { + math: "\\recorder" +}, + "⌖": { + math: "{\\mathchar\"2208}" +}, + "⌗": { + math: "\\viewdata" +}, + "⌙": { + math: "\\turnednot" +}, + "⌜": { + math: "\\ulcorner" +}, + "⌝": { + math: "\\urcorner" +}, + "⌞": { + math: "\\llcorner" +}, + "⌟": { + math: "\\lrcorner" +}, + "⌠": { + math: "\\inttop" +}, + "⌡": { + math: "\\intbottom" +}, + "⌢": { + math: "\\frown" +}, + "⌣": { + math: "\\smile" +}, + "〈": { + math: "\\langle" +}, + "〉": { + math: "\\rangle" +}, + "⌬": { + math: "\\varhexagonlrbonds" +}, + "⌲": { + math: "\\conictaper" +}, + "⌶": { + math: "\\topbot" +}, + "⌹": { + math: "\\APLinv" +}, + "⌿": { + math: "\\notslash" +}, + "⍀": { + math: "\\notbackslash" +}, + "⍇": { + math: "\\APLleftarrowbox" +}, + "⍈": { + math: "\\APLrightarrowbox" +}, + "⍉": { + math: "\\invdiameter" +}, + "⍐": { + math: "\\APLuparrowbox" +}, + "⍓": { + math: "\\APLboxupcaret" +}, + "⍗": { + math: "\\APLdownarrowbox" +}, + "⍝": { + math: "\\APLcomment" +}, + "⍞": { + math: "\\APLinput" +}, + "⍟": { + math: "\\APLlog" +}, + "⍰": { + math: "\\APLboxquestion" +}, + "⍼": { + math: "\\rangledownzigzagarrow" +}, + "⎔": { + math: "\\hexagon" +}, + "⎛": { + math: "\\lparenuend" +}, + "⎜": { + math: "\\lparenextender" +}, + "⎝": { + math: "\\lparenlend" +}, + "⎞": { + math: "\\rparenuend" +}, + "⎟": { + math: "\\rparenextender" +}, + "⎠": { + math: "\\rparenlend" +}, + "⎡": { + math: "\\lbrackuend" +}, + "⎢": { + math: "\\lbrackextender" +}, + "⎣": { + math: "\\Elzdlcorn" +}, + "⎤": { + math: "\\rbrackuend" +}, + "⎥": { + math: "\\rbrackextender" +}, + "⎦": { + math: "\\rbracklend" +}, + "⎧": { + math: "\\lbraceuend" +}, + "⎨": { + math: "\\lbracemid" +}, + "⎩": { + math: "\\lbracelend" +}, + "⎪": { + math: "\\vbraceextender" +}, + "⎫": { + math: "\\rbraceuend" +}, + "⎬": { + math: "\\rbracemid" +}, + "⎭": { + math: "\\rbracelend" +}, + "⎮": { + math: "\\intextender" +}, + "⎯": { + math: "\\harrowextender" +}, + "⎰": { + math: "\\lmoustache" +}, + "⎱": { + math: "\\rmoustache" +}, + "⎲": { + math: "\\sumtop" +}, + "⎳": { + math: "\\sumbottom" +}, + "⎴": { + math: "\\overbracket" +}, + "⎵": { + math: "\\underbracket" +}, + "⎶": { + math: "\\bbrktbrk" +}, + "⎷": { + math: "\\sqrtbottom" +}, + "⎸": { + math: "\\lvboxline" +}, + "⎹": { + math: "\\rvboxline" +}, + "⏎": { + math: "\\varcarriagereturn" +}, + "⏜": { + math: "\\overparen" +}, + "⏝": { + math: "\\underparen" +}, + "⏞": { + math: "\\overbrace" +}, + "⏟": { + math: "\\underbrace" +}, + "⏠": { + math: "\\obrbrak" +}, + "⏡": { + math: "\\ubrbrak" +}, + "⏢": { + math: "\\trapezium" +}, + "⏣": { + math: "\\benzenr" +}, + "⏤": { + math: "\\strns" +}, + "⏥": { + math: "\\fltns" +}, + "⏦": { + math: "\\accurrent" +}, + "⏧": { + math: "\\elinters" +}, + "␀": { + text: "NUL" +}, + "␁": { + text: "SOH" +}, + "␂": { + text: "STX" +}, + "␃": { + text: "ETX" +}, + "␄": { + text: "EOT" +}, + "␅": { + text: "ENQ" +}, + "␆": { + text: "ACK" +}, + "␇": { + text: "BEL" +}, + "␈": { + text: "BS" +}, + "␉": { + text: "HT" +}, + "␊": { + text: "LF" +}, + "␋": { + text: "VT" +}, + "␌": { + text: "FF" +}, + "␍": { + text: "CR" +}, + "␎": { + text: "SO" +}, + "␏": { + text: "SI" +}, + "␐": { + text: "DLE" +}, + "␑": { + text: "DC1" +}, + "␒": { + text: "DC2" +}, + "␓": { + text: "DC3" +}, + "␔": { + text: "DC4" +}, + "␕": { + text: "NAK" +}, + "␖": { + text: "SYN" +}, + "␗": { + text: "ETB" +}, + "␘": { + text: "CAN" +}, + "␙": { + text: "EM" +}, + "␚": { + text: "SUB" +}, + "␛": { + text: "ESC" +}, + "␜": { + text: "FS" +}, + "␝": { + text: "GS" +}, + "␞": { + text: "RS" +}, + "␟": { + text: "US" +}, + "␠": { + text: "SP" +}, + "␡": { + text: "DEL" +}, + "␣": { + text: "{\\textvisiblespace}" +}, + "␤": { + text: "NL" +}, + "␥": { + text: "///" +}, + "␦": { + text: "?" +}, + "①": { + text: "\\ding{172}" +}, + "②": { + text: "\\ding{173}" +}, + "③": { + text: "\\ding{174}" +}, + "④": { + text: "\\ding{175}" +}, + "⑤": { + text: "\\ding{176}" +}, + "⑥": { + text: "\\ding{177}" +}, + "⑦": { + text: "\\ding{178}" +}, + "⑧": { + text: "\\ding{179}" +}, + "⑨": { + text: "\\ding{180}" +}, + "⑩": { + text: "\\ding{181}" +}, + "⑪": { + text: "(11)" +}, + "⑫": { + text: "(12)" +}, + "⑬": { + text: "(13)" +}, + "⑭": { + text: "(14)" +}, + "⑮": { + text: "(15)" +}, + "⑯": { + text: "(16)" +}, + "⑰": { + text: "(17)" +}, + "⑱": { + text: "(18)" +}, + "⑲": { + text: "(19)" +}, + "⑳": { + text: "(20)" +}, + "⑴": { + text: "(1)" +}, + "⑵": { + text: "(2)" +}, + "⑶": { + text: "(3)" +}, + "⑷": { + text: "(4)" +}, + "⑸": { + text: "(5)" +}, + "⑹": { + text: "(6)" +}, + "⑺": { + text: "(7)" +}, + "⑻": { + text: "(8)" +}, + "⑼": { + text: "(9)" +}, + "⑽": { + text: "(10)" +}, + "⑾": { + text: "(11)" +}, + "⑿": { + text: "(12)" +}, + "⒀": { + text: "(13)" +}, + "⒁": { + text: "(14)" +}, + "⒂": { + text: "(15)" +}, + "⒃": { + text: "(16)" +}, + "⒄": { + text: "(17)" +}, + "⒅": { + text: "(18)" +}, + "⒆": { + text: "(19)" +}, + "⒇": { + text: "(20)" +}, + "⒈": { + text: "1." +}, + "⒉": { + text: "2." +}, + "⒊": { + text: "3." +}, + "⒋": { + text: "4." +}, + "⒌": { + text: "5." +}, + "⒍": { + text: "6." +}, + "⒎": { + text: "7." +}, + "⒏": { + text: "8." +}, + "⒐": { + text: "9." +}, + "⒑": { + text: "10." +}, + "⒒": { + text: "11." +}, + "⒓": { + text: "12." +}, + "⒔": { + text: "13." +}, + "⒕": { + text: "14." +}, + "⒖": { + text: "15." +}, + "⒗": { + text: "16." +}, + "⒘": { + text: "17." +}, + "⒙": { + text: "18." +}, + "⒚": { + text: "19." +}, + "⒛": { + text: "20." +}, + "⒜": { + text: "(a)" +}, + "⒝": { + text: "(b)" +}, + "⒞": { + text: "(c)" +}, + "⒟": { + text: "(d)" +}, + "⒠": { + text: "(e)" +}, + "⒡": { + text: "(f)" +}, + "⒢": { + text: "(g)" +}, + "⒣": { + text: "(h)" +}, + "⒤": { + text: "(i)" +}, + "⒥": { + text: "(j)" +}, + "⒦": { + text: "(k)" +}, + "⒧": { + text: "(l)" +}, + "⒨": { + text: "(m)" +}, + "⒩": { + text: "(n)" +}, + "⒪": { + text: "(o)" +}, + "⒫": { + text: "(p)" +}, + "⒬": { + text: "(q)" +}, + "⒭": { + text: "(r)" +}, + "⒮": { + text: "(s)" +}, + "⒯": { + text: "(t)" +}, + "⒰": { + text: "(u)" +}, + "⒱": { + text: "(v)" +}, + "⒲": { + text: "(w)" +}, + "⒳": { + text: "(x)" +}, + "⒴": { + text: "(y)" +}, + "⒵": { + text: "(z)" +}, + "Ⓐ": { + text: "(A)" +}, + "Ⓑ": { + text: "(B)" +}, + "Ⓒ": { + text: "(C)" +}, + "Ⓓ": { + text: "(D)" +}, + "Ⓔ": { + text: "(E)" +}, + "Ⓕ": { + text: "(F)" +}, + "Ⓖ": { + text: "(G)" +}, + "Ⓗ": { + text: "(H)" +}, + "Ⓘ": { + text: "(I)" +}, + "Ⓙ": { + text: "(J)" +}, + "Ⓚ": { + text: "(K)" +}, + "Ⓛ": { + text: "(L)" +}, + "Ⓜ": { + text: "(M)" +}, + "Ⓝ": { + text: "(N)" +}, + "Ⓞ": { + text: "(O)" +}, + "Ⓟ": { + text: "(P)" +}, + "Ⓠ": { + text: "(Q)" +}, + "Ⓡ": { + text: "(R)" +}, + "Ⓢ": { + math: "\\circledS" +}, + "Ⓣ": { + text: "(T)" +}, + "Ⓤ": { + text: "(U)" +}, + "Ⓥ": { + text: "(V)" +}, + "Ⓦ": { + text: "(W)" +}, + "Ⓧ": { + text: "(X)" +}, + "Ⓨ": { + text: "(Y)" +}, + "Ⓩ": { + text: "(Z)" +}, + "ⓐ": { + text: "(a)" +}, + "ⓑ": { + text: "(b)" +}, + "ⓒ": { + text: "(c)" +}, + "ⓓ": { + text: "(d)" +}, + "ⓔ": { + text: "(e)" +}, + "ⓕ": { + text: "(f)" +}, + "ⓖ": { + text: "(g)" +}, + "ⓗ": { + text: "(h)" +}, + "ⓘ": { + text: "(i)" +}, + "ⓙ": { + text: "(j)" +}, + "ⓚ": { + text: "(k)" +}, + "ⓛ": { + text: "(l)" +}, + "ⓜ": { + text: "(m)" +}, + "ⓝ": { + text: "(n)" +}, + "ⓞ": { + text: "(o)" +}, + "ⓟ": { + text: "(p)" +}, + "ⓠ": { + text: "(q)" +}, + "ⓡ": { + text: "(r)" +}, + "ⓢ": { + text: "(s)" +}, + "ⓣ": { + text: "(t)" +}, + "ⓤ": { + text: "(u)" +}, + "ⓥ": { + text: "(v)" +}, + "ⓦ": { + text: "(w)" +}, + "ⓧ": { + text: "(x)" +}, + "ⓨ": { + text: "(y)" +}, + "ⓩ": { + text: "(z)" +}, + "⓪": { + text: "(0)" +}, + "─": { + text: "-" +}, + "━": { + text: "=" +}, + "│": { + text: "|" +}, + "┃": { + text: "|" +}, + "┄": { + text: "-" +}, + "┅": { + text: "=" +}, + "┆": { + math: "\\Elzdshfnc" +}, + "┇": { + text: "|" +}, + "┈": { + text: "-" +}, + "┉": { + text: "=" +}, + "┊": { + text: "|" +}, + "┋": { + text: "|" +}, + "┌": { + text: "+" +}, + "┍": { + text: "+" +}, + "┎": { + text: "+" +}, + "┏": { + text: "+" +}, + "┐": { + text: "+" +}, + "┑": { + text: "+" +}, + "┒": { + text: "+" +}, + "┓": { + text: "+" +}, + "└": { + text: "+" +}, + "┕": { + text: "+" +}, + "┖": { + text: "+" +}, + "┗": { + text: "+" +}, + "┘": { + text: "+" +}, + "┙": { + math: "\\Elzsqfnw" +}, + "┚": { + text: "+" +}, + "┛": { + text: "+" +}, + "├": { + text: "+" +}, + "┝": { + text: "+" +}, + "┞": { + text: "+" +}, + "┟": { + text: "+" +}, + "┠": { + text: "+" +}, + "┡": { + text: "+" +}, + "┢": { + text: "+" +}, + "┣": { + text: "+" +}, + "┤": { + text: "+" +}, + "┥": { + text: "+" +}, + "┦": { + text: "+" +}, + "┧": { + text: "+" +}, + "┨": { + text: "+" +}, + "┩": { + text: "+" +}, + "┪": { + text: "+" +}, + "┫": { + text: "+" +}, + "┬": { + text: "+" +}, + "┭": { + text: "+" +}, + "┮": { + text: "+" +}, + "┯": { + text: "+" +}, + "┰": { + text: "+" +}, + "┱": { + text: "+" +}, + "┲": { + text: "+" +}, + "┳": { + text: "+" +}, + "┴": { + text: "+" +}, + "┵": { + text: "+" +}, + "┶": { + text: "+" +}, + "┷": { + text: "+" +}, + "┸": { + text: "+" +}, + "┹": { + text: "+" +}, + "┺": { + text: "+" +}, + "┻": { + text: "+" +}, + "┼": { + text: "+" +}, + "┽": { + text: "+" +}, + "┾": { + text: "+" +}, + "┿": { + text: "+" +}, + "╀": { + text: "+" +}, + "╁": { + text: "+" +}, + "╂": { + text: "+" +}, + "╃": { + text: "+" +}, + "╄": { + text: "+" +}, + "╅": { + text: "+" +}, + "╆": { + text: "+" +}, + "╇": { + text: "+" +}, + "╈": { + text: "+" +}, + "╉": { + text: "+" +}, + "╊": { + text: "+" +}, + "╋": { + text: "+" +}, + "╌": { + text: "-" +}, + "╍": { + text: "=" +}, + "╎": { + text: "|" +}, + "╏": { + text: "|" +}, + "═": { + text: "=" +}, + "║": { + text: "|" +}, + "╒": { + text: "+" +}, + "╓": { + text: "+" +}, + "╔": { + text: "+" +}, + "╕": { + text: "+" +}, + "╖": { + text: "+" +}, + "╗": { + text: "+" +}, + "╘": { + text: "+" +}, + "╙": { + text: "+" +}, + "╚": { + text: "+" +}, + "╛": { + text: "+" +}, + "╜": { + text: "+" +}, + "╝": { + text: "+" +}, + "╞": { + text: "+" +}, + "╟": { + text: "+" +}, + "╠": { + text: "+" +}, + "╡": { + text: "+" +}, + "╢": { + text: "+" +}, + "╣": { + text: "+" +}, + "╤": { + text: "+" +}, + "╥": { + text: "+" +}, + "╦": { + text: "+" +}, + "╧": { + text: "+" +}, + "╨": { + text: "+" +}, + "╩": { + text: "+" +}, + "╪": { + text: "+" +}, + "╫": { + text: "+" +}, + "╬": { + text: "+" +}, + "╭": { + text: "+" +}, + "╮": { + text: "+" +}, + "╯": { + text: "+" +}, + "╰": { + text: "+" +}, + "╱": { + math: "\\diagup" +}, + "╲": { + text: "\\" +}, + "╳": { + text: "X" +}, + "╼": { + text: "-" +}, + "╽": { + text: "|" +}, + "╾": { + text: "-" +}, + "╿": { + text: "|" +}, + "▀": { + math: "\\blockuphalf" +}, + "▄": { + math: "\\blocklowhalf" +}, + "█": { + math: "\\blockfull" +}, + "▌": { + math: "\\blocklefthalf" +}, + "▐": { + math: "\\blockrighthalf" +}, + "░": { + math: "\\blockqtrshaded" +}, + "▒": { + math: "\\blockhalfshaded" +}, + "▓": { + math: "\\blockthreeqtrshaded" +}, + "■": { + math: "\\mdlgblksquare", + text: "\\ding{110}" +}, + "□": { + math: "\\square" +}, + "▢": { + math: "\\squoval" +}, + "▣": { + math: "\\blackinwhitesquare" +}, + "▤": { + math: "\\squarehfill" +}, + "▥": { + math: "\\squarevfill" +}, + "▦": { + math: "\\squarehvfill" +}, + "▧": { + math: "\\squarenwsefill" +}, + "▨": { + math: "\\squareneswfill" +}, + "▩": { + math: "\\squarecrossfill" +}, + "▪": { + math: "\\blacksquare" +}, + "▫": { + math: "\\smwhtsquare" +}, + "▬": { + math: "\\hrectangleblack" +}, + "▭": { + math: "\\fbox{~~}" +}, + "▮": { + math: "\\vrectangleblack" +}, + "▯": { + math: "\\Elzvrecto" +}, + "▰": { + math: "\\parallelogramblack" +}, + "▲": { + math: "\\bigblacktriangleup", + text: "\\ding{115}" +}, + "△": { + math: "\\bigtriangleup" +}, + "▴": { + math: "\\blacktriangle" +}, + "▵": { + math: "\\vartriangle" +}, + "▶": { + math: "\\RHD" +}, + "▷": { + math: "\\rhd" +}, + "▸": { + math: "\\blacktriangleright" +}, + "▹": { + math: "\\triangleright" +}, + "►": { + math: "\\blackpointerright" +}, + "▻": { + math: "\\whitepointerright" +}, + "▼": { + math: "\\bigblacktriangledown", + text: "\\ding{116}" +}, + "▽": { + math: "\\bigtriangledown" +}, + "▾": { + math: "\\blacktriangledown" +}, + "▿": { + math: "\\triangledown" +}, + "◀": { + math: "\\LHD" +}, + "◁": { + math: "\\lhd" +}, + "◂": { + math: "\\blacktriangleleft" +}, + "◃": { + math: "\\triangleleft" +}, + "◄": { + math: "\\blackpointerleft" +}, + "◅": { + math: "\\whitepointerleft" +}, + "◆": { + math: "\\Diamondblack", + text: "\\ding{117}" +}, + "◇": { + math: "\\Diamond" +}, + "◈": { + math: "\\blackinwhitediamond" +}, + "◉": { + math: "\\fisheye" +}, + "◊": { + math: "\\lozenge" +}, + "○": { + math: "\\bigcirc" +}, + "◌": { + math: "\\dottedcircle" +}, + "◍": { + math: "\\circlevertfill" +}, + "◎": { + math: "\\bullseye" +}, + "●": { + math: "\\CIRCLE", + text: "\\ding{108}" +}, + "◐": { + math: "\\Elzcirfl" +}, + "◑": { + math: "\\Elzcirfr" +}, + "◒": { + math: "\\Elzcirfb" +}, + "◓": { + math: "\\circletophalfblack" +}, + "◔": { + math: "\\circleurquadblack" +}, + "◕": { + math: "\\blackcircleulquadwhite" +}, + "◖": { + math: "\\LEFTCIRCLE" +}, + "◗": { + math: "\\RIGHTCIRCLE", + text: "\\ding{119}" +}, + "◘": { + math: "\\Elzrvbull" +}, + "◙": { + math: "\\inversewhitecircle" +}, + "◚": { + math: "\\invwhiteupperhalfcircle" +}, + "◛": { + math: "\\invwhitelowerhalfcircle" +}, + "◜": { + math: "\\ularc" +}, + "◝": { + math: "\\urarc" +}, + "◞": { + math: "\\lrarc" +}, + "◟": { + math: "\\llarc" +}, + "◠": { + math: "\\topsemicircle" +}, + "◡": { + math: "\\botsemicircle" +}, + "◢": { + math: "\\lrblacktriangle" +}, + "◣": { + math: "\\llblacktriangle" +}, + "◤": { + math: "\\ulblacktriangle" +}, + "◥": { + math: "\\urblacktriangle" +}, + "◦": { + math: "\\smwhtcircle" +}, + "◧": { + math: "\\Elzsqfl" +}, + "◨": { + math: "\\Elzsqfr" +}, + "◩": { + math: "\\squareulblack" +}, + "◪": { + math: "\\Elzsqfse" +}, + "◫": { + math: "\\boxbar" +}, + "◬": { + math: "\\trianglecdot" +}, + "◭": { + math: "\\triangleleftblack" +}, + "◮": { + math: "\\trianglerightblack" +}, + "◯": { + math: "\\bigcirc" +}, + "◰": { + math: "\\squareulquad" +}, + "◱": { + math: "\\squarellquad" +}, + "◲": { + math: "\\squarelrquad" +}, + "◳": { + math: "\\squareurquad" +}, + "◴": { + math: "\\circleulquad" +}, + "◵": { + math: "\\circlellquad" +}, + "◶": { + math: "\\circlelrquad" +}, + "◷": { + math: "\\circleurquad" +}, + "◸": { + math: "\\ultriangle" +}, + "◹": { + math: "\\urtriangle" +}, + "◺": { + math: "\\lltriangle" +}, + "◻": { + math: "\\square" +}, + "◼": { + math: "\\blacksquare" +}, + "◽": { + math: "\\mdsmwhtsquare" +}, + "◾": { + math: "\\mdsmblksquare" +}, + "◿": { + math: "\\lrtriangle" +}, + "★": { + math: "\\bigstar", + text: "\\ding{72}" +}, + "☆": { + math: "\\bigwhitestar", + text: "\\ding{73}" +}, + "☉": { + math: "\\Sun" +}, + "☎": { + text: "\\ding{37}" +}, + "☐": { + math: "\\Square" +}, + "☑": { + math: "\\CheckedBox" +}, + "☒": { + math: "\\XBox" +}, + "☓": { + text: "X" +}, + "☕": { + math: "\\steaming" +}, + "☛": { + text: "\\ding{42}" +}, + "☞": { + math: "\\pointright", + text: "\\ding{43}" +}, + "☠": { + math: "\\skull" +}, + "☡": { + math: "\\danger" +}, + "☢": { + math: "\\radiation" +}, + "☣": { + math: "\\biohazard" +}, + "☯": { + math: "\\yinyang" +}, + "☹": { + math: "\\frownie" +}, + "☺": { + math: "\\smiley" +}, + "☻": { + math: "\\blacksmiley" +}, + "☼": { + math: "\\sun" +}, + "☽": { + text: "{\\rightmoon}", + textpackages: [ + "wasysym" + ] +}, + "☾": { + text: "{\\leftmoon}", + textpackages: [ + "wasysym" + ] +}, + "☿": { + math: "\\mercury", + text: "{\\mercury}" +}, + "♀": { + math: "\\female", + text: "{\\venus}" +}, + "♁": { + math: "\\earth" +}, + "♂": { + math: "\\male", + text: "{\\male}" +}, + "♃": { + math: "\\jupiter", + text: "{\\jupiter}" +}, + "♄": { + math: "\\saturn", + text: "{\\saturn}" +}, + "♅": { + math: "\\uranus", + text: "{\\uranus}" +}, + "♆": { + math: "\\neptune", + text: "{\\neptune}" +}, + "♇": { + math: "\\pluto", + text: "{\\pluto}" +}, + "♈": { + math: "\\aries", + text: "{\\aries}" +}, + "♉": { + math: "\\taurus", + text: "{\\taurus}" +}, + "♊": { + math: "\\gemini", + text: "{\\gemini}" +}, + "♋": { + math: "\\cancer", + text: "{\\cancer}" +}, + "♌": { + math: "\\leo", + text: "{\\leo}" +}, + "♍": { + math: "\\virgo", + text: "{\\virgo}" +}, + "♎": { + math: "\\libra", + text: "{\\libra}" +}, + "♏": { + math: "\\scorpio", + text: "{\\scorpio}" +}, + "♐": { + math: "\\sagittarius", + text: "{\\sagittarius}" +}, + "♑": { + math: "\\capricornus", + text: "{\\capricornus}" +}, + "♒": { + math: "\\aquarius", + text: "{\\aquarius}" +}, + "♓": { + math: "\\pisces", + text: "{\\pisces}" +}, + "♠": { + math: "\\spadesuit", + text: "\\ding{171}" +}, + "♡": { + math: "\\heartsuit" +}, + "♢": { + math: "\\diamond" +}, + "♣": { + math: "\\clubsuit", + text: "\\ding{168}" +}, + "♤": { + math: "\\varspadesuit" +}, + "♥": { + math: "\\varheartsuit", + text: "\\ding{170}" +}, + "♦": { + math: "\\vardiamondsuit", + text: "\\ding{169}" +}, + "♧": { + math: "\\varclubsuit" +}, + "♩": { + math: "\\quarternote", + text: "{\\quarternote}" +}, + "♪": { + math: "\\eighthnote", + text: "{\\eighthnote}" +}, + "♫": { + math: "\\twonotes" +}, + "♬": { + math: "\\sixteenthnote" +}, + "♭": { + math: "\\flat" +}, + "♮": { + math: "\\natural" +}, + "♯": { + math: "\\sharp" +}, + "♻": { + math: "\\recycle" +}, + "♾": { + math: "\\acidfree" +}, + "⚀": { + math: "\\dicei" +}, + "⚁": { + math: "\\diceii" +}, + "⚂": { + math: "\\diceiii" +}, + "⚃": { + math: "\\diceiv" +}, + "⚄": { + math: "\\dicev" +}, + "⚅": { + math: "\\dicevi" +}, + "⚆": { + math: "\\circledrightdot" +}, + "⚇": { + math: "\\circledtwodots" +}, + "⚈": { + math: "\\blackcircledrightdot" +}, + "⚉": { + math: "\\blackcircledtwodots" +}, + "⚓": { + math: "\\anchor" +}, + "⚔": { + math: "\\swords" +}, + "⚠": { + math: "\\warning" +}, + "⚥": { + math: "\\Hermaphrodite" +}, + "⚪": { + math: "\\medcirc" +}, + "⚫": { + math: "\\medbullet" +}, + "⚬": { + math: "\\mdsmwhtcircle" +}, + "⚲": { + math: "\\neuter" +}, + "✁": { + text: "\\ding{33}" +}, + "✂": { + text: "\\ding{34}" +}, + "✃": { + text: "\\ding{35}" +}, + "✄": { + text: "\\ding{36}" +}, + "✆": { + text: "\\ding{38}" +}, + "✇": { + text: "\\ding{39}" +}, + "✈": { + text: "\\ding{40}" +}, + "✉": { + text: "\\ding{41}" +}, + "✌": { + text: "\\ding{44}" +}, + "✍": { + text: "\\ding{45}" +}, + "✎": { + math: "\\pencil", + text: "\\ding{46}" +}, + "✏": { + text: "\\ding{47}" +}, + "✐": { + text: "\\ding{48}" +}, + "✑": { + text: "\\ding{49}" +}, + "✒": { + text: "\\ding{50}" +}, + "✓": { + math: "\\checkmark", + text: "\\ding{51}" +}, + "✔": { + text: "\\ding{52}" +}, + "✕": { + text: "\\ding{53}" +}, + "✖": { + text: "\\ding{54}" +}, + "✗": { + math: "\\ballotx", + text: "\\ding{55}" +}, + "✘": { + text: "\\ding{56}" +}, + "✙": { + text: "\\ding{57}" +}, + "✚": { + text: "\\ding{58}" +}, + "✛": { + text: "\\ding{59}" +}, + "✜": { + text: "\\ding{60}" +}, + "✝": { + text: "\\ding{61}" +}, + "✞": { + text: "\\ding{62}" +}, + "✟": { + text: "\\ding{63}" +}, + "✠": { + math: "\\maltese", + text: "\\ding{64}" +}, + "✡": { + text: "\\ding{65}" +}, + "✢": { + text: "\\ding{66}" +}, + "✣": { + text: "\\ding{67}" +}, + "✤": { + text: "\\ding{68}" +}, + "✥": { + text: "\\ding{69}" +}, + "✦": { + text: "\\ding{70}" +}, + "✧": { + text: "\\ding{71}" +}, + "✩": { + text: "\\ding{73}" +}, + "✪": { + math: "\\circledstar", + text: "\\ding{74}" +}, + "✫": { + text: "\\ding{75}" +}, + "✬": { + text: "\\ding{76}" +}, + "✭": { + text: "\\ding{77}" +}, + "✮": { + text: "\\ding{78}" +}, + "✯": { + text: "\\ding{79}" +}, + "✰": { + text: "\\ding{80}" +}, + "✱": { + text: "\\ding{81}" +}, + "✲": { + text: "\\ding{82}" +}, + "✳": { + text: "\\ding{83}" +}, + "✴": { + text: "\\ding{84}" +}, + "✵": { + text: "\\ding{85}" +}, + "✶": { + math: "\\varstar", + text: "\\ding{86}" +}, + "✷": { + text: "\\ding{87}" +}, + "✸": { + text: "\\ding{88}" +}, + "✹": { + text: "\\ding{89}" +}, + "✺": { + text: "\\ding{90}" +}, + "✻": { + text: "\\ding{91}" +}, + "✼": { + text: "\\ding{92}" +}, + "✽": { + math: "\\dingasterisk", + text: "\\ding{93}" +}, + "✾": { + text: "\\ding{94}" +}, + "✿": { + text: "\\ding{95}" +}, + "❀": { + text: "\\ding{96}" +}, + "❁": { + text: "\\ding{97}" +}, + "❂": { + text: "\\ding{98}" +}, + "❃": { + text: "\\ding{99}" +}, + "❄": { + text: "\\ding{100}" +}, + "❅": { + text: "\\ding{101}" +}, + "❆": { + text: "\\ding{102}" +}, + "❇": { + text: "\\ding{103}" +}, + "❈": { + text: "\\ding{104}" +}, + "❉": { + text: "\\ding{105}" +}, + "❊": { + text: "\\ding{106}" +}, + "❋": { + text: "\\ding{107}" +}, + "❍": { + text: "\\ding{109}" +}, + "❏": { + text: "\\ding{111}" +}, + "❐": { + text: "\\ding{112}" +}, + "❑": { + text: "\\ding{113}" +}, + "❒": { + text: "\\ding{114}" +}, + "❖": { + text: "\\ding{118}" +}, + "❘": { + text: "\\ding{120}" +}, + "❙": { + text: "\\ding{121}" +}, + "❚": { + text: "\\ding{122}" +}, + "❛": { + text: "\\ding{123}" +}, + "❜": { + text: "\\ding{124}" +}, + "❝": { + text: "\\ding{125}" +}, + "❞": { + text: "\\ding{126}" +}, + "❡": { + text: "\\ding{161}" +}, + "❢": { + text: "\\ding{162}" +}, + "❣": { + text: "\\ding{163}" +}, + "❤": { + text: "\\ding{164}" +}, + "❥": { + text: "\\ding{165}" +}, + "❦": { + text: "\\ding{166}" +}, + "❧": { + text: "\\ding{167}" +}, + "❲": { + math: "\\lbrbrak" +}, + "❳": { + math: "\\rbrbrak" +}, + "❶": { + text: "\\ding{182}" +}, + "❷": { + text: "\\ding{183}" +}, + "❸": { + text: "\\ding{184}" +}, + "❹": { + text: "\\ding{185}" +}, + "❺": { + text: "\\ding{186}" +}, + "❻": { + text: "\\ding{187}" +}, + "❼": { + text: "\\ding{188}" +}, + "❽": { + text: "\\ding{189}" +}, + "❾": { + text: "\\ding{190}" +}, + "❿": { + text: "\\ding{191}" +}, + "➀": { + text: "\\ding{192}" +}, + "➁": { + text: "\\ding{193}" +}, + "➂": { + text: "\\ding{194}" +}, + "➃": { + text: "\\ding{195}" +}, + "➄": { + text: "\\ding{196}" +}, + "➅": { + text: "\\ding{197}" +}, + "➆": { + text: "\\ding{198}" +}, + "➇": { + text: "\\ding{199}" +}, + "➈": { + text: "\\ding{200}" +}, + "➉": { + text: "\\ding{201}" +}, + "➊": { + text: "\\ding{202}" +}, + "➋": { + text: "\\ding{203}" +}, + "➌": { + text: "\\ding{204}" +}, + "➍": { + text: "\\ding{205}" +}, + "➎": { + text: "\\ding{206}" +}, + "➏": { + text: "\\ding{207}" +}, + "➐": { + text: "\\ding{208}" +}, + "➑": { + text: "\\ding{209}" +}, + "➒": { + text: "\\ding{210}" +}, + "➓": { + text: "\\ding{211}" +}, + "➔": { + text: "\\ding{212}" +}, + "➘": { + text: "\\ding{216}" +}, + "➙": { + text: "\\ding{217}" +}, + "➚": { + text: "\\ding{218}" +}, + "➛": { + math: "\\draftingarrow", + text: "\\ding{219}" +}, + "➜": { + text: "\\ding{220}" +}, + "➝": { + text: "\\ding{221}" +}, + "➞": { + text: "\\ding{222}" +}, + "➟": { + text: "\\ding{223}" +}, + "➠": { + text: "\\ding{224}" +}, + "➡": { + text: "\\ding{225}" +}, + "➢": { + math: "\\arrowbullet", + text: "\\ding{226}" +}, + "➣": { + text: "\\ding{227}" +}, + "➤": { + text: "\\ding{228}" +}, + "➥": { + text: "\\ding{229}" +}, + "➦": { + text: "\\ding{230}" +}, + "➧": { + text: "\\ding{231}" +}, + "➨": { + text: "\\ding{232}" +}, + "➩": { + text: "\\ding{233}" +}, + "➪": { + text: "\\ding{234}" +}, + "➫": { + text: "\\ding{235}" +}, + "➬": { + text: "\\ding{236}" +}, + "➭": { + text: "\\ding{237}" +}, + "➮": { + text: "\\ding{238}" +}, + "➯": { + text: "\\ding{239}" +}, + "➱": { + text: "\\ding{241}" +}, + "➲": { + text: "\\ding{242}" +}, + "➳": { + text: "\\ding{243}" +}, + "➴": { + text: "\\ding{244}" +}, + "➵": { + text: "\\ding{245}" +}, + "➶": { + text: "\\ding{246}" +}, + "➷": { + text: "\\ding{247}" +}, + "➸": { + text: "\\ding{248}" +}, + "➹": { + text: "\\ding{249}" +}, + "➺": { + text: "\\ding{250}" +}, + "➻": { + text: "\\ding{251}" +}, + "➼": { + text: "\\ding{252}" +}, + "➽": { + text: "\\ding{253}" +}, + "➾": { + text: "\\ding{254}" +}, + "⟀": { + math: "\\threedangle" +}, + "⟁": { + math: "\\whiteinwhitetriangle" +}, + "⟂": { + math: "\\perp" +}, + "⟃": { + math: "\\subsetcirc" +}, + "⟄": { + math: "\\supsetcirc" +}, + "⟅": { + math: "\\Lbag" +}, + "⟆": { + math: "\\Rbag" +}, + "⟇": { + math: "\\veedot" +}, + "⟈": { + math: "\\bsolhsub" +}, + "⟉": { + math: "\\suphsol" +}, + "⟌": { + math: "\\longdivision" +}, + "⟐": { + math: "\\Diamonddot" +}, + "⟑": { + math: "\\wedgedot" +}, + "⟒": { + math: "\\upin" +}, + "⟓": { + math: "\\pullback" +}, + "⟔": { + math: "\\pushout" +}, + "⟕": { + math: "\\leftouterjoin" +}, + "⟖": { + math: "\\rightouterjoin" +}, + "⟗": { + math: "\\fullouterjoin" +}, + "⟘": { + math: "\\bigbot" +}, + "⟙": { + math: "\\bigtop" +}, + "⟚": { + math: "\\DashVDash" +}, + "⟛": { + math: "\\dashVdash" +}, + "⟜": { + math: "\\multimapinv" +}, + "⟝": { + math: "\\vlongdash" +}, + "⟞": { + math: "\\longdashv" +}, + "⟟": { + math: "\\cirbot" +}, + "⟠": { + math: "\\lozengeminus" +}, + "⟡": { + math: "\\concavediamond" +}, + "⟢": { + math: "\\concavediamondtickleft" +}, + "⟣": { + math: "\\concavediamondtickright" +}, + "⟤": { + math: "\\whitesquaretickleft" +}, + "⟥": { + math: "\\whitesquaretickright" +}, + "⟦": { + math: "\\llbracket" +}, + "⟧": { + math: "\\rrbracket" +}, + "⟨": { + math: "\\langle" +}, + "⟩": { + math: "\\rangle" +}, + "⟪": { + math: "\\lang" +}, + "⟫": { + math: "\\rang" +}, + "⟬": { + math: "\\Lbrbrak" +}, + "⟭": { + math: "\\Rbrbrak" +}, + "⟮": { + math: "\\lgroup" +}, + "⟯": { + math: "\\rgroup" +}, + "⟰": { + math: "\\UUparrow" +}, + "⟱": { + math: "\\DDownarrow" +}, + "⟲": { + math: "\\acwgapcirclearrow" +}, + "⟳": { + math: "\\cwgapcirclearrow" +}, + "⟴": { + math: "\\rightarrowonoplus" +}, + "⟵": { + math: "\\longleftarrow" +}, + "⟶": { + math: "\\longrightarrow" +}, + "⟷": { + math: "\\longleftrightarrow" +}, + "⟸": { + math: "\\Longleftarrow" +}, + "⟹": { + math: "\\Longrightarrow" +}, + "⟺": { + math: "\\Longleftrightarrow" +}, + "⟻": { + math: "\\longmapsfrom" +}, + "⟼": { + math: "\\longmapsto" +}, + "⟽": { + math: "\\Longmapsfrom" +}, + "⟾": { + math: "\\Longmapsto" +}, + "⟿": { + math: "\\sim\\joinrel\\leadsto" +}, + "⤀": { + math: "\\psur" +}, + "⤁": { + math: "\\nVtwoheadrightarrow" +}, + "⤂": { + math: "\\nvLeftarrow" +}, + "⤃": { + math: "\\nvRightarrow" +}, + "⤄": { + math: "\\nvLeftrightarrow" +}, + "⤆": { + math: "\\Mapsfrom" +}, + "⤇": { + math: "\\Mapsto" +}, + "⤈": { + math: "\\downarrowbarred" +}, + "⤉": { + math: "\\uparrowbarred" +}, + "⤊": { + math: "\\Uuparrow" +}, + "⤋": { + math: "\\Ddownarrow" +}, + "⤌": { + math: "\\leftbkarrow" +}, + "⤍": { + math: "\\rightbkarrow" +}, + "⤎": { + math: "\\leftdbkarrow" +}, + "⤏": { + math: "\\dbkarow" +}, + "⤐": { + math: "\\drbkarow" +}, + "⤑": { + math: "\\rightdotarrow" +}, + "⤒": { + math: "\\UpArrowBar" +}, + "⤓": { + math: "\\DownArrowBar" +}, + "⤔": { + math: "\\pinj" +}, + "⤕": { + math: "\\finj" +}, + "⤖": { + math: "\\bij" +}, + "⤗": { + math: "\\nvtwoheadrightarrowtail" +}, + "⤘": { + math: "\\nVtwoheadrightarrowtail" +}, + "⤙": { + math: "\\lefttail" +}, + "⤚": { + math: "\\righttail" +}, + "⤛": { + math: "\\leftdbltail" +}, + "⤜": { + math: "\\rightdbltail" +}, + "⤝": { + math: "\\diamondleftarrow" +}, + "⤞": { + math: "\\rightarrowdiamond" +}, + "⤟": { + math: "\\diamondleftarrowbar" +}, + "⤠": { + math: "\\barrightarrowdiamond" +}, + "⤡": { + math: "\\nwsearrow" +}, + "⤢": { + math: "\\neswarrow" +}, + "⤫": { + math: "\\rdiagovfdiag" +}, + "⤬": { + math: "\\fdiagovrdiag" +}, + "⤭": { + math: "\\seovnearrow" +}, + "⤮": { + math: "\\neovsearrow" +}, + "⤯": { + math: "\\fdiagovnearrow" +}, + "⤰": { + math: "\\rdiagovsearrow" +}, + "⤱": { + math: "\\neovnwarrow" +}, + "⤲": { + math: "\\nwovnearrow" +}, + "⤴": { + math: "\\uprightcurvearrow" +}, + "⤵": { + math: "\\downrightcurvedarrow" +}, + "⤸": { + math: "\\cwrightarcarrow" +}, + "⤹": { + math: "\\acwleftarcarrow" +}, + "⤺": { + math: "\\acwoverarcarrow" +}, + "⤻": { + math: "\\acwunderarcarrow" +}, + "⤼": { + math: "\\curvearrowrightminus" +}, + "⤽": { + math: "\\curvearrowleftplus" +}, + "⤾": { + math: "\\cwundercurvearrow" +}, + "⤿": { + math: "\\ccwundercurvearrow" +}, + "⥀": { + math: "\\Elolarr" +}, + "⥁": { + math: "\\Elorarr" +}, + "⥂": { + math: "\\ElzRlarr" +}, + "⥃": { + math: "\\leftarrowshortrightarrow" +}, + "⥄": { + math: "\\ElzrLarr" +}, + "⥅": { + math: "\\rightarrowplus" +}, + "⥆": { + math: "\\leftarrowplus" +}, + "⥇": { + math: "\\Elzrarrx" +}, + "⥈": { + math: "\\leftrightarrowcircle" +}, + "⥉": { + math: "\\twoheaduparrowcircle" +}, + "⥊": { + math: "\\leftrightharpoon" +}, + "⥋": { + math: "\\rightleftharpoon" +}, + "⥌": { + math: "\\updownharpoonrightleft" +}, + "⥍": { + math: "\\updownharpoonleftright" +}, + "⥎": { + math: "\\LeftRightVector" +}, + "⥏": { + math: "\\RightUpDownVector" +}, + "⥐": { + math: "\\DownLeftRightVector" +}, + "⥑": { + math: "\\LeftUpDownVector" +}, + "⥒": { + math: "\\LeftVectorBar" +}, + "⥓": { + math: "\\RightVectorBar" +}, + "⥔": { + math: "\\RightUpVectorBar" +}, + "⥕": { + math: "\\RightDownVectorBar" +}, + "⥖": { + math: "\\DownLeftVectorBar" +}, + "⥗": { + math: "\\DownRightVectorBar" +}, + "⥘": { + math: "\\LeftUpVectorBar" +}, + "⥙": { + math: "\\LeftDownVectorBar" +}, + "⥚": { + math: "\\LeftTeeVector" +}, + "⥛": { + math: "\\RightTeeVector" +}, + "⥜": { + math: "\\RightUpTeeVector" +}, + "⥝": { + math: "\\RightDownTeeVector" +}, + "⥞": { + math: "\\DownLeftTeeVector" +}, + "⥟": { + math: "\\DownRightTeeVector" +}, + "⥠": { + math: "\\LeftUpTeeVector" +}, + "⥡": { + math: "\\LeftDownTeeVector" +}, + "⥢": { + math: "\\leftleftharpoons" +}, + "⥣": { + math: "\\upupharpoons" +}, + "⥤": { + math: "\\rightrightharpoons" +}, + "⥥": { + math: "\\downdownharpoons" +}, + "⥦": { + math: "\\leftrightharpoonsup" +}, + "⥧": { + math: "\\leftrightharpoonsdown" +}, + "⥨": { + math: "\\rightleftharpoonsup" +}, + "⥩": { + math: "\\rightleftharpoonsdown" +}, + "⥪": { + math: "\\leftbarharpoon" +}, + "⥫": { + math: "\\barleftharpoon" +}, + "⥬": { + math: "\\rightbarharpoon" +}, + "⥭": { + math: "\\barrightharpoon" +}, + "⥮": { + math: "\\UpEquilibrium" +}, + "⥯": { + math: "\\ReverseUpEquilibrium" +}, + "⥰": { + math: "\\RoundImplies" +}, + "⥱": { + math: "\\equalrightarrow" +}, + "⥲": { + math: "\\similarrightarrow" +}, + "⥳": { + math: "\\leftarrowsimilar" +}, + "⥴": { + math: "\\rightarrowsimilar" +}, + "⥵": { + math: "\\rightarrowapprox" +}, + "⥶": { + math: "\\ltlarr" +}, + "⥷": { + math: "\\leftarrowless" +}, + "⥸": { + math: "\\gtrarr" +}, + "⥹": { + math: "\\subrarr" +}, + "⥺": { + math: "\\leftarrowsubset" +}, + "⥻": { + math: "\\suplarr" +}, + "⥾": { + math: "\\upfishtail" +}, + "⥿": { + math: "\\downfishtail" +}, + "⦀": { + math: "\\Elztfnc" +}, + "⦁": { + math: "\\spot" +}, + "⦂": { + math: "\\typecolon" +}, + "⦃": { + math: "\\lBrace" +}, + "⦄": { + math: "\\rBrace" +}, + "⦆": { + math: "\\Elroang" +}, + "⦇": { + math: "\\limg" +}, + "⦈": { + math: "\\rimg" +}, + "⦉": { + math: "\\lblot" +}, + "⦊": { + math: "\\rblot" +}, + "⦋": { + math: "\\lbrackubar" +}, + "⦌": { + math: "\\rbrackubar" +}, + "⦍": { + math: "\\lbrackultick" +}, + "⦎": { + math: "\\rbracklrtick" +}, + "⦏": { + math: "\\lbracklltick" +}, + "⦐": { + math: "\\rbrackurtick" +}, + "⦑": { + math: "\\langledot" +}, + "⦒": { + math: "\\rangledot" +}, + "⦓": { + math: "<\\kern-0.58em(" +}, + "⦕": { + math: "\\Lparengtr" +}, + "⦖": { + math: "\\Rparenless" +}, + "⦗": { + math: "\\lblkbrbrak" +}, + "⦘": { + math: "\\rblkbrbrak" +}, + "⦙": { + math: "\\Elzddfnc" +}, + "⦚": { + math: "\\vzigzag" +}, + "⦛": { + math: "\\measuredangleleft" +}, + "⦜": { + math: "\\Angle" +}, + "⦝": { + math: "\\rightanglemdot" +}, + "⦞": { + math: "\\angles" +}, + "⦟": { + math: "\\angdnr" +}, + "⦠": { + math: "\\Elzlpargt" +}, + "⦡": { + math: "\\sphericalangleup" +}, + "⦢": { + math: "\\turnangle" +}, + "⦣": { + math: "\\revangle" +}, + "⦤": { + math: "\\angleubar" +}, + "⦥": { + math: "\\revangleubar" +}, + "⦦": { + math: "\\wideangledown" +}, + "⦧": { + math: "\\wideangleup" +}, + "⦨": { + math: "\\measanglerutone" +}, + "⦩": { + math: "\\measanglelutonw" +}, + "⦪": { + math: "\\measanglerdtose" +}, + "⦫": { + math: "\\measangleldtosw" +}, + "⦬": { + math: "\\measangleurtone" +}, + "⦭": { + math: "\\measangleultonw" +}, + "⦮": { + math: "\\measangledrtose" +}, + "⦯": { + math: "\\measangledltosw" +}, + "⦰": { + math: "\\revemptyset" +}, + "⦱": { + math: "\\emptysetobar" +}, + "⦲": { + math: "\\emptysetocirc" +}, + "⦳": { + math: "\\emptysetoarr" +}, + "⦴": { + math: "\\emptysetoarrl" +}, + "⦷": { + math: "\\circledparallel" +}, + "⦸": { + math: "\\circledbslash" +}, + "⦹": { + math: "\\operp" +}, + "⦺": { + math: "\\obot" +}, + "⦻": { + math: "\\olcross" +}, + "⦼": { + math: "\\odotslashdot" +}, + "⦽": { + math: "\\uparrowoncircle" +}, + "⦾": { + math: "\\circledwhitebullet" +}, + "⦿": { + math: "\\circledbullet" +}, + "⧀": { + math: "\\circledless" +}, + "⧁": { + math: "\\circledgtr" +}, + "⧂": { + math: "\\cirscir" +}, + "⧃": { + math: "\\cirE" +}, + "⧄": { + math: "\\boxslash" +}, + "⧅": { + math: "\\boxbslash" +}, + "⧆": { + math: "\\boxast" +}, + "⧇": { + math: "\\boxcircle" +}, + "⧈": { + math: "\\boxbox" +}, + "⧉": { + math: "\\boxonbox" +}, + "⧊": { + math: "\\ElzLap" +}, + "⧋": { + math: "\\Elzdefas" +}, + "⧌": { + math: "\\triangles" +}, + "⧍": { + math: "\\triangleserifs" +}, + "⧎": { + math: "\\rtriltri" +}, + "⧏": { + math: "\\LeftTriangleBar" +}, + "⧏̸": { + math: "\\NotLeftTriangleBar" +}, + "⧐": { + math: "\\RightTriangleBar" +}, + "⧐̸": { + math: "\\NotRightTriangleBar" +}, + "⧑": { + math: "\\lfbowtie" +}, + "⧒": { + math: "\\rfbowtie" +}, + "⧓": { + math: "\\fbowtie" +}, + "⧔": { + math: "\\lftimes" +}, + "⧕": { + math: "\\rftimes" +}, + "⧖": { + math: "\\hourglass" +}, + "⧗": { + math: "\\blackhourglass" +}, + "⧘": { + math: "\\lvzigzag" +}, + "⧙": { + math: "\\rvzigzag" +}, + "⧚": { + math: "\\Lvzigzag" +}, + "⧛": { + math: "\\Rvzigzag" +}, + "⧝": { + math: "\\tieinfty" +}, + "⧞": { + math: "\\nvinfty" +}, + "⧟": { + math: "\\multimapboth" +}, + "⧠": { + math: "\\laplac" +}, + "⧡": { + math: "\\lrtriangleeq" +}, + "⧢": { + math: "\\shuffle" +}, + "⧣": { + math: "\\eparsl" +}, + "⧤": { + math: "\\smeparsl" +}, + "⧥": { + math: "\\eqvparsl" +}, + "⧦": { + math: "\\gleichstark" +}, + "⧧": { + math: "\\thermod" +}, + "⧨": { + math: "\\downtriangleleftblack" +}, + "⧩": { + math: "\\downtrianglerightblack" +}, + "⧪": { + math: "\\blackdiamonddownarrow" +}, + "⧫": { + math: "\\blacklozenge" +}, + "⧬": { + math: "\\circledownarrow" +}, + "⧭": { + math: "\\blackcircledownarrow" +}, + "⧮": { + math: "\\errbarsquare" +}, + "⧯": { + math: "\\errbarblacksquare" +}, + "⧰": { + math: "\\errbardiamond" +}, + "⧱": { + math: "\\errbarblackdiamond" +}, + "⧲": { + math: "\\errbarcircle" +}, + "⧳": { + math: "\\errbarblackcircle" +}, + "⧴": { + math: "\\RuleDelayed" +}, + "⧵": { + math: "\\setminus" +}, + "⧶": { + math: "\\dsol" +}, + "⧷": { + math: "\\rsolbar" +}, + "⧸": { + math: "\\xsol" +}, + "⧹": { + math: "\\zhide" +}, + "⧺": { + math: "\\doubleplus" +}, + "⧻": { + math: "\\tripleplus" +}, + "⧼": { + math: "\\lcurvyangle" +}, + "⧽": { + math: "\\rcurvyangle" +}, + "⧾": { + math: "\\tplus" +}, + "⧿": { + math: "\\tminus" +}, + "⨀": { + math: "\\bigodot" +}, + "⨁": { + math: "\\bigoplus" +}, + "⨂": { + math: "\\bigotimes" +}, + "⨃": { + math: "\\bigcupdot" +}, + "⨄": { + math: "\\Elxuplus" +}, + "⨅": { + math: "\\ElzThr" +}, + "⨆": { + math: "\\Elxsqcup" +}, + "⨇": { + math: "\\ElzInf" +}, + "⨈": { + math: "\\ElzSup" +}, + "⨉": { + math: "\\varprod" +}, + "⨊": { + math: "\\modtwosum" +}, + "⨋": { + math: "\\sumint" +}, + "⨌": { + math: "\\iiiint" +}, + "⨍": { + math: "\\ElzCint" +}, + "⨎": { + math: "\\intBar" +}, + "⨏": { + math: "\\clockoint" +}, + "⨑": { + math: "\\awint" +}, + "⨒": { + math: "\\rppolint" +}, + "⨓": { + math: "\\scpolint" +}, + "⨔": { + math: "\\npolint" +}, + "⨕": { + math: "\\pointint" +}, + "⨖": { + math: "\\sqrint" +}, + "⨗": { + math: "\\intlarhk" +}, + "⨘": { + math: "\\intx" +}, + "⨙": { + math: "\\intcap" +}, + "⨚": { + math: "\\intcup" +}, + "⨛": { + math: "\\upint" +}, + "⨜": { + math: "\\lowint" +}, + "⨝": { + math: "\\Join" +}, + "⨞": { + math: "\\bigtriangleleft" +}, + "⨟": { + math: "\\zcmp" +}, + "⨠": { + math: "\\zpipe" +}, + "⨡": { + math: "\\zproject" +}, + "⨢": { + math: "\\ringplus" +}, + "⨣": { + math: "\\plushat" +}, + "⨤": { + math: "\\simplus" +}, + "⨦": { + math: "\\plussim" +}, + "⨧": { + math: "\\plussubtwo" +}, + "⨨": { + math: "\\plustrif" +}, + "⨩": { + math: "\\commaminus" +}, + "⨫": { + math: "\\minusfdots" +}, + "⨬": { + math: "\\minusrdots" +}, + "⨯": { + math: "\\ElzTimes" +}, + "⨰": { + math: "\\dottimes" +}, + "⨱": { + math: "\\timesbar" +}, + "⨲": { + math: "\\btimes" +}, + "⨳": { + math: "\\smashtimes" +}, + "⨶": { + math: "\\otimeshat" +}, + "⨷": { + math: "\\Otimes" +}, + "⨸": { + math: "\\odiv" +}, + "⨹": { + math: "\\triangleplus" +}, + "⨺": { + math: "\\triangleminus" +}, + "⨻": { + math: "\\triangletimes" +}, + "⨽": { + math: "\\intprodr" +}, + "⨾": { + math: "\\fcmp" +}, + "⨿": { + math: "\\amalg" +}, + "⩀": { + math: "\\capdot" +}, + "⩁": { + math: "\\uminus" +}, + "⩂": { + math: "\\barcup" +}, + "⩃": { + math: "\\barcap" +}, + "⩄": { + math: "\\capwedge" +}, + "⩅": { + math: "\\cupvee" +}, + "⩆": { + math: "\\cupovercap" +}, + "⩇": { + math: "\\capovercup" +}, + "⩈": { + math: "\\cupbarcap" +}, + "⩉": { + math: "\\capbarcup" +}, + "⩊": { + math: "\\twocups" +}, + "⩋": { + math: "\\twocaps" +}, + "⩌": { + math: "\\closedvarcup" +}, + "⩍": { + math: "\\closedvarcap" +}, + "⩎": { + math: "\\Sqcap" +}, + "⩏": { + math: "\\Sqcup" +}, + "⩐": { + math: "\\closedvarcupsmashprod" +}, + "⩑": { + math: "\\wedgeodot" +}, + "⩒": { + math: "\\veeodot" +}, + "⩓": { + math: "\\ElzAnd" +}, + "⩔": { + math: "\\ElzOr" +}, + "⩖": { + math: "\\ElOr" +}, + "⩗": { + math: "\\bigslopedvee" +}, + "⩘": { + math: "\\bigslopedwedge" +}, + "⩙": { + math: "\\veeonwedge" +}, + "⩚": { + math: "\\wedgemidvert" +}, + "⩛": { + math: "\\veemidvert" +}, + "⩜": { + math: "\\midbarwedge" +}, + "⩝": { + math: "\\midbarvee" +}, + "⩞": { + math: "\\perspcorrespond" +}, + "⩟": { + math: "\\Elzminhat" +}, + "⩠": { + math: "\\wedgedoublebar" +}, + "⩡": { + math: "\\varveebar" +}, + "⩢": { + math: "\\doublebarvee" +}, + "⩤": { + math: "\\dsub" +}, + "⩥": { + math: "\\rsub" +}, + "⩦": { + math: "\\eqdot" +}, + "⩧": { + math: "\\dotequiv" +}, + "⩨": { + math: "\\equivVert" +}, + "⩩": { + math: "\\equivVvert" +}, + "⩪": { + math: "\\dotsim" +}, + "⩫": { + math: "\\simrdots" +}, + "⩬": { + math: "\\simminussim" +}, + "⩭": { + math: "\\congdot" +}, + "⩮": { + math: "\\stackrel{*}{=}" +}, + "⩯": { + math: "\\hatapprox" +}, + "⩰": { + math: "\\approxeqq" +}, + "⩱": { + math: "\\eqqplus" +}, + "⩲": { + math: "\\pluseqq" +}, + "⩳": { + math: "\\eqqsim" +}, + "⩴": { + math: "\\Coloneqq" +}, + "⩵": { + math: "\\Equal" +}, + "⩶": { + math: "\\Same" +}, + "⩷": { + math: "\\ddotseq" +}, + "⩸": { + math: "\\equivDD" +}, + "⩹": { + math: "\\ltcir" +}, + "⩺": { + math: "\\gtcir" +}, + "⩻": { + math: "\\ltquest" +}, + "⩼": { + math: "\\gtquest" +}, + "⩽": { + math: "\\leqslant", + mathpackages: [ + "amssymb" + ] +}, + "⩽̸": { + math: "\\nleqslant", + mathpackages: [ + "amssymb" + ] +}, + "⩾": { + math: "\\geqslant", + mathpackages: [ + "amssymb" + ] +}, + "⩾̸": { + math: "\\ngeqslant", + mathpackages: [ + "amssymb" + ] +}, + "⩿": { + math: "\\lesdot" +}, + "⪀": { + math: "\\gesdot" +}, + "⪁": { + math: "\\lesdoto" +}, + "⪂": { + math: "\\gesdoto" +}, + "⪃": { + math: "\\lesdotor" +}, + "⪄": { + math: "\\gesdotol" +}, + "⪅": { + math: "\\lessapprox" +}, + "⪆": { + math: "\\gtrapprox" +}, + "⪇": { + math: "\\lneq" +}, + "⪈": { + math: "\\gneq" +}, + "⪉": { + math: "\\lnapprox" +}, + "⪊": { + math: "\\gnapprox" +}, + "⪋": { + math: "\\lesseqqgtr" +}, + "⪌": { + math: "\\gtreqqless" +}, + "⪍": { + math: "\\lsime" +}, + "⪎": { + math: "\\gsime" +}, + "⪏": { + math: "\\lsimg" +}, + "⪐": { + math: "\\gsiml" +}, + "⪑": { + math: "\\lgE" +}, + "⪒": { + math: "\\glE" +}, + "⪓": { + math: "\\lesges" +}, + "⪔": { + math: "\\gesles" +}, + "⪕": { + math: "\\eqslantless" +}, + "⪖": { + math: "\\eqslantgtr" +}, + "⪗": { + math: "\\elsdot" +}, + "⪘": { + math: "\\egsdot" +}, + "⪙": { + math: "\\eqqless" +}, + "⪚": { + math: "\\eqqgtr" +}, + "⪛": { + math: "\\eqqslantless" +}, + "⪜": { + math: "\\eqqslantgtr" +}, + "⪝": { + math: "\\Pisymbol{ppi020}{117}" +}, + "⪞": { + math: "\\Pisymbol{ppi020}{105}" +}, + "⪟": { + math: "\\simlE" +}, + "⪠": { + math: "\\simgE" +}, + "⪡": { + math: "\\NestedLessLess" +}, + "⪡̸": { + math: "\\NotNestedLessLess" +}, + "⪢": { + math: "\\NestedGreaterGreater" +}, + "⪢̸": { + math: "\\NotNestedGreaterGreater" +}, + "⪣": { + math: "\\partialmeetcontraction" +}, + "⪤": { + math: "\\glj" +}, + "⪥": { + math: "\\gla" +}, + "⪦": { + math: "\\leftslice" +}, + "⪧": { + math: "\\rightslice" +}, + "⪨": { + math: "\\lescc" +}, + "⪩": { + math: "\\gescc" +}, + "⪪": { + math: "\\smt" +}, + "⪫": { + math: "\\lat" +}, + "⪬": { + math: "\\smte" +}, + "⪭": { + math: "\\late" +}, + "⪮": { + math: "\\bumpeqq" +}, + "⪯": { + math: "\\preceq" +}, + "⪯̸": { + math: "\\not\\preceq" +}, + "⪰": { + math: "\\succeq" +}, + "⪰̸": { + math: "\\not\\succeq" +}, + "⪱": { + math: "\\precneq" +}, + "⪲": { + math: "\\succneq" +}, + "⪳": { + math: "\\preceqq" +}, + "⪴": { + math: "\\succeqq" +}, + "⪵": { + math: "\\precneqq" +}, + "⪶": { + math: "\\succneqq" +}, + "⪷": { + math: "\\precapprox" +}, + "⪸": { + math: "\\succapprox" +}, + "⪹": { + math: "\\precnapprox" +}, + "⪺": { + math: "\\succnapprox" +}, + "⪻": { + math: "\\llcurly" +}, + "⪼": { + math: "\\ggcurly" +}, + "⪽": { + math: "\\subsetdot" +}, + "⪾": { + math: "\\supsetdot" +}, + "⪿": { + math: "\\subsetplus" +}, + "⫀": { + math: "\\supsetplus" +}, + "⫁": { + math: "\\submult" +}, + "⫂": { + math: "\\supmult" +}, + "⫃": { + math: "\\subedot" +}, + "⫄": { + math: "\\supedot" +}, + "⫅": { + math: "\\subseteqq" +}, + "⫅̸": { + math: "\\nsubseteqq" +}, + "⫆": { + math: "\\supseteqq" +}, + "⫆̸": { + math: "\\nsupseteqq" +}, + "⫇": { + math: "\\subsim" +}, + "⫈": { + math: "\\supsim" +}, + "⫉": { + math: "\\subsetapprox" +}, + "⫊": { + math: "\\supsetapprox" +}, + "⫋": { + math: "\\subsetneqq" +}, + "⫌": { + math: "\\supsetneqq" +}, + "⫍": { + math: "\\lsqhook" +}, + "⫎": { + math: "\\rsqhook" +}, + "⫏": { + math: "\\csub" +}, + "⫐": { + math: "\\csup" +}, + "⫑": { + math: "\\csube" +}, + "⫒": { + math: "\\csupe" +}, + "⫓": { + math: "\\subsup" +}, + "⫔": { + math: "\\supsub" +}, + "⫕": { + math: "\\subsub" +}, + "⫖": { + math: "\\supsup" +}, + "⫗": { + math: "\\suphsub" +}, + "⫘": { + math: "\\supdsub" +}, + "⫙": { + math: "\\forkv" +}, + "⫚": { + math: "\\topfork" +}, + "⫛": { + math: "\\mlcp" +}, + "⫝̸": { + math: "\\forks" +}, + "⫝": { + math: "\\forksnot" +}, + "⫝̸": { + math: "\\forks" +}, + "⫞": { + math: "\\shortlefttack" +}, + "⫟": { + math: "\\shortdowntack" +}, + "⫠": { + math: "\\shortuptack" +}, + "⫡": { + math: "\\perps" +}, + "⫢": { + math: "\\vDdash" +}, + "⫣": { + math: "\\dashV" +}, + "⫤": { + math: "\\Dashv" +}, + "⫥": { + math: "\\DashV" +}, + "⫦": { + math: "\\varVdash" +}, + "⫧": { + math: "\\Barv" +}, + "⫨": { + math: "\\vBar" +}, + "⫩": { + math: "\\vBarv" +}, + "⫪": { + math: "\\Top" +}, + "⫬": { + math: "\\Not" +}, + "⫭": { + math: "\\bNot" +}, + "⫮": { + math: "\\revnmid" +}, + "⫯": { + math: "\\cirmid" +}, + "⫰": { + math: "\\midcir" +}, + "⫱": { + math: "\\topcir" +}, + "⫲": { + math: "\\nhpar" +}, + "⫳": { + math: "\\parsim" +}, + "⫴": { + math: "\\interleave" +}, + "⫵": { + math: "\\nhVvert" +}, + "⫶": { + math: "\\Elztdcol" +}, + "⫷": { + math: "\\lllnest" +}, + "⫸": { + math: "\\gggnest" +}, + "⫹": { + math: "\\leqqslant" +}, + "⫺": { + math: "\\geqqslant" +}, + "⫻": { + math: "\\trslash" +}, + "⫼": { + math: "\\biginterleave" +}, + "⫽": { + math: "{{/}\\!\\!{/}}" +}, + "⫽⃥": { + math: "{\\rlap{\\textbackslash}{{/}\\!\\!{/}}}" +}, + "⫾": { + math: "\\talloblong" +}, + "⫿": { + math: "\\bigtalloblong" +}, + "⬒": { + math: "\\squaretopblack" +}, + "⬓": { + math: "\\squarebotblack" +}, + "⬔": { + math: "\\squareurblack" +}, + "⬕": { + math: "\\squarellblack" +}, + "⬖": { + math: "\\diamondleftblack" +}, + "⬗": { + math: "\\diamondrightblack" +}, + "⬘": { + math: "\\diamondtopblack" +}, + "⬙": { + math: "\\diamondbotblack" +}, + "⬚": { + math: "\\dottedsquare" +}, + "⬛": { + math: "\\blacksquare" +}, + "⬜": { + math: "\\square" +}, + "⬝": { + math: "\\vysmblksquare" +}, + "⬞": { + math: "\\vysmwhtsquare" +}, + "⬟": { + math: "\\pentagonblack" +}, + "⬠": { + math: "\\pentagon" +}, + "⬡": { + math: "\\varhexagon" +}, + "⬢": { + math: "\\varhexagonblack" +}, + "⬣": { + math: "\\hexagonblack" +}, + "⬤": { + math: "\\lgblkcircle" +}, + "⬥": { + math: "\\mdblkdiamond" +}, + "⬦": { + math: "\\mdwhtdiamond" +}, + "⬧": { + math: "\\mdblklozenge" +}, + "⬨": { + math: "\\mdwhtlozenge" +}, + "⬩": { + math: "\\smblkdiamond" +}, + "⬪": { + math: "\\smblklozenge" +}, + "⬫": { + math: "\\smwhtlozenge" +}, + "⬬": { + math: "\\blkhorzoval" +}, + "⬭": { + math: "\\whthorzoval" +}, + "⬮": { + math: "\\blkvertoval" +}, + "⬯": { + math: "\\whtvertoval" +}, + "⬰": { + math: "\\circleonleftarrow" +}, + "⬱": { + math: "\\leftthreearrows" +}, + "⬲": { + math: "\\leftarrowonoplus" +}, + "⬳": { + math: "\\longleftsquigarrow" +}, + "⬴": { + math: "\\nvtwoheadleftarrow" +}, + "⬵": { + math: "\\nVtwoheadleftarrow" +}, + "⬶": { + math: "\\twoheadmapsfrom" +}, + "⬷": { + math: "\\twoheadleftdbkarrow" +}, + "⬸": { + math: "\\leftdotarrow" +}, + "⬹": { + math: "\\nvleftarrowtail" +}, + "⬺": { + math: "\\nVleftarrowtail" +}, + "⬻": { + math: "\\twoheadleftarrowtail" +}, + "⬼": { + math: "\\nvtwoheadleftarrowtail" +}, + "⬽": { + math: "\\nVtwoheadleftarrowtail" +}, + "⬾": { + math: "\\leftarrowx" +}, + "⬿": { + math: "\\leftcurvedarrow" +}, + "⭀": { + math: "\\equalleftarrow" +}, + "⭁": { + math: "\\bsimilarleftarrow" +}, + "⭂": { + math: "\\leftarrowbackapprox" +}, + "⭃": { + math: "\\rightarrowgtr" +}, + "⭄": { + math: "\\rightarrowsupset" +}, + "⭅": { + math: "\\LLeftarrow" +}, + "⭆": { + math: "\\RRightarrow" +}, + "⭇": { + math: "\\bsimilarrightarrow" +}, + "⭈": { + math: "\\rightarrowbackapprox" +}, + "⭉": { + math: "\\similarleftarrow" +}, + "⭊": { + math: "\\leftarrowapprox" +}, + "⭋": { + math: "\\leftarrowbsimilar" +}, + "⭌": { + math: "\\rightarrowbsimilar" +}, + "⭐": { + math: "\\medwhitestar" +}, + "⭑": { + math: "\\medblackstar" +}, + "⭒": { + math: "\\smwhitestar" +}, + "⭓": { + math: "\\rightpentagonblack" +}, + "⭔": { + math: "\\rightpentagon" +}, + "〈": { + math: "\\langle" +}, + "〉": { + math: "\\rangle" +}, + "〒": { + math: "\\postalmark" +}, + "〔": { + math: "\\lbrbrak" +}, + "〕": { + math: "\\rbrbrak" +}, + "〚": { + math: "\\openbracketleft" +}, + "〛": { + math: "\\openbracketright" +}, + "〰": { + math: "\\hzigzag" +}, + "ff": { + text: "ff" +}, + "fi": { + text: "fi" +}, + "fl": { + text: "fl" +}, + "ffi": { + text: "ffi" +}, + "ffl": { + text: "ffl" +}, + "ſt": { + text: "st" +}, + "st": { + text: "st" +}, + "�": { + text: "{\\dbend}" +}, + "𝐀": { + math: "\\mathbf{A}" +}, + "𝐁": { + math: "\\mathbf{B}" +}, + "𝐂": { + math: "\\mathbf{C}" +}, + "𝐃": { + math: "\\mathbf{D}" +}, + "𝐄": { + math: "\\mathbf{E}" +}, + "𝐅": { + math: "\\mathbf{F}" +}, + "𝐆": { + math: "\\mathbf{G}" +}, + "𝐇": { + math: "\\mathbf{H}" +}, + "𝐈": { + math: "\\mathbf{I}" +}, + "𝐉": { + math: "\\mathbf{J}" +}, + "𝐊": { + math: "\\mathbf{K}" +}, + "𝐋": { + math: "\\mathbf{L}" +}, + "𝐌": { + math: "\\mathbf{M}" +}, + "𝐍": { + math: "\\mathbf{N}" +}, + "𝐎": { + math: "\\mathbf{O}" +}, + "𝐏": { + math: "\\mathbf{P}" +}, + "𝐐": { + math: "\\mathbf{Q}" +}, + "𝐑": { + math: "\\mathbf{R}" +}, + "𝐒": { + math: "\\mathbf{S}" +}, + "𝐓": { + math: "\\mathbf{T}" +}, + "𝐔": { + math: "\\mathbf{U}" +}, + "𝐕": { + math: "\\mathbf{V}" +}, + "𝐖": { + math: "\\mathbf{W}" +}, + "𝐗": { + math: "\\mathbf{X}" +}, + "𝐘": { + math: "\\mathbf{Y}" +}, + "𝐙": { + math: "\\mathbf{Z}" +}, + "𝐚": { + math: "\\mathbf{a}" +}, + "𝐛": { + math: "\\mathbf{b}" +}, + "𝐜": { + math: "\\mathbf{c}" +}, + "𝐝": { + math: "\\mathbf{d}" +}, + "𝐞": { + math: "\\mathbf{e}" +}, + "𝐟": { + math: "\\mathbf{f}" +}, + "𝐠": { + math: "\\mathbf{g}" +}, + "𝐡": { + math: "\\mathbf{h}" +}, + "𝐢": { + math: "\\mathbf{i}" +}, + "𝐣": { + math: "\\mathbf{j}" +}, + "𝐤": { + math: "\\mathbf{k}" +}, + "𝐥": { + math: "\\mathbf{l}" +}, + "𝐦": { + math: "\\mathbf{m}" +}, + "𝐧": { + math: "\\mathbf{n}" +}, + "𝐨": { + math: "\\mathbf{o}" +}, + "𝐩": { + math: "\\mathbf{p}" +}, + "𝐪": { + math: "\\mathbf{q}" +}, + "𝐫": { + math: "\\mathbf{r}" +}, + "𝐬": { + math: "\\mathbf{s}" +}, + "𝐭": { + math: "\\mathbf{t}" +}, + "𝐮": { + math: "\\mathbf{u}" +}, + "𝐯": { + math: "\\mathbf{v}" +}, + "𝐰": { + math: "\\mathbf{w}" +}, + "𝐱": { + math: "\\mathbf{x}" +}, + "𝐲": { + math: "\\mathbf{y}" +}, + "𝐳": { + math: "\\mathbf{z}" +}, + "𝐴": { + math: "\\mathsl{A}" +}, + "𝐵": { + math: "\\mathsl{B}" +}, + "𝐶": { + math: "\\mathsl{C}" +}, + "𝐷": { + math: "\\mathsl{D}" +}, + "𝐸": { + math: "\\mathsl{E}" +}, + "𝐹": { + math: "\\mathsl{F}" +}, + "𝐺": { + math: "\\mathsl{G}" +}, + "𝐻": { + math: "\\mathsl{H}" +}, + "𝐼": { + math: "\\mathsl{I}" +}, + "𝐽": { + math: "\\mathsl{J}" +}, + "𝐾": { + math: "\\mathsl{K}" +}, + "𝐿": { + math: "\\mathsl{L}" +}, + "𝑀": { + math: "\\mathsl{M}" +}, + "𝑁": { + math: "\\mathsl{N}" +}, + "𝑂": { + math: "\\mathsl{O}" +}, + "𝑃": { + math: "\\mathsl{P}" +}, + "𝑄": { + math: "\\mathsl{Q}" +}, + "𝑅": { + math: "\\mathsl{R}" +}, + "𝑆": { + math: "\\mathsl{S}" +}, + "𝑇": { + math: "\\mathsl{T}" +}, + "𝑈": { + math: "\\mathsl{U}" +}, + "𝑉": { + math: "\\mathsl{V}" +}, + "𝑊": { + math: "\\mathsl{W}" +}, + "𝑋": { + math: "\\mathsl{X}" +}, + "𝑌": { + math: "\\mathsl{Y}" +}, + "𝑍": { + math: "\\mathsl{Z}" +}, + "𝑎": { + math: "\\mathsl{a}" +}, + "𝑏": { + math: "\\mathsl{b}" +}, + "𝑐": { + math: "\\mathsl{c}" +}, + "𝑑": { + math: "\\mathsl{d}" +}, + "𝑒": { + math: "\\mathsl{e}" +}, + "𝑓": { + math: "\\mathsl{f}" +}, + "𝑔": { + math: "\\mathsl{g}" +}, + "𝑖": { + math: "\\mathsl{i}" +}, + "𝑗": { + math: "\\mathsl{j}" +}, + "𝑘": { + math: "\\mathsl{k}" +}, + "𝑙": { + math: "\\mathsl{l}" +}, + "𝑚": { + math: "\\mathsl{m}" +}, + "𝑛": { + math: "\\mathsl{n}" +}, + "𝑜": { + math: "\\mathsl{o}" +}, + "𝑝": { + math: "\\mathsl{p}" +}, + "𝑞": { + math: "\\mathsl{q}" +}, + "𝑟": { + math: "\\mathsl{r}" +}, + "𝑠": { + math: "\\mathsl{s}" +}, + "𝑡": { + math: "\\mathsl{t}" +}, + "𝑢": { + math: "\\mathsl{u}" +}, + "𝑣": { + math: "\\mathsl{v}" +}, + "𝑤": { + math: "\\mathsl{w}" +}, + "𝑥": { + math: "\\mathsl{x}" +}, + "𝑦": { + math: "\\mathsl{y}" +}, + "𝑧": { + math: "\\mathsl{z}" +}, + "𝑨": { + math: "\\mathbit{A}" +}, + "𝑩": { + math: "\\mathbit{B}" +}, + "𝑪": { + math: "\\mathbit{C}" +}, + "𝑫": { + math: "\\mathbit{D}" +}, + "𝑬": { + math: "\\mathbit{E}" +}, + "𝑭": { + math: "\\mathbit{F}" +}, + "𝑮": { + math: "\\mathbit{G}" +}, + "𝑯": { + math: "\\mathbit{H}" +}, + "𝑰": { + math: "\\mathbit{I}" +}, + "𝑱": { + math: "\\mathbit{J}" +}, + "𝑲": { + math: "\\mathbit{K}" +}, + "𝑳": { + math: "\\mathbit{L}" +}, + "𝑴": { + math: "\\mathbit{M}" +}, + "𝑵": { + math: "\\mathbit{N}" +}, + "𝑶": { + math: "\\mathbit{O}" +}, + "𝑷": { + math: "\\mathbit{P}" +}, + "𝑸": { + math: "\\mathbit{Q}" +}, + "𝑹": { + math: "\\mathbit{R}" +}, + "𝑺": { + math: "\\mathbit{S}" +}, + "𝑻": { + math: "\\mathbit{T}" +}, + "𝑼": { + math: "\\mathbit{U}" +}, + "𝑽": { + math: "\\mathbit{V}" +}, + "𝑾": { + math: "\\mathbit{W}" +}, + "𝑿": { + math: "\\mathbit{X}" +}, + "𝒀": { + math: "\\mathbit{Y}" +}, + "𝒁": { + math: "\\mathbit{Z}" +}, + "𝒂": { + math: "\\mathbit{a}" +}, + "𝒃": { + math: "\\mathbit{b}" +}, + "𝒄": { + math: "\\mathbit{c}" +}, + "𝒅": { + math: "\\mathbit{d}" +}, + "𝒆": { + math: "\\mathbit{e}" +}, + "𝒇": { + math: "\\mathbit{f}" +}, + "𝒈": { + math: "\\mathbit{g}" +}, + "𝒉": { + math: "\\mathbit{h}" +}, + "𝒊": { + math: "\\mathbit{i}" +}, + "𝒋": { + math: "\\mathbit{j}" +}, + "𝒌": { + math: "\\mathbit{k}" +}, + "𝒍": { + math: "\\mathbit{l}" +}, + "𝒎": { + math: "\\mathbit{m}" +}, + "𝒏": { + math: "\\mathbit{n}" +}, + "𝒐": { + math: "\\mathbit{o}" +}, + "𝒑": { + math: "\\mathbit{p}" +}, + "𝒒": { + math: "\\mathbit{q}" +}, + "𝒓": { + math: "\\mathbit{r}" +}, + "𝒔": { + math: "\\mathbit{s}" +}, + "𝒕": { + math: "\\mathbit{t}" +}, + "𝒖": { + math: "\\mathbit{u}" +}, + "𝒗": { + math: "\\mathbit{v}" +}, + "𝒘": { + math: "\\mathbit{w}" +}, + "𝒙": { + math: "\\mathbit{x}" +}, + "𝒚": { + math: "\\mathbit{y}" +}, + "𝒛": { + math: "\\mathbit{z}" +}, + "𝒜": { + math: "\\mathscr{A}" +}, + "𝒞": { + math: "\\mathscr{C}" +}, + "𝒟": { + math: "\\mathscr{D}" +}, + "𝒢": { + math: "\\mathscr{G}" +}, + "𝒥": { + math: "\\mathscr{J}" +}, + "𝒦": { + math: "\\mathscr{K}" +}, + "𝒩": { + math: "\\mathscr{N}" +}, + "𝒪": { + math: "\\mathscr{O}" +}, + "𝒫": { + math: "\\mathscr{P}" +}, + "𝒬": { + math: "\\mathscr{Q}" +}, + "𝒮": { + math: "\\mathscr{S}" +}, + "𝒯": { + math: "\\mathscr{T}" +}, + "𝒰": { + math: "\\mathscr{U}" +}, + "𝒱": { + math: "\\mathscr{V}" +}, + "𝒲": { + math: "\\mathscr{W}" +}, + "𝒳": { + math: "\\mathscr{X}" +}, + "𝒴": { + math: "\\mathscr{Y}" +}, + "𝒵": { + math: "\\mathscr{Z}" +}, + "𝒶": { + math: "\\mathscr{a}" +}, + "𝒷": { + math: "\\mathscr{b}" +}, + "𝒸": { + math: "\\mathscr{c}" +}, + "𝒹": { + math: "\\mathscr{d}" +}, + "𝒻": { + math: "\\mathscr{f}" +}, + "𝒽": { + math: "\\mathscr{h}" +}, + "𝒾": { + math: "\\mathscr{i}" +}, + "𝒿": { + math: "\\mathscr{j}" +}, + "𝓀": { + math: "\\mathscr{k}" +}, + "𝓁": { + math: "\\mathscr{l}" +}, + "𝓂": { + math: "\\mathscr{m}" +}, + "𝓃": { + math: "\\mathscr{n}" +}, + "𝓅": { + math: "\\mathscr{p}" +}, + "𝓆": { + math: "\\mathscr{q}" +}, + "𝓇": { + math: "\\mathscr{r}" +}, + "𝓈": { + math: "\\mathscr{s}" +}, + "𝓉": { + math: "\\mathscr{t}" +}, + "𝓊": { + math: "\\mathscr{u}" +}, + "𝓋": { + math: "\\mathscr{v}" +}, + "𝓌": { + math: "\\mathscr{w}" +}, + "𝓍": { + math: "\\mathscr{x}" +}, + "𝓎": { + math: "\\mathscr{y}" +}, + "𝓏": { + math: "\\mathscr{z}" +}, + "𝓐": { + math: "\\mathmit{A}" +}, + "𝓑": { + math: "\\mathmit{B}" +}, + "𝓒": { + math: "\\mathmit{C}" +}, + "𝓓": { + math: "\\mathmit{D}" +}, + "𝓔": { + math: "\\mathmit{E}" +}, + "𝓕": { + math: "\\mathmit{F}" +}, + "𝓖": { + math: "\\mathmit{G}" +}, + "𝓗": { + math: "\\mathmit{H}" +}, + "𝓘": { + math: "\\mathmit{I}" +}, + "𝓙": { + math: "\\mathmit{J}" +}, + "𝓚": { + math: "\\mathmit{K}" +}, + "𝓛": { + math: "\\mathmit{L}" +}, + "𝓜": { + math: "\\mathmit{M}" +}, + "𝓝": { + math: "\\mathmit{N}" +}, + "𝓞": { + math: "\\mathmit{O}" +}, + "𝓟": { + math: "\\mathmit{P}" +}, + "𝓠": { + math: "\\mathmit{Q}" +}, + "𝓡": { + math: "\\mathmit{R}" +}, + "𝓢": { + math: "\\mathmit{S}" +}, + "𝓣": { + math: "\\mathmit{T}" +}, + "𝓤": { + math: "\\mathmit{U}" +}, + "𝓥": { + math: "\\mathmit{V}" +}, + "𝓦": { + math: "\\mathmit{W}" +}, + "𝓧": { + math: "\\mathmit{X}" +}, + "𝓨": { + math: "\\mathmit{Y}" +}, + "𝓩": { + math: "\\mathmit{Z}" +}, + "𝓪": { + math: "\\mathmit{a}" +}, + "𝓫": { + math: "\\mathmit{b}" +}, + "𝓬": { + math: "\\mathmit{c}" +}, + "𝓭": { + math: "\\mathmit{d}" +}, + "𝓮": { + math: "\\mathmit{e}" +}, + "𝓯": { + math: "\\mathmit{f}" +}, + "𝓰": { + math: "\\mathmit{g}" +}, + "𝓱": { + math: "\\mathmit{h}" +}, + "𝓲": { + math: "\\mathmit{i}" +}, + "𝓳": { + math: "\\mathmit{j}" +}, + "𝓴": { + math: "\\mathmit{k}" +}, + "𝓵": { + math: "\\mathmit{l}" +}, + "𝓶": { + math: "\\mathmit{m}" +}, + "𝓷": { + math: "\\mathmit{n}" +}, + "𝓸": { + math: "\\mathmit{o}" +}, + "𝓹": { + math: "\\mathmit{p}" +}, + "𝓺": { + math: "\\mathmit{q}" +}, + "𝓻": { + math: "\\mathmit{r}" +}, + "𝓼": { + math: "\\mathmit{s}" +}, + "𝓽": { + math: "\\mathmit{t}" +}, + "𝓾": { + math: "\\mathmit{u}" +}, + "𝓿": { + math: "\\mathmit{v}" +}, + "𝔀": { + math: "\\mathmit{w}" +}, + "𝔁": { + math: "\\mathmit{x}" +}, + "𝔂": { + math: "\\mathmit{y}" +}, + "𝔃": { + math: "\\mathmit{z}" +}, + "𝔄": { + math: "\\mathfrak{A}" +}, + "𝔅": { + math: "\\mathfrak{B}" +}, + "𝔇": { + math: "\\mathfrak{D}" +}, + "𝔈": { + math: "\\mathfrak{E}" +}, + "𝔉": { + math: "\\mathfrak{F}" +}, + "𝔊": { + math: "\\mathfrak{G}" +}, + "𝔍": { + math: "\\mathfrak{J}" +}, + "𝔎": { + math: "\\mathfrak{K}" +}, + "𝔏": { + math: "\\mathfrak{L}" +}, + "𝔐": { + math: "\\mathfrak{M}" +}, + "𝔑": { + math: "\\mathfrak{N}" +}, + "𝔒": { + math: "\\mathfrak{O}" +}, + "𝔓": { + math: "\\mathfrak{P}" +}, + "𝔔": { + math: "\\mathfrak{Q}" +}, + "𝔖": { + math: "\\mathfrak{S}" +}, + "𝔗": { + math: "\\mathfrak{T}" +}, + "𝔘": { + math: "\\mathfrak{U}" +}, + "𝔙": { + math: "\\mathfrak{V}" +}, + "𝔚": { + math: "\\mathfrak{W}" +}, + "𝔛": { + math: "\\mathfrak{X}" +}, + "𝔜": { + math: "\\mathfrak{Y}" +}, + "𝔞": { + math: "\\mathfrak{a}" +}, + "𝔟": { + math: "\\mathfrak{b}" +}, + "𝔠": { + math: "\\mathfrak{c}" +}, + "𝔡": { + math: "\\mathfrak{d}" +}, + "𝔢": { + math: "\\mathfrak{e}" +}, + "𝔣": { + math: "\\mathfrak{f}" +}, + "𝔤": { + math: "\\mathfrak{g}" +}, + "𝔥": { + math: "\\mathfrak{h}" +}, + "𝔦": { + math: "\\mathfrak{i}" +}, + "𝔧": { + math: "\\mathfrak{j}" +}, + "𝔨": { + math: "\\mathfrak{k}" +}, + "𝔩": { + math: "\\mathfrak{l}" +}, + "𝔪": { + math: "\\mathfrak{m}" +}, + "𝔫": { + math: "\\mathfrak{n}" +}, + "𝔬": { + math: "\\mathfrak{o}" +}, + "𝔭": { + math: "\\mathfrak{p}" +}, + "𝔮": { + math: "\\mathfrak{q}" +}, + "𝔯": { + math: "\\mathfrak{r}" +}, + "𝔰": { + math: "\\mathfrak{s}" +}, + "𝔱": { + math: "\\mathfrak{t}" +}, + "𝔲": { + math: "\\mathfrak{u}" +}, + "𝔳": { + math: "\\mathfrak{v}" +}, + "𝔴": { + math: "\\mathfrak{w}" +}, + "𝔵": { + math: "\\mathfrak{x}" +}, + "𝔶": { + math: "\\mathfrak{y}" +}, + "𝔷": { + math: "\\mathfrak{z}" +}, + "𝔸": { + math: "\\mathbb{A}" +}, + "𝔹": { + math: "\\mathbb{B}" +}, + "𝔻": { + math: "\\mathbb{D}" +}, + "𝔼": { + math: "\\mathbb{E}" +}, + "𝔽": { + math: "\\mathbb{F}" +}, + "𝔾": { + math: "\\mathbb{G}" +}, + "𝕀": { + math: "\\mathbb{I}" +}, + "𝕁": { + math: "\\mathbb{J}" +}, + "𝕂": { + math: "\\mathbb{K}" +}, + "𝕃": { + math: "\\mathbb{L}" +}, + "𝕄": { + math: "\\mathbb{M}" +}, + "𝕆": { + math: "\\mathbb{O}" +}, + "𝕊": { + math: "\\mathbb{S}" +}, + "𝕋": { + math: "\\mathbb{T}" +}, + "𝕌": { + math: "\\mathbb{U}" +}, + "𝕍": { + math: "\\mathbb{V}" +}, + "𝕎": { + math: "\\mathbb{W}" +}, + "𝕏": { + math: "\\mathbb{X}" +}, + "𝕐": { + math: "\\mathbb{Y}" +}, + "𝕒": { + math: "\\mathbb{a}" +}, + "𝕓": { + math: "\\mathbb{b}" +}, + "𝕔": { + math: "\\mathbb{c}" +}, + "𝕕": { + math: "\\mathbb{d}" +}, + "𝕖": { + math: "\\mathbb{e}" +}, + "𝕗": { + math: "\\mathbb{f}" +}, + "𝕘": { + math: "\\mathbb{g}" +}, + "𝕙": { + math: "\\mathbb{h}" +}, + "𝕚": { + math: "\\mathbb{i}" +}, + "𝕛": { + math: "\\mathbb{j}" +}, + "𝕜": { + math: "\\mathbb{k}" +}, + "𝕝": { + math: "\\mathbb{l}" +}, + "𝕞": { + math: "\\mathbb{m}" +}, + "𝕟": { + math: "\\mathbb{n}" +}, + "𝕠": { + math: "\\mathbb{o}" +}, + "𝕡": { + math: "\\mathbb{p}" +}, + "𝕢": { + math: "\\mathbb{q}" +}, + "𝕣": { + math: "\\mathbb{r}" +}, + "𝕤": { + math: "\\mathbb{s}" +}, + "𝕥": { + math: "\\mathbb{t}" +}, + "𝕦": { + math: "\\mathbb{u}" +}, + "𝕧": { + math: "\\mathbb{v}" +}, + "𝕨": { + math: "\\mathbb{w}" +}, + "𝕩": { + math: "\\mathbb{x}" +}, + "𝕪": { + math: "\\mathbb{y}" +}, + "𝕫": { + math: "\\mathbb{z}" +}, + "𝕬": { + math: "\\mathslbb{A}" +}, + "𝕭": { + math: "\\mathslbb{B}" +}, + "𝕮": { + math: "\\mathslbb{C}" +}, + "𝕯": { + math: "\\mathslbb{D}" +}, + "𝕰": { + math: "\\mathslbb{E}" +}, + "𝕱": { + math: "\\mathslbb{F}" +}, + "𝕲": { + math: "\\mathslbb{G}" +}, + "𝕳": { + math: "\\mathslbb{H}" +}, + "𝕴": { + math: "\\mathslbb{I}" +}, + "𝕵": { + math: "\\mathslbb{J}" +}, + "𝕶": { + math: "\\mathslbb{K}" +}, + "𝕷": { + math: "\\mathslbb{L}" +}, + "𝕸": { + math: "\\mathslbb{M}" +}, + "𝕹": { + math: "\\mathslbb{N}" +}, + "𝕺": { + math: "\\mathslbb{O}" +}, + "𝕻": { + math: "\\mathslbb{P}" +}, + "𝕼": { + math: "\\mathslbb{Q}" +}, + "𝕽": { + math: "\\mathslbb{R}" +}, + "𝕾": { + math: "\\mathslbb{S}" +}, + "𝕿": { + math: "\\mathslbb{T}" +}, + "𝖀": { + math: "\\mathslbb{U}" +}, + "𝖁": { + math: "\\mathslbb{V}" +}, + "𝖂": { + math: "\\mathslbb{W}" +}, + "𝖃": { + math: "\\mathslbb{X}" +}, + "𝖄": { + math: "\\mathslbb{Y}" +}, + "𝖅": { + math: "\\mathslbb{Z}" +}, + "𝖆": { + math: "\\mathslbb{a}" +}, + "𝖇": { + math: "\\mathslbb{b}" +}, + "𝖈": { + math: "\\mathslbb{c}" +}, + "𝖉": { + math: "\\mathslbb{d}" +}, + "𝖊": { + math: "\\mathslbb{e}" +}, + "𝖋": { + math: "\\mathslbb{f}" +}, + "𝖌": { + math: "\\mathslbb{g}" +}, + "𝖍": { + math: "\\mathslbb{h}" +}, + "𝖎": { + math: "\\mathslbb{i}" +}, + "𝖏": { + math: "\\mathslbb{j}" +}, + "𝖐": { + math: "\\mathslbb{k}" +}, + "𝖑": { + math: "\\mathslbb{l}" +}, + "𝖒": { + math: "\\mathslbb{m}" +}, + "𝖓": { + math: "\\mathslbb{n}" +}, + "𝖔": { + math: "\\mathslbb{o}" +}, + "𝖕": { + math: "\\mathslbb{p}" +}, + "𝖖": { + math: "\\mathslbb{q}" +}, + "𝖗": { + math: "\\mathslbb{r}" +}, + "𝖘": { + math: "\\mathslbb{s}" +}, + "𝖙": { + math: "\\mathslbb{t}" +}, + "𝖚": { + math: "\\mathslbb{u}" +}, + "𝖛": { + math: "\\mathslbb{v}" +}, + "𝖜": { + math: "\\mathslbb{w}" +}, + "𝖝": { + math: "\\mathslbb{x}" +}, + "𝖞": { + math: "\\mathslbb{y}" +}, + "𝖟": { + math: "\\mathslbb{z}" +}, + "𝖠": { + math: "\\mathsf{A}" +}, + "𝖡": { + math: "\\mathsf{B}" +}, + "𝖢": { + math: "\\mathsf{C}" +}, + "𝖣": { + math: "\\mathsf{D}" +}, + "𝖤": { + math: "\\mathsf{E}" +}, + "𝖥": { + math: "\\mathsf{F}" +}, + "𝖦": { + math: "\\mathsf{G}" +}, + "𝖧": { + math: "\\mathsf{H}" +}, + "𝖨": { + math: "\\mathsf{I}" +}, + "𝖩": { + math: "\\mathsf{J}" +}, + "𝖪": { + math: "\\mathsf{K}" +}, + "𝖫": { + math: "\\mathsf{L}" +}, + "𝖬": { + math: "\\mathsf{M}" +}, + "𝖭": { + math: "\\mathsf{N}" +}, + "𝖮": { + math: "\\mathsf{O}" +}, + "𝖯": { + math: "\\mathsf{P}" +}, + "𝖰": { + math: "\\mathsf{Q}" +}, + "𝖱": { + math: "\\mathsf{R}" +}, + "𝖲": { + math: "\\mathsf{S}" +}, + "𝖳": { + math: "\\mathsf{T}" +}, + "𝖴": { + math: "\\mathsf{U}" +}, + "𝖵": { + math: "\\mathsf{V}" +}, + "𝖶": { + math: "\\mathsf{W}" +}, + "𝖷": { + math: "\\mathsf{X}" +}, + "𝖸": { + math: "\\mathsf{Y}" +}, + "𝖹": { + math: "\\mathsf{Z}" +}, + "𝖺": { + math: "\\mathsf{a}" +}, + "𝖻": { + math: "\\mathsf{b}" +}, + "𝖼": { + math: "\\mathsf{c}" +}, + "𝖽": { + math: "\\mathsf{d}" +}, + "𝖾": { + math: "\\mathsf{e}" +}, + "𝖿": { + math: "\\mathsf{f}" +}, + "𝗀": { + math: "\\mathsf{g}" +}, + "𝗁": { + math: "\\mathsf{h}" +}, + "𝗂": { + math: "\\mathsf{i}" +}, + "𝗃": { + math: "\\mathsf{j}" +}, + "𝗄": { + math: "\\mathsf{k}" +}, + "𝗅": { + math: "\\mathsf{l}" +}, + "𝗆": { + math: "\\mathsf{m}" +}, + "𝗇": { + math: "\\mathsf{n}" +}, + "𝗈": { + math: "\\mathsf{o}" +}, + "𝗉": { + math: "\\mathsf{p}" +}, + "𝗊": { + math: "\\mathsf{q}" +}, + "𝗋": { + math: "\\mathsf{r}" +}, + "𝗌": { + math: "\\mathsf{s}" +}, + "𝗍": { + math: "\\mathsf{t}" +}, + "𝗎": { + math: "\\mathsf{u}" +}, + "𝗏": { + math: "\\mathsf{v}" +}, + "𝗐": { + math: "\\mathsf{w}" +}, + "𝗑": { + math: "\\mathsf{x}" +}, + "𝗒": { + math: "\\mathsf{y}" +}, + "𝗓": { + math: "\\mathsf{z}" +}, + "𝗔": { + math: "\\mathsfbf{A}" +}, + "𝗕": { + math: "\\mathsfbf{B}" +}, + "𝗖": { + math: "\\mathsfbf{C}" +}, + "𝗗": { + math: "\\mathsfbf{D}" +}, + "𝗘": { + math: "\\mathsfbf{E}" +}, + "𝗙": { + math: "\\mathsfbf{F}" +}, + "𝗚": { + math: "\\mathsfbf{G}" +}, + "𝗛": { + math: "\\mathsfbf{H}" +}, + "𝗜": { + math: "\\mathsfbf{I}" +}, + "𝗝": { + math: "\\mathsfbf{J}" +}, + "𝗞": { + math: "\\mathsfbf{K}" +}, + "𝗟": { + math: "\\mathsfbf{L}" +}, + "𝗠": { + math: "\\mathsfbf{M}" +}, + "𝗡": { + math: "\\mathsfbf{N}" +}, + "𝗢": { + math: "\\mathsfbf{O}" +}, + "𝗣": { + math: "\\mathsfbf{P}" +}, + "𝗤": { + math: "\\mathsfbf{Q}" +}, + "𝗥": { + math: "\\mathsfbf{R}" +}, + "𝗦": { + math: "\\mathsfbf{S}" +}, + "𝗧": { + math: "\\mathsfbf{T}" +}, + "𝗨": { + math: "\\mathsfbf{U}" +}, + "𝗩": { + math: "\\mathsfbf{V}" +}, + "𝗪": { + math: "\\mathsfbf{W}" +}, + "𝗫": { + math: "\\mathsfbf{X}" +}, + "𝗬": { + math: "\\mathsfbf{Y}" +}, + "𝗭": { + math: "\\mathsfbf{Z}" +}, + "𝗮": { + math: "\\mathsfbf{a}" +}, + "𝗯": { + math: "\\mathsfbf{b}" +}, + "𝗰": { + math: "\\mathsfbf{c}" +}, + "𝗱": { + math: "\\mathsfbf{d}" +}, + "𝗲": { + math: "\\mathsfbf{e}" +}, + "𝗳": { + math: "\\mathsfbf{f}" +}, + "𝗴": { + math: "\\mathsfbf{g}" +}, + "𝗵": { + math: "\\mathsfbf{h}" +}, + "𝗶": { + math: "\\mathsfbf{i}" +}, + "𝗷": { + math: "\\mathsfbf{j}" +}, + "𝗸": { + math: "\\mathsfbf{k}" +}, + "𝗹": { + math: "\\mathsfbf{l}" +}, + "𝗺": { + math: "\\mathsfbf{m}" +}, + "𝗻": { + math: "\\mathsfbf{n}" +}, + "𝗼": { + math: "\\mathsfbf{o}" +}, + "𝗽": { + math: "\\mathsfbf{p}" +}, + "𝗾": { + math: "\\mathsfbf{q}" +}, + "𝗿": { + math: "\\mathsfbf{r}" +}, + "𝘀": { + math: "\\mathsfbf{s}" +}, + "𝘁": { + math: "\\mathsfbf{t}" +}, + "𝘂": { + math: "\\mathsfbf{u}" +}, + "𝘃": { + math: "\\mathsfbf{v}" +}, + "𝘄": { + math: "\\mathsfbf{w}" +}, + "𝘅": { + math: "\\mathsfbf{x}" +}, + "𝘆": { + math: "\\mathsfbf{y}" +}, + "𝘇": { + math: "\\mathsfbf{z}" +}, + "𝘈": { + math: "\\mathsfsl{A}" +}, + "𝘉": { + math: "\\mathsfsl{B}" +}, + "𝘊": { + math: "\\mathsfsl{C}" +}, + "𝘋": { + math: "\\mathsfsl{D}" +}, + "𝘌": { + math: "\\mathsfsl{E}" +}, + "𝘍": { + math: "\\mathsfsl{F}" +}, + "𝘎": { + math: "\\mathsfsl{G}" +}, + "𝘏": { + math: "\\mathsfsl{H}" +}, + "𝘐": { + math: "\\mathsfsl{I}" +}, + "𝘑": { + math: "\\mathsfsl{J}" +}, + "𝘒": { + math: "\\mathsfsl{K}" +}, + "𝘓": { + math: "\\mathsfsl{L}" +}, + "𝘔": { + math: "\\mathsfsl{M}" +}, + "𝘕": { + math: "\\mathsfsl{N}" +}, + "𝘖": { + math: "\\mathsfsl{O}" +}, + "𝘗": { + math: "\\mathsfsl{P}" +}, + "𝘘": { + math: "\\mathsfsl{Q}" +}, + "𝘙": { + math: "\\mathsfsl{R}" +}, + "𝘚": { + math: "\\mathsfsl{S}" +}, + "𝘛": { + math: "\\mathsfsl{T}" +}, + "𝘜": { + math: "\\mathsfsl{U}" +}, + "𝘝": { + math: "\\mathsfsl{V}" +}, + "𝘞": { + math: "\\mathsfsl{W}" +}, + "𝘟": { + math: "\\mathsfsl{X}" +}, + "𝘠": { + math: "\\mathsfsl{Y}" +}, + "𝘡": { + math: "\\mathsfsl{Z}" +}, + "𝘢": { + math: "\\mathsfsl{a}" +}, + "𝘣": { + math: "\\mathsfsl{b}" +}, + "𝘤": { + math: "\\mathsfsl{c}" +}, + "𝘥": { + math: "\\mathsfsl{d}" +}, + "𝘦": { + math: "\\mathsfsl{e}" +}, + "𝘧": { + math: "\\mathsfsl{f}" +}, + "𝘨": { + math: "\\mathsfsl{g}" +}, + "𝘩": { + math: "\\mathsfsl{h}" +}, + "𝘪": { + math: "\\mathsfsl{i}" +}, + "𝘫": { + math: "\\mathsfsl{j}" +}, + "𝘬": { + math: "\\mathsfsl{k}" +}, + "𝘭": { + math: "\\mathsfsl{l}" +}, + "𝘮": { + math: "\\mathsfsl{m}" +}, + "𝘯": { + math: "\\mathsfsl{n}" +}, + "𝘰": { + math: "\\mathsfsl{o}" +}, + "𝘱": { + math: "\\mathsfsl{p}" +}, + "𝘲": { + math: "\\mathsfsl{q}" +}, + "𝘳": { + math: "\\mathsfsl{r}" +}, + "𝘴": { + math: "\\mathsfsl{s}" +}, + "𝘵": { + math: "\\mathsfsl{t}" +}, + "𝘶": { + math: "\\mathsfsl{u}" +}, + "𝘷": { + math: "\\mathsfsl{v}" +}, + "𝘸": { + math: "\\mathsfsl{w}" +}, + "𝘹": { + math: "\\mathsfsl{x}" +}, + "𝘺": { + math: "\\mathsfsl{y}" +}, + "𝘻": { + math: "\\mathsfsl{z}" +}, + "𝘼": { + math: "\\mathsfbfsl{A}" +}, + "𝘽": { + math: "\\mathsfbfsl{B}" +}, + "𝘾": { + math: "\\mathsfbfsl{C}" +}, + "𝘿": { + math: "\\mathsfbfsl{D}" +}, + "𝙀": { + math: "\\mathsfbfsl{E}" +}, + "𝙁": { + math: "\\mathsfbfsl{F}" +}, + "𝙂": { + math: "\\mathsfbfsl{G}" +}, + "𝙃": { + math: "\\mathsfbfsl{H}" +}, + "𝙄": { + math: "\\mathsfbfsl{I}" +}, + "𝙅": { + math: "\\mathsfbfsl{J}" +}, + "𝙆": { + math: "\\mathsfbfsl{K}" +}, + "𝙇": { + math: "\\mathsfbfsl{L}" +}, + "𝙈": { + math: "\\mathsfbfsl{M}" +}, + "𝙉": { + math: "\\mathsfbfsl{N}" +}, + "𝙊": { + math: "\\mathsfbfsl{O}" +}, + "𝙋": { + math: "\\mathsfbfsl{P}" +}, + "𝙌": { + math: "\\mathsfbfsl{Q}" +}, + "𝙍": { + math: "\\mathsfbfsl{R}" +}, + "𝙎": { + math: "\\mathsfbfsl{S}" +}, + "𝙏": { + math: "\\mathsfbfsl{T}" +}, + "𝙐": { + math: "\\mathsfbfsl{U}" +}, + "𝙑": { + math: "\\mathsfbfsl{V}" +}, + "𝙒": { + math: "\\mathsfbfsl{W}" +}, + "𝙓": { + math: "\\mathsfbfsl{X}" +}, + "𝙔": { + math: "\\mathsfbfsl{Y}" +}, + "𝙕": { + math: "\\mathsfbfsl{Z}" +}, + "𝙖": { + math: "\\mathsfbfsl{a}" +}, + "𝙗": { + math: "\\mathsfbfsl{b}" +}, + "𝙘": { + math: "\\mathsfbfsl{c}" +}, + "𝙙": { + math: "\\mathsfbfsl{d}" +}, + "𝙚": { + math: "\\mathsfbfsl{e}" +}, + "𝙛": { + math: "\\mathsfbfsl{f}" +}, + "𝙜": { + math: "\\mathsfbfsl{g}" +}, + "𝙝": { + math: "\\mathsfbfsl{h}" +}, + "𝙞": { + math: "\\mathsfbfsl{i}" +}, + "𝙟": { + math: "\\mathsfbfsl{j}" +}, + "𝙠": { + math: "\\mathsfbfsl{k}" +}, + "𝙡": { + math: "\\mathsfbfsl{l}" +}, + "𝙢": { + math: "\\mathsfbfsl{m}" +}, + "𝙣": { + math: "\\mathsfbfsl{n}" +}, + "𝙤": { + math: "\\mathsfbfsl{o}" +}, + "𝙥": { + math: "\\mathsfbfsl{p}" +}, + "𝙦": { + math: "\\mathsfbfsl{q}" +}, + "𝙧": { + math: "\\mathsfbfsl{r}" +}, + "𝙨": { + math: "\\mathsfbfsl{s}" +}, + "𝙩": { + math: "\\mathsfbfsl{t}" +}, + "𝙪": { + math: "\\mathsfbfsl{u}" +}, + "𝙫": { + math: "\\mathsfbfsl{v}" +}, + "𝙬": { + math: "\\mathsfbfsl{w}" +}, + "𝙭": { + math: "\\mathsfbfsl{x}" +}, + "𝙮": { + math: "\\mathsfbfsl{y}" +}, + "𝙯": { + math: "\\mathsfbfsl{z}" +}, + "𝙰": { + math: "\\mathtt{A}" +}, + "𝙱": { + math: "\\mathtt{B}" +}, + "𝙲": { + math: "\\mathtt{C}" +}, + "𝙳": { + math: "\\mathtt{D}" +}, + "𝙴": { + math: "\\mathtt{E}" +}, + "𝙵": { + math: "\\mathtt{F}" +}, + "𝙶": { + math: "\\mathtt{G}" +}, + "𝙷": { + math: "\\mathtt{H}" +}, + "𝙸": { + math: "\\mathtt{I}" +}, + "𝙹": { + math: "\\mathtt{J}" +}, + "𝙺": { + math: "\\mathtt{K}" +}, + "𝙻": { + math: "\\mathtt{L}" +}, + "𝙼": { + math: "\\mathtt{M}" +}, + "𝙽": { + math: "\\mathtt{N}" +}, + "𝙾": { + math: "\\mathtt{O}" +}, + "𝙿": { + math: "\\mathtt{P}" +}, + "𝚀": { + math: "\\mathtt{Q}" +}, + "𝚁": { + math: "\\mathtt{R}" +}, + "𝚂": { + math: "\\mathtt{S}" +}, + "𝚃": { + math: "\\mathtt{T}" +}, + "𝚄": { + math: "\\mathtt{U}" +}, + "𝚅": { + math: "\\mathtt{V}" +}, + "𝚆": { + math: "\\mathtt{W}" +}, + "𝚇": { + math: "\\mathtt{X}" +}, + "𝚈": { + math: "\\mathtt{Y}" +}, + "𝚉": { + math: "\\mathtt{Z}" +}, + "𝚊": { + math: "\\mathtt{a}" +}, + "𝚋": { + math: "\\mathtt{b}" +}, + "𝚌": { + math: "\\mathtt{c}" +}, + "𝚍": { + math: "\\mathtt{d}" +}, + "𝚎": { + math: "\\mathtt{e}" +}, + "𝚏": { + math: "\\mathtt{f}" +}, + "𝚐": { + math: "\\mathtt{g}" +}, + "𝚑": { + math: "\\mathtt{h}" +}, + "𝚒": { + math: "\\mathtt{i}" +}, + "𝚓": { + math: "\\mathtt{j}" +}, + "𝚔": { + math: "\\mathtt{k}" +}, + "𝚕": { + math: "\\mathtt{l}" +}, + "𝚖": { + math: "\\mathtt{m}" +}, + "𝚗": { + math: "\\mathtt{n}" +}, + "𝚘": { + math: "\\mathtt{o}" +}, + "𝚙": { + math: "\\mathtt{p}" +}, + "𝚚": { + math: "\\mathtt{q}" +}, + "𝚛": { + math: "\\mathtt{r}" +}, + "𝚜": { + math: "\\mathtt{s}" +}, + "𝚝": { + math: "\\mathtt{t}" +}, + "𝚞": { + math: "\\mathtt{u}" +}, + "𝚟": { + math: "\\mathtt{v}" +}, + "𝚠": { + math: "\\mathtt{w}" +}, + "𝚡": { + math: "\\mathtt{x}" +}, + "𝚢": { + math: "\\mathtt{y}" +}, + "𝚣": { + math: "\\mathtt{z}" +}, + "𝚤": { + math: "\\imath" +}, + "𝚥": { + math: "\\jmath" +}, + "𝚨": { + math: "\\mathbf{A}" +}, + "𝚩": { + math: "\\mathbf{B}" +}, + "𝚪": { + math: "\\mathbf{\\Gamma}" +}, + "𝚫": { + math: "\\mathbf{\\Delta}" +}, + "𝚬": { + math: "\\mathbf{E}" +}, + "𝚭": { + math: "\\mathbf{Z}" +}, + "𝚮": { + math: "\\mathbf{H}" +}, + "𝚯": { + math: "\\mathbf{\\Theta}" +}, + "𝚰": { + math: "\\mathbf{I}" +}, + "𝚱": { + math: "\\mathbf{K}" +}, + "𝚲": { + math: "\\mathbf{\\Lambda}" +}, + "𝚳": { + math: "M" +}, + "𝚴": { + math: "N" +}, + "𝚵": { + math: "\\mathbf{\\Xi}" +}, + "𝚶": { + math: "O" +}, + "𝚷": { + math: "\\mathbf{\\Pi}" +}, + "𝚸": { + math: "\\mathbf{P}" +}, + "𝚹": { + math: "\\mathbf{\\vartheta}" +}, + "𝚺": { + math: "\\mathbf{\\Sigma}" +}, + "𝚻": { + math: "\\mathbf{T}" +}, + "𝚼": { + math: "\\mathbf{\\Upsilon}" +}, + "𝚽": { + math: "\\mathbf{\\Phi}" +}, + "𝚾": { + math: "\\mathbf{X}" +}, + "𝚿": { + math: "\\mathbf{\\Psi}" +}, + "𝛀": { + math: "\\mathbf{\\Omega}" +}, + "𝛁": { + math: "\\mathbf{\\nabla}" +}, + "𝛂": { + math: "\\mathbf{\\alpha}" +}, + "𝛃": { + math: "\\mathbf{\\beta}" +}, + "𝛄": { + math: "\\mathbf{\\gamma}" +}, + "𝛅": { + math: "\\mathbf{\\delta}" +}, + "𝛆": { + math: "\\mathbf{\\epsilon}" +}, + "𝛇": { + math: "\\mathbf{\\zeta}" +}, + "𝛈": { + math: "\\mathbf{\\eta}" +}, + "𝛉": { + math: "\\mathbf{\\theta}" +}, + "𝛊": { + math: "\\mathbf{I}" +}, + "𝛋": { + math: "\\mathbf{K}" +}, + "𝛌": { + math: "\\mathbf{\\lambda}" +}, + "𝛍": { + math: "M" +}, + "𝛎": { + math: "N" +}, + "𝛏": { + math: "\\mathbf{\\xi}" +}, + "𝛐": { + math: "O" +}, + "𝛑": { + math: "\\mathbf{\\pi}" +}, + "𝛒": { + math: "\\mathbf{P}" +}, + "𝛓": { + math: "\\mathbf{\\varsigma}" +}, + "𝛔": { + math: "\\mathbf{\\sigma}" +}, + "𝛕": { + math: "\\mathbf{T}" +}, + "𝛖": { + math: "\\mathbf{\\upsilon}" +}, + "𝛗": { + math: "\\mathbf{\\phi}" +}, + "𝛘": { + math: "\\mathbf{X}" +}, + "𝛙": { + math: "\\mathbf{\\psi}" +}, + "𝛚": { + math: "\\mathbf{\\omega}" +}, + "𝛛": { + math: "\\partial" +}, + "𝛜": { + math: "\\in" +}, + "𝛝": { + math: "\\mathbf{\\vartheta}" +}, + "𝛞": { + math: "\\mathbf{\\varkappa}" +}, + "𝛟": { + math: "\\mathbf{\\phi}" +}, + "𝛠": { + math: "\\mathbf{\\varrho}" +}, + "𝛡": { + math: "\\mathbf{\\varpi}" +}, + "𝛢": { + math: "\\mathsl{A}" +}, + "𝛣": { + math: "\\mathsl{B}" +}, + "𝛤": { + math: "\\mathsl{\\Gamma}" +}, + "𝛥": { + math: "\\mathsl{\\Delta}" +}, + "𝛦": { + math: "\\mathsl{E}" +}, + "𝛧": { + math: "\\mathsl{Z}" +}, + "𝛨": { + math: "\\mathsl{H}" +}, + "𝛩": { + math: "\\mathsl{\\Theta}" +}, + "𝛪": { + math: "\\mathsl{I}" +}, + "𝛫": { + math: "\\mathsl{K}" +}, + "𝛬": { + math: "\\mathsl{\\Lambda}" +}, + "𝛭": { + math: "M" +}, + "𝛮": { + math: "N" +}, + "𝛯": { + math: "\\mathsl{\\Xi}" +}, + "𝛰": { + math: "O" +}, + "𝛱": { + math: "\\mathsl{\\Pi}" +}, + "𝛲": { + math: "\\mathsl{P}" +}, + "𝛳": { + math: "\\mathsl{\\Theta}" +}, + "𝛴": { + math: "\\mathsl{\\Sigma}" +}, + "𝛵": { + math: "\\mathsl{T}" +}, + "𝛶": { + math: "\\mathsl{\\Upsilon}" +}, + "𝛷": { + math: "\\mathsl{\\Phi}" +}, + "𝛸": { + math: "\\mathsl{X}" +}, + "𝛹": { + math: "\\mathsl{\\Psi}" +}, + "𝛺": { + math: "\\mathsl{\\Omega}" +}, + "𝛻": { + math: "\\mathsl{\\nabla}" +}, + "𝛼": { + math: "\\mathsl{A}" +}, + "𝛽": { + math: "\\mathsl{B}" +}, + "𝛾": { + math: "\\mathsl{\\gamma}" +}, + "𝛿": { + math: "\\mathsl{\\delta}" +}, + "𝜀": { + math: "\\mathsl{E}" +}, + "𝜁": { + math: "\\mathsl{Z}" +}, + "𝜂": { + math: "\\mathsl{H}" +}, + "𝜃": { + math: "\\mathsl{\\theta}" +}, + "𝜄": { + math: "\\mathsl{I}" +}, + "𝜅": { + math: "\\mathsl{K}" +}, + "𝜆": { + math: "\\mathsl{\\lambda}" +}, + "𝜇": { + math: "\\mu" +}, + "𝜈": { + math: "\\nu" +}, + "𝜉": { + math: "\\mathsl{\\xi}" +}, + "𝜊": { + math: "o" +}, + "𝜋": { + math: "\\mathsl{\\pi}" +}, + "𝜌": { + math: "\\mathsl{P}" +}, + "𝜍": { + math: "\\mathsl{\\varsigma}" +}, + "𝜎": { + math: "\\mathsl{\\sigma}" +}, + "𝜏": { + math: "\\mathsl{T}" +}, + "𝜐": { + math: "\\mathsl{\\upsilon}" +}, + "𝜑": { + math: "\\mathsl{\\varphi}" +}, + "𝜒": { + math: "\\mathsl{X}" +}, + "𝜓": { + math: "\\mathsl{\\psi}" +}, + "𝜔": { + math: "\\mathsl{\\omega}" +}, + "𝜕": { + math: "\\partial" +}, + "𝜖": { + math: "\\in" +}, + "𝜗": { + math: "\\mathsl{\\vartheta}" +}, + "𝜘": { + math: "\\mathsl{\\varkappa}" +}, + "𝜙": { + math: "\\mathsl{\\phi}" +}, + "𝜚": { + math: "\\mathsl{\\varrho}" +}, + "𝜛": { + math: "\\mathsl{\\varpi}" +}, + "𝜜": { + math: "\\mathbit{A}" +}, + "𝜝": { + math: "\\mathbit{B}" +}, + "𝜞": { + math: "\\mathbit{\\Gamma}" +}, + "𝜟": { + math: "\\mathbit{\\Delta}" +}, + "𝜠": { + math: "\\mathbit{E}" +}, + "𝜡": { + math: "\\mathbit{Z}" +}, + "𝜢": { + math: "\\mathbit{H}" +}, + "𝜣": { + math: "\\mathbit{\\Theta}" +}, + "𝜤": { + math: "\\mathbit{I}" +}, + "𝜥": { + math: "\\mathbit{K}" +}, + "𝜦": { + math: "\\mathbit{\\Lambda}" +}, + "𝜧": { + math: "M" +}, + "𝜨": { + math: "N" +}, + "𝜩": { + math: "\\mathbit{\\Xi}" +}, + "𝜪": { + math: "O" +}, + "𝜫": { + math: "\\mathbit{\\Pi}" +}, + "𝜬": { + math: "\\mathbit{P}" +}, + "𝜭": { + math: "\\mathbit{O}" +}, + "𝜮": { + math: "\\mathbit{\\Sigma}" +}, + "𝜯": { + math: "\\mathbit{T}" +}, + "𝜰": { + math: "\\mathbit{\\Upsilon}" +}, + "𝜱": { + math: "\\mathbit{\\Phi}" +}, + "𝜲": { + math: "\\mathbit{X}" +}, + "𝜳": { + math: "\\mathbit{\\Psi}" +}, + "𝜴": { + math: "\\mathbit{\\Omega}" +}, + "𝜵": { + math: "\\mathbit{\\nabla}" +}, + "𝜶": { + math: "\\mathbit{\\alpha}" +}, + "𝜷": { + math: "\\mathbit{\\beta}" +}, + "𝜸": { + math: "\\mathbit{\\gamma}" +}, + "𝜹": { + math: "\\mathbit{\\delta}" +}, + "𝜺": { + math: "\\mathbit{\\epsilon}" +}, + "𝜻": { + math: "\\mathbit{\\zeta}" +}, + "𝜼": { + math: "\\mathbit{\\eta}" +}, + "𝜽": { + math: "\\mathbit{\\theta}" +}, + "𝜾": { + math: "\\mathbit{\\imath}" +}, + "𝜿": { + math: "\\mathbit{\\kappa}" +}, + "𝝀": { + math: "\\mathbit{\\lambda}" +}, + "𝝁": { + math: "\\mu" +}, + "𝝂": { + math: "N" +}, + "𝝃": { + math: "\\mathbit{\\xi}" +}, + "𝝄": { + math: "O" +}, + "𝝅": { + math: "\\mathbit{\\pi}" +}, + "𝝆": { + math: "\\mathbit{\\rho}" +}, + "𝝇": { + math: "\\mathbit{\\varsigma}" +}, + "𝝈": { + math: "\\mathbit{\\sigma}" +}, + "𝝉": { + math: "\\mathbit{\\tau}" +}, + "𝝊": { + math: "\\mathbit{\\upsilon}" +}, + "𝝋": { + math: "\\mathbit{\\varphi}" +}, + "𝝌": { + math: "\\mathbit{\\chi}" +}, + "𝝍": { + math: "\\mathbit{\\psi}" +}, + "𝝎": { + math: "\\mathbit{\\omega}" +}, + "𝝏": { + math: "\\partial" +}, + "𝝐": { + math: "\\in" +}, + "𝝑": { + math: "\\mathbit{\\vartheta}" +}, + "𝝒": { + math: "\\mathbit{\\varkappa}" +}, + "𝝓": { + math: "\\mathbit{\\phi}" +}, + "𝝔": { + math: "\\mathbit{\\varrho}" +}, + "𝝕": { + math: "\\mathbit{\\varpi}" +}, + "𝝖": { + math: "\\mathsfbf{A}" +}, + "𝝗": { + math: "\\mathsfbf{B}" +}, + "𝝘": { + math: "\\mathsfbf{\\Gamma}" +}, + "𝝙": { + math: "\\mathsfbf{\\Delta}" +}, + "𝝚": { + math: "\\mathsfbf{E}" +}, + "𝝛": { + math: "\\mathsfbf{Z}" +}, + "𝝜": { + math: "\\mathsfbf{H}" +}, + "𝝝": { + math: "\\mathsfbf{\\Theta}" +}, + "𝝞": { + math: "\\mathsfbf{I}" +}, + "𝝟": { + math: "\\mathsfbf{K}" +}, + "𝝠": { + math: "\\mathsfbf{\\Lambda}" +}, + "𝝡": { + math: "M" +}, + "𝝢": { + math: "N" +}, + "𝝣": { + math: "\\mathsfbf{\\Xi}" +}, + "𝝤": { + math: "O" +}, + "𝝥": { + math: "\\mathsfbf{\\Pi}" +}, + "𝝦": { + math: "\\mathsfbf{P}" +}, + "𝝧": { + math: "\\mathsfbf{\\Theta}" +}, + "𝝨": { + math: "\\mathsfbf{\\Sigma}" +}, + "𝝩": { + math: "\\mathsfbf{T}" +}, + "𝝪": { + math: "\\mathsfbf{\\Upsilon}" +}, + "𝝫": { + math: "\\mathsfbf{\\Phi}" +}, + "𝝬": { + math: "\\mathsfbf{X}" +}, + "𝝭": { + math: "\\mathsfbf{\\Psi}" +}, + "𝝮": { + math: "\\mathsfbf{\\Omega}" +}, + "𝝯": { + math: "\\mathsfbf{\\nabla}" +}, + "𝝰": { + math: "\\mathsfbf{\\alpha}" +}, + "𝝱": { + math: "\\mathsfbf{\\beta}" +}, + "𝝲": { + math: "\\mathsfbf{\\gamma}" +}, + "𝝳": { + math: "\\mathsfbf{\\delta}" +}, + "𝝴": { + math: "\\mathsfbf{\\varepsilon}" +}, + "𝝵": { + math: "\\mathsfbf{\\zeta}" +}, + "𝝶": { + math: "\\mathsfbf{\\eta}" +}, + "𝝷": { + math: "\\mathsfbf{\\theta}" +}, + "𝝸": { + math: "\\mathsfbf{\\imath}" +}, + "𝝹": { + math: "\\mathsfbf{\\kappa}" +}, + "𝝺": { + math: "\\mathsfbf{\\lambda}" +}, + "𝝻": { + math: "\\mu" +}, + "𝝼": { + math: "\\nu" +}, + "𝝽": { + math: "\\mathsfbf{\\xi}" +}, + "𝝾": { + math: "o" +}, + "𝝿": { + math: "\\mathsfbf{\\pi}" +}, + "𝞀": { + math: "\\mathsfbf{\\rho}" +}, + "𝞁": { + math: "\\mathsfbf{\\varsigma}" +}, + "𝞂": { + math: "\\mathsfbf{\\sigma}" +}, + "𝞃": { + math: "\\mathsfbf{\\tau}" +}, + "𝞄": { + math: "\\mathsfbf{\\upsilon}" +}, + "𝞅": { + math: "\\mathsfbf{\\varphi}" +}, + "𝞆": { + math: "\\mathsfbf{\\chi}" +}, + "𝞇": { + math: "\\mathsfbf{\\psi}" +}, + "𝞈": { + math: "\\mathsfbf{\\omega}" +}, + "𝞉": { + math: "\\partial" +}, + "𝞊": { + math: "\\in" +}, + "𝞋": { + math: "\\mathsfbf{\\vartheta}" +}, + "𝞌": { + math: "\\mathsfbf{\\varkappa}" +}, + "𝞍": { + math: "\\mathsfbf{\\phi}" +}, + "𝞎": { + math: "\\mathsfbf{\\varrho}" +}, + "𝞏": { + math: "\\mathsfbf{\\varpi}" +}, + "𝞐": { + math: "\\mathsfbfsl{A}" +}, + "𝞑": { + math: "\\mathsfbfsl{B}" +}, + "𝞒": { + math: "\\mathsfbfsl{\\Gamma}" +}, + "𝞓": { + math: "\\mathsfbfsl{\\Delta}" +}, + "𝞔": { + math: "\\mathsfbfsl{E}" +}, + "𝞕": { + math: "\\mathsfbfsl{Z}" +}, + "𝞖": { + math: "\\mathsfbfsl{H}" +}, + "𝞗": { + math: "\\mathsfbfsl{\\Theta}" +}, + "𝞘": { + math: "\\mathsfbfsl{I}" +}, + "𝞙": { + math: "\\mathsfbfsl{K}" +}, + "𝞚": { + math: "\\mathsfbfsl{\\Lambda}" +}, + "𝞛": { + math: "\\mathsfbfsl{M}" +}, + "𝞜": { + math: "\\mathsfbfsl{N}" +}, + "𝞝": { + math: "\\mathsfbfsl{\\Xi}" +}, + "𝞞": { + math: "\\mathsfbfsl{O}" +}, + "𝞟": { + math: "\\mathsfbfsl{\\Pi}" +}, + "𝞠": { + math: "\\mathsfbfsl{P}" +}, + "𝞡": { + math: "\\mathsfbfsl{\\Theta}" +}, + "𝞢": { + math: "\\mathsfbfsl{\\Sigma}" +}, + "𝞣": { + math: "\\mathsfbfsl{T}" +}, + "𝞤": { + math: "\\mathsfbfsl{\\Upsilon}" +}, + "𝞥": { + math: "\\mathsfbfsl{\\Phi}" +}, + "𝞦": { + math: "\\mathsfbfsl{X}" +}, + "𝞧": { + math: "\\mathsfbfsl{\\Psi}" +}, + "𝞨": { + math: "\\mathsfbfsl{\\Omega}" +}, + "𝞩": { + math: "\\mathsfbfsl{\\nabla}" +}, + "𝞪": { + math: "\\mathsfbfsl{\\alpha}" +}, + "𝞫": { + math: "\\mathsfbfsl{\\beta}" +}, + "𝞬": { + math: "\\mathsfbfsl{\\gamma}" +}, + "𝞭": { + math: "\\mathsfbfsl{\\delta}" +}, + "𝞮": { + math: "\\mathsfbfsl{\\varepsilon}" +}, + "𝞯": { + math: "\\mathsfbfsl{\\zeta}" +}, + "𝞰": { + math: "\\mathsfbfsl{\\eta}" +}, + "𝞱": { + math: "\\mathsfbfsl{\\theta}" +}, + "𝞲": { + math: "\\mathsfbfsl{\\imath}" +}, + "𝞳": { + math: "\\mathsfbfsl{\\kappa}" +}, + "𝞴": { + math: "\\mathsfbfsl{\\lambda}" +}, + "𝞵": { + math: "\\mu" +}, + "𝞶": { + math: "\\nu" +}, + "𝞷": { + math: "\\mathsfbfsl{\\xi}" +}, + "𝞸": { + math: "o" +}, + "𝞹": { + math: "\\mathsfbfsl{\\pi}" +}, + "𝞺": { + math: "\\mathsfbfsl{\\rho}" +}, + "𝞻": { + math: "\\mathsfbfsl{\\varsigma}" +}, + "𝞼": { + math: "\\mathsfbfsl{\\sigma}" +}, + "𝞽": { + math: "\\mathsfbfsl{\\tau}" +}, + "𝞾": { + math: "\\mathsfbfsl{\\upsilon}" +}, + "𝞿": { + math: "\\mathsfbfsl{\\varphi}" +}, + "𝟀": { + math: "\\mathsfbfsl{\\chi}" +}, + "𝟁": { + math: "\\mathsfbfsl{\\psi}" +}, + "𝟂": { + math: "\\mathsfbfsl{\\omega}" +}, + "𝟃": { + math: "\\partial" +}, + "𝟄": { + math: "\\in" +}, + "𝟅": { + math: "\\mathsfbfsl{\\vartheta}" +}, + "𝟆": { + math: "\\mathsfbfsl{\\varkappa}" +}, + "𝟇": { + math: "\\mathsfbfsl{\\phi}" +}, + "𝟈": { + math: "\\mathsfbfsl{\\varrho}" +}, + "𝟉": { + math: "\\mathsfbfsl{\\varpi}" +}, + "𝟊": { + math: "\\mbfDigamma" +}, + "𝟋": { + math: "\\mbfdigamma" +}, + "𝟎": { + math: "\\mathbf{0}" +}, + "𝟏": { + math: "\\mathbf{1}" +}, + "𝟐": { + math: "\\mathbf{2}" +}, + "𝟑": { + math: "\\mathbf{3}" +}, + "𝟒": { + math: "\\mathbf{4}" +}, + "𝟓": { + math: "\\mathbf{5}" +}, + "𝟔": { + math: "\\mathbf{6}" +}, + "𝟕": { + math: "\\mathbf{7}" +}, + "𝟖": { + math: "\\mathbf{8}" +}, + "𝟗": { + math: "\\mathbf{9}" +}, + "𝟘": { + math: "\\mathbb{0}" +}, + "𝟙": { + math: "\\mathbb{1}" +}, + "𝟚": { + math: "\\mathbb{2}" +}, + "𝟛": { + math: "\\mathbb{3}" +}, + "𝟜": { + math: "\\mathbb{4}" +}, + "𝟝": { + math: "\\mathbb{5}" +}, + "𝟞": { + math: "\\mathbb{6}" +}, + "𝟟": { + math: "\\mathbb{7}" +}, + "𝟠": { + math: "\\mathbb{8}" +}, + "𝟡": { + math: "\\mathbb{9}" +}, + "𝟢": { + math: "\\mathsf{0}" +}, + "𝟣": { + math: "\\mathsf{1}" +}, + "𝟤": { + math: "\\mathsf{2}" +}, + "𝟥": { + math: "\\mathsf{3}" +}, + "𝟦": { + math: "\\mathsf{4}" +}, + "𝟧": { + math: "\\mathsf{5}" +}, + "𝟨": { + math: "\\mathsf{6}" +}, + "𝟩": { + math: "\\mathsf{7}" +}, + "𝟪": { + math: "\\mathsf{8}" +}, + "𝟫": { + math: "\\mathsf{9}" +}, + "𝟬": { + math: "\\mathsfbf{0}" +}, + "𝟭": { + math: "\\mathsfbf{1}" +}, + "𝟮": { + math: "\\mathsfbf{2}" +}, + "𝟯": { + math: "\\mathsfbf{3}" +}, + "𝟰": { + math: "\\mathsfbf{4}" +}, + "𝟱": { + math: "\\mathsfbf{5}" +}, + "𝟲": { + math: "\\mathsfbf{6}" +}, + "𝟳": { + math: "\\mathsfbf{7}" +}, + "𝟴": { + math: "\\mathsfbf{8}" +}, + "𝟵": { + math: "\\mathsfbf{9}" +}, + "𝟶": { + math: "\\mathtt{0}" +}, + "𝟷": { + math: "\\mathtt{1}" +}, + "𝟸": { + math: "\\mathtt{2}" +}, + "𝟹": { + math: "\\mathtt{3}" +}, + "𝟺": { + math: "\\mathtt{4}" +}, + "𝟻": { + math: "\\mathtt{5}" +}, + "𝟼": { + math: "\\mathtt{6}" +}, + "𝟽": { + math: "\\mathtt{7}" +}, + "𝟾": { + math: "\\mathtt{8}" +}, + "𝟿": { + math: "\\mathtt{9}" +} +}; + +var $$2 = { + math: "\\$", + text: "\\$" +}; +var _$2 = { + math: "\\_", + text: "\\_" +}; +var require$$2 = { + "#": { + math: "\\#", + text: "\\#" +}, + $: $$2, + "%": { + math: "\\%", + text: "\\%" +}, + "&": { + math: "\\&", + text: "\\&" +}, + "/​": { + text: "\\slash", + commandspacer: true +}, + "<": { + math: "<" +}, + ">": { + math: ">" +}, + "\\": { + math: "\\backslash", + text: "\\textbackslash", + commandspacer: true +}, + "^": { + math: "\\sphat", + text: "\\^" +}, + _: _$2, + "{": { + math: "\\lbrace", + text: "\\{" +}, + "}": { + math: "\\rbrace", + text: "\\}" +}, + "~": { + math: "\\sptilde", + text: "\\textasciitilde", + commandspacer: true +}, + " ": { + math: "~", + space: true, + text: "~" +}, + " ": { + text: " ", + space: true +}, + " ": { + math: "\\quad", + space: true +}, + " ": { + text: "\\hspace{0.6em}", + space: true +}, + " ": { + math: "\\quad", + space: true, + text: "\\hspace{1em}" +}, + " ": { + text: "\\;", + space: true +}, + " ": { + text: "\\hspace{0.25em}", + space: true +}, + " ": { + text: "\\hspace{0.166em}", + space: true +}, + " ": { + text: "\\hphantom{0}", + space: true +}, + " ": { + text: "\\hphantom{,}", + space: true +}, + " ": { + text: "\\,", + space: true +}, + " ": { + math: "\\mkern1mu", + space: true +}, + "​": { + text: "\\mbox", + commandspacer: true, + space: true +}, + " ": { + text: " ", + space: true +}, + " ": { + math: "\\:", + space: true, + text: "\\:" +} +}; + +var require$$3 = { + "\\#": "#", + "\\$": "$", + "\\%": "%", + "\\&": "&", + "\\slash": "/​", + "\\textless": "<", + "\\textgreater": ">", + "\\LaTeX": "LaTeX", + "\\textbackslash": "\\", + "\\backslash": "\\", + "\\": "\\", + "\\^": "^", + "\\sphat": "^", + "\\_": "_", + "\\t{ia}": "i︠a︡", + "{\\~ w}": "w̃", + "\\{": "{", + "\\lbrace": "{", + "\\textbar": "|", + "\\}": "}", + "\\rbrace": "}", + "\\textasciitilde": "~", + "\\sptilde": "~", + "\\textexclamdown": "¡", + "\\textcent": "¢", + "\\cent": "¢", + "\\textsterling": "£", + "\\pounds": "£", + "\\textcurrency": "¤", + "\\textyen": "¥", + "\\yen": "¥", + "\\textbrokenbar": "¦", + "\\textsection": "§", + "\\textasciidieresis": "¨", + "\\spddot": "¨", + "\\textcopyright": "©", + "\\textordfeminine": "ª", + "\\guillemotleft": "«", + "\\lnot": "¬", + "\\neg": "¬", + "\\-": "­", + "\\textregistered": "®", + "\\circledR": "®", + "\\textasciimacron": "¯", + "\\textdegree": "°", + "^\\circ": "°", + "\\pm": "±", + "^{2}": "²", + "^{3}": "³", + "\\textasciiacute": "´", + "\\textmu": "µ", + "\\textparagraph": "¶", + "^{1}": "¹", + "\\textordmasculine": "º", + "\\guillemotright": "»", + "\\frac{1}{4}": "¼", + "\\textonequarter": "¼", + "\\frac{1}{2}": "½", + "\\textonehalf": "½", + "\\frac{3}{4}": "¾", + "\\textthreequarters": "¾", + "\\textquestiondown": "¿", + "\\`A": "À", + "\\'A": "Á", + "\\^A": "Â", + "\\~A": "Ã", + "\\\"A": "Ä", + "\\AA": "Å", + "\\r{A}": "Å", + "{\\r A}": "Å", + "\\AE": "Æ", + "\\c{C}": "Ç", + "\\`E": "È", + "\\'E": "É", + "\\^E": "Ê", + "\\\"E": "Ë", + "\\`I": "Ì", + "\\'I": "Í", + "\\^I": "Î", + "\\\"I": "Ï", + "\\DH": "Ð", + "\\~N": "Ñ", + "\\`O": "Ò", + "\\'O": "Ó", + "\\^O": "Ô", + "\\~O": "Õ", + "\\\"O": "Ö", + "\\texttimes": "×", + "\\times": "×", + "\\O": "Ø", + "\\`U": "Ù", + "\\'U": "Ú", + "\\^U": "Û", + "\\\"U": "Ü", + "\\'Y": "Ý", + "\\TH": "Þ", + "\\ss": "ß", + "\\`a": "à", + "\\'a": "á", + "\\^a": "â", + "\\~a": "ã", + "\\\"a": "ä", + "\\aa": "å", + "\\r{a}": "å", + "{\\r a}": "å", + "\\ae": "æ", + "\\c{c}": "ç", + "\\`e": "è", + "\\'e": "é", + "\\^e": "ê", + "\\\"e": "ë", + "\\`i": "ì", + "\\`\\i": "ì", + "\\'i": "í", + "\\'\\i": "í", + "\\^i": "î", + "\\^\\i": "î", + "\\\"i": "ï", + "\\\"\\i": "ï", + "\\dh": "ð", + "\\eth": "ð", + "\\~n": "ñ", + "\\`o": "ò", + "\\'o": "ó", + "\\^o": "ô", + "\\~o": "õ", + "\\\"o": "ö", + "\\div": "÷", + "\\o": "ø", + "\\`u": "ù", + "\\'u": "ú", + "\\^u": "û", + "\\\"u": "ü", + "\\'y": "ý", + "\\th": "þ", + "\\\"y": "ÿ", + "\\=A": "Ā", + "\\=a": "ā", + "\\u{A}": "Ă", + "\\u{a}": "ă", + "\\k{A}": "Ą", + "\\k{a}": "ą", + "\\'C": "Ć", + "\\'c": "ć", + "\\^C": "Ĉ", + "\\^c": "ĉ", + "\\.C": "Ċ", + "\\.c": "ċ", + "\\v{C}": "Č", + "\\v{c}": "č", + "\\v{D}": "Ď", + "\\v{d}": "ď", + "\\DJ": "Đ", + "\\dj": "đ", + "\\=E": "Ē", + "\\=e": "ē", + "\\u{E}": "Ĕ", + "\\u{e}": "ĕ", + "\\.E": "Ė", + "\\.e": "ė", + "\\k{E}": "Ę", + "\\k{e}": "ę", + "\\v{E}": "Ě", + "\\v{e}": "ě", + "\\^G": "Ĝ", + "\\^g": "ĝ", + "\\u{G}": "Ğ", + "\\u{g}": "ğ", + "\\.G": "Ġ", + "\\.g": "ġ", + "\\c{G}": "Ģ", + "\\c{g}": "ģ", + "\\^H": "Ĥ", + "\\^h": "ĥ", + "{\\fontencoding{LELA}\\selectfont\\char40}": "Ħ", + "\\Elzxh": "ħ", + "\\~I": "Ĩ", + "\\~i": "ĩ", + "\\=I": "Ī", + "\\=i": "ī", + "\\u{I}": "Ĭ", + "{\\u \\i}": "ĭ", + "\\k{I}": "Į", + "\\k{i}": "į", + "\\.I": "İ", + "\\i": "ı", + "\\imath": "ı", + "\\^J": "Ĵ", + "\\^\\j": "ĵ", + "\\c{K}": "Ķ", + "\\c{k}": "ķ", + "{\\fontencoding{LELA}\\selectfont\\char91}": "ĸ", + "\\'L": "Ĺ", + "\\'l": "ĺ", + "\\c{L}": "Ļ", + "\\c{l}": "ļ", + "\\v{L}": "Ľ", + "\\v{l}": "ľ", + "{\\fontencoding{LELA}\\selectfont\\char201}": "Ŀ", + "{\\fontencoding{LELA}\\selectfont\\char202}": "ŀ", + "\\L": "Ł", + "\\l": "ł", + "\\'N": "Ń", + "\\'n": "ń", + "\\c{N}": "Ņ", + "\\c{n}": "ņ", + "\\v{N}": "Ň", + "\\v{n}": "ň", + "\\NG": "Ŋ", + "\\ng": "ŋ", + "\\=O": "Ō", + "\\=o": "ō", + "\\u{O}": "Ŏ", + "\\u{o}": "ŏ", + "\\H{O}": "Ő", + "\\H{o}": "ő", + "\\OE": "Œ", + "\\oe": "œ", + "\\'R": "Ŕ", + "\\'r": "ŕ", + "\\c{R}": "Ŗ", + "\\c{r}": "ŗ", + "\\v{R}": "Ř", + "\\v{r}": "ř", + "\\'S": "Ś", + "\\'s": "ś", + "\\^S": "Ŝ", + "\\^s": "ŝ", + "\\c{S}": "Ş", + "\\c{s}": "ş", + "\\v{S}": "Š", + "\\v{s}": "š", + "\\c{T}": "Ţ", + "\\c{t}": "ţ", + "\\v{T}": "Ť", + "\\v{t}": "ť", + "{\\fontencoding{LELA}\\selectfont\\char47}": "Ŧ", + "{\\fontencoding{LELA}\\selectfont\\char63}": "ŧ", + "\\~U": "Ũ", + "\\~u": "ũ", + "\\=U": "Ū", + "\\=u": "ū", + "\\u{U}": "Ŭ", + "\\u{u}": "ŭ", + "\\r{U}": "Ů", + "{\\r U}": "Ů", + "\\r{u}": "ů", + "\\ocirc{u}": "ů", + "{\\r u}": "ů", + "\\H{U}": "Ű", + "\\H{u}": "ű", + "\\k{U}": "Ų", + "\\k{u}": "ų", + "\\^W": "Ŵ", + "\\^w": "ŵ", + "\\^Y": "Ŷ", + "\\^y": "ŷ", + "\\\"Y": "Ÿ", + "\\'Z": "Ź", + "\\'z": "ź", + "\\.Z": "Ż", + "\\.z": "ż", + "\\v{Z}": "Ž", + "\\v{z}": "ž", + "\\texthvlig": "ƕ", + "\\textnrleg": "ƞ", + "\\textesh": "ƪ", + "\\Zbar": "Ƶ", + "{\\fontencoding{LELA}\\selectfont\\char195}": "ƺ", + "\\textdoublepipe": "ǂ", + "\\v{A}": "Ǎ", + "\\v{a}": "ǎ", + "\\v{I}": "Ǐ", + "\\v{i}": "ǐ", + "\\v{O}": "Ǒ", + "\\v{o}": "ǒ", + "\\v{U}": "Ǔ", + "\\v{u}": "ǔ", + "\\v{G}": "Ǧ", + "\\v{g}": "ǧ", + "\\v{K}": "Ǩ", + "\\v{k}": "ǩ", + "\\k{O}": "Ǫ", + "\\k{o}": "ǫ", + "\\v{j}": "ǰ", + "\\'G": "Ǵ", + "\\'g": "ǵ", + "\\c{E}": "Ȩ", + "\\c{e}": "ȩ", + "\\jmath": "ȷ", + "\\Elztrna": "ɐ", + "\\Elztrnsa": "ɒ", + "\\Elzopeno": "ɔ", + "\\Elzrtld": "ɖ", + "{\\fontencoding{LEIP}\\selectfont\\char61}": "ɘ", + "\\Elzschwa": "ə", + "\\varepsilon": "ɛ", + "\\Elzpgamma": "ɣ", + "\\Elzpbgam": "ɤ", + "\\Elztrnh": "ɥ", + "\\Elzbtdl": "ɬ", + "\\Elzrtll": "ɭ", + "\\Elztrnm": "ɯ", + "\\Elztrnmlr": "ɰ", + "\\Elzltlmr": "ɱ", + "\\Elzltln": "ɲ", + "\\Elzrtln": "ɳ", + "\\Elzclomeg": "ɷ", + "\\textphi": "ɸ", + "\\Elztrnr": "ɹ", + "\\Elztrnrl": "ɺ", + "\\Elzrttrnr": "ɻ", + "\\Elzrl": "ɼ", + "\\Elzrtlr": "ɽ", + "\\Elzfhr": "ɾ", + "{\\fontencoding{LEIP}\\selectfont\\char202}": "ɿ", + "\\Elzrtls": "ʂ", + "\\Elzesh": "ʃ", + "\\Elztrnt": "ʇ", + "\\Elzrtlt": "ʈ", + "\\Elzpupsil": "ʊ", + "\\Elzpscrv": "ʋ", + "\\Elzinvv": "ʌ", + "\\Elzinvw": "ʍ", + "\\Elztrny": "ʎ", + "\\Elzrtlz": "ʐ", + "\\Elzyogh": "ʒ", + "\\Elzglst": "ʔ", + "\\Elzreglst": "ʕ", + "\\Elzinglst": "ʖ", + "\\textturnk": "ʞ", + "\\Elzdyogh": "ʤ", + "\\Elztesh": "ʧ", + "\\textsuperscript{h}": "ʰ", + "^{h}": "ʰ", + "\\textsuperscript{j}": "ʲ", + "^{j}": "ʲ", + "\\textsuperscript{r}": "ʳ", + "^{r}": "ʳ", + "\\textsuperscript{w}": "ʷ", + "^{w}": "ʷ", + "\\textsuperscript{y}": "ʸ", + "^{y}": "ʸ", + "\\lasp": "ʿ", + "\\textasciicircum": "ˆ", + "\\textasciicaron": "ˇ", + "\\Elzverts": "ˈ", + "\\Elzverti": "ˌ", + "\\Elzlmrk": "ː", + "\\Elzhlmrk": "ˑ", + "\\Elzsbrhr": "˒", + "\\Elzsblhr": "˓", + "\\Elzrais": "˔", + "\\Elzlow": "˕", + "\\textasciibreve": "˘", + "\\textperiodcentered": "˙", + "\\texttildelow": "˜", + "\\textsuperscript{l}": "ˡ", + "^{l}": "ˡ", + "\\textsuperscript{s}": "ˢ", + "^{s}": "ˢ", + "\\textsuperscript{x}": "ˣ", + "^{x}": "ˣ", + "\\tone{55}": "˥", + "\\tone{44}": "˦", + "\\tone{33}": "˧", + "\\tone{22}": "˨", + "\\tone{11}": "˩", + "\\`": "̀", + "\\grave": "̀", + "\\textgravemacron": "̀̄", + "\\textgravedot": "̀̇", + "\\'": "́", + "\\acute": "́", + "\\textacutemacron": "́̄", + "\\textacutewedge": "́̌", + "\\hat": "̂", + "\\textcircumdot": "̂̇", + "\\~": "̃", + "\\tilde": "̃", + "\\texttildedot": "̃̇", + "\\=": "̄", + "\\bar": "̄", + "\\overline": "̅", + "\\u": "̆", + "\\breve": "̆", + "\\textbrevemacron": "̆̄", + "\\.": "̇", + "\\dot": "̇", + "\\textdotacute": "̇́", + "\\\"": "̈", + "\\ddot": "̈", + "\\ovhook": "̉", + "\\r": "̊", + "\\mathring": "̊", + "\\textringmacron": "̊̄", + "\\H": "̋", + "\\check": "̌", + "\\v": "̌", + "\\textvbaraccent": "̍", + "\\textdoublevbaraccent": "̎", + "\\textdoublegrave": "̏", + "\\textdotbreve": "̐", + "{\\fontencoding{LECO}\\selectfont\\char177}": "̑", + "\\oturnedcomma": "̒", + "\\ocommatopright": "̕", + "\\textsubgrave": "̖", + "\\textadvancing": "̘", + "\\textretracting": "̙", + "\\droang": "̚", + "\\textcorner": "̚", + "\\textsublhalfring": "̜", + "\\textraising": "̝", + "\\textlowering": "̞", + "\\textsubplus": "̟", + "\\Elzpalh": "̡", + "\\Elzrh": "̢", + "\\d": "̣", + "\\textsubumlaut": "̤", + "\\textsubring": "̥", + "\\c": "̧", + "\\k": "̨", + "\\textsyllabic": "̩", + "\\Elzsbbrg": "̪", + "\\textsubbridge": "̪", + "{\\fontencoding{LECO}\\selectfont\\char203}": "̫", + "\\textsubwedge": "̬", + "\\textsubarch": "̯", + "\\utilde": "̰", + "\\textsubtilde": "̰", + "\\textsubbar": "̱", + "\\underbar": "̱", + "\\underline": "̲", + "\\textsuperimposetilde": "̴", + "\\Elzxl": "̵", + "\\Elzbar": "̶", + "{\\fontencoding{LECO}\\selectfont\\char215}": "̷", + "\\not": "̸", + "\\textsubrhalfring": "̹", + "\\textinvsubbridge": "̺", + "\\textsubsquare": "̻", + "\\textseagull": "̼", + "\\textovercross": "̽", + "{\\fontencoding{LECO}\\selectfont\\char225}": "͡", + "\\'H": "Ή", + "{\\'{}I}": "Ί", + "{\\'{}O}": "Ό", + "\\mathrm{'Y}": "Ύ", + "\\mathrm{'\\Omega}": "Ώ", + "\\acute{\\ddot{\\iota}}": "ΐ", + "\\Gamma": "Γ", + "\\varGamma": "Γ", + "\\Delta": "Δ", + "\\Theta": "Θ", + "\\Lambda": "Λ", + "\\Xi": "Ξ", + "\\Pi": "Π", + "\\Sigma": "Σ", + "\\Upsilon": "Υ", + "\\Phi": "Φ", + "\\Psi": "Ψ", + "\\Omega": "Ω", + "\\mathrm{\\ddot{I}}": "Ϊ", + "\\mathrm{\\ddot{Y}}": "Ϋ", + "{\\'$\\alpha$}": "ά", + "\\acute{\\epsilon}": "έ", + "\\acute{\\eta}": "ή", + "\\acute{\\iota}": "ί", + "\\acute{\\ddot{\\upsilon}}": "ΰ", + "\\alpha": "α", + "\\beta": "β", + "\\gamma": "γ", + "\\delta": "δ", + "\\zeta": "ζ", + "\\eta": "η", + "\\texttheta": "θ", + "\\theta": "θ", + "\\iota": "ι", + "\\kappa": "κ", + "\\lambda": "λ", + "\\nu": "ν", + "\\xi": "ξ", + "\\pi": "π", + "\\rho": "ρ", + "\\varsigma": "ς", + "\\sigma": "σ", + "\\tau": "τ", + "\\upsilon": "υ", + "\\varphi": "φ", + "\\chi": "χ", + "\\psi": "ψ", + "\\omega": "ω", + "\\ddot{\\iota}": "ϊ", + "\\ddot{\\upsilon}": "ϋ", + "\\acute{\\upsilon}": "ύ", + "\\acute{\\omega}": "ώ", + "\\Pisymbol{ppi022}{87}": "ϐ", + "\\varbeta": "ϐ", + "\\textvartheta": "ϑ", + "\\vartheta": "ϑ", + "\\phi": "ϕ", + "\\varpi": "ϖ", + "\\Qoppa": "Ϙ", + "\\qoppa": "ϙ", + "\\Stigma": "Ϛ", + "\\stigma": "ϛ", + "\\Digamma": "Ϝ", + "\\digamma": "ϝ", + "\\Koppa": "Ϟ", + "\\koppa": "ϟ", + "\\Sampi": "Ϡ", + "\\sampi": "ϡ", + "\\varkappa": "ϰ", + "\\varrho": "ϱ", + "\\textTheta": "ϴ", + "\\upvarTheta": "ϴ", + "\\epsilon": "ϵ", + "\\backepsilon": "϶", + "\\cyrchar\\CYRYO": "Ё", + "\\cyrchar\\CYRDJE": "Ђ", + "\\cyrchar{\\'\\CYRG}": "Ѓ", + "\\cyrchar\\CYRIE": "Є", + "\\cyrchar\\CYRDZE": "Ѕ", + "\\cyrchar\\CYRII": "І", + "\\cyrchar\\CYRYI": "Ї", + "\\cyrchar\\CYRJE": "Ј", + "\\cyrchar\\CYRLJE": "Љ", + "\\cyrchar\\CYRNJE": "Њ", + "\\cyrchar\\CYRTSHE": "Ћ", + "\\cyrchar{\\'\\CYRK}": "Ќ", + "\\cyrchar\\CYRUSHRT": "Ў", + "\\cyrchar\\CYRDZHE": "Џ", + "\\cyrchar\\CYRA": "А", + "\\cyrchar\\CYRB": "Б", + "\\cyrchar\\CYRV": "В", + "\\cyrchar\\CYRG": "Г", + "\\cyrchar\\CYRD": "Д", + "\\cyrchar\\CYRE": "Е", + "\\cyrchar\\CYRZH": "Ж", + "\\cyrchar\\CYRZ": "З", + "\\cyrchar\\CYRI": "И", + "\\cyrchar\\CYRISHRT": "Й", + "\\cyrchar\\CYRK": "К", + "\\cyrchar\\CYRL": "Л", + "\\cyrchar\\CYRM": "М", + "\\cyrchar\\CYRN": "Н", + "\\cyrchar\\CYRO": "О", + "\\cyrchar\\CYRP": "П", + "\\cyrchar\\CYRR": "Р", + "\\cyrchar\\CYRS": "С", + "\\cyrchar\\CYRT": "Т", + "\\cyrchar\\CYRU": "У", + "\\cyrchar\\CYRF": "Ф", + "\\cyrchar\\CYRH": "Х", + "\\cyrchar\\CYRC": "Ц", + "\\cyrchar\\CYRCH": "Ч", + "\\cyrchar\\CYRSH": "Ш", + "\\cyrchar\\CYRSHCH": "Щ", + "\\cyrchar\\CYRHRDSN": "Ъ", + "\\bud": "Ъ", + "\\cdprime": "Ъ", + "\\cyrchar\\CYRERY": "Ы", + "\\cyrchar\\CYRSFTSN": "Ь", + "\\cprime": "Ь", + "\\cyrchar\\CYREREV": "Э", + "\\cyrchar\\CYRYU": "Ю", + "\\cyrchar\\CYRYA": "Я", + "\\cyrchar\\cyra": "а", + "\\cyrchar\\cyrb": "б", + "\\cyrchar\\cyrv": "в", + "\\cyrchar\\cyrg": "г", + "\\cyrchar\\cyrd": "д", + "\\cyrchar\\cyre": "е", + "\\cyrchar\\cyrzh": "ж", + "\\cyrchar\\cyrz": "з", + "\\cyrchar\\cyri": "и", + "\\cyrchar\\cyrishrt": "й", + "\\cyrchar\\cyrk": "к", + "\\cyrchar\\cyrl": "л", + "\\cyrchar\\cyrm": "м", + "\\cyrchar\\cyrn": "н", + "\\cyrchar\\cyro": "о", + "\\cyrchar\\cyrp": "п", + "\\cyrchar\\cyrr": "р", + "\\cyrchar\\cyrs": "с", + "\\cyrchar\\cyrt": "т", + "\\cyrchar\\cyru": "у", + "\\cyrchar\\cyrf": "ф", + "\\cyrchar\\cyrh": "х", + "\\cyrchar\\cyrc": "ц", + "\\cyrchar\\cyrch": "ч", + "\\cyrchar\\cyrsh": "ш", + "\\cyrchar\\cyrshch": "щ", + "\\cyrchar\\cyrhrdsn": "ъ", + "\\cyrchar\\cyrery": "ы", + "\\cyrchar\\cyrsftsn": "ь", + "\\cyrchar\\cyrerev": "э", + "\\cyrchar\\cyryu": "ю", + "\\cyrchar\\cyrya": "я", + "\\cyrchar\\cyryo": "ё", + "\\cyrchar\\cyrdje": "ђ", + "\\cyrchar{\\'\\cyrg}": "ѓ", + "\\cyrchar\\cyrie": "є", + "\\cyrchar\\cyrdze": "ѕ", + "\\cyrchar\\cyrii": "і", + "\\cyrchar\\cyryi": "ї", + "\\cyrchar\\cyrje": "ј", + "\\cyrchar\\cyrlje": "љ", + "\\cyrchar\\cyrnje": "њ", + "\\cyrchar\\cyrtshe": "ћ", + "\\cyrchar{\\'\\cyrk}": "ќ", + "\\cyrchar\\cyrushrt": "ў", + "\\cyrchar\\cyrdzhe": "џ", + "\\cyrchar\\CYROMEGA": "Ѡ", + "\\cyrchar\\cyromega": "ѡ", + "\\cyrchar\\CYRYAT": "Ѣ", + "\\cyrchar\\CYRIOTE": "Ѥ", + "\\cyrchar\\cyriote": "ѥ", + "\\cyrchar\\CYRLYUS": "Ѧ", + "\\cyrchar\\cyrlyus": "ѧ", + "\\cyrchar\\CYRIOTLYUS": "Ѩ", + "\\cyrchar\\cyriotlyus": "ѩ", + "\\cyrchar\\CYRBYUS": "Ѫ", + "\\cyrchar\\CYRIOTBYUS": "Ѭ", + "\\cyrchar\\cyriotbyus": "ѭ", + "\\cyrchar\\CYRKSI": "Ѯ", + "\\cyrchar\\cyrksi": "ѯ", + "\\cyrchar\\CYRPSI": "Ѱ", + "\\cyrchar\\cyrpsi": "ѱ", + "\\cyrchar\\CYRFITA": "Ѳ", + "\\cyrchar\\CYRIZH": "Ѵ", + "\\cyrchar\\CYRUK": "Ѹ", + "\\cyrchar\\cyruk": "ѹ", + "\\cyrchar\\CYROMEGARND": "Ѻ", + "\\cyrchar\\cyromegarnd": "ѻ", + "\\cyrchar\\CYROMEGATITLO": "Ѽ", + "\\cyrchar\\cyromegatitlo": "ѽ", + "\\cyrchar\\CYROT": "Ѿ", + "\\cyrchar\\cyrot": "ѿ", + "\\cyrchar\\CYRKOPPA": "Ҁ", + "\\cyrchar\\cyrkoppa": "ҁ", + "\\cyrchar\\cyrthousands": "҂", + "\\cyrchar\\cyrhundredthousands": "҈", + "\\cyrchar\\cyrmillions": "҉", + "\\cyrchar\\CYRSEMISFTSN": "Ҍ", + "\\cyrchar\\cyrsemisftsn": "ҍ", + "\\cyrchar\\CYRRTICK": "Ҏ", + "\\cyrchar\\cyrrtick": "ҏ", + "\\cyrchar\\CYRGUP": "Ґ", + "\\cyrchar\\cyrgup": "ґ", + "\\cyrchar\\CYRGHCRS": "Ғ", + "\\cyrchar\\cyrghcrs": "ғ", + "\\cyrchar\\CYRGHK": "Ҕ", + "\\cyrchar\\cyrghk": "ҕ", + "\\cyrchar\\CYRZHDSC": "Җ", + "\\cyrchar\\cyrzhdsc": "җ", + "\\cyrchar\\CYRZDSC": "Ҙ", + "\\cyrchar\\cyrzdsc": "ҙ", + "\\cyrchar\\CYRKDSC": "Қ", + "\\cyrchar\\cyrkdsc": "қ", + "\\cyrchar\\CYRKVCRS": "Ҝ", + "\\cyrchar\\cyrkvcrs": "ҝ", + "\\cyrchar\\CYRKHCRS": "Ҟ", + "\\cyrchar\\cyrkhcrs": "ҟ", + "\\cyrchar\\CYRKBEAK": "Ҡ", + "\\cyrchar\\cyrkbeak": "ҡ", + "\\cyrchar\\CYRNDSC": "Ң", + "\\cyrchar\\cyrndsc": "ң", + "\\cyrchar\\CYRNG": "Ҥ", + "\\cyrchar\\cyrng": "ҥ", + "\\cyrchar\\CYRPHK": "Ҧ", + "\\cyrchar\\cyrphk": "ҧ", + "\\cyrchar\\CYRABHHA": "Ҩ", + "\\cyrchar\\cyrabhha": "ҩ", + "\\cyrchar\\CYRSDSC": "Ҫ", + "\\cyrchar\\cyrsdsc": "ҫ", + "\\cyrchar\\CYRTDSC": "Ҭ", + "\\cyrchar\\cyrtdsc": "ҭ", + "\\cyrchar\\CYRY": "Ү", + "\\cyrchar\\cyry": "ү", + "\\cyrchar\\CYRYHCRS": "Ұ", + "\\cyrchar\\cyryhcrs": "ұ", + "\\cyrchar\\CYRHDSC": "Ҳ", + "\\cyrchar\\cyrhdsc": "ҳ", + "\\cyrchar\\CYRTETSE": "Ҵ", + "\\cyrchar\\cyrtetse": "ҵ", + "\\cyrchar\\CYRCHRDSC": "Ҷ", + "\\cyrchar\\cyrchrdsc": "ҷ", + "\\cyrchar\\CYRCHVCRS": "Ҹ", + "\\cyrchar\\cyrchvcrs": "ҹ", + "\\cyrchar\\CYRSHHA": "Һ", + "\\cyrchar\\cyrshha": "һ", + "\\cyrchar\\CYRABHCH": "Ҽ", + "\\cyrchar\\cyrabhch": "ҽ", + "\\cyrchar\\CYRABHCHDSC": "Ҿ", + "\\cyrchar\\cyrabhchdsc": "ҿ", + "\\cyrchar\\CYRpalochka": "Ӏ", + "\\cyrchar\\CYRKHK": "Ӄ", + "\\cyrchar\\cyrkhk": "ӄ", + "\\cyrchar\\CYRNHK": "Ӈ", + "\\cyrchar\\cyrnhk": "ӈ", + "\\cyrchar\\CYRCHLDSC": "Ӌ", + "\\cyrchar\\cyrchldsc": "ӌ", + "\\cyrchar\\CYRAE": "Ӕ", + "\\cyrchar\\cyrae": "ӕ", + "\\cyrchar\\CYRSCHWA": "Ә", + "\\cyrchar\\cyrschwa": "ә", + "\\cyrchar\\CYRABHDZE": "Ӡ", + "\\cyrchar\\cyrabhdze": "ӡ", + "\\cyrchar\\CYROTLD": "Ө", + "\\cyrchar\\cyrotld": "ө", + "\\\\backslash": "ࡱ", + "\\textsuperscript{a}": "ᵃ", + "^{a}": "ᵃ", + "\\textsuperscript{b}": "ᵇ", + "^{b}": "ᵇ", + "\\textsuperscript{d}": "ᵈ", + "^{d}": "ᵈ", + "\\textsuperscript{e}": "ᵉ", + "^{e}": "ᵉ", + "\\textsuperscript{g}": "ᵍ", + "^{g}": "ᵍ", + "\\textsuperscript{k}": "ᵏ", + "^{k}": "ᵏ", + "\\textsuperscript{m}": "ᵐ", + "^{m}": "ᵐ", + "\\textsuperscript{o}": "ᵒ", + "^{o}": "ᵒ", + "\\textsuperscript{p}": "ᵖ", + "^{p}": "ᵖ", + "\\textsuperscript{t}": "ᵗ", + "^{t}": "ᵗ", + "\\textsuperscript{u}": "ᵘ", + "^{u}": "ᵘ", + "\\textsuperscript{v}": "ᵛ", + "^{v}": "ᵛ", + "\\textsuperscript{c}": "ᶜ", + "^{c}": "ᶜ", + "\\textsuperscript{f}": "ᶠ", + "^{f}": "ᶠ", + "\\textsuperscript{z}": "ᶻ", + "^{z}": "ᶻ", + "\\.B": "Ḃ", + "\\.b": "ḃ", + "\\d{B}": "Ḅ", + "\\d{b}": "ḅ", + "\\b{B}": "Ḇ", + "\\b{b}": "ḇ", + "\\.D": "Ḋ", + "\\.d": "ḋ", + "\\d{D}": "Ḍ", + "\\d{d}": "ḍ", + "\\b{D}": "Ḏ", + "\\b{d}": "ḏ", + "\\c{D}": "Ḑ", + "\\c{d}": "ḑ", + "\\c{\\u{E}}": "Ḝ", + "\\c{\\u{e}}": "ḝ", + "\\.F": "Ḟ", + "\\.f": "ḟ", + "\\=G": "Ḡ", + "\\=g": "ḡ", + "\\.H": "Ḣ", + "\\.h": "ḣ", + "\\d{H}": "Ḥ", + "\\d{h}": "ḥ", + "\\\"H": "Ḧ", + "\\\"h": "ḧ", + "\\c{H}": "Ḩ", + "\\c{h}": "ḩ", + "\\'K": "Ḱ", + "\\'k": "ḱ", + "\\d{K}": "Ḳ", + "\\d{k}": "ḳ", + "\\b{K}": "Ḵ", + "\\b{k}": "ḵ", + "\\d{L}": "Ḷ", + "\\d{l}": "ḷ", + "\\b{L}": "Ḻ", + "\\b{l}": "ḻ", + "\\'M": "Ḿ", + "\\'m": "ḿ", + "\\.M": "Ṁ", + "\\.m": "ṁ", + "\\d{M}": "Ṃ", + "\\d{m}": "ṃ", + "\\.N": "Ṅ", + "\\.n": "ṅ", + "\\d{N}": "Ṇ", + "\\d{n}": "ṇ", + "\\b{N}": "Ṉ", + "\\b{n}": "ṉ", + "\\'P": "Ṕ", + "\\'p": "ṕ", + "\\.P": "Ṗ", + "\\.p": "ṗ", + "\\.R": "Ṙ", + "\\.r": "ṙ", + "\\d{R}": "Ṛ", + "\\d{r}": "ṛ", + "\\b{R}": "Ṟ", + "\\b{r}": "ṟ", + "\\.S": "Ṡ", + "\\.s": "ṡ", + "\\d{S}": "Ṣ", + "\\d{s}": "ṣ", + "\\.T": "Ṫ", + "\\.t": "ṫ", + "\\d{T}": "Ṭ", + "\\d{t}": "ṭ", + "\\b{T}": "Ṯ", + "\\b{t}": "ṯ", + "\\~V": "Ṽ", + "\\~v": "ṽ", + "\\d{V}": "Ṿ", + "\\d{v}": "ṿ", + "\\`W": "Ẁ", + "\\`w": "ẁ", + "\\'W": "Ẃ", + "\\'w": "ẃ", + "\\\"W": "Ẅ", + "\\\"w": "ẅ", + "\\.W": "Ẇ", + "\\.w": "ẇ", + "\\d{W}": "Ẉ", + "\\d{w}": "ẉ", + "\\.X": "Ẋ", + "\\.x": "ẋ", + "\\\"X": "Ẍ", + "\\\"x": "ẍ", + "\\.Y": "Ẏ", + "\\.y": "ẏ", + "\\^Z": "Ẑ", + "\\^z": "ẑ", + "\\d{Z}": "Ẓ", + "\\d{z}": "ẓ", + "\\b{Z}": "Ẕ", + "\\b{z}": "ẕ", + "\\b{h}": "ẖ", + "\\\"t": "ẗ", + "\\r{w}": "ẘ", + "\\r{y}": "ẙ", + "\\d{A}": "Ạ", + "\\d{a}": "ạ", + "\\d{E}": "Ẹ", + "\\d{e}": "ẹ", + "\\~E": "Ẽ", + "\\~e": "ẽ", + "\\d{I}": "Ị", + "\\d{i}": "ị", + "\\d{O}": "Ọ", + "\\d{o}": "ọ", + "\\d{U}": "Ụ", + "\\d{u}": "ụ", + "\\`Y": "Ỳ", + "\\`y": "ỳ", + "\\d{Y}": "Ỵ", + "\\d{y}": "ỵ", + "\\~Y": "Ỹ", + "\\~y": "ỹ", + "\\hspace{0.6em}": " ", + "\\hspace{1em}": " ", + "\\quad": " ", + "\\;": " ", + "\\hspace{0.25em}": " ", + "\\hspace{0.166em}": " ", + "\\hphantom{0}": " ", + "\\hphantom{,}": " ", + "\\,": " ", + "\\mkern1mu": " ", + "\\mbox": "​", + "{\\aftergroup\\ignorespaces}": "‌", + "\\textendash": "–", + "\\textemdash": "—", + "\\rule{1em}{1pt}": "―", + "\\horizbar": "―", + "\\Vert": "‖", + "\\twolowline": "‗", + "\\textquoteleft": "‘", + "\\textquoteright": "’", + "\\Elzreapos": "‛", + "\\textquotedblleft": "“", + "\\textquotedblright": "”", + "\\quotedblbase": "‟", + "\\textdagger": "†", + "\\dagger": "†", + "\\textdaggerdbl": "‡", + "\\ddagger": "‡", + "\\textbullet": "•", + "\\enleadertwodots": "‥", + "\\ldots": "…", + "\\textperthousand": "‰", + "\\textpertenthousand": "‱", + "{'}": "′", + "{''}": "″", + "{'''}": "‴", + "\\backprime": "‵", + "\\backdprime": "‶", + "\\backtrprime": "‷", + "\\caretinsert": "‸", + "\\guilsinglleft": "‹", + "\\guilsinglright": "›", + "\\Exclam": "‼", + "\\hyphenbullet": "⁃", + "\\fracslash": "⁄", + "\\Question": "⁇", + "\\closure": "⁐", + "\\:": " ", + "\\nolinebreak": "⁠", + "^{0}": "⁰", + "\\textsuperscript{i}": "ⁱ", + "^{i}": "ⁱ", + "^{4}": "⁴", + "^{5}": "⁵", + "^{6}": "⁶", + "^{7}": "⁷", + "^{8}": "⁸", + "^{9}": "⁹", + "^{+}": "⁺", + "^{-}": "⁻", + "^{=}": "⁼", + "^{(}": "⁽", + "^{)}": "⁾", + "\\textsuperscript{n}": "ⁿ", + "^{n}": "ⁿ", + "_{0}": "₀", + "_{1}": "₁", + "_{2}": "₂", + "_{3}": "₃", + "_{4}": "₄", + "_{5}": "₅", + "_{6}": "₆", + "_{7}": "₇", + "_{8}": "₈", + "_{9}": "₉", + "_{+}": "₊", + "_{-}": "₋", + "_{=}": "₌", + "_{(}": "₍", + "_{)}": "₎", + "\\textsubscript{a}": "ₐ", + "_{a}": "ₐ", + "\\textsubscript{e}": "ₑ", + "_{e}": "ₑ", + "\\textsubscript{o}": "ₒ", + "_{o}": "ₒ", + "\\textsubscript{x}": "ₓ", + "_{x}": "ₓ", + "\\textsubscript{\\textschwa}": "ₔ", + "\\textsubscript{h}": "ₕ", + "_{h}": "ₕ", + "\\textsubscript{k}": "ₖ", + "_{k}": "ₖ", + "\\textsubscript{l}": "ₗ", + "_{l}": "ₗ", + "\\textsubscript{m}": "ₘ", + "_{m}": "ₘ", + "\\textsubscript{n}": "ₙ", + "_{n}": "ₙ", + "\\textsubscript{p}": "ₚ", + "_{p}": "ₚ", + "\\textsubscript{s}": "ₛ", + "_{s}": "ₛ", + "\\textsubscript{t}": "ₜ", + "_{t}": "ₜ", + "\\ensuremath{\\Elzpes}": "₧", + "\\texteuro": "€", + "\\euro": "€", + "\\lvec": "⃐", + "\\vertoverlay": "⃒", + "\\LVec": "⃖", + "\\vec": "⃗", + "\\dddot": "⃛", + "\\ddddot": "⃜", + "\\enclosecircle": "⃝", + "\\enclosesquare": "⃞", + "\\enclosediamond": "⃟", + "\\overleftrightarrow": "⃡", + "\\enclosetriangle": "⃤", + "\\annuity": "⃧", + "\\threeunderdot": "⃨", + "\\widebridgeabove": "⃩", + "\\underrightharpoondown": "⃬", + "\\underleftharpoondown": "⃭", + "\\underleftarrow": "⃮", + "\\underrightarrow": "⃯", + "\\asteraccent": "⃰", + "\\mathbb{C}": "ℂ", + "\\textcelsius": "℃", + "\\Euler": "ℇ", + "\\mathscr{g}": "ℊ", + "\\mathscr{H}": "ℋ", + "\\mathfrak{H}": "ℌ", + "\\mathbb{H}": "ℍ", + "\\Planckconst": "ℎ", + "\\hslash": "ℏ", + "\\mathscr{I}": "ℐ", + "\\mathfrak{I}": "ℑ", + "\\mathscr{L}": "ℒ", + "\\mathscr{l}": "ℓ", + "\\mathbb{N}": "ℕ", + "\\cyrchar\\textnumero": "№", + "\\textcircledP": "℗", + "\\wp": "℘", + "\\mathbb{P}": "ℙ", + "\\mathbb{Q}": "ℚ", + "\\mathscr{R}": "ℛ", + "\\mathfrak{R}": "ℜ", + "\\mathbb{R}": "ℝ", + "\\Elzxrat": "℞", + "\\textservicemark": "℠", + "\\texttrademark": "™", + "\\mathbb{Z}": "ℤ", + "\\mho": "℧", + "\\mathfrak{Z}": "ℨ", + "\\textriota": "℩", + "\\Angstroem": "Å", + "\\mathscr{B}": "ℬ", + "\\mathfrak{C}": "ℭ", + "\\textestimated": "℮", + "\\mathscr{e}": "ℯ", + "\\mathscr{E}": "ℰ", + "\\mathscr{F}": "ℱ", + "\\Finv": "Ⅎ", + "\\mathscr{M}": "ℳ", + "\\mathscr{o}": "ℴ", + "\\aleph": "ℵ", + "\\beth": "ℶ", + "\\gimel": "ℷ", + "\\daleth": "ℸ", + "\\mathbb{\\pi}": "ℼ", + "\\mathbb{\\gamma}": "ℽ", + "\\mathbb{\\Gamma}": "ℾ", + "\\mathbb{\\Pi}": "ℿ", + "\\mathbb{\\Sigma}": "⅀", + "\\Game": "⅁", + "\\sansLturned": "⅂", + "\\sansLmirrored": "⅃", + "\\Yup": "⅄", + "\\CapitalDifferentialD": "ⅅ", + "\\DifferentialD": "ⅆ", + "\\ExponetialE": "ⅇ", + "\\ComplexI": "ⅈ", + "\\ComplexJ": "ⅉ", + "\\PropertyLine": "⅊", + "\\invamp": "⅋", + "\\frac{1}{7}": "⅐", + "\\textfrac{1}{7}": "⅐", + "\\frac{1}{9}": "⅑", + "\\textfrac{1}{9}": "⅑", + "\\frac{1}{10}": "⅒", + "\\textfrac{1}{10}": "⅒", + "\\frac{1}{3}": "⅓", + "\\textfrac{1}{3}": "⅓", + "\\frac{2}{3}": "⅔", + "\\textfrac{2}{3}": "⅔", + "\\frac{1}{5}": "⅕", + "\\textfrac{1}{5}": "⅕", + "\\frac{2}{5}": "⅖", + "\\textfrac{2}{5}": "⅖", + "\\frac{3}{5}": "⅗", + "\\textfrac{3}{5}": "⅗", + "\\frac{4}{5}": "⅘", + "\\textfrac{4}{5}": "⅘", + "\\frac{1}{6}": "⅙", + "\\textfrac{1}{6}": "⅙", + "\\frac{5}{6}": "⅚", + "\\textfrac{5}{6}": "⅚", + "\\frac{1}{8}": "⅛", + "\\textfrac{1}{8}": "⅛", + "\\frac{3}{8}": "⅜", + "\\textfrac{3}{8}": "⅜", + "\\frac{5}{8}": "⅝", + "\\textfrac{5}{8}": "⅝", + "\\frac{7}{8}": "⅞", + "\\textfrac{7}{8}": "⅞", + "\\frac{1}": "⅟", + "\\textfrac{1}": "⅟", + "\\frac{0}{3}": "↉", + "\\textfrac{0}{3}": "↉", + "\\leftarrow": "←", + "\\uparrow": "↑", + "\\textrightarrow": "→", + "\\rightarrow": "→", + "\\to": "→", + "\\downarrow": "↓", + "\\leftrightarrow": "↔", + "\\updownarrow": "↕", + "\\nwarrow": "↖", + "\\nearrow": "↗", + "\\searrow": "↘", + "\\swarrow": "↙", + "\\nleftarrow": "↚", + "\\nrightarrow": "↛", + "\\arrowwaveleft": "↜", + "\\arrowwaveright": "↝", + "\\twoheadleftarrow": "↞", + "\\twoheaduparrow": "↟", + "\\twoheadrightarrow": "↠", + "\\twoheaddownarrow": "↡", + "\\leftarrowtail": "↢", + "\\rightarrowtail": "↣", + "\\mapsfrom": "↤", + "\\MapsUp": "↥", + "\\mapsto": "↦", + "\\MapsDown": "↧", + "\\updownarrowbar": "↨", + "\\hookleftarrow": "↩", + "\\hookrightarrow": "↪", + "\\looparrowleft": "↫", + "\\looparrowright": "↬", + "\\leftrightsquigarrow": "↭", + "\\nleftrightarrow": "↮", + "\\lightning": "↯", + "\\Lsh": "↰", + "\\Rsh": "↱", + "\\dlsh": "↲", + "\\reflectbox{\\carriagereturn}": "↳", + "\\linefeed": "↴", + "\\carriagereturn": "↵", + "\\curvearrowleft": "↶", + "\\curvearrowright": "↷", + "\\barovernorthwestarrow": "↸", + "\\barleftarrowrightarrowba": "↹", + "\\circlearrowleft": "↺", + "\\circlearrowright": "↻", + "\\leftharpoonup": "↼", + "\\leftharpoondown": "↽", + "\\upharpoonright": "↾", + "\\upharpoonleft": "↿", + "\\rightharpoonup": "⇀", + "\\rightharpoondown": "⇁", + "\\downharpoonright": "⇂", + "\\downharpoonleft": "⇃", + "\\rightleftarrows": "⇄", + "\\dblarrowupdown": "⇅", + "\\leftrightarrows": "⇆", + "\\leftleftarrows": "⇇", + "\\upuparrows": "⇈", + "\\rightrightarrows": "⇉", + "\\downdownarrows": "⇊", + "\\leftrightharpoons": "⇋", + "\\rightleftharpoons": "⇌", + "\\nLeftarrow": "⇍", + "\\nLeftrightarrow": "⇎", + "\\nRightarrow": "⇏", + "\\Leftarrow": "⇐", + "\\Uparrow": "⇑", + "\\Rightarrow": "⇒", + "\\Downarrow": "⇓", + "\\Leftrightarrow": "⇔", + "\\Updownarrow": "⇕", + "\\Nwarrow": "⇖", + "\\Nearrow": "⇗", + "\\Searrow": "⇘", + "\\Swarrow": "⇙", + "\\Lleftarrow": "⇚", + "\\Rrightarrow": "⇛", + "\\leftsquigarrow": "⇜", + "\\rightsquigarrow": "⇝", + "\\nHuparrow": "⇞", + "\\nHdownarrow": "⇟", + "\\dashleftarrow": "⇠", + "\\updasharrow": "⇡", + "\\dashrightarrow": "⇢", + "\\downdasharrow": "⇣", + "\\LeftArrowBar": "⇤", + "\\RightArrowBar": "⇥", + "\\leftwhitearrow": "⇦", + "\\upwhitearrow": "⇧", + "\\rightwhitearrow": "⇨", + "\\downwhitearrow": "⇩", + "\\whitearrowupfrombar": "⇪", + "\\circleonrightarrow": "⇴", + "\\DownArrowUpArrow": "⇵", + "\\rightthreearrows": "⇶", + "\\nvleftarrow": "⇷", + "\\pfun": "⇸", + "\\nvleftrightarrow": "⇹", + "\\nVleftarrow": "⇺", + "\\ffun": "⇻", + "\\nVleftrightarrow": "⇼", + "\\leftarrowtriangle": "⇽", + "\\rightarrowtriangle": "⇾", + "\\leftrightarrowtriangle": "⇿", + "\\forall": "∀", + "\\complement": "∁", + "\\partial": "∂", + "\\exists": "∃", + "\\nexists": "∄", + "\\varnothing": "∅", + "\\increment": "∆", + "\\nabla": "∇", + "\\in": "∈", + "\\not\\in": "∉", + "\\smallin": "∊", + "\\ni": "∋", + "\\not\\ni": "∌", + "\\smallni": "∍", + "\\QED": "∎", + "\\prod": "∏", + "\\coprod": "∐", + "\\sum": "∑", + "\\mp": "∓", + "\\dotplus": "∔", + "\\setminus": "∖", + "{_\\ast}": "∗", + "\\circ": "∘", + "\\bullet": "∙", + "\\surd": "√", + "\\sqrt[3]": "∛", + "\\sqrt[4]": "∜", + "\\propto": "∝", + "\\infty": "∞", + "\\rightangle": "∟", + "\\angle": "∠", + "\\measuredangle": "∡", + "\\sphericalangle": "∢", + "\\mid": "∣", + "\\nmid": "∤", + "\\parallel": "∥", + "\\nparallel": "∦", + "\\wedge": "∧", + "\\vee": "∨", + "\\cap": "∩", + "\\cup": "∪", + "\\int": "∫", + "{\\int\\!\\int}": "∬", + "{\\int\\!\\int\\!\\int}": "∭", + "\\oint": "∮", + "\\surfintegral": "∯", + "\\volintegral": "∰", + "\\clwintegral": "∱", + "\\lcirclerightint": "∲", + "\\rcirclerightint": "∳", + "\\therefore": "∴", + "\\because": "∵", + "\\Colon": "∷", + "\\dotdiv": "∸", + "\\eqcolon": "∹", + "\\mathbin{{:}\\!\\!{-}\\!\\!{:}}": "∺", + "\\homothetic": "∻", + "\\sim": "∼", + "\\backsim": "∽", + "\\lazysinv": "∾", + "\\AC": "∿", + "\\wr": "≀", + "\\not\\sim": "≁", + "\\texteqsim": "≂", + "\\NotEqualTilde": "≂̸", + "\\simeq": "≃", + "\\not\\simeq": "≄", + "\\cong": "≅", + "\\approxnotequal": "≆", + "\\not\\cong": "≇", + "\\approx": "≈", + "\\not\\approx": "≉", + "\\approxeq": "≊", + "\\tildetrpl": "≋", + "\\not\\apid": "≋̸", + "\\allequal": "≌", + "\\asymp": "≍", + "\\Bumpeq": "≎", + "\\NotHumpDownHump": "≎̸", + "\\bumpeq": "≏", + "\\NotHumpEqual": "≏̸", + "\\doteq": "≐", + "\\not\\doteq": "≐̸", + "\\doteqdot": "≑", + "\\fallingdotseq": "≒", + "\\risingdotseq": "≓", + "\\coloneq": "≔", + "\\eqcirc": "≖", + "\\circeq": "≗", + "\\arceq": "≘", + "\\estimates": "≙", + "\\starequal": "≛", + "\\triangleq": "≜", + "\\eqdef": "≝", + "\\measeq": "≞", + "\\neq": "≠", + "\\equiv": "≡", + "\\not\\equiv": "≢", + "\\Equiv": "≣", + "\\leq": "≤", + "\\le": "≤", + "\\geq": "≥", + "\\leqq": "≦", + "\\geqq": "≧", + "\\lneqq": "≨", + "\\lvertneqq": "≨︀", + "\\gneqq": "≩", + "\\gvertneqq": "≩︀", + "\\ll": "≪", + "\\NotLessLess": "≪̸", + "\\gg": "≫", + "\\NotGreaterGreater": "≫̸", + "\\between": "≬", + "{\\not\\kern-0.3em\\times}": "≭", + "\\not<": "≮", + "\\not>": "≯", + "\\not\\leq": "≰", + "\\not\\geq": "≱", + "\\lessequivlnt": "≲", + "\\greaterequivlnt": "≳", + "\\lessgtr": "≶", + "\\gtrless": "≷", + "\\notlessgreater": "≸", + "\\notgreaterless": "≹", + "\\prec": "≺", + "\\succ": "≻", + "\\preccurlyeq": "≼", + "\\succcurlyeq": "≽", + "\\NotPrecedesTilde": "≾̸", + "\\NotSucceedsTilde": "≿̸", + "\\not\\prec": "⊀", + "\\not\\succ": "⊁", + "\\subset": "⊂", + "\\supset": "⊃", + "\\not\\subset": "⊄", + "\\not\\supset": "⊅", + "\\subseteq": "⊆", + "\\supseteq": "⊇", + "\\not\\subseteq": "⊈", + "\\not\\supseteq": "⊉", + "\\subsetneq": "⊊", + "\\varsubsetneqq": "⊊︀", + "\\supsetneq": "⊋", + "\\varsupsetneq": "⊋︀", + "\\cupleftarrow": "⊌", + "\\cupdot": "⊍", + "\\uplus": "⊎", + "\\sqsubset": "⊏", + "\\NotSquareSubset": "⊏̸", + "\\sqsupset": "⊐", + "\\NotSquareSuperset": "⊐̸", + "\\sqsubseteq": "⊑", + "\\sqsupseteq": "⊒", + "\\sqcap": "⊓", + "\\sqcup": "⊔", + "\\oplus": "⊕", + "\\ominus": "⊖", + "\\otimes": "⊗", + "\\oslash": "⊘", + "\\odot": "⊙", + "\\circledcirc": "⊚", + "\\circledast": "⊛", + "\\circledequal": "⊜", + "\\circleddash": "⊝", + "\\boxplus": "⊞", + "\\boxminus": "⊟", + "\\boxtimes": "⊠", + "\\boxdot": "⊡", + "\\vdash": "⊢", + "\\dashv": "⊣", + "\\top": "⊤", + "\\assert": "⊦", + "\\truestate": "⊧", + "\\forcesextra": "⊨", + "\\Vdash": "⊩", + "\\Vvdash": "⊪", + "\\VDash": "⊫", + "\\nvdash": "⊬", + "\\nvDash": "⊭", + "\\nVdash": "⊮", + "\\nVDash": "⊯", + "\\prurel": "⊰", + "\\scurel": "⊱", + "\\vartriangleleft": "⊲", + "\\vartriangleright": "⊳", + "\\trianglelefteq": "⊴", + "\\trianglerighteq": "⊵", + "\\original": "⊶", + "\\image": "⊷", + "\\multimap": "⊸", + "\\hermitconjmatrix": "⊹", + "\\intercal": "⊺", + "\\veebar": "⊻", + "\\barvee": "⊽", + "\\rightanglearc": "⊾", + "\\varlrtriangle": "⊿", + "\\bigcap": "⋂", + "\\bigcup": "⋃", + "\\diamond": "⋄", + "\\cdot": "⋅", + "\\star": "⋆", + "\\divideontimes": "⋇", + "\\bowtie": "⋈", + "\\ltimes": "⋉", + "\\rtimes": "⋊", + "\\leftthreetimes": "⋋", + "\\rightthreetimes": "⋌", + "\\backsimeq": "⋍", + "\\curlyvee": "⋎", + "\\curlywedge": "⋏", + "\\Subset": "⋐", + "\\Supset": "⋑", + "\\Cap": "⋒", + "\\Cup": "⋓", + "\\pitchfork": "⋔", + "\\hash": "⋕", + "\\lessdot": "⋖", + "\\gtrdot": "⋗", + "\\verymuchless": "⋘", + "\\verymuchgreater": "⋙", + "\\lesseqgtr": "⋚", + "\\gtreqless": "⋛", + "\\eqless": "⋜", + "\\eqgtr": "⋝", + "\\curlyeqprec": "⋞", + "\\curlyeqsucc": "⋟", + "\\npreceq": "⋠", + "\\nsucceq": "⋡", + "\\not\\sqsubseteq": "⋢", + "\\not\\sqsupseteq": "⋣", + "\\sqsubsetneq": "⋤", + "\\Elzsqspne": "⋥", + "\\lnsim": "⋦", + "\\gnsim": "⋧", + "\\precedesnotsimilar": "⋨", + "\\succnsim": "⋩", + "\\ntriangleleft": "⋪", + "\\ntriangleright": "⋫", + "\\ntrianglelefteq": "⋬", + "\\ntrianglerighteq": "⋭", + "\\vdots": "⋮", + "\\cdots": "⋯", + "\\upslopeellipsis": "⋰", + "\\downslopeellipsis": "⋱", + "\\disin": "⋲", + "\\varisins": "⋳", + "\\isins": "⋴", + "\\isindot": "⋵", + "\\barin": "⋶", + "\\isinobar": "⋷", + "\\isinvb": "⋸", + "\\isinE": "⋹", + "\\nisd": "⋺", + "\\varnis": "⋻", + "\\nis": "⋼", + "\\varniobar": "⋽", + "\\niobar": "⋾", + "\\bagmember": "⋿", + "\\diameter": "⌀", + "\\house": "⌂", + "\\barwedge": "⌅", + "\\varbarwedge": "⌅", + "\\perspcorrespond": "⌆", + "\\lceil": "⌈", + "\\rceil": "⌉", + "\\lfloor": "⌊", + "\\rfloor": "⌋", + "\\invneg": "⌐", + "\\wasylozenge": "⌑", + "\\profline": "⌒", + "\\profsurf": "⌓", + "\\recorder": "⌕", + "{\\mathchar\"2208}": "⌖", + "\\viewdata": "⌗", + "\\turnednot": "⌙", + "\\ulcorner": "⌜", + "\\urcorner": "⌝", + "\\llcorner": "⌞", + "\\lrcorner": "⌟", + "\\inttop": "⌠", + "\\intbottom": "⌡", + "\\frown": "⌢", + "\\smile": "⌣", + "\\varhexagonlrbonds": "⌬", + "\\conictaper": "⌲", + "\\topbot": "⌶", + "\\APLinv": "⌹", + "\\notslash": "⌿", + "\\notbackslash": "⍀", + "\\APLleftarrowbox": "⍇", + "\\APLrightarrowbox": "⍈", + "\\invdiameter": "⍉", + "\\APLuparrowbox": "⍐", + "\\APLboxupcaret": "⍓", + "\\APLdownarrowbox": "⍗", + "\\APLcomment": "⍝", + "\\APLinput": "⍞", + "\\APLlog": "⍟", + "\\APLboxquestion": "⍰", + "\\rangledownzigzagarrow": "⍼", + "\\hexagon": "⎔", + "\\lparenuend": "⎛", + "\\lparenextender": "⎜", + "\\lparenlend": "⎝", + "\\rparenuend": "⎞", + "\\rparenextender": "⎟", + "\\rparenlend": "⎠", + "\\lbrackuend": "⎡", + "\\lbrackextender": "⎢", + "\\Elzdlcorn": "⎣", + "\\rbrackuend": "⎤", + "\\rbrackextender": "⎥", + "\\rbracklend": "⎦", + "\\lbraceuend": "⎧", + "\\lbracemid": "⎨", + "\\lbracelend": "⎩", + "\\vbraceextender": "⎪", + "\\rbraceuend": "⎫", + "\\rbracemid": "⎬", + "\\rbracelend": "⎭", + "\\intextender": "⎮", + "\\harrowextender": "⎯", + "\\lmoustache": "⎰", + "\\rmoustache": "⎱", + "\\sumtop": "⎲", + "\\sumbottom": "⎳", + "\\overbracket": "⎴", + "\\underbracket": "⎵", + "\\bbrktbrk": "⎶", + "\\sqrtbottom": "⎷", + "\\lvboxline": "⎸", + "\\rvboxline": "⎹", + "\\varcarriagereturn": "⏎", + "\\overparen": "⏜", + "\\underparen": "⏝", + "\\overbrace": "⏞", + "\\underbrace": "⏟", + "\\obrbrak": "⏠", + "\\ubrbrak": "⏡", + "\\trapezium": "⏢", + "\\benzenr": "⏣", + "\\strns": "⏤", + "\\fltns": "⏥", + "\\accurrent": "⏦", + "\\elinters": "⏧", + "\\textvisiblespace": "␣", + "\\ding{172}": "①", + "\\ding{173}": "②", + "\\ding{174}": "③", + "\\ding{175}": "④", + "\\ding{176}": "⑤", + "\\ding{177}": "⑥", + "\\ding{178}": "⑦", + "\\ding{179}": "⑧", + "\\ding{180}": "⑨", + "\\ding{181}": "⑩", + "\\circledS": "Ⓢ", + "\\Elzdshfnc": "┆", + "\\Elzsqfnw": "┙", + "\\diagup": "╱", + "\\blockuphalf": "▀", + "\\blocklowhalf": "▄", + "\\blockfull": "█", + "\\blocklefthalf": "▌", + "\\blockrighthalf": "▐", + "\\blockqtrshaded": "░", + "\\blockhalfshaded": "▒", + "\\blockthreeqtrshaded": "▓", + "\\ding{110}": "■", + "\\mdlgblksquare": "■", + "\\square": "□", + "\\Box": "□", + "\\squoval": "▢", + "\\blackinwhitesquare": "▣", + "\\squarehfill": "▤", + "\\squarevfill": "▥", + "\\squarehvfill": "▦", + "\\squarenwsefill": "▧", + "\\squareneswfill": "▨", + "\\squarecrossfill": "▩", + "\\smwhtsquare": "▫", + "\\hrectangleblack": "▬", + "\\fbox{~~}": "▭", + "\\vrectangleblack": "▮", + "\\Elzvrecto": "▯", + "\\parallelogramblack": "▰", + "\\ding{115}": "▲", + "\\bigblacktriangleup": "▲", + "\\bigtriangleup": "△", + "\\blacktriangle": "▴", + "\\vartriangle": "▵", + "\\RHD": "▶", + "\\rhd": "▷", + "\\blacktriangleright": "▸", + "\\triangleright": "▹", + "\\blackpointerright": "►", + "\\whitepointerright": "▻", + "\\ding{116}": "▼", + "\\bigblacktriangledown": "▼", + "\\bigtriangledown": "▽", + "\\blacktriangledown": "▾", + "\\triangledown": "▿", + "\\LHD": "◀", + "\\lhd": "◁", + "\\blacktriangleleft": "◂", + "\\triangleleft": "◃", + "\\blackpointerleft": "◄", + "\\whitepointerleft": "◅", + "\\ding{117}": "◆", + "\\Diamondblack": "◆", + "\\Diamond": "◇", + "\\blackinwhitediamond": "◈", + "\\fisheye": "◉", + "\\lozenge": "◊", + "\\dottedcircle": "◌", + "\\circlevertfill": "◍", + "\\bullseye": "◎", + "\\ding{108}": "●", + "\\CIRCLE": "●", + "\\Elzcirfl": "◐", + "\\Elzcirfr": "◑", + "\\Elzcirfb": "◒", + "\\circletophalfblack": "◓", + "\\circleurquadblack": "◔", + "\\blackcircleulquadwhite": "◕", + "\\LEFTCIRCLE": "◖", + "\\ding{119}": "◗", + "\\RIGHTCIRCLE": "◗", + "\\Elzrvbull": "◘", + "\\inversewhitecircle": "◙", + "\\invwhiteupperhalfcircle": "◚", + "\\invwhitelowerhalfcircle": "◛", + "\\ularc": "◜", + "\\urarc": "◝", + "\\lrarc": "◞", + "\\llarc": "◟", + "\\topsemicircle": "◠", + "\\botsemicircle": "◡", + "\\lrblacktriangle": "◢", + "\\llblacktriangle": "◣", + "\\ulblacktriangle": "◤", + "\\urblacktriangle": "◥", + "\\smwhtcircle": "◦", + "\\Elzsqfl": "◧", + "\\Elzsqfr": "◨", + "\\squareulblack": "◩", + "\\Elzsqfse": "◪", + "\\boxbar": "◫", + "\\trianglecdot": "◬", + "\\triangleleftblack": "◭", + "\\trianglerightblack": "◮", + "\\bigcirc": "◯", + "\\squareulquad": "◰", + "\\squarellquad": "◱", + "\\squarelrquad": "◲", + "\\squareurquad": "◳", + "\\circleulquad": "◴", + "\\circlellquad": "◵", + "\\circlelrquad": "◶", + "\\circleurquad": "◷", + "\\ultriangle": "◸", + "\\urtriangle": "◹", + "\\lltriangle": "◺", + "\\mdsmwhtsquare": "◽", + "\\mdsmblksquare": "◾", + "\\lrtriangle": "◿", + "\\ding{72}": "★", + "\\bigstar": "★", + "\\ding{73}": "☆", + "\\bigwhitestar": "☆", + "\\Sun": "☉", + "\\ding{37}": "☎", + "\\Square": "☐", + "\\CheckedBox": "☑", + "\\XBox": "☒", + "\\steaming": "☕", + "\\ding{42}": "☛", + "\\ding{43}": "☞", + "\\pointright": "☞", + "\\skull": "☠", + "\\danger": "☡", + "\\radiation": "☢", + "\\biohazard": "☣", + "\\yinyang": "☯", + "\\frownie": "☹", + "\\smiley": "☺", + "\\blacksmiley": "☻", + "\\sun": "☼", + "\\rightmoon": "☽", + "\\leftmoon": "☾", + "\\mercury": "☿", + "\\venus": "♀", + "\\female": "♀", + "\\earth": "♁", + "\\male": "♂", + "\\jupiter": "♃", + "\\saturn": "♄", + "\\uranus": "♅", + "\\neptune": "♆", + "\\pluto": "♇", + "\\aries": "♈", + "\\taurus": "♉", + "\\gemini": "♊", + "\\cancer": "♋", + "\\leo": "♌", + "\\virgo": "♍", + "\\libra": "♎", + "\\scorpio": "♏", + "\\sagittarius": "♐", + "\\capricornus": "♑", + "\\aquarius": "♒", + "\\pisces": "♓", + "\\ding{171}": "♠", + "\\spadesuit": "♠", + "\\heartsuit": "♡", + "\\ding{168}": "♣", + "\\clubsuit": "♣", + "\\varspadesuit": "♤", + "\\ding{170}": "♥", + "\\varheartsuit": "♥", + "\\ding{169}": "♦", + "\\vardiamondsuit": "♦", + "\\varclubsuit": "♧", + "\\quarternote": "♩", + "\\eighthnote": "♪", + "\\twonotes": "♫", + "\\sixteenthnote": "♬", + "\\flat": "♭", + "\\natural": "♮", + "\\sharp": "♯", + "\\recycle": "♻", + "\\acidfree": "♾", + "\\dicei": "⚀", + "\\diceii": "⚁", + "\\diceiii": "⚂", + "\\diceiv": "⚃", + "\\dicev": "⚄", + "\\dicevi": "⚅", + "\\circledrightdot": "⚆", + "\\circledtwodots": "⚇", + "\\blackcircledrightdot": "⚈", + "\\blackcircledtwodots": "⚉", + "\\anchor": "⚓", + "\\swords": "⚔", + "\\warning": "⚠", + "\\Hermaphrodite": "⚥", + "\\medcirc": "⚪", + "\\medbullet": "⚫", + "\\mdsmwhtcircle": "⚬", + "\\neuter": "⚲", + "\\ding{33}": "✁", + "\\ding{34}": "✂", + "\\ding{35}": "✃", + "\\ding{36}": "✄", + "\\ding{38}": "✆", + "\\ding{39}": "✇", + "\\ding{40}": "✈", + "\\ding{41}": "✉", + "\\ding{44}": "✌", + "\\ding{45}": "✍", + "\\ding{46}": "✎", + "\\pencil": "✎", + "\\ding{47}": "✏", + "\\ding{48}": "✐", + "\\ding{49}": "✑", + "\\ding{50}": "✒", + "\\ding{51}": "✓", + "\\checkmark": "✓", + "\\ding{52}": "✔", + "\\ding{53}": "✕", + "\\ding{54}": "✖", + "\\ding{55}": "✗", + "\\ballotx": "✗", + "\\ding{56}": "✘", + "\\ding{57}": "✙", + "\\ding{58}": "✚", + "\\ding{59}": "✛", + "\\ding{60}": "✜", + "\\ding{61}": "✝", + "\\ding{62}": "✞", + "\\ding{63}": "✟", + "\\ding{64}": "✠", + "\\maltese": "✠", + "\\ding{65}": "✡", + "\\ding{66}": "✢", + "\\ding{67}": "✣", + "\\ding{68}": "✤", + "\\ding{69}": "✥", + "\\ding{70}": "✦", + "\\ding{71}": "✧", + "\\ding{74}": "✪", + "\\circledstar": "✪", + "\\ding{75}": "✫", + "\\ding{76}": "✬", + "\\ding{77}": "✭", + "\\ding{78}": "✮", + "\\ding{79}": "✯", + "\\ding{80}": "✰", + "\\ding{81}": "✱", + "\\ding{82}": "✲", + "\\ding{83}": "✳", + "\\ding{84}": "✴", + "\\ding{85}": "✵", + "\\ding{86}": "✶", + "\\varstar": "✶", + "\\ding{87}": "✷", + "\\ding{88}": "✸", + "\\ding{89}": "✹", + "\\ding{90}": "✺", + "\\ding{91}": "✻", + "\\ding{92}": "✼", + "\\ding{93}": "✽", + "\\dingasterisk": "✽", + "\\ding{94}": "✾", + "\\ding{95}": "✿", + "\\ding{96}": "❀", + "\\ding{97}": "❁", + "\\ding{98}": "❂", + "\\ding{99}": "❃", + "\\ding{100}": "❄", + "\\ding{101}": "❅", + "\\ding{102}": "❆", + "\\ding{103}": "❇", + "\\ding{104}": "❈", + "\\ding{105}": "❉", + "\\ding{106}": "❊", + "\\ding{107}": "❋", + "\\ding{109}": "❍", + "\\ding{111}": "❏", + "\\ding{112}": "❐", + "\\ding{113}": "❑", + "\\ding{114}": "❒", + "\\ding{118}": "❖", + "\\ding{120}": "❘", + "\\ding{121}": "❙", + "\\ding{122}": "❚", + "\\ding{123}": "❛", + "\\ding{124}": "❜", + "\\ding{125}": "❝", + "\\ding{126}": "❞", + "\\ding{161}": "❡", + "\\ding{162}": "❢", + "\\ding{163}": "❣", + "\\ding{164}": "❤", + "\\ding{165}": "❥", + "\\ding{166}": "❦", + "\\ding{167}": "❧", + "\\ding{182}": "❶", + "\\ding{183}": "❷", + "\\ding{184}": "❸", + "\\ding{185}": "❹", + "\\ding{186}": "❺", + "\\ding{187}": "❻", + "\\ding{188}": "❼", + "\\ding{189}": "❽", + "\\ding{190}": "❾", + "\\ding{191}": "❿", + "\\ding{192}": "➀", + "\\ding{193}": "➁", + "\\ding{194}": "➂", + "\\ding{195}": "➃", + "\\ding{196}": "➄", + "\\ding{197}": "➅", + "\\ding{198}": "➆", + "\\ding{199}": "➇", + "\\ding{200}": "➈", + "\\ding{201}": "➉", + "\\ding{202}": "➊", + "\\ding{203}": "➋", + "\\ding{204}": "➌", + "\\ding{205}": "➍", + "\\ding{206}": "➎", + "\\ding{207}": "➏", + "\\ding{208}": "➐", + "\\ding{209}": "➑", + "\\ding{210}": "➒", + "\\ding{211}": "➓", + "\\ding{212}": "➔", + "\\ding{216}": "➘", + "\\ding{217}": "➙", + "\\ding{218}": "➚", + "\\ding{219}": "➛", + "\\draftingarrow": "➛", + "\\ding{220}": "➜", + "\\ding{221}": "➝", + "\\ding{222}": "➞", + "\\ding{223}": "➟", + "\\ding{224}": "➠", + "\\ding{225}": "➡", + "\\ding{226}": "➢", + "\\arrowbullet": "➢", + "\\ding{227}": "➣", + "\\ding{228}": "➤", + "\\ding{229}": "➥", + "\\ding{230}": "➦", + "\\ding{231}": "➧", + "\\ding{232}": "➨", + "\\ding{233}": "➩", + "\\ding{234}": "➪", + "\\ding{235}": "➫", + "\\ding{236}": "➬", + "\\ding{237}": "➭", + "\\ding{238}": "➮", + "\\ding{239}": "➯", + "\\ding{241}": "➱", + "\\ding{242}": "➲", + "\\ding{243}": "➳", + "\\ding{244}": "➴", + "\\ding{245}": "➵", + "\\ding{246}": "➶", + "\\ding{247}": "➷", + "\\ding{248}": "➸", + "\\ding{249}": "➹", + "\\ding{250}": "➺", + "\\ding{251}": "➻", + "\\ding{252}": "➼", + "\\ding{253}": "➽", + "\\ding{254}": "➾", + "\\threedangle": "⟀", + "\\whiteinwhitetriangle": "⟁", + "\\perp": "⟂", + "\\subsetcirc": "⟃", + "\\supsetcirc": "⟄", + "\\Lbag": "⟅", + "\\Rbag": "⟆", + "\\veedot": "⟇", + "\\bsolhsub": "⟈", + "\\suphsol": "⟉", + "\\longdivision": "⟌", + "\\Diamonddot": "⟐", + "\\wedgedot": "⟑", + "\\upin": "⟒", + "\\pullback": "⟓", + "\\pushout": "⟔", + "\\leftouterjoin": "⟕", + "\\rightouterjoin": "⟖", + "\\fullouterjoin": "⟗", + "\\bigbot": "⟘", + "\\bigtop": "⟙", + "\\DashVDash": "⟚", + "\\dashVdash": "⟛", + "\\multimapinv": "⟜", + "\\vlongdash": "⟝", + "\\longdashv": "⟞", + "\\cirbot": "⟟", + "\\lozengeminus": "⟠", + "\\concavediamond": "⟡", + "\\concavediamondtickleft": "⟢", + "\\concavediamondtickright": "⟣", + "\\whitesquaretickleft": "⟤", + "\\whitesquaretickright": "⟥", + "\\llbracket": "⟦", + "\\rrbracket": "⟧", + "\\langle": "⟨", + "\\rangle": "⟩", + "\\lang": "⟪", + "\\rang": "⟫", + "\\Lbrbrak": "⟬", + "\\Rbrbrak": "⟭", + "\\lgroup": "⟮", + "\\rgroup": "⟯", + "\\UUparrow": "⟰", + "\\DDownarrow": "⟱", + "\\acwgapcirclearrow": "⟲", + "\\cwgapcirclearrow": "⟳", + "\\rightarrowonoplus": "⟴", + "\\longleftarrow": "⟵", + "\\longrightarrow": "⟶", + "\\longleftrightarrow": "⟷", + "\\Longleftarrow": "⟸", + "\\Longrightarrow": "⟹", + "\\Longleftrightarrow": "⟺", + "\\longmapsfrom": "⟻", + "\\longmapsto": "⟼", + "\\Longmapsfrom": "⟽", + "\\Longmapsto": "⟾", + "\\sim\\joinrel\\leadsto": "⟿", + "\\psur": "⤀", + "\\nVtwoheadrightarrow": "⤁", + "\\nvLeftarrow": "⤂", + "\\nvRightarrow": "⤃", + "\\nvLeftrightarrow": "⤄", + "\\Mapsfrom": "⤆", + "\\Mapsto": "⤇", + "\\downarrowbarred": "⤈", + "\\uparrowbarred": "⤉", + "\\Uuparrow": "⤊", + "\\Ddownarrow": "⤋", + "\\leftbkarrow": "⤌", + "\\rightbkarrow": "⤍", + "\\leftdbkarrow": "⤎", + "\\dbkarow": "⤏", + "\\drbkarow": "⤐", + "\\rightdotarrow": "⤑", + "\\UpArrowBar": "⤒", + "\\DownArrowBar": "⤓", + "\\pinj": "⤔", + "\\finj": "⤕", + "\\bij": "⤖", + "\\nvtwoheadrightarrowtail": "⤗", + "\\nVtwoheadrightarrowtail": "⤘", + "\\lefttail": "⤙", + "\\righttail": "⤚", + "\\leftdbltail": "⤛", + "\\rightdbltail": "⤜", + "\\diamondleftarrow": "⤝", + "\\rightarrowdiamond": "⤞", + "\\diamondleftarrowbar": "⤟", + "\\barrightarrowdiamond": "⤠", + "\\nwsearrow": "⤡", + "\\neswarrow": "⤢", + "\\rdiagovfdiag": "⤫", + "\\fdiagovrdiag": "⤬", + "\\seovnearrow": "⤭", + "\\neovsearrow": "⤮", + "\\fdiagovnearrow": "⤯", + "\\rdiagovsearrow": "⤰", + "\\neovnwarrow": "⤱", + "\\nwovnearrow": "⤲", + "\\uprightcurvearrow": "⤴", + "\\downrightcurvedarrow": "⤵", + "\\cwrightarcarrow": "⤸", + "\\acwleftarcarrow": "⤹", + "\\acwoverarcarrow": "⤺", + "\\acwunderarcarrow": "⤻", + "\\curvearrowrightminus": "⤼", + "\\curvearrowleftplus": "⤽", + "\\cwundercurvearrow": "⤾", + "\\ccwundercurvearrow": "⤿", + "\\Elolarr": "⥀", + "\\Elorarr": "⥁", + "\\ElzRlarr": "⥂", + "\\leftarrowshortrightarrow": "⥃", + "\\ElzrLarr": "⥄", + "\\rightarrowplus": "⥅", + "\\leftarrowplus": "⥆", + "\\Elzrarrx": "⥇", + "\\leftrightarrowcircle": "⥈", + "\\twoheaduparrowcircle": "⥉", + "\\leftrightharpoon": "⥊", + "\\rightleftharpoon": "⥋", + "\\updownharpoonrightleft": "⥌", + "\\updownharpoonleftright": "⥍", + "\\LeftRightVector": "⥎", + "\\RightUpDownVector": "⥏", + "\\DownLeftRightVector": "⥐", + "\\LeftUpDownVector": "⥑", + "\\LeftVectorBar": "⥒", + "\\RightVectorBar": "⥓", + "\\RightUpVectorBar": "⥔", + "\\RightDownVectorBar": "⥕", + "\\DownLeftVectorBar": "⥖", + "\\DownRightVectorBar": "⥗", + "\\LeftUpVectorBar": "⥘", + "\\LeftDownVectorBar": "⥙", + "\\LeftTeeVector": "⥚", + "\\RightTeeVector": "⥛", + "\\RightUpTeeVector": "⥜", + "\\RightDownTeeVector": "⥝", + "\\DownLeftTeeVector": "⥞", + "\\DownRightTeeVector": "⥟", + "\\LeftUpTeeVector": "⥠", + "\\LeftDownTeeVector": "⥡", + "\\leftleftharpoons": "⥢", + "\\upupharpoons": "⥣", + "\\rightrightharpoons": "⥤", + "\\downdownharpoons": "⥥", + "\\leftrightharpoonsup": "⥦", + "\\leftrightharpoonsdown": "⥧", + "\\rightleftharpoonsup": "⥨", + "\\rightleftharpoonsdown": "⥩", + "\\leftbarharpoon": "⥪", + "\\barleftharpoon": "⥫", + "\\rightbarharpoon": "⥬", + "\\barrightharpoon": "⥭", + "\\UpEquilibrium": "⥮", + "\\ReverseUpEquilibrium": "⥯", + "\\RoundImplies": "⥰", + "\\equalrightarrow": "⥱", + "\\similarrightarrow": "⥲", + "\\leftarrowsimilar": "⥳", + "\\rightarrowsimilar": "⥴", + "\\rightarrowapprox": "⥵", + "\\ltlarr": "⥶", + "\\leftarrowless": "⥷", + "\\gtrarr": "⥸", + "\\subrarr": "⥹", + "\\leftarrowsubset": "⥺", + "\\suplarr": "⥻", + "\\upfishtail": "⥾", + "\\downfishtail": "⥿", + "\\Elztfnc": "⦀", + "\\spot": "⦁", + "\\typecolon": "⦂", + "\\lBrace": "⦃", + "\\rBrace": "⦄", + "\\Elroang": "⦆", + "\\limg": "⦇", + "\\rimg": "⦈", + "\\lblot": "⦉", + "\\rblot": "⦊", + "\\lbrackubar": "⦋", + "\\rbrackubar": "⦌", + "\\lbrackultick": "⦍", + "\\rbracklrtick": "⦎", + "\\lbracklltick": "⦏", + "\\rbrackurtick": "⦐", + "\\langledot": "⦑", + "\\rangledot": "⦒", + "<\\kern-0.58em(": "⦓", + "\\Lparengtr": "⦕", + "\\Rparenless": "⦖", + "\\lblkbrbrak": "⦗", + "\\rblkbrbrak": "⦘", + "\\Elzddfnc": "⦙", + "\\vzigzag": "⦚", + "\\measuredangleleft": "⦛", + "\\Angle": "⦜", + "\\rightanglemdot": "⦝", + "\\angles": "⦞", + "\\angdnr": "⦟", + "\\Elzlpargt": "⦠", + "\\sphericalangleup": "⦡", + "\\turnangle": "⦢", + "\\revangle": "⦣", + "\\angleubar": "⦤", + "\\revangleubar": "⦥", + "\\wideangledown": "⦦", + "\\wideangleup": "⦧", + "\\measanglerutone": "⦨", + "\\measanglelutonw": "⦩", + "\\measanglerdtose": "⦪", + "\\measangleldtosw": "⦫", + "\\measangleurtone": "⦬", + "\\measangleultonw": "⦭", + "\\measangledrtose": "⦮", + "\\measangledltosw": "⦯", + "\\revemptyset": "⦰", + "\\emptysetobar": "⦱", + "\\emptysetocirc": "⦲", + "\\emptysetoarr": "⦳", + "\\emptysetoarrl": "⦴", + "\\circledparallel": "⦷", + "\\circledbslash": "⦸", + "\\operp": "⦹", + "\\obot": "⦺", + "\\olcross": "⦻", + "\\odotslashdot": "⦼", + "\\uparrowoncircle": "⦽", + "\\circledwhitebullet": "⦾", + "\\circledbullet": "⦿", + "\\circledless": "⧀", + "\\circledgtr": "⧁", + "\\cirscir": "⧂", + "\\cirE": "⧃", + "\\boxslash": "⧄", + "\\boxbslash": "⧅", + "\\boxast": "⧆", + "\\boxcircle": "⧇", + "\\boxbox": "⧈", + "\\boxonbox": "⧉", + "\\ElzLap": "⧊", + "\\Elzdefas": "⧋", + "\\triangles": "⧌", + "\\triangleserifs": "⧍", + "\\rtriltri": "⧎", + "\\LeftTriangleBar": "⧏", + "\\NotLeftTriangleBar": "⧏̸", + "\\RightTriangleBar": "⧐", + "\\NotRightTriangleBar": "⧐̸", + "\\lfbowtie": "⧑", + "\\rfbowtie": "⧒", + "\\fbowtie": "⧓", + "\\lftimes": "⧔", + "\\rftimes": "⧕", + "\\hourglass": "⧖", + "\\blackhourglass": "⧗", + "\\lvzigzag": "⧘", + "\\rvzigzag": "⧙", + "\\Lvzigzag": "⧚", + "\\Rvzigzag": "⧛", + "\\tieinfty": "⧝", + "\\nvinfty": "⧞", + "\\multimapboth": "⧟", + "\\laplac": "⧠", + "\\lrtriangleeq": "⧡", + "\\shuffle": "⧢", + "\\eparsl": "⧣", + "\\smeparsl": "⧤", + "\\eqvparsl": "⧥", + "\\gleichstark": "⧦", + "\\thermod": "⧧", + "\\downtriangleleftblack": "⧨", + "\\downtrianglerightblack": "⧩", + "\\blackdiamonddownarrow": "⧪", + "\\blacklozenge": "⧫", + "\\circledownarrow": "⧬", + "\\blackcircledownarrow": "⧭", + "\\errbarsquare": "⧮", + "\\errbarblacksquare": "⧯", + "\\errbardiamond": "⧰", + "\\errbarblackdiamond": "⧱", + "\\errbarcircle": "⧲", + "\\errbarblackcircle": "⧳", + "\\RuleDelayed": "⧴", + "\\dsol": "⧶", + "\\rsolbar": "⧷", + "\\xsol": "⧸", + "\\zhide": "⧹", + "\\doubleplus": "⧺", + "\\tripleplus": "⧻", + "\\lcurvyangle": "⧼", + "\\rcurvyangle": "⧽", + "\\tplus": "⧾", + "\\tminus": "⧿", + "\\bigodot": "⨀", + "\\bigoplus": "⨁", + "\\bigotimes": "⨂", + "\\bigcupdot": "⨃", + "\\Elxuplus": "⨄", + "\\ElzThr": "⨅", + "\\Elxsqcup": "⨆", + "\\ElzInf": "⨇", + "\\ElzSup": "⨈", + "\\varprod": "⨉", + "\\modtwosum": "⨊", + "\\sumint": "⨋", + "\\iiiint": "⨌", + "\\ElzCint": "⨍", + "\\intBar": "⨎", + "\\clockoint": "⨏", + "\\awint": "⨑", + "\\rppolint": "⨒", + "\\scpolint": "⨓", + "\\npolint": "⨔", + "\\pointint": "⨕", + "\\sqrint": "⨖", + "\\intlarhk": "⨗", + "\\intx": "⨘", + "\\intcap": "⨙", + "\\intcup": "⨚", + "\\upint": "⨛", + "\\lowint": "⨜", + "\\Join": "⨝", + "\\bigtriangleleft": "⨞", + "\\zcmp": "⨟", + "\\zpipe": "⨠", + "\\zproject": "⨡", + "\\ringplus": "⨢", + "\\plushat": "⨣", + "\\simplus": "⨤", + "\\plussim": "⨦", + "\\plussubtwo": "⨧", + "\\plustrif": "⨨", + "\\commaminus": "⨩", + "\\minusfdots": "⨫", + "\\minusrdots": "⨬", + "\\ElzTimes": "⨯", + "\\dottimes": "⨰", + "\\timesbar": "⨱", + "\\btimes": "⨲", + "\\smashtimes": "⨳", + "\\otimeshat": "⨶", + "\\Otimes": "⨷", + "\\odiv": "⨸", + "\\triangleplus": "⨹", + "\\triangleminus": "⨺", + "\\triangletimes": "⨻", + "\\intprodr": "⨽", + "\\fcmp": "⨾", + "\\amalg": "⨿", + "\\capdot": "⩀", + "\\uminus": "⩁", + "\\barcup": "⩂", + "\\barcap": "⩃", + "\\capwedge": "⩄", + "\\cupvee": "⩅", + "\\cupovercap": "⩆", + "\\capovercup": "⩇", + "\\cupbarcap": "⩈", + "\\capbarcup": "⩉", + "\\twocups": "⩊", + "\\twocaps": "⩋", + "\\closedvarcup": "⩌", + "\\closedvarcap": "⩍", + "\\Sqcap": "⩎", + "\\Sqcup": "⩏", + "\\closedvarcupsmashprod": "⩐", + "\\wedgeodot": "⩑", + "\\veeodot": "⩒", + "\\ElzAnd": "⩓", + "\\ElzOr": "⩔", + "\\ElOr": "⩖", + "\\bigslopedvee": "⩗", + "\\bigslopedwedge": "⩘", + "\\veeonwedge": "⩙", + "\\wedgemidvert": "⩚", + "\\veemidvert": "⩛", + "\\midbarwedge": "⩜", + "\\midbarvee": "⩝", + "\\Elzminhat": "⩟", + "\\wedgedoublebar": "⩠", + "\\varveebar": "⩡", + "\\doublebarvee": "⩢", + "\\dsub": "⩤", + "\\rsub": "⩥", + "\\eqdot": "⩦", + "\\dotequiv": "⩧", + "\\equivVert": "⩨", + "\\equivVvert": "⩩", + "\\dotsim": "⩪", + "\\simrdots": "⩫", + "\\simminussim": "⩬", + "\\congdot": "⩭", + "\\stackrel{*}{=}": "⩮", + "\\hatapprox": "⩯", + "\\approxeqq": "⩰", + "\\eqqplus": "⩱", + "\\pluseqq": "⩲", + "\\eqqsim": "⩳", + "\\Coloneqq": "⩴", + "\\Equal": "⩵", + "\\Same": "⩶", + "\\ddotseq": "⩷", + "\\equivDD": "⩸", + "\\ltcir": "⩹", + "\\gtcir": "⩺", + "\\ltquest": "⩻", + "\\gtquest": "⩼", + "\\leqslant": "⩽", + "\\nleqslant": "⩽̸", + "\\geqslant": "⩾", + "\\ngeqslant": "⩾̸", + "\\lesdot": "⩿", + "\\gesdot": "⪀", + "\\lesdoto": "⪁", + "\\gesdoto": "⪂", + "\\lesdotor": "⪃", + "\\gesdotol": "⪄", + "\\lessapprox": "⪅", + "\\gtrapprox": "⪆", + "\\lneq": "⪇", + "\\gneq": "⪈", + "\\lnapprox": "⪉", + "\\gnapprox": "⪊", + "\\lesseqqgtr": "⪋", + "\\gtreqqless": "⪌", + "\\lsime": "⪍", + "\\gsime": "⪎", + "\\lsimg": "⪏", + "\\gsiml": "⪐", + "\\lgE": "⪑", + "\\glE": "⪒", + "\\lesges": "⪓", + "\\gesles": "⪔", + "\\eqslantless": "⪕", + "\\eqslantgtr": "⪖", + "\\elsdot": "⪗", + "\\egsdot": "⪘", + "\\eqqless": "⪙", + "\\eqqgtr": "⪚", + "\\eqqslantless": "⪛", + "\\eqqslantgtr": "⪜", + "\\Pisymbol{ppi020}{117}": "⪝", + "\\Pisymbol{ppi020}{105}": "⪞", + "\\simlE": "⪟", + "\\simgE": "⪠", + "\\NestedLessLess": "⪡", + "\\NotNestedLessLess": "⪡̸", + "\\NestedGreaterGreater": "⪢", + "\\NotNestedGreaterGreater": "⪢̸", + "\\partialmeetcontraction": "⪣", + "\\glj": "⪤", + "\\gla": "⪥", + "\\leftslice": "⪦", + "\\rightslice": "⪧", + "\\lescc": "⪨", + "\\gescc": "⪩", + "\\smt": "⪪", + "\\lat": "⪫", + "\\smte": "⪬", + "\\late": "⪭", + "\\bumpeqq": "⪮", + "\\preceq": "⪯", + "\\not\\preceq": "⪯̸", + "\\succeq": "⪰", + "\\not\\succeq": "⪰̸", + "\\precneq": "⪱", + "\\succneq": "⪲", + "\\preceqq": "⪳", + "\\succeqq": "⪴", + "\\precneqq": "⪵", + "\\succneqq": "⪶", + "\\precapprox": "⪷", + "\\succapprox": "⪸", + "\\precnapprox": "⪹", + "\\succnapprox": "⪺", + "\\llcurly": "⪻", + "\\ggcurly": "⪼", + "\\subsetdot": "⪽", + "\\supsetdot": "⪾", + "\\subsetplus": "⪿", + "\\supsetplus": "⫀", + "\\submult": "⫁", + "\\supmult": "⫂", + "\\subedot": "⫃", + "\\supedot": "⫄", + "\\subseteqq": "⫅", + "\\nsubseteqq": "⫅̸", + "\\supseteqq": "⫆", + "\\nsupseteqq": "⫆̸", + "\\subsim": "⫇", + "\\supsim": "⫈", + "\\subsetapprox": "⫉", + "\\supsetapprox": "⫊", + "\\subsetneqq": "⫋", + "\\supsetneqq": "⫌", + "\\lsqhook": "⫍", + "\\rsqhook": "⫎", + "\\csub": "⫏", + "\\csup": "⫐", + "\\csube": "⫑", + "\\csupe": "⫒", + "\\subsup": "⫓", + "\\supsub": "⫔", + "\\subsub": "⫕", + "\\supsup": "⫖", + "\\suphsub": "⫗", + "\\supdsub": "⫘", + "\\forkv": "⫙", + "\\topfork": "⫚", + "\\mlcp": "⫛", + "\\forks": "⫝̸", + "\\forksnot": "⫝", + "\\shortlefttack": "⫞", + "\\shortdowntack": "⫟", + "\\shortuptack": "⫠", + "\\perps": "⫡", + "\\vDdash": "⫢", + "\\dashV": "⫣", + "\\Dashv": "⫤", + "\\DashV": "⫥", + "\\varVdash": "⫦", + "\\Barv": "⫧", + "\\vBar": "⫨", + "\\vBarv": "⫩", + "\\Top": "⫪", + "\\Not": "⫬", + "\\bNot": "⫭", + "\\revnmid": "⫮", + "\\cirmid": "⫯", + "\\midcir": "⫰", + "\\topcir": "⫱", + "\\nhpar": "⫲", + "\\parsim": "⫳", + "\\interleave": "⫴", + "\\nhVvert": "⫵", + "\\Elztdcol": "⫶", + "\\lllnest": "⫷", + "\\gggnest": "⫸", + "\\leqqslant": "⫹", + "\\geqqslant": "⫺", + "\\trslash": "⫻", + "\\biginterleave": "⫼", + "{{/}\\!\\!{/}}": "⫽", + "{\\rlap{\\textbackslash}{{/}\\!\\!{/}}}": "⫽⃥", + "\\talloblong": "⫾", + "\\bigtalloblong": "⫿", + "\\squaretopblack": "⬒", + "\\squarebotblack": "⬓", + "\\squareurblack": "⬔", + "\\squarellblack": "⬕", + "\\diamondleftblack": "⬖", + "\\diamondrightblack": "⬗", + "\\diamondtopblack": "⬘", + "\\diamondbotblack": "⬙", + "\\dottedsquare": "⬚", + "\\blacksquare": "⬛", + "\\vysmblksquare": "⬝", + "\\vysmwhtsquare": "⬞", + "\\pentagonblack": "⬟", + "\\pentagon": "⬠", + "\\varhexagon": "⬡", + "\\varhexagonblack": "⬢", + "\\hexagonblack": "⬣", + "\\lgblkcircle": "⬤", + "\\mdblkdiamond": "⬥", + "\\mdwhtdiamond": "⬦", + "\\mdblklozenge": "⬧", + "\\mdwhtlozenge": "⬨", + "\\smblkdiamond": "⬩", + "\\smblklozenge": "⬪", + "\\smwhtlozenge": "⬫", + "\\blkhorzoval": "⬬", + "\\whthorzoval": "⬭", + "\\blkvertoval": "⬮", + "\\whtvertoval": "⬯", + "\\circleonleftarrow": "⬰", + "\\leftthreearrows": "⬱", + "\\leftarrowonoplus": "⬲", + "\\longleftsquigarrow": "⬳", + "\\nvtwoheadleftarrow": "⬴", + "\\nVtwoheadleftarrow": "⬵", + "\\twoheadmapsfrom": "⬶", + "\\twoheadleftdbkarrow": "⬷", + "\\leftdotarrow": "⬸", + "\\nvleftarrowtail": "⬹", + "\\nVleftarrowtail": "⬺", + "\\twoheadleftarrowtail": "⬻", + "\\nvtwoheadleftarrowtail": "⬼", + "\\nVtwoheadleftarrowtail": "⬽", + "\\leftarrowx": "⬾", + "\\leftcurvedarrow": "⬿", + "\\equalleftarrow": "⭀", + "\\bsimilarleftarrow": "⭁", + "\\leftarrowbackapprox": "⭂", + "\\rightarrowgtr": "⭃", + "\\rightarrowsupset": "⭄", + "\\LLeftarrow": "⭅", + "\\RRightarrow": "⭆", + "\\bsimilarrightarrow": "⭇", + "\\rightarrowbackapprox": "⭈", + "\\similarleftarrow": "⭉", + "\\leftarrowapprox": "⭊", + "\\leftarrowbsimilar": "⭋", + "\\rightarrowbsimilar": "⭌", + "\\medwhitestar": "⭐", + "\\medblackstar": "⭑", + "\\smwhitestar": "⭒", + "\\rightpentagonblack": "⭓", + "\\rightpentagon": "⭔", + "\\postalmark": "〒", + "\\lbrbrak": "〔", + "\\rbrbrak": "〕", + "\\openbracketleft": "〚", + "\\openbracketright": "〛", + "\\hzigzag": "〰", + "\\dbend": "�", + "\\mathbf{A}": "𝐀", + "\\mathbf{B}": "𝐁", + "\\mathbf{C}": "𝐂", + "\\mathbf{D}": "𝐃", + "\\mathbf{E}": "𝐄", + "\\mathbf{F}": "𝐅", + "\\mathbf{G}": "𝐆", + "\\mathbf{H}": "𝐇", + "\\mathbf{I}": "𝐈", + "\\mathbf{J}": "𝐉", + "\\mathbf{K}": "𝐊", + "\\mathbf{L}": "𝐋", + "\\mathbf{M}": "𝐌", + "\\mathbf{N}": "𝐍", + "\\mathbf{O}": "𝐎", + "\\mathbf{P}": "𝐏", + "\\mathbf{Q}": "𝐐", + "\\mathbf{R}": "𝐑", + "\\mathbf{S}": "𝐒", + "\\mathbf{T}": "𝐓", + "\\mathbf{U}": "𝐔", + "\\mathbf{V}": "𝐕", + "\\mathbf{W}": "𝐖", + "\\mathbf{X}": "𝐗", + "\\mathbf{Y}": "𝐘", + "\\mathbf{Z}": "𝐙", + "\\mathbf{a}": "𝐚", + "\\mathbf{b}": "𝐛", + "\\mathbf{c}": "𝐜", + "\\mathbf{d}": "𝐝", + "\\mathbf{e}": "𝐞", + "\\mathbf{f}": "𝐟", + "\\mathbf{g}": "𝐠", + "\\mathbf{h}": "𝐡", + "\\mathbf{i}": "𝐢", + "\\mathbf{j}": "𝐣", + "\\mathbf{k}": "𝐤", + "\\mathbf{l}": "𝐥", + "\\mathbf{m}": "𝐦", + "\\mathbf{n}": "𝐧", + "\\mathbf{o}": "𝐨", + "\\mathbf{p}": "𝐩", + "\\mathbf{q}": "𝐪", + "\\mathbf{r}": "𝐫", + "\\mathbf{s}": "𝐬", + "\\mathbf{t}": "𝐭", + "\\mathbf{u}": "𝐮", + "\\mathbf{v}": "𝐯", + "\\mathbf{w}": "𝐰", + "\\mathbf{x}": "𝐱", + "\\mathbf{y}": "𝐲", + "\\mathbf{z}": "𝐳", + "\\mathsl{A}": "𝐴", + "\\mathsl{B}": "𝐵", + "\\mathsl{C}": "𝐶", + "\\mathsl{D}": "𝐷", + "\\mathsl{E}": "𝐸", + "\\mathsl{F}": "𝐹", + "\\mathsl{G}": "𝐺", + "\\mathsl{H}": "𝐻", + "\\mathsl{I}": "𝐼", + "\\mathsl{J}": "𝐽", + "\\mathsl{K}": "𝐾", + "\\mathsl{L}": "𝐿", + "\\mathsl{M}": "𝑀", + "\\mathsl{N}": "𝑁", + "\\mathsl{O}": "𝑂", + "\\mathsl{P}": "𝑃", + "\\mathsl{Q}": "𝑄", + "\\mathsl{R}": "𝑅", + "\\mathsl{S}": "𝑆", + "\\mathsl{T}": "𝑇", + "\\mathsl{U}": "𝑈", + "\\mathsl{V}": "𝑉", + "\\mathsl{W}": "𝑊", + "\\mathsl{X}": "𝑋", + "\\mathsl{Y}": "𝑌", + "\\mathsl{Z}": "𝑍", + "\\mathsl{a}": "𝑎", + "\\mathsl{b}": "𝑏", + "\\mathsl{c}": "𝑐", + "\\mathsl{d}": "𝑑", + "\\mathsl{e}": "𝑒", + "\\mathsl{f}": "𝑓", + "\\mathsl{g}": "𝑔", + "\\mathsl{i}": "𝑖", + "\\mathsl{j}": "𝑗", + "\\mathsl{k}": "𝑘", + "\\mathsl{l}": "𝑙", + "\\mathsl{m}": "𝑚", + "\\mathsl{n}": "𝑛", + "\\mathsl{o}": "𝑜", + "\\mathsl{p}": "𝑝", + "\\mathsl{q}": "𝑞", + "\\mathsl{r}": "𝑟", + "\\mathsl{s}": "𝑠", + "\\mathsl{t}": "𝑡", + "\\mathsl{u}": "𝑢", + "\\mathsl{v}": "𝑣", + "\\mathsl{w}": "𝑤", + "\\mathsl{x}": "𝑥", + "\\mathsl{y}": "𝑦", + "\\mathsl{z}": "𝑧", + "\\mathbit{A}": "𝑨", + "\\mathbit{B}": "𝑩", + "\\mathbit{C}": "𝑪", + "\\mathbit{D}": "𝑫", + "\\mathbit{E}": "𝑬", + "\\mathbit{F}": "𝑭", + "\\mathbit{G}": "𝑮", + "\\mathbit{H}": "𝑯", + "\\mathbit{I}": "𝑰", + "\\mathbit{J}": "𝑱", + "\\mathbit{K}": "𝑲", + "\\mathbit{L}": "𝑳", + "\\mathbit{M}": "𝑴", + "\\mathbit{N}": "𝑵", + "\\mathbit{O}": "𝑶", + "\\mathbit{P}": "𝑷", + "\\mathbit{Q}": "𝑸", + "\\mathbit{R}": "𝑹", + "\\mathbit{S}": "𝑺", + "\\mathbit{T}": "𝑻", + "\\mathbit{U}": "𝑼", + "\\mathbit{V}": "𝑽", + "\\mathbit{W}": "𝑾", + "\\mathbit{X}": "𝑿", + "\\mathbit{Y}": "𝒀", + "\\mathbit{Z}": "𝒁", + "\\mathbit{a}": "𝒂", + "\\mathbit{b}": "𝒃", + "\\mathbit{c}": "𝒄", + "\\mathbit{d}": "𝒅", + "\\mathbit{e}": "𝒆", + "\\mathbit{f}": "𝒇", + "\\mathbit{g}": "𝒈", + "\\mathbit{h}": "𝒉", + "\\mathbit{i}": "𝒊", + "\\mathbit{j}": "𝒋", + "\\mathbit{k}": "𝒌", + "\\mathbit{l}": "𝒍", + "\\mathbit{m}": "𝒎", + "\\mathbit{n}": "𝒏", + "\\mathbit{o}": "𝒐", + "\\mathbit{p}": "𝒑", + "\\mathbit{q}": "𝒒", + "\\mathbit{r}": "𝒓", + "\\mathbit{s}": "𝒔", + "\\mathbit{t}": "𝒕", + "\\mathbit{u}": "𝒖", + "\\mathbit{v}": "𝒗", + "\\mathbit{w}": "𝒘", + "\\mathbit{x}": "𝒙", + "\\mathbit{y}": "𝒚", + "\\mathbit{z}": "𝒛", + "\\mathscr{A}": "𝒜", + "\\mathscr{C}": "𝒞", + "\\mathscr{D}": "𝒟", + "\\mathscr{G}": "𝒢", + "\\mathscr{J}": "𝒥", + "\\mathscr{K}": "𝒦", + "\\mathscr{N}": "𝒩", + "\\mathscr{O}": "𝒪", + "\\mathscr{P}": "𝒫", + "\\mathscr{Q}": "𝒬", + "\\mathscr{S}": "𝒮", + "\\mathscr{T}": "𝒯", + "\\mathscr{U}": "𝒰", + "\\mathscr{V}": "𝒱", + "\\mathscr{W}": "𝒲", + "\\mathscr{X}": "𝒳", + "\\mathscr{Y}": "𝒴", + "\\mathscr{Z}": "𝒵", + "\\mathscr{a}": "𝒶", + "\\mathscr{b}": "𝒷", + "\\mathscr{c}": "𝒸", + "\\mathscr{d}": "𝒹", + "\\mathscr{f}": "𝒻", + "\\mathscr{h}": "𝒽", + "\\mathscr{i}": "𝒾", + "\\mathscr{j}": "𝒿", + "\\mathscr{k}": "𝓀", + "\\mathscr{m}": "𝓂", + "\\mathscr{n}": "𝓃", + "\\mathscr{p}": "𝓅", + "\\mathscr{q}": "𝓆", + "\\mathscr{r}": "𝓇", + "\\mathscr{s}": "𝓈", + "\\mathscr{t}": "𝓉", + "\\mathscr{u}": "𝓊", + "\\mathscr{v}": "𝓋", + "\\mathscr{w}": "𝓌", + "\\mathscr{x}": "𝓍", + "\\mathscr{y}": "𝓎", + "\\mathscr{z}": "𝓏", + "\\mathmit{A}": "𝓐", + "\\mathmit{B}": "𝓑", + "\\mathmit{C}": "𝓒", + "\\mathmit{D}": "𝓓", + "\\mathmit{E}": "𝓔", + "\\mathmit{F}": "𝓕", + "\\mathmit{G}": "𝓖", + "\\mathmit{H}": "𝓗", + "\\mathmit{I}": "𝓘", + "\\mathmit{J}": "𝓙", + "\\mathmit{K}": "𝓚", + "\\mathmit{L}": "𝓛", + "\\mathmit{M}": "𝓜", + "\\mathmit{N}": "𝓝", + "\\mathmit{O}": "𝓞", + "\\mathmit{P}": "𝓟", + "\\mathmit{Q}": "𝓠", + "\\mathmit{R}": "𝓡", + "\\mathmit{S}": "𝓢", + "\\mathmit{T}": "𝓣", + "\\mathmit{U}": "𝓤", + "\\mathmit{V}": "𝓥", + "\\mathmit{W}": "𝓦", + "\\mathmit{X}": "𝓧", + "\\mathmit{Y}": "𝓨", + "\\mathmit{Z}": "𝓩", + "\\mathmit{a}": "𝓪", + "\\mathmit{b}": "𝓫", + "\\mathmit{c}": "𝓬", + "\\mathmit{d}": "𝓭", + "\\mathmit{e}": "𝓮", + "\\mathmit{f}": "𝓯", + "\\mathmit{g}": "𝓰", + "\\mathmit{h}": "𝓱", + "\\mathmit{i}": "𝓲", + "\\mathmit{j}": "𝓳", + "\\mathmit{k}": "𝓴", + "\\mathmit{l}": "𝓵", + "\\mathmit{m}": "𝓶", + "\\mathmit{n}": "𝓷", + "\\mathmit{o}": "𝓸", + "\\mathmit{p}": "𝓹", + "\\mathmit{q}": "𝓺", + "\\mathmit{r}": "𝓻", + "\\mathmit{s}": "𝓼", + "\\mathmit{t}": "𝓽", + "\\mathmit{u}": "𝓾", + "\\mathmit{v}": "𝓿", + "\\mathmit{w}": "𝔀", + "\\mathmit{x}": "𝔁", + "\\mathmit{y}": "𝔂", + "\\mathmit{z}": "𝔃", + "\\mathfrak{A}": "𝔄", + "\\mathfrak{B}": "𝔅", + "\\mathfrak{D}": "𝔇", + "\\mathfrak{E}": "𝔈", + "\\mathfrak{F}": "𝔉", + "\\mathfrak{G}": "𝔊", + "\\mathfrak{J}": "𝔍", + "\\mathfrak{K}": "𝔎", + "\\mathfrak{L}": "𝔏", + "\\mathfrak{M}": "𝔐", + "\\mathfrak{N}": "𝔑", + "\\mathfrak{O}": "𝔒", + "\\mathfrak{P}": "𝔓", + "\\mathfrak{Q}": "𝔔", + "\\mathfrak{S}": "𝔖", + "\\mathfrak{T}": "𝔗", + "\\mathfrak{U}": "𝔘", + "\\mathfrak{V}": "𝔙", + "\\mathfrak{W}": "𝔚", + "\\mathfrak{X}": "𝔛", + "\\mathfrak{Y}": "𝔜", + "\\mathfrak{a}": "𝔞", + "\\mathfrak{b}": "𝔟", + "\\mathfrak{c}": "𝔠", + "\\mathfrak{d}": "𝔡", + "\\mathfrak{e}": "𝔢", + "\\mathfrak{f}": "𝔣", + "\\mathfrak{g}": "𝔤", + "\\mathfrak{h}": "𝔥", + "\\mathfrak{i}": "𝔦", + "\\mathfrak{j}": "𝔧", + "\\mathfrak{k}": "𝔨", + "\\mathfrak{l}": "𝔩", + "\\mathfrak{m}": "𝔪", + "\\mathfrak{n}": "𝔫", + "\\mathfrak{o}": "𝔬", + "\\mathfrak{p}": "𝔭", + "\\mathfrak{q}": "𝔮", + "\\mathfrak{r}": "𝔯", + "\\mathfrak{s}": "𝔰", + "\\mathfrak{t}": "𝔱", + "\\mathfrak{u}": "𝔲", + "\\mathfrak{v}": "𝔳", + "\\mathfrak{w}": "𝔴", + "\\mathfrak{x}": "𝔵", + "\\mathfrak{y}": "𝔶", + "\\mathfrak{z}": "𝔷", + "\\mathbb{A}": "𝔸", + "\\mathbb{B}": "𝔹", + "\\mathbb{D}": "𝔻", + "\\mathbb{E}": "𝔼", + "\\mathbb{F}": "𝔽", + "\\mathbb{G}": "𝔾", + "\\mathbb{I}": "𝕀", + "\\mathbb{J}": "𝕁", + "\\mathbb{K}": "𝕂", + "\\mathbb{L}": "𝕃", + "\\mathbb{M}": "𝕄", + "\\mathbb{O}": "𝕆", + "\\mathbb{S}": "𝕊", + "\\mathbb{T}": "𝕋", + "\\mathbb{U}": "𝕌", + "\\mathbb{V}": "𝕍", + "\\mathbb{W}": "𝕎", + "\\mathbb{X}": "𝕏", + "\\mathbb{Y}": "𝕐", + "\\mathbb{a}": "𝕒", + "\\mathbb{b}": "𝕓", + "\\mathbb{c}": "𝕔", + "\\mathbb{d}": "𝕕", + "\\mathbb{e}": "𝕖", + "\\mathbb{f}": "𝕗", + "\\mathbb{g}": "𝕘", + "\\mathbb{h}": "𝕙", + "\\mathbb{i}": "𝕚", + "\\mathbb{j}": "𝕛", + "\\mathbb{k}": "𝕜", + "\\mathbb{l}": "𝕝", + "\\mathbb{m}": "𝕞", + "\\mathbb{n}": "𝕟", + "\\mathbb{o}": "𝕠", + "\\mathbb{p}": "𝕡", + "\\mathbb{q}": "𝕢", + "\\mathbb{r}": "𝕣", + "\\mathbb{s}": "𝕤", + "\\mathbb{t}": "𝕥", + "\\mathbb{u}": "𝕦", + "\\mathbb{v}": "𝕧", + "\\mathbb{w}": "𝕨", + "\\mathbb{x}": "𝕩", + "\\mathbb{y}": "𝕪", + "\\mathbb{z}": "𝕫", + "\\mathslbb{A}": "𝕬", + "\\mathslbb{B}": "𝕭", + "\\mathslbb{C}": "𝕮", + "\\mathslbb{D}": "𝕯", + "\\mathslbb{E}": "𝕰", + "\\mathslbb{F}": "𝕱", + "\\mathslbb{G}": "𝕲", + "\\mathslbb{H}": "𝕳", + "\\mathslbb{I}": "𝕴", + "\\mathslbb{J}": "𝕵", + "\\mathslbb{K}": "𝕶", + "\\mathslbb{L}": "𝕷", + "\\mathslbb{M}": "𝕸", + "\\mathslbb{N}": "𝕹", + "\\mathslbb{O}": "𝕺", + "\\mathslbb{P}": "𝕻", + "\\mathslbb{Q}": "𝕼", + "\\mathslbb{R}": "𝕽", + "\\mathslbb{S}": "𝕾", + "\\mathslbb{T}": "𝕿", + "\\mathslbb{U}": "𝖀", + "\\mathslbb{V}": "𝖁", + "\\mathslbb{W}": "𝖂", + "\\mathslbb{X}": "𝖃", + "\\mathslbb{Y}": "𝖄", + "\\mathslbb{Z}": "𝖅", + "\\mathslbb{a}": "𝖆", + "\\mathslbb{b}": "𝖇", + "\\mathslbb{c}": "𝖈", + "\\mathslbb{d}": "𝖉", + "\\mathslbb{e}": "𝖊", + "\\mathslbb{f}": "𝖋", + "\\mathslbb{g}": "𝖌", + "\\mathslbb{h}": "𝖍", + "\\mathslbb{i}": "𝖎", + "\\mathslbb{j}": "𝖏", + "\\mathslbb{k}": "𝖐", + "\\mathslbb{l}": "𝖑", + "\\mathslbb{m}": "𝖒", + "\\mathslbb{n}": "𝖓", + "\\mathslbb{o}": "𝖔", + "\\mathslbb{p}": "𝖕", + "\\mathslbb{q}": "𝖖", + "\\mathslbb{r}": "𝖗", + "\\mathslbb{s}": "𝖘", + "\\mathslbb{t}": "𝖙", + "\\mathslbb{u}": "𝖚", + "\\mathslbb{v}": "𝖛", + "\\mathslbb{w}": "𝖜", + "\\mathslbb{x}": "𝖝", + "\\mathslbb{y}": "𝖞", + "\\mathslbb{z}": "𝖟", + "\\mathsf{A}": "𝖠", + "\\mathsf{B}": "𝖡", + "\\mathsf{C}": "𝖢", + "\\mathsf{D}": "𝖣", + "\\mathsf{E}": "𝖤", + "\\mathsf{F}": "𝖥", + "\\mathsf{G}": "𝖦", + "\\mathsf{H}": "𝖧", + "\\mathsf{I}": "𝖨", + "\\mathsf{J}": "𝖩", + "\\mathsf{K}": "𝖪", + "\\mathsf{L}": "𝖫", + "\\mathsf{M}": "𝖬", + "\\mathsf{N}": "𝖭", + "\\mathsf{O}": "𝖮", + "\\mathsf{P}": "𝖯", + "\\mathsf{Q}": "𝖰", + "\\mathsf{R}": "𝖱", + "\\mathsf{S}": "𝖲", + "\\mathsf{T}": "𝖳", + "\\mathsf{U}": "𝖴", + "\\mathsf{V}": "𝖵", + "\\mathsf{W}": "𝖶", + "\\mathsf{X}": "𝖷", + "\\mathsf{Y}": "𝖸", + "\\mathsf{Z}": "𝖹", + "\\mathsf{a}": "𝖺", + "\\mathsf{b}": "𝖻", + "\\mathsf{c}": "𝖼", + "\\mathsf{d}": "𝖽", + "\\mathsf{e}": "𝖾", + "\\mathsf{f}": "𝖿", + "\\mathsf{g}": "𝗀", + "\\mathsf{h}": "𝗁", + "\\mathsf{i}": "𝗂", + "\\mathsf{j}": "𝗃", + "\\mathsf{k}": "𝗄", + "\\mathsf{l}": "𝗅", + "\\mathsf{m}": "𝗆", + "\\mathsf{n}": "𝗇", + "\\mathsf{o}": "𝗈", + "\\mathsf{p}": "𝗉", + "\\mathsf{q}": "𝗊", + "\\mathsf{r}": "𝗋", + "\\mathsf{s}": "𝗌", + "\\mathsf{t}": "𝗍", + "\\mathsf{u}": "𝗎", + "\\mathsf{v}": "𝗏", + "\\mathsf{w}": "𝗐", + "\\mathsf{x}": "𝗑", + "\\mathsf{y}": "𝗒", + "\\mathsf{z}": "𝗓", + "\\mathsfbf{A}": "𝗔", + "\\mathsfbf{B}": "𝗕", + "\\mathsfbf{C}": "𝗖", + "\\mathsfbf{D}": "𝗗", + "\\mathsfbf{E}": "𝗘", + "\\mathsfbf{F}": "𝗙", + "\\mathsfbf{G}": "𝗚", + "\\mathsfbf{H}": "𝗛", + "\\mathsfbf{I}": "𝗜", + "\\mathsfbf{J}": "𝗝", + "\\mathsfbf{K}": "𝗞", + "\\mathsfbf{L}": "𝗟", + "\\mathsfbf{M}": "𝗠", + "\\mathsfbf{N}": "𝗡", + "\\mathsfbf{O}": "𝗢", + "\\mathsfbf{P}": "𝗣", + "\\mathsfbf{Q}": "𝗤", + "\\mathsfbf{R}": "𝗥", + "\\mathsfbf{S}": "𝗦", + "\\mathsfbf{T}": "𝗧", + "\\mathsfbf{U}": "𝗨", + "\\mathsfbf{V}": "𝗩", + "\\mathsfbf{W}": "𝗪", + "\\mathsfbf{X}": "𝗫", + "\\mathsfbf{Y}": "𝗬", + "\\mathsfbf{Z}": "𝗭", + "\\mathsfbf{a}": "𝗮", + "\\mathsfbf{b}": "𝗯", + "\\mathsfbf{c}": "𝗰", + "\\mathsfbf{d}": "𝗱", + "\\mathsfbf{e}": "𝗲", + "\\mathsfbf{f}": "𝗳", + "\\mathsfbf{g}": "𝗴", + "\\mathsfbf{h}": "𝗵", + "\\mathsfbf{i}": "𝗶", + "\\mathsfbf{j}": "𝗷", + "\\mathsfbf{k}": "𝗸", + "\\mathsfbf{l}": "𝗹", + "\\mathsfbf{m}": "𝗺", + "\\mathsfbf{n}": "𝗻", + "\\mathsfbf{o}": "𝗼", + "\\mathsfbf{p}": "𝗽", + "\\mathsfbf{q}": "𝗾", + "\\mathsfbf{r}": "𝗿", + "\\mathsfbf{s}": "𝘀", + "\\mathsfbf{t}": "𝘁", + "\\mathsfbf{u}": "𝘂", + "\\mathsfbf{v}": "𝘃", + "\\mathsfbf{w}": "𝘄", + "\\mathsfbf{x}": "𝘅", + "\\mathsfbf{y}": "𝘆", + "\\mathsfbf{z}": "𝘇", + "\\mathsfsl{A}": "𝘈", + "\\mathsfsl{B}": "𝘉", + "\\mathsfsl{C}": "𝘊", + "\\mathsfsl{D}": "𝘋", + "\\mathsfsl{E}": "𝘌", + "\\mathsfsl{F}": "𝘍", + "\\mathsfsl{G}": "𝘎", + "\\mathsfsl{H}": "𝘏", + "\\mathsfsl{I}": "𝘐", + "\\mathsfsl{J}": "𝘑", + "\\mathsfsl{K}": "𝘒", + "\\mathsfsl{L}": "𝘓", + "\\mathsfsl{M}": "𝘔", + "\\mathsfsl{N}": "𝘕", + "\\mathsfsl{O}": "𝘖", + "\\mathsfsl{P}": "𝘗", + "\\mathsfsl{Q}": "𝘘", + "\\mathsfsl{R}": "𝘙", + "\\mathsfsl{S}": "𝘚", + "\\mathsfsl{T}": "𝘛", + "\\mathsfsl{U}": "𝘜", + "\\mathsfsl{V}": "𝘝", + "\\mathsfsl{W}": "𝘞", + "\\mathsfsl{X}": "𝘟", + "\\mathsfsl{Y}": "𝘠", + "\\mathsfsl{Z}": "𝘡", + "\\mathsfsl{a}": "𝘢", + "\\mathsfsl{b}": "𝘣", + "\\mathsfsl{c}": "𝘤", + "\\mathsfsl{d}": "𝘥", + "\\mathsfsl{e}": "𝘦", + "\\mathsfsl{f}": "𝘧", + "\\mathsfsl{g}": "𝘨", + "\\mathsfsl{h}": "𝘩", + "\\mathsfsl{i}": "𝘪", + "\\mathsfsl{j}": "𝘫", + "\\mathsfsl{k}": "𝘬", + "\\mathsfsl{l}": "𝘭", + "\\mathsfsl{m}": "𝘮", + "\\mathsfsl{n}": "𝘯", + "\\mathsfsl{o}": "𝘰", + "\\mathsfsl{p}": "𝘱", + "\\mathsfsl{q}": "𝘲", + "\\mathsfsl{r}": "𝘳", + "\\mathsfsl{s}": "𝘴", + "\\mathsfsl{t}": "𝘵", + "\\mathsfsl{u}": "𝘶", + "\\mathsfsl{v}": "𝘷", + "\\mathsfsl{w}": "𝘸", + "\\mathsfsl{x}": "𝘹", + "\\mathsfsl{y}": "𝘺", + "\\mathsfsl{z}": "𝘻", + "\\mathsfbfsl{A}": "𝘼", + "\\mathsfbfsl{B}": "𝘽", + "\\mathsfbfsl{C}": "𝘾", + "\\mathsfbfsl{D}": "𝘿", + "\\mathsfbfsl{E}": "𝙀", + "\\mathsfbfsl{F}": "𝙁", + "\\mathsfbfsl{G}": "𝙂", + "\\mathsfbfsl{H}": "𝙃", + "\\mathsfbfsl{I}": "𝙄", + "\\mathsfbfsl{J}": "𝙅", + "\\mathsfbfsl{K}": "𝙆", + "\\mathsfbfsl{L}": "𝙇", + "\\mathsfbfsl{M}": "𝙈", + "\\mathsfbfsl{N}": "𝙉", + "\\mathsfbfsl{O}": "𝙊", + "\\mathsfbfsl{P}": "𝙋", + "\\mathsfbfsl{Q}": "𝙌", + "\\mathsfbfsl{R}": "𝙍", + "\\mathsfbfsl{S}": "𝙎", + "\\mathsfbfsl{T}": "𝙏", + "\\mathsfbfsl{U}": "𝙐", + "\\mathsfbfsl{V}": "𝙑", + "\\mathsfbfsl{W}": "𝙒", + "\\mathsfbfsl{X}": "𝙓", + "\\mathsfbfsl{Y}": "𝙔", + "\\mathsfbfsl{Z}": "𝙕", + "\\mathsfbfsl{a}": "𝙖", + "\\mathsfbfsl{b}": "𝙗", + "\\mathsfbfsl{c}": "𝙘", + "\\mathsfbfsl{d}": "𝙙", + "\\mathsfbfsl{e}": "𝙚", + "\\mathsfbfsl{f}": "𝙛", + "\\mathsfbfsl{g}": "𝙜", + "\\mathsfbfsl{h}": "𝙝", + "\\mathsfbfsl{i}": "𝙞", + "\\mathsfbfsl{j}": "𝙟", + "\\mathsfbfsl{k}": "𝙠", + "\\mathsfbfsl{l}": "𝙡", + "\\mathsfbfsl{m}": "𝙢", + "\\mathsfbfsl{n}": "𝙣", + "\\mathsfbfsl{o}": "𝙤", + "\\mathsfbfsl{p}": "𝙥", + "\\mathsfbfsl{q}": "𝙦", + "\\mathsfbfsl{r}": "𝙧", + "\\mathsfbfsl{s}": "𝙨", + "\\mathsfbfsl{t}": "𝙩", + "\\mathsfbfsl{u}": "𝙪", + "\\mathsfbfsl{v}": "𝙫", + "\\mathsfbfsl{w}": "𝙬", + "\\mathsfbfsl{x}": "𝙭", + "\\mathsfbfsl{y}": "𝙮", + "\\mathsfbfsl{z}": "𝙯", + "\\mathtt{A}": "𝙰", + "\\mathtt{B}": "𝙱", + "\\mathtt{C}": "𝙲", + "\\mathtt{D}": "𝙳", + "\\mathtt{E}": "𝙴", + "\\mathtt{F}": "𝙵", + "\\mathtt{G}": "𝙶", + "\\mathtt{H}": "𝙷", + "\\mathtt{I}": "𝙸", + "\\mathtt{J}": "𝙹", + "\\mathtt{K}": "𝙺", + "\\mathtt{L}": "𝙻", + "\\mathtt{M}": "𝙼", + "\\mathtt{N}": "𝙽", + "\\mathtt{O}": "𝙾", + "\\mathtt{P}": "𝙿", + "\\mathtt{Q}": "𝚀", + "\\mathtt{R}": "𝚁", + "\\mathtt{S}": "𝚂", + "\\mathtt{T}": "𝚃", + "\\mathtt{U}": "𝚄", + "\\mathtt{V}": "𝚅", + "\\mathtt{W}": "𝚆", + "\\mathtt{X}": "𝚇", + "\\mathtt{Y}": "𝚈", + "\\mathtt{Z}": "𝚉", + "\\mathtt{a}": "𝚊", + "\\mathtt{b}": "𝚋", + "\\mathtt{c}": "𝚌", + "\\mathtt{d}": "𝚍", + "\\mathtt{e}": "𝚎", + "\\mathtt{f}": "𝚏", + "\\mathtt{g}": "𝚐", + "\\mathtt{h}": "𝚑", + "\\mathtt{i}": "𝚒", + "\\mathtt{j}": "𝚓", + "\\mathtt{k}": "𝚔", + "\\mathtt{l}": "𝚕", + "\\mathtt{m}": "𝚖", + "\\mathtt{n}": "𝚗", + "\\mathtt{o}": "𝚘", + "\\mathtt{p}": "𝚙", + "\\mathtt{q}": "𝚚", + "\\mathtt{r}": "𝚛", + "\\mathtt{s}": "𝚜", + "\\mathtt{t}": "𝚝", + "\\mathtt{u}": "𝚞", + "\\mathtt{v}": "𝚟", + "\\mathtt{w}": "𝚠", + "\\mathtt{x}": "𝚡", + "\\mathtt{y}": "𝚢", + "\\mathtt{z}": "𝚣", + "\\mathbf{\\Gamma}": "𝚪", + "\\mathbf{\\Delta}": "𝚫", + "\\mathbf{\\Theta}": "𝚯", + "\\mathbf{\\Lambda}": "𝚲", + "\\mathbf{\\Xi}": "𝚵", + "\\mathbf{\\Pi}": "𝚷", + "\\mathbf{\\vartheta}": "𝚹", + "\\mathbf{\\Sigma}": "𝚺", + "\\mathbf{\\Upsilon}": "𝚼", + "\\mathbf{\\Phi}": "𝚽", + "\\mathbf{\\Psi}": "𝚿", + "\\mathbf{\\Omega}": "𝛀", + "\\mathbf{\\nabla}": "𝛁", + "\\mathbf{\\alpha}": "𝛂", + "\\mathbf{\\beta}": "𝛃", + "\\mathbf{\\gamma}": "𝛄", + "\\mathbf{\\delta}": "𝛅", + "\\mathbf{\\epsilon}": "𝛆", + "\\mathbf{\\zeta}": "𝛇", + "\\mathbf{\\eta}": "𝛈", + "\\mathbf{\\theta}": "𝛉", + "\\mathbf{\\lambda}": "𝛌", + "\\mathbf{\\xi}": "𝛏", + "\\mathbf{\\pi}": "𝛑", + "\\mathbf{\\varsigma}": "𝛓", + "\\mathbf{\\sigma}": "𝛔", + "\\mathbf{\\upsilon}": "𝛖", + "\\mathbf{\\phi}": "𝛗", + "\\mathbf{\\psi}": "𝛙", + "\\mathbf{\\omega}": "𝛚", + "\\mathbf{\\varkappa}": "𝛞", + "\\mathbf{\\varrho}": "𝛠", + "\\mathbf{\\varpi}": "𝛡", + "\\mathsl{\\Gamma}": "𝛤", + "\\mathsl{\\Delta}": "𝛥", + "\\mathsl{\\Lambda}": "𝛬", + "\\mathsl{\\Xi}": "𝛯", + "\\mathsl{\\Pi}": "𝛱", + "\\mathsl{\\Theta}": "𝛳", + "\\mathsl{\\Sigma}": "𝛴", + "\\mathsl{\\Upsilon}": "𝛶", + "\\mathsl{\\Phi}": "𝛷", + "\\mathsl{\\Psi}": "𝛹", + "\\mathsl{\\Omega}": "𝛺", + "\\mathsl{\\nabla}": "𝛻", + "\\mathsl{\\gamma}": "𝛾", + "\\mathsl{\\delta}": "𝛿", + "\\mathsl{\\theta}": "𝜃", + "\\mathsl{\\lambda}": "𝜆", + "\\mu": "𝜇", + "\\mathsl{\\xi}": "𝜉", + "\\mathsl{\\pi}": "𝜋", + "\\mathsl{\\varsigma}": "𝜍", + "\\mathsl{\\sigma}": "𝜎", + "\\mathsl{\\upsilon}": "𝜐", + "\\mathsl{\\varphi}": "𝜑", + "\\mathsl{\\psi}": "𝜓", + "\\mathsl{\\omega}": "𝜔", + "\\mathsl{\\vartheta}": "𝜗", + "\\mathsl{\\varkappa}": "𝜘", + "\\mathsl{\\phi}": "𝜙", + "\\mathsl{\\varrho}": "𝜚", + "\\mathsl{\\varpi}": "𝜛", + "\\mathbit{\\Gamma}": "𝜞", + "\\mathbit{\\Delta}": "𝜟", + "\\mathbit{\\Theta}": "𝜣", + "\\mathbit{\\Lambda}": "𝜦", + "\\mathbit{\\Xi}": "𝜩", + "\\mathbit{\\Pi}": "𝜫", + "\\mathbit{\\Sigma}": "𝜮", + "\\mathbit{\\Upsilon}": "𝜰", + "\\mathbit{\\Phi}": "𝜱", + "\\mathbit{\\Psi}": "𝜳", + "\\mathbit{\\Omega}": "𝜴", + "\\mathbit{\\nabla}": "𝜵", + "\\mathbit{\\alpha}": "𝜶", + "\\mathbit{\\beta}": "𝜷", + "\\mathbit{\\gamma}": "𝜸", + "\\mathbit{\\delta}": "𝜹", + "\\mathbit{\\epsilon}": "𝜺", + "\\mathbit{\\zeta}": "𝜻", + "\\mathbit{\\eta}": "𝜼", + "\\mathbit{\\theta}": "𝜽", + "\\mathbit{\\imath}": "𝜾", + "\\mathbit{\\kappa}": "𝜿", + "\\mathbit{\\lambda}": "𝝀", + "\\mathbit{\\xi}": "𝝃", + "\\mathbit{\\pi}": "𝝅", + "\\mathbit{\\rho}": "𝝆", + "\\mathbit{\\varsigma}": "𝝇", + "\\mathbit{\\sigma}": "𝝈", + "\\mathbit{\\tau}": "𝝉", + "\\mathbit{\\upsilon}": "𝝊", + "\\mathbit{\\varphi}": "𝝋", + "\\mathbit{\\chi}": "𝝌", + "\\mathbit{\\psi}": "𝝍", + "\\mathbit{\\omega}": "𝝎", + "\\mathbit{\\vartheta}": "𝝑", + "\\mathbit{\\varkappa}": "𝝒", + "\\mathbit{\\phi}": "𝝓", + "\\mathbit{\\varrho}": "𝝔", + "\\mathbit{\\varpi}": "𝝕", + "\\mathsfbf{\\Gamma}": "𝝘", + "\\mathsfbf{\\Delta}": "𝝙", + "\\mathsfbf{\\Theta}": "𝝝", + "\\mathsfbf{\\Lambda}": "𝝠", + "\\mathsfbf{\\Xi}": "𝝣", + "\\mathsfbf{\\Pi}": "𝝥", + "\\mathsfbf{\\Sigma}": "𝝨", + "\\mathsfbf{\\Upsilon}": "𝝪", + "\\mathsfbf{\\Phi}": "𝝫", + "\\mathsfbf{\\Psi}": "𝝭", + "\\mathsfbf{\\Omega}": "𝝮", + "\\mathsfbf{\\nabla}": "𝝯", + "\\mathsfbf{\\alpha}": "𝝰", + "\\mathsfbf{\\beta}": "𝝱", + "\\mathsfbf{\\gamma}": "𝝲", + "\\mathsfbf{\\delta}": "𝝳", + "\\mathsfbf{\\varepsilon}": "𝝴", + "\\mathsfbf{\\zeta}": "𝝵", + "\\mathsfbf{\\eta}": "𝝶", + "\\mathsfbf{\\theta}": "𝝷", + "\\mathsfbf{\\imath}": "𝝸", + "\\mathsfbf{\\kappa}": "𝝹", + "\\mathsfbf{\\lambda}": "𝝺", + "\\mathsfbf{\\xi}": "𝝽", + "\\mathsfbf{\\pi}": "𝝿", + "\\mathsfbf{\\rho}": "𝞀", + "\\mathsfbf{\\varsigma}": "𝞁", + "\\mathsfbf{\\sigma}": "𝞂", + "\\mathsfbf{\\tau}": "𝞃", + "\\mathsfbf{\\upsilon}": "𝞄", + "\\mathsfbf{\\varphi}": "𝞅", + "\\mathsfbf{\\chi}": "𝞆", + "\\mathsfbf{\\psi}": "𝞇", + "\\mathsfbf{\\omega}": "𝞈", + "\\mathsfbf{\\vartheta}": "𝞋", + "\\mathsfbf{\\varkappa}": "𝞌", + "\\mathsfbf{\\phi}": "𝞍", + "\\mathsfbf{\\varrho}": "𝞎", + "\\mathsfbf{\\varpi}": "𝞏", + "\\mathsfbfsl{\\Gamma}": "𝞒", + "\\mathsfbfsl{\\Delta}": "𝞓", + "\\mathsfbfsl{\\Theta}": "𝞗", + "\\mathsfbfsl{\\Lambda}": "𝞚", + "\\mathsfbfsl{\\Xi}": "𝞝", + "\\mathsfbfsl{\\Pi}": "𝞟", + "\\mathsfbfsl{\\Sigma}": "𝞢", + "\\mathsfbfsl{\\Upsilon}": "𝞤", + "\\mathsfbfsl{\\Phi}": "𝞥", + "\\mathsfbfsl{\\Psi}": "𝞧", + "\\mathsfbfsl{\\Omega}": "𝞨", + "\\mathsfbfsl{\\nabla}": "𝞩", + "\\mathsfbfsl{\\alpha}": "𝞪", + "\\mathsfbfsl{\\beta}": "𝞫", + "\\mathsfbfsl{\\gamma}": "𝞬", + "\\mathsfbfsl{\\delta}": "𝞭", + "\\mathsfbfsl{\\varepsilon}": "𝞮", + "\\mathsfbfsl{\\zeta}": "𝞯", + "\\mathsfbfsl{\\eta}": "𝞰", + "\\mathsfbfsl{\\theta}": "𝞱", + "\\mathsfbfsl{\\imath}": "𝞲", + "\\mathsfbfsl{\\kappa}": "𝞳", + "\\mathsfbfsl{\\lambda}": "𝞴", + "\\mathsfbfsl{\\xi}": "𝞷", + "\\mathsfbfsl{\\pi}": "𝞹", + "\\mathsfbfsl{\\rho}": "𝞺", + "\\mathsfbfsl{\\varsigma}": "𝞻", + "\\mathsfbfsl{\\sigma}": "𝞼", + "\\mathsfbfsl{\\tau}": "𝞽", + "\\mathsfbfsl{\\upsilon}": "𝞾", + "\\mathsfbfsl{\\varphi}": "𝞿", + "\\mathsfbfsl{\\chi}": "𝟀", + "\\mathsfbfsl{\\psi}": "𝟁", + "\\mathsfbfsl{\\omega}": "𝟂", + "\\mathsfbfsl{\\vartheta}": "𝟅", + "\\mathsfbfsl{\\varkappa}": "𝟆", + "\\mathsfbfsl{\\phi}": "𝟇", + "\\mathsfbfsl{\\varrho}": "𝟈", + "\\mathsfbfsl{\\varpi}": "𝟉", + "\\mbfDigamma": "𝟊", + "\\mbfdigamma": "𝟋", + "\\mathbf{0}": "𝟎", + "\\mathbf{1}": "𝟏", + "\\mathbf{2}": "𝟐", + "\\mathbf{3}": "𝟑", + "\\mathbf{4}": "𝟒", + "\\mathbf{5}": "𝟓", + "\\mathbf{6}": "𝟔", + "\\mathbf{7}": "𝟕", + "\\mathbf{8}": "𝟖", + "\\mathbf{9}": "𝟗", + "\\mathbb{0}": "𝟘", + "\\mathbb{1}": "𝟙", + "\\mathbb{2}": "𝟚", + "\\mathbb{3}": "𝟛", + "\\mathbb{4}": "𝟜", + "\\mathbb{5}": "𝟝", + "\\mathbb{6}": "𝟞", + "\\mathbb{7}": "𝟟", + "\\mathbb{8}": "𝟠", + "\\mathbb{9}": "𝟡", + "\\mathsf{0}": "𝟢", + "\\mathsf{1}": "𝟣", + "\\mathsf{2}": "𝟤", + "\\mathsf{3}": "𝟥", + "\\mathsf{4}": "𝟦", + "\\mathsf{5}": "𝟧", + "\\mathsf{6}": "𝟨", + "\\mathsf{7}": "𝟩", + "\\mathsf{8}": "𝟪", + "\\mathsf{9}": "𝟫", + "\\mathsfbf{0}": "𝟬", + "\\mathsfbf{1}": "𝟭", + "\\mathsfbf{2}": "𝟮", + "\\mathsfbf{3}": "𝟯", + "\\mathsfbf{4}": "𝟰", + "\\mathsfbf{5}": "𝟱", + "\\mathsfbf{6}": "𝟲", + "\\mathsfbf{7}": "𝟳", + "\\mathsfbf{8}": "𝟴", + "\\mathsfbf{9}": "𝟵", + "\\mathtt{0}": "𝟶", + "\\mathtt{1}": "𝟷", + "\\mathtt{2}": "𝟸", + "\\mathtt{3}": "𝟹", + "\\mathtt{4}": "𝟺", + "\\mathtt{5}": "𝟻", + "\\mathtt{6}": "𝟼", + "\\mathtt{7}": "𝟽", + "\\mathtt{8}": "𝟾", + "\\mathtt{9}": "𝟿" +}; + +var commands = [ + "acute", + "bar", + "breve", + "c", + "d", + "ddot", + "dot", + "grave", + "hat", + "k", + "mathring", + "overline", + "r", + "textacutemacron", + "textacutewedge", + "textadvancing", + "textbrevemacron", + "textcircumdot", + "textcorner", + "textdotacute", + "textdotbreve", + "textdoublegrave", + "textdoublevbaraccent", + "textgravedot", + "textgravemacron", + "textinvsubbridge", + "textlowering", + "textovercross", + "textraising", + "textretracting", + "textringmacron", + "textseagull", + "textsubarch", + "textsubbar", + "textsubbridge", + "textsubgrave", + "textsublhalfring", + "textsubplus", + "textsubrhalfring", + "textsubring", + "textsubsquare", + "textsubtilde", + "textsubumlaut", + "textsubwedge", + "textsuperimposetilde", + "textsyllabic", + "texttildedot", + "textvbaraccent", + "tilde", + "u", + "underbar", + "v" +]; +var tolatex = { + "̀": { + command: "`", + mode: "text" + }, + "̀̄": { + command: "textgravemacron", + mode: "text" + }, + "̀̇": { + command: "textgravedot", + mode: "text" + }, + "́": { + command: "'", + mode: "text" + }, + "́̄": { + command: "textacutemacron", + mode: "text" + }, + "́̇": { + command: "textdotacute", + mode: "text" + }, + "́̌": { + command: "textacutewedge", + mode: "text" + }, + "̂": { + command: "^", + mode: "text" + }, + "̂̇": { + command: "textcircumdot", + mode: "text" + }, + "̃": { + command: "~", + mode: "text" + }, + "̃̇": { + command: "texttildedot", + mode: "text" + }, + "̄": { + command: "=", + mode: "text" + }, + "̄̀": { + command: "textgravemacron", + mode: "text" + }, + "̄́": { + command: "textacutemacron", + mode: "text" + }, + "̄̆": { + command: "textbrevemacron", + mode: "text" + }, + "̄̊": { + command: "textringmacron", + mode: "text" + }, + "̅": { + command: "overline", + mode: "math" + }, + "̆": { + command: "u", + mode: "text" + }, + "̆̄": { + command: "textbrevemacron", + mode: "text" + }, + "̆̇": { + command: "textdotbreve", + mode: "text" + }, + "̇": { + command: ".", + mode: "text" + }, + "̇̀": { + command: "textgravedot", + mode: "text" + }, + "̇́": { + command: "textdotacute", + mode: "text" + }, + "̇̂": { + command: "textcircumdot", + mode: "text" + }, + "̇̃": { + command: "texttildedot", + mode: "text" + }, + "̇̆": { + command: "textdotbreve", + mode: "text" + }, + "̈": { + command: "\"", + mode: "text" + }, + "̊": { + command: "r", + mode: "text" + }, + "̊̄": { + command: "textringmacron", + mode: "text" + }, + "̋": { + command: "H", + mode: "text" + }, + "̌": { + command: "v", + mode: "text" + }, + "̌́": { + command: "textacutewedge", + mode: "text" + }, + "̍": { + command: "textvbaraccent", + mode: "text" + }, + "̎": { + command: "textdoublevbaraccent", + mode: "text" + }, + "̏": { + command: "textdoublegrave", + mode: "text" + }, + "̐": { + command: "textdotbreve", + mode: "text" + }, + "̖": { + command: "textsubgrave", + mode: "text" + }, + "̘": { + command: "textadvancing", + mode: "text" + }, + "̙": { + command: "textretracting", + mode: "text" + }, + "̚": { + command: "textcorner", + mode: "text" + }, + "̜": { + command: "textsublhalfring", + mode: "text" + }, + "̝": { + command: "textraising", + mode: "text" + }, + "̞": { + command: "textlowering", + mode: "text" + }, + "̟": { + command: "textsubplus", + mode: "text" + }, + "̣": { + command: "d", + mode: "text" + }, + "̤": { + command: "textsubumlaut", + mode: "text" + }, + "̥": { + command: "textsubring", + mode: "text" + }, + "̧": { + command: "c", + mode: "text" + }, + "̨": { + command: "k", + mode: "text" + }, + "̩": { + command: "textsyllabic", + mode: "text" + }, + "̪": { + command: "textsubbridge", + mode: "text" + }, + "̬": { + command: "textsubwedge", + mode: "text" + }, + "̯": { + command: "textsubarch", + mode: "text" + }, + "̰": { + command: "textsubtilde", + mode: "text" + }, + "̱": { + command: "textsubbar", + mode: "text" + }, + "̴": { + command: "textsuperimposetilde", + mode: "text" + }, + "̹": { + command: "textsubrhalfring", + mode: "text" + }, + "̺": { + command: "textinvsubbridge", + mode: "text" + }, + "̻": { + command: "textsubsquare", + mode: "text" + }, + "̼": { + command: "textseagull", + mode: "text" + }, + "̽": { + command: "textovercross", + mode: "text" + } +}; +var tounicode = { + "\"": "̈", + "'": "́", + ".": "̇", + "=": "̄", + H: "̋", + "^": "̂", + "`": "̀", + acute: "́", + bar: "̄", + breve: "̆", + c: "̧", + d: "̣", + ddot: "̈", + dot: "̇", + grave: "̀", + hat: "̂", + k: "̨", + mathring: "̊", + overline: "̅", + r: "̊", + textacutemacron: "̄́", + textacutewedge: "̌́", + textadvancing: "̘", + textbrevemacron: "̄̆", + textcircumdot: "̇̂", + textcorner: "̚", + textdotacute: "́̇", + textdotbreve: "̐", + textdoublegrave: "̏", + textdoublevbaraccent: "̎", + textgravedot: "̇̀", + textgravemacron: "̀̄", + textinvsubbridge: "̺", + textlowering: "̞", + textovercross: "̽", + textraising: "̝", + textretracting: "̙", + textringmacron: "̄̊", + textseagull: "̼", + textsubarch: "̯", + textsubbar: "̱", + textsubbridge: "̪", + textsubgrave: "̖", + textsublhalfring: "̜", + textsubplus: "̟", + textsubrhalfring: "̹", + textsubring: "̥", + textsubsquare: "̻", + textsubtilde: "̰", + textsubumlaut: "̤", + textsubwedge: "̬", + textsuperimposetilde: "̴", + textsyllabic: "̩", + texttildedot: "̇̃", + textvbaraccent: "̍", + tilde: "̃", + u: "̆", + underbar: "̱", + v: "̌", + "~": "̃" +}; +var require$$4 = { + commands: commands, + tolatex: tolatex, + tounicode: tounicode +}; + +var unicode2latex = { + ascii: require$$0$1, + ascii_bibtex_creator: require$$1, + unicode: require$$2, + latex: require$$3, + diacritics: require$$4, +}; + +var categories = [ + { + 'name': 'C', + 'alias': 'Other', + 'isBmpLast': true, + 'bmp': '\0-\x1F\x7F-\x9F\xAD\u0378\u0379\u0380-\u0383\u038B\u038D\u03A2\u0530\u0557\u0558\u058B\u058C\u0590\u05C8-\u05CF\u05EB-\u05EE\u05F5-\u0605\u061C\u061D\u06DD\u070E\u070F\u074B\u074C\u07B2-\u07BF\u07FB\u07FC\u082E\u082F\u083F\u085C\u085D\u085F\u086B-\u089F\u08B5\u08C8-\u08D2\u08E2\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09FF\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A77-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF2-\u0AF8\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B54\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B78-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BFB-\u0BFF\u0C0D\u0C11\u0C29\u0C3A-\u0C3C\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5B-\u0C5F\u0C64\u0C65\u0C70-\u0C76\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDD\u0CDF\u0CE4\u0CE5\u0CF0\u0CF3-\u0CFF\u0D0D\u0D11\u0D45\u0D49\u0D50-\u0D53\u0D64\u0D65\u0D80\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DE5\u0DF0\u0DF1\u0DF5-\u0E00\u0E3B-\u0E3E\u0E5C-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EBE\u0EBF\u0EC5\u0EC7\u0ECE\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F48\u0F6D-\u0F70\u0F98\u0FBD\u0FCD\u0FDB-\u0FFF\u10C6\u10C8-\u10CC\u10CE\u10CF\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u137D-\u137F\u139A-\u139F\u13F6\u13F7\u13FE\u13FF\u169D-\u169F\u16F9-\u16FF\u170D\u1715-\u171F\u1737-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17DE\u17DF\u17EA-\u17EF\u17FA-\u17FF\u180E\u180F\u181A-\u181F\u1879-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191F\u192C-\u192F\u193C-\u193F\u1941-\u1943\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DB-\u19DD\u1A1C\u1A1D\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1A9F\u1AAE\u1AAF\u1AC1-\u1AFF\u1B4C-\u1B4F\u1B7D-\u1B7F\u1BF4-\u1BFB\u1C38-\u1C3A\u1C4A-\u1C4C\u1C89-\u1C8F\u1CBB\u1CBC\u1CC8-\u1CCF\u1CFB-\u1CFF\u1DFA\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FC5\u1FD4\u1FD5\u1FDC\u1FF0\u1FF1\u1FF5\u1FFF\u200B-\u200F\u202A-\u202E\u2060-\u206F\u2072\u2073\u208F\u209D-\u209F\u20C0-\u20CF\u20F1-\u20FF\u218C-\u218F\u2427-\u243F\u244B-\u245F\u2B74\u2B75\u2B96\u2C2F\u2C5F\u2CF4-\u2CF8\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D71-\u2D7E\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF\u2E53-\u2E7F\u2E9A\u2EF4-\u2EFF\u2FD6-\u2FEF\u2FFC-\u2FFF\u3040\u3097\u3098\u3100-\u3104\u3130\u318F\u31E4-\u31EF\u321F\u9FFD-\u9FFF\uA48D-\uA48F\uA4C7-\uA4CF\uA62C-\uA63F\uA6F8-\uA6FF\uA7C0\uA7C1\uA7CB-\uA7F4\uA82D-\uA82F\uA83A-\uA83F\uA878-\uA87F\uA8C6-\uA8CD\uA8DA-\uA8DF\uA954-\uA95E\uA97D-\uA97F\uA9CE\uA9DA-\uA9DD\uA9FF\uAA37-\uAA3F\uAA4E\uAA4F\uAA5A\uAA5B\uAAC3-\uAADA\uAAF7-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB6C-\uAB6F\uABEE\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBC2-\uFBD2\uFD40-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFE\uFDFF\uFE1A-\uFE1F\uFE53\uFE67\uFE6C-\uFE6F\uFE75\uFEFD-\uFF00\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFDF\uFFE7\uFFEF-\uFFFB\uFFFE\uFFFF', + 'astral': '\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDCFF\uDD03-\uDD06\uDD34-\uDD36\uDD8F\uDD9D-\uDD9F\uDDA1-\uDDCF\uDDFE-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEDF\uDEFC-\uDEFF\uDF24-\uDF2C\uDF4B-\uDF4F\uDF7B-\uDF7F\uDF9E\uDFC4-\uDFC7\uDFD6-\uDFFF]|\uD801[\uDC9E\uDC9F\uDCAA-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDD6E\uDD70-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56\uDC9F-\uDCA6\uDCB0-\uDCDF\uDCF3\uDCF6-\uDCFA\uDD1C-\uDD1E\uDD3A-\uDD3E\uDD40-\uDD7F\uDDB8-\uDDBB\uDDD0\uDDD1\uDE04\uDE07-\uDE0B\uDE14\uDE18\uDE36\uDE37\uDE3B-\uDE3E\uDE49-\uDE4F\uDE59-\uDE5F\uDEA0-\uDEBF\uDEE7-\uDEEA\uDEF7-\uDEFF\uDF36-\uDF38\uDF56\uDF57\uDF73-\uDF77\uDF92-\uDF98\uDF9D-\uDFA8\uDFB0-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCF9\uDD28-\uDD2F\uDD3A-\uDE5F\uDE7F\uDEAA\uDEAE\uDEAF\uDEB2-\uDEFF\uDF28-\uDF2F\uDF5A-\uDFAF\uDFCC-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC4E-\uDC51\uDC70-\uDC7E\uDCBD\uDCC2-\uDCCF\uDCE9-\uDCEF\uDCFA-\uDCFF\uDD35\uDD48-\uDD4F\uDD77-\uDD7F\uDDE0\uDDF5-\uDDFF\uDE12\uDE3F-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEAA-\uDEAF\uDEEB-\uDEEF\uDEFA-\uDEFF\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A\uDF45\uDF46\uDF49\uDF4A\uDF4E\uDF4F\uDF51-\uDF56\uDF58-\uDF5C\uDF64\uDF65\uDF6D-\uDF6F\uDF75-\uDFFF]|\uD805[\uDC5C\uDC62-\uDC7F\uDCC8-\uDCCF\uDCDA-\uDD7F\uDDB6\uDDB7\uDDDE-\uDDFF\uDE45-\uDE4F\uDE5A-\uDE5F\uDE6D-\uDE7F\uDEB9-\uDEBF\uDECA-\uDEFF\uDF1B\uDF1C\uDF2C-\uDF2F\uDF40-\uDFFF]|\uD806[\uDC3C-\uDC9F\uDCF3-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD36\uDD39\uDD3A\uDD47-\uDD4F\uDD5A-\uDD9F\uDDA8\uDDA9\uDDD8\uDDD9\uDDE5-\uDDFF\uDE48-\uDE4F\uDEA3-\uDEBF\uDEF9-\uDFFF]|\uD807[\uDC09\uDC37\uDC46-\uDC4F\uDC6D-\uDC6F\uDC90\uDC91\uDCA8\uDCB7-\uDCFF\uDD07\uDD0A\uDD37-\uDD39\uDD3B\uDD3E\uDD48-\uDD4F\uDD5A-\uDD5F\uDD66\uDD69\uDD8F\uDD92\uDD99-\uDD9F\uDDAA-\uDEDF\uDEF9-\uDFAF\uDFB1-\uDFBF\uDFF2-\uDFFE]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC6F\uDC75-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD80B\uD80E-\uD810\uD812-\uD819\uD824-\uD82B\uD82D\uD82E\uD830-\uD833\uD837\uD839\uD83F\uD87B-\uD87D\uD87F\uD885-\uDB3F\uDB41-\uDBFF][\uDC00-\uDFFF]|\uD80D[\uDC2F-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F\uDE6A-\uDE6D\uDE70-\uDECF\uDEEE\uDEEF\uDEF6-\uDEFF\uDF46-\uDF4F\uDF5A\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDE3F\uDE9B-\uDEFF\uDF4B-\uDF4E\uDF88-\uDF8E\uDFA0-\uDFDF\uDFE5-\uDFEF\uDFF2-\uDFFF]|\uD821[\uDFF8-\uDFFF]|\uD823[\uDCD6-\uDCFF\uDD09-\uDFFF]|\uD82C[\uDD1F-\uDD4F\uDD53-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A\uDC9B\uDCA0-\uDFFF]|\uD834[\uDCF6-\uDCFF\uDD27\uDD28\uDD73-\uDD7A\uDDE9-\uDDFF\uDE46-\uDEDF\uDEF4-\uDEFF\uDF57-\uDF5F\uDF79-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDFCC\uDFCD]|\uD836[\uDE8C-\uDE9A\uDEA0\uDEB0-\uDFFF]|\uD838[\uDC07\uDC19\uDC1A\uDC22\uDC25\uDC2B-\uDCFF\uDD2D-\uDD2F\uDD3E\uDD3F\uDD4A-\uDD4D\uDD50-\uDEBF\uDEFA-\uDEFE\uDF00-\uDFFF]|\uD83A[\uDCC5\uDCC6\uDCD7-\uDCFF\uDD4C-\uDD4F\uDD5A-\uDD5D\uDD60-\uDFFF]|\uD83B[\uDC00-\uDC70\uDCB5-\uDD00\uDD3E-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDEEF\uDEF2-\uDFFF]|\uD83C[\uDC2C-\uDC2F\uDC94-\uDC9F\uDCAF\uDCB0\uDCC0\uDCD0\uDCF6-\uDCFF\uDDAE-\uDDE5\uDE03-\uDE0F\uDE3C-\uDE3F\uDE49-\uDE4F\uDE52-\uDE5F\uDE66-\uDEFF]|\uD83D[\uDED8-\uDEDF\uDEED-\uDEEF\uDEFD-\uDEFF\uDF74-\uDF7F\uDFD9-\uDFDF\uDFEC-\uDFFF]|\uD83E[\uDC0C-\uDC0F\uDC48-\uDC4F\uDC5A-\uDC5F\uDC88-\uDC8F\uDCAE\uDCAF\uDCB2-\uDCFF\uDD79\uDDCC\uDE54-\uDE5F\uDE6E\uDE6F\uDE75-\uDE77\uDE7B-\uDE7F\uDE87-\uDE8F\uDEA9-\uDEAF\uDEB7-\uDEBF\uDEC3-\uDECF\uDED7-\uDEFF\uDF93\uDFCB-\uDFEF\uDFFA-\uDFFF]|\uD869[\uDEDE-\uDEFF]|\uD86D[\uDF35-\uDF3F]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEA2-\uDEAF]|\uD87A[\uDFE1-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDFFF]|\uDB40[\uDC00-\uDCFF\uDDF0-\uDFFF]' + }, + { + 'name': 'Cc', + 'alias': 'Control', + 'bmp': '\0-\x1F\x7F-\x9F' + }, + { + 'name': 'Cf', + 'alias': 'Format', + 'bmp': '\xAD\u0600-\u0605\u061C\u06DD\u070F\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB', + 'astral': '\uD804[\uDCBD\uDCCD]|\uD80D[\uDC30-\uDC38]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]' + }, + { + 'name': 'Cn', + 'alias': 'Unassigned', + 'bmp': '\u0378\u0379\u0380-\u0383\u038B\u038D\u03A2\u0530\u0557\u0558\u058B\u058C\u0590\u05C8-\u05CF\u05EB-\u05EE\u05F5-\u05FF\u061D\u070E\u074B\u074C\u07B2-\u07BF\u07FB\u07FC\u082E\u082F\u083F\u085C\u085D\u085F\u086B-\u089F\u08B5\u08C8-\u08D2\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09FF\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A77-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF2-\u0AF8\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B54\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B78-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BFB-\u0BFF\u0C0D\u0C11\u0C29\u0C3A-\u0C3C\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5B-\u0C5F\u0C64\u0C65\u0C70-\u0C76\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDD\u0CDF\u0CE4\u0CE5\u0CF0\u0CF3-\u0CFF\u0D0D\u0D11\u0D45\u0D49\u0D50-\u0D53\u0D64\u0D65\u0D80\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DE5\u0DF0\u0DF1\u0DF5-\u0E00\u0E3B-\u0E3E\u0E5C-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EBE\u0EBF\u0EC5\u0EC7\u0ECE\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F48\u0F6D-\u0F70\u0F98\u0FBD\u0FCD\u0FDB-\u0FFF\u10C6\u10C8-\u10CC\u10CE\u10CF\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u137D-\u137F\u139A-\u139F\u13F6\u13F7\u13FE\u13FF\u169D-\u169F\u16F9-\u16FF\u170D\u1715-\u171F\u1737-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17DE\u17DF\u17EA-\u17EF\u17FA-\u17FF\u180F\u181A-\u181F\u1879-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191F\u192C-\u192F\u193C-\u193F\u1941-\u1943\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DB-\u19DD\u1A1C\u1A1D\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1A9F\u1AAE\u1AAF\u1AC1-\u1AFF\u1B4C-\u1B4F\u1B7D-\u1B7F\u1BF4-\u1BFB\u1C38-\u1C3A\u1C4A-\u1C4C\u1C89-\u1C8F\u1CBB\u1CBC\u1CC8-\u1CCF\u1CFB-\u1CFF\u1DFA\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FC5\u1FD4\u1FD5\u1FDC\u1FF0\u1FF1\u1FF5\u1FFF\u2065\u2072\u2073\u208F\u209D-\u209F\u20C0-\u20CF\u20F1-\u20FF\u218C-\u218F\u2427-\u243F\u244B-\u245F\u2B74\u2B75\u2B96\u2C2F\u2C5F\u2CF4-\u2CF8\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D71-\u2D7E\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF\u2E53-\u2E7F\u2E9A\u2EF4-\u2EFF\u2FD6-\u2FEF\u2FFC-\u2FFF\u3040\u3097\u3098\u3100-\u3104\u3130\u318F\u31E4-\u31EF\u321F\u9FFD-\u9FFF\uA48D-\uA48F\uA4C7-\uA4CF\uA62C-\uA63F\uA6F8-\uA6FF\uA7C0\uA7C1\uA7CB-\uA7F4\uA82D-\uA82F\uA83A-\uA83F\uA878-\uA87F\uA8C6-\uA8CD\uA8DA-\uA8DF\uA954-\uA95E\uA97D-\uA97F\uA9CE\uA9DA-\uA9DD\uA9FF\uAA37-\uAA3F\uAA4E\uAA4F\uAA5A\uAA5B\uAAC3-\uAADA\uAAF7-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB6C-\uAB6F\uABEE\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uD7FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBC2-\uFBD2\uFD40-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFE\uFDFF\uFE1A-\uFE1F\uFE53\uFE67\uFE6C-\uFE6F\uFE75\uFEFD\uFEFE\uFF00\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFDF\uFFE7\uFFEF-\uFFF8\uFFFE\uFFFF', + 'astral': '\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDCFF\uDD03-\uDD06\uDD34-\uDD36\uDD8F\uDD9D-\uDD9F\uDDA1-\uDDCF\uDDFE-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEDF\uDEFC-\uDEFF\uDF24-\uDF2C\uDF4B-\uDF4F\uDF7B-\uDF7F\uDF9E\uDFC4-\uDFC7\uDFD6-\uDFFF]|\uD801[\uDC9E\uDC9F\uDCAA-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDD6E\uDD70-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56\uDC9F-\uDCA6\uDCB0-\uDCDF\uDCF3\uDCF6-\uDCFA\uDD1C-\uDD1E\uDD3A-\uDD3E\uDD40-\uDD7F\uDDB8-\uDDBB\uDDD0\uDDD1\uDE04\uDE07-\uDE0B\uDE14\uDE18\uDE36\uDE37\uDE3B-\uDE3E\uDE49-\uDE4F\uDE59-\uDE5F\uDEA0-\uDEBF\uDEE7-\uDEEA\uDEF7-\uDEFF\uDF36-\uDF38\uDF56\uDF57\uDF73-\uDF77\uDF92-\uDF98\uDF9D-\uDFA8\uDFB0-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCF9\uDD28-\uDD2F\uDD3A-\uDE5F\uDE7F\uDEAA\uDEAE\uDEAF\uDEB2-\uDEFF\uDF28-\uDF2F\uDF5A-\uDFAF\uDFCC-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC4E-\uDC51\uDC70-\uDC7E\uDCC2-\uDCCC\uDCCE\uDCCF\uDCE9-\uDCEF\uDCFA-\uDCFF\uDD35\uDD48-\uDD4F\uDD77-\uDD7F\uDDE0\uDDF5-\uDDFF\uDE12\uDE3F-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEAA-\uDEAF\uDEEB-\uDEEF\uDEFA-\uDEFF\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A\uDF45\uDF46\uDF49\uDF4A\uDF4E\uDF4F\uDF51-\uDF56\uDF58-\uDF5C\uDF64\uDF65\uDF6D-\uDF6F\uDF75-\uDFFF]|\uD805[\uDC5C\uDC62-\uDC7F\uDCC8-\uDCCF\uDCDA-\uDD7F\uDDB6\uDDB7\uDDDE-\uDDFF\uDE45-\uDE4F\uDE5A-\uDE5F\uDE6D-\uDE7F\uDEB9-\uDEBF\uDECA-\uDEFF\uDF1B\uDF1C\uDF2C-\uDF2F\uDF40-\uDFFF]|\uD806[\uDC3C-\uDC9F\uDCF3-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD36\uDD39\uDD3A\uDD47-\uDD4F\uDD5A-\uDD9F\uDDA8\uDDA9\uDDD8\uDDD9\uDDE5-\uDDFF\uDE48-\uDE4F\uDEA3-\uDEBF\uDEF9-\uDFFF]|\uD807[\uDC09\uDC37\uDC46-\uDC4F\uDC6D-\uDC6F\uDC90\uDC91\uDCA8\uDCB7-\uDCFF\uDD07\uDD0A\uDD37-\uDD39\uDD3B\uDD3E\uDD48-\uDD4F\uDD5A-\uDD5F\uDD66\uDD69\uDD8F\uDD92\uDD99-\uDD9F\uDDAA-\uDEDF\uDEF9-\uDFAF\uDFB1-\uDFBF\uDFF2-\uDFFE]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC6F\uDC75-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD80B\uD80E-\uD810\uD812-\uD819\uD824-\uD82B\uD82D\uD82E\uD830-\uD833\uD837\uD839\uD83F\uD87B-\uD87D\uD87F\uD885-\uDB3F\uDB41-\uDB7F][\uDC00-\uDFFF]|\uD80D[\uDC2F\uDC39-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F\uDE6A-\uDE6D\uDE70-\uDECF\uDEEE\uDEEF\uDEF6-\uDEFF\uDF46-\uDF4F\uDF5A\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDE3F\uDE9B-\uDEFF\uDF4B-\uDF4E\uDF88-\uDF8E\uDFA0-\uDFDF\uDFE5-\uDFEF\uDFF2-\uDFFF]|\uD821[\uDFF8-\uDFFF]|\uD823[\uDCD6-\uDCFF\uDD09-\uDFFF]|\uD82C[\uDD1F-\uDD4F\uDD53-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A\uDC9B\uDCA4-\uDFFF]|\uD834[\uDCF6-\uDCFF\uDD27\uDD28\uDDE9-\uDDFF\uDE46-\uDEDF\uDEF4-\uDEFF\uDF57-\uDF5F\uDF79-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDFCC\uDFCD]|\uD836[\uDE8C-\uDE9A\uDEA0\uDEB0-\uDFFF]|\uD838[\uDC07\uDC19\uDC1A\uDC22\uDC25\uDC2B-\uDCFF\uDD2D-\uDD2F\uDD3E\uDD3F\uDD4A-\uDD4D\uDD50-\uDEBF\uDEFA-\uDEFE\uDF00-\uDFFF]|\uD83A[\uDCC5\uDCC6\uDCD7-\uDCFF\uDD4C-\uDD4F\uDD5A-\uDD5D\uDD60-\uDFFF]|\uD83B[\uDC00-\uDC70\uDCB5-\uDD00\uDD3E-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDEEF\uDEF2-\uDFFF]|\uD83C[\uDC2C-\uDC2F\uDC94-\uDC9F\uDCAF\uDCB0\uDCC0\uDCD0\uDCF6-\uDCFF\uDDAE-\uDDE5\uDE03-\uDE0F\uDE3C-\uDE3F\uDE49-\uDE4F\uDE52-\uDE5F\uDE66-\uDEFF]|\uD83D[\uDED8-\uDEDF\uDEED-\uDEEF\uDEFD-\uDEFF\uDF74-\uDF7F\uDFD9-\uDFDF\uDFEC-\uDFFF]|\uD83E[\uDC0C-\uDC0F\uDC48-\uDC4F\uDC5A-\uDC5F\uDC88-\uDC8F\uDCAE\uDCAF\uDCB2-\uDCFF\uDD79\uDDCC\uDE54-\uDE5F\uDE6E\uDE6F\uDE75-\uDE77\uDE7B-\uDE7F\uDE87-\uDE8F\uDEA9-\uDEAF\uDEB7-\uDEBF\uDEC3-\uDECF\uDED7-\uDEFF\uDF93\uDFCB-\uDFEF\uDFFA-\uDFFF]|\uD869[\uDEDE-\uDEFF]|\uD86D[\uDF35-\uDF3F]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEA2-\uDEAF]|\uD87A[\uDFE1-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDFFF]|\uDB40[\uDC00\uDC02-\uDC1F\uDC80-\uDCFF\uDDF0-\uDFFF]|[\uDBBF\uDBFF][\uDFFE\uDFFF]' + }, + { + 'name': 'Co', + 'alias': 'Private_Use', + 'bmp': '\uE000-\uF8FF', + 'astral': '[\uDB80-\uDBBE\uDBC0-\uDBFE][\uDC00-\uDFFF]|[\uDBBF\uDBFF][\uDC00-\uDFFD]' + }, + { + 'name': 'Cs', + 'alias': 'Surrogate', + 'bmp': '\uD800-\uDFFF' + }, + { + 'name': 'L', + 'alias': 'Letter', + 'bmp': 'A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08C7\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\u9FFC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7BF\uA7C2-\uA7CA\uA7F5-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC', + 'astral': '\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82C[\uDC00-\uDD1E\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDEC0-\uDEEB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDD\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A]' + }, + { + 'name': 'LC', + 'alias': 'Cased_Letter', + 'bmp': 'A-Za-z\xB5\xC0-\xD6\xD8-\xF6\xF8-\u01BA\u01BC-\u01BF\u01C4-\u0293\u0295-\u02AF\u0370-\u0373\u0376\u0377\u037B-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0560-\u0588\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FD-\u10FF\u13A0-\u13F5\u13F8-\u13FD\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1D00-\u1D2B\u1D6B-\u1D77\u1D79-\u1D9A\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2134\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2C7B\u2C7E-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA640-\uA66D\uA680-\uA69B\uA722-\uA76F\uA771-\uA787\uA78B-\uA78E\uA790-\uA7BF\uA7C2-\uA7CA\uA7F5\uA7F6\uA7FA\uAB30-\uAB5A\uAB60-\uAB68\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF21-\uFF3A\uFF41-\uFF5A', + 'astral': '\uD801[\uDC00-\uDC4F\uDCB0-\uDCD3\uDCD8-\uDCFB]|\uD803[\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD806[\uDCA0-\uDCDF]|\uD81B[\uDE40-\uDE7F]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDD00-\uDD43]' + }, + { + 'name': 'Ll', + 'alias': 'Lowercase_Letter', + 'bmp': 'a-z\xB5\xDF-\xF6\xF8-\xFF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02AF\u0371\u0373\u0377\u037B-\u037D\u0390\u03AC-\u03CE\u03D0\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0560-\u0588\u10D0-\u10FA\u10FD-\u10FF\u13F8-\u13FD\u1C80-\u1C88\u1D00-\u1D2B\u1D6B-\u1D77\u1D79-\u1D9A\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6\u1FC7\u1FD0-\u1FD3\u1FD6\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6\u1FF7\u210A\u210E\u210F\u2113\u212F\u2134\u2139\u213C\u213D\u2146-\u2149\u214E\u2184\u2C30-\u2C5E\u2C61\u2C65\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73\u2C74\u2C76-\u2C7B\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3\u2CE4\u2CEC\u2CEE\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA771-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uA78E\uA791\uA793-\uA795\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7AF\uA7B5\uA7B7\uA7B9\uA7BB\uA7BD\uA7BF\uA7C3\uA7C8\uA7CA\uA7F6\uA7FA\uAB30-\uAB5A\uAB60-\uAB68\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A', + 'astral': '\uD801[\uDC28-\uDC4F\uDCD8-\uDCFB]|\uD803[\uDCC0-\uDCF2]|\uD806[\uDCC0-\uDCDF]|\uD81B[\uDE60-\uDE7F]|\uD835[\uDC1A-\uDC33\uDC4E-\uDC54\uDC56-\uDC67\uDC82-\uDC9B\uDCB6-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDCEA-\uDD03\uDD1E-\uDD37\uDD52-\uDD6B\uDD86-\uDD9F\uDDBA-\uDDD3\uDDEE-\uDE07\uDE22-\uDE3B\uDE56-\uDE6F\uDE8A-\uDEA5\uDEC2-\uDEDA\uDEDC-\uDEE1\uDEFC-\uDF14\uDF16-\uDF1B\uDF36-\uDF4E\uDF50-\uDF55\uDF70-\uDF88\uDF8A-\uDF8F\uDFAA-\uDFC2\uDFC4-\uDFC9\uDFCB]|\uD83A[\uDD22-\uDD43]' + }, + { + 'name': 'Lm', + 'alias': 'Modifier_Letter', + 'bmp': '\u02B0-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0374\u037A\u0559\u0640\u06E5\u06E6\u07F4\u07F5\u07FA\u081A\u0824\u0828\u0971\u0E46\u0EC6\u10FC\u17D7\u1843\u1AA7\u1C78-\u1C7D\u1D2C-\u1D6A\u1D78\u1D9B-\u1DBF\u2071\u207F\u2090-\u209C\u2C7C\u2C7D\u2D6F\u2E2F\u3005\u3031-\u3035\u303B\u309D\u309E\u30FC-\u30FE\uA015\uA4F8-\uA4FD\uA60C\uA67F\uA69C\uA69D\uA717-\uA71F\uA770\uA788\uA7F8\uA7F9\uA9CF\uA9E6\uAA70\uAADD\uAAF3\uAAF4\uAB5C-\uAB5F\uAB69\uFF70\uFF9E\uFF9F', + 'astral': '\uD81A[\uDF40-\uDF43]|\uD81B[\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD838[\uDD37-\uDD3D]|\uD83A\uDD4B' + }, + { + 'name': 'Lo', + 'alias': 'Other_Letter', + 'bmp': '\xAA\xBA\u01BB\u01C0-\u01C3\u0294\u05D0-\u05EA\u05EF-\u05F2\u0620-\u063F\u0641-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u0800-\u0815\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08C7\u0904-\u0939\u093D\u0950\u0958-\u0961\u0972-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E45\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1100-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17DC\u1820-\u1842\u1844-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C77\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u2135-\u2138\u2D30-\u2D67\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3006\u303C\u3041-\u3096\u309F\u30A1-\u30FA\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\u9FFC\uA000-\uA014\uA016-\uA48C\uA4D0-\uA4F7\uA500-\uA60B\uA610-\uA61F\uA62A\uA62B\uA66E\uA6A0-\uA6E5\uA78F\uA7F7\uA7FB-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9E0-\uA9E4\uA9E7-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA6F\uAA71-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB\uAADC\uAAE0-\uAAEA\uAAF2\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF66-\uFF6F\uFF71-\uFF9D\uFFA0-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC', + 'astral': '\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC50-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A]|\uD806[\uDC00-\uDC2B\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF4A\uDF50]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82C[\uDC00-\uDD1E\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD838[\uDD00-\uDD2C\uDD4E\uDEC0-\uDEEB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDD\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A]' + }, + { + 'name': 'Lt', + 'alias': 'Titlecase_Letter', + 'bmp': '\u01C5\u01C8\u01CB\u01F2\u1F88-\u1F8F\u1F98-\u1F9F\u1FA8-\u1FAF\u1FBC\u1FCC\u1FFC' + }, + { + 'name': 'Lu', + 'alias': 'Uppercase_Letter', + 'bmp': 'A-Z\xC0-\xD6\xD8-\xDE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178\u0179\u017B\u017D\u0181\u0182\u0184\u0186\u0187\u0189-\u018B\u018E-\u0191\u0193\u0194\u0196-\u0198\u019C\u019D\u019F\u01A0\u01A2\u01A4\u01A6\u01A7\u01A9\u01AC\u01AE\u01AF\u01B1-\u01B3\u01B5\u01B7\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A\u023B\u023D\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u037F\u0386\u0388-\u038A\u038C\u038E\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u13A0-\u13F5\u1C90-\u1CBA\u1CBD-\u1CBF\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E\u213F\u2145\u2183\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA-\uA7AE\uA7B0-\uA7B4\uA7B6\uA7B8\uA7BA\uA7BC\uA7BE\uA7C2\uA7C4-\uA7C7\uA7C9\uA7F5\uFF21-\uFF3A', + 'astral': '\uD801[\uDC00-\uDC27\uDCB0-\uDCD3]|\uD803[\uDC80-\uDCB2]|\uD806[\uDCA0-\uDCBF]|\uD81B[\uDE40-\uDE5F]|\uD835[\uDC00-\uDC19\uDC34-\uDC4D\uDC68-\uDC81\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB5\uDCD0-\uDCE9\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD38\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD6C-\uDD85\uDDA0-\uDDB9\uDDD4-\uDDED\uDE08-\uDE21\uDE3C-\uDE55\uDE70-\uDE89\uDEA8-\uDEC0\uDEE2-\uDEFA\uDF1C-\uDF34\uDF56-\uDF6E\uDF90-\uDFA8\uDFCA]|\uD83A[\uDD00-\uDD21]' + }, + { + 'name': 'M', + 'alias': 'Mark', + 'bmp': '\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09FE\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B55-\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C04\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D81-\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u192B\u1930-\u193B\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1AC0\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA82C\uA880\uA881\uA8B4-\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F', + 'astral': '\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD803[\uDD24-\uDD27\uDEAB\uDEAC\uDF46-\uDF50]|\uD804[\uDC00-\uDC02\uDC38-\uDC46\uDC7F-\uDC82\uDCB0-\uDCBA\uDD00-\uDD02\uDD27-\uDD34\uDD45\uDD46\uDD73\uDD80-\uDD82\uDDB3-\uDDC0\uDDC9-\uDDCC\uDDCE\uDDCF\uDE2C-\uDE37\uDE3E\uDEDF-\uDEEA\uDF00-\uDF03\uDF3B\uDF3C\uDF3E-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC35-\uDC46\uDC5E\uDCB0-\uDCC3\uDDAF-\uDDB5\uDDB8-\uDDC0\uDDDC\uDDDD\uDE30-\uDE40\uDEAB-\uDEB7\uDF1D-\uDF2B]|\uD806[\uDC2C-\uDC3A\uDD30-\uDD35\uDD37\uDD38\uDD3B-\uDD3E\uDD40\uDD42\uDD43\uDDD1-\uDDD7\uDDDA-\uDDE0\uDDE4\uDE01-\uDE0A\uDE33-\uDE39\uDE3B-\uDE3E\uDE47\uDE51-\uDE5B\uDE8A-\uDE99]|\uD807[\uDC2F-\uDC36\uDC38-\uDC3F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD31-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD45\uDD47\uDD8A-\uDD8E\uDD90\uDD91\uDD93-\uDD97\uDEF3-\uDEF6]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF4F\uDF51-\uDF87\uDF8F-\uDF92\uDFE4\uDFF0\uDFF1]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A\uDD30-\uDD36\uDEEC-\uDEEF]|\uD83A[\uDCD0-\uDCD6\uDD44-\uDD4A]|\uDB40[\uDD00-\uDDEF]' + }, + { + 'name': 'Mc', + 'alias': 'Spacing_Mark', + 'bmp': '\u0903\u093B\u093E-\u0940\u0949-\u094C\u094E\u094F\u0982\u0983\u09BE-\u09C0\u09C7\u09C8\u09CB\u09CC\u09D7\u0A03\u0A3E-\u0A40\u0A83\u0ABE-\u0AC0\u0AC9\u0ACB\u0ACC\u0B02\u0B03\u0B3E\u0B40\u0B47\u0B48\u0B4B\u0B4C\u0B57\u0BBE\u0BBF\u0BC1\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCC\u0BD7\u0C01-\u0C03\u0C41-\u0C44\u0C82\u0C83\u0CBE\u0CC0-\u0CC4\u0CC7\u0CC8\u0CCA\u0CCB\u0CD5\u0CD6\u0D02\u0D03\u0D3E-\u0D40\u0D46-\u0D48\u0D4A-\u0D4C\u0D57\u0D82\u0D83\u0DCF-\u0DD1\u0DD8-\u0DDF\u0DF2\u0DF3\u0F3E\u0F3F\u0F7F\u102B\u102C\u1031\u1038\u103B\u103C\u1056\u1057\u1062-\u1064\u1067-\u106D\u1083\u1084\u1087-\u108C\u108F\u109A-\u109C\u17B6\u17BE-\u17C5\u17C7\u17C8\u1923-\u1926\u1929-\u192B\u1930\u1931\u1933-\u1938\u1A19\u1A1A\u1A55\u1A57\u1A61\u1A63\u1A64\u1A6D-\u1A72\u1B04\u1B35\u1B3B\u1B3D-\u1B41\u1B43\u1B44\u1B82\u1BA1\u1BA6\u1BA7\u1BAA\u1BE7\u1BEA-\u1BEC\u1BEE\u1BF2\u1BF3\u1C24-\u1C2B\u1C34\u1C35\u1CE1\u1CF7\u302E\u302F\uA823\uA824\uA827\uA880\uA881\uA8B4-\uA8C3\uA952\uA953\uA983\uA9B4\uA9B5\uA9BA\uA9BB\uA9BE-\uA9C0\uAA2F\uAA30\uAA33\uAA34\uAA4D\uAA7B\uAA7D\uAAEB\uAAEE\uAAEF\uAAF5\uABE3\uABE4\uABE6\uABE7\uABE9\uABEA\uABEC', + 'astral': '\uD804[\uDC00\uDC02\uDC82\uDCB0-\uDCB2\uDCB7\uDCB8\uDD2C\uDD45\uDD46\uDD82\uDDB3-\uDDB5\uDDBF\uDDC0\uDDCE\uDE2C-\uDE2E\uDE32\uDE33\uDE35\uDEE0-\uDEE2\uDF02\uDF03\uDF3E\uDF3F\uDF41-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63]|\uD805[\uDC35-\uDC37\uDC40\uDC41\uDC45\uDCB0-\uDCB2\uDCB9\uDCBB-\uDCBE\uDCC1\uDDAF-\uDDB1\uDDB8-\uDDBB\uDDBE\uDE30-\uDE32\uDE3B\uDE3C\uDE3E\uDEAC\uDEAE\uDEAF\uDEB6\uDF20\uDF21\uDF26]|\uD806[\uDC2C-\uDC2E\uDC38\uDD30-\uDD35\uDD37\uDD38\uDD3D\uDD40\uDD42\uDDD1-\uDDD3\uDDDC-\uDDDF\uDDE4\uDE39\uDE57\uDE58\uDE97]|\uD807[\uDC2F\uDC3E\uDCA9\uDCB1\uDCB4\uDD8A-\uDD8E\uDD93\uDD94\uDD96\uDEF5\uDEF6]|\uD81B[\uDF51-\uDF87\uDFF0\uDFF1]|\uD834[\uDD65\uDD66\uDD6D-\uDD72]' + }, + { + 'name': 'Me', + 'alias': 'Enclosing_Mark', + 'bmp': '\u0488\u0489\u1ABE\u20DD-\u20E0\u20E2-\u20E4\uA670-\uA672' + }, + { + 'name': 'Mn', + 'alias': 'Nonspacing_Mark', + 'bmp': '\u0300-\u036F\u0483-\u0487\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2\u09E3\u09FE\u0A01\u0A02\u0A3C\u0A41\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7\u0AC8\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B55\u0B56\u0B62\u0B63\u0B82\u0BC0\u0BCD\u0C00\u0C04\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81\u0CBC\u0CBF\u0CC6\u0CCC\u0CCD\u0CE2\u0CE3\u0D00\u0D01\u0D3B\u0D3C\u0D41-\u0D44\u0D4D\u0D62\u0D63\u0D81\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039\u103A\u103D\u103E\u1058\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085\u1086\u108D\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4\u17B5\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193B\u1A17\u1A18\u1A1B\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1AB0-\u1ABD\u1ABF\u1AC0\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80\u1B81\u1BA2-\u1BA5\u1BA8\u1BA9\u1BAB-\u1BAD\u1BE6\u1BE8\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302D\u3099\u309A\uA66F\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA825\uA826\uA82C\uA8C4\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uA9BD\uA9E5\uAA29-\uAA2E\uAA31\uAA32\uAA35\uAA36\uAA43\uAA4C\uAA7C\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEC\uAAED\uAAF6\uABE5\uABE8\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F', + 'astral': '\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD803[\uDD24-\uDD27\uDEAB\uDEAC\uDF46-\uDF50]|\uD804[\uDC01\uDC38-\uDC46\uDC7F-\uDC81\uDCB3-\uDCB6\uDCB9\uDCBA\uDD00-\uDD02\uDD27-\uDD2B\uDD2D-\uDD34\uDD73\uDD80\uDD81\uDDB6-\uDDBE\uDDC9-\uDDCC\uDDCF\uDE2F-\uDE31\uDE34\uDE36\uDE37\uDE3E\uDEDF\uDEE3-\uDEEA\uDF00\uDF01\uDF3B\uDF3C\uDF40\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC38-\uDC3F\uDC42-\uDC44\uDC46\uDC5E\uDCB3-\uDCB8\uDCBA\uDCBF\uDCC0\uDCC2\uDCC3\uDDB2-\uDDB5\uDDBC\uDDBD\uDDBF\uDDC0\uDDDC\uDDDD\uDE33-\uDE3A\uDE3D\uDE3F\uDE40\uDEAB\uDEAD\uDEB0-\uDEB5\uDEB7\uDF1D-\uDF1F\uDF22-\uDF25\uDF27-\uDF2B]|\uD806[\uDC2F-\uDC37\uDC39\uDC3A\uDD3B\uDD3C\uDD3E\uDD43\uDDD4-\uDDD7\uDDDA\uDDDB\uDDE0\uDE01-\uDE0A\uDE33-\uDE38\uDE3B-\uDE3E\uDE47\uDE51-\uDE56\uDE59-\uDE5B\uDE8A-\uDE96\uDE98\uDE99]|\uD807[\uDC30-\uDC36\uDC38-\uDC3D\uDC3F\uDC92-\uDCA7\uDCAA-\uDCB0\uDCB2\uDCB3\uDCB5\uDCB6\uDD31-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD45\uDD47\uDD90\uDD91\uDD95\uDD97\uDEF3\uDEF4]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF4F\uDF8F-\uDF92\uDFE4]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD67-\uDD69\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A\uDD30-\uDD36\uDEEC-\uDEEF]|\uD83A[\uDCD0-\uDCD6\uDD44-\uDD4A]|\uDB40[\uDD00-\uDDEF]' + }, + { + 'name': 'N', + 'alias': 'Number', + 'bmp': '0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D58-\u0D5E\u0D66-\u0D78\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19', + 'astral': '\uD800[\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDEE1-\uDEFB\uDF20-\uDF23\uDF41\uDF4A\uDFD1-\uDFD5]|\uD801[\uDCA0-\uDCA9]|\uD802[\uDC58-\uDC5F\uDC79-\uDC7F\uDCA7-\uDCAF\uDCFB-\uDCFF\uDD16-\uDD1B\uDDBC\uDDBD\uDDC0-\uDDCF\uDDD2-\uDDFF\uDE40-\uDE48\uDE7D\uDE7E\uDE9D-\uDE9F\uDEEB-\uDEEF\uDF58-\uDF5F\uDF78-\uDF7F\uDFA9-\uDFAF]|\uD803[\uDCFA-\uDCFF\uDD30-\uDD39\uDE60-\uDE7E\uDF1D-\uDF26\uDF51-\uDF54\uDFC5-\uDFCB]|\uD804[\uDC52-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9\uDDE1-\uDDF4\uDEF0-\uDEF9]|\uD805[\uDC50-\uDC59\uDCD0-\uDCD9\uDE50-\uDE59\uDEC0-\uDEC9\uDF30-\uDF3B]|\uD806[\uDCE0-\uDCF2\uDD50-\uDD59]|\uD807[\uDC50-\uDC6C\uDD50-\uDD59\uDDA0-\uDDA9\uDFC0-\uDFD4]|\uD809[\uDC00-\uDC6E]|\uD81A[\uDE60-\uDE69\uDF50-\uDF59\uDF5B-\uDF61]|\uD81B[\uDE80-\uDE96]|\uD834[\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDFCE-\uDFFF]|\uD838[\uDD40-\uDD49\uDEF0-\uDEF9]|\uD83A[\uDCC7-\uDCCF\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]' + }, + { + 'name': 'Nd', + 'alias': 'Decimal_Number', + 'bmp': '0-9\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19', + 'astral': '\uD801[\uDCA0-\uDCA9]|\uD803[\uDD30-\uDD39]|\uD804[\uDC66-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9\uDEF0-\uDEF9]|\uD805[\uDC50-\uDC59\uDCD0-\uDCD9\uDE50-\uDE59\uDEC0-\uDEC9\uDF30-\uDF39]|\uD806[\uDCE0-\uDCE9\uDD50-\uDD59]|\uD807[\uDC50-\uDC59\uDD50-\uDD59\uDDA0-\uDDA9]|\uD81A[\uDE60-\uDE69\uDF50-\uDF59]|\uD835[\uDFCE-\uDFFF]|\uD838[\uDD40-\uDD49\uDEF0-\uDEF9]|\uD83A[\uDD50-\uDD59]|\uD83E[\uDFF0-\uDFF9]' + }, + { + 'name': 'Nl', + 'alias': 'Letter_Number', + 'bmp': '\u16EE-\u16F0\u2160-\u2182\u2185-\u2188\u3007\u3021-\u3029\u3038-\u303A\uA6E6-\uA6EF', + 'astral': '\uD800[\uDD40-\uDD74\uDF41\uDF4A\uDFD1-\uDFD5]|\uD809[\uDC00-\uDC6E]' + }, + { + 'name': 'No', + 'alias': 'Other_Number', + 'bmp': '\xB2\xB3\xB9\xBC-\xBE\u09F4-\u09F9\u0B72-\u0B77\u0BF0-\u0BF2\u0C78-\u0C7E\u0D58-\u0D5E\u0D70-\u0D78\u0F2A-\u0F33\u1369-\u137C\u17F0-\u17F9\u19DA\u2070\u2074-\u2079\u2080-\u2089\u2150-\u215F\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA830-\uA835', + 'astral': '\uD800[\uDD07-\uDD33\uDD75-\uDD78\uDD8A\uDD8B\uDEE1-\uDEFB\uDF20-\uDF23]|\uD802[\uDC58-\uDC5F\uDC79-\uDC7F\uDCA7-\uDCAF\uDCFB-\uDCFF\uDD16-\uDD1B\uDDBC\uDDBD\uDDC0-\uDDCF\uDDD2-\uDDFF\uDE40-\uDE48\uDE7D\uDE7E\uDE9D-\uDE9F\uDEEB-\uDEEF\uDF58-\uDF5F\uDF78-\uDF7F\uDFA9-\uDFAF]|\uD803[\uDCFA-\uDCFF\uDE60-\uDE7E\uDF1D-\uDF26\uDF51-\uDF54\uDFC5-\uDFCB]|\uD804[\uDC52-\uDC65\uDDE1-\uDDF4]|\uD805[\uDF3A\uDF3B]|\uD806[\uDCEA-\uDCF2]|\uD807[\uDC5A-\uDC6C\uDFC0-\uDFD4]|\uD81A[\uDF5B-\uDF61]|\uD81B[\uDE80-\uDE96]|\uD834[\uDEE0-\uDEF3\uDF60-\uDF78]|\uD83A[\uDCC7-\uDCCF]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D]|\uD83C[\uDD00-\uDD0C]' + }, + { + 'name': 'P', + 'alias': 'Punctuation', + 'bmp': '!-#%-\\*,-\\/:;\\?@\\[-\\]_\\{\\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65', + 'astral': '\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDEAD\uDF55-\uDF59]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5A\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDF3C-\uDF3E]|\uD806[\uDC3B\uDD44-\uDD46\uDDE2\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8\uDFFF]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A\uDFE2]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]' + }, + { + 'name': 'Pc', + 'alias': 'Connector_Punctuation', + 'bmp': '_\u203F\u2040\u2054\uFE33\uFE34\uFE4D-\uFE4F\uFF3F' + }, + { + 'name': 'Pd', + 'alias': 'Dash_Punctuation', + 'bmp': '\\-\u058A\u05BE\u1400\u1806\u2010-\u2015\u2E17\u2E1A\u2E3A\u2E3B\u2E40\u301C\u3030\u30A0\uFE31\uFE32\uFE58\uFE63\uFF0D', + 'astral': '\uD803\uDEAD' + }, + { + 'name': 'Pe', + 'alias': 'Close_Punctuation', + 'bmp': '\\)\\]\\}\u0F3B\u0F3D\u169C\u2046\u207E\u208E\u2309\u230B\u232A\u2769\u276B\u276D\u276F\u2771\u2773\u2775\u27C6\u27E7\u27E9\u27EB\u27ED\u27EF\u2984\u2986\u2988\u298A\u298C\u298E\u2990\u2992\u2994\u2996\u2998\u29D9\u29DB\u29FD\u2E23\u2E25\u2E27\u2E29\u3009\u300B\u300D\u300F\u3011\u3015\u3017\u3019\u301B\u301E\u301F\uFD3E\uFE18\uFE36\uFE38\uFE3A\uFE3C\uFE3E\uFE40\uFE42\uFE44\uFE48\uFE5A\uFE5C\uFE5E\uFF09\uFF3D\uFF5D\uFF60\uFF63' + }, + { + 'name': 'Pf', + 'alias': 'Final_Punctuation', + 'bmp': '\xBB\u2019\u201D\u203A\u2E03\u2E05\u2E0A\u2E0D\u2E1D\u2E21' + }, + { + 'name': 'Pi', + 'alias': 'Initial_Punctuation', + 'bmp': '\xAB\u2018\u201B\u201C\u201F\u2039\u2E02\u2E04\u2E09\u2E0C\u2E1C\u2E20' + }, + { + 'name': 'Po', + 'alias': 'Other_Punctuation', + 'bmp': '!-#%-\'\\*,\\.\\/:;\\?@\\\xA1\xA7\xB6\xB7\xBF\u037E\u0387\u055A-\u055F\u0589\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u166E\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u1805\u1807-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2016\u2017\u2020-\u2027\u2030-\u2038\u203B-\u203E\u2041-\u2043\u2047-\u2051\u2053\u2055-\u205E\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00\u2E01\u2E06-\u2E08\u2E0B\u2E0E-\u2E16\u2E18\u2E19\u2E1B\u2E1E\u2E1F\u2E2A-\u2E2E\u2E30-\u2E39\u2E3C-\u2E3F\u2E41\u2E43-\u2E4F\u2E52\u3001-\u3003\u303D\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFE10-\uFE16\uFE19\uFE30\uFE45\uFE46\uFE49-\uFE4C\uFE50-\uFE52\uFE54-\uFE57\uFE5F-\uFE61\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF07\uFF0A\uFF0C\uFF0E\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3C\uFF61\uFF64\uFF65', + 'astral': '\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDF55-\uDF59]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5A\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDF3C-\uDF3E]|\uD806[\uDC3B\uDD44-\uDD46\uDDE2\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8\uDFFF]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A\uDFE2]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]' + }, + { + 'name': 'Ps', + 'alias': 'Open_Punctuation', + 'bmp': '\\(\\[\\{\u0F3A\u0F3C\u169B\u201A\u201E\u2045\u207D\u208D\u2308\u230A\u2329\u2768\u276A\u276C\u276E\u2770\u2772\u2774\u27C5\u27E6\u27E8\u27EA\u27EC\u27EE\u2983\u2985\u2987\u2989\u298B\u298D\u298F\u2991\u2993\u2995\u2997\u29D8\u29DA\u29FC\u2E22\u2E24\u2E26\u2E28\u2E42\u3008\u300A\u300C\u300E\u3010\u3014\u3016\u3018\u301A\u301D\uFD3F\uFE17\uFE35\uFE37\uFE39\uFE3B\uFE3D\uFE3F\uFE41\uFE43\uFE47\uFE59\uFE5B\uFE5D\uFF08\uFF3B\uFF5B\uFF5F\uFF62' + }, + { + 'name': 'S', + 'alias': 'Symbol', + 'bmp': '\\$\\+<->\\^`\\|~\xA2-\xA6\xA8\xA9\xAC\xAE-\xB1\xB4\xB8\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384\u0385\u03F6\u0482\u058D-\u058F\u0606-\u0608\u060B\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u07FE\u07FF\u09F2\u09F3\u09FA\u09FB\u0AF1\u0B70\u0BF3-\u0BFA\u0C7F\u0D4F\u0D79\u0E3F\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u17DB\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u2044\u2052\u207A-\u207C\u208A-\u208C\u20A0-\u20BF\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A\u218B\u2190-\u2307\u230C-\u2328\u232B-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u2767\u2794-\u27C4\u27C7-\u27E5\u27F0-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u309B\u309C\u3190\u3191\u3196-\u319F\u31C0-\u31E3\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA700-\uA716\uA720\uA721\uA789\uA78A\uA828-\uA82B\uA836-\uA839\uAA77-\uAA79\uAB5B\uAB6A\uAB6B\uFB29\uFBB2-\uFBC1\uFDFC\uFDFD\uFE62\uFE64-\uFE66\uFE69\uFF04\uFF0B\uFF1C-\uFF1E\uFF3E\uFF40\uFF5C\uFF5E\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFFC\uFFFD', + 'astral': '\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\uD805\uDF3F|\uD807[\uDFD5-\uDFF1]|\uD81A[\uDF3C-\uDF3F\uDF45]|\uD82F\uDC9C|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDE8\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD838[\uDD4F\uDEFF]|\uD83B[\uDCAC\uDCB0\uDD2E\uDEF0\uDEF1]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED7\uDEE0-\uDEEC\uDEF0-\uDEFC\uDF00-\uDF73\uDF80-\uDFD8\uDFE0-\uDFEB]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0\uDCB1\uDD00-\uDD78\uDD7A-\uDDCB\uDDCD-\uDE53\uDE60-\uDE6D\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6\uDF00-\uDF92\uDF94-\uDFCA]' + }, + { + 'name': 'Sc', + 'alias': 'Currency_Symbol', + 'bmp': '\\$\xA2-\xA5\u058F\u060B\u07FE\u07FF\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BF\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6', + 'astral': '\uD807[\uDFDD-\uDFE0]|\uD838\uDEFF|\uD83B\uDCB0' + }, + { + 'name': 'Sk', + 'alias': 'Modifier_Symbol', + 'bmp': '\\^`\xA8\xAF\xB4\xB8\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384\u0385\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u309B\u309C\uA700-\uA716\uA720\uA721\uA789\uA78A\uAB5B\uAB6A\uAB6B\uFBB2-\uFBC1\uFF3E\uFF40\uFFE3', + 'astral': '\uD83C[\uDFFB-\uDFFF]' + }, + { + 'name': 'Sm', + 'alias': 'Math_Symbol', + 'bmp': '\\+<->\\|~\xAC\xB1\xD7\xF7\u03F6\u0606-\u0608\u2044\u2052\u207A-\u207C\u208A-\u208C\u2118\u2140-\u2144\u214B\u2190-\u2194\u219A\u219B\u21A0\u21A3\u21A6\u21AE\u21CE\u21CF\u21D2\u21D4\u21F4-\u22FF\u2320\u2321\u237C\u239B-\u23B3\u23DC-\u23E1\u25B7\u25C1\u25F8-\u25FF\u266F\u27C0-\u27C4\u27C7-\u27E5\u27F0-\u27FF\u2900-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2AFF\u2B30-\u2B44\u2B47-\u2B4C\uFB29\uFE62\uFE64-\uFE66\uFF0B\uFF1C-\uFF1E\uFF5C\uFF5E\uFFE2\uFFE9-\uFFEC', + 'astral': '\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD83B[\uDEF0\uDEF1]' + }, + { + 'name': 'So', + 'alias': 'Other_Symbol', + 'bmp': '\xA6\xA9\xAE\xB0\u0482\u058D\u058E\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u09FA\u0B70\u0BF3-\u0BF8\u0BFA\u0C7F\u0D4F\u0D79\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116\u2117\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u214A\u214C\u214D\u214F\u218A\u218B\u2195-\u2199\u219C-\u219F\u21A1\u21A2\u21A4\u21A5\u21A7-\u21AD\u21AF-\u21CD\u21D0\u21D1\u21D3\u21D5-\u21F3\u2300-\u2307\u230C-\u231F\u2322-\u2328\u232B-\u237B\u237D-\u239A\u23B4-\u23DB\u23E2-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u25B6\u25B8-\u25C0\u25C2-\u25F7\u2600-\u266E\u2670-\u2767\u2794-\u27BF\u2800-\u28FF\u2B00-\u2B2F\u2B45\u2B46\u2B4D-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u3190\u3191\u3196-\u319F\u31C0-\u31E3\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA828-\uA82B\uA836\uA837\uA839\uAA77-\uAA79\uFDFD\uFFE4\uFFE8\uFFED\uFFEE\uFFFC\uFFFD', + 'astral': '\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\uD805\uDF3F|\uD807[\uDFD5-\uDFDC\uDFE1-\uDFF1]|\uD81A[\uDF3C-\uDF3F\uDF45]|\uD82F\uDC9C|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDE8\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD838\uDD4F|\uD83B[\uDCAC\uDD2E]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFA]|\uD83D[\uDC00-\uDED7\uDEE0-\uDEEC\uDEF0-\uDEFC\uDF00-\uDF73\uDF80-\uDFD8\uDFE0-\uDFEB]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0\uDCB1\uDD00-\uDD78\uDD7A-\uDDCB\uDDCD-\uDE53\uDE60-\uDE6D\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6\uDF00-\uDF92\uDF94-\uDFCA]' + }, + { + 'name': 'Z', + 'alias': 'Separator', + 'bmp': ' \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000' + }, + { + 'name': 'Zl', + 'alias': 'Line_Separator', + 'bmp': '\u2028' + }, + { + 'name': 'Zp', + 'alias': 'Paragraph_Separator', + 'bmp': '\u2029' + }, + { + 'name': 'Zs', + 'alias': 'Space_Separator', + 'bmp': ' \xA0\u1680\u2000-\u200A\u202F\u205F\u3000' + } +]; + +var jabref = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.parse = void 0; +function decode(s, sep = ';') { + s = s.replace(/\n/g, ''); + let pos = 0; + const records = ['']; + while (pos < s.length) { + switch (s[pos]) { + case '\\': + pos++; + records[0] += s[pos]; + break; + case sep: + records.unshift(''); + break; + default: + records[0] += s[pos]; + } + pos++; + } + return records.reverse().filter(record => record); +} +const prefixes = { + fileDirectory: 'jabref-meta: fileDirectory:', + groupsversion: 'jabref-meta: groupsversion:', + groupstree: 'jabref-meta: groupstree:', + grouping: 'jabref-meta: grouping:', +}; +/** + * Import the JabRef groups from the `@string` comments in which they were stored. You would typically pass the comments parsed by [[bibtex.parse]] in here. + * + * JabRef knows several group types, and this parser parses most, but not all of them: + * + * * independent group: the keys listed in the group are the entries that are considered to belong to it + * * intersection: the keys listed in the group are considered to belong to the group if they're also in the parent group + * * union: the keys listed in the group are considered to belong to the group, and also the keys that are in the parent group + * * query: not supported by this parser + */ +function parse(comments) { + const result = { + root: [], + groups: {}, + fileDirectory: '', + version: '', + }; + const levels = []; + const decoded = { + fileDirectory: null, + groupsversion: null, + groupstree: null, + grouping: null, + }; + for (const comment of comments) { + for (const [meta, prefix] of Object.entries(prefixes)) { + if (comment.startsWith(prefix)) { + decoded[meta] = decode(comment.substring(prefix.length)); + } + } + } + result.version = decoded.groupsversion && decoded.groupsversion[0]; + result.fileDirectory = decoded.fileDirectory && decoded.fileDirectory[0]; + for (const tree of ['groupstree', 'grouping']) { + if (!decoded[tree]) + continue; + for (const encoded of decoded[tree]) { + const fields = decode(encoded); + const level_type_name = decode(fields.shift(), ':'); + const m = /^([0-9]+) (.+)/.exec(level_type_name[0]); + if (!m) + break; + const level = parseInt(m[1]); + const type = m[2]; // test for StaticGroup? + if (type === 'AllEntriesGroup') + continue; // root + const name = level_type_name[1]; + const intersection = decode(fields.shift())[0]; + const keys = tree === 'grouping' ? [] : fields.map(field => decode(field)[0]); + const group = { + name, + entries: keys, + groups: [], + }; + result.groups[name] = result.groups[name] || group; + if (levels.length < level) { + levels.push(group); + } + else { + levels[level - 1] = group; + } + if (level === 1) { + result.root.push(group); + } + else { + const parent = levels[level - 2]; + switch (intersection) { + case '0': // independent + break; + case '1': // intersect + group.entries = group.entries.filter(key => parent.entries.includes(key)); + break; + case '2': // union + group.entries = group.entries.concat(parent.entries.filter(key => !group.entries.includes(key))); + break; + } + levels[level - 2].groups.push(group); + } + } + } + return result; +} +exports.parse = parse; + +}); + +var bibtexParser = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.jabref = exports.chunker = exports.ast = exports.parse = void 0; + + + +class ParserError extends Error { + constructor(message, node) { + super(message); // 'Error' breaks prototype chain here + Object.setPrototypeOf(this, new.target.prototype); // restore prototype chain + this.name = this.constructor.name; + this.node = node; + } +} +class TeXError extends Error { + constructor(message, node, text) { + super(message); // 'Error' breaks prototype chain here + Object.setPrototypeOf(this, new.target.prototype); // restore prototype chain + this.name = this.constructor.name; + this.node = node; + this.text = text; + } +} + +const charClass = { + Lu: categories.filter(cat => ['Uppercase_Letter', 'Titlecase_Letter'].includes(cat.alias)).map(cat => cat.bmp).join(''), + Ll: categories.find(cat => cat.alias === 'Lowercase_Letter').bmp, + LnotLu: categories.filter(cat => ['Lowercase_Letter', 'Modifier_Letter', 'Other_Letter', 'Nonspacing_Mark', 'Spacing_Mark', 'Decimal_Number', 'Letter_Number'].includes(cat.alias)).map(cat => cat.bmp).join(''), + P: categories.find(cat => cat.alias === 'Punctuation').bmp, + L: categories.find(cat => cat.alias === 'Letter').bmp, + N: categories.filter(cat => ['Decimal_Number', 'Letter_Number'].includes(cat.alias)).map(cat => cat.bmp).join(''), + AlphaNum: categories.filter(cat => ['Letter', 'Decimal_Number', 'Letter_Number'].includes(cat.alias)).map(cat => cat.bmp).join(''), + LC: categories.find(cat => cat.alias === 'Cased_Letter').bmp, +}; +const marker = { + and: '\u0001', + comma: '\u0002', + space: '\u0003', + literal: '\u0004', + markup: '\u0005', + re: { + and: /./, + comma: /./, + space: /./, + literal: /./, + literalName: /./, + }, + clean(s) { + return s.replace(marker.re.space, ' ').replace(marker.re.comma, ', ').replace(marker.re.literal, ''); + }, +}; +marker.re = { + and: new RegExp(marker.and, 'g'), + comma: new RegExp(marker.comma, 'g'), + space: new RegExp(marker.space, 'g'), + literal: new RegExp(marker.literal, 'g'), + literalName: new RegExp(`^${marker.literal}([^${marker.literal}]*)${marker.literal}$`), +}; +const preserveCase = { + leadingCap: new RegExp(`^[${charClass.Lu}][${charClass.LnotLu}]+[${charClass.P}]?$`), + allCaps: new RegExp(`^[${charClass.Lu}${charClass.N}]{2,}$`), + allLower: new RegExp(`^[${charClass.Ll}${charClass.N}]{2,}$`), + joined: new RegExp(`^[${charClass.Lu}][${charClass.LnotLu}]*([-+][${charClass.L}${charClass.N}]+)*[${charClass.P}]*$`), + hasUpper: new RegExp(`[${charClass.Lu}]`), + hasLower: new RegExp(`[${charClass.Ll}]`), + isNumber: /^[0-9]+$/, + hasAlpha: new RegExp(`[${charClass.L}]`), + hasAlphaNum: new RegExp(`[${charClass.AlphaNum}]`), + notAlphaNum: new RegExp(`[^${charClass.AlphaNum}]`, 'g'), + sentenceStart: new RegExp(`(^|([\u2014:?!.]\\s+))[${charClass.Lu}]`, 'g'), + markup: /<\/?span[^>]*>/g, + acronym: new RegExp(`.*\\.${marker.markup}*[${charClass.Lu}]${marker.markup}*\\.$`), + notCaseSensitive: new RegExp(`[^${charClass.LC}]`), + isCaseSensitive: new RegExp(`[${charClass.LC}]`), + quoted: /("[^"]+")|(“[^“]+“)/g, +}; +const fields = { + creator: [ + 'author', + 'bookauthor', + 'collaborator', + 'commentator', + 'director', + 'editor', + 'editora', + 'editorb', + 'editors', + 'holder', + 'scriptwriter', + 'translator', + ], + title: [ + 'title', + 'series', + 'shorttitle', + 'booktitle', + 'type', + 'origtitle', + 'maintitle', + 'eventtitle', + ], + unnest: [ + 'publisher', + 'location', + ], + verbatim: [ + 'url', + 'doi', + 'file', + 'files', + 'eprint', + 'verba', + 'verbb', + 'verbc', + 'groups', + ], + html: [ + 'annotation', + 'comment', + 'annote', + 'review', + 'notes', + 'note', + ], + unabbrev: [ + 'journal', + 'journaltitle', + 'journal-full', + ], +}; +const english = [ + 'american', + 'british', + 'canadian', + 'english', + 'australian', + 'newzealand', + 'usenglish', + 'ukenglish', + 'en', + 'eng', + 'en-au', + 'en-bz', + 'en-ca', + 'en-cb', + 'en-gb', + 'en-ie', + 'en-jm', + 'en-nz', + 'en-ph', + 'en-tt', + 'en-us', + 'en-za', + 'en-zw', + 'anglais', +]; +class Parser { + constructor(options = {}) { + this.in_preamble = false; + this.preamble = []; + this.log = function (str) { }; // tslint:disable-line variable-name only-arrow-functions no-empty + for (const [option, value] of Object.entries(options)) { + if (typeof value === 'undefined') + delete options[option]; + } + if (options.errorHandler === false) { + // tslint:disable-next-line only-arrow-functions no-empty + options.errorHandler = function (err) { }; + } + else if (options.errorHandler === undefined) { + // tslint:disable-next-line only-arrow-functions + options.errorHandler = function (err) { throw err; }; + } + if (typeof options.sentenceCase === 'boolean') { + options.sentenceCase = options.sentenceCase ? english : []; + } + else { + options.sentenceCase = options.sentenceCase || english; + } + if (!options.strings) + options.strings = {}; + if (!options.unabbreviate) + options.unabbreviate = {}; + if (options.raw) { + options.sentenceCase = false; + options.caseProtection = false; + } + this.options = Object.assign({ caseProtection: 'as-needed', verbatimFields: [/^citeulike-linkout-[0-9]+$/, ...fields.verbatim], verbatimCommands: ['url', 'href'], unnestFields: [...fields.title, ...fields.unnest, ...fields.verbatim], unnestMode: 'unwrap', htmlFields: fields.html, guessAlreadySentenceCased: true, markup: {} }, options); + const markup_defaults = { + enquote: { open: '\u201c', close: '\u201d' }, + sub: { open: '', close: '' }, + sup: { open: '', close: '' }, + bold: { open: '', close: '' }, + italics: { open: '', close: '' }, + smallCaps: { open: '', close: '' }, + caseProtect: { open: '', close: '' }, + roman: { open: '', close: '' }, + fixedWidth: { open: '', close: '' }, + }; + // patch in because the options will likely not have enquote and case-protect + for (const [markup, { open, close }] of Object.entries(markup_defaults)) { + this.options.markup[markup] = this.options.markup[markup] || { open, close }; + } + for (const i of [1, 2, 3, 4]) { // tslint:disable-line:no-magic-numbers + this.options.markup[`h${i}`] = this.options.markup[`h${i}`] || { open: ``, close: `` }; + } + this.unresolvedStrings = {}; + this.errors = []; + this.comments = []; + this.entries = []; + this.strings = {}; + this.newcommands = {}; + this.default_strings = { + JAN: [this.text('01')], + FEB: [this.text('02')], + MAR: [this.text('03')], + APR: [this.text('04')], + MAY: [this.text('05')], + JUN: [this.text('06')], + JUL: [this.text('07')], + AUG: [this.text('08')], + SEP: [this.text('09')], + OCT: [this.text('10')], + NOV: [this.text('11')], + DEC: [this.text('12')], + ACMCS: [this.text('ACM Computing Surveys')], + ACTA: [this.text('Acta Informatica')], + CACM: [this.text('Communications of the ACM')], + IBMJRD: [this.text('IBM Journal of Research and Development')], + IBMSJ: [this.text('IBM Systems Journal')], + IEEESE: [this.text('IEEE Transactions on Software Engineering')], + IEEETC: [this.text('IEEE Transactions on Computers')], + IEEETCAD: [this.text('IEEE Transactions on Computer-Aided Design of Integrated Circuits')], + IPL: [this.text('Information Processing Letters')], + JACM: [this.text('Journal of the ACM')], + JCSS: [this.text('Journal of Computer and System Sciences')], + SCP: [this.text('Science of Computer Programming')], + SICOMP: [this.text('SIAM Journal on Computing')], + TOCS: [this.text('ACM Transactions on Computer Systems')], + TODS: [this.text('ACM Transactions on Database Systems')], + TOG: [this.text('ACM Transactions on Graphics')], + TOMS: [this.text('ACM Transactions on Mathematical Software')], + TOOIS: [this.text('ACM Transactions on Office Information Systems')], + TOPLAS: [this.text('ACM Transactions on Programming Languages and Systems')], + TCS: [this.text('Theoretical Computer Science')], + }; + } + ast(input, clean = true) { + const _ast = []; + for (const chunk of chunker.parse(input)) { + let chunk_ast = grammar.parse(chunk.text, Object.assign(Object.assign({}, this.options), { combiningDiacritics: unicode2latex.diacritics.commands })); + if (clean) + chunk_ast = this.clean(chunk_ast); + _ast.push(chunk_ast); + } + return _ast; + } + parse(input) { + return this.options.async ? this.parseAsync(input) : this.parseSync(input); + } + parseSync(input) { + for (const chunk of chunker.parse(input)) { + this.parseChunk(chunk); + } + return this.parsed(); + } + async parseAsync(input) { + for (const chunk of await chunker.parse(input, { async: true })) { + this.parseChunk(chunk); + } + return this.parsed(); + } + parsed() { + this.field = null; + const strings = {}; + this.cleaning = { type: 'other' }; + for (const [key, value] of Object.entries(this.strings)) { + this.field = { + name: '@string', + text: '', + level: 0, + preserveRanges: null, + words: { + upper: 0, + lower: 0, + other: 0, + }, + }; + this.convert(this.clean(value)); + strings[key] = this.field.text; + } + return { + errors: this.errors, + entries: this.entries, + comments: this.comments, + strings, + preamble: this.preamble, + }; + } + preserve(start, end, reason) { + if (!this.field.preserveRanges) + return; + if (!end) { + this.field.preserveRanges = null; + return; + } + /* + this.field.preserveRanges = this.field.preserveRanges.filter(range => range.start < start || range.end > end) + if (this.field.preserveRanges.find(range => range.start <= start && range.end >= end)) return + */ + /* + if (this.field.preserveRanges && this.field.preserveRanges.length) { + const last = this.field.preserveRanges[this.field.preserveRanges.length - 1] + if (start < last.start) throw new Error(JSON.stringify({...last, new: { start, end, reason }, text: this.field.text})) + } + */ + this.field.preserveRanges.push({ start, end, reason }); + } + parseChunk(chunk) { + this.chunk = chunk.text; + try { + let bib = grammar.parse(chunk.text, Object.assign(Object.assign({}, this.options), { combiningDiacritics: unicode2latex.diacritics.commands })); + if (bib.kind !== 'Bibliography') + throw new Error(this.show(bib)); + bib = this.clean(bib); + for (const entity of bib.children) { + switch (entity.kind) { + case 'Entry': + case 'BracedComment': + case 'LineComment': + case 'PreambleExpression': + this.convert(entity); + break; + case 'StringDeclaration': + case 'NonEntryText': + break; + } + } + return bib; + } + catch (err) { + if (!err.location) + throw err; + this.errors.push({ + message: err.message, + line: err.location.start.line + chunk.offset.line, + column: err.location.start.column, + source: this.chunk, + }); + return null; + } + } + show(o) { + // tslint:disable-next-line prefer-template + let text = JSON.stringify(o); + if (this.chunk) + text += '\n' + this.chunk.trim(); + return text; + } + text(value = '') { + return { kind: 'Text', value, mode: 'text' }; + } + error(err, returnvalue) { + if (typeof this.options.errorHandler === 'function') + this.options.errorHandler(err); + return returnvalue; + } + condense(node) { + // apply cleaning to resulting children + node.value = node.value.map(child => this.clean(child)); + // unpack redundant blocks + node.value = node.value.reduce((acc, child, i) => { + if (child.kind === 'Block' && !child.case && Object.keys(child.markup).length === 0) { + acc = acc.concat(child.value); + } + else { + acc.push(child); + } + return acc; + }, []); + // condense text nodes to make whole words for sentence casing + node.value = node.value.reduce((acc, child, i) => { + if (acc.length === 0) { + acc.push(child); + return acc; + } + const last = acc[acc.length - 1]; + const next = node.value[i + 1]; + if (this.options.caseProtection === 'strict' && this.onlyCaseProtected(last) && child.kind === 'Text' && !child.value.match(preserveCase.isCaseSensitive) && this.onlyCaseProtected(next)) { + last.value.push(child); + delete last.source; + return acc; + } + if (last.kind === 'Block' && child.kind === 'Block' && Object.keys(last.markup).sort().join('/') === Object.keys(child.markup).sort().join('/')) { + last.value = last.value.concat(child.value); + delete last.source; + return acc; + } + if (last.kind === 'Text' && child.kind === 'Text' && last.mode === child.mode) { + last.value += child.value; + delete last.source; + return acc; + } + acc.push(child); + return acc; + }, []); + } + onlyCaseProtected(node) { + return (node === null || node === void 0 ? void 0 : node.kind) === 'Block' && node.case === 'protect' && Object.keys(node.markup).join('/') === ''; + } + argument(node, kind) { + if (!node.arguments || !node.arguments.required.length) + return (kind === 'none'); + // expect 'n' text arguments + if (typeof kind === 'number') { + if (node.arguments.required.length !== kind) + return false; + return node.arguments.required; + } + // return first argument if it's the only one + if (node.arguments.required.length !== 1) + return false; + // loose checking for text + if (kind === 'text') { + const first = node.arguments.required[0]; + if (first.kind === 'Block' && first.value.length === 1) { + if (first.value[0].kind === 'Text') + return first.value[0].value; + } + // fall back to strict kind check + kind = 'Text'; + } + // return first argument if it's the only one and is of the specified kind + if (node.arguments.required.length !== 1 || node.arguments.required[0].kind !== kind) + return false; + switch (kind) { + case 'Text': + return node.arguments.required[0].value; + case 'RegularCommand': + case 'Block': + return node.arguments.required[0]; + } + return false; + } + clean(node) { + if (Array.isArray(node)) + return node.map(child => this.clean(child)); + delete node.loc; + switch (node.kind) { + case 'InlineMath': + case 'DisplayMath': + return this.clean_block(node); + case 'Environment': + return this.clean_environment(node); + case 'Block': + return this.clean_block(node); + case 'Bibliography': + return this.clean_bib(node); + case 'RegularCommand': + return this.clean_command(node); + case 'DiacriticCommand': + return this.clean_diacritic(node); + case 'Entry': + return this.clean_entry(node); + case 'Field': + return this.options.raw ? node : this.clean_field(node); + case 'StringDeclaration': + return this.clean_stringdecl(node); + case 'StringReference': + return this.clean_stringref(node); + case 'SubscriptCommand': + case 'SuperscriptCommand': + return this.clean_script(node); + case 'SymbolCommand': + return this.clean_symbol(node); + case 'PreambleExpression': + return this.clean_preamble(node); + case 'Number': + case 'Text': + case 'BracedComment': + case 'LineComment': + return node; + default: + return this.error(new ParserError(`no cleanup method for ${this.show(node)}`, node), this.text()); + } + } + clean_preamble(node) { + this.in_preamble = true; + const clean = this.clean(node.value); + this.in_preamble = false; + return clean; + } + clean_bib(node) { + node.children = node.children.filter(child => child.kind !== 'NonEntryText').map(child => this.clean(child)); + return node; + } + clean_stringdecl(node) { + this.strings[node.name.toUpperCase()] = node.value; + return node; + } + clean_stringref(node) { + var _a; + const name = node.name.toUpperCase(); + const _string = this.strings[name] + || this.options.strings[name] + || this.default_strings[name] + || (fields.unabbrev.includes(this.cleaning.name) && ((_a = this.options.unabbreviate[name]) === null || _a === void 0 ? void 0 : _a.text) && [this.text(this.options.unabbreviate[name].text)]); + if (!_string) { + if (!this.unresolvedStrings[name]) + this.errors.push({ message: `Unresolved @string reference ${JSON.stringify(node.name)}` }); + this.unresolvedStrings[name] = true; + } + return this.clean({ + kind: 'Block', + // if the string isn't found, add it as-is but exempt it from sentence casing + case: _string ? undefined : 'preserve', + markup: {}, + value: _string ? JSON.parse(JSON.stringify(_string)) : [this.text(node.name)], + }); + } + clean_entry(node) { + const shortjournals = []; + for (const field of node.fields) { + if (fields.unabbrev.includes(field.name) && Array.isArray(field.value)) { + const abbr = field.value.map(v => v.source).join(''); + const journal = this.options.unabbreviate[abbr]; + if (journal) { + shortjournals.push(Object.assign(Object.assign({}, JSON.parse(JSON.stringify(field))), { name: 'shortjournal' })); + field.value = JSON.parse(JSON.stringify(journal.ast)); + } + } + } + node.fields = node.fields.concat(shortjournals).map(child => this.clean(child)); + return node; + } + startCleaning(name) { + name = name.toLowerCase(); + if (fields.title.includes(name)) { + this.cleaning = { type: 'title', name }; + } + else if (fields.creator.includes(name.replace(/s$/, ''))) { + this.cleaning = { type: 'creator', name: name.replace(/s$/, '') }; + } + else { + this.cleaning = { type: 'other', name }; + } + } + stripNoCase(node, strip, preserve) { + switch (node.kind) { + case 'RegularCommand': + // a bit cheaty to assume these to be nocased, but it's just more likely to be what people want + if (['chsf', 'bibstring', 'cite'].includes(node.command)) + strip = true; + node.arguments.required.map(arg => this.stripNoCase(arg, strip, preserve)); + break; + case 'Block': + case 'InlineMath': + case 'DisplayMath': + if (strip && node.case === 'protect') { + if (preserve) { + node.case = 'preserve'; + } + else { + delete node.case; + } + } + node.value.map(v => this.stripNoCase(v, strip || node.case === 'protect', preserve)); + break; + case 'Field': + if (Array.isArray(node.value)) + node.value.map(v => this.stripNoCase(v, strip, preserve)); + break; + } + } + isVerbatimField(name) { + return !!this.options.verbatimFields.find(p => (typeof p === 'string') ? name === p : name.match(p)); + } + clean_field(node) { + this.startCleaning(node.name); + this.stripNoCase(node, !this.options.caseProtection || this.isVerbatimField(node.name), this.options.sentenceCase.length === 0); + if (Array.isArray(node.value)) + this.condense(node); + return node; + } + clean_script(node) { + let m, value, singlechar; + // recognize combined forms like \^\circ + if (singlechar = unicode2latex.latex[node.source]) + return this.text(singlechar); + if ((m = node.source.match(/^([\^_])([^{}]+)$/)) && ((singlechar = unicode2latex.latex[`${m[1]}${m[2]}`]) || (singlechar = unicode2latex.latex[`${m[1]}{${m[2]}}`]))) + return this.text(singlechar); + if ((m = node.source.match(/^([\^_])\{([^{}]+)\}$/)) && ((singlechar = unicode2latex.latex[`${m[1]}${m[2]}`]) || (singlechar = unicode2latex.latex[`${m[1]}{${m[2]}}`]))) + return this.text(singlechar); + const cmd = node.kind === 'SuperscriptCommand' ? '^' : '_'; + if (typeof node.value === 'string' && (singlechar = unicode2latex.latex[`${cmd}${node.value}`] || unicode2latex.latex[`${cmd}{${node.value}}`])) { + return this.text(singlechar); + } + if (typeof node.value === 'string') { + value = [this.text(node.value)]; + } + else if (!Array.isArray(node.value)) { + value = [node.value]; + } + else { + value = node.value; + } + const mode = node.kind === 'SuperscriptCommand' ? 'sup' : 'sub'; + return this.clean({ + kind: 'Block', + markup: { [mode]: true }, + value, + }); + } + clean_environment(node) { + this.condense(node); + return node; + } + needsProtection(word) { + return !word.match(preserveCase.hasUpper) && word.match(preserveCase.hasLower); + } + clean_block(node) { + var _a; + this.condense(node); + if (this.options.caseProtection !== 'strict' && ((_a = this.cleaning) === null || _a === void 0 ? void 0 : _a.type) === 'title' && node.case === 'protect') { + // test whether we can get away with skipping case protection because it contains all words that will be preserved anyway when converting back to Title Case + let preserve = true; + for (const child of node.value) { + if (child.kind === 'Text') { + const value = child.value.trim(); + preserve = !value.match(preserveCase.isCaseSensitive) || !value.split(/\s+/).find(word => this.needsProtection(word)); + } + else { + preserve = false; + } + if (!preserve) + break; + } + if (preserve) + node.case = 'preserve'; + } + if (node.kind === 'Block') { + for (const [markup, on] of Object.entries(node.markup)) { + if (!on) + delete node.markup[markup]; + } + } + return node; + } + clean_diacritic(node) { + const char = node.dotless ? `\\${node.character}` : node.character; + let unicode = unicode2latex.latex[`\\${node.mark}{${char}}`] + || unicode2latex.latex[`\\${node.mark}${char}`] + || unicode2latex.latex[`{\\${node.mark} ${char}}`] + || unicode2latex.latex[`{\\${node.mark}${char}}`] + || unicode2latex.latex[`\\${node.mark} ${char}`]; + if (!unicode && !node.dotless && node.character.length === 1 && unicode2latex.diacritics.tounicode[node.mark]) + unicode = node.character + unicode2latex.diacritics.tounicode[node.mark]; + if (!unicode && !this.in_preamble) + return this.error(new TeXError(`Unhandled \\${node.mark}{${char}}`, node, this.chunk), this.text()); + return this.text(unicode); + } + clean_symbol(node) { + if (node.command === '\\') + return this.text('\n'); + return this.text(unicode2latex.latex[`\\${node.command}`] || node.command); + } + first_text_block(node) { + if (!node) + return null; + if (node.kind === 'Block') { + for (const child of node.value) { + switch (child.kind) { + case 'Text': + return child.value ? node : null; + case 'Block': + const candidate = this.first_text_block(child); + if (candidate) + return candidate; + break; + default: + return null; + } + } + } + else { + return null; + } + } + clean_command(node) { + var _a; + let arg, unicode; + if (unicode = unicode2latex.latex[node.source]) + return this.text(unicode); + switch (node.command) { + case 'newcommand': + if (((_a = node.arguments) === null || _a === void 0 ? void 0 : _a.required.length) === 2 + && node.arguments.required[0].kind === 'Block' + && node.arguments.required[0].value.length === 1 + && node.arguments.required[0].value[0].kind === 'RegularCommand' + && node.arguments.required[1].kind === 'Block') { + this.newcommands[node.arguments.required[0].value[0].command] = node.arguments.required[1].value; + return this.text(); + } + // console.log('newcommand?', JSON.stringify(node, null, 2)) + break; + case 'item': + return { kind: 'Markup', value: '
  • ', source: node.source }; + case 'frac': + if (arg = this.argument(node, 2)) { + if (arg[0].kind === 'Text' && arg[1].kind === 'Text' && (unicode = unicode2latex.latex[`\\frac{${arg[0].value}}{${arg[1].value}}`])) + return this.text(unicode); + return this.clean({ + kind: 'Block', + case: 'protect', + markup: {}, + value: [ + { kind: 'Block', markup: { sup: true }, value: [arg[0]] }, + this.text('\u2044'), + { kind: 'Block', markup: { sub: true }, value: [arg[1]] }, + ], + }); + } + break; + // ignore + case 'vspace': + case 'vphantom': + case 'path': + case 'aftergroup': + case 'ignorespaces': + case 'relax': + case 'noopsort': + case 'ifdefined': + case 'DeclarePrefChars': + case 'else': + case 'fi': + case 'makeatletter': + return this.text(); + case 'ElsevierGlyph': + if (arg = this.argument(node, 'Text')) { + if (unicode = unicode2latex.latex[`\\${node.command}{${arg}}`]) + return this.text(unicode); + return this.text(String.fromCharCode(parseInt(arg, 16))); + } + break; + case 'chsf': + if (this.argument(node, 'none')) + return this.text(); + if (arg = this.argument(node, 'Block')) + return this.clean(arg); + break; + case 'bibstring': + if (arg = this.argument(node, 'Block')) + return this.clean(arg); + break; + case 'cite': + if (arg = this.argument(node, 'Block')) + return this.clean(arg); + break; + case 'textsuperscript': + case 'sp': + if ((arg = this.argument(node, 'Text')) && (unicode = unicode2latex.latex[`^{${arg}}`])) + return this.text(unicode); + if (arg = this.argument(node, 'Block')) + return this.clean(arg); + break; + case 'textsubscript': + case 'sb': + if ((arg = this.argument(node, 'Text')) && (unicode = unicode2latex.latex[`_{${arg}}`])) + return this.text(unicode); + if (arg = this.argument(node, 'Block')) + return this.clean(arg); + break; + case 'textsc': + if (arg = this.argument(node, 'Block')) + return this.clean(arg); + break; + case 'enquote': + case 'mkbibquote': + if (arg = this.argument(node, 'Block')) + return this.clean(arg); + break; + case 'textbf': + case 'mkbibbold': + if (arg = this.argument(node, 'Block')) + return this.clean(arg); + break; + case 'section': + case 'subsection': + case 'subsubsection': + case 'subsubsubsection': + if (arg = this.argument(node, 'Block')) + return this.clean(arg); + break; + case 'mkbibitalic': + case 'mkbibemph': + case 'textit': + case 'emph': + if (arg = this.argument(node, 'Block')) + return this.clean(arg); + if (arg = this.argument(node, 'Text')) + return this.clean({ kind: 'Block', markup: { italics: true }, value: [this.text(arg)] }); + break; + case 'bibcyr': + if (this.argument(node, 'none')) + return this.text(); + if (arg = this.argument(node, 'Block')) + return this.clean(arg); + break; + case 'hspace': + case 'mathrm': + case 'textrm': + case 'ocirc': + case 'mbox': + if (arg = this.argument(node, 'text')) { + unicode = unicode2latex.latex[`\\${node.command}{${arg}}`]; + return this.text(unicode || (node.command === 'hspace' ? ' ' : arg)); + } + else if (!node.arguments.required.length) { + return this.text(); + } + else if (arg = this.argument(node, 'Block')) { + return this.clean(arg); + } + break; + // just take the URL? Not the label? + case 'href': + if (arg = this.argument(node, 2)) + return this.clean(arg[0]); + break; + case 'url': + if (arg = this.argument(node, 'Text')) + return this.text(arg); + if (arg = this.argument(node, 'Block')) + return this.clean(arg); + break; + case 'sl': + case 'em': + case 'it': + case 'itshape': + case 'bf': + case 'bfseries': + case 'sc': + case 'scshape': + case 'tt': + case 'rm': + case 'sf': + case 'verb': + // handled in the grammar + return this.text(); + // wouldn't know what to do with these + case 'left': + case 'right': + return this.text(); + case 'par': + return this.text('\n\n'); + case 'cyr': + if (this.argument(node, 'none')) + return this.text(); + break; + case 'polhk': + if (unicode = this.argument(node, 'text')) { + if (unicode.length === 1) + return this.text(unicode + '\u0328'); + } + if (this.argument(node, 'none')) + return this.text('\u0328'); + break; + default: + if (node.kind === 'RegularCommand' && this.newcommands[node.command]) { + return this.clean({ + kind: 'Block', + markup: {}, + value: JSON.parse(JSON.stringify(this.newcommands[node.command])), + }); + } + if (unicode2latex.diacritics.tounicode[node.command]) { + node.arguments.required = this.clean(node.arguments.required); + let block; + if (node.arguments.required.length === 1 && node.arguments.required[0].kind === 'Text') { + // no idea why I can't just straight return this but typescript just won't shut up + block = { + kind: 'Block', + markup: {}, + value: [{ + kind: 'DiacriticCommand', + mark: node.command, + character: node.arguments.required[0].value, + dotless: false, + loc: node.arguments.required[0].loc, + source: node.arguments.required[0].source, + }], + }; + return this.clean(block); + } + else if (block = this.first_text_block(node.arguments.required[0])) { + let fixed = false; + block.value = block.value.reduce((value, child) => { + if (!fixed && child.kind === 'Text') { + fixed = true; + value.push({ kind: 'DiacriticCommand', mark: node.command, character: child.value[0] }); + value.push(Object.assign(Object.assign({}, child), { value: child.value.substring(1) })); + } + else { + value.push(child); + } + return value; + }, []); + return this.clean({ + kind: 'Block', + markup: {}, + value: node.arguments.required, + }); + } + else { + // overline without arguments doesn't seem to render in LaTeX + if (node.command === 'overline') + return this.text(' '); + return this.clean({ + kind: 'Block', + markup: {}, + value: [this.text(' ' + unicode2latex.diacritics.tounicode[node.command])].concat(node.arguments.required), + }); + } + } + if (unicode = unicode2latex.latex[node.source] || unicode2latex.latex[`${node.source}{}`]) + return this.text(unicode); + if ((unicode = unicode2latex.latex[`\\${node.command}`] || unicode2latex.latex[`\\${node.command}{}`]) && this.argument(node, 'none')) + return this.text(unicode); + if ((arg = this.argument(node, 'Text')) && (unicode = unicode2latex.latex[`\\${node.command}{${arg}}`])) + return this.text(unicode); + break; + } + if (this.in_preamble) + return this.text(node.source); + return this.error(new TeXError(`Unhandled command: ${node.command}` + this.show(node), node, this.chunk), this.text()); + } + preserveCase(word) { + // word = word.replace(new RegExp(`"[${this.markup.enquote.open}${this.markup.enquote.close}:()]`, 'g'), '') + var _a, _b; + if (!word.trim()) + return false; + if (!word.match(preserveCase.hasAlphaNum)) + return true; + word = word.replace(/[\/’'”:()]/g, ''); + if (word === 'I') + return true; + if (word.length === 1) + return false; + if (word.replace(preserveCase.notCaseSensitive) === '') + return false; + // word = word.replace(preserveCase.notAlphaNum, '') + // simple cap at start of field + if (word.match(preserveCase.leadingCap) && ((_b = (_a = this.field) === null || _a === void 0 ? void 0 : _a.text) === null || _b === void 0 ? void 0 : _b.length) === 0) + return false; + if (word.match(preserveCase.allCaps)) + return true; + if (word.length > 1 && word.match(preserveCase.joined)) + return false; + if (word.match(preserveCase.hasUpper)) + return true; + if (word.match(preserveCase.isNumber)) + return true; + return false; + } + convert(node) { + if (Array.isArray(node)) + return node.map(child => this.convert(child)); + if (this.options.raw && this.field) + node = this.text(node.source); + switch (node.kind) { + case 'Markup': + if (this.field) + this.field.text += node.value; + break; + case 'BracedComment': + case 'LineComment': + this.comments.push(node.value); + break; + case 'Entry': + this.convert_entry(node); + break; + case 'Number': + this.convert_number(node); + break; + case 'Text': + this.convert_text(node); + break; + case 'Block': + case 'InlineMath': + case 'DisplayMath': + const start = this.field ? this.field.text.length : null; + const preserve = typeof start === 'number' && this.field.preserveRanges; + this.convert_block(node); + if (preserve && (node.case || node.kind.endsWith('Math'))) + this.preserve(start, this.field.text.length); // , `convert-block: case=${node.case}, math=${node.kind.endsWith('Math')}`) + break; + case 'Environment': + this.convert_environment(node); + break; + case 'PreambleExpression': + this.preamble.push(node.value.map(preamble => preamble.source).join('\n\n')); + break; + case 'DisplayMath': + case 'InlineMath': + case 'StringDeclaration': + break; + default: + return this.error(new ParserError(`no converter for ${node.kind}: ${this.show(node)}`, node), undefined); + } + } + splitOnce(s, sep, fromEnd = false) { + const split = fromEnd ? s.lastIndexOf(sep) : s.indexOf(sep); + return (split < 0) ? [s, ''] : [s.substr(0, split), s.substr(split + 1)]; + } + parseName(name) { + let parsed = null; + const parts = name.split(marker.comma); + if (parts.length && !parts.find(p => !p.match(/^[a-z]+(-i)?=/i))) { // extended name format + for (const part of parts) { + parsed = parsed || {}; + const [attr, value] = this.splitOnce(part.replace(marker.re.space, ''), '=').map(v => v.trim()); + if (!value) { + parsed = null; + break; + } + switch (attr.toLowerCase()) { + case 'family': + parsed.lastName = value; + break; + case 'given-i': + parsed.initial = value; + break; + case 'given': + parsed.firstName = value; + break; + case 'prefix': + parsed.prefix = value; + break; + case 'suffix': + parsed.suffix = value; + break; + case 'useprefix': + parsed.useprefix = value.toLowerCase() === 'true'; + break; + case 'juniorcomma': + parsed.useprefix = value.toLowerCase() === 'true'; + break; + default: + parsed[attr.toLowerCase()] = value; + break; + } + } + } + const prefix = /(.+?)\s+(vere|von|van den|van der|van|de|del|della|der|di|da|pietro|vanden|du|st.|st|la|lo|ter|bin|ibn|te|ten|op|ben|al)\s+(.+)/; + let m; + switch (parsed ? 0 : parts.length) { + case 0: + // already parsed + break; + case 1: // name without commas + // literal + if (marker.re.literalName.test(parts[0])) { + parsed = { literal: parts[0] }; + } + else if (m = parts[0].replace(marker.re.space, ' ').match(prefix)) { // split on prefix + parsed = { + firstName: m[1], + prefix: m[2], + lastName: m[3], + }; + } + else { + // top-level "firstname lastname" + const [firstName, lastName] = this.splitOnce(parts[0], marker.space, true); + if (lastName) { + parsed = { firstName, lastName }; + } + else { + parsed = { lastName: firstName }; + } + } + break; + case 2: // lastname, firstname + parsed = { + lastName: parts[0], + firstName: parts[1], + }; + break; + default: // lastname, suffix, firstname + parsed = { + lastName: parts[0], + suffix: parts[1], + firstName: parts.slice(2).join(marker.comma), + }; + } + for (const [k, v] of Object.entries(parsed)) { + if (typeof v !== 'string') + continue; + parsed[k] = marker.clean(v).trim(); + } + return parsed; + } + convert_entry(node) { + var _a; + this.entry = { + key: node.id, + type: node.type, + fields: {}, + creators: {}, + }; + this.entries.push(this.entry); + // order these first for language-dependent sentence casing + const order = ['langid', 'hyphenation', 'language']; + node.fields.sort((a, b) => { + const ia = order.indexOf(a.name); + const ib = order.indexOf(b.name); + if (ia === -1 && ib === -1) + return a.name.localeCompare(b.name); // doesn't matter really + if (ia === -1) + return 1; + if (ib === -1) + return -1; + return ia - ib; + }); + let sentenceCase = !!this.options.sentenceCase.length; // if sentenceCase is empty, no sentence casing + for (const field of node.fields) { + if (field.kind !== 'Field') + return this.error(new ParserError(`Expected Field, got ${field.kind}`, node), undefined); + this.startCleaning(field.name); + /* + if (this.options.raw && this.fieldType !== 'creator') { + this.entry.fields[field.name] = [ field.value.map(v => v.source).join('') ] + continue + } + */ + this.field = { + name: field.name, + text: '', + level: 0, + words: { + upper: 0, + lower: 0, + other: 0, + }, + preserveRanges: (sentenceCase && fields.title.includes(field.name)) ? [] : null, + html: this.options.htmlFields.includes(field.name), + }; + this.entry.fields[this.field.name] = this.entry.fields[this.field.name] || []; + // special case for 'title = 2020' + if (field.value.kind === 'Number') { + this.entry.fields[this.field.name].push(field.value.value); + this.field = null; + continue; + } + this.convert(field.value); + this.field.text = this.field.text.trim(); + this.field.text = this.field.text.replace(/<\/([a-z])><\1>/g, ''); + this.field.text = this.field.text.replace(/<([a-z])>(\s*)<\/\1>/g, '$1'); + if (!this.field.text) + continue; + // disable sentenceCasing if not an english + switch (this.field.name) { + case 'langid': + case 'hyphenation': + sentenceCase = sentenceCase && this.options.sentenceCase.includes(this.field.text.toLowerCase()); + break; + case 'language': + sentenceCase = sentenceCase && !!(this.field.text.toLowerCase().trim().split(/\s*,\s*/).find(lang => this.options.sentenceCase.includes(lang))); + break; + } + // "groups" is a jabref 3.8+ monstrosity + if (this.field.name.match(/^(keywords?|groups)$/)) { + for (let text of this.field.text.split(marker.comma)) { + text = text.trim(); + if (text) + this.entry.fields[this.field.name].push(text); + } + } + else if (this.cleaning.type === 'creator') { + if (!this.entry.creators[this.field.name]) + this.entry.creators[this.field.name] = []; + // {M. Halle, J. Bresnan, and G. Miller} + if (this.field.text.includes(`${marker.comma}${marker.and}`)) { // + this.field.text = this.field.text.replace(new RegExp(`${marker.comma}${marker.and}`, 'g'), marker.and).replace(new RegExp(marker.comma), marker.and); + } + for (const creator of this.field.text.split(marker.and)) { + this.entry.fields[this.field.name].push(marker.clean(creator)); + this.entry.creators[this.field.name].push(this.parseName(creator)); + } + } + else if (fields.unabbrev.includes(field.name)) { // doesn't get sentence casing anyhow TODO: booktitle does! + this.entry.fields[this.field.name].push((((_a = this.options.unabbreviate[this.field.text]) === null || _a === void 0 ? void 0 : _a.text) || this.field.text).normalize('NFC')); + } + else { + if (this.field.preserveRanges) { + if (this.options.guessAlreadySentenceCased && Math.max(this.field.words.upper, this.field.words.lower) > (this.field.words.other + Math.min(this.field.words.upper, this.field.words.lower))) { + this.preserve(null, null); // , 'mostly sentence cased already') + } + else { + const txt = this.field.text.replace(preserveCase.markup, markup => marker.markup.repeat(markup.length)); + let match; + preserveCase.sentenceStart.lastIndex = 0; + while ((match = preserveCase.sentenceStart.exec(txt))) { + // exclude stuff like "U.S. Taxes" + if (match.index > 2 && txt.substr(0, match.index + 1).match(preserveCase.acronym)) + continue; + this.preserve(match.index, match.index + match[0].length); // , `sentenceStart: ${match[0]} at ${match.index}..${match.index + match[0].length}`) + } + preserveCase.quoted.lastIndex = 0; + while ((match = preserveCase.quoted.exec(this.field.text))) { + this.preserve(match.index, match.index + match[0].length); // , 'quoted') + } + } + } + this.entry.fields[this.field.name].push(this.convertToSentenceCase(this.field.text).normalize('NFC')); + } + } + this.field = null; + } + convertToSentenceCase(text) { + if (!this.field.preserveRanges) + return text; + // always keep the leading char, but skip markup + const lead = text.match(/^(<[^>]+>)*./); + if (lead) { + this.preserve(lead[0].length - 1, lead[0].length); + } + else { + this.preserve(0, 1); + } + let sentenceCased = text.toLowerCase().replace(/(([\?!]\s*|^)([\'\"¡¿“‘„«\s]+)?[^\s])/g, x => x.toUpperCase()); + for (const { start, end } of this.field.preserveRanges) { + sentenceCased = sentenceCased.substring(0, start) + text.substring(start, end) + sentenceCased.substring(end); + } + if (text !== sentenceCased) + this.entry.sentenceCased = true; + return sentenceCased; + } + convert_number(node) { + this.field.text += `${node.value}`; + } + convert_text(node) { + if (node.mode === 'verbatim') { + this.field.text += node.value.trim(); + return; + } + // heuristic to detect pre-sentencecased text + for (const word of node.value.split(/\b/)) { + if (word.match(preserveCase.allLower)) { + this.field.words.lower++; + } + else if (word.match(preserveCase.allCaps)) { + this.field.words.upper++; + } + else if (word.match(preserveCase.hasAlpha)) { + this.field.words.other++; + } + } + if (this.field.level === 0 && this.cleaning.type === 'creator') { + this.field.text += node.value.replace(/\s+and\s+/ig, marker.and).replace(/\s*,\s*/g, marker.comma).replace(/\s+/g, marker.space); + return; + } + if (this.field.level === 0 && this.field.name.match(/^(keywords?|groups)$/)) { + this.field.text += node.value.replace(/\s*[;,]\s*/g, marker.comma); + return; + } + if (this.field.html) { + this.field.text += node.value.replace(/&/g, '&').replace(//g, '>'); + } + else if (this.field.preserveRanges) { + const words = node.value.split(/(\s+)/); + for (const word of words) { + const start = this.field.text.length; + this.field.text += word; + if (this.preserveCase(word)) + this.preserve(start, this.field.text.length); // , `word: ${JSON.stringify(word)}`) + } + } + else { + this.field.text += node.value; + } + } + convert_environment(node) { + this.field.text += { enumerate: '
      ', itemize: '
        ' }[node.env]; + this.convert_block(Object.assign(Object.assign({}, node), { kind: 'Block', markup: {} })); + this.field.text += { enumerate: '
    ', itemize: '' }[node.env]; + } + convert_block(node) { + const start = this.field.text.length; + let prefix = ''; + let postfix = ''; + if (this.options.caseProtection !== 'strict' && this.cleaning.type === 'other') + delete node.case; + if (this.cleaning.type === 'creator' && node.case === 'protect') { + prefix += marker.literal; + postfix = marker.literal + postfix; + delete node.case; + } + if (node.case === 'protect') { + prefix += this.options.markup.caseProtect.open; + postfix = this.options.markup.caseProtect.close + postfix; + } + if (node.kind === 'Block') { + for (const markup of Object.keys(node.markup)) { + if (!this.options.markup[markup]) + return this.error(new ParserError(`markup: ${markup}`, node), undefined); + prefix += this.options.markup[markup].open; + postfix = this.options.markup[markup].close + postfix; + } + } + const end = { + withoutPrefix: this.field.text.length, + withPrefix: this.field.text.length + prefix.length, + }; + this.field.text += prefix; + this.field.level++; + this.convert(node.value); + this.field.level--; + const added = this.field.text.substring(end.withPrefix); + const added_text = added.replace(/<\/?[^>]+>/g, ''); + const needsProtection = added_text && ((this.options.caseProtection === 'strict' && added_text.match(preserveCase.isCaseSensitive)) + || + (this.options.caseProtection === 'as-needed' && added_text.split(/\s+/).find(word => this.needsProtection(word)))); + if (!added) { // nothing was added, so remove prefix + this.field.text = this.field.text.substring(0, end.withoutPrefix); + } + else if (this.field.preserveRanges && prefix === this.options.markup.caseProtect.open && !needsProtection) { + // something was added that didn't actually need case protection + this.field.text = this.field.text.substring(0, end.withoutPrefix) + added; + this.field.preserveRanges = this.field.preserveRanges.filter(range => range.start < end.withoutPrefix); + } + else { + this.field.text += postfix; + } + this.field.text = this.field.text.replace(/<(sup|sub)>([^<>]+)<\/\1>$/i, (m, mode, chars) => { + const cmd = mode === 'sup' ? '^' : '_'; + let script = ''; + for (const char of chars) { + const unicode = unicode2latex.latex[`${cmd}${char}`] || unicode2latex.latex[`${cmd}{${char}}`]; + script += unicode ? unicode : `<${mode}>${char}`; + } + script = script.replace(new RegExp(`<${mode}>`, 'g'), ''); + return script.length < m.length ? script : m; + }); + if (node.case && this.field.preserveRanges) + this.preserve(start, this.field.text.length); // , 'in convert-block ' + node.source || '') + } +} +/** + * parse bibtex. This will try to convert TeX commands into unicode equivalents, and apply `@string` expansion + */ +function parse(input, options = {}) { + const parser = new Parser(options); + return parser.parse(input); +} +exports.parse = parse; +function ast(input, options = {}, clean = true) { + const parser = new Parser(options); + return parser.ast(input, clean); +} +exports.ast = ast; +var chunker_2 = chunker; +Object.defineProperty(exports, "chunker", { enumerable: true, get: function () { return chunker_2.parse; } }); + +Object.defineProperty(exports, "jabref", { enumerable: true, get: function () { return jabref.parse; } }); + +}); + +var TEMPLATE_VARIABLES = { + citekey: 'Unique citekey', + abstract: '', + authorString: 'Comma-separated list of author names', + containerTitle: 'Title of the container holding the reference (e.g. book title for a book chapter, or the journal title for a journal article)', + DOI: '', + eprint: '', + eprinttype: '', + eventPlace: 'Location of event', + note: '', + page: 'Page or page range', + publisher: '', + publisherPlace: 'Location of publisher', + title: '', + titleShort: '', + URL: '', + year: 'Publication year', + zoteroSelectURI: 'URI to open the reference in Zotero', +}; +var Library = /** @class */ (function () { + function Library(entries) { + this.entries = entries; + } + Object.defineProperty(Library.prototype, "size", { + get: function () { + return Object.keys(this.entries).length; + }, + enumerable: false, + configurable: true + }); + /** + * For the given citekey, find the corresponding `Entry` and return a + * collection of template variable assignments. + */ + Library.prototype.getTemplateVariablesForCitekey = function (citekey) { + var _a; + var entry = this.entries[citekey]; + var shortcuts = { + citekey: citekey, + abstract: entry.abstract, + authorString: entry.authorString, + containerTitle: entry.containerTitle, + DOI: entry.DOI, + eprint: entry.eprint, + eprinttype: entry.eprinttype, + eventPlace: entry.eventPlace, + note: entry.note, + page: entry.page, + publisher: entry.publisher, + publisherPlace: entry.publisherPlace, + title: entry.title, + titleShort: entry.titleShort, + URL: entry.URL, + year: (_a = entry.year) === null || _a === void 0 ? void 0 : _a.toString(), + zoteroSelectURI: entry.zoteroSelectURI, + }; + return __assign({ entry: entry.toJSON() }, shortcuts); + }; + return Library; +}()); +/** + * An `Entry` represents a single reference in a reference database. + * Each entry has a unique identifier, known in most reference managers as its + * "citekey." + */ +var Entry = /** @class */ (function () { + function Entry() { + } + Object.defineProperty(Entry.prototype, "year", { + get: function () { + var _a; + return this._year + ? parseInt(this._year) + : (_a = this.issuedDate) === null || _a === void 0 ? void 0 : _a.getUTCFullYear(); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(Entry.prototype, "note", { + get: function () { + var _a; + return (_a = this._note) === null || _a === void 0 ? void 0 : _a.map(function (el) { return el.replace(/(zotero:\/\/.+)/g, '[Link]($1)'); }).join('\n\n'); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(Entry.prototype, "zoteroSelectURI", { + /** + * A URI which will open the relevant entry in the Zotero client. + */ + get: function () { + return "zotero://select/items/@" + this.id; + }, + enumerable: false, + configurable: true + }); + Entry.prototype.toJSON = function () { + var _this = this; + var jsonObj = Object.assign({}, this); + // add getter values + var proto = Object.getPrototypeOf(this); + Object.entries(Object.getOwnPropertyDescriptors(proto)) + .filter(function (_a) { + var descriptor = _a[1]; + return typeof descriptor.get == 'function'; + }) + .forEach(function (_a) { + var key = _a[0], descriptor = _a[1]; + if (descriptor && key[0] !== '_') { + try { + var val = _this[key]; + jsonObj[key] = val; + } + catch (error) { + return; + } + } + }); + return jsonObj; + }; + return Entry; +}()); +var EntryCSLAdapter = /** @class */ (function (_super) { + __extends(EntryCSLAdapter, _super); + function EntryCSLAdapter(data) { + var _this = _super.call(this) || this; + _this.data = data; + _this.eprint = null; + _this.eprinttype = null; + _this.files = null; + return _this; + } + Object.defineProperty(EntryCSLAdapter.prototype, "id", { + get: function () { + return this.data.id; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryCSLAdapter.prototype, "type", { + get: function () { + return this.data.type; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryCSLAdapter.prototype, "abstract", { + get: function () { + return this.data.abstract; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryCSLAdapter.prototype, "author", { + get: function () { + return this.data.author; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryCSLAdapter.prototype, "authorString", { + get: function () { + return this.data.author + ? this.data.author.map(function (a) { return a.given + " " + a.family; }).join(', ') + : null; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryCSLAdapter.prototype, "containerTitle", { + get: function () { + return this.data['container-title']; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryCSLAdapter.prototype, "DOI", { + get: function () { + return this.data.DOI; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryCSLAdapter.prototype, "eventPlace", { + get: function () { + return this.data['event-place']; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryCSLAdapter.prototype, "issuedDate", { + get: function () { + if (!(this.data.issued && + this.data.issued['date-parts'] && + this.data.issued['date-parts'][0].length > 0)) + return null; + var _a = this.data.issued['date-parts'][0], year = _a[0], month = _a[1], day = _a[2]; + return new Date(Date.UTC(year, (month || 1) - 1, day || 1)); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryCSLAdapter.prototype, "page", { + get: function () { + return this.data.page; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryCSLAdapter.prototype, "publisher", { + get: function () { + return this.data.publisher; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryCSLAdapter.prototype, "publisherPlace", { + get: function () { + return this.data['publisher-place']; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryCSLAdapter.prototype, "title", { + get: function () { + return this.data.title; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryCSLAdapter.prototype, "titleShort", { + get: function () { + return this.data['title-short']; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryCSLAdapter.prototype, "URL", { + get: function () { + return this.data.URL; + }, + enumerable: false, + configurable: true + }); + return EntryCSLAdapter; +}(Entry)); +var BIBLATEX_PROPERTY_MAPPING = { + abstract: 'abstract', + booktitle: '_containerTitle', + date: 'issued', + doi: 'DOI', + eprint: 'eprint', + eprinttype: 'eprinttype', + eventtitle: 'event', + journal: '_containerTitle', + journaltitle: '_containerTitle', + location: 'publisherPlace', + pages: 'page', + shortjournal: 'containerTitleShort', + title: 'title', + shorttitle: 'titleShort', + url: 'URL', + venue: 'eventPlace', + year: '_year', + publisher: 'publisher', + note: '_note', +}; +// BibLaTeX parser returns arrays of property values (allowing for repeated +// property entries). For the following fields, just blindly take the first. +var BIBLATEX_PROPERTY_TAKE_FIRST = [ + 'abstract', + 'booktitle', + '_containerTitle', + 'date', + 'doi', + 'eprint', + 'eprinttype', + 'eventtitle', + 'journaltitle', + 'location', + 'pages', + 'shortjournal', + 'title', + 'shorttitle', + 'url', + 'venue', + '_year', + 'publisher', +]; +var EntryBibLaTeXAdapter = /** @class */ (function (_super) { + __extends(EntryBibLaTeXAdapter, _super); + function EntryBibLaTeXAdapter(data) { + var _this = _super.call(this) || this; + _this.data = data; + Object.entries(BIBLATEX_PROPERTY_MAPPING).forEach(function (map) { + var src = map[0], tgt = map[1]; + if (src in _this.data.fields) { + var val = _this.data.fields[src]; + if (BIBLATEX_PROPERTY_TAKE_FIRST.includes(src)) { + val = val[0]; + } + _this[tgt] = val; + } + }); + return _this; + } + Object.defineProperty(EntryBibLaTeXAdapter.prototype, "id", { + get: function () { + return this.data.key; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryBibLaTeXAdapter.prototype, "type", { + get: function () { + return this.data.type; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryBibLaTeXAdapter.prototype, "files", { + get: function () { + // For some reason the bibtex parser doesn't reliably parse file list to + // array ; so we'll do it manually / redundantly + var ret = []; + if (this.data.fields.file) { + ret = ret.concat(this.data.fields.file.flatMap(function (x) { return x.split(';'); })); + } + if (this.data.fields.files) { + ret = ret.concat(this.data.fields.files.flatMap(function (x) { return x.split(';'); })); + } + return ret; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryBibLaTeXAdapter.prototype, "authorString", { + get: function () { + var _a; + if (this.data.creators.author) { + var names = this.data.creators.author.map(function (name) { + if (name.literal) + return name.literal; + var parts = [name.firstName, name.prefix, name.lastName, name.suffix]; + // Drop any null parts and join + return parts.filter(function (x) { return x; }).join(' '); + }); + return names.join(', '); + } + else { + return (_a = this.data.fields.author) === null || _a === void 0 ? void 0 : _a.join(', '); + } + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryBibLaTeXAdapter.prototype, "containerTitle", { + get: function () { + if (this._containerTitle) { + return this._containerTitle; + } + else if (this.data.fields.eprint) { + var prefix = this.data.fields.eprinttype + ? this.data.fields.eprinttype + ":" + : ''; + var suffix = this.data.fields.primaryclass + ? " [" + this.data.fields.primaryclass + "]" + : ''; + return "" + prefix + this.data.fields.eprint + suffix; + } + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryBibLaTeXAdapter.prototype, "issuedDate", { + get: function () { + return this.issued ? new Date(this.issued) : null; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryBibLaTeXAdapter.prototype, "author", { + get: function () { + var _a; + return (_a = this.data.creators.author) === null || _a === void 0 ? void 0 : _a.map(function (a) { return ({ + given: a.firstName, + family: a.lastName, + }); }); + }, + enumerable: false, + configurable: true + }); + return EntryBibLaTeXAdapter; +}(Entry)); + +var CITATION_DATABASE_FORMAT_LABELS = { + 'csl-json': 'CSL-JSON', + biblatex: 'BibLaTeX', +}; +var CitationsPluginSettings = /** @class */ (function () { + function CitationsPluginSettings() { + this.citationExportFormat = 'csl-json'; + this.literatureNoteTitleTemplate = '@{{citekey}}'; + this.literatureNoteFolder = 'Reading notes'; + this.literatureNoteContentTemplate = '---\n' + + 'title: {{title}}\n' + + 'authors: {{authorString}}\n' + + 'year: {{year}}\n' + + '---\n\n'; + this.markdownCitationTemplate = '[@{{citekey}}]'; + this.alternativeMarkdownCitationTemplate = '@{{citekey}}'; + } + return CitationsPluginSettings; +}()); +var CitationSettingTab = /** @class */ (function (_super) { + __extends(CitationSettingTab, _super); + function CitationSettingTab(app, plugin) { + var _this = _super.call(this, app, plugin) || this; + _this.plugin = plugin; + return _this; + } + CitationSettingTab.prototype.open = function () { + var _this = this; + _super.prototype.open.call(this); + this.checkCitationExportPath(this.plugin.settings.citationExportPath).then(function () { return _this.showCitationExportPathSuccess(); }); + }; + CitationSettingTab.prototype.addValueChangeCallback = function (component, settingsKey, cb) { + var _this = this; + component.onChange(function (value) { return __awaiter(_this, void 0, void 0, function () { + return __generator(this, function (_a) { + this.plugin.settings[settingsKey] = value; + this.plugin.saveSettings().then(function () { + if (cb) { + cb(value); + } + }); + return [2 /*return*/]; + }); + }); }); + }; + CitationSettingTab.prototype.buildValueInput = function (component, settingsKey, cb) { + component.setValue(this.plugin.settings[settingsKey]); + this.addValueChangeCallback(component, settingsKey, cb); + }; + CitationSettingTab.prototype.display = function () { + var _this = this; + var containerEl = this.containerEl; + containerEl.empty(); + containerEl.setAttr('id', 'zoteroSettingTab'); + containerEl.createEl('h2', { text: 'Citation plugin settings' }); + new obsidian.Setting(containerEl) + .setName('Citation database format') + .addDropdown(function (component) { + return _this.buildValueInput(component.addOptions(CITATION_DATABASE_FORMAT_LABELS), 'citationExportFormat', function (value) { + _this.checkCitationExportPath(_this.plugin.settings.citationExportPath).then(function (success) { + if (success) { + _this.citationPathSuccessEl.addClass('d-none'); + _this.citationPathLoadingEl.removeClass('d-none'); + _this.plugin.loadLibrary().then(function () { + _this.citationPathLoadingEl.addClass('d-none'); + _this.showCitationExportPathSuccess(); + }); + } + }); + }); + }); + // NB: we force reload of the library on path change. + new obsidian.Setting(containerEl) + .setName('Citation database path') + .setDesc('Path to citation library exported by your reference manager. ' + + 'Can be an absolute path or a path relative to the current vault root folder. ' + + 'Citations will be automatically reloaded whenever this file updates.') + .addText(function (input) { + return _this.buildValueInput(input.setPlaceholder('/path/to/export.json'), 'citationExportPath', function (value) { + _this.checkCitationExportPath(value).then(function (success) { + return success && + _this.plugin + .loadLibrary() + .then(function () { return _this.showCitationExportPathSuccess(); }); + }); + }); + }); + this.citationPathLoadingEl = containerEl.createEl('p', { + cls: 'zoteroSettingCitationPathLoading d-none', + text: 'Loading citation database...', + }); + this.citationPathErrorEl = containerEl.createEl('p', { + cls: 'zoteroSettingCitationPathError d-none', + text: 'The citation export file cannot be found. Please check the path above.', + }); + this.citationPathSuccessEl = containerEl.createEl('p', { + cls: 'zoteroSettingCitationPathSuccess d-none', + text: 'Loaded library with {{n}} references.', + }); + new obsidian.Setting(containerEl) + .setName('Literature note folder') + .addText(function (input) { return _this.buildValueInput(input, 'literatureNoteFolder'); }) + .setDesc('Save literature note files in this folder within your vault. If empty, notes will be stored in the root directory of the vault.'); + containerEl.createEl('h3', { text: 'Template settings' }); + var templateInstructionsEl = containerEl.createEl('p'); + templateInstructionsEl.append(createSpan({ + text: 'The following settings determine how the notes and links created by ' + + 'the plugin will be rendered. You may specify a custom template for ' + + 'each type of content. Templates are interpreted using ', + })); + templateInstructionsEl.append(createEl('a', { + text: 'Handlebars', + href: 'https://handlebarsjs.com/guide/expressions.html', + })); + templateInstructionsEl.append(createSpan({ + text: ' syntax. You can make reference to the following variables:', + })); + var templateVariableUl = containerEl.createEl('ul', { + attr: { id: 'citationTemplateVariables' }, + }); + Object.entries(TEMPLATE_VARIABLES).forEach(function (variableData) { + var key = variableData[0], description = variableData[1], templateVariableItem = templateVariableUl.createEl('li'); + templateVariableItem.createEl('span', { + cls: 'text-monospace', + text: '{{' + key + '}}', + }); + templateVariableItem.createEl('span', { + text: description ? " \u2014 " + description : '', + }); + }); + var templateEntryInstructionsEl = containerEl.createEl('p'); + templateEntryInstructionsEl.append(createSpan({ text: 'Advanced users may also refer to the ' }), createSpan({ text: '{{entry}}', cls: 'text-monospace' }), createSpan({ + text: ' variable, which contains the full object representation of the ' + + 'reference as used internally by the plugin. See the ', + }), createEl('a', { + text: 'plugin documentation', + href: 'http://www.foldl.me/obsidian-citation-plugin/classes/entry.html', + }), createSpan({ text: " for information on this object's structure." })); + containerEl.createEl('h3', { text: 'Literature note templates' }); + new obsidian.Setting(containerEl) + .setName('Literature note title template') + .addText(function (input) { + return _this.buildValueInput(input, 'literatureNoteTitleTemplate'); + }); + new obsidian.Setting(containerEl) + .setName('Literature note content template') + .addTextArea(function (input) { + return _this.buildValueInput(input, 'literatureNoteContentTemplate'); + }); + containerEl.createEl('h3', { text: 'Markdown citation templates' }); + containerEl.createEl('p', { + text: 'You can insert Pandoc-style Markdown citations rather than literature notes by using the "Insert Markdown citation" command. The below options allow customization of the Markdown citation format.', + }); + new obsidian.Setting(containerEl) + .setName('Markdown primary citation template') + .addText(function (input) { + return _this.buildValueInput(input, 'markdownCitationTemplate'); + }); + new obsidian.Setting(containerEl) + .setName('Markdown secondary citation template') + .addText(function (input) { + return _this.buildValueInput(input, 'alternativeMarkdownCitationTemplate'); + }); + }; + /** + * Returns true iff the path exists; displays error as a side-effect + */ + CitationSettingTab.prototype.checkCitationExportPath = function (filePath) { + return __awaiter(this, void 0, void 0, function () { + var e_1; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + this.citationPathLoadingEl.addClass('d-none'); + _a.label = 1; + case 1: + _a.trys.push([1, 3, , 4]); + return [4 /*yield*/, obsidian.FileSystemAdapter.readLocalFile(this.plugin.resolveLibraryPath(filePath))]; + case 2: + _a.sent(); + this.citationPathErrorEl.addClass('d-none'); + return [3 /*break*/, 4]; + case 3: + e_1 = _a.sent(); + this.citationPathSuccessEl.addClass('d-none'); + this.citationPathErrorEl.removeClass('d-none'); + return [2 /*return*/, false]; + case 4: return [2 /*return*/, true]; + } + }); + }); + }; + CitationSettingTab.prototype.showCitationExportPathSuccess = function () { + if (!this.plugin.library) + return; + this.citationPathSuccessEl.setText("Loaded library with " + this.plugin.library.size + " references."); + this.citationPathSuccessEl.removeClass('d-none'); + }; + return CitationSettingTab; +}(obsidian.PluginSettingTab)); + +var messageIds = 0; + +function onMessage (self, e) { + var message = e.data; + if (!Array.isArray(message) || message.length < 2) { + // Ignore - this message is not for us. + return + } + var messageId = message[0]; + var error = message[1]; + var result = message[2]; + + var callback = self._callbacks[messageId]; + + if (!callback) { + // Ignore - user might have created multiple PromiseWorkers. + // This message is not for us. + return + } + + delete self._callbacks[messageId]; + callback(error, result); +} + +function PromiseWorker (worker) { + var self = this; + self._worker = worker; + self._callbacks = {}; + + worker.addEventListener('message', function (e) { + onMessage(self, e); + }); +} + +PromiseWorker.prototype.postMessage = function (userMessage) { + var self = this; + var messageId = messageIds++; + + var messageToSend = [messageId, userMessage]; + + return new Promise(function (resolve, reject) { + self._callbacks[messageId] = function (error, result) { + if (error) { + return reject(new Error(error.message)) + } + resolve(result); + }; + + /* istanbul ignore if */ + if (typeof self._worker.controller !== 'undefined') { + // service worker, use MessageChannels because e.source is broken in Chrome < 51: + // https://bugs.chromium.org/p/chromium/issues/detail?id=543198 + var channel = new MessageChannel(); + channel.port1.onmessage = function (e) { + onMessage(self, e); + }; + self._worker.controller.postMessage(messageToSend, [channel.port2]); + } else { + // web worker + self._worker.postMessage(messageToSend); + } + }) +}; + +var promiseWorker = PromiseWorker; + +/** + * Declares properties and methods which are missing from the Obsidian API. + */ +var NoticeExt = /** @class */ (function (_super) { + __extends(NoticeExt, _super); + function NoticeExt() { + return _super !== null && _super.apply(this, arguments) || this; + } + NoticeExt.DISAPPEARING_CLASS = 'mod-disappearing'; + return NoticeExt; +}(obsidian.Notice)); + +var DISALLOWED_FILENAME_CHARACTERS_RE = /[*"\\/<>:|?]/g; +/** + * Manages a category of notices to be displayed in the UI. Prevents multiple + * notices being shown at the same time. + */ +var Notifier = /** @class */ (function () { + function Notifier(defaultMessage) { + this.defaultMessage = defaultMessage; + } + Notifier.prototype.unload = function () { + this.hide(); + }; + /** + * @returns true if the notice was shown, and false otherwise + */ + Notifier.prototype.show = function (message) { + var _this = this; + var _a; + message = message || this.defaultMessage; + if (this.currentNotice) + return false; + this.currentNotice = new obsidian.Notice(message); + // Set up mutation observer to watch for when the notice disappears. + (_a = this.mutationObserver) === null || _a === void 0 ? void 0 : _a.disconnect(); + this.mutationObserver = new MutationObserver(function (changes, observer) { + var isDisappearing = changes.some(function (change) { + var el = change.target; + return (change.type == 'attributes' && + el.hasClass(NoticeExt.DISAPPEARING_CLASS)); + }); + if (isDisappearing) { + _this.currentNotice = null; + observer.disconnect(); + _this.mutationObserver = null; + } + }); + this.mutationObserver.observe(this.currentNotice.noticeEl, { + attributeFilter: ['class'], + }); + }; + Notifier.prototype.hide = function () { + var _a, _b; + (_a = this.currentNotice) === null || _a === void 0 ? void 0 : _a.hide(); + (_b = this.mutationObserver) === null || _b === void 0 ? void 0 : _b.disconnect(); + this.currentNotice = null; + this.mutationObserver = null; + }; + Notifier.DISAPPEARING_CLASS = 'mod-disappearing'; + return Notifier; +}()); +/** + * Manages a Worker, recording its state and optionally preventing + * message postings before responses to prior messages have been received. + */ +var WorkerManager = /** @class */ (function () { + function WorkerManager(_worker, options) { + this._worker = _worker; + this.worker = new promiseWorker(this._worker); + /** + * Only relevant when `blockingChannel` option is true. + * Then this property is true iff the worker is currently processing a + * received message, and has not yet posted a response. + */ + this.blocked = false; + this.options = __assign(__assign({}, workerManagerDefaultOptions), options); + } + /** + * Attempt to post a message to the worker and return a promise response. + * + * If `blockingChannel` option is true and the channel is currently blocked, + * the message will be discarded and an error will be thrown. + */ + WorkerManager.prototype.post = function (msg) { + return __awaiter(this, void 0, void 0, function () { + var _this = this; + return __generator(this, function (_a) { + if (this.options.blockingChannel && this.blocked) { + throw new WorkerManagerBlocked(); + } + this.blocked = true; + return [2 /*return*/, this.worker.postMessage(msg).then(function (result) { + _this.blocked = false; + return result; + }, function (error) { + _this.blocked = false; + throw error; + })]; + }); + }); + }; + return WorkerManager; +}()); +var WorkerManagerBlocked = /** @class */ (function (_super) { + __extends(WorkerManagerBlocked, _super); + function WorkerManagerBlocked() { + var _this = _super.call(this, 'WorkerManager: discarded message because channel is blocked') || this; + Object.setPrototypeOf(_this, WorkerManagerBlocked.prototype); + return _this; + } + return WorkerManagerBlocked; +}(Error)); +var workerManagerDefaultOptions = { + blockingChannel: false, +}; + +function funcToSource(fn, sourcemapArg) { + var sourcemap = sourcemapArg === undefined ? null : sourcemapArg; + var source = fn.toString(); + var lines = source.split('\n'); + lines.pop(); + lines.shift(); + var blankPrefixLength = lines[0].search(/\S/); + var regex = /(['"])__worker_loader_strict__(['"])/g; + for (var i = 0, n = lines.length; i < n; ++i) { + lines[i] = lines[i].substring(blankPrefixLength).replace(regex, '$1use strict$2') + '\n'; + } + if (sourcemap) { + lines.push('\/\/# sourceMappingURL=' + sourcemap + '\n'); + } + return lines; +} + +function createURL(fn, sourcemapArg) { + var lines = funcToSource(fn, sourcemapArg); + var blob = new Blob(lines, { type: 'application/javascript' }); + return URL.createObjectURL(blob); +} + +function createInlineWorkerFactory(fn, sourcemapArg) { + var url; + return function WorkerFactory(options) { + url = url || createURL(fn, sourcemapArg); + return new Worker(url, options); + }; +} + +var WorkerFactory = createInlineWorkerFactory(/* rollup-plugin-web-worker-loader */function () { +(function () { + '__worker_loader_strict__'; + + function isPromise (obj) { + // via https://unpkg.com/is-promise@2.1.0/index.js + return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function' + } + + function registerPromiseWorker (callback) { + function postOutgoingMessage (e, messageId, error, result) { + function postMessage (msg) { + /* istanbul ignore if */ + if (typeof self.postMessage !== 'function') { // service worker + e.ports[0].postMessage(msg); + } else { // web worker + self.postMessage(msg); + } + } + if (error) { + /* istanbul ignore else */ + if (typeof console !== 'undefined' && 'error' in console) { + // This is to make errors easier to debug. I think it's important + // enough to just leave here without giving the user an option + // to silence it. + console.error('Worker caught an error:', error); + } + postMessage([messageId, { + message: error.message + }]); + } else { + postMessage([messageId, null, result]); + } + } + + function tryCatchFunc (callback, message) { + try { + return { res: callback(message) } + } catch (e) { + return { err: e } + } + } + + function handleIncomingMessage (e, callback, messageId, message) { + var result = tryCatchFunc(callback, message); + + if (result.err) { + postOutgoingMessage(e, messageId, result.err); + } else if (!isPromise(result.res)) { + postOutgoingMessage(e, messageId, null, result.res); + } else { + result.res.then(function (finalResult) { + postOutgoingMessage(e, messageId, null, finalResult); + }, function (finalError) { + postOutgoingMessage(e, messageId, finalError); + }); + } + } + + function onIncomingMessage (e) { + var payload = e.data; + if (!Array.isArray(payload) || payload.length !== 2) { + // message doens't match communication format; ignore + return + } + var messageId = payload[0]; + var message = payload[1]; + + if (typeof callback !== 'function') { + postOutgoingMessage(e, messageId, new Error( + 'Please pass a function into register().')); + } else { + handleIncomingMessage(e, callback, messageId, message); + } + } + + self.addEventListener('message', onIncomingMessage); + } + + var register = registerPromiseWorker; + + /*! ***************************************************************************** + Copyright (c) Microsoft Corporation. + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + ***************************************************************************** */ + /* global Reflect, Promise */ + + var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + + function __extends(d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + } + + var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); + }; + + function createCommonjsModule(fn, basedir, module) { + return module = { + path: basedir, + exports: {}, + require: function (path, base) { + return commonjsRequire(path, (base === undefined || base === null) ? module.path : base); + } + }, fn(module, module.exports), module.exports; + } + + function commonjsRequire () { + throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs'); + } + + /* + * Generated by PEG.js 0.10.0. + * + * http://pegjs.org/ + */ + + function peg$subclass(child, parent) { + function ctor() { this.constructor = child; } + ctor.prototype = parent.prototype; + child.prototype = new ctor(); + } + + function peg$SyntaxError(message, expected, found, location) { + this.message = message; + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + + if (typeof Error.captureStackTrace === "function") { + Error.captureStackTrace(this, peg$SyntaxError); + } + } + + peg$subclass(peg$SyntaxError, Error); + + peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + "class": function(expectation) { + var escapedParts = "", + i; + + for (i = 0; i < expectation.parts.length; i++) { + escapedParts += expectation.parts[i] instanceof Array + ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1]) + : classEscape(expectation.parts[i]); + } + + return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]"; + }, + + any: function(expectation) { + return "any character"; + }, + + end: function(expectation) { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; + } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } + + function literalEscape(s) { + return s + .replace(/\\/g, '\\\\') + .replace(/"/g, '\\"') + .replace(/\0/g, '\\0') + .replace(/\t/g, '\\t') + .replace(/\n/g, '\\n') + .replace(/\r/g, '\\r') + .replace(/[\x00-\x0F]/g, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function classEscape(s) { + return s + .replace(/\\/g, '\\\\') + .replace(/\]/g, '\\]') + .replace(/\^/g, '\\^') + .replace(/-/g, '\\-') + .replace(/\0/g, '\\0') + .replace(/\t/g, '\\t') + .replace(/\n/g, '\\n') + .replace(/\r/g, '\\r') + .replace(/[\x00-\x0F]/g, function(ch) { return '\\x0' + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = new Array(expected.length), + i, j; + + for (i = 0; i < expected.length; i++) { + descriptions[i] = describeExpectation(expected[i]); + } + + descriptions.sort(); + + if (descriptions.length > 0) { + for (i = 1, j = 1; i < descriptions.length; i++) { + if (descriptions[i - 1] !== descriptions[i]) { + descriptions[j] = descriptions[i]; + j++; + } + } + descriptions.length = j; + } + + switch (descriptions.length) { + case 1: + return descriptions[0]; + + case 2: + return descriptions[0] + " or " + descriptions[1]; + + default: + return descriptions.slice(0, -1).join(", ") + + ", or " + + descriptions[descriptions.length - 1]; + } + } + + function describeFound(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + } + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; + }; + + function peg$parse(input, options) { + options = options !== void 0 ? options : {}; + + var peg$FAILED = {}, + + peg$startRuleFunctions = { Bibliography: peg$parseBibliography }, + peg$startRuleFunction = peg$parseBibliography, + + peg$c0 = function(r) { + return { + kind: 'Bibliography', + loc: location(), + source: text(), + children: r, + } + }, + peg$c1 = "@", + peg$c2 = peg$literalExpectation("@", false), + peg$c3 = "comment", + peg$c4 = peg$literalExpectation("comment", true), + peg$c5 = function(v) { + return { + kind: 'BracedComment', + loc: location(), + source: text(), + value: v.slice(1, -1), + } + }, + peg$c6 = /^[^\n\r]/, + peg$c7 = peg$classExpectation(["\n", "\r"], true, false), + peg$c8 = /^[\n\r]/, + peg$c9 = peg$classExpectation(["\n", "\r"], false, false), + peg$c10 = function(v) { + return { + kind: 'LineComment', + loc: location(), + source: text(), + value: normalizeWhitespace(v), + } + }, + peg$c11 = /^[^@]/, + peg$c12 = peg$classExpectation(["@"], true, false), + peg$c13 = function(v) { + return { + kind: 'NonEntryText', + loc: location(), + source: text(), + value: normalizeWhitespace(v), + } + }, + peg$c14 = function(n) { return n; }, + peg$c15 = "{", + peg$c16 = peg$literalExpectation("{", false), + peg$c17 = /^[^{}]/, + peg$c18 = peg$classExpectation(["{", "}"], true, false), + peg$c19 = "}", + peg$c20 = peg$literalExpectation("}", false), + peg$c21 = function(comment) { return '{' + comment.join('') + '}' }, + peg$c22 = /^[A-Za-z]/, + peg$c23 = peg$classExpectation([["A", "Z"], ["a", "z"]], false, false), + peg$c24 = /^[({]/, + peg$c25 = peg$classExpectation(["(", "{"], false, false), + peg$c26 = /^[})]/, + peg$c27 = peg$classExpectation(["}", ")"], false, false), + peg$c28 = function(type, id, fields) { + return { + kind: 'Entry', + id: id || '', + type: type.toLowerCase(), + loc: location(), + source: text(), + fields: fields, + } + }, + peg$c29 = "preamble", + peg$c30 = peg$literalExpectation("preamble", true), + peg$c31 = function(opener, v, closer) { + switch (opener + closer) { + case '{}': + case '()': + break + default: + throw new Error(`Unbalanced opener-closer for preamble: ${opener}...${closer}`) + } + return { + kind: 'PreambleExpression', + loc: location(), + source: text(), + value: v.reduce((a, b) => a.concat(b), []), + } + }, + peg$c32 = "string", + peg$c33 = peg$literalExpectation("string", true), + peg$c34 = function(k, v) { + return { + kind: 'StringDeclaration', + loc: location(), + source: text(), + name: k, + value: v.reduce((a, b) => a.concat(b), []), + } + }, + peg$c35 = /^[^ \t\r\n,]/, + peg$c36 = peg$classExpectation([" ", "\t", "\r", "\n", ","], true, false), + peg$c37 = ",", + peg$c38 = peg$literalExpectation(",", false), + peg$c39 = function(id) { return id; }, + peg$c40 = function(name) { return isVerbatimField(name) && unnestFields.includes(name) }, + peg$c41 = function(name, value) { + // because this was abused so much, many processors treat double-outer-braces as single + return { + kind: 'Field', + loc: location(), + source: text(), + name: name, + loc: location(), + value: [ protect(value) ] + } + }, + peg$c42 = function(name) { return isVerbatimField(name) }, + peg$c43 = function(name, value) { + return { + kind: 'Field', + loc: location(), + source: text(), + name: name, + loc: location(), + value: [ protect(value) ] + } + }, + peg$c44 = function(name, value) { + // because this was abused so much, many processors treat double-outer-braces as single + if (unnestFields.includes(name) && Array.isArray(value) && value.length === 1 && value[0].kind === 'Block') { + if (options.unnestMode === 'preserve') { + value[0].case = 'preserve'; + } else { + value = value[0].value; + } + } + + return handle_markup_switches({ + kind: 'Field', + loc: location(), + source: text(), + name: name, + value: value, + }) + }, + peg$c45 = /^[_:a-zA-Z0-9\-]/, + peg$c46 = peg$classExpectation(["_", ":", ["a", "z"], ["A", "Z"], ["0", "9"], "-"], false, false), + peg$c47 = function(name) { return name.toLowerCase() }, + peg$c48 = "\"", + peg$c49 = peg$literalExpectation("\"", false), + peg$c50 = function(v) { + v = v || { + kind: 'Text', + loc: location(), + source: text(), + value: '', + }; + v.mode = 'verbatim'; + return basicTextConversions(v) + }, + peg$c51 = function(v) { + return basicTextConversions({ + kind: 'Text', + loc: location(), + source: text(), + value: v.join('').trim(), + mode: 'verbatim', + }) + }, + peg$c52 = function(v) { return v }, + peg$c53 = function(v) { return '{' + v.join('') + '}' }, + peg$c54 = function() { return math.set(false) }, + peg$c55 = function(v) { + return v.reduce((a, b) => a.concat(b), []); + }, + peg$c56 = function(v) { return v; }, + peg$c57 = "{\\verb", + peg$c58 = peg$literalExpectation("{\\verb", false), + peg$c59 = /^[a-zA-Z]/, + peg$c60 = peg$classExpectation([["a", "z"], ["A", "Z"]], false, false), + peg$c61 = /^[^\^_${}\\]/, + peg$c62 = peg$classExpectation(["^", "_", "$", "{", "}", "\\"], true, false), + peg$c63 = function(v) { + return basicTextConversions({ + kind: 'Text', + loc: location(), + source: text(), + value: normalizeWhitespace(v), + mode: math.on ? 'math' : 'text', + }) + }, + peg$c64 = /^[^\^_${}"\\]/, + peg$c65 = peg$classExpectation(["^", "_", "$", "{", "}", "\"", "\\"], true, false), + peg$c66 = /^[0-9]/, + peg$c67 = peg$classExpectation([["0", "9"]], false, false), + peg$c68 = function(v) { + return { + kind: 'Number', + loc: location(), + source: text(), + value: parseInt(v, 10), + } + }, + peg$c69 = function(v) { + return { + kind: 'StringReference', + loc: location(), + source: text(), + name: v, + } + }, + peg$c70 = "\\begin{", + peg$c71 = peg$literalExpectation("\\begin{", false), + peg$c72 = /^[a-zA-Z0-9]/, + peg$c73 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false), + peg$c74 = "\\end{", + peg$c75 = peg$literalExpectation("\\end{", false), + peg$c76 = function(env, v, cenv) { return env === cenv }, + peg$c77 = function(env, v, cenv) { + if (markup[env]) { + return { + kind: 'Block', + loc: location(), + source: text(), + value: v, + markup: { [markup[env]]: true }, + } + } else { + return { + kind: 'Environment', + loc: location(), + source: text(), + value: v, + env: env, + } + } + }, + peg$c78 = "{\\", + peg$c79 = peg$literalExpectation("{\\", false), + peg$c80 = "\\", + peg$c81 = peg$literalExpectation("\\", false), + peg$c82 = /^[ij]/, + peg$c83 = peg$classExpectation(["i", "j"], false, false), + peg$c84 = function(mark, char) { + return { + kind: 'DiacriticCommand', + loc: location(), + source: text(), + mark: mark, + dotless: !!char[1], + character: char[1] || char[0], + } + }, + peg$c85 = function(v) { + return basicTextConversions({ + kind: 'Text', + loc: location(), + source: text(), + value: v.join('').trim(), + mode: 'verbatim', + }) + }, + peg$c86 = function(v) { + const block = { + kind: 'Block', + loc: location(), + source: text(), + value: v, + markup: {}, + case: 'protect', + }; + + let leadingcmd = block.value.length && (block.value[0].kind.endsWith('Command') || block.value[0].kind === 'Environment') ? block.value[0] : null; + let leadingcmdblockarg = leadingcmd + && leadingcmd.kind === 'RegularCommand' + && leadingcmd.arguments.required.length + && leadingcmd.arguments.required[0].kind === 'Block' + && leadingcmd.arguments.required[0]; + + // https://github.com/retorquere/zotero-better-bibtex/issues/541#issuecomment-240156274 + if (leadingcmd) { + delete block.case; + + // command with a block cancels out case protection with containing block + // if a smallcaps block has set case to 'preserve' we want to keep this + if (leadingcmdblockarg && leadingcmdblockarg.case === 'protect') delete leadingcmdblockarg.case; + + // \sl, \it etc + if (markup[leadingcmd.command]) { + block.markup[markup[leadingcmd.command]] = true; + block.value.shift(); + } + } + + return handle_markup_switches(block) + }, + peg$c87 = function() { return !math.on }, + peg$c88 = "$", + peg$c89 = peg$literalExpectation("$", false), + peg$c90 = "$$", + peg$c91 = peg$literalExpectation("$$", false), + peg$c92 = function(mode) { return math.set(true) }, + peg$c93 = function(mode, v) { return math.set(false) }, + peg$c94 = function(mode, v) { + return { + kind: mode == '$$' ? 'DisplayMath' : 'InlineMath', + loc: location(), + source: text(), + value: v, + case: 'protect', + markup: {}, + } + }, + peg$c95 = "%", + peg$c96 = peg$literalExpectation("%", false), + peg$c97 = /^[^\r\n]/, + peg$c98 = peg$classExpectation(["\r", "\n"], true, false), + peg$c99 = function(v) { + return { + kind: 'LineComment', + loc: location(), + source: text(), + value: v, + } + }, + peg$c100 = /^[_\^]/, + peg$c101 = peg$classExpectation(["_", "^"], false, false), + peg$c102 = function(mode, v) { + if (v.kind === 'Block') v = v.value; + + return { + kind: mode === '_' ? 'SubscriptCommand' : 'SuperscriptCommand', + loc: location(), + source: text(), + value: v, + } + }, + peg$c103 = function(mark, v) { + return { + kind: 'RegularCommand', + loc: location(), + source: text(), + command: mark, + arguments: { + optional: [], + required: [ protect(v) ], + }, + } + }, + peg$c104 = /^[^A-Za-z0-9\t\r\n]/, + peg$c105 = peg$classExpectation([["A", "Z"], ["a", "z"], ["0", "9"], "\t", "\r", "\n"], true, false), + peg$c106 = function(v) { + return { + kind: 'SymbolCommand', + loc: location(), + source: text(), + command: v, + } + }, + peg$c107 = "newcommand", + peg$c108 = peg$literalExpectation("newcommand", false), + peg$c109 = function(cmd, name) { return name.value.length == 1 && name.value[0].kind === 'RegularCommand' }, + peg$c110 = function(cmd, name, optional, def) { + return { + kind: 'RegularCommand', + loc: location(), + source: text(), + command: cmd, + arguments: { + optional: [], + required: [name, def], + }, + } + }, + peg$c111 = "begin", + peg$c112 = peg$literalExpectation("begin", false), + peg$c113 = "end", + peg$c114 = peg$literalExpectation("end", false), + peg$c115 = function(cmd) { return verbatimCommands.includes(cmd) && (has_arguments[cmd] === 2) }, + peg$c116 = function(cmd, optional, req1, req2) { + return { + kind: 'RegularCommand', + loc: location(), + source: text(), + command: cmd, + arguments: { + optional: optional, + required: [protect(req1), protect(req2)], + }, + } + }, + peg$c117 = function(cmd) { return verbatimCommands.includes(cmd) && (has_arguments[cmd] === 1) }, + peg$c118 = function(cmd, optional, req) { + return { + kind: 'RegularCommand', + loc: location(), + source: text(), + command: cmd, + arguments: { + optional: optional, + required: [protect(req)], + }, + } + }, + peg$c119 = function(cmd) { return (has_arguments[cmd] === 2) }, + peg$c120 = function(cmd, optional, req1, req2) { + return { + kind: 'RegularCommand', + loc: location(), + source: text(), + command: cmd, + arguments: { + optional: optional, + required: [req1, req2], + }, + } + }, + peg$c121 = function(cmd) { return (has_arguments[cmd] === 1) }, + peg$c122 = function(cmd, optional, req) { + let m; + if (req.kind === 'Block') { + switch (cmd) { + case 'textsuperscript': + case 'sp': + req.markup.sup = true; + break + case 'textsubscript': + case 'sb': + req.markup.sub = true; + break + case 'textsc': + req.markup.smallCaps = true; + break + case 'enquote': + case 'mkbibquote': + req.markup.enquote = true; + break + case 'textbf': + case 'mkbibbold': + req.markup.bold = true; + break + case 'emph': + case 'textit': + case 'mkbibitalic': + case 'mkbibemph': + req.markup.italics = true; + break + default: + if (m = cmd.match(/^((sub)*)section$/)) { + req.markup[`h${(m[1].length / 3) + 1}`] = true; + } + } + } + + // ignore case stuff on bibcyr + if (cmd === 'bibcyr') delete req.case; + + return { + kind: 'RegularCommand', + loc: location(), + source: text(), + command: cmd, + arguments: { + optional: optional, + required: [req], + } + } + }, + peg$c123 = function(cmd, optional) { + return { + kind: 'RegularCommand', + loc: location(), + source: text(), + command: cmd, + arguments: { + optional: optional, + required: [], + } + } + }, + peg$c124 = "[", + peg$c125 = peg$literalExpectation("[", false), + peg$c126 = /^[^\]]/, + peg$c127 = peg$classExpectation(["]"], true, false), + peg$c128 = "]", + peg$c129 = peg$literalExpectation("]", false), + peg$c130 = function(v) { + return basicTextConversions({ + kind: 'Text', // this isn't really correct but I don't need these right now + loc: location(), + source: text(), + value: v, + mode: math.on ? 'math' : 'text', + }) + }, + peg$c131 = /^[^ \t\^_${}\\]/, + peg$c132 = peg$classExpectation([" ", "\t", "^", "_", "$", "{", "}", "\\"], true, false), + peg$c133 = function(v) { + return basicTextConversions({ + kind: 'Text', + loc: location(), + source: text(), + value: normalizeWhitespace([v]), + mode: math.on ? 'math' : 'text', + }) + }, + peg$c134 = /^[a-zA-Z\-_]/, + peg$c135 = peg$classExpectation([["a", "z"], ["A", "Z"], "-", "_"], false, false), + peg$c136 = /^[a-zA-Z0-9\-&_:]/, + peg$c137 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"], "-", "&", "_", ":"], false, false), + peg$c138 = /^['`"=~\^.]/, + peg$c139 = peg$classExpectation(["'", "`", "\"", "=", "~", "^", "."], false, false), + peg$c140 = /^['`"=~\^.cbuvdrHk]/, + peg$c141 = peg$classExpectation(["'", "`", "\"", "=", "~", "^", ".", "c", "b", "u", "v", "d", "r", "H", "k"], false, false), + peg$c142 = "=", + peg$c143 = peg$literalExpectation("=", false), + peg$c144 = "#", + peg$c145 = peg$literalExpectation("#", false), + peg$c146 = /^[\r\n]/, + peg$c147 = peg$classExpectation(["\r", "\n"], false, false), + peg$c149 = /^[ \t]/, + peg$c150 = peg$classExpectation([" ", "\t"], false, false), + peg$c151 = peg$otherExpectation("Optional Horizontal Whitespace"), + peg$c155 = /^[ \t\n\r]/, + peg$c156 = peg$classExpectation([" ", "\t", "\n", "\r"], false, false), + peg$c157 = peg$otherExpectation("Optional Whitespace"), + + peg$currPos = 0, + peg$savedPos = 0, + peg$posDetailsCache = [{ line: 1, column: 1 }], + peg$maxFailPos = 0, + peg$maxFailExpected = [], + peg$silentFails = 0, + + peg$result; + + if ("startRule" in options) { + if (!(options.startRule in peg$startRuleFunctions)) { + throw new Error("Can't start parsing from rule \"" + options.startRule + "\"."); + } + + peg$startRuleFunction = peg$startRuleFunctions[options.startRule]; + } + + function text() { + return input.substring(peg$savedPos, peg$currPos); + } + + function location() { + return peg$computeLocation(peg$savedPos, peg$currPos); + } + + function peg$literalExpectation(text, ignoreCase) { + return { type: "literal", text: text, ignoreCase: ignoreCase }; + } + + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + } + + function peg$endExpectation() { + return { type: "end" }; + } + + function peg$otherExpectation(description) { + return { type: "other", description: description }; + } + + function peg$computePosDetails(pos) { + var details = peg$posDetailsCache[pos], p; + + if (details) { + return details; + } else { + p = pos - 1; + while (!peg$posDetailsCache[p]) { + p--; + } + + details = peg$posDetailsCache[p]; + details = { + line: details.line, + column: details.column + }; + + while (p < pos) { + if (input.charCodeAt(p) === 10) { + details.line++; + details.column = 1; + } else { + details.column++; + } + + p++; + } + + peg$posDetailsCache[pos] = details; + return details; + } + } + + function peg$computeLocation(startPos, endPos) { + var startPosDetails = peg$computePosDetails(startPos), + endPosDetails = peg$computePosDetails(endPos); + + return { + start: { + offset: startPos, + line: startPosDetails.line, + column: startPosDetails.column + }, + end: { + offset: endPos, + line: endPosDetails.line, + column: endPosDetails.column + } + }; + } + + function peg$fail(expected) { + if (peg$currPos < peg$maxFailPos) { return; } + + if (peg$currPos > peg$maxFailPos) { + peg$maxFailPos = peg$currPos; + peg$maxFailExpected = []; + } + + peg$maxFailExpected.push(expected); + } + + function peg$buildStructuredError(expected, found, location) { + return new peg$SyntaxError( + peg$SyntaxError.buildMessage(expected, found), + expected, + found, + location + ); + } + + function peg$parseBibliography() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parse__(); + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parseNode(); + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parseNode(); + } + if (s2 !== peg$FAILED) { + s3 = peg$parse__(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c0(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseComment() { + var s0, s1, s2, s3, s4, s5, s6, s7; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 64) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parse__(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 7).toLowerCase() === peg$c3) { + s3 = input.substr(peg$currPos, 7); + peg$currPos += 7; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parse__h(); + if (s4 !== peg$FAILED) { + s5 = peg$parseBracedComment(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c5(s5); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 64) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parse__(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 7).toLowerCase() === peg$c3) { + s3 = input.substr(peg$currPos, 7); + peg$currPos += 7; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c4); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parse__h(); + if (s4 !== peg$FAILED) { + s5 = []; + if (peg$c6.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c7); } + } + while (s6 !== peg$FAILED) { + s5.push(s6); + if (peg$c6.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c7); } + } + } + if (s5 !== peg$FAILED) { + s6 = []; + if (peg$c8.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c9); } + } + while (s7 !== peg$FAILED) { + s6.push(s7); + if (peg$c8.test(input.charAt(peg$currPos))) { + s7 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c9); } + } + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c10(s5); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$currPos; + if (peg$c11.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c12); } + } + if (s2 !== peg$FAILED) { + s3 = []; + if (peg$c6.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c7); } + } + while (s4 !== peg$FAILED) { + s3.push(s4); + if (peg$c6.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c7); } + } + } + if (s3 !== peg$FAILED) { + s2 = [s2, s3]; + s1 = s2; + } else { + peg$currPos = s1; + s1 = peg$FAILED; + } + } else { + peg$currPos = s1; + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + s2 = []; + if (peg$c8.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c9); } + } + while (s3 !== peg$FAILED) { + s2.push(s3); + if (peg$c8.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c9); } + } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c13(s1); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } + } + + return s0; + } + + function peg$parseNode() { + var s0, s1; + + s0 = peg$currPos; + s1 = peg$parseComment(); + if (s1 === peg$FAILED) { + s1 = peg$parsePreambleExpression(); + if (s1 === peg$FAILED) { + s1 = peg$parseStringDeclaration(); + if (s1 === peg$FAILED) { + s1 = peg$parseEntry(); + } + } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c14(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseBracedComment() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 123) { + s1 = peg$c15; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s1 !== peg$FAILED) { + s2 = []; + if (peg$c17.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c18); } + } + if (s3 === peg$FAILED) { + s3 = peg$parseBracedComment(); + } + while (s3 !== peg$FAILED) { + s2.push(s3); + if (peg$c17.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c18); } + } + if (s3 === peg$FAILED) { + s3 = peg$parseBracedComment(); + } + } + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s3 = peg$c19; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c20); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c21(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseEntry() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 64) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parse__(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = []; + if (peg$c22.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c23); } + } + if (s5 !== peg$FAILED) { + while (s5 !== peg$FAILED) { + s4.push(s5); + if (peg$c22.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c23); } + } + } + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = input.substring(s3, peg$currPos); + } else { + s3 = s4; + } + if (s3 !== peg$FAILED) { + s4 = peg$parse__(); + if (s4 !== peg$FAILED) { + if (peg$c24.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c25); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parse__(); + if (s6 !== peg$FAILED) { + s7 = peg$parseEntryId(); + if (s7 === peg$FAILED) { + s7 = null; + } + if (s7 !== peg$FAILED) { + s8 = peg$parse__(); + if (s8 !== peg$FAILED) { + s9 = []; + s10 = peg$parseField(); + while (s10 !== peg$FAILED) { + s9.push(s10); + s10 = peg$parseField(); + } + if (s9 !== peg$FAILED) { + s10 = peg$parse__(); + if (s10 !== peg$FAILED) { + if (peg$c26.test(input.charAt(peg$currPos))) { + s11 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s11 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c27); } + } + if (s11 !== peg$FAILED) { + s12 = peg$parse__(); + if (s12 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c28(s3, s7, s9); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsePreambleExpression() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 64) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parse__(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 8).toLowerCase() === peg$c29) { + s3 = input.substr(peg$currPos, 8); + peg$currPos += 8; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c30); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parse__(); + if (s4 !== peg$FAILED) { + if (peg$c24.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c25); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parse__(); + if (s6 !== peg$FAILED) { + s7 = []; + s8 = peg$parseEnvironment(); + if (s8 === peg$FAILED) { + s8 = peg$parseBlock(); + if (s8 === peg$FAILED) { + s8 = peg$parseMath(); + if (s8 === peg$FAILED) { + s8 = peg$parseCommand(); + if (s8 === peg$FAILED) { + s8 = peg$parseText(); + } + } + } + } + while (s8 !== peg$FAILED) { + s7.push(s8); + s8 = peg$parseEnvironment(); + if (s8 === peg$FAILED) { + s8 = peg$parseBlock(); + if (s8 === peg$FAILED) { + s8 = peg$parseMath(); + if (s8 === peg$FAILED) { + s8 = peg$parseCommand(); + if (s8 === peg$FAILED) { + s8 = peg$parseText(); + } + } + } + } + } + if (s7 !== peg$FAILED) { + s8 = peg$parse__(); + if (s8 !== peg$FAILED) { + if (peg$c26.test(input.charAt(peg$currPos))) { + s9 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c27); } + } + if (s9 !== peg$FAILED) { + s10 = peg$parse__(); + if (s10 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c31(s5, s7, s9); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseStringDeclaration() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 64) { + s1 = peg$c1; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c2); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parse__(); + if (s2 !== peg$FAILED) { + if (input.substr(peg$currPos, 6).toLowerCase() === peg$c32) { + s3 = input.substr(peg$currPos, 6); + peg$currPos += 6; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c33); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parse__(); + if (s4 !== peg$FAILED) { + if (peg$c24.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c25); } + } + if (s5 !== peg$FAILED) { + s6 = peg$parse__(); + if (s6 !== peg$FAILED) { + s7 = peg$parseVariableName(); + if (s7 !== peg$FAILED) { + s8 = peg$parseFieldSeparator(); + if (s8 !== peg$FAILED) { + s9 = []; + s10 = peg$parseRegularValue(); + if (s10 !== peg$FAILED) { + while (s10 !== peg$FAILED) { + s9.push(s10); + s10 = peg$parseRegularValue(); + } + } else { + s9 = peg$FAILED; + } + if (s9 !== peg$FAILED) { + s10 = peg$parse__(); + if (s10 !== peg$FAILED) { + if (peg$c26.test(input.charAt(peg$currPos))) { + s11 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s11 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c27); } + } + if (s11 !== peg$FAILED) { + s12 = peg$parse__(); + if (s12 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c34(s7, s9); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseEntryId() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parse__(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = []; + if (peg$c35.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c36); } + } + while (s4 !== peg$FAILED) { + s3.push(s4); + if (peg$c35.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c36); } + } + } + if (s3 !== peg$FAILED) { + s2 = input.substring(s2, peg$currPos); + } else { + s2 = s3; + } + if (s2 !== peg$FAILED) { + s3 = peg$parse__(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s4 = peg$c37; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c38); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c39(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseField() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + s1 = peg$parseFieldName(); + if (s1 !== peg$FAILED) { + peg$savedPos = peg$currPos; + s2 = peg$c40(s1); + if (s2) { + s2 = void 0; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$parseFieldSeparator(); + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 123) { + s4 = peg$c15; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s4 !== peg$FAILED) { + s5 = peg$currPos; + peg$silentFails++; + if (input.charCodeAt(peg$currPos) === 123) { + s6 = peg$c15; + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + peg$silentFails--; + if (s6 !== peg$FAILED) { + peg$currPos = s5; + s5 = void 0; + } else { + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + s6 = peg$parseVerbatimFieldValue(); + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s7 = peg$c19; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c20); } + } + if (s7 !== peg$FAILED) { + s8 = peg$parseFieldTerminator(); + if (s8 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c41(s1, s6); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$parseFieldName(); + if (s1 !== peg$FAILED) { + peg$savedPos = peg$currPos; + s2 = peg$c42(s1); + if (s2) { + s2 = void 0; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$parseFieldSeparator(); + if (s3 !== peg$FAILED) { + s4 = peg$parseVerbatimFieldValue(); + if (s4 !== peg$FAILED) { + s5 = peg$parseFieldTerminator(); + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c43(s1, s4); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$parseFieldName(); + if (s1 !== peg$FAILED) { + s2 = peg$parseFieldSeparator(); + if (s2 !== peg$FAILED) { + s3 = peg$parseFieldValue(); + if (s3 !== peg$FAILED) { + s4 = peg$parseFieldTerminator(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c44(s1, s3); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } + } + + return s0; + } + + function peg$parseFieldName() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$parse__(); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = []; + if (peg$c45.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c46); } + } + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + if (peg$c45.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c46); } + } + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s2 = input.substring(s2, peg$currPos); + } else { + s2 = s3; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c47(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseVerbatimFieldValue() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 34) { + s1 = peg$c48; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c49); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseTextNoQuotes(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 34) { + s3 = peg$c48; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c49); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c50(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 123) { + s1 = peg$c15; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parseVerbatimText(); + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parseVerbatimText(); + } + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s3 = peg$c19; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c20); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c51(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } + + return s0; + } + + function peg$parseVerbatimText() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$currPos; + s2 = []; + if (peg$c17.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c18); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (peg$c17.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c18); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s1 = input.substring(s1, peg$currPos); + } else { + s1 = s2; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c52(s1); + } + s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 123) { + s1 = peg$c15; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parseVerbatimText(); + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parseVerbatimText(); + } + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s3 = peg$c19; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c20); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c53(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } + + return s0; + } + + function peg$parseFieldValue() { + var s0, s1, s2, s3; + + s0 = peg$parseNumber(); + if (s0 === peg$FAILED) { + s0 = peg$currPos; + peg$savedPos = peg$currPos; + s1 = peg$c54(); + if (s1) { + s1 = void 0; + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parseRegularValue(); + if (s3 === peg$FAILED) { + s3 = peg$parseStringValue(); + } + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parseRegularValue(); + if (s3 === peg$FAILED) { + s3 = peg$parseStringValue(); + } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c55(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } + + return s0; + } + + function peg$parseRegularValue() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 34) { + s1 = peg$c48; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c49); } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parseEnvironment(); + if (s3 === peg$FAILED) { + s3 = peg$parseBlock(); + if (s3 === peg$FAILED) { + s3 = peg$parseMath(); + if (s3 === peg$FAILED) { + s3 = peg$parseCommand(); + if (s3 === peg$FAILED) { + s3 = peg$parseTextNoQuotes(); + } + } + } + } + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parseEnvironment(); + if (s3 === peg$FAILED) { + s3 = peg$parseBlock(); + if (s3 === peg$FAILED) { + s3 = peg$parseMath(); + if (s3 === peg$FAILED) { + s3 = peg$parseCommand(); + if (s3 === peg$FAILED) { + s3 = peg$parseTextNoQuotes(); + } + } + } + } + } + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 34) { + s3 = peg$c48; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c49); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseConcat(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.substr(peg$currPos, 6) === peg$c57) { + s1 = peg$c57; + peg$currPos += 6; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + if (peg$c59.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c60); } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = []; + s4 = peg$parseVerbatimText(); + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parseVerbatimText(); + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s4 = peg$c19; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c20); } + } + if (s4 !== peg$FAILED) { + s5 = peg$parseConcat(); + if (s5 === peg$FAILED) { + s5 = null; + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c51(s3); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 123) { + s1 = peg$c15; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parseEnvironment(); + if (s3 === peg$FAILED) { + s3 = peg$parseBlock(); + if (s3 === peg$FAILED) { + s3 = peg$parseMath(); + if (s3 === peg$FAILED) { + s3 = peg$parseCommand(); + if (s3 === peg$FAILED) { + s3 = peg$parseText(); + } + } + } + } + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parseEnvironment(); + if (s3 === peg$FAILED) { + s3 = peg$parseBlock(); + if (s3 === peg$FAILED) { + s3 = peg$parseMath(); + if (s3 === peg$FAILED) { + s3 = peg$parseCommand(); + if (s3 === peg$FAILED) { + s3 = peg$parseText(); + } + } + } + } + } + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s3 = peg$c19; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c20); } + } + if (s3 !== peg$FAILED) { + s4 = peg$parseConcat(); + if (s4 === peg$FAILED) { + s4 = null; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$parseStringReference(); + if (s1 !== peg$FAILED) { + s2 = peg$parseConcat(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } + } + } + + return s0; + } + + function peg$parseStringValue() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parseStringReference(); + if (s1 !== peg$FAILED) { + s2 = peg$parseConcat(); + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c56(s1); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseText() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c61.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c62); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c61.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c62); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c63(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseTextNoQuotes() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = []; + if (peg$c64.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + if (s2 !== peg$FAILED) { + while (s2 !== peg$FAILED) { + s1.push(s2); + if (peg$c64.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c65); } + } + } + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c63(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseNumber() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$currPos; + s2 = []; + if (peg$c66.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + if (s3 !== peg$FAILED) { + while (s3 !== peg$FAILED) { + s2.push(s3); + if (peg$c66.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c67); } + } + } + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s1 = input.substring(s1, peg$currPos); + } else { + s1 = s2; + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c68(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseStringReference() { + var s0, s1; + + s0 = peg$currPos; + s1 = peg$parseVariableName(); + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c69(s1); + } + s0 = s1; + + return s0; + } + + function peg$parseEnvironment() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 7) === peg$c70) { + s1 = peg$c70; + peg$currPos += 7; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c71); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + s3 = []; + if (peg$c72.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s4 !== peg$FAILED) { + while (s4 !== peg$FAILED) { + s3.push(s4); + if (peg$c72.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + } + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s2 = input.substring(s2, peg$currPos); + } else { + s2 = s3; + } + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s3 = peg$c19; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c20); } + } + if (s3 !== peg$FAILED) { + s4 = []; + s5 = peg$parseEnvironment(); + if (s5 === peg$FAILED) { + s5 = peg$parseBlock(); + if (s5 === peg$FAILED) { + s5 = peg$parseCommand(); + if (s5 === peg$FAILED) { + s5 = peg$parseMath(); + if (s5 === peg$FAILED) { + s5 = peg$parseText(); + } + } + } + } + while (s5 !== peg$FAILED) { + s4.push(s5); + s5 = peg$parseEnvironment(); + if (s5 === peg$FAILED) { + s5 = peg$parseBlock(); + if (s5 === peg$FAILED) { + s5 = peg$parseCommand(); + if (s5 === peg$FAILED) { + s5 = peg$parseMath(); + if (s5 === peg$FAILED) { + s5 = peg$parseText(); + } + } + } + } + } + if (s4 !== peg$FAILED) { + if (input.substr(peg$currPos, 5) === peg$c74) { + s5 = peg$c74; + peg$currPos += 5; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c75); } + } + if (s5 !== peg$FAILED) { + s6 = peg$currPos; + s7 = []; + if (peg$c72.test(input.charAt(peg$currPos))) { + s8 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s8 !== peg$FAILED) { + while (s8 !== peg$FAILED) { + s7.push(s8); + if (peg$c72.test(input.charAt(peg$currPos))) { + s8 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s8 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + } + } else { + s7 = peg$FAILED; + } + if (s7 !== peg$FAILED) { + s6 = input.substring(s6, peg$currPos); + } else { + s6 = s7; + } + if (s6 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s7 = peg$c19; + peg$currPos++; + } else { + s7 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c20); } + } + if (s7 !== peg$FAILED) { + peg$savedPos = peg$currPos; + s8 = peg$c76(s2, s4, s6); + if (s8) { + s8 = void 0; + } else { + s8 = peg$FAILED; + } + if (s8 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c77(s2, s4); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseBlock() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + if (input.substr(peg$currPos, 2) === peg$c78) { + s1 = peg$c78; + peg$currPos += 2; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c79); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseExtendedDiacritic(); + if (s2 !== peg$FAILED) { + s3 = peg$parse__(); + if (s3 !== peg$FAILED) { + if (peg$c72.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 92) { + s5 = peg$c80; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s5 !== peg$FAILED) { + if (peg$c82.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } + if (s4 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s5 = peg$c19; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c20); } + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c84(s2, s4); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.substr(peg$currPos, 6) === peg$c57) { + s1 = peg$c57; + peg$currPos += 6; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c58); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + if (peg$c59.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c60); } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = []; + s4 = peg$parseVerbatimText(); + while (s4 !== peg$FAILED) { + s3.push(s4); + s4 = peg$parseVerbatimText(); + } + if (s3 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s4 = peg$c19; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c20); } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c85(s3); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 123) { + s1 = peg$c15; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s1 !== peg$FAILED) { + s2 = []; + s3 = peg$parseEnvironment(); + if (s3 === peg$FAILED) { + s3 = peg$parseBlock(); + if (s3 === peg$FAILED) { + s3 = peg$parseCommand(); + if (s3 === peg$FAILED) { + s3 = peg$parseMath(); + if (s3 === peg$FAILED) { + s3 = peg$parseText(); + } + } + } + } + while (s3 !== peg$FAILED) { + s2.push(s3); + s3 = peg$parseEnvironment(); + if (s3 === peg$FAILED) { + s3 = peg$parseBlock(); + if (s3 === peg$FAILED) { + s3 = peg$parseCommand(); + if (s3 === peg$FAILED) { + s3 = peg$parseMath(); + if (s3 === peg$FAILED) { + s3 = peg$parseText(); + } + } + } + } + } + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s3 = peg$c19; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c20); } + } + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c86(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } + } + + return s0; + } + + function peg$parseMath() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + peg$savedPos = peg$currPos; + s1 = peg$c87(); + if (s1) { + s1 = void 0; + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 36) { + s2 = peg$c88; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s2 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c90) { + s2 = peg$c90; + peg$currPos += 2; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + } + if (s2 !== peg$FAILED) { + peg$savedPos = peg$currPos; + s3 = peg$c92(); + if (s3) { + s3 = void 0; + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = []; + s5 = peg$parseBlock(); + if (s5 === peg$FAILED) { + s5 = peg$parseCommand(); + if (s5 === peg$FAILED) { + s5 = peg$parseText(); + } + } + while (s5 !== peg$FAILED) { + s4.push(s5); + s5 = peg$parseBlock(); + if (s5 === peg$FAILED) { + s5 = peg$parseCommand(); + if (s5 === peg$FAILED) { + s5 = peg$parseText(); + } + } + } + if (s4 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 36) { + s5 = peg$c88; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c89); } + } + if (s5 === peg$FAILED) { + if (input.substr(peg$currPos, 2) === peg$c90) { + s5 = peg$c90; + peg$currPos += 2; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c91); } + } + } + if (s5 !== peg$FAILED) { + peg$savedPos = peg$currPos; + s6 = peg$c93(); + if (s6) { + s6 = void 0; + } else { + s6 = peg$FAILED; + } + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c94(s2, s4); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseLineComment() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 37) { + s1 = peg$c95; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c96); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parse__h(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = []; + if (peg$c97.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + if (s5 !== peg$FAILED) { + while (s5 !== peg$FAILED) { + s4.push(s5); + if (peg$c97.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c98); } + } + } + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = input.substring(s3, peg$currPos); + } else { + s3 = s4; + } + if (s3 !== peg$FAILED) { + s4 = []; + s5 = peg$parseEOL(); + if (s5 !== peg$FAILED) { + while (s5 !== peg$FAILED) { + s4.push(s5); + s5 = peg$parseEOL(); + } + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c99(s3); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseCommand() { + var s0; + + s0 = peg$parseScriptCommand(); + if (s0 === peg$FAILED) { + s0 = peg$parseDiacriticCommand(); + if (s0 === peg$FAILED) { + s0 = peg$parseRegularCommand(); + if (s0 === peg$FAILED) { + s0 = peg$parseSymbolCommand(); + } + } + } + + return s0; + } + + function peg$parseScriptCommand() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (peg$c100.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c101); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parse__h(); + if (s2 !== peg$FAILED) { + s3 = peg$parseRequiredArgument(); + if (s3 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c102(s1, s3); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseDiacriticCommand() { + var s0, s1, s2, s3, s4, s5, s6; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 92) { + s1 = peg$c80; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseSimpleDiacritic(); + if (s2 !== peg$FAILED) { + s3 = peg$parse__(); + if (s3 !== peg$FAILED) { + if (peg$c72.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 92) { + s5 = peg$c80; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s5 !== peg$FAILED) { + if (peg$c82.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c84(s2, s4); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 92) { + s1 = peg$c80; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseExtendedDiacritic(); + if (s2 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 123) { + s3 = peg$c15; + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + if (s3 !== peg$FAILED) { + if (peg$c72.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c73); } + } + if (s4 === peg$FAILED) { + s4 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 92) { + s5 = peg$c80; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s5 !== peg$FAILED) { + if (peg$c82.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c83); } + } + if (s6 !== peg$FAILED) { + s5 = [s5, s6]; + s4 = s5; + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } else { + peg$currPos = s4; + s4 = peg$FAILED; + } + } + if (s4 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 125) { + s5 = peg$c19; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c20); } + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c84(s2, s4); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 92) { + s1 = peg$c80; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parseExtendedDiacritic(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (input.charCodeAt(peg$currPos) === 123) { + s4 = peg$c15; + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + peg$silentFails--; + if (s4 !== peg$FAILED) { + peg$currPos = s3; + s3 = void 0; + } else { + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$parseRegularValue(); + if (s4 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c103(s2, s4); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } + } + + return s0; + } + + function peg$parseSymbolCommand() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 92) { + s1 = peg$c80; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + if (peg$c104.test(input.charAt(peg$currPos))) { + s3 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c105); } + } + if (s3 !== peg$FAILED) { + s2 = input.substring(s2, peg$currPos); + } else { + s2 = s3; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c106(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseRegularCommand() { + var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 92) { + s1 = peg$c80; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s1 !== peg$FAILED) { + if (input.substr(peg$currPos, 10) === peg$c107) { + s2 = peg$c107; + peg$currPos += 10; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c108); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parseBlock(); + if (s3 !== peg$FAILED) { + peg$savedPos = peg$currPos; + s4 = peg$c109(s2, s3); + if (s4) { + s4 = void 0; + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$parseOptionalArgument(); + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$parseOptionalArgument(); + } + if (s5 !== peg$FAILED) { + s6 = peg$parseRequiredArgument(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c110(s2, s3, s5, s6); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 92) { + s1 = peg$c80; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 5) === peg$c111) { + s3 = peg$c111; + peg$currPos += 5; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c112); } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 3) === peg$c113) { + s4 = peg$c113; + peg$currPos += 3; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c114); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = []; + if (peg$c22.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c23); } + } + if (s6 !== peg$FAILED) { + while (s6 !== peg$FAILED) { + s5.push(s6); + if (peg$c22.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c23); } + } + } + } else { + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + s4 = input.substring(s4, peg$currPos); + } else { + s4 = s5; + } + if (s4 !== peg$FAILED) { + peg$savedPos = peg$currPos; + s5 = peg$c115(s4); + if (s5) { + s5 = void 0; + } else { + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$parseOptionalArgument(); + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$parseOptionalArgument(); + } + if (s6 !== peg$FAILED) { + s7 = peg$parse__h(); + if (s7 !== peg$FAILED) { + s8 = peg$currPos; + peg$silentFails++; + if (input.charCodeAt(peg$currPos) === 123) { + s9 = peg$c15; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + peg$silentFails--; + if (s9 !== peg$FAILED) { + peg$currPos = s8; + s8 = void 0; + } else { + s8 = peg$FAILED; + } + if (s8 !== peg$FAILED) { + s9 = peg$parseVerbatimFieldValue(); + if (s9 !== peg$FAILED) { + s10 = peg$parseVerbatimFieldValue(); + if (s10 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c116(s4, s6, s9, s10); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 92) { + s1 = peg$c80; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 5) === peg$c111) { + s3 = peg$c111; + peg$currPos += 5; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c112); } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 3) === peg$c113) { + s4 = peg$c113; + peg$currPos += 3; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c114); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = []; + if (peg$c22.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c23); } + } + if (s6 !== peg$FAILED) { + while (s6 !== peg$FAILED) { + s5.push(s6); + if (peg$c22.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c23); } + } + } + } else { + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + s4 = input.substring(s4, peg$currPos); + } else { + s4 = s5; + } + if (s4 !== peg$FAILED) { + peg$savedPos = peg$currPos; + s5 = peg$c117(s4); + if (s5) { + s5 = void 0; + } else { + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$parseOptionalArgument(); + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$parseOptionalArgument(); + } + if (s6 !== peg$FAILED) { + s7 = peg$parse__h(); + if (s7 !== peg$FAILED) { + s8 = peg$currPos; + peg$silentFails++; + if (input.charCodeAt(peg$currPos) === 123) { + s9 = peg$c15; + peg$currPos++; + } else { + s9 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c16); } + } + peg$silentFails--; + if (s9 !== peg$FAILED) { + peg$currPos = s8; + s8 = void 0; + } else { + s8 = peg$FAILED; + } + if (s8 !== peg$FAILED) { + s9 = peg$parseVerbatimFieldValue(); + if (s9 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c118(s4, s6, s9); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 92) { + s1 = peg$c80; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 5) === peg$c111) { + s3 = peg$c111; + peg$currPos += 5; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c112); } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 3) === peg$c113) { + s4 = peg$c113; + peg$currPos += 3; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c114); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = []; + if (peg$c22.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c23); } + } + if (s6 !== peg$FAILED) { + while (s6 !== peg$FAILED) { + s5.push(s6); + if (peg$c22.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c23); } + } + } + } else { + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + s4 = input.substring(s4, peg$currPos); + } else { + s4 = s5; + } + if (s4 !== peg$FAILED) { + peg$savedPos = peg$currPos; + s5 = peg$c119(s4); + if (s5) { + s5 = void 0; + } else { + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$parseOptionalArgument(); + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$parseOptionalArgument(); + } + if (s6 !== peg$FAILED) { + s7 = peg$parse__h(); + if (s7 !== peg$FAILED) { + s8 = peg$parseRequiredArgument(); + if (s8 !== peg$FAILED) { + s9 = peg$parseRequiredArgument(); + if (s9 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c120(s4, s6, s8, s9); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 92) { + s1 = peg$c80; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 5) === peg$c111) { + s3 = peg$c111; + peg$currPos += 5; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c112); } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 3) === peg$c113) { + s4 = peg$c113; + peg$currPos += 3; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c114); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = []; + if (peg$c22.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c23); } + } + if (s6 !== peg$FAILED) { + while (s6 !== peg$FAILED) { + s5.push(s6); + if (peg$c22.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c23); } + } + } + } else { + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + s4 = input.substring(s4, peg$currPos); + } else { + s4 = s5; + } + if (s4 !== peg$FAILED) { + peg$savedPos = peg$currPos; + s5 = peg$c121(s4); + if (s5) { + s5 = void 0; + } else { + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + s6 = []; + s7 = peg$parseOptionalArgument(); + while (s7 !== peg$FAILED) { + s6.push(s7); + s7 = peg$parseOptionalArgument(); + } + if (s6 !== peg$FAILED) { + s7 = peg$parse__h(); + if (s7 !== peg$FAILED) { + s8 = peg$parseRequiredArgument(); + if (s8 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c122(s4, s6, s8); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 92) { + s1 = peg$c80; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c81); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 5) === peg$c111) { + s3 = peg$c111; + peg$currPos += 5; + } else { + s3 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c112); } + } + peg$silentFails--; + if (s3 === peg$FAILED) { + s2 = void 0; + } else { + peg$currPos = s2; + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + peg$silentFails++; + if (input.substr(peg$currPos, 3) === peg$c113) { + s4 = peg$c113; + peg$currPos += 3; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c114); } + } + peg$silentFails--; + if (s4 === peg$FAILED) { + s3 = void 0; + } else { + peg$currPos = s3; + s3 = peg$FAILED; + } + if (s3 !== peg$FAILED) { + s4 = peg$currPos; + s5 = []; + if (peg$c22.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c23); } + } + if (s6 !== peg$FAILED) { + while (s6 !== peg$FAILED) { + s5.push(s6); + if (peg$c22.test(input.charAt(peg$currPos))) { + s6 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s6 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c23); } + } + } + } else { + s5 = peg$FAILED; + } + if (s5 !== peg$FAILED) { + s4 = input.substring(s4, peg$currPos); + } else { + s4 = s5; + } + if (s4 !== peg$FAILED) { + s5 = []; + s6 = peg$parseOptionalArgument(); + while (s6 !== peg$FAILED) { + s5.push(s6); + s6 = peg$parseOptionalArgument(); + } + if (s5 !== peg$FAILED) { + s6 = peg$parse__(); + if (s6 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c123(s4, s5); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } + } + } + } + } + + return s0; + } + + function peg$parseOptionalArgument() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 91) { + s1 = peg$c124; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c125); } + } + if (s1 !== peg$FAILED) { + s2 = peg$parse__h(); + if (s2 !== peg$FAILED) { + s3 = peg$currPos; + s4 = []; + if (peg$c126.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c127); } + } + if (s5 !== peg$FAILED) { + while (s5 !== peg$FAILED) { + s4.push(s5); + if (peg$c126.test(input.charAt(peg$currPos))) { + s5 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c127); } + } + } + } else { + s4 = peg$FAILED; + } + if (s4 !== peg$FAILED) { + s3 = input.substring(s3, peg$currPos); + } else { + s3 = s4; + } + if (s3 !== peg$FAILED) { + s4 = peg$parse__h(); + if (s4 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 93) { + s5 = peg$c128; + peg$currPos++; + } else { + s5 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c129); } + } + if (s5 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c130(s3); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseRequiredArgument() { + var s0, s1, s2; + + s0 = peg$currPos; + s1 = peg$parse__h(); + if (s1 !== peg$FAILED) { + if (peg$c131.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c132); } + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c133(s2); + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$parseBlock(); + if (s1 === peg$FAILED) { + s1 = peg$parseCommand(); + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$c52(s1); + } + s0 = s1; + } + + return s0; + } + + function peg$parseVariableName() { + var s0, s1, s2, s3, s4; + + s0 = peg$currPos; + s1 = peg$currPos; + if (peg$c134.test(input.charAt(peg$currPos))) { + s2 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c135); } + } + if (s2 !== peg$FAILED) { + s3 = []; + if (peg$c136.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c137); } + } + while (s4 !== peg$FAILED) { + s3.push(s4); + if (peg$c136.test(input.charAt(peg$currPos))) { + s4 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s4 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c137); } + } + } + if (s3 !== peg$FAILED) { + s2 = [s2, s3]; + s1 = s2; + } else { + peg$currPos = s1; + s1 = peg$FAILED; + } + } else { + peg$currPos = s1; + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + s0 = input.substring(s0, peg$currPos); + } else { + s0 = s1; + } + + return s0; + } + + function peg$parseSimpleDiacritic() { + var s0; + + if (peg$c138.test(input.charAt(peg$currPos))) { + s0 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c139); } + } + + return s0; + } + + function peg$parseExtendedDiacritic() { + var s0; + + if (peg$c140.test(input.charAt(peg$currPos))) { + s0 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c141); } + } + + return s0; + } + + function peg$parseFieldSeparator() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parse__(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 61) { + s2 = peg$c142; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c143); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parse__(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseFieldTerminator() { + var s0, s1, s2, s3, s4, s5; + + s0 = peg$currPos; + s1 = peg$parse__(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 44) { + s2 = peg$c37; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c38); } + } + if (s2 === peg$FAILED) { + s2 = null; + } + if (s2 !== peg$FAILED) { + s3 = peg$parse__h(); + if (s3 !== peg$FAILED) { + s4 = []; + s5 = peg$parseLineComment(); + if (s5 === peg$FAILED) { + s5 = peg$parseEOL(); + } + while (s5 !== peg$FAILED) { + s4.push(s5); + s5 = peg$parseLineComment(); + if (s5 === peg$FAILED) { + s5 = peg$parseEOL(); + } + } + if (s4 !== peg$FAILED) { + s1 = [s1, s2, s3, s4]; + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseConcat() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = peg$parse__(); + if (s1 !== peg$FAILED) { + if (input.charCodeAt(peg$currPos) === 35) { + s2 = peg$c144; + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c145); } + } + if (s2 !== peg$FAILED) { + s3 = peg$parse__(); + if (s3 !== peg$FAILED) { + s1 = [s1, s2, s3]; + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseEOL() { + var s0; + + if (peg$c146.test(input.charAt(peg$currPos))) { + s0 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c147); } + } + + return s0; + } + + function peg$parse__h() { + var s0, s1; + + peg$silentFails++; + s0 = []; + if (peg$c149.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c150); } + } + while (s1 !== peg$FAILED) { + s0.push(s1); + if (peg$c149.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c150); } + } + } + peg$silentFails--; + if (s0 === peg$FAILED) { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c151); } + } + + return s0; + } + + function peg$parse__() { + var s0, s1; + + peg$silentFails++; + s0 = []; + if (peg$c155.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c156); } + } + while (s1 !== peg$FAILED) { + s0.push(s1); + if (peg$c155.test(input.charAt(peg$currPos))) { + s1 = input.charAt(peg$currPos); + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c156); } + } + } + peg$silentFails--; + if (s0 === peg$FAILED) { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$c157); } + } + + return s0; + } + + + /* + MIT License + + Copyright (c) 2017 Derek P Sifford, parts copyright (c) 2019 by Emiliano Heyns + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + */ + + const markup = { + sl: 'italics', + em: 'italics', + it: 'italics', + itshape: 'italics', + + bf: 'bold', + bfseries: 'bold', + + sc: 'smallCaps', + scshape: 'smallCaps', + + tt: 'fixedWidth', + rm: 'roman', + sf: 'sansSerif', + verb: 'verbatim', + }; + + const unnestFields = (options.unnestFields || []).map(field => field.toLowerCase()); + const verbatimFields = (options.verbatimFields || [ 'urlraw', 'url', 'doi', 'file', 'files', 'eprint', 'verba', 'verbb', 'verbc' ]).map(field => typeof field === 'string' ? field.toLowerCase() : field); + const verbatimCommands = (options.verbatimCommands || ['texttt', 'url', 'href']); + + function isVerbatimField(name) { + return verbatimFields.find(p => (typeof p === 'string') ? name === p : name.match(p)) + } + + function normalizeWhitespace(textArr) { + return textArr.reduce((prev, curr) => { + if (/\s/.test(curr)) { + if (/\s/.test(prev[prev.length - 1])) { + return prev; + } else { + return prev + ' '; + } + } + return prev + curr; + }, ''); + } + + const has_arguments = { + ElsevierGlyph: 1, + end: 1, + begin: 1, + bibcyr: 1, + bibstring: 1, + chsf: 1, + cite: 1, + cyrchar: 1, + ding: 1, + emph: 1, + enquote: 1, + frac: 2, + href: 2, + hspace: 1, + mathrm: 1, + mbox: 1, + mkbibbold: 1, + mkbibemph: 1, + mkbibitalic: 1, + mkbibquote: 1, + newcommand: 2, + noopsort: 1, + ocirc: 1, + section: 1, + sb: 1, + sp: 1, + subsection: 1, + subsubsection: 1, + subsubsubsection: 1, + t: 1, + textbf: 1, + textit: 1, + textrm: 1, + textsc: 1, + textsubscript: 1, + textsuperscript: 1, + texttt: 1, + url: 1, + vphantom: 1, + vspace: 1, + }; + + if (options.combiningDiacritics) { + for (const cmd of options.combiningDiacritics) { + has_arguments[cmd] = 1; + } + } + + const math = { + on: false, + + set: function(state) { + this.on = state; + return true + } + }; + + function basicTextConversions(node) { + if (node.kind !== 'Text') throw new Error(node.kind + ' is not a Text node') + + switch (node.mode) { + case 'verbatim': + break + + case 'math': + node.value = node.value.replace(/~/g, '\u00A0'); + break + + case 'text': + node.value = node.value + .replace(/---/g, '\u2014') + .replace(/--/g, '\u2013') + .replace(//g, '\u00BF') + .replace(/~/g, '\u00A0') + .replace(/``/g, options.markup.enquote.open) + .replace(/''/g, options.markup.enquote.close); + break + + default: + throw new Error(`Unexpected text mode ${node.mode}`) + } + + return node + } + + function protect(v) { + let source; + if (Array.isArray(v)) { + source = v.map(e => e.source).join(''); + } else { + v = [ v ]; + source = v.source; + } + + return { + kind: 'Block', + value: v, + markup: {}, + case: 'protect', + source: source, + } + } + + function handle_markup_switches(block) { + const value = block.value; + if (!Array.isArray(value)) return block + + block.value = []; + + const pseudo = { + block: null, + markup: {}, + }; + function pseudo_block() { + pseudo.block = { + kind: 'Block', + loc: location(), + source: '', + value: [], + markup: JSON.parse(JSON.stringify(pseudo.markup)), + pseudo: true, + }; + block.value.push(pseudo.block); + } + for (const node of value) { + if (node.kind === 'Environment' || node.kind === 'Block') { + block.value.push(node); + + if (Object.keys(pseudo.markup).length) { + pseudo_block(); + } else { + pseudo.block = null; + } + continue + } + + if (node.kind === 'RegularCommand' && markup[node.command]) { + if (pseudo.markup.italics) { // https://github.com/citation-js/bibtex-parser-experiments/commit/cae475f075a05d1c074485a061b08ed245170c7e + delete pseudo.markup.italics; + if (markup[node.command] !== 'italics') pseudo.markup[markup[node.command]] = true; + } else { + pseudo.markup[markup[node.command]] = true; + } + + if (Object.keys(pseudo.markup).length) { + pseudo_block(); + } else { + pseudo.block = null; + } + } + + if (pseudo.block) { + pseudo.block.source += node.source; + pseudo.block.value.push(node); + + } else { + block.value.push(node); + + } + } + + block.value = block.value.filter(node => !(node.pseudo && node.value.length === 0)); + + return block + } + + + peg$result = peg$startRuleFunction(); + + if (peg$result !== peg$FAILED && peg$currPos === input.length) { + return peg$result; + } else { + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); + } + } + + var grammar = { + SyntaxError: peg$SyntaxError, + parse: peg$parse + }; + + var chunker = createCommonjsModule(function (module, exports) { + // Original work by Henrik Muehe (c) 2010 + // + // CommonJS port by Mikola Lysenko 2013 + // + Object.defineProperty(exports, "__esModule", { value: true }); + exports.parse = void 0; + class ParseError extends Error { + constructor(message, parser) { + message += ` @ ${parser.pos}`; + if (parser.parsing) + message += ` in ${JSON.stringify(parser.parsing)}`; + super(message); + this.name = 'ParseError'; + } + } + // tslint:disable-next-line prefer-template + const letter = new RegExp('[' + [ + // Letter, Uppercase + /\u0041-\u005A\u00C0-\u00D6\u00D8-\u00DE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178-\u0179\u017B\u017D\u0181-\u0182\u0184\u0186-\u0187\u0189-\u018B\u018E-\u0191\u0193-\u0194\u0196-\u0198\u019C-\u019D\u019F-\u01A0\u01A2\u01A4\u01A6-\u01A7\u01A9\u01AC\u01AE-\u01AF\u01B1-\u01B3\u01B5\u01B7-\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A-\u023B\u023D-\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u037F\u0386\u0388-\u038A\u038C\u038E-\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9-\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0-\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u13A0-\u13F5\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E-\u213F\u2145\u2183\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D-\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA-\uA7AD\uA7B0-\uA7B4\uA7B6\uFF21-\uFF3A/.source, + // Letter, Titlecase + /\u01C5\u01C8\u01CB\u01F2\u1F88-\u1F8F\u1F98-\u1F9F\u1FA8-\u1FAF\u1FBC\u1FCC\u1FFC/.source, + // Letter, Lowercase + /\u0061-\u007A\u00B5\u00DF-\u00F6\u00F8-\u00FF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137-\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148-\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C-\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA-\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9-\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC-\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF-\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F-\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02AF\u0371\u0373\u0377\u037B-\u037D\u0390\u03AC-\u03CE\u03D0-\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB-\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE-\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0561-\u0587\u13F8-\u13FD\u1D00-\u1D2B\u1D6B-\u1D77\u1D79-\u1D9A\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6-\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FC7\u1FD0-\u1FD3\u1FD6-\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6-\u1FF7\u210A\u210E-\u210F\u2113\u212F\u2134\u2139\u213C-\u213D\u2146-\u2149\u214E\u2184\u2C30-\u2C5E\u2C61\u2C65-\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73-\u2C74\u2C76-\u2C7B\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3-\u2CE4\u2CEC\u2CEE\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA771-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uA78E\uA791\uA793-\uA795\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7B5\uA7B7\uA7FA\uAB30-\uAB5A\uAB60-\uAB65\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A/.source, + // Letter, Modifier + /\u02B0-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0374\u037A\u0559\u0640\u06E5-\u06E6\u07F4-\u07F5\u07FA\u081A\u0824\u0828\u0971\u0E46\u0EC6\u10FC\u17D7\u1843\u1AA7\u1C78-\u1C7D\u1D2C-\u1D6A\u1D78\u1D9B-\u1DBF\u2071\u207F\u2090-\u209C\u2C7C-\u2C7D\u2D6F\u2E2F\u3005\u3031-\u3035\u303B\u309D-\u309E\u30FC-\u30FE\uA015\uA4F8-\uA4FD\uA60C\uA67F\uA69C-\uA69D\uA717-\uA71F\uA770\uA788\uA7F8-\uA7F9\uA9CF\uA9E6\uAA70\uAADD\uAAF3-\uAAF4\uAB5C-\uAB5F\uFF70\uFF9E-\uFF9F/.source, + // Letter, Other + /\u00AA\u00BA\u01BB\u01C0-\u01C3\u0294\u05D0-\u05EA\u05F0-\u05F2\u0620-\u063F\u0641-\u064A\u066E-\u066F\u0671-\u06D3\u06D5\u06EE-\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u0800-\u0815\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0972-\u0980\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC-\u09DD\u09DF-\u09E1\u09F0-\u09F1\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33\u0A35-\u0A36\u0A38-\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0-\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32-\u0B33\u0B35-\u0B39\u0B3D\u0B5C-\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60-\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0-\u0CE1\u0CF1-\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32-\u0E33\u0E40-\u0E45\u0E81-\u0E82\u0E84\u0E87-\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA-\u0EAB\u0EAD-\u0EB0\u0EB2-\u0EB3\u0EBD\u0EC0-\u0EC4\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065-\u1066\u106E-\u1070\u1075-\u1081\u108E\u10D0-\u10FA\u10FD-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17DC\u1820-\u1842\u1844-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE-\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C77\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5-\u1CF6\u2135-\u2138\u2D30-\u2D67\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3006\u303C\u3041-\u3096\u309F\u30A1-\u30FA\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA014\uA016-\uA48C\uA4D0-\uA4F7\uA500-\uA60B\uA610-\uA61F\uA62A-\uA62B\uA66E\uA6A0-\uA6E5\uA78F\uA7F7\uA7FB-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9E0-\uA9E4\uA9E7-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA6F\uAA71-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5-\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADC\uAAE0-\uAAEA\uAAF2\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF66-\uFF6F\uFF71-\uFF9D\uFFA0-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC/.source, + ].join('') + ']'); + class BibtexParser { + parse(input, options = {}) { + // this._progress = 0 + this.pos = 0; + this.input = input; + this.max_entries = options.max_entries || 0; + this.entries = 0; + this.parsing = null; + this.chunks = []; + if (options.async) { + return this.bibtexAsync().then(() => this.chunks); + } + else { + this.bibtex(); + return this.chunks; + } + } + isWhitespace(s, horizontalOnly = false) { + return (s === ' ' || s === '\t' || (!horizontalOnly && (s === '\r' || s === '\n'))); + } + match(s) { + this.skipWhitespace(); + if (this.input.substr(this.pos, s.length) !== s) { + throw new ParseError(`Token mismatch, expected ${JSON.stringify(s)}, found ${JSON.stringify(this.input.substr(this.pos, 20))}...`, this); // tslint:disable-line no-magic-numbers + } + this.pos += s.length; + this.skipWhitespace(); + } + tryMatch(s) { + this.skipWhitespace(); + return (this.input.substr(this.pos, s.length) === s); + // this.skipWhitespace() + } + skipWhitespace() { + while (this.pos < this.input.length && this.isWhitespace(this.input[this.pos])) + this.pos++; + // shady + if (this.input[this.pos] === '%') { + while (this.pos < this.input.length && this.input[this.pos] !== '\n') + this.pos++; + while (this.pos < this.input.length && this.isWhitespace(this.input[this.pos])) + this.pos++; + } + } + value_braces() { + let bracecount = 0; + this.match('{'); + const start = this.pos; + let math = false; + while (true) { + switch (this.input[this.pos]) { + case '\\': + this.pos += 1; + break; + case '{': + bracecount++; + break; + case '}': + if (bracecount === 0) { + if (math) + throw new ParseError('Unclosed math section', this); + this.pos++; + return this.input.substring(start, this.pos - 1); + } + bracecount--; + break; + case '$': + math = !math; + break; + } + this.pos++; + if (this.pos >= this.input.length) { + throw new ParseError(`Unterminated brace-value ${JSON.stringify(this.input.substr(start, 20))}`, this); // tslint:disable-line no-magic-numbers + } + } + } + value_quotes() { + this.match('"'); + const start = this.pos; + let bracecount = 0; + while (true) { + switch (this.input[this.pos]) { + case '\\': + this.pos += 1; + break; + case '{': + bracecount++; + break; + case '}': + bracecount--; + break; + case '"': + if (bracecount <= 0) { + this.pos++; + return this.input.substring(start, this.pos - 1); + } + } + this.pos++; + if (this.pos >= this.input.length) { + throw new ParseError(`Unterminated quote-value ${JSON.stringify(this.input.substr(start, 20))}`, this); // tslint:disable-line no-magic-numbers + } + } + } + single_value() { + if (this.tryMatch('{')) { + return this.value_braces(); + } + else if (this.tryMatch('"')) { + return this.value_quotes(); + } + else { + return this.key(); + } + } + value() { + const values = []; + values.push(this.single_value()); + while (this.tryMatch('#')) { + this.match('#'); + values.push(this.single_value()); + } + return values.join(''); + } + key(allowUnicode = false) { + const start = this.pos; + while (true) { + if (this.pos === this.input.length) { + throw new ParseError('Runaway key', this); + } + if (this.input[this.pos].match(/['a-zA-Z0-9&;_:\\./-]/)) { + this.pos++; + } + else if (allowUnicode && this.input[this.pos].match(letter)) { + this.pos++; + } + else { + return this.input.substring(start, this.pos); + } + } + } + key_equals_value() { + const key = this.key(); + if (!this.tryMatch('=')) { + throw new ParseError(`... = value expected, equals sign missing: ${JSON.stringify(this.input.substr(this.pos, 20))}...`, this); // tslint:disable-line no-magic-numbers + } + this.match('='); + const val = this.value(); + return [key, val]; + } + key_value_list() { + this.key_equals_value(); + while (this.tryMatch(',')) { + this.match(','); + // fixes problems with commas at the end of a list + if (this.tryMatch('}')) { + break; + } + this.key_equals_value(); + } + } + entry(d) { + this.parsing = this.key(true); + this.match(','); + this.key_value_list(); + } + directive() { + this.match('@'); + return `@${this.key()}`.toLowerCase(); + } + string() { + this.key_equals_value(); + } + preamble() { + this.value(); + } + comment() { + while (this.isWhitespace(this.input[this.pos], true)) + this.pos++; + if (this.input[this.pos] === '{') { + this.value_braces(); + return; + } + while (this.input[this.pos] !== '\n' && this.pos < this.input.length) + this.pos++; + } + /* + private progress() { + const progress = Math.round((this.pos / this.input.length * 100) / 5) * 5 // tslint:disable-line no-magic-numbers + if (this._progress !== progress) { + this._progress = progress + process.stdout.write(` (${this._progress}%) `) + } + } + */ + hasMore() { + if (this.max_entries && this.entries >= this.max_entries) + return false; + return (this.pos < this.input.length); + } + bibtex() { + while (this.hasMore()) { + this.parseNext(); + } + } + bibtexAsync() { + return this.hasMore() ? (new Promise(resolve => resolve(this.parseNext()))).then(() => this.bibtexAsync()) : Promise.resolve(null); + } + parseNext() { + // this.progress() + const chunk = { + offset: { + pos: this.pos, + line: this.input.substring(0, this.pos).split('\n').length - 1, + }, + error: null, + text: null, + }; + this.skipWhitespace(); + if (this.pos >= this.input.length) + return; + let guard = ''; + try { + const d = this.directive(); + switch (d) { + case '@string': + this.match('{'); + this.string(); + this.match('}'); + chunk.stringDeclaration = true; + break; + case '@preamble': + this.match('{'); + this.preamble(); + this.match('}'); + chunk.preamble = true; + break; + case '@comment': + this.comment(); + chunk.comment = true; + break; + default: + if (this.tryMatch('{')) { + guard = '{}'; + } + else if (this.tryMatch('(')) { + guard = '()'; + } + else { + throw new ParseError(`Token mismatch, expected '{' or '(', found ${JSON.stringify(this.input.substr(this.pos, 20))}...`, this); // tslint:disable-line no-magic-numbers + } + this.match(guard[0]); + this.entry(d); + this.match(guard[1]); + chunk.entry = true; + this.entries++; + break; + } + } + catch (err) { + if (err.name !== 'ParseError') + throw err; + chunk.error = err.message, + // skip ahead to the next @ and try again + this.pos = chunk.offset.pos + 1; + while (this.pos < this.input.length && this.input[this.pos] !== '@') + this.pos++; + } + const text = this.input.substring(chunk.offset.pos, this.pos); + const last = this.chunks.length - 1; + if (chunk.error && this.chunks.length && this.chunks[last].error) { + this.chunks[last].text += text; + } + else { + chunk.text = text; + this.chunks.push(chunk); + } + } + } + /** + * Reads the bibtex input and splits it into separate chunks of `@string`s, `@comment`s, and bibtex entries. Useful for detecting if a file is bibtex file and for filtering out basic errors that would + * make the more sophisticated [[bibtex.parse]] reject the whole file + * + * @returns array of chunks, with markers for type and errors (if any) found. + */ + function parse(input, options = {}) { + return (new BibtexParser).parse(input, options); + } + exports.parse = parse; + + }); + + var $ = { + math: "\\$", + text: "\\$" + }; + var _ = { + math: "\\_", + text: "\\_" + }; + var require$$0 = { + "#": { + math: "\\#", + text: "\\#" + }, + $: $, + "%": { + math: "\\%", + text: "\\%" + }, + "&": { + math: "\\&", + text: "\\&" + }, + "/​": { + text: "\\slash", + commandspacer: true + }, + "<": { + math: "<" + }, + ">": { + math: ">" + }, + "\\": { + math: "\\backslash", + text: "\\textbackslash", + commandspacer: true + }, + "^": { + math: "\\sphat", + text: "\\^" + }, + _: _, + "i︠a︡": { + text: "\\t{ia}" + }, + "{": { + math: "\\lbrace", + text: "\\{" + }, + "}": { + math: "\\rbrace", + text: "\\}" + }, + "~": { + math: "\\sptilde", + text: "\\textasciitilde", + commandspacer: true + }, + " ": { + math: "~", + space: true, + text: "~" + }, + "¡": { + text: "\\textexclamdown", + commandspacer: true + }, + "¢": { + math: "\\cent", + text: "\\textcent", + commandspacer: true, + textpackages: [ + "textcomp" + ] + }, + "£": { + math: "\\pounds", + text: "\\textsterling", + commandspacer: true, + textpackages: [ + "textcomp" + ] + }, + "¤": { + text: "\\textcurrency", + commandspacer: true, + textpackages: [ + "textcomp" + ] + }, + "¥": { + math: "\\yen", + text: "\\textyen", + commandspacer: true, + textpackages: [ + "textcomp" + ] + }, + "¦": { + text: "\\textbrokenbar", + commandspacer: true, + textpackages: [ + "textcomp" + ] + }, + "§": { + text: "\\textsection", + commandspacer: true, + textpackages: [ + "textcomp" + ] + }, + "¨": { + math: "\\spddot", + text: "\\textasciidieresis", + commandspacer: true + }, + "©": { + text: "\\textcopyright", + commandspacer: true, + textpackages: [ + "textcomp" + ] + }, + "ª": { + text: "\\textordfeminine", + commandspacer: true, + textpackages: [ + "textcomp" + ] + }, + "«": { + text: "\\guillemotleft", + commandspacer: true + }, + "¬": { + math: "\\lnot" + }, + "­": { + math: "\\-", + text: "\\-" + }, + "®": { + math: "\\circledR", + text: "\\textregistered", + commandspacer: true, + textpackages: [ + "textcomp" + ] + }, + "¯": { + text: "\\textasciimacron", + commandspacer: true + }, + "°": { + math: "^\\circ", + text: "\\textdegree", + commandspacer: true, + textpackages: [ + "textcomp" + ] + }, + "±": { + math: "\\pm" + }, + "²": { + math: "^{2}" + }, + "³": { + math: "^{3}" + }, + "´": { + text: "\\textasciiacute", + commandspacer: true + }, + "µ": { + text: "\\textmu", + commandspacer: true + }, + "¶": { + text: "\\textparagraph", + commandspacer: true, + textpackages: [ + "textcomp" + ] + }, + "·": { + math: "\\cdot" + }, + "¸": { + text: "\\c", + commandspacer: true + }, + "¹": { + math: "^{1}" + }, + "º": { + text: "\\textordmasculine", + commandspacer: true, + textpackages: [ + "textcomp" + ] + }, + "»": { + text: "\\guillemotright", + commandspacer: true + }, + "¼": { + math: "\\frac{1}{4}" + }, + "½": { + math: "\\frac{1}{2}" + }, + "¾": { + math: "\\frac{3}{4}" + }, + "¿": { + text: "\\textquestiondown", + commandspacer: true + }, + "À": { + text: "\\`A" + }, + "Á": { + text: "\\'A" + }, + "Â": { + text: "\\^A" + }, + "Ã": { + text: "\\~A" + }, + "Ä": { + text: "\\\"A" + }, + "Å": { + text: "\\AA", + commandspacer: true + }, + "Æ": { + text: "\\AE", + commandspacer: true + }, + "Ç": { + text: "\\c{C}" + }, + "È": { + text: "\\`E" + }, + "É": { + text: "\\'E" + }, + "Ê": { + text: "\\^E" + }, + "Ë": { + text: "\\\"E" + }, + "Ì": { + text: "\\`I" + }, + "Í": { + text: "\\'I" + }, + "Î": { + text: "\\^I" + }, + "Ï": { + text: "\\\"I" + }, + "Ð": { + text: "\\DH", + commandspacer: true + }, + "Ñ": { + text: "\\~N" + }, + "Ò": { + text: "\\`O" + }, + "Ó": { + text: "\\'O" + }, + "Ô": { + text: "\\^O" + }, + "Õ": { + text: "\\~O" + }, + "Ö": { + text: "\\\"O" + }, + "×": { + math: "\\times", + text: "\\texttimes", + commandspacer: true + }, + "Ø": { + text: "\\O", + commandspacer: true + }, + "Ù": { + text: "\\`U" + }, + "Ú": { + text: "\\'U" + }, + "Û": { + text: "\\^U" + }, + "Ü": { + text: "\\\"U" + }, + "Ý": { + text: "\\'Y" + }, + "Þ": { + text: "\\TH", + commandspacer: true + }, + "ß": { + text: "\\ss", + commandspacer: true + }, + "à": { + text: "\\`a" + }, + "á": { + text: "\\'a" + }, + "â": { + text: "\\^a" + }, + "ã": { + text: "\\~a" + }, + "ä": { + text: "\\\"a" + }, + "å": { + text: "\\aa", + commandspacer: true + }, + "æ": { + text: "\\ae", + commandspacer: true + }, + "ç": { + text: "\\c{c}" + }, + "è": { + text: "\\`e" + }, + "é": { + text: "\\'e" + }, + "ê": { + text: "\\^e" + }, + "ë": { + text: "\\\"e" + }, + "ì": { + text: "\\`i" + }, + "í": { + text: "\\'i" + }, + "î": { + text: "\\^i" + }, + "ï": { + text: "\\\"i" + }, + "ð": { + math: "\\eth", + mathpackages: [ + "amssymb", + "arevmath" + ], + text: "\\dh", + commandspacer: true + }, + "ñ": { + text: "\\~n" + }, + "ò": { + text: "\\`o" + }, + "ó": { + text: "\\'o" + }, + "ô": { + text: "\\^o" + }, + "õ": { + text: "\\~o" + }, + "ö": { + text: "\\\"o" + }, + "÷": { + math: "\\div" + }, + "ø": { + text: "\\o", + commandspacer: true + }, + "ù": { + text: "\\`u" + }, + "ú": { + text: "\\'u" + }, + "û": { + text: "\\^u" + }, + "ü": { + text: "\\\"u" + }, + "ý": { + text: "\\'y" + }, + "þ": { + text: "\\th", + commandspacer: true + }, + "ÿ": { + text: "\\\"y" + }, + "Ā": { + text: "\\=A" + }, + "ā": { + text: "\\=a" + }, + "Ă": { + text: "\\u{A}" + }, + "ă": { + text: "\\u{a}" + }, + "Ą": { + text: "\\k{A}" + }, + "ą": { + text: "\\k{a}" + }, + "Ć": { + text: "\\'C" + }, + "ć": { + text: "\\'c" + }, + "Ĉ": { + text: "\\^C" + }, + "ĉ": { + text: "\\^c" + }, + "Ċ": { + text: "\\.C" + }, + "ċ": { + text: "\\.c" + }, + "Č": { + text: "\\v{C}" + }, + "č": { + text: "\\v{c}" + }, + "Ď": { + text: "\\v{D}" + }, + "ď": { + text: "\\v{d}" + }, + "Đ": { + text: "\\DJ", + commandspacer: true + }, + "đ": { + text: "\\dj", + commandspacer: true + }, + "Ē": { + text: "\\=E" + }, + "ē": { + text: "\\=e" + }, + "Ĕ": { + text: "\\u{E}" + }, + "ĕ": { + text: "\\u{e}" + }, + "Ė": { + text: "\\.E" + }, + "ė": { + text: "\\.e" + }, + "Ę": { + text: "\\k{E}" + }, + "ę": { + text: "\\k{e}" + }, + "Ě": { + text: "\\v{E}" + }, + "ě": { + text: "\\v{e}" + }, + "Ĝ": { + text: "\\^G" + }, + "ĝ": { + text: "\\^g" + }, + "Ğ": { + text: "\\u{G}" + }, + "ğ": { + text: "\\u{g}" + }, + "Ġ": { + text: "\\.G" + }, + "ġ": { + text: "\\.g" + }, + "Ģ": { + text: "\\c{G}" + }, + "ģ": { + text: "\\c{g}" + }, + "Ĥ": { + text: "\\^H" + }, + "ĥ": { + text: "\\^h" + }, + "Ħ": { + text: "{\\fontencoding{LELA}\\selectfont\\char40}" + }, + "ħ": { + math: "\\Elzxh" + }, + "Ĩ": { + text: "\\~I" + }, + "ĩ": { + text: "\\~i" + }, + "Ī": { + text: "\\=I" + }, + "ī": { + text: "\\=i" + }, + "Ĭ": { + text: "\\u{I}" + }, + "ĭ": { + text: "{\\u \\i}" + }, + "Į": { + text: "\\k{I}" + }, + "į": { + text: "\\k{i}" + }, + "İ": { + text: "\\.I" + }, + "ı": { + math: "\\imath", + text: "\\i", + commandspacer: true + }, + "IJ": { + text: "IJ" + }, + "ij": { + text: "ij" + }, + "Ĵ": { + text: "\\^J" + }, + "ĵ": { + text: "\\^\\j", + commandspacer: true + }, + "Ķ": { + text: "\\c{K}" + }, + "ķ": { + text: "\\c{k}" + }, + "ĸ": { + text: "{\\fontencoding{LELA}\\selectfont\\char91}" + }, + "Ĺ": { + text: "\\'L" + }, + "ĺ": { + text: "\\'l" + }, + "Ļ": { + text: "\\c{L}" + }, + "ļ": { + text: "\\c{l}" + }, + "Ľ": { + text: "\\v{L}" + }, + "ľ": { + text: "\\v{l}" + }, + "Ŀ": { + text: "{\\fontencoding{LELA}\\selectfont\\char201}" + }, + "ŀ": { + text: "{\\fontencoding{LELA}\\selectfont\\char202}" + }, + "Ł": { + text: "\\L", + commandspacer: true + }, + "ł": { + text: "\\l", + commandspacer: true + }, + "Ń": { + text: "\\'N" + }, + "ń": { + text: "\\'n" + }, + "Ņ": { + text: "\\c{N}" + }, + "ņ": { + text: "\\c{n}" + }, + "Ň": { + text: "\\v{N}" + }, + "ň": { + text: "\\v{n}" + }, + "ʼn": { + text: "'n" + }, + "Ŋ": { + text: "\\NG", + commandspacer: true + }, + "ŋ": { + text: "\\ng", + commandspacer: true + }, + "Ō": { + text: "\\=O" + }, + "ō": { + text: "\\=o" + }, + "Ŏ": { + text: "\\u{O}" + }, + "ŏ": { + text: "\\u{o}" + }, + "Ő": { + text: "\\H{O}" + }, + "ő": { + text: "\\H{o}" + }, + "Œ": { + text: "\\OE", + commandspacer: true + }, + "œ": { + text: "\\oe", + commandspacer: true + }, + "Ŕ": { + text: "\\'R" + }, + "ŕ": { + text: "\\'r" + }, + "Ŗ": { + text: "\\c{R}" + }, + "ŗ": { + text: "\\c{r}" + }, + "Ř": { + text: "\\v{R}" + }, + "ř": { + text: "\\v{r}" + }, + "Ś": { + text: "\\'S" + }, + "ś": { + text: "\\'s" + }, + "Ŝ": { + text: "\\^S" + }, + "ŝ": { + text: "\\^s" + }, + "Ş": { + text: "\\c{S}" + }, + "ş": { + text: "\\c{s}" + }, + "Š": { + text: "\\v{S}" + }, + "š": { + text: "\\v{s}" + }, + "Ţ": { + text: "\\c{T}" + }, + "ţ": { + text: "\\c{t}" + }, + "Ť": { + text: "\\v{T}" + }, + "ť": { + text: "\\v{t}" + }, + "Ŧ": { + text: "{\\fontencoding{LELA}\\selectfont\\char47}" + }, + "ŧ": { + text: "{\\fontencoding{LELA}\\selectfont\\char63}" + }, + "Ũ": { + text: "\\~U" + }, + "ũ": { + text: "\\~u" + }, + "Ū": { + text: "\\=U" + }, + "ū": { + text: "\\=u" + }, + "Ŭ": { + text: "\\u{U}" + }, + "ŭ": { + text: "\\u{u}" + }, + "Ů": { + text: "\\r{U}" + }, + "ů": { + text: "\\r{u}" + }, + "Ű": { + text: "\\H{U}" + }, + "ű": { + text: "\\H{u}" + }, + "Ų": { + text: "\\k{U}" + }, + "ų": { + text: "\\k{u}" + }, + "Ŵ": { + text: "\\^W" + }, + "ŵ": { + text: "\\^w" + }, + "Ŷ": { + text: "\\^Y" + }, + "ŷ": { + text: "\\^y" + }, + "Ÿ": { + text: "\\\"Y" + }, + "Ź": { + text: "\\'Z" + }, + "ź": { + text: "\\'z" + }, + "Ż": { + text: "\\.Z" + }, + "ż": { + text: "\\.z" + }, + "Ž": { + text: "\\v{Z}" + }, + "ž": { + text: "\\v{z}" + }, + "ſ": { + text: "s" + }, + "ƒ": { + math: "f" + }, + "ƕ": { + text: "\\texthvlig", + commandspacer: true + }, + "ƞ": { + text: "\\textnrleg", + commandspacer: true + }, + "ƪ": { + text: "\\textesh", + commandspacer: true + }, + "Ƶ": { + math: "\\Zbar" + }, + "ƺ": { + text: "{\\fontencoding{LELA}\\selectfont\\char195}" + }, + "ǂ": { + text: "\\textdoublepipe", + commandspacer: true + }, + "Ǎ": { + text: "\\v{A}" + }, + "ǎ": { + text: "\\v{a}" + }, + "Ǐ": { + text: "\\v{I}" + }, + "ǐ": { + text: "\\v{i}" + }, + "Ǒ": { + text: "\\v{O}" + }, + "ǒ": { + text: "\\v{o}" + }, + "Ǔ": { + text: "\\v{U}" + }, + "ǔ": { + text: "\\v{u}" + }, + "Ǧ": { + text: "\\v{G}" + }, + "ǧ": { + text: "\\v{g}" + }, + "Ǩ": { + text: "\\v{K}" + }, + "ǩ": { + text: "\\v{k}" + }, + "Ǫ": { + text: "\\k{O}" + }, + "ǫ": { + text: "\\k{o}" + }, + "ǰ": { + text: "\\v{j}" + }, + "Ǵ": { + text: "\\'G" + }, + "ǵ": { + text: "\\'g" + }, + "Ȩ": { + text: "\\c{E}" + }, + "ȩ": { + text: "\\c{e}" + }, + "ȷ": { + math: "\\jmath" + }, + "ɐ": { + math: "\\Elztrna" + }, + "ɒ": { + math: "\\Elztrnsa" + }, + "ɔ": { + math: "\\Elzopeno" + }, + "ɖ": { + math: "\\Elzrtld" + }, + "ɘ": { + text: "{\\fontencoding{LEIP}\\selectfont\\char61}" + }, + "ə": { + math: "\\Elzschwa" + }, + "ɛ": { + math: "\\varepsilon" + }, + "ɡ": { + text: "g" + }, + "ɣ": { + math: "\\Elzpgamma" + }, + "ɤ": { + math: "\\Elzpbgam" + }, + "ɥ": { + math: "\\Elztrnh" + }, + "ɬ": { + math: "\\Elzbtdl" + }, + "ɭ": { + math: "\\Elzrtll" + }, + "ɯ": { + math: "\\Elztrnm" + }, + "ɰ": { + math: "\\Elztrnmlr" + }, + "ɱ": { + math: "\\Elzltlmr" + }, + "ɲ": { + text: "\\Elzltln", + commandspacer: true + }, + "ɳ": { + math: "\\Elzrtln" + }, + "ɷ": { + math: "\\Elzclomeg" + }, + "ɸ": { + text: "\\textphi", + commandspacer: true + }, + "ɹ": { + math: "\\Elztrnr" + }, + "ɺ": { + math: "\\Elztrnrl" + }, + "ɻ": { + math: "\\Elzrttrnr" + }, + "ɼ": { + math: "\\Elzrl" + }, + "ɽ": { + math: "\\Elzrtlr" + }, + "ɾ": { + math: "\\Elzfhr" + }, + "ɿ": { + text: "{\\fontencoding{LEIP}\\selectfont\\char202}" + }, + "ʂ": { + math: "\\Elzrtls" + }, + "ʃ": { + math: "\\Elzesh" + }, + "ʇ": { + math: "\\Elztrnt" + }, + "ʈ": { + math: "\\Elzrtlt" + }, + "ʊ": { + math: "\\Elzpupsil" + }, + "ʋ": { + math: "\\Elzpscrv" + }, + "ʌ": { + math: "\\Elzinvv" + }, + "ʍ": { + math: "\\Elzinvw" + }, + "ʎ": { + math: "\\Elztrny" + }, + "ʐ": { + math: "\\Elzrtlz" + }, + "ʒ": { + math: "\\Elzyogh" + }, + "ʔ": { + math: "\\Elzglst" + }, + "ʕ": { + math: "\\Elzreglst" + }, + "ʖ": { + math: "\\Elzinglst" + }, + "ʞ": { + text: "\\textturnk", + commandspacer: true + }, + "ʤ": { + math: "\\Elzdyogh" + }, + "ʧ": { + math: "\\Elztesh" + }, + "ʰ": { + math: "^{h}", + text: "\\textsuperscript{h}" + }, + "ʲ": { + math: "^{j}", + text: "\\textsuperscript{j}" + }, + "ʳ": { + math: "^{r}", + text: "\\textsuperscript{r}" + }, + "ʷ": { + math: "^{w}", + text: "\\textsuperscript{w}" + }, + "ʸ": { + math: "^{y}", + text: "\\textsuperscript{y}" + }, + "ʹ": { + text: "'" + }, + "ʻ": { + text: "'" + }, + "ʼ": { + text: "'" + }, + "ʽ": { + text: "'" + }, + "ʿ": { + text: "\\lasp", + commandspacer: true, + textpackages: [ + "mathscinet" + ] + }, + "ˆ": { + text: "\\textasciicircum", + commandspacer: true + }, + "ˇ": { + text: "\\textasciicaron", + commandspacer: true + }, + "ˈ": { + math: "\\Elzverts" + }, + "ˉ": { + text: "-" + }, + "ˌ": { + math: "\\Elzverti" + }, + "ː": { + math: "\\Elzlmrk" + }, + "ˑ": { + math: "\\Elzhlmrk" + }, + "˒": { + math: "\\Elzsbrhr" + }, + "˓": { + math: "\\Elzsblhr" + }, + "˔": { + math: "\\Elzrais" + }, + "˕": { + math: "\\Elzlow" + }, + "˘": { + text: "\\textasciibreve", + commandspacer: true + }, + "˙": { + text: "\\textperiodcentered", + commandspacer: true, + textpackages: [ + "textcomp" + ] + }, + "˚": { + text: "\\r{}" + }, + "˛": { + text: "\\k{}" + }, + "˜": { + text: "\\texttildelow", + commandspacer: true + }, + "˝": { + text: "\\H{}" + }, + "ˡ": { + math: "^{l}", + text: "\\textsuperscript{l}" + }, + "ˢ": { + math: "^{s}", + text: "\\textsuperscript{s}" + }, + "ˣ": { + math: "^{x}", + text: "\\textsuperscript{x}" + }, + "˥": { + text: "\\tone{55}" + }, + "˦": { + text: "\\tone{44}" + }, + "˧": { + text: "\\tone{33}" + }, + "˨": { + text: "\\tone{22}" + }, + "˩": { + text: "\\tone{11}" + }, + "̀": { + math: "\\grave", + combiningdiacritic: true, + text: "\\`" + }, + "̀̄": { + text: "\\textgravemacron", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̄̀": { + text: "\\textgravemacron", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̀̇": { + text: "\\textgravedot", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̇̀": { + text: "\\textgravedot", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "́": { + math: "\\acute", + combiningdiacritic: true, + text: "\\'" + }, + "́̄": { + text: "\\textacutemacron", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̄́": { + text: "\\textacutemacron", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "́̌": { + text: "\\textacutewedge", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̌́": { + text: "\\textacutewedge", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̂": { + math: "\\hat", + combiningdiacritic: true, + text: "\\^" + }, + "̂̇": { + text: "\\textcircumdot", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̇̂": { + text: "\\textcircumdot", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̃": { + math: "\\tilde", + combiningdiacritic: true, + text: "\\~" + }, + "̃̇": { + text: "\\texttildedot", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̇̃": { + text: "\\texttildedot", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̄": { + math: "\\bar", + combiningdiacritic: true, + text: "\\=" + }, + "̅": { + math: "\\overline", + combiningdiacritic: true + }, + "̆": { + math: "\\breve", + combiningdiacritic: true, + text: "\\u", + commandspacer: true + }, + "̆̄": { + text: "\\textbrevemacron", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̄̆": { + text: "\\textbrevemacron", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̇": { + math: "\\dot", + combiningdiacritic: true, + text: "\\." + }, + "̇́": { + text: "\\textdotacute", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "́̇": { + text: "\\textdotacute", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̇̆": { + text: "\\textdotbreve", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̆̇": { + text: "\\textdotbreve", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̈": { + math: "\\ddot", + combiningdiacritic: true, + text: "\\\"" + }, + "̉": { + math: "\\ovhook" + }, + "̊": { + math: "\\mathring", + combiningdiacritic: true, + text: "\\r", + commandspacer: true + }, + "̊̄": { + text: "\\textringmacron", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̄̊": { + text: "\\textringmacron", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̋": { + text: "\\H", + commandspacer: true, + combiningdiacritic: true + }, + "̌": { + math: "\\check", + text: "\\v", + commandspacer: true, + combiningdiacritic: true + }, + "̍": { + text: "\\textvbaraccent", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̎": { + text: "\\textdoublevbaraccent", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̏": { + text: "\\textdoublegrave", + commandspacer: true, + combiningdiacritic: true + }, + "̐": { + text: "\\textdotbreve", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̑": { + text: "{\\fontencoding{LECO}\\selectfont\\char177}" + }, + "̒": { + math: "\\oturnedcomma" + }, + "̕": { + math: "\\ocommatopright" + }, + "̖": { + text: "\\textsubgrave", + commandspacer: true, + combiningdiacritic: true + }, + "̘": { + text: "\\textadvancing", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̙": { + text: "\\textretracting", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̚": { + math: "\\droang", + text: "\\textcorner", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̜": { + text: "\\textsublhalfring", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̝": { + text: "\\textraising", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̞": { + text: "\\textlowering", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̟": { + text: "\\textsubplus", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̡": { + math: "\\Elzpalh" + }, + "̢": { + text: "\\Elzrh", + commandspacer: true + }, + "̣": { + text: "\\d", + commandspacer: true, + combiningdiacritic: true + }, + "̤": { + text: "\\textsubumlaut", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̥": { + text: "\\textsubring", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̧": { + text: "\\c", + commandspacer: true, + combiningdiacritic: true + }, + "̨": { + text: "\\k", + commandspacer: true, + combiningdiacritic: true + }, + "̩": { + text: "\\textsyllabic", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̪": { + math: "\\Elzsbbrg", + text: "\\textsubbridge", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̫": { + text: "{\\fontencoding{LECO}\\selectfont\\char203}" + }, + "̬": { + text: "\\textsubwedge", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̯": { + text: "\\textsubarch", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̰": { + math: "\\utilde", + text: "\\textsubtilde", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̱": { + math: "\\underbar", + combiningdiacritic: true, + text: "\\textsubbar", + commandspacer: true, + textpackages: [ + "tipa" + ] + }, + "̲": { + math: "\\underline" + }, + "̴": { + text: "\\textsuperimposetilde", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̵": { + text: "\\Elzxl", + commandspacer: true + }, + "̶": { + text: "\\Elzbar", + commandspacer: true + }, + "̷": { + text: "{\\fontencoding{LECO}\\selectfont\\char215}" + }, + "̸": { + math: "\\not" + }, + "̹": { + text: "\\textsubrhalfring", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̺": { + text: "\\textinvsubbridge", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̻": { + text: "\\textsubsquare", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̼": { + text: "\\textseagull", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̽": { + text: "\\textovercross", + commandspacer: true, + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "͡": { + text: "{\\fontencoding{LECO}\\selectfont\\char225}" + }, + "ʹ": { + text: "'" + }, + "͵": { + text: "," + }, + ";": { + text: ";" + }, + "Ά": { + text: "\\'A" + }, + "Έ": { + text: "\\'E" + }, + "Ή": { + text: "\\'H" + }, + "Ί": { + text: "{\\'{}I}" + }, + "Ό": { + text: "{\\'{}O}" + }, + "Ύ": { + math: "\\mathrm{'Y}" + }, + "Ώ": { + math: "\\mathrm{'\\Omega}" + }, + "ΐ": { + math: "\\acute{\\ddot{\\iota}}" + }, + "Α": { + math: "A" + }, + "Β": { + math: "B" + }, + "Γ": { + math: "\\Gamma" + }, + "Δ": { + math: "\\Delta" + }, + "Ε": { + math: "E" + }, + "Ζ": { + math: "Z" + }, + "Η": { + math: "H" + }, + "Θ": { + math: "\\Theta" + }, + "Ι": { + math: "I" + }, + "Κ": { + math: "K" + }, + "Λ": { + math: "\\Lambda" + }, + "Μ": { + math: "M" + }, + "Ν": { + math: "N" + }, + "Ξ": { + math: "\\Xi" + }, + "Ο": { + math: "O" + }, + "Π": { + math: "\\Pi" + }, + "Ρ": { + math: "P" + }, + "Σ": { + math: "\\Sigma" + }, + "Τ": { + math: "T" + }, + "Υ": { + math: "\\Upsilon" + }, + "Φ": { + math: "\\Phi" + }, + "Χ": { + math: "X" + }, + "Ψ": { + math: "\\Psi" + }, + "Ω": { + math: "\\Omega" + }, + "Ϊ": { + math: "\\mathrm{\\ddot{I}}" + }, + "Ϋ": { + math: "\\mathrm{\\ddot{Y}}" + }, + "ά": { + text: "{\\'$\\alpha$}" + }, + "έ": { + math: "\\acute{\\epsilon}" + }, + "ή": { + math: "\\acute{\\eta}" + }, + "ί": { + math: "\\acute{\\iota}" + }, + "ΰ": { + math: "\\acute{\\ddot{\\upsilon}}" + }, + "α": { + math: "\\alpha" + }, + "β": { + math: "\\beta" + }, + "γ": { + math: "\\gamma" + }, + "δ": { + math: "\\delta" + }, + "ε": { + math: "\\epsilon" + }, + "ζ": { + math: "\\zeta" + }, + "η": { + math: "\\eta" + }, + "θ": { + math: "\\theta", + text: "\\texttheta", + commandspacer: true + }, + "ι": { + math: "\\iota" + }, + "κ": { + math: "\\kappa" + }, + "λ": { + math: "\\lambda" + }, + "μ": { + math: "\\mu" + }, + "ν": { + math: "\\nu" + }, + "ξ": { + math: "\\xi" + }, + "ο": { + math: "o" + }, + "π": { + math: "\\pi" + }, + "ρ": { + math: "\\rho" + }, + "ς": { + math: "\\varsigma" + }, + "σ": { + math: "\\sigma" + }, + "τ": { + math: "\\tau" + }, + "υ": { + math: "\\upsilon" + }, + "φ": { + math: "\\varphi" + }, + "χ": { + math: "\\chi" + }, + "ψ": { + math: "\\psi" + }, + "ω": { + math: "\\omega" + }, + "ϊ": { + math: "\\ddot{\\iota}" + }, + "ϋ": { + math: "\\ddot{\\upsilon}" + }, + "ό": { + text: "\\'o" + }, + "ύ": { + math: "\\acute{\\upsilon}" + }, + "ώ": { + math: "\\acute{\\omega}" + }, + "ϐ": { + math: "\\varbeta", + text: "\\Pisymbol{ppi022}{87}" + }, + "ϑ": { + math: "\\vartheta", + text: "\\textvartheta", + commandspacer: true + }, + "ϒ": { + math: "\\Upsilon" + }, + "ϕ": { + math: "\\phi" + }, + "ϖ": { + math: "\\varpi" + }, + "Ϙ": { + math: "\\Qoppa" + }, + "ϙ": { + math: "\\qoppa" + }, + "Ϛ": { + math: "\\Stigma" + }, + "ϛ": { + math: "\\stigma" + }, + "Ϝ": { + math: "\\Digamma" + }, + "ϝ": { + math: "\\digamma" + }, + "Ϟ": { + math: "\\Koppa" + }, + "ϟ": { + math: "\\koppa" + }, + "Ϡ": { + math: "\\Sampi" + }, + "ϡ": { + math: "\\sampi" + }, + "ϰ": { + math: "\\varkappa" + }, + "ϱ": { + math: "\\varrho" + }, + "ϴ": { + math: "\\upvarTheta", + text: "\\textTheta", + commandspacer: true + }, + "ϵ": { + math: "\\epsilon" + }, + "϶": { + math: "\\backepsilon" + }, + "Ё": { + text: "\\cyrchar\\CYRYO", + commandspacer: true + }, + "Ђ": { + text: "\\cyrchar\\CYRDJE", + commandspacer: true + }, + "Ѓ": { + text: "\\cyrchar{\\'\\CYRG}" + }, + "Є": { + text: "\\cyrchar\\CYRIE", + commandspacer: true + }, + "Ѕ": { + text: "\\cyrchar\\CYRDZE", + commandspacer: true + }, + "І": { + text: "\\cyrchar\\CYRII", + commandspacer: true + }, + "Ї": { + text: "\\cyrchar\\CYRYI", + commandspacer: true + }, + "Ј": { + text: "\\cyrchar\\CYRJE", + commandspacer: true + }, + "Љ": { + text: "\\cyrchar\\CYRLJE", + commandspacer: true + }, + "Њ": { + text: "\\cyrchar\\CYRNJE", + commandspacer: true + }, + "Ћ": { + text: "\\cyrchar\\CYRTSHE", + commandspacer: true + }, + "Ќ": { + text: "\\cyrchar{\\'\\CYRK}" + }, + "Ў": { + text: "\\cyrchar\\CYRUSHRT", + commandspacer: true + }, + "Џ": { + text: "\\cyrchar\\CYRDZHE", + commandspacer: true + }, + "А": { + text: "\\cyrchar\\CYRA", + commandspacer: true + }, + "Б": { + text: "\\cyrchar\\CYRB", + commandspacer: true + }, + "В": { + text: "\\cyrchar\\CYRV", + commandspacer: true + }, + "Г": { + text: "\\cyrchar\\CYRG", + commandspacer: true + }, + "Д": { + text: "\\cyrchar\\CYRD", + commandspacer: true + }, + "Е": { + text: "\\cyrchar\\CYRE", + commandspacer: true + }, + "Ж": { + text: "\\cyrchar\\CYRZH", + commandspacer: true + }, + "З": { + text: "\\cyrchar\\CYRZ", + commandspacer: true + }, + "И": { + text: "\\cyrchar\\CYRI", + commandspacer: true + }, + "Й": { + text: "\\cyrchar\\CYRISHRT", + commandspacer: true + }, + "К": { + text: "\\cyrchar\\CYRK", + commandspacer: true + }, + "Л": { + text: "\\cyrchar\\CYRL", + commandspacer: true + }, + "М": { + text: "\\cyrchar\\CYRM", + commandspacer: true + }, + "Н": { + text: "\\cyrchar\\CYRN", + commandspacer: true + }, + "О": { + text: "\\cyrchar\\CYRO", + commandspacer: true + }, + "П": { + text: "\\cyrchar\\CYRP", + commandspacer: true + }, + "Р": { + text: "\\cyrchar\\CYRR", + commandspacer: true + }, + "С": { + text: "\\cyrchar\\CYRS", + commandspacer: true + }, + "Т": { + text: "\\cyrchar\\CYRT", + commandspacer: true + }, + "У": { + text: "\\cyrchar\\CYRU", + commandspacer: true + }, + "Ф": { + text: "\\cyrchar\\CYRF", + commandspacer: true + }, + "Х": { + text: "\\cyrchar\\CYRH", + commandspacer: true + }, + "Ц": { + text: "\\cyrchar\\CYRC", + commandspacer: true + }, + "Ч": { + text: "\\cyrchar\\CYRCH", + commandspacer: true + }, + "Ш": { + text: "\\cyrchar\\CYRSH", + commandspacer: true + }, + "Щ": { + text: "\\cyrchar\\CYRSHCH", + commandspacer: true + }, + "Ъ": { + text: "\\cyrchar\\CYRHRDSN", + commandspacer: true + }, + "Ы": { + text: "\\cyrchar\\CYRERY", + commandspacer: true + }, + "Ь": { + text: "\\cyrchar\\CYRSFTSN", + commandspacer: true + }, + "Э": { + text: "\\cyrchar\\CYREREV", + commandspacer: true + }, + "Ю": { + text: "\\cyrchar\\CYRYU", + commandspacer: true + }, + "Я": { + text: "\\cyrchar\\CYRYA", + commandspacer: true + }, + "а": { + text: "\\cyrchar\\cyra", + commandspacer: true + }, + "б": { + text: "\\cyrchar\\cyrb", + commandspacer: true + }, + "в": { + text: "\\cyrchar\\cyrv", + commandspacer: true + }, + "г": { + text: "\\cyrchar\\cyrg", + commandspacer: true + }, + "д": { + text: "\\cyrchar\\cyrd", + commandspacer: true + }, + "е": { + text: "\\cyrchar\\cyre", + commandspacer: true + }, + "ж": { + text: "\\cyrchar\\cyrzh", + commandspacer: true + }, + "з": { + text: "\\cyrchar\\cyrz", + commandspacer: true + }, + "и": { + text: "\\cyrchar\\cyri", + commandspacer: true + }, + "й": { + text: "\\cyrchar\\cyrishrt", + commandspacer: true + }, + "к": { + text: "\\cyrchar\\cyrk", + commandspacer: true + }, + "л": { + text: "\\cyrchar\\cyrl", + commandspacer: true + }, + "м": { + text: "\\cyrchar\\cyrm", + commandspacer: true + }, + "н": { + text: "\\cyrchar\\cyrn", + commandspacer: true + }, + "о": { + text: "\\cyrchar\\cyro", + commandspacer: true + }, + "п": { + text: "\\cyrchar\\cyrp", + commandspacer: true + }, + "р": { + text: "\\cyrchar\\cyrr", + commandspacer: true + }, + "с": { + text: "\\cyrchar\\cyrs", + commandspacer: true + }, + "т": { + text: "\\cyrchar\\cyrt", + commandspacer: true + }, + "у": { + text: "\\cyrchar\\cyru", + commandspacer: true + }, + "ф": { + text: "\\cyrchar\\cyrf", + commandspacer: true + }, + "х": { + text: "\\cyrchar\\cyrh", + commandspacer: true + }, + "ц": { + text: "\\cyrchar\\cyrc", + commandspacer: true + }, + "ч": { + text: "\\cyrchar\\cyrch", + commandspacer: true + }, + "ш": { + text: "\\cyrchar\\cyrsh", + commandspacer: true + }, + "щ": { + text: "\\cyrchar\\cyrshch", + commandspacer: true + }, + "ъ": { + text: "\\cyrchar\\cyrhrdsn", + commandspacer: true + }, + "ы": { + text: "\\cyrchar\\cyrery", + commandspacer: true + }, + "ь": { + text: "\\cyrchar\\cyrsftsn", + commandspacer: true + }, + "э": { + text: "\\cyrchar\\cyrerev", + commandspacer: true + }, + "ю": { + text: "\\cyrchar\\cyryu", + commandspacer: true + }, + "я": { + text: "\\cyrchar\\cyrya", + commandspacer: true + }, + "ё": { + text: "\\cyrchar\\cyryo", + commandspacer: true + }, + "ђ": { + text: "\\cyrchar\\cyrdje", + commandspacer: true + }, + "ѓ": { + text: "\\cyrchar{\\'\\cyrg}" + }, + "є": { + text: "\\cyrchar\\cyrie", + commandspacer: true + }, + "ѕ": { + text: "\\cyrchar\\cyrdze", + commandspacer: true + }, + "і": { + text: "\\cyrchar\\cyrii", + commandspacer: true + }, + "ї": { + text: "\\cyrchar\\cyryi", + commandspacer: true + }, + "ј": { + text: "\\cyrchar\\cyrje", + commandspacer: true + }, + "љ": { + text: "\\cyrchar\\cyrlje", + commandspacer: true + }, + "њ": { + text: "\\cyrchar\\cyrnje", + commandspacer: true + }, + "ћ": { + text: "\\cyrchar\\cyrtshe", + commandspacer: true + }, + "ќ": { + text: "\\cyrchar{\\'\\cyrk}" + }, + "ў": { + text: "\\cyrchar\\cyrushrt", + commandspacer: true + }, + "џ": { + text: "\\cyrchar\\cyrdzhe", + commandspacer: true + }, + "Ѡ": { + text: "\\cyrchar\\CYROMEGA", + commandspacer: true + }, + "ѡ": { + text: "\\cyrchar\\cyromega", + commandspacer: true + }, + "Ѣ": { + text: "\\cyrchar\\CYRYAT", + commandspacer: true + }, + "Ѥ": { + text: "\\cyrchar\\CYRIOTE", + commandspacer: true + }, + "ѥ": { + text: "\\cyrchar\\cyriote", + commandspacer: true + }, + "Ѧ": { + text: "\\cyrchar\\CYRLYUS", + commandspacer: true + }, + "ѧ": { + text: "\\cyrchar\\cyrlyus", + commandspacer: true + }, + "Ѩ": { + text: "\\cyrchar\\CYRIOTLYUS", + commandspacer: true + }, + "ѩ": { + text: "\\cyrchar\\cyriotlyus", + commandspacer: true + }, + "Ѫ": { + text: "\\cyrchar\\CYRBYUS", + commandspacer: true + }, + "Ѭ": { + text: "\\cyrchar\\CYRIOTBYUS", + commandspacer: true + }, + "ѭ": { + text: "\\cyrchar\\cyriotbyus", + commandspacer: true + }, + "Ѯ": { + text: "\\cyrchar\\CYRKSI", + commandspacer: true + }, + "ѯ": { + text: "\\cyrchar\\cyrksi", + commandspacer: true + }, + "Ѱ": { + text: "\\cyrchar\\CYRPSI", + commandspacer: true + }, + "ѱ": { + text: "\\cyrchar\\cyrpsi", + commandspacer: true + }, + "Ѳ": { + text: "\\cyrchar\\CYRFITA", + commandspacer: true + }, + "Ѵ": { + text: "\\cyrchar\\CYRIZH", + commandspacer: true + }, + "Ѹ": { + text: "\\cyrchar\\CYRUK", + commandspacer: true + }, + "ѹ": { + text: "\\cyrchar\\cyruk", + commandspacer: true + }, + "Ѻ": { + text: "\\cyrchar\\CYROMEGARND", + commandspacer: true + }, + "ѻ": { + text: "\\cyrchar\\cyromegarnd", + commandspacer: true + }, + "Ѽ": { + text: "\\cyrchar\\CYROMEGATITLO", + commandspacer: true + }, + "ѽ": { + text: "\\cyrchar\\cyromegatitlo", + commandspacer: true + }, + "Ѿ": { + text: "\\cyrchar\\CYROT", + commandspacer: true + }, + "ѿ": { + text: "\\cyrchar\\cyrot", + commandspacer: true + }, + "Ҁ": { + text: "\\cyrchar\\CYRKOPPA", + commandspacer: true + }, + "ҁ": { + text: "\\cyrchar\\cyrkoppa", + commandspacer: true + }, + "҂": { + text: "\\cyrchar\\cyrthousands", + commandspacer: true + }, + "҈": { + text: "\\cyrchar\\cyrhundredthousands", + commandspacer: true + }, + "҉": { + text: "\\cyrchar\\cyrmillions", + commandspacer: true + }, + "Ҍ": { + text: "\\cyrchar\\CYRSEMISFTSN", + commandspacer: true + }, + "ҍ": { + text: "\\cyrchar\\cyrsemisftsn", + commandspacer: true + }, + "Ҏ": { + text: "\\cyrchar\\CYRRTICK", + commandspacer: true + }, + "ҏ": { + text: "\\cyrchar\\cyrrtick", + commandspacer: true + }, + "Ґ": { + text: "\\cyrchar\\CYRGUP", + commandspacer: true + }, + "ґ": { + text: "\\cyrchar\\cyrgup", + commandspacer: true + }, + "Ғ": { + text: "\\cyrchar\\CYRGHCRS", + commandspacer: true + }, + "ғ": { + text: "\\cyrchar\\cyrghcrs", + commandspacer: true + }, + "Ҕ": { + text: "\\cyrchar\\CYRGHK", + commandspacer: true + }, + "ҕ": { + text: "\\cyrchar\\cyrghk", + commandspacer: true + }, + "Җ": { + text: "\\cyrchar\\CYRZHDSC", + commandspacer: true + }, + "җ": { + text: "\\cyrchar\\cyrzhdsc", + commandspacer: true + }, + "Ҙ": { + text: "\\cyrchar\\CYRZDSC", + commandspacer: true + }, + "ҙ": { + text: "\\cyrchar\\cyrzdsc", + commandspacer: true + }, + "Қ": { + text: "\\cyrchar\\CYRKDSC", + commandspacer: true + }, + "қ": { + text: "\\cyrchar\\cyrkdsc", + commandspacer: true + }, + "Ҝ": { + text: "\\cyrchar\\CYRKVCRS", + commandspacer: true + }, + "ҝ": { + text: "\\cyrchar\\cyrkvcrs", + commandspacer: true + }, + "Ҟ": { + text: "\\cyrchar\\CYRKHCRS", + commandspacer: true + }, + "ҟ": { + text: "\\cyrchar\\cyrkhcrs", + commandspacer: true + }, + "Ҡ": { + text: "\\cyrchar\\CYRKBEAK", + commandspacer: true + }, + "ҡ": { + text: "\\cyrchar\\cyrkbeak", + commandspacer: true + }, + "Ң": { + text: "\\cyrchar\\CYRNDSC", + commandspacer: true + }, + "ң": { + text: "\\cyrchar\\cyrndsc", + commandspacer: true + }, + "Ҥ": { + text: "\\cyrchar\\CYRNG", + commandspacer: true + }, + "ҥ": { + text: "\\cyrchar\\cyrng", + commandspacer: true + }, + "Ҧ": { + text: "\\cyrchar\\CYRPHK", + commandspacer: true + }, + "ҧ": { + text: "\\cyrchar\\cyrphk", + commandspacer: true + }, + "Ҩ": { + text: "\\cyrchar\\CYRABHHA", + commandspacer: true + }, + "ҩ": { + text: "\\cyrchar\\cyrabhha", + commandspacer: true + }, + "Ҫ": { + text: "\\cyrchar\\CYRSDSC", + commandspacer: true + }, + "ҫ": { + text: "\\cyrchar\\cyrsdsc", + commandspacer: true + }, + "Ҭ": { + text: "\\cyrchar\\CYRTDSC", + commandspacer: true + }, + "ҭ": { + text: "\\cyrchar\\cyrtdsc", + commandspacer: true + }, + "Ү": { + text: "\\cyrchar\\CYRY", + commandspacer: true + }, + "ү": { + text: "\\cyrchar\\cyry", + commandspacer: true + }, + "Ұ": { + text: "\\cyrchar\\CYRYHCRS", + commandspacer: true + }, + "ұ": { + text: "\\cyrchar\\cyryhcrs", + commandspacer: true + }, + "Ҳ": { + text: "\\cyrchar\\CYRHDSC", + commandspacer: true + }, + "ҳ": { + text: "\\cyrchar\\cyrhdsc", + commandspacer: true + }, + "Ҵ": { + text: "\\cyrchar\\CYRTETSE", + commandspacer: true + }, + "ҵ": { + text: "\\cyrchar\\cyrtetse", + commandspacer: true + }, + "Ҷ": { + text: "\\cyrchar\\CYRCHRDSC", + commandspacer: true + }, + "ҷ": { + text: "\\cyrchar\\cyrchrdsc", + commandspacer: true + }, + "Ҹ": { + text: "\\cyrchar\\CYRCHVCRS", + commandspacer: true + }, + "ҹ": { + text: "\\cyrchar\\cyrchvcrs", + commandspacer: true + }, + "Һ": { + text: "\\cyrchar\\CYRSHHA", + commandspacer: true + }, + "һ": { + text: "\\cyrchar\\cyrshha", + commandspacer: true + }, + "Ҽ": { + text: "\\cyrchar\\CYRABHCH", + commandspacer: true + }, + "ҽ": { + text: "\\cyrchar\\cyrabhch", + commandspacer: true + }, + "Ҿ": { + text: "\\cyrchar\\CYRABHCHDSC", + commandspacer: true + }, + "ҿ": { + text: "\\cyrchar\\cyrabhchdsc", + commandspacer: true + }, + "Ӏ": { + text: "\\cyrchar\\CYRpalochka", + commandspacer: true + }, + "Ӄ": { + text: "\\cyrchar\\CYRKHK", + commandspacer: true + }, + "ӄ": { + text: "\\cyrchar\\cyrkhk", + commandspacer: true + }, + "Ӈ": { + text: "\\cyrchar\\CYRNHK", + commandspacer: true + }, + "ӈ": { + text: "\\cyrchar\\cyrnhk", + commandspacer: true + }, + "Ӌ": { + text: "\\cyrchar\\CYRCHLDSC", + commandspacer: true + }, + "ӌ": { + text: "\\cyrchar\\cyrchldsc", + commandspacer: true + }, + "Ӕ": { + text: "\\cyrchar\\CYRAE", + commandspacer: true + }, + "ӕ": { + text: "\\cyrchar\\cyrae", + commandspacer: true + }, + "Ә": { + text: "\\cyrchar\\CYRSCHWA", + commandspacer: true + }, + "ә": { + text: "\\cyrchar\\cyrschwa", + commandspacer: true + }, + "Ӡ": { + text: "\\cyrchar\\CYRABHDZE", + commandspacer: true + }, + "ӡ": { + text: "\\cyrchar\\cyrabhdze", + commandspacer: true + }, + "Ө": { + text: "\\cyrchar\\CYROTLD", + commandspacer: true + }, + "ө": { + text: "\\cyrchar\\cyrotld", + commandspacer: true + }, + "ࡱ": { + math: "\\\\backslash" + }, + "ᵃ": { + math: "^{a}", + text: "\\textsuperscript{a}" + }, + "ᵇ": { + math: "^{b}", + text: "\\textsuperscript{b}" + }, + "ᵈ": { + math: "^{d}", + text: "\\textsuperscript{d}" + }, + "ᵉ": { + math: "^{e}", + text: "\\textsuperscript{e}" + }, + "ᵍ": { + math: "^{g}", + text: "\\textsuperscript{g}" + }, + "ᵏ": { + math: "^{k}", + text: "\\textsuperscript{k}" + }, + "ᵐ": { + math: "^{m}", + text: "\\textsuperscript{m}" + }, + "ᵒ": { + math: "^{o}", + text: "\\textsuperscript{o}" + }, + "ᵖ": { + math: "^{p}", + text: "\\textsuperscript{p}" + }, + "ᵗ": { + math: "^{t}", + text: "\\textsuperscript{t}" + }, + "ᵘ": { + math: "^{u}", + text: "\\textsuperscript{u}" + }, + "ᵛ": { + math: "^{v}", + text: "\\textsuperscript{v}" + }, + "ᶜ": { + math: "^{c}", + text: "\\textsuperscript{c}" + }, + "ᶠ": { + math: "^{f}", + text: "\\textsuperscript{f}" + }, + "ᶻ": { + math: "^{z}", + text: "\\textsuperscript{z}" + }, + "Ḃ": { + text: "\\.B" + }, + "ḃ": { + text: "\\.b" + }, + "Ḅ": { + text: "\\d{B}" + }, + "ḅ": { + text: "\\d{b}" + }, + "Ḇ": { + text: "\\b{B}" + }, + "ḇ": { + text: "\\b{b}" + }, + "Ḋ": { + text: "\\.D" + }, + "ḋ": { + text: "\\.d" + }, + "Ḍ": { + text: "\\d{D}" + }, + "ḍ": { + text: "\\d{d}" + }, + "Ḏ": { + text: "\\b{D}" + }, + "ḏ": { + text: "\\b{d}" + }, + "Ḑ": { + text: "\\c{D}" + }, + "ḑ": { + text: "\\c{d}" + }, + "Ḝ": { + text: "\\c{\\u{E}}" + }, + "ḝ": { + text: "\\c{\\u{e}}" + }, + "Ḟ": { + text: "\\.F" + }, + "ḟ": { + text: "\\.f" + }, + "Ḡ": { + text: "\\=G" + }, + "ḡ": { + text: "\\=g" + }, + "Ḣ": { + text: "\\.H" + }, + "ḣ": { + text: "\\.h" + }, + "Ḥ": { + text: "\\d{H}" + }, + "ḥ": { + text: "\\d{h}" + }, + "Ḧ": { + text: "\\\"H" + }, + "ḧ": { + text: "\\\"h" + }, + "Ḩ": { + text: "\\c{H}" + }, + "ḩ": { + text: "\\c{h}" + }, + "Ḱ": { + text: "\\'K" + }, + "ḱ": { + text: "\\'k" + }, + "Ḳ": { + text: "\\d{K}" + }, + "ḳ": { + text: "\\d{k}" + }, + "Ḵ": { + text: "\\b{K}" + }, + "ḵ": { + text: "\\b{k}" + }, + "Ḷ": { + text: "\\d{L}" + }, + "ḷ": { + text: "\\d{l}" + }, + "Ḻ": { + text: "\\b{L}" + }, + "ḻ": { + text: "\\b{l}" + }, + "Ḿ": { + text: "\\'M" + }, + "ḿ": { + text: "\\'m" + }, + "Ṁ": { + text: "\\.M" + }, + "ṁ": { + text: "\\.m" + }, + "Ṃ": { + text: "\\d{M}" + }, + "ṃ": { + text: "\\d{m}" + }, + "Ṅ": { + text: "\\.N" + }, + "ṅ": { + text: "\\.n" + }, + "Ṇ": { + text: "\\d{N}" + }, + "ṇ": { + text: "\\d{n}" + }, + "Ṉ": { + text: "\\b{N}" + }, + "ṉ": { + text: "\\b{n}" + }, + "Ṕ": { + text: "\\'P" + }, + "ṕ": { + text: "\\'p" + }, + "Ṗ": { + text: "\\.P" + }, + "ṗ": { + text: "\\.p" + }, + "Ṙ": { + text: "\\.R" + }, + "ṙ": { + text: "\\.r" + }, + "Ṛ": { + text: "\\d{R}" + }, + "ṛ": { + text: "\\d{r}" + }, + "Ṟ": { + text: "\\b{R}" + }, + "ṟ": { + text: "\\b{r}" + }, + "Ṡ": { + text: "\\.S" + }, + "ṡ": { + text: "\\.s" + }, + "Ṣ": { + text: "\\d{S}" + }, + "ṣ": { + text: "\\d{s}" + }, + "Ṫ": { + text: "\\.T" + }, + "ṫ": { + text: "\\.t" + }, + "Ṭ": { + text: "\\d{T}" + }, + "ṭ": { + text: "\\d{t}" + }, + "Ṯ": { + text: "\\b{T}" + }, + "ṯ": { + text: "\\b{t}" + }, + "Ṽ": { + text: "\\~V" + }, + "ṽ": { + text: "\\~v" + }, + "Ṿ": { + text: "\\d{V}" + }, + "ṿ": { + text: "\\d{v}" + }, + "Ẁ": { + text: "\\`W" + }, + "ẁ": { + text: "\\`w" + }, + "Ẃ": { + text: "\\'W" + }, + "ẃ": { + text: "\\'w" + }, + "Ẅ": { + text: "\\\"W" + }, + "ẅ": { + text: "\\\"w" + }, + "Ẇ": { + text: "\\.W" + }, + "ẇ": { + text: "\\.w" + }, + "Ẉ": { + text: "\\d{W}" + }, + "ẉ": { + text: "\\d{w}" + }, + "Ẋ": { + text: "\\.X" + }, + "ẋ": { + text: "\\.x" + }, + "Ẍ": { + text: "\\\"X" + }, + "ẍ": { + text: "\\\"x" + }, + "Ẏ": { + text: "\\.Y" + }, + "ẏ": { + text: "\\.y" + }, + "Ẑ": { + text: "\\^Z" + }, + "ẑ": { + text: "\\^z" + }, + "Ẓ": { + text: "\\d{Z}" + }, + "ẓ": { + text: "\\d{z}" + }, + "Ẕ": { + text: "\\b{Z}" + }, + "ẕ": { + text: "\\b{z}" + }, + "ẖ": { + text: "\\b{h}" + }, + "ẗ": { + text: "\\\"t" + }, + "ẘ": { + text: "\\r{w}" + }, + "ẙ": { + text: "\\r{y}" + }, + "Ạ": { + text: "\\d{A}" + }, + "ạ": { + text: "\\d{a}" + }, + "Ẹ": { + text: "\\d{E}" + }, + "ẹ": { + text: "\\d{e}" + }, + "Ẽ": { + text: "\\~E" + }, + "ẽ": { + text: "\\~e" + }, + "Ị": { + text: "\\d{I}" + }, + "ị": { + text: "\\d{i}" + }, + "Ọ": { + text: "\\d{O}" + }, + "ọ": { + text: "\\d{o}" + }, + "Ụ": { + text: "\\d{U}" + }, + "ụ": { + text: "\\d{u}" + }, + "Ỳ": { + text: "\\`Y" + }, + "ỳ": { + text: "\\`y" + }, + "Ỵ": { + text: "\\d{Y}" + }, + "ỵ": { + text: "\\d{y}" + }, + "Ỹ": { + text: "\\~Y" + }, + "ỹ": { + text: "\\~y" + }, + " ": { + text: " ", + space: true + }, + " ": { + math: "\\quad", + space: true + }, + " ": { + text: "\\hspace{0.6em}", + space: true + }, + " ": { + math: "\\quad", + space: true, + text: "\\hspace{1em}" + }, + " ": { + text: "\\;", + space: true + }, + " ": { + text: "\\hspace{0.25em}", + space: true + }, + " ": { + text: "\\hspace{0.166em}", + space: true + }, + " ": { + text: "\\hphantom{0}", + space: true + }, + " ": { + text: "\\hphantom{,}", + space: true + }, + " ": { + text: "\\,", + space: true + }, + " ": { + math: "\\mkern1mu", + space: true + }, + "​": { + text: "\\mbox", + commandspacer: true, + space: true + }, + "‌": { + text: "{\\aftergroup\\ignorespaces}" + }, + "‐": { + text: "-" + }, + "‑": { + text: "-" + }, + "‒": { + text: "-" + }, + "–": { + text: "\\textendash", + commandspacer: true + }, + "—": { + text: "\\textemdash", + commandspacer: true + }, + "―": { + math: "\\horizbar", + text: "\\rule{1em}{1pt}" + }, + "‖": { + math: "\\Vert" + }, + "‗": { + math: "\\twolowline" + }, + "‘": { + text: "`" + }, + "’": { + text: "'" + }, + "‚": { + text: "," + }, + "‛": { + math: "\\Elzreapos" + }, + "“": { + text: "``" + }, + "”": { + text: "''" + }, + "„": { + text: ",," + }, + "‟": { + text: "\\quotedblbase", + commandspacer: true + }, + "†": { + math: "\\dagger", + text: "\\textdagger", + commandspacer: true, + textpackages: [ + "textcomp" + ] + }, + "‡": { + math: "\\ddagger", + text: "\\textdaggerdbl", + commandspacer: true, + textpackages: [ + "textcomp" + ] + }, + "•": { + math: "\\bullet", + text: "\\textbullet", + commandspacer: true, + textpackages: [ + "textcomp" + ] + }, + "‣": { + text: ">" + }, + "․": { + text: "." + }, + "‥": { + math: "\\enleadertwodots", + text: ".." + }, + "…": { + math: "\\ldots", + text: "\\ldots", + commandspacer: true + }, + "‧": { + text: "-" + }, + " ": { + text: " ", + space: true + }, + "‰": { + text: "\\textperthousand", + commandspacer: true, + textpackages: [ + "textcomp" + ] + }, + "‱": { + text: "\\textpertenthousand", + commandspacer: true, + textpackages: [ + "textcomp" + ] + }, + "′": { + math: "{'}" + }, + "″": { + math: "{''}" + }, + "‴": { + math: "{'''}" + }, + "‵": { + math: "\\backprime" + }, + "‶": { + math: "\\backdprime" + }, + "‷": { + math: "\\backtrprime" + }, + "‸": { + math: "\\caretinsert" + }, + "‹": { + text: "\\guilsinglleft", + commandspacer: true + }, + "›": { + text: "\\guilsinglright", + commandspacer: true + }, + "‼": { + math: "\\Exclam" + }, + "‾": { + text: "-" + }, + "⁃": { + math: "\\hyphenbullet" + }, + "⁄": { + math: "\\fracslash" + }, + "⁇": { + math: "\\Question" + }, + "⁈": { + text: "?!" + }, + "⁉": { + text: "!?" + }, + "⁊": { + text: "7" + }, + "⁐": { + math: "\\closure" + }, + "⁗": { + math: "''''" + }, + " ": { + math: "\\:", + space: true, + text: "\\:" + }, + "⁠": { + text: "\\nolinebreak", + commandspacer: true + }, + "⁰": { + math: "^{0}" + }, + "ⁱ": { + math: "^{i}", + text: "\\textsuperscript{i}" + }, + "⁴": { + math: "^{4}" + }, + "⁵": { + math: "^{5}" + }, + "⁶": { + math: "^{6}" + }, + "⁷": { + math: "^{7}" + }, + "⁸": { + math: "^{8}" + }, + "⁹": { + math: "^{9}" + }, + "⁺": { + math: "^{+}" + }, + "⁻": { + math: "^{-}" + }, + "⁼": { + math: "^{=}" + }, + "⁽": { + math: "^{(}" + }, + "⁾": { + math: "^{)}" + }, + "ⁿ": { + math: "^{n}", + text: "\\textsuperscript{n}" + }, + "₀": { + math: "_{0}" + }, + "₁": { + math: "_{1}" + }, + "₂": { + math: "_{2}" + }, + "₃": { + math: "_{3}" + }, + "₄": { + math: "_{4}" + }, + "₅": { + math: "_{5}" + }, + "₆": { + math: "_{6}" + }, + "₇": { + math: "_{7}" + }, + "₈": { + math: "_{8}" + }, + "₉": { + math: "_{9}" + }, + "₊": { + math: "_{+}" + }, + "₋": { + math: "_{-}" + }, + "₌": { + math: "_{=}" + }, + "₍": { + math: "_{(}" + }, + "₎": { + math: "_{)}" + }, + "ₐ": { + math: "_{a}", + text: "\\textsubscript{a}" + }, + "ₑ": { + math: "_{e}", + text: "\\textsubscript{e}" + }, + "ₒ": { + math: "_{o}", + text: "\\textsubscript{o}" + }, + "ₓ": { + math: "_{x}", + text: "\\textsubscript{x}" + }, + "ₔ": { + text: "\\textsubscript{\\textschwa}", + textpackages: [ + "tipa" + ] + }, + "ₕ": { + math: "_{h}", + text: "\\textsubscript{h}" + }, + "ₖ": { + math: "_{k}", + text: "\\textsubscript{k}" + }, + "ₗ": { + math: "_{l}", + text: "\\textsubscript{l}" + }, + "ₘ": { + math: "_{m}", + text: "\\textsubscript{m}" + }, + "ₙ": { + math: "_{n}", + text: "\\textsubscript{n}" + }, + "ₚ": { + math: "_{p}", + text: "\\textsubscript{p}" + }, + "ₛ": { + math: "_{s}", + text: "\\textsubscript{s}" + }, + "ₜ": { + math: "_{t}", + text: "\\textsubscript{t}" + }, + "₧": { + text: "\\ensuremath{\\Elzpes}" + }, + "€": { + math: "\\euro", + text: "\\texteuro", + commandspacer: true + }, + "⃐": { + math: "\\lvec" + }, + "⃑": { + math: "\\rightharpoonup", + mathpackages: [ + "amsmath", + "amssymb" + ] + }, + "⃒": { + math: "\\vertoverlay" + }, + "⃖": { + math: "\\LVec" + }, + "⃗": { + math: "\\vec" + }, + "⃛": { + math: "\\dddot" + }, + "⃜": { + math: "\\ddddot" + }, + "⃝": { + math: "\\enclosecircle" + }, + "⃞": { + math: "\\enclosesquare" + }, + "⃟": { + math: "\\enclosediamond" + }, + "⃡": { + math: "\\overleftrightarrow" + }, + "⃤": { + math: "\\enclosetriangle" + }, + "⃧": { + math: "\\annuity" + }, + "⃨": { + math: "\\threeunderdot" + }, + "⃩": { + math: "\\widebridgeabove" + }, + "⃬": { + math: "\\underrightharpoondown" + }, + "⃭": { + math: "\\underleftharpoondown" + }, + "⃮": { + math: "\\underleftarrow" + }, + "⃯": { + math: "\\underrightarrow" + }, + "⃰": { + math: "\\asteraccent" + }, + "℀": { + text: "a/c" + }, + "℁": { + text: "a/s" + }, + "ℂ": { + math: "\\mathbb{C}" + }, + "℃": { + text: "\\textcelsius", + commandspacer: true + }, + "℅": { + text: "c/o" + }, + "℆": { + text: "c/u" + }, + "ℇ": { + math: "\\Euler" + }, + "℉": { + text: "F" + }, + "ℊ": { + math: "\\mathscr{g}" + }, + "ℋ": { + math: "\\mathscr{H}" + }, + "ℌ": { + math: "\\mathfrak{H}" + }, + "ℍ": { + math: "\\mathbb{H}" + }, + "ℎ": { + math: "\\Planckconst" + }, + "ℏ": { + math: "\\hslash" + }, + "ℐ": { + math: "\\mathscr{I}" + }, + "ℑ": { + math: "\\mathfrak{I}" + }, + "ℒ": { + math: "\\mathscr{L}" + }, + "ℓ": { + math: "\\mathscr{l}" + }, + "ℕ": { + math: "\\mathbb{N}" + }, + "№": { + text: "\\cyrchar\\textnumero", + commandspacer: true + }, + "℗": { + text: "\\textcircledP", + commandspacer: true + }, + "℘": { + math: "\\wp" + }, + "ℙ": { + math: "\\mathbb{P}" + }, + "ℚ": { + math: "\\mathbb{Q}" + }, + "ℛ": { + math: "\\mathscr{R}" + }, + "ℜ": { + math: "\\mathfrak{R}" + }, + "ℝ": { + math: "\\mathbb{R}" + }, + "℞": { + math: "\\Elzxrat" + }, + "℠": { + text: "\\textservicemark", + commandspacer: true + }, + "℡": { + text: "TEL" + }, + "™": { + text: "\\texttrademark", + commandspacer: true, + textpackages: [ + "textcomp" + ] + }, + "ℤ": { + math: "\\mathbb{Z}" + }, + "Ω": { + math: "\\Omega" + }, + "℧": { + math: "\\mho" + }, + "ℨ": { + math: "\\mathfrak{Z}" + }, + "℩": { + text: "\\textriota", + commandspacer: true + }, + "K": { + text: "K" + }, + "Å": { + math: "\\Angstroem", + text: "\\AA", + commandspacer: true + }, + "ℬ": { + math: "\\mathscr{B}" + }, + "ℭ": { + math: "\\mathfrak{C}" + }, + "℮": { + text: "\\textestimated", + commandspacer: true + }, + "ℯ": { + math: "\\mathscr{e}" + }, + "ℰ": { + math: "\\mathscr{E}" + }, + "ℱ": { + math: "\\mathscr{F}" + }, + "Ⅎ": { + math: "\\Finv" + }, + "ℳ": { + math: "\\mathscr{M}" + }, + "ℴ": { + math: "\\mathscr{o}" + }, + "ℵ": { + math: "\\aleph" + }, + "ℶ": { + math: "\\beth" + }, + "ℷ": { + math: "\\gimel" + }, + "ℸ": { + math: "\\daleth" + }, + "ℼ": { + math: "\\mathbb{\\pi}" + }, + "ℽ": { + math: "\\mathbb{\\gamma}" + }, + "ℾ": { + math: "\\mathbb{\\Gamma}" + }, + "ℿ": { + math: "\\mathbb{\\Pi}" + }, + "⅀": { + math: "\\mathbb{\\Sigma}" + }, + "⅁": { + math: "\\Game" + }, + "⅂": { + math: "\\sansLturned" + }, + "⅃": { + math: "\\sansLmirrored" + }, + "⅄": { + math: "\\Yup" + }, + "ⅅ": { + math: "\\CapitalDifferentialD" + }, + "ⅆ": { + math: "\\DifferentialD" + }, + "ⅇ": { + math: "\\ExponetialE" + }, + "ⅈ": { + math: "\\ComplexI" + }, + "ⅉ": { + math: "\\ComplexJ" + }, + "⅊": { + math: "\\PropertyLine" + }, + "⅋": { + math: "\\invamp" + }, + "⅐": { + math: "\\frac{1}{7}" + }, + "⅑": { + math: "\\frac{1}{9}" + }, + "⅒": { + math: "\\frac{1}{10}" + }, + "⅓": { + math: "\\frac{1}{3}" + }, + "⅔": { + math: "\\frac{2}{3}" + }, + "⅕": { + math: "\\frac{1}{5}" + }, + "⅖": { + math: "\\frac{2}{5}" + }, + "⅗": { + math: "\\frac{3}{5}" + }, + "⅘": { + math: "\\frac{4}{5}" + }, + "⅙": { + math: "\\frac{1}{6}" + }, + "⅚": { + math: "\\frac{5}{6}" + }, + "⅛": { + math: "\\frac{1}{8}" + }, + "⅜": { + math: "\\frac{3}{8}" + }, + "⅝": { + math: "\\frac{5}{8}" + }, + "⅞": { + math: "\\frac{7}{8}" + }, + "⅟": { + math: "\\frac{1}" + }, + "Ⅰ": { + text: "I" + }, + "Ⅱ": { + text: "II" + }, + "Ⅲ": { + text: "III" + }, + "Ⅳ": { + text: "IV" + }, + "Ⅴ": { + text: "V" + }, + "Ⅵ": { + text: "VI" + }, + "Ⅶ": { + text: "VII" + }, + "Ⅷ": { + text: "VIII" + }, + "Ⅸ": { + text: "IX" + }, + "Ⅹ": { + text: "X" + }, + "Ⅺ": { + text: "XI" + }, + "Ⅻ": { + text: "XII" + }, + "Ⅼ": { + text: "L" + }, + "Ⅽ": { + text: "C" + }, + "Ⅾ": { + text: "D" + }, + "Ⅿ": { + text: "M" + }, + "ⅰ": { + text: "i" + }, + "ⅱ": { + text: "ii" + }, + "ⅲ": { + text: "iii" + }, + "ⅳ": { + text: "iv" + }, + "ⅴ": { + text: "v" + }, + "ⅵ": { + text: "vi" + }, + "ⅶ": { + text: "vii" + }, + "ⅷ": { + text: "viii" + }, + "ⅸ": { + text: "ix" + }, + "ⅹ": { + text: "x" + }, + "ⅺ": { + text: "xi" + }, + "ⅻ": { + text: "xii" + }, + "ⅼ": { + text: "l" + }, + "ⅽ": { + text: "c" + }, + "ⅾ": { + text: "d" + }, + "ⅿ": { + text: "m" + }, + "↉": { + math: "\\frac{0}{3}" + }, + "←": { + math: "\\leftarrow" + }, + "↑": { + math: "\\uparrow" + }, + "→": { + math: "\\rightarrow", + text: "\\textrightarrow", + commandspacer: true, + textpackages: [ + "textcomp" + ] + }, + "↓": { + math: "\\downarrow" + }, + "↔": { + math: "\\leftrightarrow" + }, + "↕": { + math: "\\updownarrow" + }, + "↖": { + math: "\\nwarrow" + }, + "↗": { + math: "\\nearrow" + }, + "↘": { + math: "\\searrow" + }, + "↙": { + math: "\\swarrow" + }, + "↚": { + math: "\\nleftarrow" + }, + "↛": { + math: "\\nrightarrow" + }, + "↜": { + math: "\\arrowwaveleft" + }, + "↝": { + math: "\\arrowwaveright" + }, + "↞": { + math: "\\twoheadleftarrow" + }, + "↟": { + math: "\\twoheaduparrow" + }, + "↠": { + math: "\\twoheadrightarrow" + }, + "↡": { + math: "\\twoheaddownarrow" + }, + "↢": { + math: "\\leftarrowtail" + }, + "↣": { + math: "\\rightarrowtail" + }, + "↤": { + math: "\\mapsfrom" + }, + "↥": { + math: "\\MapsUp" + }, + "↦": { + math: "\\mapsto" + }, + "↧": { + math: "\\MapsDown" + }, + "↨": { + math: "\\updownarrowbar" + }, + "↩": { + math: "\\hookleftarrow" + }, + "↪": { + math: "\\hookrightarrow" + }, + "↫": { + math: "\\looparrowleft" + }, + "↬": { + math: "\\looparrowright" + }, + "↭": { + math: "\\leftrightsquigarrow" + }, + "↮": { + math: "\\nleftrightarrow" + }, + "↯": { + math: "\\lightning" + }, + "↰": { + math: "\\Lsh" + }, + "↱": { + math: "\\Rsh" + }, + "↲": { + math: "\\dlsh" + }, + "↳": { + text: "\\reflectbox{\\carriagereturn}", + textpackages: [ + "graphics", + "unicode-math" + ] + }, + "↴": { + math: "\\linefeed" + }, + "↵": { + math: "\\carriagereturn" + }, + "↶": { + math: "\\curvearrowleft" + }, + "↷": { + math: "\\curvearrowright" + }, + "↸": { + math: "\\barovernorthwestarrow" + }, + "↹": { + math: "\\barleftarrowrightarrowba" + }, + "↺": { + math: "\\circlearrowleft" + }, + "↻": { + math: "\\circlearrowright" + }, + "↼": { + math: "\\leftharpoonup" + }, + "↽": { + math: "\\leftharpoondown" + }, + "↾": { + math: "\\upharpoonright" + }, + "↿": { + math: "\\upharpoonleft" + }, + "⇀": { + math: "\\rightharpoonup", + mathpackages: [ + "amsmath", + "amssymb" + ] + }, + "⇁": { + math: "\\rightharpoondown" + }, + "⇂": { + math: "\\downharpoonright" + }, + "⇃": { + math: "\\downharpoonleft" + }, + "⇄": { + math: "\\rightleftarrows" + }, + "⇅": { + math: "\\dblarrowupdown" + }, + "⇆": { + math: "\\leftrightarrows" + }, + "⇇": { + math: "\\leftleftarrows" + }, + "⇈": { + math: "\\upuparrows" + }, + "⇉": { + math: "\\rightrightarrows" + }, + "⇊": { + math: "\\downdownarrows" + }, + "⇋": { + math: "\\leftrightharpoons" + }, + "⇌": { + math: "\\rightleftharpoons" + }, + "⇍": { + math: "\\nLeftarrow" + }, + "⇎": { + math: "\\nLeftrightarrow" + }, + "⇏": { + math: "\\nRightarrow" + }, + "⇐": { + math: "\\Leftarrow" + }, + "⇑": { + math: "\\Uparrow" + }, + "⇒": { + math: "\\Rightarrow" + }, + "⇓": { + math: "\\Downarrow" + }, + "⇔": { + math: "\\Leftrightarrow" + }, + "⇕": { + math: "\\Updownarrow" + }, + "⇖": { + math: "\\Nwarrow" + }, + "⇗": { + math: "\\Nearrow" + }, + "⇘": { + math: "\\Searrow" + }, + "⇙": { + math: "\\Swarrow" + }, + "⇚": { + math: "\\Lleftarrow" + }, + "⇛": { + math: "\\Rrightarrow" + }, + "⇜": { + math: "\\leftsquigarrow" + }, + "⇝": { + math: "\\rightsquigarrow" + }, + "⇞": { + math: "\\nHuparrow" + }, + "⇟": { + math: "\\nHdownarrow" + }, + "⇠": { + math: "\\dashleftarrow" + }, + "⇡": { + math: "\\updasharrow" + }, + "⇢": { + math: "\\dashrightarrow" + }, + "⇣": { + math: "\\downdasharrow" + }, + "⇤": { + math: "\\LeftArrowBar" + }, + "⇥": { + math: "\\RightArrowBar" + }, + "⇦": { + math: "\\leftwhitearrow" + }, + "⇧": { + math: "\\upwhitearrow" + }, + "⇨": { + math: "\\rightwhitearrow" + }, + "⇩": { + math: "\\downwhitearrow" + }, + "⇪": { + math: "\\whitearrowupfrombar" + }, + "⇴": { + math: "\\circleonrightarrow" + }, + "⇵": { + math: "\\DownArrowUpArrow" + }, + "⇶": { + math: "\\rightthreearrows" + }, + "⇷": { + math: "\\nvleftarrow" + }, + "⇸": { + math: "\\pfun" + }, + "⇹": { + math: "\\nvleftrightarrow" + }, + "⇺": { + math: "\\nVleftarrow" + }, + "⇻": { + math: "\\ffun" + }, + "⇼": { + math: "\\nVleftrightarrow" + }, + "⇽": { + math: "\\leftarrowtriangle" + }, + "⇾": { + math: "\\rightarrowtriangle" + }, + "⇿": { + math: "\\leftrightarrowtriangle" + }, + "∀": { + math: "\\forall" + }, + "∁": { + math: "\\complement" + }, + "∂": { + math: "\\partial" + }, + "∃": { + math: "\\exists" + }, + "∄": { + math: "\\nexists" + }, + "∅": { + math: "\\varnothing" + }, + "∆": { + math: "\\increment" + }, + "∇": { + math: "\\nabla" + }, + "∈": { + math: "\\in" + }, + "∉": { + math: "\\not\\in" + }, + "∊": { + math: "\\smallin" + }, + "∋": { + math: "\\ni" + }, + "∌": { + math: "\\not\\ni" + }, + "∍": { + math: "\\smallni" + }, + "∎": { + math: "\\QED" + }, + "∏": { + math: "\\prod" + }, + "∐": { + math: "\\coprod" + }, + "∑": { + math: "\\sum" + }, + "−": { + math: "-", + text: "-" + }, + "∓": { + math: "\\mp" + }, + "∔": { + math: "\\dotplus" + }, + "∕": { + text: "/" + }, + "∖": { + math: "\\setminus" + }, + "∗": { + math: "{_\\ast}" + }, + "∘": { + math: "\\circ" + }, + "∙": { + math: "\\bullet" + }, + "√": { + math: "\\surd" + }, + "∛": { + math: "\\sqrt[3]" + }, + "∜": { + math: "\\sqrt[4]" + }, + "∝": { + math: "\\propto" + }, + "∞": { + math: "\\infty" + }, + "∟": { + math: "\\rightangle" + }, + "∠": { + math: "\\angle" + }, + "∡": { + math: "\\measuredangle" + }, + "∢": { + math: "\\sphericalangle" + }, + "∣": { + math: "\\mid" + }, + "∤": { + math: "\\nmid" + }, + "∥": { + math: "\\parallel" + }, + "∦": { + math: "\\nparallel" + }, + "∧": { + math: "\\wedge" + }, + "∨": { + math: "\\vee" + }, + "∩": { + math: "\\cap" + }, + "∪": { + math: "\\cup" + }, + "∫": { + math: "\\int" + }, + "∬": { + math: "{\\int\\!\\int}" + }, + "∭": { + math: "{\\int\\!\\int\\!\\int}" + }, + "∮": { + math: "\\oint" + }, + "∯": { + math: "\\surfintegral" + }, + "∰": { + math: "\\volintegral" + }, + "∱": { + math: "\\clwintegral" + }, + "∲": { + math: "\\lcirclerightint", + mathpackages: [ + "MnSymbol" + ] + }, + "∳": { + math: "\\rcirclerightint", + mathpackages: [ + "MnSymbol" + ] + }, + "∴": { + math: "\\therefore" + }, + "∵": { + math: "\\because" + }, + "∶": { + math: ":" + }, + "∷": { + math: "\\Colon" + }, + "∸": { + math: "\\dotdiv", + mathpackages: [ + "mathabx" + ] + }, + "∹": { + math: "\\eqcolon" + }, + "∺": { + math: "\\mathbin{{:}\\!\\!{-}\\!\\!{:}}" + }, + "∻": { + math: "\\homothetic" + }, + "∼": { + math: "\\sim" + }, + "∽": { + math: "\\backsim" + }, + "∾": { + math: "\\lazysinv" + }, + "∿": { + math: "\\AC" + }, + "≀": { + math: "\\wr" + }, + "≁": { + math: "\\not\\sim" + }, + "≂": { + math: "\\texteqsim", + mathpackages: [ + "xecjk" + ] + }, + "≂̸": { + math: "\\NotEqualTilde" + }, + "≃": { + math: "\\simeq" + }, + "≄": { + math: "\\not\\simeq" + }, + "≅": { + math: "\\cong" + }, + "≆": { + math: "\\approxnotequal" + }, + "≇": { + math: "\\not\\cong" + }, + "≈": { + math: "\\approx" + }, + "≉": { + math: "\\not\\approx" + }, + "≊": { + math: "\\approxeq" + }, + "≋": { + math: "\\tildetrpl" + }, + "≋̸": { + math: "\\not\\apid" + }, + "≌": { + math: "\\allequal" + }, + "≍": { + math: "\\asymp" + }, + "≎": { + math: "\\Bumpeq" + }, + "≎̸": { + math: "\\NotHumpDownHump" + }, + "≏": { + math: "\\bumpeq" + }, + "≏̸": { + math: "\\NotHumpEqual" + }, + "≐": { + math: "\\doteq" + }, + "≐̸": { + math: "\\not\\doteq" + }, + "≑": { + math: "\\doteqdot" + }, + "≒": { + math: "\\fallingdotseq" + }, + "≓": { + math: "\\risingdotseq" + }, + "≔": { + math: "\\coloneq", + text: ":=" + }, + "≕": { + math: "=:" + }, + "≖": { + math: "\\eqcirc" + }, + "≗": { + math: "\\circeq" + }, + "≘": { + math: "\\arceq" + }, + "≙": { + math: "\\estimates" + }, + "≛": { + math: "\\starequal" + }, + "≜": { + math: "\\triangleq" + }, + "≝": { + math: "\\eqdef" + }, + "≞": { + math: "\\measeq" + }, + "≠": { + math: "\\neq" + }, + "≡": { + math: "\\equiv" + }, + "≢": { + math: "\\not\\equiv" + }, + "≣": { + math: "\\Equiv" + }, + "≤": { + math: "\\leq" + }, + "≥": { + math: "\\geq" + }, + "≦": { + math: "\\leqq" + }, + "≧": { + math: "\\geqq" + }, + "≨": { + math: "\\lneqq" + }, + "≨︀": { + math: "\\lvertneqq" + }, + "≩": { + math: "\\gneqq" + }, + "≩︀": { + math: "\\gvertneqq" + }, + "≪": { + math: "\\ll" + }, + "≪̸": { + math: "\\NotLessLess" + }, + "≫": { + math: "\\gg" + }, + "≫̸": { + math: "\\NotGreaterGreater" + }, + "≬": { + math: "\\between" + }, + "≭": { + math: "{\\not\\kern-0.3em\\times}" + }, + "≮": { + math: "\\not<" + }, + "≯": { + math: "\\not>" + }, + "≰": { + math: "\\not\\leq" + }, + "≱": { + math: "\\not\\geq" + }, + "≲": { + math: "\\lessequivlnt" + }, + "≳": { + math: "\\greaterequivlnt" + }, + "≶": { + math: "\\lessgtr" + }, + "≷": { + math: "\\gtrless" + }, + "≸": { + math: "\\notlessgreater" + }, + "≹": { + math: "\\notgreaterless" + }, + "≺": { + math: "\\prec" + }, + "≻": { + math: "\\succ" + }, + "≼": { + math: "\\preccurlyeq" + }, + "≽": { + math: "\\succcurlyeq" + }, + "≾": { + math: "\\precapprox" + }, + "≾̸": { + math: "\\NotPrecedesTilde" + }, + "≿": { + math: "\\succapprox" + }, + "≿̸": { + math: "\\NotSucceedsTilde" + }, + "⊀": { + math: "\\not\\prec" + }, + "⊁": { + math: "\\not\\succ" + }, + "⊂": { + math: "\\subset" + }, + "⊃": { + math: "\\supset" + }, + "⊄": { + math: "\\not\\subset" + }, + "⊅": { + math: "\\not\\supset" + }, + "⊆": { + math: "\\subseteq" + }, + "⊇": { + math: "\\supseteq" + }, + "⊈": { + math: "\\not\\subseteq" + }, + "⊉": { + math: "\\not\\supseteq" + }, + "⊊": { + math: "\\subsetneq" + }, + "⊊︀": { + math: "\\varsubsetneqq" + }, + "⊋": { + math: "\\supsetneq" + }, + "⊋︀": { + math: "\\varsupsetneq" + }, + "⊌": { + math: "\\cupleftarrow" + }, + "⊍": { + math: "\\cupdot" + }, + "⊎": { + math: "\\uplus" + }, + "⊏": { + math: "\\sqsubset" + }, + "⊏̸": { + math: "\\NotSquareSubset" + }, + "⊐": { + math: "\\sqsupset" + }, + "⊐̸": { + math: "\\NotSquareSuperset" + }, + "⊑": { + math: "\\sqsubseteq" + }, + "⊒": { + math: "\\sqsupseteq" + }, + "⊓": { + math: "\\sqcap" + }, + "⊔": { + math: "\\sqcup" + }, + "⊕": { + math: "\\oplus" + }, + "⊖": { + math: "\\ominus" + }, + "⊗": { + math: "\\otimes" + }, + "⊘": { + math: "\\oslash" + }, + "⊙": { + math: "\\odot" + }, + "⊚": { + math: "\\circledcirc" + }, + "⊛": { + math: "\\circledast" + }, + "⊜": { + math: "\\circledequal" + }, + "⊝": { + math: "\\circleddash" + }, + "⊞": { + math: "\\boxplus" + }, + "⊟": { + math: "\\boxminus" + }, + "⊠": { + math: "\\boxtimes" + }, + "⊡": { + math: "\\boxdot" + }, + "⊢": { + math: "\\vdash" + }, + "⊣": { + math: "\\dashv" + }, + "⊤": { + math: "\\top" + }, + "⊥": { + math: "\\perp" + }, + "⊦": { + math: "\\assert" + }, + "⊧": { + math: "\\truestate" + }, + "⊨": { + math: "\\forcesextra" + }, + "⊩": { + math: "\\Vdash" + }, + "⊪": { + math: "\\Vvdash" + }, + "⊫": { + math: "\\VDash" + }, + "⊬": { + math: "\\nvdash" + }, + "⊭": { + math: "\\nvDash" + }, + "⊮": { + math: "\\nVdash" + }, + "⊯": { + math: "\\nVDash" + }, + "⊰": { + math: "\\prurel" + }, + "⊱": { + math: "\\scurel" + }, + "⊲": { + math: "\\vartriangleleft" + }, + "⊳": { + math: "\\vartriangleright" + }, + "⊴": { + math: "\\trianglelefteq" + }, + "⊵": { + math: "\\trianglerighteq" + }, + "⊶": { + math: "\\original" + }, + "⊷": { + math: "\\image" + }, + "⊸": { + math: "\\multimap" + }, + "⊹": { + math: "\\hermitconjmatrix" + }, + "⊺": { + math: "\\intercal" + }, + "⊻": { + math: "\\veebar" + }, + "⊼": { + math: "\\barwedge" + }, + "⊽": { + math: "\\barvee" + }, + "⊾": { + math: "\\rightanglearc" + }, + "⊿": { + math: "\\varlrtriangle" + }, + "⋂": { + math: "\\bigcap" + }, + "⋃": { + math: "\\bigcup" + }, + "⋄": { + math: "\\diamond" + }, + "⋅": { + math: "\\cdot" + }, + "⋆": { + math: "\\star" + }, + "⋇": { + math: "\\divideontimes" + }, + "⋈": { + math: "\\bowtie" + }, + "⋉": { + math: "\\ltimes" + }, + "⋊": { + math: "\\rtimes" + }, + "⋋": { + math: "\\leftthreetimes" + }, + "⋌": { + math: "\\rightthreetimes" + }, + "⋍": { + math: "\\backsimeq" + }, + "⋎": { + math: "\\curlyvee" + }, + "⋏": { + math: "\\curlywedge" + }, + "⋐": { + math: "\\Subset" + }, + "⋑": { + math: "\\Supset" + }, + "⋒": { + math: "\\Cap" + }, + "⋓": { + math: "\\Cup" + }, + "⋔": { + math: "\\pitchfork" + }, + "⋕": { + math: "\\hash" + }, + "⋖": { + math: "\\lessdot" + }, + "⋗": { + math: "\\gtrdot" + }, + "⋘": { + math: "\\verymuchless" + }, + "⋙": { + math: "\\verymuchgreater" + }, + "⋚": { + math: "\\lesseqgtr" + }, + "⋛": { + math: "\\gtreqless" + }, + "⋜": { + math: "\\eqless" + }, + "⋝": { + math: "\\eqgtr" + }, + "⋞": { + math: "\\curlyeqprec" + }, + "⋟": { + math: "\\curlyeqsucc" + }, + "⋠": { + math: "\\npreceq" + }, + "⋡": { + math: "\\nsucceq" + }, + "⋢": { + math: "\\not\\sqsubseteq" + }, + "⋣": { + math: "\\not\\sqsupseteq" + }, + "⋤": { + math: "\\sqsubsetneq" + }, + "⋥": { + math: "\\Elzsqspne" + }, + "⋦": { + math: "\\lnsim" + }, + "⋧": { + math: "\\gnsim" + }, + "⋨": { + math: "\\precedesnotsimilar" + }, + "⋩": { + math: "\\succnsim" + }, + "⋪": { + math: "\\ntriangleleft" + }, + "⋫": { + math: "\\ntriangleright" + }, + "⋬": { + math: "\\ntrianglelefteq" + }, + "⋭": { + math: "\\ntrianglerighteq" + }, + "⋮": { + math: "\\vdots" + }, + "⋯": { + math: "\\cdots" + }, + "⋰": { + math: "\\upslopeellipsis" + }, + "⋱": { + math: "\\downslopeellipsis" + }, + "⋲": { + math: "\\disin" + }, + "⋳": { + math: "\\varisins" + }, + "⋴": { + math: "\\isins" + }, + "⋵": { + math: "\\isindot" + }, + "⋶": { + math: "\\barin" + }, + "⋷": { + math: "\\isinobar" + }, + "⋸": { + math: "\\isinvb" + }, + "⋹": { + math: "\\isinE" + }, + "⋺": { + math: "\\nisd" + }, + "⋻": { + math: "\\varnis" + }, + "⋼": { + math: "\\nis" + }, + "⋽": { + math: "\\varniobar" + }, + "⋾": { + math: "\\niobar" + }, + "⋿": { + math: "\\bagmember" + }, + "⌀": { + math: "\\diameter" + }, + "⌂": { + math: "\\house" + }, + "⌅": { + math: "\\varbarwedge", + text: "\\barwedge", + commandspacer: true + }, + "⌆": { + math: "\\perspcorrespond" + }, + "⌈": { + math: "\\lceil" + }, + "⌉": { + math: "\\rceil" + }, + "⌊": { + math: "\\lfloor" + }, + "⌋": { + math: "\\rfloor" + }, + "⌐": { + math: "\\invneg" + }, + "⌑": { + math: "\\wasylozenge" + }, + "⌒": { + math: "\\profline" + }, + "⌓": { + math: "\\profsurf" + }, + "⌕": { + math: "\\recorder" + }, + "⌖": { + math: "{\\mathchar\"2208}" + }, + "⌗": { + math: "\\viewdata" + }, + "⌙": { + math: "\\turnednot" + }, + "⌜": { + math: "\\ulcorner" + }, + "⌝": { + math: "\\urcorner" + }, + "⌞": { + math: "\\llcorner" + }, + "⌟": { + math: "\\lrcorner" + }, + "⌠": { + math: "\\inttop" + }, + "⌡": { + math: "\\intbottom" + }, + "⌢": { + math: "\\frown" + }, + "⌣": { + math: "\\smile" + }, + "〈": { + math: "\\langle" + }, + "〉": { + math: "\\rangle" + }, + "⌬": { + math: "\\varhexagonlrbonds" + }, + "⌲": { + math: "\\conictaper" + }, + "⌶": { + math: "\\topbot" + }, + "⌹": { + math: "\\APLinv" + }, + "⌿": { + math: "\\notslash" + }, + "⍀": { + math: "\\notbackslash" + }, + "⍇": { + math: "\\APLleftarrowbox" + }, + "⍈": { + math: "\\APLrightarrowbox" + }, + "⍉": { + math: "\\invdiameter" + }, + "⍐": { + math: "\\APLuparrowbox" + }, + "⍓": { + math: "\\APLboxupcaret" + }, + "⍗": { + math: "\\APLdownarrowbox" + }, + "⍝": { + math: "\\APLcomment" + }, + "⍞": { + math: "\\APLinput" + }, + "⍟": { + math: "\\APLlog" + }, + "⍰": { + math: "\\APLboxquestion" + }, + "⍼": { + math: "\\rangledownzigzagarrow" + }, + "⎔": { + math: "\\hexagon" + }, + "⎛": { + math: "\\lparenuend" + }, + "⎜": { + math: "\\lparenextender" + }, + "⎝": { + math: "\\lparenlend" + }, + "⎞": { + math: "\\rparenuend" + }, + "⎟": { + math: "\\rparenextender" + }, + "⎠": { + math: "\\rparenlend" + }, + "⎡": { + math: "\\lbrackuend" + }, + "⎢": { + math: "\\lbrackextender" + }, + "⎣": { + math: "\\Elzdlcorn" + }, + "⎤": { + math: "\\rbrackuend" + }, + "⎥": { + math: "\\rbrackextender" + }, + "⎦": { + math: "\\rbracklend" + }, + "⎧": { + math: "\\lbraceuend" + }, + "⎨": { + math: "\\lbracemid" + }, + "⎩": { + math: "\\lbracelend" + }, + "⎪": { + math: "\\vbraceextender" + }, + "⎫": { + math: "\\rbraceuend" + }, + "⎬": { + math: "\\rbracemid" + }, + "⎭": { + math: "\\rbracelend" + }, + "⎮": { + math: "\\intextender" + }, + "⎯": { + math: "\\harrowextender" + }, + "⎰": { + math: "\\lmoustache" + }, + "⎱": { + math: "\\rmoustache" + }, + "⎲": { + math: "\\sumtop" + }, + "⎳": { + math: "\\sumbottom" + }, + "⎴": { + math: "\\overbracket" + }, + "⎵": { + math: "\\underbracket" + }, + "⎶": { + math: "\\bbrktbrk" + }, + "⎷": { + math: "\\sqrtbottom" + }, + "⎸": { + math: "\\lvboxline" + }, + "⎹": { + math: "\\rvboxline" + }, + "⏎": { + math: "\\varcarriagereturn" + }, + "⏜": { + math: "\\overparen" + }, + "⏝": { + math: "\\underparen" + }, + "⏞": { + math: "\\overbrace" + }, + "⏟": { + math: "\\underbrace" + }, + "⏠": { + math: "\\obrbrak" + }, + "⏡": { + math: "\\ubrbrak" + }, + "⏢": { + math: "\\trapezium" + }, + "⏣": { + math: "\\benzenr" + }, + "⏤": { + math: "\\strns" + }, + "⏥": { + math: "\\fltns" + }, + "⏦": { + math: "\\accurrent" + }, + "⏧": { + math: "\\elinters" + }, + "␀": { + text: "NUL" + }, + "␁": { + text: "SOH" + }, + "␂": { + text: "STX" + }, + "␃": { + text: "ETX" + }, + "␄": { + text: "EOT" + }, + "␅": { + text: "ENQ" + }, + "␆": { + text: "ACK" + }, + "␇": { + text: "BEL" + }, + "␈": { + text: "BS" + }, + "␉": { + text: "HT" + }, + "␊": { + text: "LF" + }, + "␋": { + text: "VT" + }, + "␌": { + text: "FF" + }, + "␍": { + text: "CR" + }, + "␎": { + text: "SO" + }, + "␏": { + text: "SI" + }, + "␐": { + text: "DLE" + }, + "␑": { + text: "DC1" + }, + "␒": { + text: "DC2" + }, + "␓": { + text: "DC3" + }, + "␔": { + text: "DC4" + }, + "␕": { + text: "NAK" + }, + "␖": { + text: "SYN" + }, + "␗": { + text: "ETB" + }, + "␘": { + text: "CAN" + }, + "␙": { + text: "EM" + }, + "␚": { + text: "SUB" + }, + "␛": { + text: "ESC" + }, + "␜": { + text: "FS" + }, + "␝": { + text: "GS" + }, + "␞": { + text: "RS" + }, + "␟": { + text: "US" + }, + "␠": { + text: "SP" + }, + "␡": { + text: "DEL" + }, + "␣": { + text: "\\textvisiblespace", + commandspacer: true + }, + "␤": { + text: "NL" + }, + "␥": { + text: "///" + }, + "␦": { + text: "?" + }, + "①": { + text: "\\ding{172}" + }, + "②": { + text: "\\ding{173}" + }, + "③": { + text: "\\ding{174}" + }, + "④": { + text: "\\ding{175}" + }, + "⑤": { + text: "\\ding{176}" + }, + "⑥": { + text: "\\ding{177}" + }, + "⑦": { + text: "\\ding{178}" + }, + "⑧": { + text: "\\ding{179}" + }, + "⑨": { + text: "\\ding{180}" + }, + "⑩": { + text: "\\ding{181}" + }, + "⑪": { + text: "(11)" + }, + "⑫": { + text: "(12)" + }, + "⑬": { + text: "(13)" + }, + "⑭": { + text: "(14)" + }, + "⑮": { + text: "(15)" + }, + "⑯": { + text: "(16)" + }, + "⑰": { + text: "(17)" + }, + "⑱": { + text: "(18)" + }, + "⑲": { + text: "(19)" + }, + "⑳": { + text: "(20)" + }, + "⑴": { + text: "(1)" + }, + "⑵": { + text: "(2)" + }, + "⑶": { + text: "(3)" + }, + "⑷": { + text: "(4)" + }, + "⑸": { + text: "(5)" + }, + "⑹": { + text: "(6)" + }, + "⑺": { + text: "(7)" + }, + "⑻": { + text: "(8)" + }, + "⑼": { + text: "(9)" + }, + "⑽": { + text: "(10)" + }, + "⑾": { + text: "(11)" + }, + "⑿": { + text: "(12)" + }, + "⒀": { + text: "(13)" + }, + "⒁": { + text: "(14)" + }, + "⒂": { + text: "(15)" + }, + "⒃": { + text: "(16)" + }, + "⒄": { + text: "(17)" + }, + "⒅": { + text: "(18)" + }, + "⒆": { + text: "(19)" + }, + "⒇": { + text: "(20)" + }, + "⒈": { + text: "1." + }, + "⒉": { + text: "2." + }, + "⒊": { + text: "3." + }, + "⒋": { + text: "4." + }, + "⒌": { + text: "5." + }, + "⒍": { + text: "6." + }, + "⒎": { + text: "7." + }, + "⒏": { + text: "8." + }, + "⒐": { + text: "9." + }, + "⒑": { + text: "10." + }, + "⒒": { + text: "11." + }, + "⒓": { + text: "12." + }, + "⒔": { + text: "13." + }, + "⒕": { + text: "14." + }, + "⒖": { + text: "15." + }, + "⒗": { + text: "16." + }, + "⒘": { + text: "17." + }, + "⒙": { + text: "18." + }, + "⒚": { + text: "19." + }, + "⒛": { + text: "20." + }, + "⒜": { + text: "(a)" + }, + "⒝": { + text: "(b)" + }, + "⒞": { + text: "(c)" + }, + "⒟": { + text: "(d)" + }, + "⒠": { + text: "(e)" + }, + "⒡": { + text: "(f)" + }, + "⒢": { + text: "(g)" + }, + "⒣": { + text: "(h)" + }, + "⒤": { + text: "(i)" + }, + "⒥": { + text: "(j)" + }, + "⒦": { + text: "(k)" + }, + "⒧": { + text: "(l)" + }, + "⒨": { + text: "(m)" + }, + "⒩": { + text: "(n)" + }, + "⒪": { + text: "(o)" + }, + "⒫": { + text: "(p)" + }, + "⒬": { + text: "(q)" + }, + "⒭": { + text: "(r)" + }, + "⒮": { + text: "(s)" + }, + "⒯": { + text: "(t)" + }, + "⒰": { + text: "(u)" + }, + "⒱": { + text: "(v)" + }, + "⒲": { + text: "(w)" + }, + "⒳": { + text: "(x)" + }, + "⒴": { + text: "(y)" + }, + "⒵": { + text: "(z)" + }, + "Ⓐ": { + text: "(A)" + }, + "Ⓑ": { + text: "(B)" + }, + "Ⓒ": { + text: "(C)" + }, + "Ⓓ": { + text: "(D)" + }, + "Ⓔ": { + text: "(E)" + }, + "Ⓕ": { + text: "(F)" + }, + "Ⓖ": { + text: "(G)" + }, + "Ⓗ": { + text: "(H)" + }, + "Ⓘ": { + text: "(I)" + }, + "Ⓙ": { + text: "(J)" + }, + "Ⓚ": { + text: "(K)" + }, + "Ⓛ": { + text: "(L)" + }, + "Ⓜ": { + text: "(M)" + }, + "Ⓝ": { + text: "(N)" + }, + "Ⓞ": { + text: "(O)" + }, + "Ⓟ": { + text: "(P)" + }, + "Ⓠ": { + text: "(Q)" + }, + "Ⓡ": { + text: "(R)" + }, + "Ⓢ": { + math: "\\circledS" + }, + "Ⓣ": { + text: "(T)" + }, + "Ⓤ": { + text: "(U)" + }, + "Ⓥ": { + text: "(V)" + }, + "Ⓦ": { + text: "(W)" + }, + "Ⓧ": { + text: "(X)" + }, + "Ⓨ": { + text: "(Y)" + }, + "Ⓩ": { + text: "(Z)" + }, + "ⓐ": { + text: "(a)" + }, + "ⓑ": { + text: "(b)" + }, + "ⓒ": { + text: "(c)" + }, + "ⓓ": { + text: "(d)" + }, + "ⓔ": { + text: "(e)" + }, + "ⓕ": { + text: "(f)" + }, + "ⓖ": { + text: "(g)" + }, + "ⓗ": { + text: "(h)" + }, + "ⓘ": { + text: "(i)" + }, + "ⓙ": { + text: "(j)" + }, + "ⓚ": { + text: "(k)" + }, + "ⓛ": { + text: "(l)" + }, + "ⓜ": { + text: "(m)" + }, + "ⓝ": { + text: "(n)" + }, + "ⓞ": { + text: "(o)" + }, + "ⓟ": { + text: "(p)" + }, + "ⓠ": { + text: "(q)" + }, + "ⓡ": { + text: "(r)" + }, + "ⓢ": { + text: "(s)" + }, + "ⓣ": { + text: "(t)" + }, + "ⓤ": { + text: "(u)" + }, + "ⓥ": { + text: "(v)" + }, + "ⓦ": { + text: "(w)" + }, + "ⓧ": { + text: "(x)" + }, + "ⓨ": { + text: "(y)" + }, + "ⓩ": { + text: "(z)" + }, + "⓪": { + text: "(0)" + }, + "─": { + text: "-" + }, + "━": { + text: "=" + }, + "│": { + text: "|" + }, + "┃": { + text: "|" + }, + "┄": { + text: "-" + }, + "┅": { + text: "=" + }, + "┆": { + math: "\\Elzdshfnc" + }, + "┇": { + text: "|" + }, + "┈": { + text: "-" + }, + "┉": { + text: "=" + }, + "┊": { + text: "|" + }, + "┋": { + text: "|" + }, + "┌": { + text: "+" + }, + "┍": { + text: "+" + }, + "┎": { + text: "+" + }, + "┏": { + text: "+" + }, + "┐": { + text: "+" + }, + "┑": { + text: "+" + }, + "┒": { + text: "+" + }, + "┓": { + text: "+" + }, + "└": { + text: "+" + }, + "┕": { + text: "+" + }, + "┖": { + text: "+" + }, + "┗": { + text: "+" + }, + "┘": { + text: "+" + }, + "┙": { + math: "\\Elzsqfnw" + }, + "┚": { + text: "+" + }, + "┛": { + text: "+" + }, + "├": { + text: "+" + }, + "┝": { + text: "+" + }, + "┞": { + text: "+" + }, + "┟": { + text: "+" + }, + "┠": { + text: "+" + }, + "┡": { + text: "+" + }, + "┢": { + text: "+" + }, + "┣": { + text: "+" + }, + "┤": { + text: "+" + }, + "┥": { + text: "+" + }, + "┦": { + text: "+" + }, + "┧": { + text: "+" + }, + "┨": { + text: "+" + }, + "┩": { + text: "+" + }, + "┪": { + text: "+" + }, + "┫": { + text: "+" + }, + "┬": { + text: "+" + }, + "┭": { + text: "+" + }, + "┮": { + text: "+" + }, + "┯": { + text: "+" + }, + "┰": { + text: "+" + }, + "┱": { + text: "+" + }, + "┲": { + text: "+" + }, + "┳": { + text: "+" + }, + "┴": { + text: "+" + }, + "┵": { + text: "+" + }, + "┶": { + text: "+" + }, + "┷": { + text: "+" + }, + "┸": { + text: "+" + }, + "┹": { + text: "+" + }, + "┺": { + text: "+" + }, + "┻": { + text: "+" + }, + "┼": { + text: "+" + }, + "┽": { + text: "+" + }, + "┾": { + text: "+" + }, + "┿": { + text: "+" + }, + "╀": { + text: "+" + }, + "╁": { + text: "+" + }, + "╂": { + text: "+" + }, + "╃": { + text: "+" + }, + "╄": { + text: "+" + }, + "╅": { + text: "+" + }, + "╆": { + text: "+" + }, + "╇": { + text: "+" + }, + "╈": { + text: "+" + }, + "╉": { + text: "+" + }, + "╊": { + text: "+" + }, + "╋": { + text: "+" + }, + "╌": { + text: "-" + }, + "╍": { + text: "=" + }, + "╎": { + text: "|" + }, + "╏": { + text: "|" + }, + "═": { + text: "=" + }, + "║": { + text: "|" + }, + "╒": { + text: "+" + }, + "╓": { + text: "+" + }, + "╔": { + text: "+" + }, + "╕": { + text: "+" + }, + "╖": { + text: "+" + }, + "╗": { + text: "+" + }, + "╘": { + text: "+" + }, + "╙": { + text: "+" + }, + "╚": { + text: "+" + }, + "╛": { + text: "+" + }, + "╜": { + text: "+" + }, + "╝": { + text: "+" + }, + "╞": { + text: "+" + }, + "╟": { + text: "+" + }, + "╠": { + text: "+" + }, + "╡": { + text: "+" + }, + "╢": { + text: "+" + }, + "╣": { + text: "+" + }, + "╤": { + text: "+" + }, + "╥": { + text: "+" + }, + "╦": { + text: "+" + }, + "╧": { + text: "+" + }, + "╨": { + text: "+" + }, + "╩": { + text: "+" + }, + "╪": { + text: "+" + }, + "╫": { + text: "+" + }, + "╬": { + text: "+" + }, + "╭": { + text: "+" + }, + "╮": { + text: "+" + }, + "╯": { + text: "+" + }, + "╰": { + text: "+" + }, + "╱": { + math: "\\diagup" + }, + "╲": { + text: "\\" + }, + "╳": { + text: "X" + }, + "╼": { + text: "-" + }, + "╽": { + text: "|" + }, + "╾": { + text: "-" + }, + "╿": { + text: "|" + }, + "▀": { + math: "\\blockuphalf" + }, + "▄": { + math: "\\blocklowhalf" + }, + "█": { + math: "\\blockfull" + }, + "▌": { + math: "\\blocklefthalf" + }, + "▐": { + math: "\\blockrighthalf" + }, + "░": { + math: "\\blockqtrshaded" + }, + "▒": { + math: "\\blockhalfshaded" + }, + "▓": { + math: "\\blockthreeqtrshaded" + }, + "■": { + math: "\\mdlgblksquare", + text: "\\ding{110}" + }, + "□": { + math: "\\square" + }, + "▢": { + math: "\\squoval" + }, + "▣": { + math: "\\blackinwhitesquare" + }, + "▤": { + math: "\\squarehfill" + }, + "▥": { + math: "\\squarevfill" + }, + "▦": { + math: "\\squarehvfill" + }, + "▧": { + math: "\\squarenwsefill" + }, + "▨": { + math: "\\squareneswfill" + }, + "▩": { + math: "\\squarecrossfill" + }, + "▪": { + math: "\\blacksquare" + }, + "▫": { + math: "\\smwhtsquare" + }, + "▬": { + math: "\\hrectangleblack" + }, + "▭": { + math: "\\fbox{~~}" + }, + "▮": { + math: "\\vrectangleblack" + }, + "▯": { + math: "\\Elzvrecto" + }, + "▰": { + math: "\\parallelogramblack" + }, + "▲": { + math: "\\bigblacktriangleup", + text: "\\ding{115}" + }, + "△": { + math: "\\bigtriangleup" + }, + "▴": { + math: "\\blacktriangle" + }, + "▵": { + math: "\\vartriangle" + }, + "▶": { + math: "\\RHD" + }, + "▷": { + math: "\\rhd" + }, + "▸": { + math: "\\blacktriangleright" + }, + "▹": { + math: "\\triangleright" + }, + "►": { + math: "\\blackpointerright" + }, + "▻": { + math: "\\whitepointerright" + }, + "▼": { + math: "\\bigblacktriangledown", + text: "\\ding{116}" + }, + "▽": { + math: "\\bigtriangledown" + }, + "▾": { + math: "\\blacktriangledown" + }, + "▿": { + math: "\\triangledown" + }, + "◀": { + math: "\\LHD" + }, + "◁": { + math: "\\lhd" + }, + "◂": { + math: "\\blacktriangleleft" + }, + "◃": { + math: "\\triangleleft" + }, + "◄": { + math: "\\blackpointerleft" + }, + "◅": { + math: "\\whitepointerleft" + }, + "◆": { + math: "\\Diamondblack", + text: "\\ding{117}" + }, + "◇": { + math: "\\Diamond" + }, + "◈": { + math: "\\blackinwhitediamond" + }, + "◉": { + math: "\\fisheye" + }, + "◊": { + math: "\\lozenge" + }, + "○": { + math: "\\bigcirc" + }, + "◌": { + math: "\\dottedcircle" + }, + "◍": { + math: "\\circlevertfill" + }, + "◎": { + math: "\\bullseye" + }, + "●": { + math: "\\CIRCLE", + text: "\\ding{108}" + }, + "◐": { + math: "\\Elzcirfl" + }, + "◑": { + math: "\\Elzcirfr" + }, + "◒": { + math: "\\Elzcirfb" + }, + "◓": { + math: "\\circletophalfblack" + }, + "◔": { + math: "\\circleurquadblack" + }, + "◕": { + math: "\\blackcircleulquadwhite" + }, + "◖": { + math: "\\LEFTCIRCLE" + }, + "◗": { + math: "\\RIGHTCIRCLE", + text: "\\ding{119}" + }, + "◘": { + math: "\\Elzrvbull" + }, + "◙": { + math: "\\inversewhitecircle" + }, + "◚": { + math: "\\invwhiteupperhalfcircle" + }, + "◛": { + math: "\\invwhitelowerhalfcircle" + }, + "◜": { + math: "\\ularc" + }, + "◝": { + math: "\\urarc" + }, + "◞": { + math: "\\lrarc" + }, + "◟": { + math: "\\llarc" + }, + "◠": { + math: "\\topsemicircle" + }, + "◡": { + math: "\\botsemicircle" + }, + "◢": { + math: "\\lrblacktriangle" + }, + "◣": { + math: "\\llblacktriangle" + }, + "◤": { + math: "\\ulblacktriangle" + }, + "◥": { + math: "\\urblacktriangle" + }, + "◦": { + math: "\\smwhtcircle" + }, + "◧": { + math: "\\Elzsqfl" + }, + "◨": { + math: "\\Elzsqfr" + }, + "◩": { + math: "\\squareulblack" + }, + "◪": { + math: "\\Elzsqfse" + }, + "◫": { + math: "\\boxbar" + }, + "◬": { + math: "\\trianglecdot" + }, + "◭": { + math: "\\triangleleftblack" + }, + "◮": { + math: "\\trianglerightblack" + }, + "◯": { + math: "\\bigcirc" + }, + "◰": { + math: "\\squareulquad" + }, + "◱": { + math: "\\squarellquad" + }, + "◲": { + math: "\\squarelrquad" + }, + "◳": { + math: "\\squareurquad" + }, + "◴": { + math: "\\circleulquad" + }, + "◵": { + math: "\\circlellquad" + }, + "◶": { + math: "\\circlelrquad" + }, + "◷": { + math: "\\circleurquad" + }, + "◸": { + math: "\\ultriangle" + }, + "◹": { + math: "\\urtriangle" + }, + "◺": { + math: "\\lltriangle" + }, + "◻": { + math: "\\square" + }, + "◼": { + math: "\\blacksquare" + }, + "◽": { + math: "\\mdsmwhtsquare" + }, + "◾": { + math: "\\mdsmblksquare" + }, + "◿": { + math: "\\lrtriangle" + }, + "★": { + math: "\\bigstar", + text: "\\ding{72}" + }, + "☆": { + math: "\\bigwhitestar", + text: "\\ding{73}" + }, + "☉": { + math: "\\Sun" + }, + "☎": { + text: "\\ding{37}" + }, + "☐": { + math: "\\Square" + }, + "☑": { + math: "\\CheckedBox" + }, + "☒": { + math: "\\XBox" + }, + "☓": { + text: "X" + }, + "☕": { + math: "\\steaming" + }, + "☛": { + text: "\\ding{42}" + }, + "☞": { + math: "\\pointright", + text: "\\ding{43}" + }, + "☠": { + math: "\\skull" + }, + "☡": { + math: "\\danger" + }, + "☢": { + math: "\\radiation" + }, + "☣": { + math: "\\biohazard" + }, + "☯": { + math: "\\yinyang" + }, + "☹": { + math: "\\frownie" + }, + "☺": { + math: "\\smiley" + }, + "☻": { + math: "\\blacksmiley" + }, + "☼": { + math: "\\sun" + }, + "☽": { + text: "\\rightmoon", + commandspacer: true, + textpackages: [ + "wasysym" + ] + }, + "☾": { + text: "\\leftmoon", + commandspacer: true, + textpackages: [ + "wasysym" + ] + }, + "☿": { + math: "\\mercury", + text: "\\mercury", + commandspacer: true + }, + "♀": { + math: "\\female", + text: "\\venus", + commandspacer: true + }, + "♁": { + math: "\\earth" + }, + "♂": { + math: "\\male", + text: "\\male", + commandspacer: true + }, + "♃": { + math: "\\jupiter", + text: "\\jupiter", + commandspacer: true + }, + "♄": { + math: "\\saturn", + text: "\\saturn", + commandspacer: true + }, + "♅": { + math: "\\uranus", + text: "\\uranus", + commandspacer: true + }, + "♆": { + math: "\\neptune", + text: "\\neptune", + commandspacer: true + }, + "♇": { + math: "\\pluto", + text: "\\pluto", + commandspacer: true + }, + "♈": { + math: "\\aries", + text: "\\aries", + commandspacer: true + }, + "♉": { + math: "\\taurus", + text: "\\taurus", + commandspacer: true + }, + "♊": { + math: "\\gemini", + text: "\\gemini", + commandspacer: true + }, + "♋": { + math: "\\cancer", + text: "\\cancer", + commandspacer: true + }, + "♌": { + math: "\\leo", + text: "\\leo", + commandspacer: true + }, + "♍": { + math: "\\virgo", + text: "\\virgo", + commandspacer: true + }, + "♎": { + math: "\\libra", + text: "\\libra", + commandspacer: true + }, + "♏": { + math: "\\scorpio", + text: "\\scorpio", + commandspacer: true + }, + "♐": { + math: "\\sagittarius", + text: "\\sagittarius", + commandspacer: true + }, + "♑": { + math: "\\capricornus", + text: "\\capricornus", + commandspacer: true + }, + "♒": { + math: "\\aquarius", + text: "\\aquarius", + commandspacer: true + }, + "♓": { + math: "\\pisces", + text: "\\pisces", + commandspacer: true + }, + "♠": { + math: "\\spadesuit", + text: "\\ding{171}" + }, + "♡": { + math: "\\heartsuit" + }, + "♢": { + math: "\\diamond" + }, + "♣": { + math: "\\clubsuit", + text: "\\ding{168}" + }, + "♤": { + math: "\\varspadesuit" + }, + "♥": { + math: "\\varheartsuit", + text: "\\ding{170}" + }, + "♦": { + math: "\\vardiamondsuit", + text: "\\ding{169}" + }, + "♧": { + math: "\\varclubsuit" + }, + "♩": { + math: "\\quarternote", + text: "\\quarternote", + commandspacer: true + }, + "♪": { + math: "\\eighthnote", + text: "\\eighthnote", + commandspacer: true + }, + "♫": { + math: "\\twonotes" + }, + "♬": { + math: "\\sixteenthnote" + }, + "♭": { + math: "\\flat" + }, + "♮": { + math: "\\natural" + }, + "♯": { + math: "\\sharp" + }, + "♻": { + math: "\\recycle" + }, + "♾": { + math: "\\acidfree" + }, + "⚀": { + math: "\\dicei" + }, + "⚁": { + math: "\\diceii" + }, + "⚂": { + math: "\\diceiii" + }, + "⚃": { + math: "\\diceiv" + }, + "⚄": { + math: "\\dicev" + }, + "⚅": { + math: "\\dicevi" + }, + "⚆": { + math: "\\circledrightdot" + }, + "⚇": { + math: "\\circledtwodots" + }, + "⚈": { + math: "\\blackcircledrightdot" + }, + "⚉": { + math: "\\blackcircledtwodots" + }, + "⚓": { + math: "\\anchor" + }, + "⚔": { + math: "\\swords" + }, + "⚠": { + math: "\\warning" + }, + "⚥": { + math: "\\Hermaphrodite" + }, + "⚪": { + math: "\\medcirc" + }, + "⚫": { + math: "\\medbullet" + }, + "⚬": { + math: "\\mdsmwhtcircle" + }, + "⚲": { + math: "\\neuter" + }, + "✁": { + text: "\\ding{33}" + }, + "✂": { + text: "\\ding{34}" + }, + "✃": { + text: "\\ding{35}" + }, + "✄": { + text: "\\ding{36}" + }, + "✆": { + text: "\\ding{38}" + }, + "✇": { + text: "\\ding{39}" + }, + "✈": { + text: "\\ding{40}" + }, + "✉": { + text: "\\ding{41}" + }, + "✌": { + text: "\\ding{44}" + }, + "✍": { + text: "\\ding{45}" + }, + "✎": { + math: "\\pencil", + text: "\\ding{46}" + }, + "✏": { + text: "\\ding{47}" + }, + "✐": { + text: "\\ding{48}" + }, + "✑": { + text: "\\ding{49}" + }, + "✒": { + text: "\\ding{50}" + }, + "✓": { + math: "\\checkmark", + text: "\\ding{51}" + }, + "✔": { + text: "\\ding{52}" + }, + "✕": { + text: "\\ding{53}" + }, + "✖": { + text: "\\ding{54}" + }, + "✗": { + math: "\\ballotx", + text: "\\ding{55}" + }, + "✘": { + text: "\\ding{56}" + }, + "✙": { + text: "\\ding{57}" + }, + "✚": { + text: "\\ding{58}" + }, + "✛": { + text: "\\ding{59}" + }, + "✜": { + text: "\\ding{60}" + }, + "✝": { + text: "\\ding{61}" + }, + "✞": { + text: "\\ding{62}" + }, + "✟": { + text: "\\ding{63}" + }, + "✠": { + math: "\\maltese", + text: "\\ding{64}" + }, + "✡": { + text: "\\ding{65}" + }, + "✢": { + text: "\\ding{66}" + }, + "✣": { + text: "\\ding{67}" + }, + "✤": { + text: "\\ding{68}" + }, + "✥": { + text: "\\ding{69}" + }, + "✦": { + text: "\\ding{70}" + }, + "✧": { + text: "\\ding{71}" + }, + "✩": { + text: "\\ding{73}" + }, + "✪": { + math: "\\circledstar", + text: "\\ding{74}" + }, + "✫": { + text: "\\ding{75}" + }, + "✬": { + text: "\\ding{76}" + }, + "✭": { + text: "\\ding{77}" + }, + "✮": { + text: "\\ding{78}" + }, + "✯": { + text: "\\ding{79}" + }, + "✰": { + text: "\\ding{80}" + }, + "✱": { + text: "\\ding{81}" + }, + "✲": { + text: "\\ding{82}" + }, + "✳": { + text: "\\ding{83}" + }, + "✴": { + text: "\\ding{84}" + }, + "✵": { + text: "\\ding{85}" + }, + "✶": { + math: "\\varstar", + text: "\\ding{86}" + }, + "✷": { + text: "\\ding{87}" + }, + "✸": { + text: "\\ding{88}" + }, + "✹": { + text: "\\ding{89}" + }, + "✺": { + text: "\\ding{90}" + }, + "✻": { + text: "\\ding{91}" + }, + "✼": { + text: "\\ding{92}" + }, + "✽": { + math: "\\dingasterisk", + text: "\\ding{93}" + }, + "✾": { + text: "\\ding{94}" + }, + "✿": { + text: "\\ding{95}" + }, + "❀": { + text: "\\ding{96}" + }, + "❁": { + text: "\\ding{97}" + }, + "❂": { + text: "\\ding{98}" + }, + "❃": { + text: "\\ding{99}" + }, + "❄": { + text: "\\ding{100}" + }, + "❅": { + text: "\\ding{101}" + }, + "❆": { + text: "\\ding{102}" + }, + "❇": { + text: "\\ding{103}" + }, + "❈": { + text: "\\ding{104}" + }, + "❉": { + text: "\\ding{105}" + }, + "❊": { + text: "\\ding{106}" + }, + "❋": { + text: "\\ding{107}" + }, + "❍": { + text: "\\ding{109}" + }, + "❏": { + text: "\\ding{111}" + }, + "❐": { + text: "\\ding{112}" + }, + "❑": { + text: "\\ding{113}" + }, + "❒": { + text: "\\ding{114}" + }, + "❖": { + text: "\\ding{118}" + }, + "❘": { + text: "\\ding{120}" + }, + "❙": { + text: "\\ding{121}" + }, + "❚": { + text: "\\ding{122}" + }, + "❛": { + text: "\\ding{123}" + }, + "❜": { + text: "\\ding{124}" + }, + "❝": { + text: "\\ding{125}" + }, + "❞": { + text: "\\ding{126}" + }, + "❡": { + text: "\\ding{161}" + }, + "❢": { + text: "\\ding{162}" + }, + "❣": { + text: "\\ding{163}" + }, + "❤": { + text: "\\ding{164}" + }, + "❥": { + text: "\\ding{165}" + }, + "❦": { + text: "\\ding{166}" + }, + "❧": { + text: "\\ding{167}" + }, + "❲": { + math: "\\lbrbrak" + }, + "❳": { + math: "\\rbrbrak" + }, + "❶": { + text: "\\ding{182}" + }, + "❷": { + text: "\\ding{183}" + }, + "❸": { + text: "\\ding{184}" + }, + "❹": { + text: "\\ding{185}" + }, + "❺": { + text: "\\ding{186}" + }, + "❻": { + text: "\\ding{187}" + }, + "❼": { + text: "\\ding{188}" + }, + "❽": { + text: "\\ding{189}" + }, + "❾": { + text: "\\ding{190}" + }, + "❿": { + text: "\\ding{191}" + }, + "➀": { + text: "\\ding{192}" + }, + "➁": { + text: "\\ding{193}" + }, + "➂": { + text: "\\ding{194}" + }, + "➃": { + text: "\\ding{195}" + }, + "➄": { + text: "\\ding{196}" + }, + "➅": { + text: "\\ding{197}" + }, + "➆": { + text: "\\ding{198}" + }, + "➇": { + text: "\\ding{199}" + }, + "➈": { + text: "\\ding{200}" + }, + "➉": { + text: "\\ding{201}" + }, + "➊": { + text: "\\ding{202}" + }, + "➋": { + text: "\\ding{203}" + }, + "➌": { + text: "\\ding{204}" + }, + "➍": { + text: "\\ding{205}" + }, + "➎": { + text: "\\ding{206}" + }, + "➏": { + text: "\\ding{207}" + }, + "➐": { + text: "\\ding{208}" + }, + "➑": { + text: "\\ding{209}" + }, + "➒": { + text: "\\ding{210}" + }, + "➓": { + text: "\\ding{211}" + }, + "➔": { + text: "\\ding{212}" + }, + "➘": { + text: "\\ding{216}" + }, + "➙": { + text: "\\ding{217}" + }, + "➚": { + text: "\\ding{218}" + }, + "➛": { + math: "\\draftingarrow", + text: "\\ding{219}" + }, + "➜": { + text: "\\ding{220}" + }, + "➝": { + text: "\\ding{221}" + }, + "➞": { + text: "\\ding{222}" + }, + "➟": { + text: "\\ding{223}" + }, + "➠": { + text: "\\ding{224}" + }, + "➡": { + text: "\\ding{225}" + }, + "➢": { + math: "\\arrowbullet", + text: "\\ding{226}" + }, + "➣": { + text: "\\ding{227}" + }, + "➤": { + text: "\\ding{228}" + }, + "➥": { + text: "\\ding{229}" + }, + "➦": { + text: "\\ding{230}" + }, + "➧": { + text: "\\ding{231}" + }, + "➨": { + text: "\\ding{232}" + }, + "➩": { + text: "\\ding{233}" + }, + "➪": { + text: "\\ding{234}" + }, + "➫": { + text: "\\ding{235}" + }, + "➬": { + text: "\\ding{236}" + }, + "➭": { + text: "\\ding{237}" + }, + "➮": { + text: "\\ding{238}" + }, + "➯": { + text: "\\ding{239}" + }, + "➱": { + text: "\\ding{241}" + }, + "➲": { + text: "\\ding{242}" + }, + "➳": { + text: "\\ding{243}" + }, + "➴": { + text: "\\ding{244}" + }, + "➵": { + text: "\\ding{245}" + }, + "➶": { + text: "\\ding{246}" + }, + "➷": { + text: "\\ding{247}" + }, + "➸": { + text: "\\ding{248}" + }, + "➹": { + text: "\\ding{249}" + }, + "➺": { + text: "\\ding{250}" + }, + "➻": { + text: "\\ding{251}" + }, + "➼": { + text: "\\ding{252}" + }, + "➽": { + text: "\\ding{253}" + }, + "➾": { + text: "\\ding{254}" + }, + "⟀": { + math: "\\threedangle" + }, + "⟁": { + math: "\\whiteinwhitetriangle" + }, + "⟂": { + math: "\\perp" + }, + "⟃": { + math: "\\subsetcirc" + }, + "⟄": { + math: "\\supsetcirc" + }, + "⟅": { + math: "\\Lbag" + }, + "⟆": { + math: "\\Rbag" + }, + "⟇": { + math: "\\veedot" + }, + "⟈": { + math: "\\bsolhsub" + }, + "⟉": { + math: "\\suphsol" + }, + "⟌": { + math: "\\longdivision" + }, + "⟐": { + math: "\\Diamonddot" + }, + "⟑": { + math: "\\wedgedot" + }, + "⟒": { + math: "\\upin" + }, + "⟓": { + math: "\\pullback" + }, + "⟔": { + math: "\\pushout" + }, + "⟕": { + math: "\\leftouterjoin" + }, + "⟖": { + math: "\\rightouterjoin" + }, + "⟗": { + math: "\\fullouterjoin" + }, + "⟘": { + math: "\\bigbot" + }, + "⟙": { + math: "\\bigtop" + }, + "⟚": { + math: "\\DashVDash" + }, + "⟛": { + math: "\\dashVdash" + }, + "⟜": { + math: "\\multimapinv" + }, + "⟝": { + math: "\\vlongdash" + }, + "⟞": { + math: "\\longdashv" + }, + "⟟": { + math: "\\cirbot" + }, + "⟠": { + math: "\\lozengeminus" + }, + "⟡": { + math: "\\concavediamond" + }, + "⟢": { + math: "\\concavediamondtickleft" + }, + "⟣": { + math: "\\concavediamondtickright" + }, + "⟤": { + math: "\\whitesquaretickleft" + }, + "⟥": { + math: "\\whitesquaretickright" + }, + "⟦": { + math: "\\llbracket" + }, + "⟧": { + math: "\\rrbracket" + }, + "⟨": { + math: "\\langle" + }, + "⟩": { + math: "\\rangle" + }, + "⟪": { + math: "\\lang" + }, + "⟫": { + math: "\\rang" + }, + "⟬": { + math: "\\Lbrbrak" + }, + "⟭": { + math: "\\Rbrbrak" + }, + "⟮": { + math: "\\lgroup" + }, + "⟯": { + math: "\\rgroup" + }, + "⟰": { + math: "\\UUparrow" + }, + "⟱": { + math: "\\DDownarrow" + }, + "⟲": { + math: "\\acwgapcirclearrow" + }, + "⟳": { + math: "\\cwgapcirclearrow" + }, + "⟴": { + math: "\\rightarrowonoplus" + }, + "⟵": { + math: "\\longleftarrow" + }, + "⟶": { + math: "\\longrightarrow" + }, + "⟷": { + math: "\\longleftrightarrow" + }, + "⟸": { + math: "\\Longleftarrow" + }, + "⟹": { + math: "\\Longrightarrow" + }, + "⟺": { + math: "\\Longleftrightarrow" + }, + "⟻": { + math: "\\longmapsfrom" + }, + "⟼": { + math: "\\longmapsto" + }, + "⟽": { + math: "\\Longmapsfrom" + }, + "⟾": { + math: "\\Longmapsto" + }, + "⟿": { + math: "\\sim\\joinrel\\leadsto" + }, + "⤀": { + math: "\\psur" + }, + "⤁": { + math: "\\nVtwoheadrightarrow" + }, + "⤂": { + math: "\\nvLeftarrow" + }, + "⤃": { + math: "\\nvRightarrow" + }, + "⤄": { + math: "\\nvLeftrightarrow" + }, + "⤆": { + math: "\\Mapsfrom" + }, + "⤇": { + math: "\\Mapsto" + }, + "⤈": { + math: "\\downarrowbarred" + }, + "⤉": { + math: "\\uparrowbarred" + }, + "⤊": { + math: "\\Uuparrow" + }, + "⤋": { + math: "\\Ddownarrow" + }, + "⤌": { + math: "\\leftbkarrow" + }, + "⤍": { + math: "\\rightbkarrow" + }, + "⤎": { + math: "\\leftdbkarrow" + }, + "⤏": { + math: "\\dbkarow" + }, + "⤐": { + math: "\\drbkarow" + }, + "⤑": { + math: "\\rightdotarrow" + }, + "⤒": { + math: "\\UpArrowBar" + }, + "⤓": { + math: "\\DownArrowBar" + }, + "⤔": { + math: "\\pinj" + }, + "⤕": { + math: "\\finj" + }, + "⤖": { + math: "\\bij" + }, + "⤗": { + math: "\\nvtwoheadrightarrowtail" + }, + "⤘": { + math: "\\nVtwoheadrightarrowtail" + }, + "⤙": { + math: "\\lefttail" + }, + "⤚": { + math: "\\righttail" + }, + "⤛": { + math: "\\leftdbltail" + }, + "⤜": { + math: "\\rightdbltail" + }, + "⤝": { + math: "\\diamondleftarrow" + }, + "⤞": { + math: "\\rightarrowdiamond" + }, + "⤟": { + math: "\\diamondleftarrowbar" + }, + "⤠": { + math: "\\barrightarrowdiamond" + }, + "⤡": { + math: "\\nwsearrow" + }, + "⤢": { + math: "\\neswarrow" + }, + "⤫": { + math: "\\rdiagovfdiag" + }, + "⤬": { + math: "\\fdiagovrdiag" + }, + "⤭": { + math: "\\seovnearrow" + }, + "⤮": { + math: "\\neovsearrow" + }, + "⤯": { + math: "\\fdiagovnearrow" + }, + "⤰": { + math: "\\rdiagovsearrow" + }, + "⤱": { + math: "\\neovnwarrow" + }, + "⤲": { + math: "\\nwovnearrow" + }, + "⤴": { + math: "\\uprightcurvearrow" + }, + "⤵": { + math: "\\downrightcurvedarrow" + }, + "⤸": { + math: "\\cwrightarcarrow" + }, + "⤹": { + math: "\\acwleftarcarrow" + }, + "⤺": { + math: "\\acwoverarcarrow" + }, + "⤻": { + math: "\\acwunderarcarrow" + }, + "⤼": { + math: "\\curvearrowrightminus" + }, + "⤽": { + math: "\\curvearrowleftplus" + }, + "⤾": { + math: "\\cwundercurvearrow" + }, + "⤿": { + math: "\\ccwundercurvearrow" + }, + "⥀": { + math: "\\Elolarr" + }, + "⥁": { + math: "\\Elorarr" + }, + "⥂": { + math: "\\ElzRlarr" + }, + "⥃": { + math: "\\leftarrowshortrightarrow" + }, + "⥄": { + math: "\\ElzrLarr" + }, + "⥅": { + math: "\\rightarrowplus" + }, + "⥆": { + math: "\\leftarrowplus" + }, + "⥇": { + math: "\\Elzrarrx" + }, + "⥈": { + math: "\\leftrightarrowcircle" + }, + "⥉": { + math: "\\twoheaduparrowcircle" + }, + "⥊": { + math: "\\leftrightharpoon" + }, + "⥋": { + math: "\\rightleftharpoon" + }, + "⥌": { + math: "\\updownharpoonrightleft" + }, + "⥍": { + math: "\\updownharpoonleftright" + }, + "⥎": { + math: "\\LeftRightVector" + }, + "⥏": { + math: "\\RightUpDownVector" + }, + "⥐": { + math: "\\DownLeftRightVector" + }, + "⥑": { + math: "\\LeftUpDownVector" + }, + "⥒": { + math: "\\LeftVectorBar" + }, + "⥓": { + math: "\\RightVectorBar" + }, + "⥔": { + math: "\\RightUpVectorBar" + }, + "⥕": { + math: "\\RightDownVectorBar" + }, + "⥖": { + math: "\\DownLeftVectorBar" + }, + "⥗": { + math: "\\DownRightVectorBar" + }, + "⥘": { + math: "\\LeftUpVectorBar" + }, + "⥙": { + math: "\\LeftDownVectorBar" + }, + "⥚": { + math: "\\LeftTeeVector" + }, + "⥛": { + math: "\\RightTeeVector" + }, + "⥜": { + math: "\\RightUpTeeVector" + }, + "⥝": { + math: "\\RightDownTeeVector" + }, + "⥞": { + math: "\\DownLeftTeeVector" + }, + "⥟": { + math: "\\DownRightTeeVector" + }, + "⥠": { + math: "\\LeftUpTeeVector" + }, + "⥡": { + math: "\\LeftDownTeeVector" + }, + "⥢": { + math: "\\leftleftharpoons" + }, + "⥣": { + math: "\\upupharpoons" + }, + "⥤": { + math: "\\rightrightharpoons" + }, + "⥥": { + math: "\\downdownharpoons" + }, + "⥦": { + math: "\\leftrightharpoonsup" + }, + "⥧": { + math: "\\leftrightharpoonsdown" + }, + "⥨": { + math: "\\rightleftharpoonsup" + }, + "⥩": { + math: "\\rightleftharpoonsdown" + }, + "⥪": { + math: "\\leftbarharpoon" + }, + "⥫": { + math: "\\barleftharpoon" + }, + "⥬": { + math: "\\rightbarharpoon" + }, + "⥭": { + math: "\\barrightharpoon" + }, + "⥮": { + math: "\\UpEquilibrium" + }, + "⥯": { + math: "\\ReverseUpEquilibrium" + }, + "⥰": { + math: "\\RoundImplies" + }, + "⥱": { + math: "\\equalrightarrow" + }, + "⥲": { + math: "\\similarrightarrow" + }, + "⥳": { + math: "\\leftarrowsimilar" + }, + "⥴": { + math: "\\rightarrowsimilar" + }, + "⥵": { + math: "\\rightarrowapprox" + }, + "⥶": { + math: "\\ltlarr" + }, + "⥷": { + math: "\\leftarrowless" + }, + "⥸": { + math: "\\gtrarr" + }, + "⥹": { + math: "\\subrarr" + }, + "⥺": { + math: "\\leftarrowsubset" + }, + "⥻": { + math: "\\suplarr" + }, + "⥾": { + math: "\\upfishtail" + }, + "⥿": { + math: "\\downfishtail" + }, + "⦀": { + math: "\\Elztfnc" + }, + "⦁": { + math: "\\spot" + }, + "⦂": { + math: "\\typecolon" + }, + "⦃": { + math: "\\lBrace" + }, + "⦄": { + math: "\\rBrace" + }, + "⦆": { + math: "\\Elroang" + }, + "⦇": { + math: "\\limg" + }, + "⦈": { + math: "\\rimg" + }, + "⦉": { + math: "\\lblot" + }, + "⦊": { + math: "\\rblot" + }, + "⦋": { + math: "\\lbrackubar" + }, + "⦌": { + math: "\\rbrackubar" + }, + "⦍": { + math: "\\lbrackultick" + }, + "⦎": { + math: "\\rbracklrtick" + }, + "⦏": { + math: "\\lbracklltick" + }, + "⦐": { + math: "\\rbrackurtick" + }, + "⦑": { + math: "\\langledot" + }, + "⦒": { + math: "\\rangledot" + }, + "⦓": { + math: "<\\kern-0.58em(" + }, + "⦕": { + math: "\\Lparengtr" + }, + "⦖": { + math: "\\Rparenless" + }, + "⦗": { + math: "\\lblkbrbrak" + }, + "⦘": { + math: "\\rblkbrbrak" + }, + "⦙": { + math: "\\Elzddfnc" + }, + "⦚": { + math: "\\vzigzag" + }, + "⦛": { + math: "\\measuredangleleft" + }, + "⦜": { + math: "\\Angle" + }, + "⦝": { + math: "\\rightanglemdot" + }, + "⦞": { + math: "\\angles" + }, + "⦟": { + math: "\\angdnr" + }, + "⦠": { + math: "\\Elzlpargt" + }, + "⦡": { + math: "\\sphericalangleup" + }, + "⦢": { + math: "\\turnangle" + }, + "⦣": { + math: "\\revangle" + }, + "⦤": { + math: "\\angleubar" + }, + "⦥": { + math: "\\revangleubar" + }, + "⦦": { + math: "\\wideangledown" + }, + "⦧": { + math: "\\wideangleup" + }, + "⦨": { + math: "\\measanglerutone" + }, + "⦩": { + math: "\\measanglelutonw" + }, + "⦪": { + math: "\\measanglerdtose" + }, + "⦫": { + math: "\\measangleldtosw" + }, + "⦬": { + math: "\\measangleurtone" + }, + "⦭": { + math: "\\measangleultonw" + }, + "⦮": { + math: "\\measangledrtose" + }, + "⦯": { + math: "\\measangledltosw" + }, + "⦰": { + math: "\\revemptyset" + }, + "⦱": { + math: "\\emptysetobar" + }, + "⦲": { + math: "\\emptysetocirc" + }, + "⦳": { + math: "\\emptysetoarr" + }, + "⦴": { + math: "\\emptysetoarrl" + }, + "⦷": { + math: "\\circledparallel" + }, + "⦸": { + math: "\\circledbslash" + }, + "⦹": { + math: "\\operp" + }, + "⦺": { + math: "\\obot" + }, + "⦻": { + math: "\\olcross" + }, + "⦼": { + math: "\\odotslashdot" + }, + "⦽": { + math: "\\uparrowoncircle" + }, + "⦾": { + math: "\\circledwhitebullet" + }, + "⦿": { + math: "\\circledbullet" + }, + "⧀": { + math: "\\circledless" + }, + "⧁": { + math: "\\circledgtr" + }, + "⧂": { + math: "\\cirscir" + }, + "⧃": { + math: "\\cirE" + }, + "⧄": { + math: "\\boxslash" + }, + "⧅": { + math: "\\boxbslash" + }, + "⧆": { + math: "\\boxast" + }, + "⧇": { + math: "\\boxcircle" + }, + "⧈": { + math: "\\boxbox" + }, + "⧉": { + math: "\\boxonbox" + }, + "⧊": { + math: "\\ElzLap" + }, + "⧋": { + math: "\\Elzdefas" + }, + "⧌": { + math: "\\triangles" + }, + "⧍": { + math: "\\triangleserifs" + }, + "⧎": { + math: "\\rtriltri" + }, + "⧏": { + math: "\\LeftTriangleBar" + }, + "⧏̸": { + math: "\\NotLeftTriangleBar" + }, + "⧐": { + math: "\\RightTriangleBar" + }, + "⧐̸": { + math: "\\NotRightTriangleBar" + }, + "⧑": { + math: "\\lfbowtie" + }, + "⧒": { + math: "\\rfbowtie" + }, + "⧓": { + math: "\\fbowtie" + }, + "⧔": { + math: "\\lftimes" + }, + "⧕": { + math: "\\rftimes" + }, + "⧖": { + math: "\\hourglass" + }, + "⧗": { + math: "\\blackhourglass" + }, + "⧘": { + math: "\\lvzigzag" + }, + "⧙": { + math: "\\rvzigzag" + }, + "⧚": { + math: "\\Lvzigzag" + }, + "⧛": { + math: "\\Rvzigzag" + }, + "⧝": { + math: "\\tieinfty" + }, + "⧞": { + math: "\\nvinfty" + }, + "⧟": { + math: "\\multimapboth" + }, + "⧠": { + math: "\\laplac" + }, + "⧡": { + math: "\\lrtriangleeq" + }, + "⧢": { + math: "\\shuffle" + }, + "⧣": { + math: "\\eparsl" + }, + "⧤": { + math: "\\smeparsl" + }, + "⧥": { + math: "\\eqvparsl" + }, + "⧦": { + math: "\\gleichstark" + }, + "⧧": { + math: "\\thermod" + }, + "⧨": { + math: "\\downtriangleleftblack" + }, + "⧩": { + math: "\\downtrianglerightblack" + }, + "⧪": { + math: "\\blackdiamonddownarrow" + }, + "⧫": { + math: "\\blacklozenge" + }, + "⧬": { + math: "\\circledownarrow" + }, + "⧭": { + math: "\\blackcircledownarrow" + }, + "⧮": { + math: "\\errbarsquare" + }, + "⧯": { + math: "\\errbarblacksquare" + }, + "⧰": { + math: "\\errbardiamond" + }, + "⧱": { + math: "\\errbarblackdiamond" + }, + "⧲": { + math: "\\errbarcircle" + }, + "⧳": { + math: "\\errbarblackcircle" + }, + "⧴": { + math: "\\RuleDelayed" + }, + "⧵": { + math: "\\setminus" + }, + "⧶": { + math: "\\dsol" + }, + "⧷": { + math: "\\rsolbar" + }, + "⧸": { + math: "\\xsol" + }, + "⧹": { + math: "\\zhide" + }, + "⧺": { + math: "\\doubleplus" + }, + "⧻": { + math: "\\tripleplus" + }, + "⧼": { + math: "\\lcurvyangle" + }, + "⧽": { + math: "\\rcurvyangle" + }, + "⧾": { + math: "\\tplus" + }, + "⧿": { + math: "\\tminus" + }, + "⨀": { + math: "\\bigodot" + }, + "⨁": { + math: "\\bigoplus" + }, + "⨂": { + math: "\\bigotimes" + }, + "⨃": { + math: "\\bigcupdot" + }, + "⨄": { + math: "\\Elxuplus" + }, + "⨅": { + math: "\\ElzThr" + }, + "⨆": { + math: "\\Elxsqcup" + }, + "⨇": { + math: "\\ElzInf" + }, + "⨈": { + math: "\\ElzSup" + }, + "⨉": { + math: "\\varprod" + }, + "⨊": { + math: "\\modtwosum" + }, + "⨋": { + math: "\\sumint" + }, + "⨌": { + math: "\\iiiint" + }, + "⨍": { + math: "\\ElzCint" + }, + "⨎": { + math: "\\intBar" + }, + "⨏": { + math: "\\clockoint" + }, + "⨑": { + math: "\\awint" + }, + "⨒": { + math: "\\rppolint" + }, + "⨓": { + math: "\\scpolint" + }, + "⨔": { + math: "\\npolint" + }, + "⨕": { + math: "\\pointint" + }, + "⨖": { + math: "\\sqrint" + }, + "⨗": { + math: "\\intlarhk" + }, + "⨘": { + math: "\\intx" + }, + "⨙": { + math: "\\intcap" + }, + "⨚": { + math: "\\intcup" + }, + "⨛": { + math: "\\upint" + }, + "⨜": { + math: "\\lowint" + }, + "⨝": { + math: "\\Join" + }, + "⨞": { + math: "\\bigtriangleleft" + }, + "⨟": { + math: "\\zcmp" + }, + "⨠": { + math: "\\zpipe" + }, + "⨡": { + math: "\\zproject" + }, + "⨢": { + math: "\\ringplus" + }, + "⨣": { + math: "\\plushat" + }, + "⨤": { + math: "\\simplus" + }, + "⨦": { + math: "\\plussim" + }, + "⨧": { + math: "\\plussubtwo" + }, + "⨨": { + math: "\\plustrif" + }, + "⨩": { + math: "\\commaminus" + }, + "⨫": { + math: "\\minusfdots" + }, + "⨬": { + math: "\\minusrdots" + }, + "⨯": { + math: "\\ElzTimes" + }, + "⨰": { + math: "\\dottimes" + }, + "⨱": { + math: "\\timesbar" + }, + "⨲": { + math: "\\btimes" + }, + "⨳": { + math: "\\smashtimes" + }, + "⨶": { + math: "\\otimeshat" + }, + "⨷": { + math: "\\Otimes" + }, + "⨸": { + math: "\\odiv" + }, + "⨹": { + math: "\\triangleplus" + }, + "⨺": { + math: "\\triangleminus" + }, + "⨻": { + math: "\\triangletimes" + }, + "⨽": { + math: "\\intprodr" + }, + "⨾": { + math: "\\fcmp" + }, + "⨿": { + math: "\\amalg" + }, + "⩀": { + math: "\\capdot" + }, + "⩁": { + math: "\\uminus" + }, + "⩂": { + math: "\\barcup" + }, + "⩃": { + math: "\\barcap" + }, + "⩄": { + math: "\\capwedge" + }, + "⩅": { + math: "\\cupvee" + }, + "⩆": { + math: "\\cupovercap" + }, + "⩇": { + math: "\\capovercup" + }, + "⩈": { + math: "\\cupbarcap" + }, + "⩉": { + math: "\\capbarcup" + }, + "⩊": { + math: "\\twocups" + }, + "⩋": { + math: "\\twocaps" + }, + "⩌": { + math: "\\closedvarcup" + }, + "⩍": { + math: "\\closedvarcap" + }, + "⩎": { + math: "\\Sqcap" + }, + "⩏": { + math: "\\Sqcup" + }, + "⩐": { + math: "\\closedvarcupsmashprod" + }, + "⩑": { + math: "\\wedgeodot" + }, + "⩒": { + math: "\\veeodot" + }, + "⩓": { + math: "\\ElzAnd" + }, + "⩔": { + math: "\\ElzOr" + }, + "⩖": { + math: "\\ElOr" + }, + "⩗": { + math: "\\bigslopedvee" + }, + "⩘": { + math: "\\bigslopedwedge" + }, + "⩙": { + math: "\\veeonwedge" + }, + "⩚": { + math: "\\wedgemidvert" + }, + "⩛": { + math: "\\veemidvert" + }, + "⩜": { + math: "\\midbarwedge" + }, + "⩝": { + math: "\\midbarvee" + }, + "⩞": { + math: "\\perspcorrespond" + }, + "⩟": { + math: "\\Elzminhat" + }, + "⩠": { + math: "\\wedgedoublebar" + }, + "⩡": { + math: "\\varveebar" + }, + "⩢": { + math: "\\doublebarvee" + }, + "⩤": { + math: "\\dsub" + }, + "⩥": { + math: "\\rsub" + }, + "⩦": { + math: "\\eqdot" + }, + "⩧": { + math: "\\dotequiv" + }, + "⩨": { + math: "\\equivVert" + }, + "⩩": { + math: "\\equivVvert" + }, + "⩪": { + math: "\\dotsim" + }, + "⩫": { + math: "\\simrdots" + }, + "⩬": { + math: "\\simminussim" + }, + "⩭": { + math: "\\congdot" + }, + "⩮": { + math: "\\stackrel{*}{=}" + }, + "⩯": { + math: "\\hatapprox" + }, + "⩰": { + math: "\\approxeqq" + }, + "⩱": { + math: "\\eqqplus" + }, + "⩲": { + math: "\\pluseqq" + }, + "⩳": { + math: "\\eqqsim" + }, + "⩴": { + math: "\\Coloneqq" + }, + "⩵": { + math: "\\Equal" + }, + "⩶": { + math: "\\Same" + }, + "⩷": { + math: "\\ddotseq" + }, + "⩸": { + math: "\\equivDD" + }, + "⩹": { + math: "\\ltcir" + }, + "⩺": { + math: "\\gtcir" + }, + "⩻": { + math: "\\ltquest" + }, + "⩼": { + math: "\\gtquest" + }, + "⩽": { + math: "\\leqslant", + mathpackages: [ + "amssymb" + ] + }, + "⩽̸": { + math: "\\nleqslant", + mathpackages: [ + "amssymb" + ] + }, + "⩾": { + math: "\\geqslant", + mathpackages: [ + "amssymb" + ] + }, + "⩾̸": { + math: "\\ngeqslant", + mathpackages: [ + "amssymb" + ] + }, + "⩿": { + math: "\\lesdot" + }, + "⪀": { + math: "\\gesdot" + }, + "⪁": { + math: "\\lesdoto" + }, + "⪂": { + math: "\\gesdoto" + }, + "⪃": { + math: "\\lesdotor" + }, + "⪄": { + math: "\\gesdotol" + }, + "⪅": { + math: "\\lessapprox" + }, + "⪆": { + math: "\\gtrapprox" + }, + "⪇": { + math: "\\lneq" + }, + "⪈": { + math: "\\gneq" + }, + "⪉": { + math: "\\lnapprox" + }, + "⪊": { + math: "\\gnapprox" + }, + "⪋": { + math: "\\lesseqqgtr" + }, + "⪌": { + math: "\\gtreqqless" + }, + "⪍": { + math: "\\lsime" + }, + "⪎": { + math: "\\gsime" + }, + "⪏": { + math: "\\lsimg" + }, + "⪐": { + math: "\\gsiml" + }, + "⪑": { + math: "\\lgE" + }, + "⪒": { + math: "\\glE" + }, + "⪓": { + math: "\\lesges" + }, + "⪔": { + math: "\\gesles" + }, + "⪕": { + math: "\\eqslantless" + }, + "⪖": { + math: "\\eqslantgtr" + }, + "⪗": { + math: "\\elsdot" + }, + "⪘": { + math: "\\egsdot" + }, + "⪙": { + math: "\\eqqless" + }, + "⪚": { + math: "\\eqqgtr" + }, + "⪛": { + math: "\\eqqslantless" + }, + "⪜": { + math: "\\eqqslantgtr" + }, + "⪝": { + math: "\\Pisymbol{ppi020}{117}" + }, + "⪞": { + math: "\\Pisymbol{ppi020}{105}" + }, + "⪟": { + math: "\\simlE" + }, + "⪠": { + math: "\\simgE" + }, + "⪡": { + math: "\\NestedLessLess" + }, + "⪡̸": { + math: "\\NotNestedLessLess" + }, + "⪢": { + math: "\\NestedGreaterGreater" + }, + "⪢̸": { + math: "\\NotNestedGreaterGreater" + }, + "⪣": { + math: "\\partialmeetcontraction" + }, + "⪤": { + math: "\\glj" + }, + "⪥": { + math: "\\gla" + }, + "⪦": { + math: "\\leftslice" + }, + "⪧": { + math: "\\rightslice" + }, + "⪨": { + math: "\\lescc" + }, + "⪩": { + math: "\\gescc" + }, + "⪪": { + math: "\\smt" + }, + "⪫": { + math: "\\lat" + }, + "⪬": { + math: "\\smte" + }, + "⪭": { + math: "\\late" + }, + "⪮": { + math: "\\bumpeqq" + }, + "⪯": { + math: "\\preceq" + }, + "⪯̸": { + math: "\\not\\preceq" + }, + "⪰": { + math: "\\succeq" + }, + "⪰̸": { + math: "\\not\\succeq" + }, + "⪱": { + math: "\\precneq" + }, + "⪲": { + math: "\\succneq" + }, + "⪳": { + math: "\\preceqq" + }, + "⪴": { + math: "\\succeqq" + }, + "⪵": { + math: "\\precneqq" + }, + "⪶": { + math: "\\succneqq" + }, + "⪷": { + math: "\\precapprox" + }, + "⪸": { + math: "\\succapprox" + }, + "⪹": { + math: "\\precnapprox" + }, + "⪺": { + math: "\\succnapprox" + }, + "⪻": { + math: "\\llcurly" + }, + "⪼": { + math: "\\ggcurly" + }, + "⪽": { + math: "\\subsetdot" + }, + "⪾": { + math: "\\supsetdot" + }, + "⪿": { + math: "\\subsetplus" + }, + "⫀": { + math: "\\supsetplus" + }, + "⫁": { + math: "\\submult" + }, + "⫂": { + math: "\\supmult" + }, + "⫃": { + math: "\\subedot" + }, + "⫄": { + math: "\\supedot" + }, + "⫅": { + math: "\\subseteqq" + }, + "⫅̸": { + math: "\\nsubseteqq" + }, + "⫆": { + math: "\\supseteqq" + }, + "⫆̸": { + math: "\\nsupseteqq" + }, + "⫇": { + math: "\\subsim" + }, + "⫈": { + math: "\\supsim" + }, + "⫉": { + math: "\\subsetapprox" + }, + "⫊": { + math: "\\supsetapprox" + }, + "⫋": { + math: "\\subsetneqq" + }, + "⫌": { + math: "\\supsetneqq" + }, + "⫍": { + math: "\\lsqhook" + }, + "⫎": { + math: "\\rsqhook" + }, + "⫏": { + math: "\\csub" + }, + "⫐": { + math: "\\csup" + }, + "⫑": { + math: "\\csube" + }, + "⫒": { + math: "\\csupe" + }, + "⫓": { + math: "\\subsup" + }, + "⫔": { + math: "\\supsub" + }, + "⫕": { + math: "\\subsub" + }, + "⫖": { + math: "\\supsup" + }, + "⫗": { + math: "\\suphsub" + }, + "⫘": { + math: "\\supdsub" + }, + "⫙": { + math: "\\forkv" + }, + "⫚": { + math: "\\topfork" + }, + "⫛": { + math: "\\mlcp" + }, + "⫝̸": { + math: "\\forks" + }, + "⫝": { + math: "\\forksnot" + }, + "⫝̸": { + math: "\\forks" + }, + "⫞": { + math: "\\shortlefttack" + }, + "⫟": { + math: "\\shortdowntack" + }, + "⫠": { + math: "\\shortuptack" + }, + "⫡": { + math: "\\perps" + }, + "⫢": { + math: "\\vDdash" + }, + "⫣": { + math: "\\dashV" + }, + "⫤": { + math: "\\Dashv" + }, + "⫥": { + math: "\\DashV" + }, + "⫦": { + math: "\\varVdash" + }, + "⫧": { + math: "\\Barv" + }, + "⫨": { + math: "\\vBar" + }, + "⫩": { + math: "\\vBarv" + }, + "⫪": { + math: "\\Top" + }, + "⫬": { + math: "\\Not" + }, + "⫭": { + math: "\\bNot" + }, + "⫮": { + math: "\\revnmid" + }, + "⫯": { + math: "\\cirmid" + }, + "⫰": { + math: "\\midcir" + }, + "⫱": { + math: "\\topcir" + }, + "⫲": { + math: "\\nhpar" + }, + "⫳": { + math: "\\parsim" + }, + "⫴": { + math: "\\interleave" + }, + "⫵": { + math: "\\nhVvert" + }, + "⫶": { + math: "\\Elztdcol" + }, + "⫷": { + math: "\\lllnest" + }, + "⫸": { + math: "\\gggnest" + }, + "⫹": { + math: "\\leqqslant" + }, + "⫺": { + math: "\\geqqslant" + }, + "⫻": { + math: "\\trslash" + }, + "⫼": { + math: "\\biginterleave" + }, + "⫽": { + math: "{{/}\\!\\!{/}}" + }, + "⫽⃥": { + math: "{\\rlap{\\textbackslash}{{/}\\!\\!{/}}}" + }, + "⫾": { + math: "\\talloblong" + }, + "⫿": { + math: "\\bigtalloblong" + }, + "⬒": { + math: "\\squaretopblack" + }, + "⬓": { + math: "\\squarebotblack" + }, + "⬔": { + math: "\\squareurblack" + }, + "⬕": { + math: "\\squarellblack" + }, + "⬖": { + math: "\\diamondleftblack" + }, + "⬗": { + math: "\\diamondrightblack" + }, + "⬘": { + math: "\\diamondtopblack" + }, + "⬙": { + math: "\\diamondbotblack" + }, + "⬚": { + math: "\\dottedsquare" + }, + "⬛": { + math: "\\blacksquare" + }, + "⬜": { + math: "\\square" + }, + "⬝": { + math: "\\vysmblksquare" + }, + "⬞": { + math: "\\vysmwhtsquare" + }, + "⬟": { + math: "\\pentagonblack" + }, + "⬠": { + math: "\\pentagon" + }, + "⬡": { + math: "\\varhexagon" + }, + "⬢": { + math: "\\varhexagonblack" + }, + "⬣": { + math: "\\hexagonblack" + }, + "⬤": { + math: "\\lgblkcircle" + }, + "⬥": { + math: "\\mdblkdiamond" + }, + "⬦": { + math: "\\mdwhtdiamond" + }, + "⬧": { + math: "\\mdblklozenge" + }, + "⬨": { + math: "\\mdwhtlozenge" + }, + "⬩": { + math: "\\smblkdiamond" + }, + "⬪": { + math: "\\smblklozenge" + }, + "⬫": { + math: "\\smwhtlozenge" + }, + "⬬": { + math: "\\blkhorzoval" + }, + "⬭": { + math: "\\whthorzoval" + }, + "⬮": { + math: "\\blkvertoval" + }, + "⬯": { + math: "\\whtvertoval" + }, + "⬰": { + math: "\\circleonleftarrow" + }, + "⬱": { + math: "\\leftthreearrows" + }, + "⬲": { + math: "\\leftarrowonoplus" + }, + "⬳": { + math: "\\longleftsquigarrow" + }, + "⬴": { + math: "\\nvtwoheadleftarrow" + }, + "⬵": { + math: "\\nVtwoheadleftarrow" + }, + "⬶": { + math: "\\twoheadmapsfrom" + }, + "⬷": { + math: "\\twoheadleftdbkarrow" + }, + "⬸": { + math: "\\leftdotarrow" + }, + "⬹": { + math: "\\nvleftarrowtail" + }, + "⬺": { + math: "\\nVleftarrowtail" + }, + "⬻": { + math: "\\twoheadleftarrowtail" + }, + "⬼": { + math: "\\nvtwoheadleftarrowtail" + }, + "⬽": { + math: "\\nVtwoheadleftarrowtail" + }, + "⬾": { + math: "\\leftarrowx" + }, + "⬿": { + math: "\\leftcurvedarrow" + }, + "⭀": { + math: "\\equalleftarrow" + }, + "⭁": { + math: "\\bsimilarleftarrow" + }, + "⭂": { + math: "\\leftarrowbackapprox" + }, + "⭃": { + math: "\\rightarrowgtr" + }, + "⭄": { + math: "\\rightarrowsupset" + }, + "⭅": { + math: "\\LLeftarrow" + }, + "⭆": { + math: "\\RRightarrow" + }, + "⭇": { + math: "\\bsimilarrightarrow" + }, + "⭈": { + math: "\\rightarrowbackapprox" + }, + "⭉": { + math: "\\similarleftarrow" + }, + "⭊": { + math: "\\leftarrowapprox" + }, + "⭋": { + math: "\\leftarrowbsimilar" + }, + "⭌": { + math: "\\rightarrowbsimilar" + }, + "⭐": { + math: "\\medwhitestar" + }, + "⭑": { + math: "\\medblackstar" + }, + "⭒": { + math: "\\smwhitestar" + }, + "⭓": { + math: "\\rightpentagonblack" + }, + "⭔": { + math: "\\rightpentagon" + }, + "〈": { + math: "\\langle" + }, + "〉": { + math: "\\rangle" + }, + "〒": { + math: "\\postalmark" + }, + "〔": { + math: "\\lbrbrak" + }, + "〕": { + math: "\\rbrbrak" + }, + "〚": { + math: "\\openbracketleft" + }, + "〛": { + math: "\\openbracketright" + }, + "〰": { + math: "\\hzigzag" + }, + "ff": { + text: "ff" + }, + "fi": { + text: "fi" + }, + "fl": { + text: "fl" + }, + "ffi": { + text: "ffi" + }, + "ffl": { + text: "ffl" + }, + "ſt": { + text: "st" + }, + "st": { + text: "st" + }, + "�": { + text: "\\dbend", + commandspacer: true + }, + "𝐀": { + math: "\\mathbf{A}" + }, + "𝐁": { + math: "\\mathbf{B}" + }, + "𝐂": { + math: "\\mathbf{C}" + }, + "𝐃": { + math: "\\mathbf{D}" + }, + "𝐄": { + math: "\\mathbf{E}" + }, + "𝐅": { + math: "\\mathbf{F}" + }, + "𝐆": { + math: "\\mathbf{G}" + }, + "𝐇": { + math: "\\mathbf{H}" + }, + "𝐈": { + math: "\\mathbf{I}" + }, + "𝐉": { + math: "\\mathbf{J}" + }, + "𝐊": { + math: "\\mathbf{K}" + }, + "𝐋": { + math: "\\mathbf{L}" + }, + "𝐌": { + math: "\\mathbf{M}" + }, + "𝐍": { + math: "\\mathbf{N}" + }, + "𝐎": { + math: "\\mathbf{O}" + }, + "𝐏": { + math: "\\mathbf{P}" + }, + "𝐐": { + math: "\\mathbf{Q}" + }, + "𝐑": { + math: "\\mathbf{R}" + }, + "𝐒": { + math: "\\mathbf{S}" + }, + "𝐓": { + math: "\\mathbf{T}" + }, + "𝐔": { + math: "\\mathbf{U}" + }, + "𝐕": { + math: "\\mathbf{V}" + }, + "𝐖": { + math: "\\mathbf{W}" + }, + "𝐗": { + math: "\\mathbf{X}" + }, + "𝐘": { + math: "\\mathbf{Y}" + }, + "𝐙": { + math: "\\mathbf{Z}" + }, + "𝐚": { + math: "\\mathbf{a}" + }, + "𝐛": { + math: "\\mathbf{b}" + }, + "𝐜": { + math: "\\mathbf{c}" + }, + "𝐝": { + math: "\\mathbf{d}" + }, + "𝐞": { + math: "\\mathbf{e}" + }, + "𝐟": { + math: "\\mathbf{f}" + }, + "𝐠": { + math: "\\mathbf{g}" + }, + "𝐡": { + math: "\\mathbf{h}" + }, + "𝐢": { + math: "\\mathbf{i}" + }, + "𝐣": { + math: "\\mathbf{j}" + }, + "𝐤": { + math: "\\mathbf{k}" + }, + "𝐥": { + math: "\\mathbf{l}" + }, + "𝐦": { + math: "\\mathbf{m}" + }, + "𝐧": { + math: "\\mathbf{n}" + }, + "𝐨": { + math: "\\mathbf{o}" + }, + "𝐩": { + math: "\\mathbf{p}" + }, + "𝐪": { + math: "\\mathbf{q}" + }, + "𝐫": { + math: "\\mathbf{r}" + }, + "𝐬": { + math: "\\mathbf{s}" + }, + "𝐭": { + math: "\\mathbf{t}" + }, + "𝐮": { + math: "\\mathbf{u}" + }, + "𝐯": { + math: "\\mathbf{v}" + }, + "𝐰": { + math: "\\mathbf{w}" + }, + "𝐱": { + math: "\\mathbf{x}" + }, + "𝐲": { + math: "\\mathbf{y}" + }, + "𝐳": { + math: "\\mathbf{z}" + }, + "𝐴": { + math: "\\mathsl{A}" + }, + "𝐵": { + math: "\\mathsl{B}" + }, + "𝐶": { + math: "\\mathsl{C}" + }, + "𝐷": { + math: "\\mathsl{D}" + }, + "𝐸": { + math: "\\mathsl{E}" + }, + "𝐹": { + math: "\\mathsl{F}" + }, + "𝐺": { + math: "\\mathsl{G}" + }, + "𝐻": { + math: "\\mathsl{H}" + }, + "𝐼": { + math: "\\mathsl{I}" + }, + "𝐽": { + math: "\\mathsl{J}" + }, + "𝐾": { + math: "\\mathsl{K}" + }, + "𝐿": { + math: "\\mathsl{L}" + }, + "𝑀": { + math: "\\mathsl{M}" + }, + "𝑁": { + math: "\\mathsl{N}" + }, + "𝑂": { + math: "\\mathsl{O}" + }, + "𝑃": { + math: "\\mathsl{P}" + }, + "𝑄": { + math: "\\mathsl{Q}" + }, + "𝑅": { + math: "\\mathsl{R}" + }, + "𝑆": { + math: "\\mathsl{S}" + }, + "𝑇": { + math: "\\mathsl{T}" + }, + "𝑈": { + math: "\\mathsl{U}" + }, + "𝑉": { + math: "\\mathsl{V}" + }, + "𝑊": { + math: "\\mathsl{W}" + }, + "𝑋": { + math: "\\mathsl{X}" + }, + "𝑌": { + math: "\\mathsl{Y}" + }, + "𝑍": { + math: "\\mathsl{Z}" + }, + "𝑎": { + math: "\\mathsl{a}" + }, + "𝑏": { + math: "\\mathsl{b}" + }, + "𝑐": { + math: "\\mathsl{c}" + }, + "𝑑": { + math: "\\mathsl{d}" + }, + "𝑒": { + math: "\\mathsl{e}" + }, + "𝑓": { + math: "\\mathsl{f}" + }, + "𝑔": { + math: "\\mathsl{g}" + }, + "𝑖": { + math: "\\mathsl{i}" + }, + "𝑗": { + math: "\\mathsl{j}" + }, + "𝑘": { + math: "\\mathsl{k}" + }, + "𝑙": { + math: "\\mathsl{l}" + }, + "𝑚": { + math: "\\mathsl{m}" + }, + "𝑛": { + math: "\\mathsl{n}" + }, + "𝑜": { + math: "\\mathsl{o}" + }, + "𝑝": { + math: "\\mathsl{p}" + }, + "𝑞": { + math: "\\mathsl{q}" + }, + "𝑟": { + math: "\\mathsl{r}" + }, + "𝑠": { + math: "\\mathsl{s}" + }, + "𝑡": { + math: "\\mathsl{t}" + }, + "𝑢": { + math: "\\mathsl{u}" + }, + "𝑣": { + math: "\\mathsl{v}" + }, + "𝑤": { + math: "\\mathsl{w}" + }, + "𝑥": { + math: "\\mathsl{x}" + }, + "𝑦": { + math: "\\mathsl{y}" + }, + "𝑧": { + math: "\\mathsl{z}" + }, + "𝑨": { + math: "\\mathbit{A}" + }, + "𝑩": { + math: "\\mathbit{B}" + }, + "𝑪": { + math: "\\mathbit{C}" + }, + "𝑫": { + math: "\\mathbit{D}" + }, + "𝑬": { + math: "\\mathbit{E}" + }, + "𝑭": { + math: "\\mathbit{F}" + }, + "𝑮": { + math: "\\mathbit{G}" + }, + "𝑯": { + math: "\\mathbit{H}" + }, + "𝑰": { + math: "\\mathbit{I}" + }, + "𝑱": { + math: "\\mathbit{J}" + }, + "𝑲": { + math: "\\mathbit{K}" + }, + "𝑳": { + math: "\\mathbit{L}" + }, + "𝑴": { + math: "\\mathbit{M}" + }, + "𝑵": { + math: "\\mathbit{N}" + }, + "𝑶": { + math: "\\mathbit{O}" + }, + "𝑷": { + math: "\\mathbit{P}" + }, + "𝑸": { + math: "\\mathbit{Q}" + }, + "𝑹": { + math: "\\mathbit{R}" + }, + "𝑺": { + math: "\\mathbit{S}" + }, + "𝑻": { + math: "\\mathbit{T}" + }, + "𝑼": { + math: "\\mathbit{U}" + }, + "𝑽": { + math: "\\mathbit{V}" + }, + "𝑾": { + math: "\\mathbit{W}" + }, + "𝑿": { + math: "\\mathbit{X}" + }, + "𝒀": { + math: "\\mathbit{Y}" + }, + "𝒁": { + math: "\\mathbit{Z}" + }, + "𝒂": { + math: "\\mathbit{a}" + }, + "𝒃": { + math: "\\mathbit{b}" + }, + "𝒄": { + math: "\\mathbit{c}" + }, + "𝒅": { + math: "\\mathbit{d}" + }, + "𝒆": { + math: "\\mathbit{e}" + }, + "𝒇": { + math: "\\mathbit{f}" + }, + "𝒈": { + math: "\\mathbit{g}" + }, + "𝒉": { + math: "\\mathbit{h}" + }, + "𝒊": { + math: "\\mathbit{i}" + }, + "𝒋": { + math: "\\mathbit{j}" + }, + "𝒌": { + math: "\\mathbit{k}" + }, + "𝒍": { + math: "\\mathbit{l}" + }, + "𝒎": { + math: "\\mathbit{m}" + }, + "𝒏": { + math: "\\mathbit{n}" + }, + "𝒐": { + math: "\\mathbit{o}" + }, + "𝒑": { + math: "\\mathbit{p}" + }, + "𝒒": { + math: "\\mathbit{q}" + }, + "𝒓": { + math: "\\mathbit{r}" + }, + "𝒔": { + math: "\\mathbit{s}" + }, + "𝒕": { + math: "\\mathbit{t}" + }, + "𝒖": { + math: "\\mathbit{u}" + }, + "𝒗": { + math: "\\mathbit{v}" + }, + "𝒘": { + math: "\\mathbit{w}" + }, + "𝒙": { + math: "\\mathbit{x}" + }, + "𝒚": { + math: "\\mathbit{y}" + }, + "𝒛": { + math: "\\mathbit{z}" + }, + "𝒜": { + math: "\\mathscr{A}" + }, + "𝒞": { + math: "\\mathscr{C}" + }, + "𝒟": { + math: "\\mathscr{D}" + }, + "𝒢": { + math: "\\mathscr{G}" + }, + "𝒥": { + math: "\\mathscr{J}" + }, + "𝒦": { + math: "\\mathscr{K}" + }, + "𝒩": { + math: "\\mathscr{N}" + }, + "𝒪": { + math: "\\mathscr{O}" + }, + "𝒫": { + math: "\\mathscr{P}" + }, + "𝒬": { + math: "\\mathscr{Q}" + }, + "𝒮": { + math: "\\mathscr{S}" + }, + "𝒯": { + math: "\\mathscr{T}" + }, + "𝒰": { + math: "\\mathscr{U}" + }, + "𝒱": { + math: "\\mathscr{V}" + }, + "𝒲": { + math: "\\mathscr{W}" + }, + "𝒳": { + math: "\\mathscr{X}" + }, + "𝒴": { + math: "\\mathscr{Y}" + }, + "𝒵": { + math: "\\mathscr{Z}" + }, + "𝒶": { + math: "\\mathscr{a}" + }, + "𝒷": { + math: "\\mathscr{b}" + }, + "𝒸": { + math: "\\mathscr{c}" + }, + "𝒹": { + math: "\\mathscr{d}" + }, + "𝒻": { + math: "\\mathscr{f}" + }, + "𝒽": { + math: "\\mathscr{h}" + }, + "𝒾": { + math: "\\mathscr{i}" + }, + "𝒿": { + math: "\\mathscr{j}" + }, + "𝓀": { + math: "\\mathscr{k}" + }, + "𝓁": { + math: "\\mathscr{l}" + }, + "𝓂": { + math: "\\mathscr{m}" + }, + "𝓃": { + math: "\\mathscr{n}" + }, + "𝓅": { + math: "\\mathscr{p}" + }, + "𝓆": { + math: "\\mathscr{q}" + }, + "𝓇": { + math: "\\mathscr{r}" + }, + "𝓈": { + math: "\\mathscr{s}" + }, + "𝓉": { + math: "\\mathscr{t}" + }, + "𝓊": { + math: "\\mathscr{u}" + }, + "𝓋": { + math: "\\mathscr{v}" + }, + "𝓌": { + math: "\\mathscr{w}" + }, + "𝓍": { + math: "\\mathscr{x}" + }, + "𝓎": { + math: "\\mathscr{y}" + }, + "𝓏": { + math: "\\mathscr{z}" + }, + "𝓐": { + math: "\\mathmit{A}" + }, + "𝓑": { + math: "\\mathmit{B}" + }, + "𝓒": { + math: "\\mathmit{C}" + }, + "𝓓": { + math: "\\mathmit{D}" + }, + "𝓔": { + math: "\\mathmit{E}" + }, + "𝓕": { + math: "\\mathmit{F}" + }, + "𝓖": { + math: "\\mathmit{G}" + }, + "𝓗": { + math: "\\mathmit{H}" + }, + "𝓘": { + math: "\\mathmit{I}" + }, + "𝓙": { + math: "\\mathmit{J}" + }, + "𝓚": { + math: "\\mathmit{K}" + }, + "𝓛": { + math: "\\mathmit{L}" + }, + "𝓜": { + math: "\\mathmit{M}" + }, + "𝓝": { + math: "\\mathmit{N}" + }, + "𝓞": { + math: "\\mathmit{O}" + }, + "𝓟": { + math: "\\mathmit{P}" + }, + "𝓠": { + math: "\\mathmit{Q}" + }, + "𝓡": { + math: "\\mathmit{R}" + }, + "𝓢": { + math: "\\mathmit{S}" + }, + "𝓣": { + math: "\\mathmit{T}" + }, + "𝓤": { + math: "\\mathmit{U}" + }, + "𝓥": { + math: "\\mathmit{V}" + }, + "𝓦": { + math: "\\mathmit{W}" + }, + "𝓧": { + math: "\\mathmit{X}" + }, + "𝓨": { + math: "\\mathmit{Y}" + }, + "𝓩": { + math: "\\mathmit{Z}" + }, + "𝓪": { + math: "\\mathmit{a}" + }, + "𝓫": { + math: "\\mathmit{b}" + }, + "𝓬": { + math: "\\mathmit{c}" + }, + "𝓭": { + math: "\\mathmit{d}" + }, + "𝓮": { + math: "\\mathmit{e}" + }, + "𝓯": { + math: "\\mathmit{f}" + }, + "𝓰": { + math: "\\mathmit{g}" + }, + "𝓱": { + math: "\\mathmit{h}" + }, + "𝓲": { + math: "\\mathmit{i}" + }, + "𝓳": { + math: "\\mathmit{j}" + }, + "𝓴": { + math: "\\mathmit{k}" + }, + "𝓵": { + math: "\\mathmit{l}" + }, + "𝓶": { + math: "\\mathmit{m}" + }, + "𝓷": { + math: "\\mathmit{n}" + }, + "𝓸": { + math: "\\mathmit{o}" + }, + "𝓹": { + math: "\\mathmit{p}" + }, + "𝓺": { + math: "\\mathmit{q}" + }, + "𝓻": { + math: "\\mathmit{r}" + }, + "𝓼": { + math: "\\mathmit{s}" + }, + "𝓽": { + math: "\\mathmit{t}" + }, + "𝓾": { + math: "\\mathmit{u}" + }, + "𝓿": { + math: "\\mathmit{v}" + }, + "𝔀": { + math: "\\mathmit{w}" + }, + "𝔁": { + math: "\\mathmit{x}" + }, + "𝔂": { + math: "\\mathmit{y}" + }, + "𝔃": { + math: "\\mathmit{z}" + }, + "𝔄": { + math: "\\mathfrak{A}" + }, + "𝔅": { + math: "\\mathfrak{B}" + }, + "𝔇": { + math: "\\mathfrak{D}" + }, + "𝔈": { + math: "\\mathfrak{E}" + }, + "𝔉": { + math: "\\mathfrak{F}" + }, + "𝔊": { + math: "\\mathfrak{G}" + }, + "𝔍": { + math: "\\mathfrak{J}" + }, + "𝔎": { + math: "\\mathfrak{K}" + }, + "𝔏": { + math: "\\mathfrak{L}" + }, + "𝔐": { + math: "\\mathfrak{M}" + }, + "𝔑": { + math: "\\mathfrak{N}" + }, + "𝔒": { + math: "\\mathfrak{O}" + }, + "𝔓": { + math: "\\mathfrak{P}" + }, + "𝔔": { + math: "\\mathfrak{Q}" + }, + "𝔖": { + math: "\\mathfrak{S}" + }, + "𝔗": { + math: "\\mathfrak{T}" + }, + "𝔘": { + math: "\\mathfrak{U}" + }, + "𝔙": { + math: "\\mathfrak{V}" + }, + "𝔚": { + math: "\\mathfrak{W}" + }, + "𝔛": { + math: "\\mathfrak{X}" + }, + "𝔜": { + math: "\\mathfrak{Y}" + }, + "𝔞": { + math: "\\mathfrak{a}" + }, + "𝔟": { + math: "\\mathfrak{b}" + }, + "𝔠": { + math: "\\mathfrak{c}" + }, + "𝔡": { + math: "\\mathfrak{d}" + }, + "𝔢": { + math: "\\mathfrak{e}" + }, + "𝔣": { + math: "\\mathfrak{f}" + }, + "𝔤": { + math: "\\mathfrak{g}" + }, + "𝔥": { + math: "\\mathfrak{h}" + }, + "𝔦": { + math: "\\mathfrak{i}" + }, + "𝔧": { + math: "\\mathfrak{j}" + }, + "𝔨": { + math: "\\mathfrak{k}" + }, + "𝔩": { + math: "\\mathfrak{l}" + }, + "𝔪": { + math: "\\mathfrak{m}" + }, + "𝔫": { + math: "\\mathfrak{n}" + }, + "𝔬": { + math: "\\mathfrak{o}" + }, + "𝔭": { + math: "\\mathfrak{p}" + }, + "𝔮": { + math: "\\mathfrak{q}" + }, + "𝔯": { + math: "\\mathfrak{r}" + }, + "𝔰": { + math: "\\mathfrak{s}" + }, + "𝔱": { + math: "\\mathfrak{t}" + }, + "𝔲": { + math: "\\mathfrak{u}" + }, + "𝔳": { + math: "\\mathfrak{v}" + }, + "𝔴": { + math: "\\mathfrak{w}" + }, + "𝔵": { + math: "\\mathfrak{x}" + }, + "𝔶": { + math: "\\mathfrak{y}" + }, + "𝔷": { + math: "\\mathfrak{z}" + }, + "𝔸": { + math: "\\mathbb{A}" + }, + "𝔹": { + math: "\\mathbb{B}" + }, + "𝔻": { + math: "\\mathbb{D}" + }, + "𝔼": { + math: "\\mathbb{E}" + }, + "𝔽": { + math: "\\mathbb{F}" + }, + "𝔾": { + math: "\\mathbb{G}" + }, + "𝕀": { + math: "\\mathbb{I}" + }, + "𝕁": { + math: "\\mathbb{J}" + }, + "𝕂": { + math: "\\mathbb{K}" + }, + "𝕃": { + math: "\\mathbb{L}" + }, + "𝕄": { + math: "\\mathbb{M}" + }, + "𝕆": { + math: "\\mathbb{O}" + }, + "𝕊": { + math: "\\mathbb{S}" + }, + "𝕋": { + math: "\\mathbb{T}" + }, + "𝕌": { + math: "\\mathbb{U}" + }, + "𝕍": { + math: "\\mathbb{V}" + }, + "𝕎": { + math: "\\mathbb{W}" + }, + "𝕏": { + math: "\\mathbb{X}" + }, + "𝕐": { + math: "\\mathbb{Y}" + }, + "𝕒": { + math: "\\mathbb{a}" + }, + "𝕓": { + math: "\\mathbb{b}" + }, + "𝕔": { + math: "\\mathbb{c}" + }, + "𝕕": { + math: "\\mathbb{d}" + }, + "𝕖": { + math: "\\mathbb{e}" + }, + "𝕗": { + math: "\\mathbb{f}" + }, + "𝕘": { + math: "\\mathbb{g}" + }, + "𝕙": { + math: "\\mathbb{h}" + }, + "𝕚": { + math: "\\mathbb{i}" + }, + "𝕛": { + math: "\\mathbb{j}" + }, + "𝕜": { + math: "\\mathbb{k}" + }, + "𝕝": { + math: "\\mathbb{l}" + }, + "𝕞": { + math: "\\mathbb{m}" + }, + "𝕟": { + math: "\\mathbb{n}" + }, + "𝕠": { + math: "\\mathbb{o}" + }, + "𝕡": { + math: "\\mathbb{p}" + }, + "𝕢": { + math: "\\mathbb{q}" + }, + "𝕣": { + math: "\\mathbb{r}" + }, + "𝕤": { + math: "\\mathbb{s}" + }, + "𝕥": { + math: "\\mathbb{t}" + }, + "𝕦": { + math: "\\mathbb{u}" + }, + "𝕧": { + math: "\\mathbb{v}" + }, + "𝕨": { + math: "\\mathbb{w}" + }, + "𝕩": { + math: "\\mathbb{x}" + }, + "𝕪": { + math: "\\mathbb{y}" + }, + "𝕫": { + math: "\\mathbb{z}" + }, + "𝕬": { + math: "\\mathslbb{A}" + }, + "𝕭": { + math: "\\mathslbb{B}" + }, + "𝕮": { + math: "\\mathslbb{C}" + }, + "𝕯": { + math: "\\mathslbb{D}" + }, + "𝕰": { + math: "\\mathslbb{E}" + }, + "𝕱": { + math: "\\mathslbb{F}" + }, + "𝕲": { + math: "\\mathslbb{G}" + }, + "𝕳": { + math: "\\mathslbb{H}" + }, + "𝕴": { + math: "\\mathslbb{I}" + }, + "𝕵": { + math: "\\mathslbb{J}" + }, + "𝕶": { + math: "\\mathslbb{K}" + }, + "𝕷": { + math: "\\mathslbb{L}" + }, + "𝕸": { + math: "\\mathslbb{M}" + }, + "𝕹": { + math: "\\mathslbb{N}" + }, + "𝕺": { + math: "\\mathslbb{O}" + }, + "𝕻": { + math: "\\mathslbb{P}" + }, + "𝕼": { + math: "\\mathslbb{Q}" + }, + "𝕽": { + math: "\\mathslbb{R}" + }, + "𝕾": { + math: "\\mathslbb{S}" + }, + "𝕿": { + math: "\\mathslbb{T}" + }, + "𝖀": { + math: "\\mathslbb{U}" + }, + "𝖁": { + math: "\\mathslbb{V}" + }, + "𝖂": { + math: "\\mathslbb{W}" + }, + "𝖃": { + math: "\\mathslbb{X}" + }, + "𝖄": { + math: "\\mathslbb{Y}" + }, + "𝖅": { + math: "\\mathslbb{Z}" + }, + "𝖆": { + math: "\\mathslbb{a}" + }, + "𝖇": { + math: "\\mathslbb{b}" + }, + "𝖈": { + math: "\\mathslbb{c}" + }, + "𝖉": { + math: "\\mathslbb{d}" + }, + "𝖊": { + math: "\\mathslbb{e}" + }, + "𝖋": { + math: "\\mathslbb{f}" + }, + "𝖌": { + math: "\\mathslbb{g}" + }, + "𝖍": { + math: "\\mathslbb{h}" + }, + "𝖎": { + math: "\\mathslbb{i}" + }, + "𝖏": { + math: "\\mathslbb{j}" + }, + "𝖐": { + math: "\\mathslbb{k}" + }, + "𝖑": { + math: "\\mathslbb{l}" + }, + "𝖒": { + math: "\\mathslbb{m}" + }, + "𝖓": { + math: "\\mathslbb{n}" + }, + "𝖔": { + math: "\\mathslbb{o}" + }, + "𝖕": { + math: "\\mathslbb{p}" + }, + "𝖖": { + math: "\\mathslbb{q}" + }, + "𝖗": { + math: "\\mathslbb{r}" + }, + "𝖘": { + math: "\\mathslbb{s}" + }, + "𝖙": { + math: "\\mathslbb{t}" + }, + "𝖚": { + math: "\\mathslbb{u}" + }, + "𝖛": { + math: "\\mathslbb{v}" + }, + "𝖜": { + math: "\\mathslbb{w}" + }, + "𝖝": { + math: "\\mathslbb{x}" + }, + "𝖞": { + math: "\\mathslbb{y}" + }, + "𝖟": { + math: "\\mathslbb{z}" + }, + "𝖠": { + math: "\\mathsf{A}" + }, + "𝖡": { + math: "\\mathsf{B}" + }, + "𝖢": { + math: "\\mathsf{C}" + }, + "𝖣": { + math: "\\mathsf{D}" + }, + "𝖤": { + math: "\\mathsf{E}" + }, + "𝖥": { + math: "\\mathsf{F}" + }, + "𝖦": { + math: "\\mathsf{G}" + }, + "𝖧": { + math: "\\mathsf{H}" + }, + "𝖨": { + math: "\\mathsf{I}" + }, + "𝖩": { + math: "\\mathsf{J}" + }, + "𝖪": { + math: "\\mathsf{K}" + }, + "𝖫": { + math: "\\mathsf{L}" + }, + "𝖬": { + math: "\\mathsf{M}" + }, + "𝖭": { + math: "\\mathsf{N}" + }, + "𝖮": { + math: "\\mathsf{O}" + }, + "𝖯": { + math: "\\mathsf{P}" + }, + "𝖰": { + math: "\\mathsf{Q}" + }, + "𝖱": { + math: "\\mathsf{R}" + }, + "𝖲": { + math: "\\mathsf{S}" + }, + "𝖳": { + math: "\\mathsf{T}" + }, + "𝖴": { + math: "\\mathsf{U}" + }, + "𝖵": { + math: "\\mathsf{V}" + }, + "𝖶": { + math: "\\mathsf{W}" + }, + "𝖷": { + math: "\\mathsf{X}" + }, + "𝖸": { + math: "\\mathsf{Y}" + }, + "𝖹": { + math: "\\mathsf{Z}" + }, + "𝖺": { + math: "\\mathsf{a}" + }, + "𝖻": { + math: "\\mathsf{b}" + }, + "𝖼": { + math: "\\mathsf{c}" + }, + "𝖽": { + math: "\\mathsf{d}" + }, + "𝖾": { + math: "\\mathsf{e}" + }, + "𝖿": { + math: "\\mathsf{f}" + }, + "𝗀": { + math: "\\mathsf{g}" + }, + "𝗁": { + math: "\\mathsf{h}" + }, + "𝗂": { + math: "\\mathsf{i}" + }, + "𝗃": { + math: "\\mathsf{j}" + }, + "𝗄": { + math: "\\mathsf{k}" + }, + "𝗅": { + math: "\\mathsf{l}" + }, + "𝗆": { + math: "\\mathsf{m}" + }, + "𝗇": { + math: "\\mathsf{n}" + }, + "𝗈": { + math: "\\mathsf{o}" + }, + "𝗉": { + math: "\\mathsf{p}" + }, + "𝗊": { + math: "\\mathsf{q}" + }, + "𝗋": { + math: "\\mathsf{r}" + }, + "𝗌": { + math: "\\mathsf{s}" + }, + "𝗍": { + math: "\\mathsf{t}" + }, + "𝗎": { + math: "\\mathsf{u}" + }, + "𝗏": { + math: "\\mathsf{v}" + }, + "𝗐": { + math: "\\mathsf{w}" + }, + "𝗑": { + math: "\\mathsf{x}" + }, + "𝗒": { + math: "\\mathsf{y}" + }, + "𝗓": { + math: "\\mathsf{z}" + }, + "𝗔": { + math: "\\mathsfbf{A}" + }, + "𝗕": { + math: "\\mathsfbf{B}" + }, + "𝗖": { + math: "\\mathsfbf{C}" + }, + "𝗗": { + math: "\\mathsfbf{D}" + }, + "𝗘": { + math: "\\mathsfbf{E}" + }, + "𝗙": { + math: "\\mathsfbf{F}" + }, + "𝗚": { + math: "\\mathsfbf{G}" + }, + "𝗛": { + math: "\\mathsfbf{H}" + }, + "𝗜": { + math: "\\mathsfbf{I}" + }, + "𝗝": { + math: "\\mathsfbf{J}" + }, + "𝗞": { + math: "\\mathsfbf{K}" + }, + "𝗟": { + math: "\\mathsfbf{L}" + }, + "𝗠": { + math: "\\mathsfbf{M}" + }, + "𝗡": { + math: "\\mathsfbf{N}" + }, + "𝗢": { + math: "\\mathsfbf{O}" + }, + "𝗣": { + math: "\\mathsfbf{P}" + }, + "𝗤": { + math: "\\mathsfbf{Q}" + }, + "𝗥": { + math: "\\mathsfbf{R}" + }, + "𝗦": { + math: "\\mathsfbf{S}" + }, + "𝗧": { + math: "\\mathsfbf{T}" + }, + "𝗨": { + math: "\\mathsfbf{U}" + }, + "𝗩": { + math: "\\mathsfbf{V}" + }, + "𝗪": { + math: "\\mathsfbf{W}" + }, + "𝗫": { + math: "\\mathsfbf{X}" + }, + "𝗬": { + math: "\\mathsfbf{Y}" + }, + "𝗭": { + math: "\\mathsfbf{Z}" + }, + "𝗮": { + math: "\\mathsfbf{a}" + }, + "𝗯": { + math: "\\mathsfbf{b}" + }, + "𝗰": { + math: "\\mathsfbf{c}" + }, + "𝗱": { + math: "\\mathsfbf{d}" + }, + "𝗲": { + math: "\\mathsfbf{e}" + }, + "𝗳": { + math: "\\mathsfbf{f}" + }, + "𝗴": { + math: "\\mathsfbf{g}" + }, + "𝗵": { + math: "\\mathsfbf{h}" + }, + "𝗶": { + math: "\\mathsfbf{i}" + }, + "𝗷": { + math: "\\mathsfbf{j}" + }, + "𝗸": { + math: "\\mathsfbf{k}" + }, + "𝗹": { + math: "\\mathsfbf{l}" + }, + "𝗺": { + math: "\\mathsfbf{m}" + }, + "𝗻": { + math: "\\mathsfbf{n}" + }, + "𝗼": { + math: "\\mathsfbf{o}" + }, + "𝗽": { + math: "\\mathsfbf{p}" + }, + "𝗾": { + math: "\\mathsfbf{q}" + }, + "𝗿": { + math: "\\mathsfbf{r}" + }, + "𝘀": { + math: "\\mathsfbf{s}" + }, + "𝘁": { + math: "\\mathsfbf{t}" + }, + "𝘂": { + math: "\\mathsfbf{u}" + }, + "𝘃": { + math: "\\mathsfbf{v}" + }, + "𝘄": { + math: "\\mathsfbf{w}" + }, + "𝘅": { + math: "\\mathsfbf{x}" + }, + "𝘆": { + math: "\\mathsfbf{y}" + }, + "𝘇": { + math: "\\mathsfbf{z}" + }, + "𝘈": { + math: "\\mathsfsl{A}" + }, + "𝘉": { + math: "\\mathsfsl{B}" + }, + "𝘊": { + math: "\\mathsfsl{C}" + }, + "𝘋": { + math: "\\mathsfsl{D}" + }, + "𝘌": { + math: "\\mathsfsl{E}" + }, + "𝘍": { + math: "\\mathsfsl{F}" + }, + "𝘎": { + math: "\\mathsfsl{G}" + }, + "𝘏": { + math: "\\mathsfsl{H}" + }, + "𝘐": { + math: "\\mathsfsl{I}" + }, + "𝘑": { + math: "\\mathsfsl{J}" + }, + "𝘒": { + math: "\\mathsfsl{K}" + }, + "𝘓": { + math: "\\mathsfsl{L}" + }, + "𝘔": { + math: "\\mathsfsl{M}" + }, + "𝘕": { + math: "\\mathsfsl{N}" + }, + "𝘖": { + math: "\\mathsfsl{O}" + }, + "𝘗": { + math: "\\mathsfsl{P}" + }, + "𝘘": { + math: "\\mathsfsl{Q}" + }, + "𝘙": { + math: "\\mathsfsl{R}" + }, + "𝘚": { + math: "\\mathsfsl{S}" + }, + "𝘛": { + math: "\\mathsfsl{T}" + }, + "𝘜": { + math: "\\mathsfsl{U}" + }, + "𝘝": { + math: "\\mathsfsl{V}" + }, + "𝘞": { + math: "\\mathsfsl{W}" + }, + "𝘟": { + math: "\\mathsfsl{X}" + }, + "𝘠": { + math: "\\mathsfsl{Y}" + }, + "𝘡": { + math: "\\mathsfsl{Z}" + }, + "𝘢": { + math: "\\mathsfsl{a}" + }, + "𝘣": { + math: "\\mathsfsl{b}" + }, + "𝘤": { + math: "\\mathsfsl{c}" + }, + "𝘥": { + math: "\\mathsfsl{d}" + }, + "𝘦": { + math: "\\mathsfsl{e}" + }, + "𝘧": { + math: "\\mathsfsl{f}" + }, + "𝘨": { + math: "\\mathsfsl{g}" + }, + "𝘩": { + math: "\\mathsfsl{h}" + }, + "𝘪": { + math: "\\mathsfsl{i}" + }, + "𝘫": { + math: "\\mathsfsl{j}" + }, + "𝘬": { + math: "\\mathsfsl{k}" + }, + "𝘭": { + math: "\\mathsfsl{l}" + }, + "𝘮": { + math: "\\mathsfsl{m}" + }, + "𝘯": { + math: "\\mathsfsl{n}" + }, + "𝘰": { + math: "\\mathsfsl{o}" + }, + "𝘱": { + math: "\\mathsfsl{p}" + }, + "𝘲": { + math: "\\mathsfsl{q}" + }, + "𝘳": { + math: "\\mathsfsl{r}" + }, + "𝘴": { + math: "\\mathsfsl{s}" + }, + "𝘵": { + math: "\\mathsfsl{t}" + }, + "𝘶": { + math: "\\mathsfsl{u}" + }, + "𝘷": { + math: "\\mathsfsl{v}" + }, + "𝘸": { + math: "\\mathsfsl{w}" + }, + "𝘹": { + math: "\\mathsfsl{x}" + }, + "𝘺": { + math: "\\mathsfsl{y}" + }, + "𝘻": { + math: "\\mathsfsl{z}" + }, + "𝘼": { + math: "\\mathsfbfsl{A}" + }, + "𝘽": { + math: "\\mathsfbfsl{B}" + }, + "𝘾": { + math: "\\mathsfbfsl{C}" + }, + "𝘿": { + math: "\\mathsfbfsl{D}" + }, + "𝙀": { + math: "\\mathsfbfsl{E}" + }, + "𝙁": { + math: "\\mathsfbfsl{F}" + }, + "𝙂": { + math: "\\mathsfbfsl{G}" + }, + "𝙃": { + math: "\\mathsfbfsl{H}" + }, + "𝙄": { + math: "\\mathsfbfsl{I}" + }, + "𝙅": { + math: "\\mathsfbfsl{J}" + }, + "𝙆": { + math: "\\mathsfbfsl{K}" + }, + "𝙇": { + math: "\\mathsfbfsl{L}" + }, + "𝙈": { + math: "\\mathsfbfsl{M}" + }, + "𝙉": { + math: "\\mathsfbfsl{N}" + }, + "𝙊": { + math: "\\mathsfbfsl{O}" + }, + "𝙋": { + math: "\\mathsfbfsl{P}" + }, + "𝙌": { + math: "\\mathsfbfsl{Q}" + }, + "𝙍": { + math: "\\mathsfbfsl{R}" + }, + "𝙎": { + math: "\\mathsfbfsl{S}" + }, + "𝙏": { + math: "\\mathsfbfsl{T}" + }, + "𝙐": { + math: "\\mathsfbfsl{U}" + }, + "𝙑": { + math: "\\mathsfbfsl{V}" + }, + "𝙒": { + math: "\\mathsfbfsl{W}" + }, + "𝙓": { + math: "\\mathsfbfsl{X}" + }, + "𝙔": { + math: "\\mathsfbfsl{Y}" + }, + "𝙕": { + math: "\\mathsfbfsl{Z}" + }, + "𝙖": { + math: "\\mathsfbfsl{a}" + }, + "𝙗": { + math: "\\mathsfbfsl{b}" + }, + "𝙘": { + math: "\\mathsfbfsl{c}" + }, + "𝙙": { + math: "\\mathsfbfsl{d}" + }, + "𝙚": { + math: "\\mathsfbfsl{e}" + }, + "𝙛": { + math: "\\mathsfbfsl{f}" + }, + "𝙜": { + math: "\\mathsfbfsl{g}" + }, + "𝙝": { + math: "\\mathsfbfsl{h}" + }, + "𝙞": { + math: "\\mathsfbfsl{i}" + }, + "𝙟": { + math: "\\mathsfbfsl{j}" + }, + "𝙠": { + math: "\\mathsfbfsl{k}" + }, + "𝙡": { + math: "\\mathsfbfsl{l}" + }, + "𝙢": { + math: "\\mathsfbfsl{m}" + }, + "𝙣": { + math: "\\mathsfbfsl{n}" + }, + "𝙤": { + math: "\\mathsfbfsl{o}" + }, + "𝙥": { + math: "\\mathsfbfsl{p}" + }, + "𝙦": { + math: "\\mathsfbfsl{q}" + }, + "𝙧": { + math: "\\mathsfbfsl{r}" + }, + "𝙨": { + math: "\\mathsfbfsl{s}" + }, + "𝙩": { + math: "\\mathsfbfsl{t}" + }, + "𝙪": { + math: "\\mathsfbfsl{u}" + }, + "𝙫": { + math: "\\mathsfbfsl{v}" + }, + "𝙬": { + math: "\\mathsfbfsl{w}" + }, + "𝙭": { + math: "\\mathsfbfsl{x}" + }, + "𝙮": { + math: "\\mathsfbfsl{y}" + }, + "𝙯": { + math: "\\mathsfbfsl{z}" + }, + "𝙰": { + math: "\\mathtt{A}" + }, + "𝙱": { + math: "\\mathtt{B}" + }, + "𝙲": { + math: "\\mathtt{C}" + }, + "𝙳": { + math: "\\mathtt{D}" + }, + "𝙴": { + math: "\\mathtt{E}" + }, + "𝙵": { + math: "\\mathtt{F}" + }, + "𝙶": { + math: "\\mathtt{G}" + }, + "𝙷": { + math: "\\mathtt{H}" + }, + "𝙸": { + math: "\\mathtt{I}" + }, + "𝙹": { + math: "\\mathtt{J}" + }, + "𝙺": { + math: "\\mathtt{K}" + }, + "𝙻": { + math: "\\mathtt{L}" + }, + "𝙼": { + math: "\\mathtt{M}" + }, + "𝙽": { + math: "\\mathtt{N}" + }, + "𝙾": { + math: "\\mathtt{O}" + }, + "𝙿": { + math: "\\mathtt{P}" + }, + "𝚀": { + math: "\\mathtt{Q}" + }, + "𝚁": { + math: "\\mathtt{R}" + }, + "𝚂": { + math: "\\mathtt{S}" + }, + "𝚃": { + math: "\\mathtt{T}" + }, + "𝚄": { + math: "\\mathtt{U}" + }, + "𝚅": { + math: "\\mathtt{V}" + }, + "𝚆": { + math: "\\mathtt{W}" + }, + "𝚇": { + math: "\\mathtt{X}" + }, + "𝚈": { + math: "\\mathtt{Y}" + }, + "𝚉": { + math: "\\mathtt{Z}" + }, + "𝚊": { + math: "\\mathtt{a}" + }, + "𝚋": { + math: "\\mathtt{b}" + }, + "𝚌": { + math: "\\mathtt{c}" + }, + "𝚍": { + math: "\\mathtt{d}" + }, + "𝚎": { + math: "\\mathtt{e}" + }, + "𝚏": { + math: "\\mathtt{f}" + }, + "𝚐": { + math: "\\mathtt{g}" + }, + "𝚑": { + math: "\\mathtt{h}" + }, + "𝚒": { + math: "\\mathtt{i}" + }, + "𝚓": { + math: "\\mathtt{j}" + }, + "𝚔": { + math: "\\mathtt{k}" + }, + "𝚕": { + math: "\\mathtt{l}" + }, + "𝚖": { + math: "\\mathtt{m}" + }, + "𝚗": { + math: "\\mathtt{n}" + }, + "𝚘": { + math: "\\mathtt{o}" + }, + "𝚙": { + math: "\\mathtt{p}" + }, + "𝚚": { + math: "\\mathtt{q}" + }, + "𝚛": { + math: "\\mathtt{r}" + }, + "𝚜": { + math: "\\mathtt{s}" + }, + "𝚝": { + math: "\\mathtt{t}" + }, + "𝚞": { + math: "\\mathtt{u}" + }, + "𝚟": { + math: "\\mathtt{v}" + }, + "𝚠": { + math: "\\mathtt{w}" + }, + "𝚡": { + math: "\\mathtt{x}" + }, + "𝚢": { + math: "\\mathtt{y}" + }, + "𝚣": { + math: "\\mathtt{z}" + }, + "𝚤": { + math: "\\imath" + }, + "𝚥": { + math: "\\jmath" + }, + "𝚨": { + math: "\\mathbf{A}" + }, + "𝚩": { + math: "\\mathbf{B}" + }, + "𝚪": { + math: "\\mathbf{\\Gamma}" + }, + "𝚫": { + math: "\\mathbf{\\Delta}" + }, + "𝚬": { + math: "\\mathbf{E}" + }, + "𝚭": { + math: "\\mathbf{Z}" + }, + "𝚮": { + math: "\\mathbf{H}" + }, + "𝚯": { + math: "\\mathbf{\\Theta}" + }, + "𝚰": { + math: "\\mathbf{I}" + }, + "𝚱": { + math: "\\mathbf{K}" + }, + "𝚲": { + math: "\\mathbf{\\Lambda}" + }, + "𝚳": { + math: "M" + }, + "𝚴": { + math: "N" + }, + "𝚵": { + math: "\\mathbf{\\Xi}" + }, + "𝚶": { + math: "O" + }, + "𝚷": { + math: "\\mathbf{\\Pi}" + }, + "𝚸": { + math: "\\mathbf{P}" + }, + "𝚹": { + math: "\\mathbf{\\vartheta}" + }, + "𝚺": { + math: "\\mathbf{\\Sigma}" + }, + "𝚻": { + math: "\\mathbf{T}" + }, + "𝚼": { + math: "\\mathbf{\\Upsilon}" + }, + "𝚽": { + math: "\\mathbf{\\Phi}" + }, + "𝚾": { + math: "\\mathbf{X}" + }, + "𝚿": { + math: "\\mathbf{\\Psi}" + }, + "𝛀": { + math: "\\mathbf{\\Omega}" + }, + "𝛁": { + math: "\\mathbf{\\nabla}" + }, + "𝛂": { + math: "\\mathbf{\\alpha}" + }, + "𝛃": { + math: "\\mathbf{\\beta}" + }, + "𝛄": { + math: "\\mathbf{\\gamma}" + }, + "𝛅": { + math: "\\mathbf{\\delta}" + }, + "𝛆": { + math: "\\mathbf{\\epsilon}" + }, + "𝛇": { + math: "\\mathbf{\\zeta}" + }, + "𝛈": { + math: "\\mathbf{\\eta}" + }, + "𝛉": { + math: "\\mathbf{\\theta}" + }, + "𝛊": { + math: "\\mathbf{I}" + }, + "𝛋": { + math: "\\mathbf{K}" + }, + "𝛌": { + math: "\\mathbf{\\lambda}" + }, + "𝛍": { + math: "M" + }, + "𝛎": { + math: "N" + }, + "𝛏": { + math: "\\mathbf{\\xi}" + }, + "𝛐": { + math: "O" + }, + "𝛑": { + math: "\\mathbf{\\pi}" + }, + "𝛒": { + math: "\\mathbf{P}" + }, + "𝛓": { + math: "\\mathbf{\\varsigma}" + }, + "𝛔": { + math: "\\mathbf{\\sigma}" + }, + "𝛕": { + math: "\\mathbf{T}" + }, + "𝛖": { + math: "\\mathbf{\\upsilon}" + }, + "𝛗": { + math: "\\mathbf{\\phi}" + }, + "𝛘": { + math: "\\mathbf{X}" + }, + "𝛙": { + math: "\\mathbf{\\psi}" + }, + "𝛚": { + math: "\\mathbf{\\omega}" + }, + "𝛛": { + math: "\\partial" + }, + "𝛜": { + math: "\\in" + }, + "𝛝": { + math: "\\mathbf{\\vartheta}" + }, + "𝛞": { + math: "\\mathbf{\\varkappa}" + }, + "𝛟": { + math: "\\mathbf{\\phi}" + }, + "𝛠": { + math: "\\mathbf{\\varrho}" + }, + "𝛡": { + math: "\\mathbf{\\varpi}" + }, + "𝛢": { + math: "\\mathsl{A}" + }, + "𝛣": { + math: "\\mathsl{B}" + }, + "𝛤": { + math: "\\mathsl{\\Gamma}" + }, + "𝛥": { + math: "\\mathsl{\\Delta}" + }, + "𝛦": { + math: "\\mathsl{E}" + }, + "𝛧": { + math: "\\mathsl{Z}" + }, + "𝛨": { + math: "\\mathsl{H}" + }, + "𝛩": { + math: "\\mathsl{\\Theta}" + }, + "𝛪": { + math: "\\mathsl{I}" + }, + "𝛫": { + math: "\\mathsl{K}" + }, + "𝛬": { + math: "\\mathsl{\\Lambda}" + }, + "𝛭": { + math: "M" + }, + "𝛮": { + math: "N" + }, + "𝛯": { + math: "\\mathsl{\\Xi}" + }, + "𝛰": { + math: "O" + }, + "𝛱": { + math: "\\mathsl{\\Pi}" + }, + "𝛲": { + math: "\\mathsl{P}" + }, + "𝛳": { + math: "\\mathsl{\\Theta}" + }, + "𝛴": { + math: "\\mathsl{\\Sigma}" + }, + "𝛵": { + math: "\\mathsl{T}" + }, + "𝛶": { + math: "\\mathsl{\\Upsilon}" + }, + "𝛷": { + math: "\\mathsl{\\Phi}" + }, + "𝛸": { + math: "\\mathsl{X}" + }, + "𝛹": { + math: "\\mathsl{\\Psi}" + }, + "𝛺": { + math: "\\mathsl{\\Omega}" + }, + "𝛻": { + math: "\\mathsl{\\nabla}" + }, + "𝛼": { + math: "\\mathsl{A}" + }, + "𝛽": { + math: "\\mathsl{B}" + }, + "𝛾": { + math: "\\mathsl{\\gamma}" + }, + "𝛿": { + math: "\\mathsl{\\delta}" + }, + "𝜀": { + math: "\\mathsl{E}" + }, + "𝜁": { + math: "\\mathsl{Z}" + }, + "𝜂": { + math: "\\mathsl{H}" + }, + "𝜃": { + math: "\\mathsl{\\theta}" + }, + "𝜄": { + math: "\\mathsl{I}" + }, + "𝜅": { + math: "\\mathsl{K}" + }, + "𝜆": { + math: "\\mathsl{\\lambda}" + }, + "𝜇": { + math: "\\mu" + }, + "𝜈": { + math: "\\nu" + }, + "𝜉": { + math: "\\mathsl{\\xi}" + }, + "𝜊": { + math: "o" + }, + "𝜋": { + math: "\\mathsl{\\pi}" + }, + "𝜌": { + math: "\\mathsl{P}" + }, + "𝜍": { + math: "\\mathsl{\\varsigma}" + }, + "𝜎": { + math: "\\mathsl{\\sigma}" + }, + "𝜏": { + math: "\\mathsl{T}" + }, + "𝜐": { + math: "\\mathsl{\\upsilon}" + }, + "𝜑": { + math: "\\mathsl{\\varphi}" + }, + "𝜒": { + math: "\\mathsl{X}" + }, + "𝜓": { + math: "\\mathsl{\\psi}" + }, + "𝜔": { + math: "\\mathsl{\\omega}" + }, + "𝜕": { + math: "\\partial" + }, + "𝜖": { + math: "\\in" + }, + "𝜗": { + math: "\\mathsl{\\vartheta}" + }, + "𝜘": { + math: "\\mathsl{\\varkappa}" + }, + "𝜙": { + math: "\\mathsl{\\phi}" + }, + "𝜚": { + math: "\\mathsl{\\varrho}" + }, + "𝜛": { + math: "\\mathsl{\\varpi}" + }, + "𝜜": { + math: "\\mathbit{A}" + }, + "𝜝": { + math: "\\mathbit{B}" + }, + "𝜞": { + math: "\\mathbit{\\Gamma}" + }, + "𝜟": { + math: "\\mathbit{\\Delta}" + }, + "𝜠": { + math: "\\mathbit{E}" + }, + "𝜡": { + math: "\\mathbit{Z}" + }, + "𝜢": { + math: "\\mathbit{H}" + }, + "𝜣": { + math: "\\mathbit{\\Theta}" + }, + "𝜤": { + math: "\\mathbit{I}" + }, + "𝜥": { + math: "\\mathbit{K}" + }, + "𝜦": { + math: "\\mathbit{\\Lambda}" + }, + "𝜧": { + math: "M" + }, + "𝜨": { + math: "N" + }, + "𝜩": { + math: "\\mathbit{\\Xi}" + }, + "𝜪": { + math: "O" + }, + "𝜫": { + math: "\\mathbit{\\Pi}" + }, + "𝜬": { + math: "\\mathbit{P}" + }, + "𝜭": { + math: "\\mathbit{O}" + }, + "𝜮": { + math: "\\mathbit{\\Sigma}" + }, + "𝜯": { + math: "\\mathbit{T}" + }, + "𝜰": { + math: "\\mathbit{\\Upsilon}" + }, + "𝜱": { + math: "\\mathbit{\\Phi}" + }, + "𝜲": { + math: "\\mathbit{X}" + }, + "𝜳": { + math: "\\mathbit{\\Psi}" + }, + "𝜴": { + math: "\\mathbit{\\Omega}" + }, + "𝜵": { + math: "\\mathbit{\\nabla}" + }, + "𝜶": { + math: "\\mathbit{\\alpha}" + }, + "𝜷": { + math: "\\mathbit{\\beta}" + }, + "𝜸": { + math: "\\mathbit{\\gamma}" + }, + "𝜹": { + math: "\\mathbit{\\delta}" + }, + "𝜺": { + math: "\\mathbit{\\epsilon}" + }, + "𝜻": { + math: "\\mathbit{\\zeta}" + }, + "𝜼": { + math: "\\mathbit{\\eta}" + }, + "𝜽": { + math: "\\mathbit{\\theta}" + }, + "𝜾": { + math: "\\mathbit{\\imath}" + }, + "𝜿": { + math: "\\mathbit{\\kappa}" + }, + "𝝀": { + math: "\\mathbit{\\lambda}" + }, + "𝝁": { + math: "\\mu" + }, + "𝝂": { + math: "N" + }, + "𝝃": { + math: "\\mathbit{\\xi}" + }, + "𝝄": { + math: "O" + }, + "𝝅": { + math: "\\mathbit{\\pi}" + }, + "𝝆": { + math: "\\mathbit{\\rho}" + }, + "𝝇": { + math: "\\mathbit{\\varsigma}" + }, + "𝝈": { + math: "\\mathbit{\\sigma}" + }, + "𝝉": { + math: "\\mathbit{\\tau}" + }, + "𝝊": { + math: "\\mathbit{\\upsilon}" + }, + "𝝋": { + math: "\\mathbit{\\varphi}" + }, + "𝝌": { + math: "\\mathbit{\\chi}" + }, + "𝝍": { + math: "\\mathbit{\\psi}" + }, + "𝝎": { + math: "\\mathbit{\\omega}" + }, + "𝝏": { + math: "\\partial" + }, + "𝝐": { + math: "\\in" + }, + "𝝑": { + math: "\\mathbit{\\vartheta}" + }, + "𝝒": { + math: "\\mathbit{\\varkappa}" + }, + "𝝓": { + math: "\\mathbit{\\phi}" + }, + "𝝔": { + math: "\\mathbit{\\varrho}" + }, + "𝝕": { + math: "\\mathbit{\\varpi}" + }, + "𝝖": { + math: "\\mathsfbf{A}" + }, + "𝝗": { + math: "\\mathsfbf{B}" + }, + "𝝘": { + math: "\\mathsfbf{\\Gamma}" + }, + "𝝙": { + math: "\\mathsfbf{\\Delta}" + }, + "𝝚": { + math: "\\mathsfbf{E}" + }, + "𝝛": { + math: "\\mathsfbf{Z}" + }, + "𝝜": { + math: "\\mathsfbf{H}" + }, + "𝝝": { + math: "\\mathsfbf{\\Theta}" + }, + "𝝞": { + math: "\\mathsfbf{I}" + }, + "𝝟": { + math: "\\mathsfbf{K}" + }, + "𝝠": { + math: "\\mathsfbf{\\Lambda}" + }, + "𝝡": { + math: "M" + }, + "𝝢": { + math: "N" + }, + "𝝣": { + math: "\\mathsfbf{\\Xi}" + }, + "𝝤": { + math: "O" + }, + "𝝥": { + math: "\\mathsfbf{\\Pi}" + }, + "𝝦": { + math: "\\mathsfbf{P}" + }, + "𝝧": { + math: "\\mathsfbf{\\Theta}" + }, + "𝝨": { + math: "\\mathsfbf{\\Sigma}" + }, + "𝝩": { + math: "\\mathsfbf{T}" + }, + "𝝪": { + math: "\\mathsfbf{\\Upsilon}" + }, + "𝝫": { + math: "\\mathsfbf{\\Phi}" + }, + "𝝬": { + math: "\\mathsfbf{X}" + }, + "𝝭": { + math: "\\mathsfbf{\\Psi}" + }, + "𝝮": { + math: "\\mathsfbf{\\Omega}" + }, + "𝝯": { + math: "\\mathsfbf{\\nabla}" + }, + "𝝰": { + math: "\\mathsfbf{\\alpha}" + }, + "𝝱": { + math: "\\mathsfbf{\\beta}" + }, + "𝝲": { + math: "\\mathsfbf{\\gamma}" + }, + "𝝳": { + math: "\\mathsfbf{\\delta}" + }, + "𝝴": { + math: "\\mathsfbf{\\varepsilon}" + }, + "𝝵": { + math: "\\mathsfbf{\\zeta}" + }, + "𝝶": { + math: "\\mathsfbf{\\eta}" + }, + "𝝷": { + math: "\\mathsfbf{\\theta}" + }, + "𝝸": { + math: "\\mathsfbf{\\imath}" + }, + "𝝹": { + math: "\\mathsfbf{\\kappa}" + }, + "𝝺": { + math: "\\mathsfbf{\\lambda}" + }, + "𝝻": { + math: "\\mu" + }, + "𝝼": { + math: "\\nu" + }, + "𝝽": { + math: "\\mathsfbf{\\xi}" + }, + "𝝾": { + math: "o" + }, + "𝝿": { + math: "\\mathsfbf{\\pi}" + }, + "𝞀": { + math: "\\mathsfbf{\\rho}" + }, + "𝞁": { + math: "\\mathsfbf{\\varsigma}" + }, + "𝞂": { + math: "\\mathsfbf{\\sigma}" + }, + "𝞃": { + math: "\\mathsfbf{\\tau}" + }, + "𝞄": { + math: "\\mathsfbf{\\upsilon}" + }, + "𝞅": { + math: "\\mathsfbf{\\varphi}" + }, + "𝞆": { + math: "\\mathsfbf{\\chi}" + }, + "𝞇": { + math: "\\mathsfbf{\\psi}" + }, + "𝞈": { + math: "\\mathsfbf{\\omega}" + }, + "𝞉": { + math: "\\partial" + }, + "𝞊": { + math: "\\in" + }, + "𝞋": { + math: "\\mathsfbf{\\vartheta}" + }, + "𝞌": { + math: "\\mathsfbf{\\varkappa}" + }, + "𝞍": { + math: "\\mathsfbf{\\phi}" + }, + "𝞎": { + math: "\\mathsfbf{\\varrho}" + }, + "𝞏": { + math: "\\mathsfbf{\\varpi}" + }, + "𝞐": { + math: "\\mathsfbfsl{A}" + }, + "𝞑": { + math: "\\mathsfbfsl{B}" + }, + "𝞒": { + math: "\\mathsfbfsl{\\Gamma}" + }, + "𝞓": { + math: "\\mathsfbfsl{\\Delta}" + }, + "𝞔": { + math: "\\mathsfbfsl{E}" + }, + "𝞕": { + math: "\\mathsfbfsl{Z}" + }, + "𝞖": { + math: "\\mathsfbfsl{H}" + }, + "𝞗": { + math: "\\mathsfbfsl{\\Theta}" + }, + "𝞘": { + math: "\\mathsfbfsl{I}" + }, + "𝞙": { + math: "\\mathsfbfsl{K}" + }, + "𝞚": { + math: "\\mathsfbfsl{\\Lambda}" + }, + "𝞛": { + math: "\\mathsfbfsl{M}" + }, + "𝞜": { + math: "\\mathsfbfsl{N}" + }, + "𝞝": { + math: "\\mathsfbfsl{\\Xi}" + }, + "𝞞": { + math: "\\mathsfbfsl{O}" + }, + "𝞟": { + math: "\\mathsfbfsl{\\Pi}" + }, + "𝞠": { + math: "\\mathsfbfsl{P}" + }, + "𝞡": { + math: "\\mathsfbfsl{\\Theta}" + }, + "𝞢": { + math: "\\mathsfbfsl{\\Sigma}" + }, + "𝞣": { + math: "\\mathsfbfsl{T}" + }, + "𝞤": { + math: "\\mathsfbfsl{\\Upsilon}" + }, + "𝞥": { + math: "\\mathsfbfsl{\\Phi}" + }, + "𝞦": { + math: "\\mathsfbfsl{X}" + }, + "𝞧": { + math: "\\mathsfbfsl{\\Psi}" + }, + "𝞨": { + math: "\\mathsfbfsl{\\Omega}" + }, + "𝞩": { + math: "\\mathsfbfsl{\\nabla}" + }, + "𝞪": { + math: "\\mathsfbfsl{\\alpha}" + }, + "𝞫": { + math: "\\mathsfbfsl{\\beta}" + }, + "𝞬": { + math: "\\mathsfbfsl{\\gamma}" + }, + "𝞭": { + math: "\\mathsfbfsl{\\delta}" + }, + "𝞮": { + math: "\\mathsfbfsl{\\varepsilon}" + }, + "𝞯": { + math: "\\mathsfbfsl{\\zeta}" + }, + "𝞰": { + math: "\\mathsfbfsl{\\eta}" + }, + "𝞱": { + math: "\\mathsfbfsl{\\theta}" + }, + "𝞲": { + math: "\\mathsfbfsl{\\imath}" + }, + "𝞳": { + math: "\\mathsfbfsl{\\kappa}" + }, + "𝞴": { + math: "\\mathsfbfsl{\\lambda}" + }, + "𝞵": { + math: "\\mu" + }, + "𝞶": { + math: "\\nu" + }, + "𝞷": { + math: "\\mathsfbfsl{\\xi}" + }, + "𝞸": { + math: "o" + }, + "𝞹": { + math: "\\mathsfbfsl{\\pi}" + }, + "𝞺": { + math: "\\mathsfbfsl{\\rho}" + }, + "𝞻": { + math: "\\mathsfbfsl{\\varsigma}" + }, + "𝞼": { + math: "\\mathsfbfsl{\\sigma}" + }, + "𝞽": { + math: "\\mathsfbfsl{\\tau}" + }, + "𝞾": { + math: "\\mathsfbfsl{\\upsilon}" + }, + "𝞿": { + math: "\\mathsfbfsl{\\varphi}" + }, + "𝟀": { + math: "\\mathsfbfsl{\\chi}" + }, + "𝟁": { + math: "\\mathsfbfsl{\\psi}" + }, + "𝟂": { + math: "\\mathsfbfsl{\\omega}" + }, + "𝟃": { + math: "\\partial" + }, + "𝟄": { + math: "\\in" + }, + "𝟅": { + math: "\\mathsfbfsl{\\vartheta}" + }, + "𝟆": { + math: "\\mathsfbfsl{\\varkappa}" + }, + "𝟇": { + math: "\\mathsfbfsl{\\phi}" + }, + "𝟈": { + math: "\\mathsfbfsl{\\varrho}" + }, + "𝟉": { + math: "\\mathsfbfsl{\\varpi}" + }, + "𝟊": { + math: "\\mbfDigamma" + }, + "𝟋": { + math: "\\mbfdigamma" + }, + "𝟎": { + math: "\\mathbf{0}" + }, + "𝟏": { + math: "\\mathbf{1}" + }, + "𝟐": { + math: "\\mathbf{2}" + }, + "𝟑": { + math: "\\mathbf{3}" + }, + "𝟒": { + math: "\\mathbf{4}" + }, + "𝟓": { + math: "\\mathbf{5}" + }, + "𝟔": { + math: "\\mathbf{6}" + }, + "𝟕": { + math: "\\mathbf{7}" + }, + "𝟖": { + math: "\\mathbf{8}" + }, + "𝟗": { + math: "\\mathbf{9}" + }, + "𝟘": { + math: "\\mathbb{0}" + }, + "𝟙": { + math: "\\mathbb{1}" + }, + "𝟚": { + math: "\\mathbb{2}" + }, + "𝟛": { + math: "\\mathbb{3}" + }, + "𝟜": { + math: "\\mathbb{4}" + }, + "𝟝": { + math: "\\mathbb{5}" + }, + "𝟞": { + math: "\\mathbb{6}" + }, + "𝟟": { + math: "\\mathbb{7}" + }, + "𝟠": { + math: "\\mathbb{8}" + }, + "𝟡": { + math: "\\mathbb{9}" + }, + "𝟢": { + math: "\\mathsf{0}" + }, + "𝟣": { + math: "\\mathsf{1}" + }, + "𝟤": { + math: "\\mathsf{2}" + }, + "𝟥": { + math: "\\mathsf{3}" + }, + "𝟦": { + math: "\\mathsf{4}" + }, + "𝟧": { + math: "\\mathsf{5}" + }, + "𝟨": { + math: "\\mathsf{6}" + }, + "𝟩": { + math: "\\mathsf{7}" + }, + "𝟪": { + math: "\\mathsf{8}" + }, + "𝟫": { + math: "\\mathsf{9}" + }, + "𝟬": { + math: "\\mathsfbf{0}" + }, + "𝟭": { + math: "\\mathsfbf{1}" + }, + "𝟮": { + math: "\\mathsfbf{2}" + }, + "𝟯": { + math: "\\mathsfbf{3}" + }, + "𝟰": { + math: "\\mathsfbf{4}" + }, + "𝟱": { + math: "\\mathsfbf{5}" + }, + "𝟲": { + math: "\\mathsfbf{6}" + }, + "𝟳": { + math: "\\mathsfbf{7}" + }, + "𝟴": { + math: "\\mathsfbf{8}" + }, + "𝟵": { + math: "\\mathsfbf{9}" + }, + "𝟶": { + math: "\\mathtt{0}" + }, + "𝟷": { + math: "\\mathtt{1}" + }, + "𝟸": { + math: "\\mathtt{2}" + }, + "𝟹": { + math: "\\mathtt{3}" + }, + "𝟺": { + math: "\\mathtt{4}" + }, + "𝟻": { + math: "\\mathtt{5}" + }, + "𝟼": { + math: "\\mathtt{6}" + }, + "𝟽": { + math: "\\mathtt{7}" + }, + "𝟾": { + math: "\\mathtt{8}" + }, + "𝟿": { + math: "\\mathtt{9}" + } + }; + + var $$1 = { + math: "\\$", + text: "\\$" + }; + var _$1 = { + math: "\\_", + text: "\\_" + }; + var require$$1 = { + "#": { + math: "\\#", + text: "\\#" + }, + $: $$1, + "%": { + math: "\\%", + text: "\\%" + }, + "&": { + math: "\\&", + text: "\\&" + }, + "/​": { + text: "{\\slash}" + }, + "<": { + math: "<" + }, + ">": { + math: ">" + }, + "\\": { + math: "\\backslash", + text: "{\\textbackslash}" + }, + "^": { + math: "\\sphat", + text: "\\^" + }, + _: _$1, + "i︠a︡": { + text: "\\t{ia}" + }, + "{": { + math: "\\lbrace", + text: "\\{" + }, + "}": { + math: "\\rbrace", + text: "\\}" + }, + "~": { + math: "\\sptilde", + text: "{\\textasciitilde}" + }, + " ": { + math: "~", + space: true, + text: "~" + }, + "¡": { + text: "{\\textexclamdown}" + }, + "¢": { + math: "\\cent", + text: "{\\textcent}", + textpackages: [ + "textcomp" + ] + }, + "£": { + math: "\\pounds", + text: "{\\textsterling}", + textpackages: [ + "textcomp" + ] + }, + "¤": { + text: "{\\textcurrency}", + textpackages: [ + "textcomp" + ] + }, + "¥": { + math: "\\yen", + text: "{\\textyen}", + textpackages: [ + "textcomp" + ] + }, + "¦": { + text: "{\\textbrokenbar}", + textpackages: [ + "textcomp" + ] + }, + "§": { + text: "{\\textsection}", + textpackages: [ + "textcomp" + ] + }, + "¨": { + math: "\\spddot", + text: "{\\textasciidieresis}" + }, + "©": { + text: "{\\textcopyright}", + textpackages: [ + "textcomp" + ] + }, + "ª": { + text: "{\\textordfeminine}", + textpackages: [ + "textcomp" + ] + }, + "«": { + text: "{\\guillemotleft}" + }, + "¬": { + math: "\\lnot" + }, + "­": { + math: "\\-", + text: "\\-" + }, + "®": { + math: "\\circledR", + text: "{\\textregistered}", + textpackages: [ + "textcomp" + ] + }, + "¯": { + text: "{\\textasciimacron}" + }, + "°": { + math: "^\\circ", + text: "{\\textdegree}", + textpackages: [ + "textcomp" + ] + }, + "±": { + math: "\\pm" + }, + "²": { + math: "^{2}" + }, + "³": { + math: "^{3}" + }, + "´": { + text: "{\\textasciiacute}" + }, + "µ": { + text: "{\\textmu}" + }, + "¶": { + text: "{\\textparagraph}", + textpackages: [ + "textcomp" + ] + }, + "·": { + math: "\\cdot" + }, + "¸": { + text: "{\\c}" + }, + "¹": { + math: "^{1}" + }, + "º": { + text: "{\\textordmasculine}", + textpackages: [ + "textcomp" + ] + }, + "»": { + text: "{\\guillemotright}" + }, + "¼": { + math: "\\frac{1}{4}" + }, + "½": { + math: "\\frac{1}{2}" + }, + "¾": { + math: "\\frac{3}{4}" + }, + "¿": { + text: "{\\textquestiondown}" + }, + "À": { + text: "{\\`A}" + }, + "Á": { + text: "{\\'A}" + }, + "Â": { + text: "{\\^A}" + }, + "Ã": { + text: "{\\~A}" + }, + "Ä": { + text: "{\\\"A}" + }, + "Å": { + text: "{\\AA}" + }, + "Æ": { + text: "{\\AE}" + }, + "Ç": { + text: "{\\c C}" + }, + "È": { + text: "{\\`E}" + }, + "É": { + text: "{\\'E}" + }, + "Ê": { + text: "{\\^E}" + }, + "Ë": { + text: "{\\\"E}" + }, + "Ì": { + text: "{\\`I}" + }, + "Í": { + text: "{\\'I}" + }, + "Î": { + text: "{\\^I}" + }, + "Ï": { + text: "{\\\"I}" + }, + "Ð": { + text: "{\\DH}" + }, + "Ñ": { + text: "{\\~N}" + }, + "Ò": { + text: "{\\`O}" + }, + "Ó": { + text: "{\\'O}" + }, + "Ô": { + text: "{\\^O}" + }, + "Õ": { + text: "{\\~O}" + }, + "Ö": { + text: "{\\\"O}" + }, + "×": { + math: "\\times", + text: "{\\texttimes}" + }, + "Ø": { + text: "{\\O}" + }, + "Ù": { + text: "{\\`U}" + }, + "Ú": { + text: "{\\'U}" + }, + "Û": { + text: "{\\^U}" + }, + "Ü": { + text: "{\\\"U}" + }, + "Ý": { + text: "{\\'Y}" + }, + "Þ": { + text: "{\\TH}" + }, + "ß": { + text: "{\\ss}" + }, + "à": { + text: "{\\`a}" + }, + "á": { + text: "{\\'a}" + }, + "â": { + text: "{\\^a}" + }, + "ã": { + text: "{\\~a}" + }, + "ä": { + text: "{\\\"a}" + }, + "å": { + text: "{\\aa}" + }, + "æ": { + text: "{\\ae}" + }, + "ç": { + text: "{\\c c}" + }, + "è": { + text: "{\\`e}" + }, + "é": { + text: "{\\'e}" + }, + "ê": { + text: "{\\^e}" + }, + "ë": { + text: "{\\\"e}" + }, + "ì": { + text: "{\\`i}" + }, + "í": { + text: "{\\'i}" + }, + "î": { + text: "{\\^i}" + }, + "ï": { + text: "{\\\"i}" + }, + "ð": { + math: "\\eth", + mathpackages: [ + "amssymb", + "arevmath" + ], + text: "{\\dh}" + }, + "ñ": { + text: "{\\~n}" + }, + "ò": { + text: "{\\`o}" + }, + "ó": { + text: "{\\'o}" + }, + "ô": { + text: "{\\^o}" + }, + "õ": { + text: "{\\~o}" + }, + "ö": { + text: "{\\\"o}" + }, + "÷": { + math: "\\div" + }, + "ø": { + text: "{\\o}" + }, + "ù": { + text: "{\\`u}" + }, + "ú": { + text: "{\\'u}" + }, + "û": { + text: "{\\^u}" + }, + "ü": { + text: "{\\\"u}" + }, + "ý": { + text: "{\\'y}" + }, + "þ": { + text: "{\\th}" + }, + "ÿ": { + text: "{\\\"y}" + }, + "Ā": { + text: "{\\=A}" + }, + "ā": { + text: "{\\=a}" + }, + "Ă": { + text: "{\\u A}" + }, + "ă": { + text: "{\\u a}" + }, + "Ą": { + text: "{\\k{A}}" + }, + "ą": { + text: "{\\k{a}}" + }, + "Ć": { + text: "{\\'C}" + }, + "ć": { + text: "{\\'c}" + }, + "Ĉ": { + text: "{\\^C}" + }, + "ĉ": { + text: "{\\^c}" + }, + "Ċ": { + text: "{\\.C}" + }, + "ċ": { + text: "{\\.c}" + }, + "Č": { + text: "{\\v C}" + }, + "č": { + text: "{\\v c}" + }, + "Ď": { + text: "{\\v D}" + }, + "ď": { + text: "{\\v d}" + }, + "Đ": { + text: "{\\DJ}" + }, + "đ": { + text: "{\\dj}" + }, + "Ē": { + text: "{\\=E}" + }, + "ē": { + text: "{\\=e}" + }, + "Ĕ": { + text: "{\\u E}" + }, + "ĕ": { + text: "{\\u e}" + }, + "Ė": { + text: "{\\.E}" + }, + "ė": { + text: "{\\.e}" + }, + "Ę": { + text: "{\\k{E}}" + }, + "ę": { + text: "{\\k{e}}" + }, + "Ě": { + text: "{\\v E}" + }, + "ě": { + text: "{\\v e}" + }, + "Ĝ": { + text: "{\\^G}" + }, + "ĝ": { + text: "{\\^g}" + }, + "Ğ": { + text: "{\\u G}" + }, + "ğ": { + text: "{\\u g}" + }, + "Ġ": { + text: "{\\.G}" + }, + "ġ": { + text: "{\\.g}" + }, + "Ģ": { + text: "{\\c G}" + }, + "ģ": { + text: "{\\c g}" + }, + "Ĥ": { + text: "{\\^H}" + }, + "ĥ": { + text: "{\\^h}" + }, + "Ħ": { + text: "{\\fontencoding{LELA}\\selectfont\\char40}" + }, + "ħ": { + math: "\\Elzxh" + }, + "Ĩ": { + text: "{\\~I}" + }, + "ĩ": { + text: "{\\~i}" + }, + "Ī": { + text: "{\\=I}" + }, + "ī": { + text: "{\\=i}" + }, + "Ĭ": { + text: "{\\u I}" + }, + "ĭ": { + text: "{\\u \\i}" + }, + "Į": { + text: "{\\k{I}}" + }, + "į": { + text: "{\\k{i}}" + }, + "İ": { + text: "{\\.I}" + }, + "ı": { + math: "\\imath", + text: "{\\i}" + }, + "IJ": { + text: "IJ" + }, + "ij": { + text: "ij" + }, + "Ĵ": { + text: "{\\^J}" + }, + "ĵ": { + text: "{\\^\\j}" + }, + "Ķ": { + text: "{\\c K}" + }, + "ķ": { + text: "{\\c k}" + }, + "ĸ": { + text: "{\\fontencoding{LELA}\\selectfont\\char91}" + }, + "Ĺ": { + text: "{\\'L}" + }, + "ĺ": { + text: "{\\'l}" + }, + "Ļ": { + text: "{\\c L}" + }, + "ļ": { + text: "{\\c l}" + }, + "Ľ": { + text: "{\\v L}" + }, + "ľ": { + text: "{\\v l}" + }, + "Ŀ": { + text: "{\\fontencoding{LELA}\\selectfont\\char201}" + }, + "ŀ": { + text: "{\\fontencoding{LELA}\\selectfont\\char202}" + }, + "Ł": { + text: "{\\L}" + }, + "ł": { + text: "{\\l}" + }, + "Ń": { + text: "{\\'N}" + }, + "ń": { + text: "{\\'n}" + }, + "Ņ": { + text: "{\\c N}" + }, + "ņ": { + text: "{\\c n}" + }, + "Ň": { + text: "{\\v N}" + }, + "ň": { + text: "{\\v n}" + }, + "ʼn": { + text: "'n" + }, + "Ŋ": { + text: "{\\NG}" + }, + "ŋ": { + text: "{\\ng}" + }, + "Ō": { + text: "{\\=O}" + }, + "ō": { + text: "{\\=o}" + }, + "Ŏ": { + text: "{\\u O}" + }, + "ŏ": { + text: "{\\u o}" + }, + "Ő": { + text: "{\\H O}" + }, + "ő": { + text: "{\\H o}" + }, + "Œ": { + text: "{\\OE}" + }, + "œ": { + text: "{\\oe}" + }, + "Ŕ": { + text: "{\\'R}" + }, + "ŕ": { + text: "{\\'r}" + }, + "Ŗ": { + text: "{\\c R}" + }, + "ŗ": { + text: "{\\c r}" + }, + "Ř": { + text: "{\\v R}" + }, + "ř": { + text: "{\\v r}" + }, + "Ś": { + text: "{\\'S}" + }, + "ś": { + text: "{\\'s}" + }, + "Ŝ": { + text: "{\\^S}" + }, + "ŝ": { + text: "{\\^s}" + }, + "Ş": { + text: "{\\c S}" + }, + "ş": { + text: "{\\c s}" + }, + "Š": { + text: "{\\v S}" + }, + "š": { + text: "{\\v s}" + }, + "Ţ": { + text: "{\\c T}" + }, + "ţ": { + text: "{\\c t}" + }, + "Ť": { + text: "{\\v T}" + }, + "ť": { + text: "{\\v t}" + }, + "Ŧ": { + text: "{\\fontencoding{LELA}\\selectfont\\char47}" + }, + "ŧ": { + text: "{\\fontencoding{LELA}\\selectfont\\char63}" + }, + "Ũ": { + text: "{\\~U}" + }, + "ũ": { + text: "{\\~u}" + }, + "Ū": { + text: "{\\=U}" + }, + "ū": { + text: "{\\=u}" + }, + "Ŭ": { + text: "{\\u U}" + }, + "ŭ": { + text: "{\\u u}" + }, + "Ů": { + text: "{\\r{U}}" + }, + "ů": { + text: "{\\r{u}}" + }, + "Ű": { + text: "{\\H U}" + }, + "ű": { + text: "{\\H u}" + }, + "Ų": { + text: "{\\k{U}}" + }, + "ų": { + text: "{\\k{u}}" + }, + "Ŵ": { + text: "{\\^W}" + }, + "ŵ": { + text: "{\\^w}" + }, + "Ŷ": { + text: "{\\^Y}" + }, + "ŷ": { + text: "{\\^y}" + }, + "Ÿ": { + text: "{\\\"Y}" + }, + "Ź": { + text: "{\\'Z}" + }, + "ź": { + text: "{\\'z}" + }, + "Ż": { + text: "{\\.Z}" + }, + "ż": { + text: "{\\.z}" + }, + "Ž": { + text: "{\\v Z}" + }, + "ž": { + text: "{\\v z}" + }, + "ſ": { + text: "s" + }, + "ƒ": { + math: "f" + }, + "ƕ": { + text: "{\\texthvlig}" + }, + "ƞ": { + text: "{\\textnrleg}" + }, + "ƪ": { + text: "{\\textesh}" + }, + "Ƶ": { + math: "\\Zbar" + }, + "ƺ": { + text: "{\\fontencoding{LELA}\\selectfont\\char195}" + }, + "ǂ": { + text: "{\\textdoublepipe}" + }, + "Ǎ": { + text: "{\\v A}" + }, + "ǎ": { + text: "{\\v a}" + }, + "Ǐ": { + text: "{\\v I}" + }, + "ǐ": { + text: "{\\v i}" + }, + "Ǒ": { + text: "{\\v O}" + }, + "ǒ": { + text: "{\\v o}" + }, + "Ǔ": { + text: "{\\v U}" + }, + "ǔ": { + text: "{\\v u}" + }, + "Ǧ": { + text: "{\\v G}" + }, + "ǧ": { + text: "{\\v g}" + }, + "Ǩ": { + text: "{\\v K}" + }, + "ǩ": { + text: "{\\v k}" + }, + "Ǫ": { + text: "{\\k{O}}" + }, + "ǫ": { + text: "{\\k{o}}" + }, + "ǰ": { + text: "{\\v j}" + }, + "Ǵ": { + text: "{\\'G}" + }, + "ǵ": { + text: "{\\'g}" + }, + "Ȩ": { + text: "{\\c E}" + }, + "ȩ": { + text: "{\\c e}" + }, + "ȷ": { + math: "\\jmath" + }, + "ɐ": { + math: "\\Elztrna" + }, + "ɒ": { + math: "\\Elztrnsa" + }, + "ɔ": { + math: "\\Elzopeno" + }, + "ɖ": { + math: "\\Elzrtld" + }, + "ɘ": { + text: "{\\fontencoding{LEIP}\\selectfont\\char61}" + }, + "ə": { + math: "\\Elzschwa" + }, + "ɛ": { + math: "\\varepsilon" + }, + "ɡ": { + text: "g" + }, + "ɣ": { + math: "\\Elzpgamma" + }, + "ɤ": { + math: "\\Elzpbgam" + }, + "ɥ": { + math: "\\Elztrnh" + }, + "ɬ": { + math: "\\Elzbtdl" + }, + "ɭ": { + math: "\\Elzrtll" + }, + "ɯ": { + math: "\\Elztrnm" + }, + "ɰ": { + math: "\\Elztrnmlr" + }, + "ɱ": { + math: "\\Elzltlmr" + }, + "ɲ": { + text: "{\\Elzltln}" + }, + "ɳ": { + math: "\\Elzrtln" + }, + "ɷ": { + math: "\\Elzclomeg" + }, + "ɸ": { + text: "{\\textphi}" + }, + "ɹ": { + math: "\\Elztrnr" + }, + "ɺ": { + math: "\\Elztrnrl" + }, + "ɻ": { + math: "\\Elzrttrnr" + }, + "ɼ": { + math: "\\Elzrl" + }, + "ɽ": { + math: "\\Elzrtlr" + }, + "ɾ": { + math: "\\Elzfhr" + }, + "ɿ": { + text: "{\\fontencoding{LEIP}\\selectfont\\char202}" + }, + "ʂ": { + math: "\\Elzrtls" + }, + "ʃ": { + math: "\\Elzesh" + }, + "ʇ": { + math: "\\Elztrnt" + }, + "ʈ": { + math: "\\Elzrtlt" + }, + "ʊ": { + math: "\\Elzpupsil" + }, + "ʋ": { + math: "\\Elzpscrv" + }, + "ʌ": { + math: "\\Elzinvv" + }, + "ʍ": { + math: "\\Elzinvw" + }, + "ʎ": { + math: "\\Elztrny" + }, + "ʐ": { + math: "\\Elzrtlz" + }, + "ʒ": { + math: "\\Elzyogh" + }, + "ʔ": { + math: "\\Elzglst" + }, + "ʕ": { + math: "\\Elzreglst" + }, + "ʖ": { + math: "\\Elzinglst" + }, + "ʞ": { + text: "{\\textturnk}" + }, + "ʤ": { + math: "\\Elzdyogh" + }, + "ʧ": { + math: "\\Elztesh" + }, + "ʰ": { + math: "^{h}", + text: "\\textsuperscript{h}" + }, + "ʲ": { + math: "^{j}", + text: "\\textsuperscript{j}" + }, + "ʳ": { + math: "^{r}", + text: "\\textsuperscript{r}" + }, + "ʷ": { + math: "^{w}", + text: "\\textsuperscript{w}" + }, + "ʸ": { + math: "^{y}", + text: "\\textsuperscript{y}" + }, + "ʹ": { + text: "'" + }, + "ʻ": { + text: "'" + }, + "ʼ": { + text: "'" + }, + "ʽ": { + text: "'" + }, + "ʿ": { + text: "{\\lasp}", + textpackages: [ + "mathscinet" + ] + }, + "ˆ": { + text: "{\\textasciicircum}" + }, + "ˇ": { + text: "{\\textasciicaron}" + }, + "ˈ": { + math: "\\Elzverts" + }, + "ˉ": { + text: "-" + }, + "ˌ": { + math: "\\Elzverti" + }, + "ː": { + math: "\\Elzlmrk" + }, + "ˑ": { + math: "\\Elzhlmrk" + }, + "˒": { + math: "\\Elzsbrhr" + }, + "˓": { + math: "\\Elzsblhr" + }, + "˔": { + math: "\\Elzrais" + }, + "˕": { + math: "\\Elzlow" + }, + "˘": { + text: "{\\textasciibreve}" + }, + "˙": { + text: "{\\textperiodcentered}", + textpackages: [ + "textcomp" + ] + }, + "˚": { + text: "{\\r{}}" + }, + "˛": { + text: "{\\k{}}" + }, + "˜": { + text: "{\\texttildelow}" + }, + "˝": { + text: "{\\H{}}" + }, + "ˡ": { + math: "^{l}", + text: "\\textsuperscript{l}" + }, + "ˢ": { + math: "^{s}", + text: "\\textsuperscript{s}" + }, + "ˣ": { + math: "^{x}", + text: "\\textsuperscript{x}" + }, + "˥": { + text: "\\tone{55}" + }, + "˦": { + text: "\\tone{44}" + }, + "˧": { + text: "\\tone{33}" + }, + "˨": { + text: "\\tone{22}" + }, + "˩": { + text: "\\tone{11}" + }, + "̀": { + math: "\\grave", + combiningdiacritic: true, + text: "\\`" + }, + "̀̄": { + text: "{\\textgravemacron}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̄̀": { + text: "{\\textgravemacron}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̀̇": { + text: "{\\textgravedot}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̇̀": { + text: "{\\textgravedot}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "́": { + math: "\\acute", + combiningdiacritic: true, + text: "\\'" + }, + "́̄": { + text: "{\\textacutemacron}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̄́": { + text: "{\\textacutemacron}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "́̌": { + text: "{\\textacutewedge}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̌́": { + text: "{\\textacutewedge}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̂": { + math: "\\hat", + combiningdiacritic: true, + text: "\\^" + }, + "̂̇": { + text: "{\\textcircumdot}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̇̂": { + text: "{\\textcircumdot}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̃": { + math: "\\tilde", + combiningdiacritic: true, + text: "\\~" + }, + "̃̇": { + text: "{\\texttildedot}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̇̃": { + text: "{\\texttildedot}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̄": { + math: "\\bar", + combiningdiacritic: true, + text: "\\=" + }, + "̅": { + math: "\\overline", + combiningdiacritic: true + }, + "̆": { + math: "\\breve", + combiningdiacritic: true, + text: "{\\u}" + }, + "̆̄": { + text: "{\\textbrevemacron}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̄̆": { + text: "{\\textbrevemacron}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̇": { + math: "\\dot", + combiningdiacritic: true, + text: "\\." + }, + "̇́": { + text: "{\\textdotacute}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "́̇": { + text: "{\\textdotacute}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̇̆": { + text: "{\\textdotbreve}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̆̇": { + text: "{\\textdotbreve}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̈": { + math: "\\ddot", + combiningdiacritic: true, + text: "\\\"" + }, + "̉": { + math: "\\ovhook" + }, + "̊": { + math: "\\mathring", + combiningdiacritic: true, + text: "{\\r}" + }, + "̊̄": { + text: "{\\textringmacron}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̄̊": { + text: "{\\textringmacron}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̋": { + text: "{\\H}", + combiningdiacritic: true + }, + "̌": { + math: "\\check", + text: "{\\v}", + combiningdiacritic: true + }, + "̍": { + text: "{\\textvbaraccent}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̎": { + text: "{\\textdoublevbaraccent}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̏": { + text: "{\\textdoublegrave}", + combiningdiacritic: true + }, + "̐": { + text: "{\\textdotbreve}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̑": { + text: "{\\fontencoding{LECO}\\selectfont\\char177}" + }, + "̒": { + math: "\\oturnedcomma" + }, + "̕": { + math: "\\ocommatopright" + }, + "̖": { + text: "{\\textsubgrave}", + combiningdiacritic: true + }, + "̘": { + text: "{\\textadvancing}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̙": { + text: "{\\textretracting}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̚": { + math: "\\droang", + text: "{\\textcorner}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̜": { + text: "{\\textsublhalfring}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̝": { + text: "{\\textraising}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̞": { + text: "{\\textlowering}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̟": { + text: "{\\textsubplus}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̡": { + math: "\\Elzpalh" + }, + "̢": { + text: "{\\Elzrh}" + }, + "̣": { + text: "{\\d}", + combiningdiacritic: true + }, + "̤": { + text: "{\\textsubumlaut}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̥": { + text: "{\\textsubring}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̧": { + text: "{\\c}", + combiningdiacritic: true + }, + "̨": { + text: "{\\k}", + combiningdiacritic: true + }, + "̩": { + text: "{\\textsyllabic}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̪": { + math: "\\Elzsbbrg", + text: "{\\textsubbridge}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̫": { + text: "{\\fontencoding{LECO}\\selectfont\\char203}" + }, + "̬": { + text: "{\\textsubwedge}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̯": { + text: "{\\textsubarch}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̰": { + math: "\\utilde", + text: "{\\textsubtilde}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̱": { + math: "\\underbar", + combiningdiacritic: true, + text: "{\\textsubbar}", + textpackages: [ + "tipa" + ] + }, + "̲": { + math: "\\underline" + }, + "̴": { + text: "{\\textsuperimposetilde}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̵": { + text: "{\\Elzxl}" + }, + "̶": { + text: "{\\Elzbar}" + }, + "̷": { + text: "{\\fontencoding{LECO}\\selectfont\\char215}" + }, + "̸": { + math: "\\not" + }, + "̹": { + text: "{\\textsubrhalfring}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̺": { + text: "{\\textinvsubbridge}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̻": { + text: "{\\textsubsquare}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̼": { + text: "{\\textseagull}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "̽": { + text: "{\\textovercross}", + combiningdiacritic: true, + textpackages: [ + "tipa" + ] + }, + "͡": { + text: "{\\fontencoding{LECO}\\selectfont\\char225}" + }, + "ʹ": { + text: "'" + }, + "͵": { + text: "," + }, + ";": { + text: ";" + }, + "Ά": { + text: "{\\'A}" + }, + "Έ": { + text: "{\\'E}" + }, + "Ή": { + text: "{\\'H}" + }, + "Ί": { + text: "{\\'{}I}" + }, + "Ό": { + text: "{\\'{}O}" + }, + "Ύ": { + math: "\\mathrm{'Y}" + }, + "Ώ": { + math: "\\mathrm{'\\Omega}" + }, + "ΐ": { + math: "\\acute{\\ddot{\\iota}}" + }, + "Α": { + math: "A" + }, + "Β": { + math: "B" + }, + "Γ": { + math: "\\Gamma" + }, + "Δ": { + math: "\\Delta" + }, + "Ε": { + math: "E" + }, + "Ζ": { + math: "Z" + }, + "Η": { + math: "H" + }, + "Θ": { + math: "\\Theta" + }, + "Ι": { + math: "I" + }, + "Κ": { + math: "K" + }, + "Λ": { + math: "\\Lambda" + }, + "Μ": { + math: "M" + }, + "Ν": { + math: "N" + }, + "Ξ": { + math: "\\Xi" + }, + "Ο": { + math: "O" + }, + "Π": { + math: "\\Pi" + }, + "Ρ": { + math: "P" + }, + "Σ": { + math: "\\Sigma" + }, + "Τ": { + math: "T" + }, + "Υ": { + math: "\\Upsilon" + }, + "Φ": { + math: "\\Phi" + }, + "Χ": { + math: "X" + }, + "Ψ": { + math: "\\Psi" + }, + "Ω": { + math: "\\Omega" + }, + "Ϊ": { + math: "\\mathrm{\\ddot{I}}" + }, + "Ϋ": { + math: "\\mathrm{\\ddot{Y}}" + }, + "ά": { + text: "{\\'$\\alpha$}" + }, + "έ": { + math: "\\acute{\\epsilon}" + }, + "ή": { + math: "\\acute{\\eta}" + }, + "ί": { + math: "\\acute{\\iota}" + }, + "ΰ": { + math: "\\acute{\\ddot{\\upsilon}}" + }, + "α": { + math: "\\alpha" + }, + "β": { + math: "\\beta" + }, + "γ": { + math: "\\gamma" + }, + "δ": { + math: "\\delta" + }, + "ε": { + math: "\\epsilon" + }, + "ζ": { + math: "\\zeta" + }, + "η": { + math: "\\eta" + }, + "θ": { + math: "\\theta", + text: "{\\texttheta}" + }, + "ι": { + math: "\\iota" + }, + "κ": { + math: "\\kappa" + }, + "λ": { + math: "\\lambda" + }, + "μ": { + math: "\\mu" + }, + "ν": { + math: "\\nu" + }, + "ξ": { + math: "\\xi" + }, + "ο": { + math: "o" + }, + "π": { + math: "\\pi" + }, + "ρ": { + math: "\\rho" + }, + "ς": { + math: "\\varsigma" + }, + "σ": { + math: "\\sigma" + }, + "τ": { + math: "\\tau" + }, + "υ": { + math: "\\upsilon" + }, + "φ": { + math: "\\varphi" + }, + "χ": { + math: "\\chi" + }, + "ψ": { + math: "\\psi" + }, + "ω": { + math: "\\omega" + }, + "ϊ": { + math: "\\ddot{\\iota}" + }, + "ϋ": { + math: "\\ddot{\\upsilon}" + }, + "ό": { + text: "{\\'o}" + }, + "ύ": { + math: "\\acute{\\upsilon}" + }, + "ώ": { + math: "\\acute{\\omega}" + }, + "ϐ": { + math: "\\varbeta", + text: "\\Pisymbol{ppi022}{87}" + }, + "ϑ": { + math: "\\vartheta", + text: "{\\textvartheta}" + }, + "ϒ": { + math: "\\Upsilon" + }, + "ϕ": { + math: "\\phi" + }, + "ϖ": { + math: "\\varpi" + }, + "Ϙ": { + math: "\\Qoppa" + }, + "ϙ": { + math: "\\qoppa" + }, + "Ϛ": { + math: "\\Stigma" + }, + "ϛ": { + math: "\\stigma" + }, + "Ϝ": { + math: "\\Digamma" + }, + "ϝ": { + math: "\\digamma" + }, + "Ϟ": { + math: "\\Koppa" + }, + "ϟ": { + math: "\\koppa" + }, + "Ϡ": { + math: "\\Sampi" + }, + "ϡ": { + math: "\\sampi" + }, + "ϰ": { + math: "\\varkappa" + }, + "ϱ": { + math: "\\varrho" + }, + "ϴ": { + math: "\\upvarTheta", + text: "{\\textTheta}" + }, + "ϵ": { + math: "\\epsilon" + }, + "϶": { + math: "\\backepsilon" + }, + "Ё": { + text: "{\\cyrchar\\CYRYO}" + }, + "Ђ": { + text: "{\\cyrchar\\CYRDJE}" + }, + "Ѓ": { + text: "{\\cyrchar{\\'\\CYRG}}" + }, + "Є": { + text: "{\\cyrchar\\CYRIE}" + }, + "Ѕ": { + text: "{\\cyrchar\\CYRDZE}" + }, + "І": { + text: "{\\cyrchar\\CYRII}" + }, + "Ї": { + text: "{\\cyrchar\\CYRYI}" + }, + "Ј": { + text: "{\\cyrchar\\CYRJE}" + }, + "Љ": { + text: "{\\cyrchar\\CYRLJE}" + }, + "Њ": { + text: "{\\cyrchar\\CYRNJE}" + }, + "Ћ": { + text: "{\\cyrchar\\CYRTSHE}" + }, + "Ќ": { + text: "{\\cyrchar{\\'\\CYRK}}" + }, + "Ў": { + text: "{\\cyrchar\\CYRUSHRT}" + }, + "Џ": { + text: "{\\cyrchar\\CYRDZHE}" + }, + "А": { + text: "{\\cyrchar\\CYRA}" + }, + "Б": { + text: "{\\cyrchar\\CYRB}" + }, + "В": { + text: "{\\cyrchar\\CYRV}" + }, + "Г": { + text: "{\\cyrchar\\CYRG}" + }, + "Д": { + text: "{\\cyrchar\\CYRD}" + }, + "Е": { + text: "{\\cyrchar\\CYRE}" + }, + "Ж": { + text: "{\\cyrchar\\CYRZH}" + }, + "З": { + text: "{\\cyrchar\\CYRZ}" + }, + "И": { + text: "{\\cyrchar\\CYRI}" + }, + "Й": { + text: "{\\cyrchar\\CYRISHRT}" + }, + "К": { + text: "{\\cyrchar\\CYRK}" + }, + "Л": { + text: "{\\cyrchar\\CYRL}" + }, + "М": { + text: "{\\cyrchar\\CYRM}" + }, + "Н": { + text: "{\\cyrchar\\CYRN}" + }, + "О": { + text: "{\\cyrchar\\CYRO}" + }, + "П": { + text: "{\\cyrchar\\CYRP}" + }, + "Р": { + text: "{\\cyrchar\\CYRR}" + }, + "С": { + text: "{\\cyrchar\\CYRS}" + }, + "Т": { + text: "{\\cyrchar\\CYRT}" + }, + "У": { + text: "{\\cyrchar\\CYRU}" + }, + "Ф": { + text: "{\\cyrchar\\CYRF}" + }, + "Х": { + text: "{\\cyrchar\\CYRH}" + }, + "Ц": { + text: "{\\cyrchar\\CYRC}" + }, + "Ч": { + text: "{\\cyrchar\\CYRCH}" + }, + "Ш": { + text: "{\\cyrchar\\CYRSH}" + }, + "Щ": { + text: "{\\cyrchar\\CYRSHCH}" + }, + "Ъ": { + text: "{\\cyrchar\\CYRHRDSN}" + }, + "Ы": { + text: "{\\cyrchar\\CYRERY}" + }, + "Ь": { + text: "{\\cyrchar\\CYRSFTSN}" + }, + "Э": { + text: "{\\cyrchar\\CYREREV}" + }, + "Ю": { + text: "{\\cyrchar\\CYRYU}" + }, + "Я": { + text: "{\\cyrchar\\CYRYA}" + }, + "а": { + text: "{\\cyrchar\\cyra}" + }, + "б": { + text: "{\\cyrchar\\cyrb}" + }, + "в": { + text: "{\\cyrchar\\cyrv}" + }, + "г": { + text: "{\\cyrchar\\cyrg}" + }, + "д": { + text: "{\\cyrchar\\cyrd}" + }, + "е": { + text: "{\\cyrchar\\cyre}" + }, + "ж": { + text: "{\\cyrchar\\cyrzh}" + }, + "з": { + text: "{\\cyrchar\\cyrz}" + }, + "и": { + text: "{\\cyrchar\\cyri}" + }, + "й": { + text: "{\\cyrchar\\cyrishrt}" + }, + "к": { + text: "{\\cyrchar\\cyrk}" + }, + "л": { + text: "{\\cyrchar\\cyrl}" + }, + "м": { + text: "{\\cyrchar\\cyrm}" + }, + "н": { + text: "{\\cyrchar\\cyrn}" + }, + "о": { + text: "{\\cyrchar\\cyro}" + }, + "п": { + text: "{\\cyrchar\\cyrp}" + }, + "р": { + text: "{\\cyrchar\\cyrr}" + }, + "с": { + text: "{\\cyrchar\\cyrs}" + }, + "т": { + text: "{\\cyrchar\\cyrt}" + }, + "у": { + text: "{\\cyrchar\\cyru}" + }, + "ф": { + text: "{\\cyrchar\\cyrf}" + }, + "х": { + text: "{\\cyrchar\\cyrh}" + }, + "ц": { + text: "{\\cyrchar\\cyrc}" + }, + "ч": { + text: "{\\cyrchar\\cyrch}" + }, + "ш": { + text: "{\\cyrchar\\cyrsh}" + }, + "щ": { + text: "{\\cyrchar\\cyrshch}" + }, + "ъ": { + text: "{\\cyrchar\\cyrhrdsn}" + }, + "ы": { + text: "{\\cyrchar\\cyrery}" + }, + "ь": { + text: "{\\cyrchar\\cyrsftsn}" + }, + "э": { + text: "{\\cyrchar\\cyrerev}" + }, + "ю": { + text: "{\\cyrchar\\cyryu}" + }, + "я": { + text: "{\\cyrchar\\cyrya}" + }, + "ё": { + text: "{\\cyrchar\\cyryo}" + }, + "ђ": { + text: "{\\cyrchar\\cyrdje}" + }, + "ѓ": { + text: "{\\cyrchar{\\'\\cyrg}}" + }, + "є": { + text: "{\\cyrchar\\cyrie}" + }, + "ѕ": { + text: "{\\cyrchar\\cyrdze}" + }, + "і": { + text: "{\\cyrchar\\cyrii}" + }, + "ї": { + text: "{\\cyrchar\\cyryi}" + }, + "ј": { + text: "{\\cyrchar\\cyrje}" + }, + "љ": { + text: "{\\cyrchar\\cyrlje}" + }, + "њ": { + text: "{\\cyrchar\\cyrnje}" + }, + "ћ": { + text: "{\\cyrchar\\cyrtshe}" + }, + "ќ": { + text: "{\\cyrchar{\\'\\cyrk}}" + }, + "ў": { + text: "{\\cyrchar\\cyrushrt}" + }, + "џ": { + text: "{\\cyrchar\\cyrdzhe}" + }, + "Ѡ": { + text: "{\\cyrchar\\CYROMEGA}" + }, + "ѡ": { + text: "{\\cyrchar\\cyromega}" + }, + "Ѣ": { + text: "{\\cyrchar\\CYRYAT}" + }, + "Ѥ": { + text: "{\\cyrchar\\CYRIOTE}" + }, + "ѥ": { + text: "{\\cyrchar\\cyriote}" + }, + "Ѧ": { + text: "{\\cyrchar\\CYRLYUS}" + }, + "ѧ": { + text: "{\\cyrchar\\cyrlyus}" + }, + "Ѩ": { + text: "{\\cyrchar\\CYRIOTLYUS}" + }, + "ѩ": { + text: "{\\cyrchar\\cyriotlyus}" + }, + "Ѫ": { + text: "{\\cyrchar\\CYRBYUS}" + }, + "Ѭ": { + text: "{\\cyrchar\\CYRIOTBYUS}" + }, + "ѭ": { + text: "{\\cyrchar\\cyriotbyus}" + }, + "Ѯ": { + text: "{\\cyrchar\\CYRKSI}" + }, + "ѯ": { + text: "{\\cyrchar\\cyrksi}" + }, + "Ѱ": { + text: "{\\cyrchar\\CYRPSI}" + }, + "ѱ": { + text: "{\\cyrchar\\cyrpsi}" + }, + "Ѳ": { + text: "{\\cyrchar\\CYRFITA}" + }, + "Ѵ": { + text: "{\\cyrchar\\CYRIZH}" + }, + "Ѹ": { + text: "{\\cyrchar\\CYRUK}" + }, + "ѹ": { + text: "{\\cyrchar\\cyruk}" + }, + "Ѻ": { + text: "{\\cyrchar\\CYROMEGARND}" + }, + "ѻ": { + text: "{\\cyrchar\\cyromegarnd}" + }, + "Ѽ": { + text: "{\\cyrchar\\CYROMEGATITLO}" + }, + "ѽ": { + text: "{\\cyrchar\\cyromegatitlo}" + }, + "Ѿ": { + text: "{\\cyrchar\\CYROT}" + }, + "ѿ": { + text: "{\\cyrchar\\cyrot}" + }, + "Ҁ": { + text: "{\\cyrchar\\CYRKOPPA}" + }, + "ҁ": { + text: "{\\cyrchar\\cyrkoppa}" + }, + "҂": { + text: "{\\cyrchar\\cyrthousands}" + }, + "҈": { + text: "{\\cyrchar\\cyrhundredthousands}" + }, + "҉": { + text: "{\\cyrchar\\cyrmillions}" + }, + "Ҍ": { + text: "{\\cyrchar\\CYRSEMISFTSN}" + }, + "ҍ": { + text: "{\\cyrchar\\cyrsemisftsn}" + }, + "Ҏ": { + text: "{\\cyrchar\\CYRRTICK}" + }, + "ҏ": { + text: "{\\cyrchar\\cyrrtick}" + }, + "Ґ": { + text: "{\\cyrchar\\CYRGUP}" + }, + "ґ": { + text: "{\\cyrchar\\cyrgup}" + }, + "Ғ": { + text: "{\\cyrchar\\CYRGHCRS}" + }, + "ғ": { + text: "{\\cyrchar\\cyrghcrs}" + }, + "Ҕ": { + text: "{\\cyrchar\\CYRGHK}" + }, + "ҕ": { + text: "{\\cyrchar\\cyrghk}" + }, + "Җ": { + text: "{\\cyrchar\\CYRZHDSC}" + }, + "җ": { + text: "{\\cyrchar\\cyrzhdsc}" + }, + "Ҙ": { + text: "{\\cyrchar\\CYRZDSC}" + }, + "ҙ": { + text: "{\\cyrchar\\cyrzdsc}" + }, + "Қ": { + text: "{\\cyrchar\\CYRKDSC}" + }, + "қ": { + text: "{\\cyrchar\\cyrkdsc}" + }, + "Ҝ": { + text: "{\\cyrchar\\CYRKVCRS}" + }, + "ҝ": { + text: "{\\cyrchar\\cyrkvcrs}" + }, + "Ҟ": { + text: "{\\cyrchar\\CYRKHCRS}" + }, + "ҟ": { + text: "{\\cyrchar\\cyrkhcrs}" + }, + "Ҡ": { + text: "{\\cyrchar\\CYRKBEAK}" + }, + "ҡ": { + text: "{\\cyrchar\\cyrkbeak}" + }, + "Ң": { + text: "{\\cyrchar\\CYRNDSC}" + }, + "ң": { + text: "{\\cyrchar\\cyrndsc}" + }, + "Ҥ": { + text: "{\\cyrchar\\CYRNG}" + }, + "ҥ": { + text: "{\\cyrchar\\cyrng}" + }, + "Ҧ": { + text: "{\\cyrchar\\CYRPHK}" + }, + "ҧ": { + text: "{\\cyrchar\\cyrphk}" + }, + "Ҩ": { + text: "{\\cyrchar\\CYRABHHA}" + }, + "ҩ": { + text: "{\\cyrchar\\cyrabhha}" + }, + "Ҫ": { + text: "{\\cyrchar\\CYRSDSC}" + }, + "ҫ": { + text: "{\\cyrchar\\cyrsdsc}" + }, + "Ҭ": { + text: "{\\cyrchar\\CYRTDSC}" + }, + "ҭ": { + text: "{\\cyrchar\\cyrtdsc}" + }, + "Ү": { + text: "{\\cyrchar\\CYRY}" + }, + "ү": { + text: "{\\cyrchar\\cyry}" + }, + "Ұ": { + text: "{\\cyrchar\\CYRYHCRS}" + }, + "ұ": { + text: "{\\cyrchar\\cyryhcrs}" + }, + "Ҳ": { + text: "{\\cyrchar\\CYRHDSC}" + }, + "ҳ": { + text: "{\\cyrchar\\cyrhdsc}" + }, + "Ҵ": { + text: "{\\cyrchar\\CYRTETSE}" + }, + "ҵ": { + text: "{\\cyrchar\\cyrtetse}" + }, + "Ҷ": { + text: "{\\cyrchar\\CYRCHRDSC}" + }, + "ҷ": { + text: "{\\cyrchar\\cyrchrdsc}" + }, + "Ҹ": { + text: "{\\cyrchar\\CYRCHVCRS}" + }, + "ҹ": { + text: "{\\cyrchar\\cyrchvcrs}" + }, + "Һ": { + text: "{\\cyrchar\\CYRSHHA}" + }, + "һ": { + text: "{\\cyrchar\\cyrshha}" + }, + "Ҽ": { + text: "{\\cyrchar\\CYRABHCH}" + }, + "ҽ": { + text: "{\\cyrchar\\cyrabhch}" + }, + "Ҿ": { + text: "{\\cyrchar\\CYRABHCHDSC}" + }, + "ҿ": { + text: "{\\cyrchar\\cyrabhchdsc}" + }, + "Ӏ": { + text: "{\\cyrchar\\CYRpalochka}" + }, + "Ӄ": { + text: "{\\cyrchar\\CYRKHK}" + }, + "ӄ": { + text: "{\\cyrchar\\cyrkhk}" + }, + "Ӈ": { + text: "{\\cyrchar\\CYRNHK}" + }, + "ӈ": { + text: "{\\cyrchar\\cyrnhk}" + }, + "Ӌ": { + text: "{\\cyrchar\\CYRCHLDSC}" + }, + "ӌ": { + text: "{\\cyrchar\\cyrchldsc}" + }, + "Ӕ": { + text: "{\\cyrchar\\CYRAE}" + }, + "ӕ": { + text: "{\\cyrchar\\cyrae}" + }, + "Ә": { + text: "{\\cyrchar\\CYRSCHWA}" + }, + "ә": { + text: "{\\cyrchar\\cyrschwa}" + }, + "Ӡ": { + text: "{\\cyrchar\\CYRABHDZE}" + }, + "ӡ": { + text: "{\\cyrchar\\cyrabhdze}" + }, + "Ө": { + text: "{\\cyrchar\\CYROTLD}" + }, + "ө": { + text: "{\\cyrchar\\cyrotld}" + }, + "ࡱ": { + math: "\\\\backslash" + }, + "ᵃ": { + math: "^{a}", + text: "\\textsuperscript{a}" + }, + "ᵇ": { + math: "^{b}", + text: "\\textsuperscript{b}" + }, + "ᵈ": { + math: "^{d}", + text: "\\textsuperscript{d}" + }, + "ᵉ": { + math: "^{e}", + text: "\\textsuperscript{e}" + }, + "ᵍ": { + math: "^{g}", + text: "\\textsuperscript{g}" + }, + "ᵏ": { + math: "^{k}", + text: "\\textsuperscript{k}" + }, + "ᵐ": { + math: "^{m}", + text: "\\textsuperscript{m}" + }, + "ᵒ": { + math: "^{o}", + text: "\\textsuperscript{o}" + }, + "ᵖ": { + math: "^{p}", + text: "\\textsuperscript{p}" + }, + "ᵗ": { + math: "^{t}", + text: "\\textsuperscript{t}" + }, + "ᵘ": { + math: "^{u}", + text: "\\textsuperscript{u}" + }, + "ᵛ": { + math: "^{v}", + text: "\\textsuperscript{v}" + }, + "ᶜ": { + math: "^{c}", + text: "\\textsuperscript{c}" + }, + "ᶠ": { + math: "^{f}", + text: "\\textsuperscript{f}" + }, + "ᶻ": { + math: "^{z}", + text: "\\textsuperscript{z}" + }, + "Ḃ": { + text: "{\\.B}" + }, + "ḃ": { + text: "{\\.b}" + }, + "Ḅ": { + text: "{\\d B}" + }, + "ḅ": { + text: "{\\d b}" + }, + "Ḇ": { + text: "{\\b B}" + }, + "ḇ": { + text: "{\\b b}" + }, + "Ḋ": { + text: "{\\.D}" + }, + "ḋ": { + text: "{\\.d}" + }, + "Ḍ": { + text: "{\\d D}" + }, + "ḍ": { + text: "{\\d d}" + }, + "Ḏ": { + text: "{\\b D}" + }, + "ḏ": { + text: "{\\b d}" + }, + "Ḑ": { + text: "{\\c D}" + }, + "ḑ": { + text: "{\\c d}" + }, + "Ḝ": { + text: "{\\c{\\u{E}}}" + }, + "ḝ": { + text: "{\\c{\\u{e}}}" + }, + "Ḟ": { + text: "{\\.F}" + }, + "ḟ": { + text: "{\\.f}" + }, + "Ḡ": { + text: "{\\=G}" + }, + "ḡ": { + text: "{\\=g}" + }, + "Ḣ": { + text: "{\\.H}" + }, + "ḣ": { + text: "{\\.h}" + }, + "Ḥ": { + text: "{\\d H}" + }, + "ḥ": { + text: "{\\d h}" + }, + "Ḧ": { + text: "{\\\"H}" + }, + "ḧ": { + text: "{\\\"h}" + }, + "Ḩ": { + text: "{\\c H}" + }, + "ḩ": { + text: "{\\c h}" + }, + "Ḱ": { + text: "{\\'K}" + }, + "ḱ": { + text: "{\\'k}" + }, + "Ḳ": { + text: "{\\d K}" + }, + "ḳ": { + text: "{\\d k}" + }, + "Ḵ": { + text: "{\\b K}" + }, + "ḵ": { + text: "{\\b k}" + }, + "Ḷ": { + text: "{\\d L}" + }, + "ḷ": { + text: "{\\d l}" + }, + "Ḻ": { + text: "{\\b L}" + }, + "ḻ": { + text: "{\\b l}" + }, + "Ḿ": { + text: "{\\'M}" + }, + "ḿ": { + text: "{\\'m}" + }, + "Ṁ": { + text: "{\\.M}" + }, + "ṁ": { + text: "{\\.m}" + }, + "Ṃ": { + text: "{\\d M}" + }, + "ṃ": { + text: "{\\d m}" + }, + "Ṅ": { + text: "{\\.N}" + }, + "ṅ": { + text: "{\\.n}" + }, + "Ṇ": { + text: "{\\d N}" + }, + "ṇ": { + text: "{\\d n}" + }, + "Ṉ": { + text: "{\\b N}" + }, + "ṉ": { + text: "{\\b n}" + }, + "Ṕ": { + text: "{\\'P}" + }, + "ṕ": { + text: "{\\'p}" + }, + "Ṗ": { + text: "{\\.P}" + }, + "ṗ": { + text: "{\\.p}" + }, + "Ṙ": { + text: "{\\.R}" + }, + "ṙ": { + text: "{\\.r}" + }, + "Ṛ": { + text: "{\\d R}" + }, + "ṛ": { + text: "{\\d r}" + }, + "Ṟ": { + text: "{\\b R}" + }, + "ṟ": { + text: "{\\b r}" + }, + "Ṡ": { + text: "{\\.S}" + }, + "ṡ": { + text: "{\\.s}" + }, + "Ṣ": { + text: "{\\d S}" + }, + "ṣ": { + text: "{\\d s}" + }, + "Ṫ": { + text: "{\\.T}" + }, + "ṫ": { + text: "{\\.t}" + }, + "Ṭ": { + text: "{\\d T}" + }, + "ṭ": { + text: "{\\d t}" + }, + "Ṯ": { + text: "{\\b T}" + }, + "ṯ": { + text: "{\\b t}" + }, + "Ṽ": { + text: "{\\~V}" + }, + "ṽ": { + text: "{\\~v}" + }, + "Ṿ": { + text: "{\\d V}" + }, + "ṿ": { + text: "{\\d v}" + }, + "Ẁ": { + text: "{\\`W}" + }, + "ẁ": { + text: "{\\`w}" + }, + "Ẃ": { + text: "{\\'W}" + }, + "ẃ": { + text: "{\\'w}" + }, + "Ẅ": { + text: "{\\\"W}" + }, + "ẅ": { + text: "{\\\"w}" + }, + "Ẇ": { + text: "{\\.W}" + }, + "ẇ": { + text: "{\\.w}" + }, + "Ẉ": { + text: "{\\d W}" + }, + "ẉ": { + text: "{\\d w}" + }, + "Ẋ": { + text: "{\\.X}" + }, + "ẋ": { + text: "{\\.x}" + }, + "Ẍ": { + text: "{\\\"X}" + }, + "ẍ": { + text: "{\\\"x}" + }, + "Ẏ": { + text: "{\\.Y}" + }, + "ẏ": { + text: "{\\.y}" + }, + "Ẑ": { + text: "{\\^Z}" + }, + "ẑ": { + text: "{\\^z}" + }, + "Ẓ": { + text: "{\\d Z}" + }, + "ẓ": { + text: "{\\d z}" + }, + "Ẕ": { + text: "{\\b Z}" + }, + "ẕ": { + text: "{\\b z}" + }, + "ẖ": { + text: "{\\b h}" + }, + "ẗ": { + text: "{\\\"t}" + }, + "ẘ": { + text: "{\\r{w}}" + }, + "ẙ": { + text: "{\\r{y}}" + }, + "Ạ": { + text: "{\\d A}" + }, + "ạ": { + text: "{\\d a}" + }, + "Ẹ": { + text: "{\\d E}" + }, + "ẹ": { + text: "{\\d e}" + }, + "Ẽ": { + text: "{\\~E}" + }, + "ẽ": { + text: "{\\~e}" + }, + "Ị": { + text: "{\\d I}" + }, + "ị": { + text: "{\\d i}" + }, + "Ọ": { + text: "{\\d O}" + }, + "ọ": { + text: "{\\d o}" + }, + "Ụ": { + text: "{\\d U}" + }, + "ụ": { + text: "{\\d u}" + }, + "Ỳ": { + text: "{\\`Y}" + }, + "ỳ": { + text: "{\\`y}" + }, + "Ỵ": { + text: "{\\d Y}" + }, + "ỵ": { + text: "{\\d y}" + }, + "Ỹ": { + text: "{\\~Y}" + }, + "ỹ": { + text: "{\\~y}" + }, + " ": { + text: " ", + space: true + }, + " ": { + math: "\\quad", + space: true + }, + " ": { + text: "\\hspace{0.6em}", + space: true + }, + " ": { + math: "\\quad", + space: true, + text: "\\hspace{1em}" + }, + " ": { + text: "\\;", + space: true + }, + " ": { + text: "\\hspace{0.25em}", + space: true + }, + " ": { + text: "\\hspace{0.166em}", + space: true + }, + " ": { + text: "\\hphantom{0}", + space: true + }, + " ": { + text: "\\hphantom{,}", + space: true + }, + " ": { + text: "\\,", + space: true + }, + " ": { + math: "\\mkern1mu", + space: true + }, + "​": { + text: "{\\mbox}", + space: true + }, + "‌": { + text: "{\\aftergroup\\ignorespaces}" + }, + "‐": { + text: "-" + }, + "‑": { + text: "-" + }, + "‒": { + text: "-" + }, + "–": { + text: "{\\textendash}" + }, + "—": { + text: "{\\textemdash}" + }, + "―": { + math: "\\horizbar", + text: "\\rule{1em}{1pt}" + }, + "‖": { + math: "\\Vert" + }, + "‗": { + math: "\\twolowline" + }, + "‘": { + text: "`" + }, + "’": { + text: "'" + }, + "‚": { + text: "," + }, + "‛": { + math: "\\Elzreapos" + }, + "“": { + text: "``" + }, + "”": { + text: "''" + }, + "„": { + text: ",," + }, + "‟": { + text: "{\\quotedblbase}" + }, + "†": { + math: "\\dagger", + text: "{\\textdagger}", + textpackages: [ + "textcomp" + ] + }, + "‡": { + math: "\\ddagger", + text: "{\\textdaggerdbl}", + textpackages: [ + "textcomp" + ] + }, + "•": { + math: "\\bullet", + text: "{\\textbullet}", + textpackages: [ + "textcomp" + ] + }, + "‣": { + text: ">" + }, + "․": { + text: "." + }, + "‥": { + math: "\\enleadertwodots", + text: ".." + }, + "…": { + math: "\\ldots", + text: "{\\ldots}" + }, + "‧": { + text: "-" + }, + " ": { + text: " ", + space: true + }, + "‰": { + text: "{\\textperthousand}", + textpackages: [ + "textcomp" + ] + }, + "‱": { + text: "{\\textpertenthousand}", + textpackages: [ + "textcomp" + ] + }, + "′": { + math: "{'}" + }, + "″": { + math: "{''}" + }, + "‴": { + math: "{'''}" + }, + "‵": { + math: "\\backprime" + }, + "‶": { + math: "\\backdprime" + }, + "‷": { + math: "\\backtrprime" + }, + "‸": { + math: "\\caretinsert" + }, + "‹": { + text: "{\\guilsinglleft}" + }, + "›": { + text: "{\\guilsinglright}" + }, + "‼": { + math: "\\Exclam" + }, + "‾": { + text: "-" + }, + "⁃": { + math: "\\hyphenbullet" + }, + "⁄": { + math: "\\fracslash" + }, + "⁇": { + math: "\\Question" + }, + "⁈": { + text: "?!" + }, + "⁉": { + text: "!?" + }, + "⁊": { + text: "7" + }, + "⁐": { + math: "\\closure" + }, + "⁗": { + math: "''''" + }, + " ": { + math: "\\:", + space: true, + text: "\\:" + }, + "⁠": { + text: "{\\nolinebreak}" + }, + "⁰": { + math: "^{0}" + }, + "ⁱ": { + math: "^{i}", + text: "\\textsuperscript{i}" + }, + "⁴": { + math: "^{4}" + }, + "⁵": { + math: "^{5}" + }, + "⁶": { + math: "^{6}" + }, + "⁷": { + math: "^{7}" + }, + "⁸": { + math: "^{8}" + }, + "⁹": { + math: "^{9}" + }, + "⁺": { + math: "^{+}" + }, + "⁻": { + math: "^{-}" + }, + "⁼": { + math: "^{=}" + }, + "⁽": { + math: "^{(}" + }, + "⁾": { + math: "^{)}" + }, + "ⁿ": { + math: "^{n}", + text: "\\textsuperscript{n}" + }, + "₀": { + math: "_{0}" + }, + "₁": { + math: "_{1}" + }, + "₂": { + math: "_{2}" + }, + "₃": { + math: "_{3}" + }, + "₄": { + math: "_{4}" + }, + "₅": { + math: "_{5}" + }, + "₆": { + math: "_{6}" + }, + "₇": { + math: "_{7}" + }, + "₈": { + math: "_{8}" + }, + "₉": { + math: "_{9}" + }, + "₊": { + math: "_{+}" + }, + "₋": { + math: "_{-}" + }, + "₌": { + math: "_{=}" + }, + "₍": { + math: "_{(}" + }, + "₎": { + math: "_{)}" + }, + "ₐ": { + math: "_{a}", + text: "\\textsubscript{a}" + }, + "ₑ": { + math: "_{e}", + text: "\\textsubscript{e}" + }, + "ₒ": { + math: "_{o}", + text: "\\textsubscript{o}" + }, + "ₓ": { + math: "_{x}", + text: "\\textsubscript{x}" + }, + "ₔ": { + text: "\\textsubscript{\\textschwa}", + textpackages: [ + "tipa" + ] + }, + "ₕ": { + math: "_{h}", + text: "\\textsubscript{h}" + }, + "ₖ": { + math: "_{k}", + text: "\\textsubscript{k}" + }, + "ₗ": { + math: "_{l}", + text: "\\textsubscript{l}" + }, + "ₘ": { + math: "_{m}", + text: "\\textsubscript{m}" + }, + "ₙ": { + math: "_{n}", + text: "\\textsubscript{n}" + }, + "ₚ": { + math: "_{p}", + text: "\\textsubscript{p}" + }, + "ₛ": { + math: "_{s}", + text: "\\textsubscript{s}" + }, + "ₜ": { + math: "_{t}", + text: "\\textsubscript{t}" + }, + "₧": { + text: "\\ensuremath{\\Elzpes}" + }, + "€": { + math: "\\euro", + text: "{\\texteuro}" + }, + "⃐": { + math: "\\lvec" + }, + "⃑": { + math: "\\rightharpoonup", + mathpackages: [ + "amsmath", + "amssymb" + ] + }, + "⃒": { + math: "\\vertoverlay" + }, + "⃖": { + math: "\\LVec" + }, + "⃗": { + math: "\\vec" + }, + "⃛": { + math: "\\dddot" + }, + "⃜": { + math: "\\ddddot" + }, + "⃝": { + math: "\\enclosecircle" + }, + "⃞": { + math: "\\enclosesquare" + }, + "⃟": { + math: "\\enclosediamond" + }, + "⃡": { + math: "\\overleftrightarrow" + }, + "⃤": { + math: "\\enclosetriangle" + }, + "⃧": { + math: "\\annuity" + }, + "⃨": { + math: "\\threeunderdot" + }, + "⃩": { + math: "\\widebridgeabove" + }, + "⃬": { + math: "\\underrightharpoondown" + }, + "⃭": { + math: "\\underleftharpoondown" + }, + "⃮": { + math: "\\underleftarrow" + }, + "⃯": { + math: "\\underrightarrow" + }, + "⃰": { + math: "\\asteraccent" + }, + "℀": { + text: "a/c" + }, + "℁": { + text: "a/s" + }, + "ℂ": { + math: "\\mathbb{C}" + }, + "℃": { + text: "{\\textcelsius}" + }, + "℅": { + text: "c/o" + }, + "℆": { + text: "c/u" + }, + "ℇ": { + math: "\\Euler" + }, + "℉": { + text: "F" + }, + "ℊ": { + math: "\\mathscr{g}" + }, + "ℋ": { + math: "\\mathscr{H}" + }, + "ℌ": { + math: "\\mathfrak{H}" + }, + "ℍ": { + math: "\\mathbb{H}" + }, + "ℎ": { + math: "\\Planckconst" + }, + "ℏ": { + math: "\\hslash" + }, + "ℐ": { + math: "\\mathscr{I}" + }, + "ℑ": { + math: "\\mathfrak{I}" + }, + "ℒ": { + math: "\\mathscr{L}" + }, + "ℓ": { + math: "\\mathscr{l}" + }, + "ℕ": { + math: "\\mathbb{N}" + }, + "№": { + text: "{\\cyrchar\\textnumero}" + }, + "℗": { + text: "{\\textcircledP}" + }, + "℘": { + math: "\\wp" + }, + "ℙ": { + math: "\\mathbb{P}" + }, + "ℚ": { + math: "\\mathbb{Q}" + }, + "ℛ": { + math: "\\mathscr{R}" + }, + "ℜ": { + math: "\\mathfrak{R}" + }, + "ℝ": { + math: "\\mathbb{R}" + }, + "℞": { + math: "\\Elzxrat" + }, + "℠": { + text: "{\\textservicemark}" + }, + "℡": { + text: "TEL" + }, + "™": { + text: "{\\texttrademark}", + textpackages: [ + "textcomp" + ] + }, + "ℤ": { + math: "\\mathbb{Z}" + }, + "Ω": { + math: "\\Omega" + }, + "℧": { + math: "\\mho" + }, + "ℨ": { + math: "\\mathfrak{Z}" + }, + "℩": { + text: "{\\textriota}" + }, + "K": { + text: "K" + }, + "Å": { + math: "\\Angstroem", + text: "{\\AA}" + }, + "ℬ": { + math: "\\mathscr{B}" + }, + "ℭ": { + math: "\\mathfrak{C}" + }, + "℮": { + text: "{\\textestimated}" + }, + "ℯ": { + math: "\\mathscr{e}" + }, + "ℰ": { + math: "\\mathscr{E}" + }, + "ℱ": { + math: "\\mathscr{F}" + }, + "Ⅎ": { + math: "\\Finv" + }, + "ℳ": { + math: "\\mathscr{M}" + }, + "ℴ": { + math: "\\mathscr{o}" + }, + "ℵ": { + math: "\\aleph" + }, + "ℶ": { + math: "\\beth" + }, + "ℷ": { + math: "\\gimel" + }, + "ℸ": { + math: "\\daleth" + }, + "ℼ": { + math: "\\mathbb{\\pi}" + }, + "ℽ": { + math: "\\mathbb{\\gamma}" + }, + "ℾ": { + math: "\\mathbb{\\Gamma}" + }, + "ℿ": { + math: "\\mathbb{\\Pi}" + }, + "⅀": { + math: "\\mathbb{\\Sigma}" + }, + "⅁": { + math: "\\Game" + }, + "⅂": { + math: "\\sansLturned" + }, + "⅃": { + math: "\\sansLmirrored" + }, + "⅄": { + math: "\\Yup" + }, + "ⅅ": { + math: "\\CapitalDifferentialD" + }, + "ⅆ": { + math: "\\DifferentialD" + }, + "ⅇ": { + math: "\\ExponetialE" + }, + "ⅈ": { + math: "\\ComplexI" + }, + "ⅉ": { + math: "\\ComplexJ" + }, + "⅊": { + math: "\\PropertyLine" + }, + "⅋": { + math: "\\invamp" + }, + "⅐": { + math: "\\frac{1}{7}" + }, + "⅑": { + math: "\\frac{1}{9}" + }, + "⅒": { + math: "\\frac{1}{10}" + }, + "⅓": { + math: "\\frac{1}{3}" + }, + "⅔": { + math: "\\frac{2}{3}" + }, + "⅕": { + math: "\\frac{1}{5}" + }, + "⅖": { + math: "\\frac{2}{5}" + }, + "⅗": { + math: "\\frac{3}{5}" + }, + "⅘": { + math: "\\frac{4}{5}" + }, + "⅙": { + math: "\\frac{1}{6}" + }, + "⅚": { + math: "\\frac{5}{6}" + }, + "⅛": { + math: "\\frac{1}{8}" + }, + "⅜": { + math: "\\frac{3}{8}" + }, + "⅝": { + math: "\\frac{5}{8}" + }, + "⅞": { + math: "\\frac{7}{8}" + }, + "⅟": { + math: "\\frac{1}" + }, + "Ⅰ": { + text: "I" + }, + "Ⅱ": { + text: "II" + }, + "Ⅲ": { + text: "III" + }, + "Ⅳ": { + text: "IV" + }, + "Ⅴ": { + text: "V" + }, + "Ⅵ": { + text: "VI" + }, + "Ⅶ": { + text: "VII" + }, + "Ⅷ": { + text: "VIII" + }, + "Ⅸ": { + text: "IX" + }, + "Ⅹ": { + text: "X" + }, + "Ⅺ": { + text: "XI" + }, + "Ⅻ": { + text: "XII" + }, + "Ⅼ": { + text: "L" + }, + "Ⅽ": { + text: "C" + }, + "Ⅾ": { + text: "D" + }, + "Ⅿ": { + text: "M" + }, + "ⅰ": { + text: "i" + }, + "ⅱ": { + text: "ii" + }, + "ⅲ": { + text: "iii" + }, + "ⅳ": { + text: "iv" + }, + "ⅴ": { + text: "v" + }, + "ⅵ": { + text: "vi" + }, + "ⅶ": { + text: "vii" + }, + "ⅷ": { + text: "viii" + }, + "ⅸ": { + text: "ix" + }, + "ⅹ": { + text: "x" + }, + "ⅺ": { + text: "xi" + }, + "ⅻ": { + text: "xii" + }, + "ⅼ": { + text: "l" + }, + "ⅽ": { + text: "c" + }, + "ⅾ": { + text: "d" + }, + "ⅿ": { + text: "m" + }, + "↉": { + math: "\\frac{0}{3}" + }, + "←": { + math: "\\leftarrow" + }, + "↑": { + math: "\\uparrow" + }, + "→": { + math: "\\rightarrow", + text: "{\\textrightarrow}", + textpackages: [ + "textcomp" + ] + }, + "↓": { + math: "\\downarrow" + }, + "↔": { + math: "\\leftrightarrow" + }, + "↕": { + math: "\\updownarrow" + }, + "↖": { + math: "\\nwarrow" + }, + "↗": { + math: "\\nearrow" + }, + "↘": { + math: "\\searrow" + }, + "↙": { + math: "\\swarrow" + }, + "↚": { + math: "\\nleftarrow" + }, + "↛": { + math: "\\nrightarrow" + }, + "↜": { + math: "\\arrowwaveleft" + }, + "↝": { + math: "\\arrowwaveright" + }, + "↞": { + math: "\\twoheadleftarrow" + }, + "↟": { + math: "\\twoheaduparrow" + }, + "↠": { + math: "\\twoheadrightarrow" + }, + "↡": { + math: "\\twoheaddownarrow" + }, + "↢": { + math: "\\leftarrowtail" + }, + "↣": { + math: "\\rightarrowtail" + }, + "↤": { + math: "\\mapsfrom" + }, + "↥": { + math: "\\MapsUp" + }, + "↦": { + math: "\\mapsto" + }, + "↧": { + math: "\\MapsDown" + }, + "↨": { + math: "\\updownarrowbar" + }, + "↩": { + math: "\\hookleftarrow" + }, + "↪": { + math: "\\hookrightarrow" + }, + "↫": { + math: "\\looparrowleft" + }, + "↬": { + math: "\\looparrowright" + }, + "↭": { + math: "\\leftrightsquigarrow" + }, + "↮": { + math: "\\nleftrightarrow" + }, + "↯": { + math: "\\lightning" + }, + "↰": { + math: "\\Lsh" + }, + "↱": { + math: "\\Rsh" + }, + "↲": { + math: "\\dlsh" + }, + "↳": { + text: "\\reflectbox{\\carriagereturn}", + textpackages: [ + "graphics", + "unicode-math" + ] + }, + "↴": { + math: "\\linefeed" + }, + "↵": { + math: "\\carriagereturn" + }, + "↶": { + math: "\\curvearrowleft" + }, + "↷": { + math: "\\curvearrowright" + }, + "↸": { + math: "\\barovernorthwestarrow" + }, + "↹": { + math: "\\barleftarrowrightarrowba" + }, + "↺": { + math: "\\circlearrowleft" + }, + "↻": { + math: "\\circlearrowright" + }, + "↼": { + math: "\\leftharpoonup" + }, + "↽": { + math: "\\leftharpoondown" + }, + "↾": { + math: "\\upharpoonright" + }, + "↿": { + math: "\\upharpoonleft" + }, + "⇀": { + math: "\\rightharpoonup", + mathpackages: [ + "amsmath", + "amssymb" + ] + }, + "⇁": { + math: "\\rightharpoondown" + }, + "⇂": { + math: "\\downharpoonright" + }, + "⇃": { + math: "\\downharpoonleft" + }, + "⇄": { + math: "\\rightleftarrows" + }, + "⇅": { + math: "\\dblarrowupdown" + }, + "⇆": { + math: "\\leftrightarrows" + }, + "⇇": { + math: "\\leftleftarrows" + }, + "⇈": { + math: "\\upuparrows" + }, + "⇉": { + math: "\\rightrightarrows" + }, + "⇊": { + math: "\\downdownarrows" + }, + "⇋": { + math: "\\leftrightharpoons" + }, + "⇌": { + math: "\\rightleftharpoons" + }, + "⇍": { + math: "\\nLeftarrow" + }, + "⇎": { + math: "\\nLeftrightarrow" + }, + "⇏": { + math: "\\nRightarrow" + }, + "⇐": { + math: "\\Leftarrow" + }, + "⇑": { + math: "\\Uparrow" + }, + "⇒": { + math: "\\Rightarrow" + }, + "⇓": { + math: "\\Downarrow" + }, + "⇔": { + math: "\\Leftrightarrow" + }, + "⇕": { + math: "\\Updownarrow" + }, + "⇖": { + math: "\\Nwarrow" + }, + "⇗": { + math: "\\Nearrow" + }, + "⇘": { + math: "\\Searrow" + }, + "⇙": { + math: "\\Swarrow" + }, + "⇚": { + math: "\\Lleftarrow" + }, + "⇛": { + math: "\\Rrightarrow" + }, + "⇜": { + math: "\\leftsquigarrow" + }, + "⇝": { + math: "\\rightsquigarrow" + }, + "⇞": { + math: "\\nHuparrow" + }, + "⇟": { + math: "\\nHdownarrow" + }, + "⇠": { + math: "\\dashleftarrow" + }, + "⇡": { + math: "\\updasharrow" + }, + "⇢": { + math: "\\dashrightarrow" + }, + "⇣": { + math: "\\downdasharrow" + }, + "⇤": { + math: "\\LeftArrowBar" + }, + "⇥": { + math: "\\RightArrowBar" + }, + "⇦": { + math: "\\leftwhitearrow" + }, + "⇧": { + math: "\\upwhitearrow" + }, + "⇨": { + math: "\\rightwhitearrow" + }, + "⇩": { + math: "\\downwhitearrow" + }, + "⇪": { + math: "\\whitearrowupfrombar" + }, + "⇴": { + math: "\\circleonrightarrow" + }, + "⇵": { + math: "\\DownArrowUpArrow" + }, + "⇶": { + math: "\\rightthreearrows" + }, + "⇷": { + math: "\\nvleftarrow" + }, + "⇸": { + math: "\\pfun" + }, + "⇹": { + math: "\\nvleftrightarrow" + }, + "⇺": { + math: "\\nVleftarrow" + }, + "⇻": { + math: "\\ffun" + }, + "⇼": { + math: "\\nVleftrightarrow" + }, + "⇽": { + math: "\\leftarrowtriangle" + }, + "⇾": { + math: "\\rightarrowtriangle" + }, + "⇿": { + math: "\\leftrightarrowtriangle" + }, + "∀": { + math: "\\forall" + }, + "∁": { + math: "\\complement" + }, + "∂": { + math: "\\partial" + }, + "∃": { + math: "\\exists" + }, + "∄": { + math: "\\nexists" + }, + "∅": { + math: "\\varnothing" + }, + "∆": { + math: "\\increment" + }, + "∇": { + math: "\\nabla" + }, + "∈": { + math: "\\in" + }, + "∉": { + math: "\\not\\in" + }, + "∊": { + math: "\\smallin" + }, + "∋": { + math: "\\ni" + }, + "∌": { + math: "\\not\\ni" + }, + "∍": { + math: "\\smallni" + }, + "∎": { + math: "\\QED" + }, + "∏": { + math: "\\prod" + }, + "∐": { + math: "\\coprod" + }, + "∑": { + math: "\\sum" + }, + "−": { + math: "-", + text: "-" + }, + "∓": { + math: "\\mp" + }, + "∔": { + math: "\\dotplus" + }, + "∕": { + text: "/" + }, + "∖": { + math: "\\setminus" + }, + "∗": { + math: "{_\\ast}" + }, + "∘": { + math: "\\circ" + }, + "∙": { + math: "\\bullet" + }, + "√": { + math: "\\surd" + }, + "∛": { + math: "\\sqrt[3]" + }, + "∜": { + math: "\\sqrt[4]" + }, + "∝": { + math: "\\propto" + }, + "∞": { + math: "\\infty" + }, + "∟": { + math: "\\rightangle" + }, + "∠": { + math: "\\angle" + }, + "∡": { + math: "\\measuredangle" + }, + "∢": { + math: "\\sphericalangle" + }, + "∣": { + math: "\\mid" + }, + "∤": { + math: "\\nmid" + }, + "∥": { + math: "\\parallel" + }, + "∦": { + math: "\\nparallel" + }, + "∧": { + math: "\\wedge" + }, + "∨": { + math: "\\vee" + }, + "∩": { + math: "\\cap" + }, + "∪": { + math: "\\cup" + }, + "∫": { + math: "\\int" + }, + "∬": { + math: "{\\int\\!\\int}" + }, + "∭": { + math: "{\\int\\!\\int\\!\\int}" + }, + "∮": { + math: "\\oint" + }, + "∯": { + math: "\\surfintegral" + }, + "∰": { + math: "\\volintegral" + }, + "∱": { + math: "\\clwintegral" + }, + "∲": { + math: "\\lcirclerightint", + mathpackages: [ + "MnSymbol" + ] + }, + "∳": { + math: "\\rcirclerightint", + mathpackages: [ + "MnSymbol" + ] + }, + "∴": { + math: "\\therefore" + }, + "∵": { + math: "\\because" + }, + "∶": { + math: ":" + }, + "∷": { + math: "\\Colon" + }, + "∸": { + math: "\\dotdiv", + mathpackages: [ + "mathabx" + ] + }, + "∹": { + math: "\\eqcolon" + }, + "∺": { + math: "\\mathbin{{:}\\!\\!{-}\\!\\!{:}}" + }, + "∻": { + math: "\\homothetic" + }, + "∼": { + math: "\\sim" + }, + "∽": { + math: "\\backsim" + }, + "∾": { + math: "\\lazysinv" + }, + "∿": { + math: "\\AC" + }, + "≀": { + math: "\\wr" + }, + "≁": { + math: "\\not\\sim" + }, + "≂": { + math: "\\texteqsim", + mathpackages: [ + "xecjk" + ] + }, + "≂̸": { + math: "\\NotEqualTilde" + }, + "≃": { + math: "\\simeq" + }, + "≄": { + math: "\\not\\simeq" + }, + "≅": { + math: "\\cong" + }, + "≆": { + math: "\\approxnotequal" + }, + "≇": { + math: "\\not\\cong" + }, + "≈": { + math: "\\approx" + }, + "≉": { + math: "\\not\\approx" + }, + "≊": { + math: "\\approxeq" + }, + "≋": { + math: "\\tildetrpl" + }, + "≋̸": { + math: "\\not\\apid" + }, + "≌": { + math: "\\allequal" + }, + "≍": { + math: "\\asymp" + }, + "≎": { + math: "\\Bumpeq" + }, + "≎̸": { + math: "\\NotHumpDownHump" + }, + "≏": { + math: "\\bumpeq" + }, + "≏̸": { + math: "\\NotHumpEqual" + }, + "≐": { + math: "\\doteq" + }, + "≐̸": { + math: "\\not\\doteq" + }, + "≑": { + math: "\\doteqdot" + }, + "≒": { + math: "\\fallingdotseq" + }, + "≓": { + math: "\\risingdotseq" + }, + "≔": { + math: "\\coloneq", + text: ":=" + }, + "≕": { + math: "=:" + }, + "≖": { + math: "\\eqcirc" + }, + "≗": { + math: "\\circeq" + }, + "≘": { + math: "\\arceq" + }, + "≙": { + math: "\\estimates" + }, + "≛": { + math: "\\starequal" + }, + "≜": { + math: "\\triangleq" + }, + "≝": { + math: "\\eqdef" + }, + "≞": { + math: "\\measeq" + }, + "≠": { + math: "\\neq" + }, + "≡": { + math: "\\equiv" + }, + "≢": { + math: "\\not\\equiv" + }, + "≣": { + math: "\\Equiv" + }, + "≤": { + math: "\\leq" + }, + "≥": { + math: "\\geq" + }, + "≦": { + math: "\\leqq" + }, + "≧": { + math: "\\geqq" + }, + "≨": { + math: "\\lneqq" + }, + "≨︀": { + math: "\\lvertneqq" + }, + "≩": { + math: "\\gneqq" + }, + "≩︀": { + math: "\\gvertneqq" + }, + "≪": { + math: "\\ll" + }, + "≪̸": { + math: "\\NotLessLess" + }, + "≫": { + math: "\\gg" + }, + "≫̸": { + math: "\\NotGreaterGreater" + }, + "≬": { + math: "\\between" + }, + "≭": { + math: "{\\not\\kern-0.3em\\times}" + }, + "≮": { + math: "\\not<" + }, + "≯": { + math: "\\not>" + }, + "≰": { + math: "\\not\\leq" + }, + "≱": { + math: "\\not\\geq" + }, + "≲": { + math: "\\lessequivlnt" + }, + "≳": { + math: "\\greaterequivlnt" + }, + "≶": { + math: "\\lessgtr" + }, + "≷": { + math: "\\gtrless" + }, + "≸": { + math: "\\notlessgreater" + }, + "≹": { + math: "\\notgreaterless" + }, + "≺": { + math: "\\prec" + }, + "≻": { + math: "\\succ" + }, + "≼": { + math: "\\preccurlyeq" + }, + "≽": { + math: "\\succcurlyeq" + }, + "≾": { + math: "\\precapprox" + }, + "≾̸": { + math: "\\NotPrecedesTilde" + }, + "≿": { + math: "\\succapprox" + }, + "≿̸": { + math: "\\NotSucceedsTilde" + }, + "⊀": { + math: "\\not\\prec" + }, + "⊁": { + math: "\\not\\succ" + }, + "⊂": { + math: "\\subset" + }, + "⊃": { + math: "\\supset" + }, + "⊄": { + math: "\\not\\subset" + }, + "⊅": { + math: "\\not\\supset" + }, + "⊆": { + math: "\\subseteq" + }, + "⊇": { + math: "\\supseteq" + }, + "⊈": { + math: "\\not\\subseteq" + }, + "⊉": { + math: "\\not\\supseteq" + }, + "⊊": { + math: "\\subsetneq" + }, + "⊊︀": { + math: "\\varsubsetneqq" + }, + "⊋": { + math: "\\supsetneq" + }, + "⊋︀": { + math: "\\varsupsetneq" + }, + "⊌": { + math: "\\cupleftarrow" + }, + "⊍": { + math: "\\cupdot" + }, + "⊎": { + math: "\\uplus" + }, + "⊏": { + math: "\\sqsubset" + }, + "⊏̸": { + math: "\\NotSquareSubset" + }, + "⊐": { + math: "\\sqsupset" + }, + "⊐̸": { + math: "\\NotSquareSuperset" + }, + "⊑": { + math: "\\sqsubseteq" + }, + "⊒": { + math: "\\sqsupseteq" + }, + "⊓": { + math: "\\sqcap" + }, + "⊔": { + math: "\\sqcup" + }, + "⊕": { + math: "\\oplus" + }, + "⊖": { + math: "\\ominus" + }, + "⊗": { + math: "\\otimes" + }, + "⊘": { + math: "\\oslash" + }, + "⊙": { + math: "\\odot" + }, + "⊚": { + math: "\\circledcirc" + }, + "⊛": { + math: "\\circledast" + }, + "⊜": { + math: "\\circledequal" + }, + "⊝": { + math: "\\circleddash" + }, + "⊞": { + math: "\\boxplus" + }, + "⊟": { + math: "\\boxminus" + }, + "⊠": { + math: "\\boxtimes" + }, + "⊡": { + math: "\\boxdot" + }, + "⊢": { + math: "\\vdash" + }, + "⊣": { + math: "\\dashv" + }, + "⊤": { + math: "\\top" + }, + "⊥": { + math: "\\perp" + }, + "⊦": { + math: "\\assert" + }, + "⊧": { + math: "\\truestate" + }, + "⊨": { + math: "\\forcesextra" + }, + "⊩": { + math: "\\Vdash" + }, + "⊪": { + math: "\\Vvdash" + }, + "⊫": { + math: "\\VDash" + }, + "⊬": { + math: "\\nvdash" + }, + "⊭": { + math: "\\nvDash" + }, + "⊮": { + math: "\\nVdash" + }, + "⊯": { + math: "\\nVDash" + }, + "⊰": { + math: "\\prurel" + }, + "⊱": { + math: "\\scurel" + }, + "⊲": { + math: "\\vartriangleleft" + }, + "⊳": { + math: "\\vartriangleright" + }, + "⊴": { + math: "\\trianglelefteq" + }, + "⊵": { + math: "\\trianglerighteq" + }, + "⊶": { + math: "\\original" + }, + "⊷": { + math: "\\image" + }, + "⊸": { + math: "\\multimap" + }, + "⊹": { + math: "\\hermitconjmatrix" + }, + "⊺": { + math: "\\intercal" + }, + "⊻": { + math: "\\veebar" + }, + "⊼": { + math: "\\barwedge" + }, + "⊽": { + math: "\\barvee" + }, + "⊾": { + math: "\\rightanglearc" + }, + "⊿": { + math: "\\varlrtriangle" + }, + "⋂": { + math: "\\bigcap" + }, + "⋃": { + math: "\\bigcup" + }, + "⋄": { + math: "\\diamond" + }, + "⋅": { + math: "\\cdot" + }, + "⋆": { + math: "\\star" + }, + "⋇": { + math: "\\divideontimes" + }, + "⋈": { + math: "\\bowtie" + }, + "⋉": { + math: "\\ltimes" + }, + "⋊": { + math: "\\rtimes" + }, + "⋋": { + math: "\\leftthreetimes" + }, + "⋌": { + math: "\\rightthreetimes" + }, + "⋍": { + math: "\\backsimeq" + }, + "⋎": { + math: "\\curlyvee" + }, + "⋏": { + math: "\\curlywedge" + }, + "⋐": { + math: "\\Subset" + }, + "⋑": { + math: "\\Supset" + }, + "⋒": { + math: "\\Cap" + }, + "⋓": { + math: "\\Cup" + }, + "⋔": { + math: "\\pitchfork" + }, + "⋕": { + math: "\\hash" + }, + "⋖": { + math: "\\lessdot" + }, + "⋗": { + math: "\\gtrdot" + }, + "⋘": { + math: "\\verymuchless" + }, + "⋙": { + math: "\\verymuchgreater" + }, + "⋚": { + math: "\\lesseqgtr" + }, + "⋛": { + math: "\\gtreqless" + }, + "⋜": { + math: "\\eqless" + }, + "⋝": { + math: "\\eqgtr" + }, + "⋞": { + math: "\\curlyeqprec" + }, + "⋟": { + math: "\\curlyeqsucc" + }, + "⋠": { + math: "\\npreceq" + }, + "⋡": { + math: "\\nsucceq" + }, + "⋢": { + math: "\\not\\sqsubseteq" + }, + "⋣": { + math: "\\not\\sqsupseteq" + }, + "⋤": { + math: "\\sqsubsetneq" + }, + "⋥": { + math: "\\Elzsqspne" + }, + "⋦": { + math: "\\lnsim" + }, + "⋧": { + math: "\\gnsim" + }, + "⋨": { + math: "\\precedesnotsimilar" + }, + "⋩": { + math: "\\succnsim" + }, + "⋪": { + math: "\\ntriangleleft" + }, + "⋫": { + math: "\\ntriangleright" + }, + "⋬": { + math: "\\ntrianglelefteq" + }, + "⋭": { + math: "\\ntrianglerighteq" + }, + "⋮": { + math: "\\vdots" + }, + "⋯": { + math: "\\cdots" + }, + "⋰": { + math: "\\upslopeellipsis" + }, + "⋱": { + math: "\\downslopeellipsis" + }, + "⋲": { + math: "\\disin" + }, + "⋳": { + math: "\\varisins" + }, + "⋴": { + math: "\\isins" + }, + "⋵": { + math: "\\isindot" + }, + "⋶": { + math: "\\barin" + }, + "⋷": { + math: "\\isinobar" + }, + "⋸": { + math: "\\isinvb" + }, + "⋹": { + math: "\\isinE" + }, + "⋺": { + math: "\\nisd" + }, + "⋻": { + math: "\\varnis" + }, + "⋼": { + math: "\\nis" + }, + "⋽": { + math: "\\varniobar" + }, + "⋾": { + math: "\\niobar" + }, + "⋿": { + math: "\\bagmember" + }, + "⌀": { + math: "\\diameter" + }, + "⌂": { + math: "\\house" + }, + "⌅": { + math: "\\varbarwedge", + text: "{\\barwedge}" + }, + "⌆": { + math: "\\perspcorrespond" + }, + "⌈": { + math: "\\lceil" + }, + "⌉": { + math: "\\rceil" + }, + "⌊": { + math: "\\lfloor" + }, + "⌋": { + math: "\\rfloor" + }, + "⌐": { + math: "\\invneg" + }, + "⌑": { + math: "\\wasylozenge" + }, + "⌒": { + math: "\\profline" + }, + "⌓": { + math: "\\profsurf" + }, + "⌕": { + math: "\\recorder" + }, + "⌖": { + math: "{\\mathchar\"2208}" + }, + "⌗": { + math: "\\viewdata" + }, + "⌙": { + math: "\\turnednot" + }, + "⌜": { + math: "\\ulcorner" + }, + "⌝": { + math: "\\urcorner" + }, + "⌞": { + math: "\\llcorner" + }, + "⌟": { + math: "\\lrcorner" + }, + "⌠": { + math: "\\inttop" + }, + "⌡": { + math: "\\intbottom" + }, + "⌢": { + math: "\\frown" + }, + "⌣": { + math: "\\smile" + }, + "〈": { + math: "\\langle" + }, + "〉": { + math: "\\rangle" + }, + "⌬": { + math: "\\varhexagonlrbonds" + }, + "⌲": { + math: "\\conictaper" + }, + "⌶": { + math: "\\topbot" + }, + "⌹": { + math: "\\APLinv" + }, + "⌿": { + math: "\\notslash" + }, + "⍀": { + math: "\\notbackslash" + }, + "⍇": { + math: "\\APLleftarrowbox" + }, + "⍈": { + math: "\\APLrightarrowbox" + }, + "⍉": { + math: "\\invdiameter" + }, + "⍐": { + math: "\\APLuparrowbox" + }, + "⍓": { + math: "\\APLboxupcaret" + }, + "⍗": { + math: "\\APLdownarrowbox" + }, + "⍝": { + math: "\\APLcomment" + }, + "⍞": { + math: "\\APLinput" + }, + "⍟": { + math: "\\APLlog" + }, + "⍰": { + math: "\\APLboxquestion" + }, + "⍼": { + math: "\\rangledownzigzagarrow" + }, + "⎔": { + math: "\\hexagon" + }, + "⎛": { + math: "\\lparenuend" + }, + "⎜": { + math: "\\lparenextender" + }, + "⎝": { + math: "\\lparenlend" + }, + "⎞": { + math: "\\rparenuend" + }, + "⎟": { + math: "\\rparenextender" + }, + "⎠": { + math: "\\rparenlend" + }, + "⎡": { + math: "\\lbrackuend" + }, + "⎢": { + math: "\\lbrackextender" + }, + "⎣": { + math: "\\Elzdlcorn" + }, + "⎤": { + math: "\\rbrackuend" + }, + "⎥": { + math: "\\rbrackextender" + }, + "⎦": { + math: "\\rbracklend" + }, + "⎧": { + math: "\\lbraceuend" + }, + "⎨": { + math: "\\lbracemid" + }, + "⎩": { + math: "\\lbracelend" + }, + "⎪": { + math: "\\vbraceextender" + }, + "⎫": { + math: "\\rbraceuend" + }, + "⎬": { + math: "\\rbracemid" + }, + "⎭": { + math: "\\rbracelend" + }, + "⎮": { + math: "\\intextender" + }, + "⎯": { + math: "\\harrowextender" + }, + "⎰": { + math: "\\lmoustache" + }, + "⎱": { + math: "\\rmoustache" + }, + "⎲": { + math: "\\sumtop" + }, + "⎳": { + math: "\\sumbottom" + }, + "⎴": { + math: "\\overbracket" + }, + "⎵": { + math: "\\underbracket" + }, + "⎶": { + math: "\\bbrktbrk" + }, + "⎷": { + math: "\\sqrtbottom" + }, + "⎸": { + math: "\\lvboxline" + }, + "⎹": { + math: "\\rvboxline" + }, + "⏎": { + math: "\\varcarriagereturn" + }, + "⏜": { + math: "\\overparen" + }, + "⏝": { + math: "\\underparen" + }, + "⏞": { + math: "\\overbrace" + }, + "⏟": { + math: "\\underbrace" + }, + "⏠": { + math: "\\obrbrak" + }, + "⏡": { + math: "\\ubrbrak" + }, + "⏢": { + math: "\\trapezium" + }, + "⏣": { + math: "\\benzenr" + }, + "⏤": { + math: "\\strns" + }, + "⏥": { + math: "\\fltns" + }, + "⏦": { + math: "\\accurrent" + }, + "⏧": { + math: "\\elinters" + }, + "␀": { + text: "NUL" + }, + "␁": { + text: "SOH" + }, + "␂": { + text: "STX" + }, + "␃": { + text: "ETX" + }, + "␄": { + text: "EOT" + }, + "␅": { + text: "ENQ" + }, + "␆": { + text: "ACK" + }, + "␇": { + text: "BEL" + }, + "␈": { + text: "BS" + }, + "␉": { + text: "HT" + }, + "␊": { + text: "LF" + }, + "␋": { + text: "VT" + }, + "␌": { + text: "FF" + }, + "␍": { + text: "CR" + }, + "␎": { + text: "SO" + }, + "␏": { + text: "SI" + }, + "␐": { + text: "DLE" + }, + "␑": { + text: "DC1" + }, + "␒": { + text: "DC2" + }, + "␓": { + text: "DC3" + }, + "␔": { + text: "DC4" + }, + "␕": { + text: "NAK" + }, + "␖": { + text: "SYN" + }, + "␗": { + text: "ETB" + }, + "␘": { + text: "CAN" + }, + "␙": { + text: "EM" + }, + "␚": { + text: "SUB" + }, + "␛": { + text: "ESC" + }, + "␜": { + text: "FS" + }, + "␝": { + text: "GS" + }, + "␞": { + text: "RS" + }, + "␟": { + text: "US" + }, + "␠": { + text: "SP" + }, + "␡": { + text: "DEL" + }, + "␣": { + text: "{\\textvisiblespace}" + }, + "␤": { + text: "NL" + }, + "␥": { + text: "///" + }, + "␦": { + text: "?" + }, + "①": { + text: "\\ding{172}" + }, + "②": { + text: "\\ding{173}" + }, + "③": { + text: "\\ding{174}" + }, + "④": { + text: "\\ding{175}" + }, + "⑤": { + text: "\\ding{176}" + }, + "⑥": { + text: "\\ding{177}" + }, + "⑦": { + text: "\\ding{178}" + }, + "⑧": { + text: "\\ding{179}" + }, + "⑨": { + text: "\\ding{180}" + }, + "⑩": { + text: "\\ding{181}" + }, + "⑪": { + text: "(11)" + }, + "⑫": { + text: "(12)" + }, + "⑬": { + text: "(13)" + }, + "⑭": { + text: "(14)" + }, + "⑮": { + text: "(15)" + }, + "⑯": { + text: "(16)" + }, + "⑰": { + text: "(17)" + }, + "⑱": { + text: "(18)" + }, + "⑲": { + text: "(19)" + }, + "⑳": { + text: "(20)" + }, + "⑴": { + text: "(1)" + }, + "⑵": { + text: "(2)" + }, + "⑶": { + text: "(3)" + }, + "⑷": { + text: "(4)" + }, + "⑸": { + text: "(5)" + }, + "⑹": { + text: "(6)" + }, + "⑺": { + text: "(7)" + }, + "⑻": { + text: "(8)" + }, + "⑼": { + text: "(9)" + }, + "⑽": { + text: "(10)" + }, + "⑾": { + text: "(11)" + }, + "⑿": { + text: "(12)" + }, + "⒀": { + text: "(13)" + }, + "⒁": { + text: "(14)" + }, + "⒂": { + text: "(15)" + }, + "⒃": { + text: "(16)" + }, + "⒄": { + text: "(17)" + }, + "⒅": { + text: "(18)" + }, + "⒆": { + text: "(19)" + }, + "⒇": { + text: "(20)" + }, + "⒈": { + text: "1." + }, + "⒉": { + text: "2." + }, + "⒊": { + text: "3." + }, + "⒋": { + text: "4." + }, + "⒌": { + text: "5." + }, + "⒍": { + text: "6." + }, + "⒎": { + text: "7." + }, + "⒏": { + text: "8." + }, + "⒐": { + text: "9." + }, + "⒑": { + text: "10." + }, + "⒒": { + text: "11." + }, + "⒓": { + text: "12." + }, + "⒔": { + text: "13." + }, + "⒕": { + text: "14." + }, + "⒖": { + text: "15." + }, + "⒗": { + text: "16." + }, + "⒘": { + text: "17." + }, + "⒙": { + text: "18." + }, + "⒚": { + text: "19." + }, + "⒛": { + text: "20." + }, + "⒜": { + text: "(a)" + }, + "⒝": { + text: "(b)" + }, + "⒞": { + text: "(c)" + }, + "⒟": { + text: "(d)" + }, + "⒠": { + text: "(e)" + }, + "⒡": { + text: "(f)" + }, + "⒢": { + text: "(g)" + }, + "⒣": { + text: "(h)" + }, + "⒤": { + text: "(i)" + }, + "⒥": { + text: "(j)" + }, + "⒦": { + text: "(k)" + }, + "⒧": { + text: "(l)" + }, + "⒨": { + text: "(m)" + }, + "⒩": { + text: "(n)" + }, + "⒪": { + text: "(o)" + }, + "⒫": { + text: "(p)" + }, + "⒬": { + text: "(q)" + }, + "⒭": { + text: "(r)" + }, + "⒮": { + text: "(s)" + }, + "⒯": { + text: "(t)" + }, + "⒰": { + text: "(u)" + }, + "⒱": { + text: "(v)" + }, + "⒲": { + text: "(w)" + }, + "⒳": { + text: "(x)" + }, + "⒴": { + text: "(y)" + }, + "⒵": { + text: "(z)" + }, + "Ⓐ": { + text: "(A)" + }, + "Ⓑ": { + text: "(B)" + }, + "Ⓒ": { + text: "(C)" + }, + "Ⓓ": { + text: "(D)" + }, + "Ⓔ": { + text: "(E)" + }, + "Ⓕ": { + text: "(F)" + }, + "Ⓖ": { + text: "(G)" + }, + "Ⓗ": { + text: "(H)" + }, + "Ⓘ": { + text: "(I)" + }, + "Ⓙ": { + text: "(J)" + }, + "Ⓚ": { + text: "(K)" + }, + "Ⓛ": { + text: "(L)" + }, + "Ⓜ": { + text: "(M)" + }, + "Ⓝ": { + text: "(N)" + }, + "Ⓞ": { + text: "(O)" + }, + "Ⓟ": { + text: "(P)" + }, + "Ⓠ": { + text: "(Q)" + }, + "Ⓡ": { + text: "(R)" + }, + "Ⓢ": { + math: "\\circledS" + }, + "Ⓣ": { + text: "(T)" + }, + "Ⓤ": { + text: "(U)" + }, + "Ⓥ": { + text: "(V)" + }, + "Ⓦ": { + text: "(W)" + }, + "Ⓧ": { + text: "(X)" + }, + "Ⓨ": { + text: "(Y)" + }, + "Ⓩ": { + text: "(Z)" + }, + "ⓐ": { + text: "(a)" + }, + "ⓑ": { + text: "(b)" + }, + "ⓒ": { + text: "(c)" + }, + "ⓓ": { + text: "(d)" + }, + "ⓔ": { + text: "(e)" + }, + "ⓕ": { + text: "(f)" + }, + "ⓖ": { + text: "(g)" + }, + "ⓗ": { + text: "(h)" + }, + "ⓘ": { + text: "(i)" + }, + "ⓙ": { + text: "(j)" + }, + "ⓚ": { + text: "(k)" + }, + "ⓛ": { + text: "(l)" + }, + "ⓜ": { + text: "(m)" + }, + "ⓝ": { + text: "(n)" + }, + "ⓞ": { + text: "(o)" + }, + "ⓟ": { + text: "(p)" + }, + "ⓠ": { + text: "(q)" + }, + "ⓡ": { + text: "(r)" + }, + "ⓢ": { + text: "(s)" + }, + "ⓣ": { + text: "(t)" + }, + "ⓤ": { + text: "(u)" + }, + "ⓥ": { + text: "(v)" + }, + "ⓦ": { + text: "(w)" + }, + "ⓧ": { + text: "(x)" + }, + "ⓨ": { + text: "(y)" + }, + "ⓩ": { + text: "(z)" + }, + "⓪": { + text: "(0)" + }, + "─": { + text: "-" + }, + "━": { + text: "=" + }, + "│": { + text: "|" + }, + "┃": { + text: "|" + }, + "┄": { + text: "-" + }, + "┅": { + text: "=" + }, + "┆": { + math: "\\Elzdshfnc" + }, + "┇": { + text: "|" + }, + "┈": { + text: "-" + }, + "┉": { + text: "=" + }, + "┊": { + text: "|" + }, + "┋": { + text: "|" + }, + "┌": { + text: "+" + }, + "┍": { + text: "+" + }, + "┎": { + text: "+" + }, + "┏": { + text: "+" + }, + "┐": { + text: "+" + }, + "┑": { + text: "+" + }, + "┒": { + text: "+" + }, + "┓": { + text: "+" + }, + "└": { + text: "+" + }, + "┕": { + text: "+" + }, + "┖": { + text: "+" + }, + "┗": { + text: "+" + }, + "┘": { + text: "+" + }, + "┙": { + math: "\\Elzsqfnw" + }, + "┚": { + text: "+" + }, + "┛": { + text: "+" + }, + "├": { + text: "+" + }, + "┝": { + text: "+" + }, + "┞": { + text: "+" + }, + "┟": { + text: "+" + }, + "┠": { + text: "+" + }, + "┡": { + text: "+" + }, + "┢": { + text: "+" + }, + "┣": { + text: "+" + }, + "┤": { + text: "+" + }, + "┥": { + text: "+" + }, + "┦": { + text: "+" + }, + "┧": { + text: "+" + }, + "┨": { + text: "+" + }, + "┩": { + text: "+" + }, + "┪": { + text: "+" + }, + "┫": { + text: "+" + }, + "┬": { + text: "+" + }, + "┭": { + text: "+" + }, + "┮": { + text: "+" + }, + "┯": { + text: "+" + }, + "┰": { + text: "+" + }, + "┱": { + text: "+" + }, + "┲": { + text: "+" + }, + "┳": { + text: "+" + }, + "┴": { + text: "+" + }, + "┵": { + text: "+" + }, + "┶": { + text: "+" + }, + "┷": { + text: "+" + }, + "┸": { + text: "+" + }, + "┹": { + text: "+" + }, + "┺": { + text: "+" + }, + "┻": { + text: "+" + }, + "┼": { + text: "+" + }, + "┽": { + text: "+" + }, + "┾": { + text: "+" + }, + "┿": { + text: "+" + }, + "╀": { + text: "+" + }, + "╁": { + text: "+" + }, + "╂": { + text: "+" + }, + "╃": { + text: "+" + }, + "╄": { + text: "+" + }, + "╅": { + text: "+" + }, + "╆": { + text: "+" + }, + "╇": { + text: "+" + }, + "╈": { + text: "+" + }, + "╉": { + text: "+" + }, + "╊": { + text: "+" + }, + "╋": { + text: "+" + }, + "╌": { + text: "-" + }, + "╍": { + text: "=" + }, + "╎": { + text: "|" + }, + "╏": { + text: "|" + }, + "═": { + text: "=" + }, + "║": { + text: "|" + }, + "╒": { + text: "+" + }, + "╓": { + text: "+" + }, + "╔": { + text: "+" + }, + "╕": { + text: "+" + }, + "╖": { + text: "+" + }, + "╗": { + text: "+" + }, + "╘": { + text: "+" + }, + "╙": { + text: "+" + }, + "╚": { + text: "+" + }, + "╛": { + text: "+" + }, + "╜": { + text: "+" + }, + "╝": { + text: "+" + }, + "╞": { + text: "+" + }, + "╟": { + text: "+" + }, + "╠": { + text: "+" + }, + "╡": { + text: "+" + }, + "╢": { + text: "+" + }, + "╣": { + text: "+" + }, + "╤": { + text: "+" + }, + "╥": { + text: "+" + }, + "╦": { + text: "+" + }, + "╧": { + text: "+" + }, + "╨": { + text: "+" + }, + "╩": { + text: "+" + }, + "╪": { + text: "+" + }, + "╫": { + text: "+" + }, + "╬": { + text: "+" + }, + "╭": { + text: "+" + }, + "╮": { + text: "+" + }, + "╯": { + text: "+" + }, + "╰": { + text: "+" + }, + "╱": { + math: "\\diagup" + }, + "╲": { + text: "\\" + }, + "╳": { + text: "X" + }, + "╼": { + text: "-" + }, + "╽": { + text: "|" + }, + "╾": { + text: "-" + }, + "╿": { + text: "|" + }, + "▀": { + math: "\\blockuphalf" + }, + "▄": { + math: "\\blocklowhalf" + }, + "█": { + math: "\\blockfull" + }, + "▌": { + math: "\\blocklefthalf" + }, + "▐": { + math: "\\blockrighthalf" + }, + "░": { + math: "\\blockqtrshaded" + }, + "▒": { + math: "\\blockhalfshaded" + }, + "▓": { + math: "\\blockthreeqtrshaded" + }, + "■": { + math: "\\mdlgblksquare", + text: "\\ding{110}" + }, + "□": { + math: "\\square" + }, + "▢": { + math: "\\squoval" + }, + "▣": { + math: "\\blackinwhitesquare" + }, + "▤": { + math: "\\squarehfill" + }, + "▥": { + math: "\\squarevfill" + }, + "▦": { + math: "\\squarehvfill" + }, + "▧": { + math: "\\squarenwsefill" + }, + "▨": { + math: "\\squareneswfill" + }, + "▩": { + math: "\\squarecrossfill" + }, + "▪": { + math: "\\blacksquare" + }, + "▫": { + math: "\\smwhtsquare" + }, + "▬": { + math: "\\hrectangleblack" + }, + "▭": { + math: "\\fbox{~~}" + }, + "▮": { + math: "\\vrectangleblack" + }, + "▯": { + math: "\\Elzvrecto" + }, + "▰": { + math: "\\parallelogramblack" + }, + "▲": { + math: "\\bigblacktriangleup", + text: "\\ding{115}" + }, + "△": { + math: "\\bigtriangleup" + }, + "▴": { + math: "\\blacktriangle" + }, + "▵": { + math: "\\vartriangle" + }, + "▶": { + math: "\\RHD" + }, + "▷": { + math: "\\rhd" + }, + "▸": { + math: "\\blacktriangleright" + }, + "▹": { + math: "\\triangleright" + }, + "►": { + math: "\\blackpointerright" + }, + "▻": { + math: "\\whitepointerright" + }, + "▼": { + math: "\\bigblacktriangledown", + text: "\\ding{116}" + }, + "▽": { + math: "\\bigtriangledown" + }, + "▾": { + math: "\\blacktriangledown" + }, + "▿": { + math: "\\triangledown" + }, + "◀": { + math: "\\LHD" + }, + "◁": { + math: "\\lhd" + }, + "◂": { + math: "\\blacktriangleleft" + }, + "◃": { + math: "\\triangleleft" + }, + "◄": { + math: "\\blackpointerleft" + }, + "◅": { + math: "\\whitepointerleft" + }, + "◆": { + math: "\\Diamondblack", + text: "\\ding{117}" + }, + "◇": { + math: "\\Diamond" + }, + "◈": { + math: "\\blackinwhitediamond" + }, + "◉": { + math: "\\fisheye" + }, + "◊": { + math: "\\lozenge" + }, + "○": { + math: "\\bigcirc" + }, + "◌": { + math: "\\dottedcircle" + }, + "◍": { + math: "\\circlevertfill" + }, + "◎": { + math: "\\bullseye" + }, + "●": { + math: "\\CIRCLE", + text: "\\ding{108}" + }, + "◐": { + math: "\\Elzcirfl" + }, + "◑": { + math: "\\Elzcirfr" + }, + "◒": { + math: "\\Elzcirfb" + }, + "◓": { + math: "\\circletophalfblack" + }, + "◔": { + math: "\\circleurquadblack" + }, + "◕": { + math: "\\blackcircleulquadwhite" + }, + "◖": { + math: "\\LEFTCIRCLE" + }, + "◗": { + math: "\\RIGHTCIRCLE", + text: "\\ding{119}" + }, + "◘": { + math: "\\Elzrvbull" + }, + "◙": { + math: "\\inversewhitecircle" + }, + "◚": { + math: "\\invwhiteupperhalfcircle" + }, + "◛": { + math: "\\invwhitelowerhalfcircle" + }, + "◜": { + math: "\\ularc" + }, + "◝": { + math: "\\urarc" + }, + "◞": { + math: "\\lrarc" + }, + "◟": { + math: "\\llarc" + }, + "◠": { + math: "\\topsemicircle" + }, + "◡": { + math: "\\botsemicircle" + }, + "◢": { + math: "\\lrblacktriangle" + }, + "◣": { + math: "\\llblacktriangle" + }, + "◤": { + math: "\\ulblacktriangle" + }, + "◥": { + math: "\\urblacktriangle" + }, + "◦": { + math: "\\smwhtcircle" + }, + "◧": { + math: "\\Elzsqfl" + }, + "◨": { + math: "\\Elzsqfr" + }, + "◩": { + math: "\\squareulblack" + }, + "◪": { + math: "\\Elzsqfse" + }, + "◫": { + math: "\\boxbar" + }, + "◬": { + math: "\\trianglecdot" + }, + "◭": { + math: "\\triangleleftblack" + }, + "◮": { + math: "\\trianglerightblack" + }, + "◯": { + math: "\\bigcirc" + }, + "◰": { + math: "\\squareulquad" + }, + "◱": { + math: "\\squarellquad" + }, + "◲": { + math: "\\squarelrquad" + }, + "◳": { + math: "\\squareurquad" + }, + "◴": { + math: "\\circleulquad" + }, + "◵": { + math: "\\circlellquad" + }, + "◶": { + math: "\\circlelrquad" + }, + "◷": { + math: "\\circleurquad" + }, + "◸": { + math: "\\ultriangle" + }, + "◹": { + math: "\\urtriangle" + }, + "◺": { + math: "\\lltriangle" + }, + "◻": { + math: "\\square" + }, + "◼": { + math: "\\blacksquare" + }, + "◽": { + math: "\\mdsmwhtsquare" + }, + "◾": { + math: "\\mdsmblksquare" + }, + "◿": { + math: "\\lrtriangle" + }, + "★": { + math: "\\bigstar", + text: "\\ding{72}" + }, + "☆": { + math: "\\bigwhitestar", + text: "\\ding{73}" + }, + "☉": { + math: "\\Sun" + }, + "☎": { + text: "\\ding{37}" + }, + "☐": { + math: "\\Square" + }, + "☑": { + math: "\\CheckedBox" + }, + "☒": { + math: "\\XBox" + }, + "☓": { + text: "X" + }, + "☕": { + math: "\\steaming" + }, + "☛": { + text: "\\ding{42}" + }, + "☞": { + math: "\\pointright", + text: "\\ding{43}" + }, + "☠": { + math: "\\skull" + }, + "☡": { + math: "\\danger" + }, + "☢": { + math: "\\radiation" + }, + "☣": { + math: "\\biohazard" + }, + "☯": { + math: "\\yinyang" + }, + "☹": { + math: "\\frownie" + }, + "☺": { + math: "\\smiley" + }, + "☻": { + math: "\\blacksmiley" + }, + "☼": { + math: "\\sun" + }, + "☽": { + text: "{\\rightmoon}", + textpackages: [ + "wasysym" + ] + }, + "☾": { + text: "{\\leftmoon}", + textpackages: [ + "wasysym" + ] + }, + "☿": { + math: "\\mercury", + text: "{\\mercury}" + }, + "♀": { + math: "\\female", + text: "{\\venus}" + }, + "♁": { + math: "\\earth" + }, + "♂": { + math: "\\male", + text: "{\\male}" + }, + "♃": { + math: "\\jupiter", + text: "{\\jupiter}" + }, + "♄": { + math: "\\saturn", + text: "{\\saturn}" + }, + "♅": { + math: "\\uranus", + text: "{\\uranus}" + }, + "♆": { + math: "\\neptune", + text: "{\\neptune}" + }, + "♇": { + math: "\\pluto", + text: "{\\pluto}" + }, + "♈": { + math: "\\aries", + text: "{\\aries}" + }, + "♉": { + math: "\\taurus", + text: "{\\taurus}" + }, + "♊": { + math: "\\gemini", + text: "{\\gemini}" + }, + "♋": { + math: "\\cancer", + text: "{\\cancer}" + }, + "♌": { + math: "\\leo", + text: "{\\leo}" + }, + "♍": { + math: "\\virgo", + text: "{\\virgo}" + }, + "♎": { + math: "\\libra", + text: "{\\libra}" + }, + "♏": { + math: "\\scorpio", + text: "{\\scorpio}" + }, + "♐": { + math: "\\sagittarius", + text: "{\\sagittarius}" + }, + "♑": { + math: "\\capricornus", + text: "{\\capricornus}" + }, + "♒": { + math: "\\aquarius", + text: "{\\aquarius}" + }, + "♓": { + math: "\\pisces", + text: "{\\pisces}" + }, + "♠": { + math: "\\spadesuit", + text: "\\ding{171}" + }, + "♡": { + math: "\\heartsuit" + }, + "♢": { + math: "\\diamond" + }, + "♣": { + math: "\\clubsuit", + text: "\\ding{168}" + }, + "♤": { + math: "\\varspadesuit" + }, + "♥": { + math: "\\varheartsuit", + text: "\\ding{170}" + }, + "♦": { + math: "\\vardiamondsuit", + text: "\\ding{169}" + }, + "♧": { + math: "\\varclubsuit" + }, + "♩": { + math: "\\quarternote", + text: "{\\quarternote}" + }, + "♪": { + math: "\\eighthnote", + text: "{\\eighthnote}" + }, + "♫": { + math: "\\twonotes" + }, + "♬": { + math: "\\sixteenthnote" + }, + "♭": { + math: "\\flat" + }, + "♮": { + math: "\\natural" + }, + "♯": { + math: "\\sharp" + }, + "♻": { + math: "\\recycle" + }, + "♾": { + math: "\\acidfree" + }, + "⚀": { + math: "\\dicei" + }, + "⚁": { + math: "\\diceii" + }, + "⚂": { + math: "\\diceiii" + }, + "⚃": { + math: "\\diceiv" + }, + "⚄": { + math: "\\dicev" + }, + "⚅": { + math: "\\dicevi" + }, + "⚆": { + math: "\\circledrightdot" + }, + "⚇": { + math: "\\circledtwodots" + }, + "⚈": { + math: "\\blackcircledrightdot" + }, + "⚉": { + math: "\\blackcircledtwodots" + }, + "⚓": { + math: "\\anchor" + }, + "⚔": { + math: "\\swords" + }, + "⚠": { + math: "\\warning" + }, + "⚥": { + math: "\\Hermaphrodite" + }, + "⚪": { + math: "\\medcirc" + }, + "⚫": { + math: "\\medbullet" + }, + "⚬": { + math: "\\mdsmwhtcircle" + }, + "⚲": { + math: "\\neuter" + }, + "✁": { + text: "\\ding{33}" + }, + "✂": { + text: "\\ding{34}" + }, + "✃": { + text: "\\ding{35}" + }, + "✄": { + text: "\\ding{36}" + }, + "✆": { + text: "\\ding{38}" + }, + "✇": { + text: "\\ding{39}" + }, + "✈": { + text: "\\ding{40}" + }, + "✉": { + text: "\\ding{41}" + }, + "✌": { + text: "\\ding{44}" + }, + "✍": { + text: "\\ding{45}" + }, + "✎": { + math: "\\pencil", + text: "\\ding{46}" + }, + "✏": { + text: "\\ding{47}" + }, + "✐": { + text: "\\ding{48}" + }, + "✑": { + text: "\\ding{49}" + }, + "✒": { + text: "\\ding{50}" + }, + "✓": { + math: "\\checkmark", + text: "\\ding{51}" + }, + "✔": { + text: "\\ding{52}" + }, + "✕": { + text: "\\ding{53}" + }, + "✖": { + text: "\\ding{54}" + }, + "✗": { + math: "\\ballotx", + text: "\\ding{55}" + }, + "✘": { + text: "\\ding{56}" + }, + "✙": { + text: "\\ding{57}" + }, + "✚": { + text: "\\ding{58}" + }, + "✛": { + text: "\\ding{59}" + }, + "✜": { + text: "\\ding{60}" + }, + "✝": { + text: "\\ding{61}" + }, + "✞": { + text: "\\ding{62}" + }, + "✟": { + text: "\\ding{63}" + }, + "✠": { + math: "\\maltese", + text: "\\ding{64}" + }, + "✡": { + text: "\\ding{65}" + }, + "✢": { + text: "\\ding{66}" + }, + "✣": { + text: "\\ding{67}" + }, + "✤": { + text: "\\ding{68}" + }, + "✥": { + text: "\\ding{69}" + }, + "✦": { + text: "\\ding{70}" + }, + "✧": { + text: "\\ding{71}" + }, + "✩": { + text: "\\ding{73}" + }, + "✪": { + math: "\\circledstar", + text: "\\ding{74}" + }, + "✫": { + text: "\\ding{75}" + }, + "✬": { + text: "\\ding{76}" + }, + "✭": { + text: "\\ding{77}" + }, + "✮": { + text: "\\ding{78}" + }, + "✯": { + text: "\\ding{79}" + }, + "✰": { + text: "\\ding{80}" + }, + "✱": { + text: "\\ding{81}" + }, + "✲": { + text: "\\ding{82}" + }, + "✳": { + text: "\\ding{83}" + }, + "✴": { + text: "\\ding{84}" + }, + "✵": { + text: "\\ding{85}" + }, + "✶": { + math: "\\varstar", + text: "\\ding{86}" + }, + "✷": { + text: "\\ding{87}" + }, + "✸": { + text: "\\ding{88}" + }, + "✹": { + text: "\\ding{89}" + }, + "✺": { + text: "\\ding{90}" + }, + "✻": { + text: "\\ding{91}" + }, + "✼": { + text: "\\ding{92}" + }, + "✽": { + math: "\\dingasterisk", + text: "\\ding{93}" + }, + "✾": { + text: "\\ding{94}" + }, + "✿": { + text: "\\ding{95}" + }, + "❀": { + text: "\\ding{96}" + }, + "❁": { + text: "\\ding{97}" + }, + "❂": { + text: "\\ding{98}" + }, + "❃": { + text: "\\ding{99}" + }, + "❄": { + text: "\\ding{100}" + }, + "❅": { + text: "\\ding{101}" + }, + "❆": { + text: "\\ding{102}" + }, + "❇": { + text: "\\ding{103}" + }, + "❈": { + text: "\\ding{104}" + }, + "❉": { + text: "\\ding{105}" + }, + "❊": { + text: "\\ding{106}" + }, + "❋": { + text: "\\ding{107}" + }, + "❍": { + text: "\\ding{109}" + }, + "❏": { + text: "\\ding{111}" + }, + "❐": { + text: "\\ding{112}" + }, + "❑": { + text: "\\ding{113}" + }, + "❒": { + text: "\\ding{114}" + }, + "❖": { + text: "\\ding{118}" + }, + "❘": { + text: "\\ding{120}" + }, + "❙": { + text: "\\ding{121}" + }, + "❚": { + text: "\\ding{122}" + }, + "❛": { + text: "\\ding{123}" + }, + "❜": { + text: "\\ding{124}" + }, + "❝": { + text: "\\ding{125}" + }, + "❞": { + text: "\\ding{126}" + }, + "❡": { + text: "\\ding{161}" + }, + "❢": { + text: "\\ding{162}" + }, + "❣": { + text: "\\ding{163}" + }, + "❤": { + text: "\\ding{164}" + }, + "❥": { + text: "\\ding{165}" + }, + "❦": { + text: "\\ding{166}" + }, + "❧": { + text: "\\ding{167}" + }, + "❲": { + math: "\\lbrbrak" + }, + "❳": { + math: "\\rbrbrak" + }, + "❶": { + text: "\\ding{182}" + }, + "❷": { + text: "\\ding{183}" + }, + "❸": { + text: "\\ding{184}" + }, + "❹": { + text: "\\ding{185}" + }, + "❺": { + text: "\\ding{186}" + }, + "❻": { + text: "\\ding{187}" + }, + "❼": { + text: "\\ding{188}" + }, + "❽": { + text: "\\ding{189}" + }, + "❾": { + text: "\\ding{190}" + }, + "❿": { + text: "\\ding{191}" + }, + "➀": { + text: "\\ding{192}" + }, + "➁": { + text: "\\ding{193}" + }, + "➂": { + text: "\\ding{194}" + }, + "➃": { + text: "\\ding{195}" + }, + "➄": { + text: "\\ding{196}" + }, + "➅": { + text: "\\ding{197}" + }, + "➆": { + text: "\\ding{198}" + }, + "➇": { + text: "\\ding{199}" + }, + "➈": { + text: "\\ding{200}" + }, + "➉": { + text: "\\ding{201}" + }, + "➊": { + text: "\\ding{202}" + }, + "➋": { + text: "\\ding{203}" + }, + "➌": { + text: "\\ding{204}" + }, + "➍": { + text: "\\ding{205}" + }, + "➎": { + text: "\\ding{206}" + }, + "➏": { + text: "\\ding{207}" + }, + "➐": { + text: "\\ding{208}" + }, + "➑": { + text: "\\ding{209}" + }, + "➒": { + text: "\\ding{210}" + }, + "➓": { + text: "\\ding{211}" + }, + "➔": { + text: "\\ding{212}" + }, + "➘": { + text: "\\ding{216}" + }, + "➙": { + text: "\\ding{217}" + }, + "➚": { + text: "\\ding{218}" + }, + "➛": { + math: "\\draftingarrow", + text: "\\ding{219}" + }, + "➜": { + text: "\\ding{220}" + }, + "➝": { + text: "\\ding{221}" + }, + "➞": { + text: "\\ding{222}" + }, + "➟": { + text: "\\ding{223}" + }, + "➠": { + text: "\\ding{224}" + }, + "➡": { + text: "\\ding{225}" + }, + "➢": { + math: "\\arrowbullet", + text: "\\ding{226}" + }, + "➣": { + text: "\\ding{227}" + }, + "➤": { + text: "\\ding{228}" + }, + "➥": { + text: "\\ding{229}" + }, + "➦": { + text: "\\ding{230}" + }, + "➧": { + text: "\\ding{231}" + }, + "➨": { + text: "\\ding{232}" + }, + "➩": { + text: "\\ding{233}" + }, + "➪": { + text: "\\ding{234}" + }, + "➫": { + text: "\\ding{235}" + }, + "➬": { + text: "\\ding{236}" + }, + "➭": { + text: "\\ding{237}" + }, + "➮": { + text: "\\ding{238}" + }, + "➯": { + text: "\\ding{239}" + }, + "➱": { + text: "\\ding{241}" + }, + "➲": { + text: "\\ding{242}" + }, + "➳": { + text: "\\ding{243}" + }, + "➴": { + text: "\\ding{244}" + }, + "➵": { + text: "\\ding{245}" + }, + "➶": { + text: "\\ding{246}" + }, + "➷": { + text: "\\ding{247}" + }, + "➸": { + text: "\\ding{248}" + }, + "➹": { + text: "\\ding{249}" + }, + "➺": { + text: "\\ding{250}" + }, + "➻": { + text: "\\ding{251}" + }, + "➼": { + text: "\\ding{252}" + }, + "➽": { + text: "\\ding{253}" + }, + "➾": { + text: "\\ding{254}" + }, + "⟀": { + math: "\\threedangle" + }, + "⟁": { + math: "\\whiteinwhitetriangle" + }, + "⟂": { + math: "\\perp" + }, + "⟃": { + math: "\\subsetcirc" + }, + "⟄": { + math: "\\supsetcirc" + }, + "⟅": { + math: "\\Lbag" + }, + "⟆": { + math: "\\Rbag" + }, + "⟇": { + math: "\\veedot" + }, + "⟈": { + math: "\\bsolhsub" + }, + "⟉": { + math: "\\suphsol" + }, + "⟌": { + math: "\\longdivision" + }, + "⟐": { + math: "\\Diamonddot" + }, + "⟑": { + math: "\\wedgedot" + }, + "⟒": { + math: "\\upin" + }, + "⟓": { + math: "\\pullback" + }, + "⟔": { + math: "\\pushout" + }, + "⟕": { + math: "\\leftouterjoin" + }, + "⟖": { + math: "\\rightouterjoin" + }, + "⟗": { + math: "\\fullouterjoin" + }, + "⟘": { + math: "\\bigbot" + }, + "⟙": { + math: "\\bigtop" + }, + "⟚": { + math: "\\DashVDash" + }, + "⟛": { + math: "\\dashVdash" + }, + "⟜": { + math: "\\multimapinv" + }, + "⟝": { + math: "\\vlongdash" + }, + "⟞": { + math: "\\longdashv" + }, + "⟟": { + math: "\\cirbot" + }, + "⟠": { + math: "\\lozengeminus" + }, + "⟡": { + math: "\\concavediamond" + }, + "⟢": { + math: "\\concavediamondtickleft" + }, + "⟣": { + math: "\\concavediamondtickright" + }, + "⟤": { + math: "\\whitesquaretickleft" + }, + "⟥": { + math: "\\whitesquaretickright" + }, + "⟦": { + math: "\\llbracket" + }, + "⟧": { + math: "\\rrbracket" + }, + "⟨": { + math: "\\langle" + }, + "⟩": { + math: "\\rangle" + }, + "⟪": { + math: "\\lang" + }, + "⟫": { + math: "\\rang" + }, + "⟬": { + math: "\\Lbrbrak" + }, + "⟭": { + math: "\\Rbrbrak" + }, + "⟮": { + math: "\\lgroup" + }, + "⟯": { + math: "\\rgroup" + }, + "⟰": { + math: "\\UUparrow" + }, + "⟱": { + math: "\\DDownarrow" + }, + "⟲": { + math: "\\acwgapcirclearrow" + }, + "⟳": { + math: "\\cwgapcirclearrow" + }, + "⟴": { + math: "\\rightarrowonoplus" + }, + "⟵": { + math: "\\longleftarrow" + }, + "⟶": { + math: "\\longrightarrow" + }, + "⟷": { + math: "\\longleftrightarrow" + }, + "⟸": { + math: "\\Longleftarrow" + }, + "⟹": { + math: "\\Longrightarrow" + }, + "⟺": { + math: "\\Longleftrightarrow" + }, + "⟻": { + math: "\\longmapsfrom" + }, + "⟼": { + math: "\\longmapsto" + }, + "⟽": { + math: "\\Longmapsfrom" + }, + "⟾": { + math: "\\Longmapsto" + }, + "⟿": { + math: "\\sim\\joinrel\\leadsto" + }, + "⤀": { + math: "\\psur" + }, + "⤁": { + math: "\\nVtwoheadrightarrow" + }, + "⤂": { + math: "\\nvLeftarrow" + }, + "⤃": { + math: "\\nvRightarrow" + }, + "⤄": { + math: "\\nvLeftrightarrow" + }, + "⤆": { + math: "\\Mapsfrom" + }, + "⤇": { + math: "\\Mapsto" + }, + "⤈": { + math: "\\downarrowbarred" + }, + "⤉": { + math: "\\uparrowbarred" + }, + "⤊": { + math: "\\Uuparrow" + }, + "⤋": { + math: "\\Ddownarrow" + }, + "⤌": { + math: "\\leftbkarrow" + }, + "⤍": { + math: "\\rightbkarrow" + }, + "⤎": { + math: "\\leftdbkarrow" + }, + "⤏": { + math: "\\dbkarow" + }, + "⤐": { + math: "\\drbkarow" + }, + "⤑": { + math: "\\rightdotarrow" + }, + "⤒": { + math: "\\UpArrowBar" + }, + "⤓": { + math: "\\DownArrowBar" + }, + "⤔": { + math: "\\pinj" + }, + "⤕": { + math: "\\finj" + }, + "⤖": { + math: "\\bij" + }, + "⤗": { + math: "\\nvtwoheadrightarrowtail" + }, + "⤘": { + math: "\\nVtwoheadrightarrowtail" + }, + "⤙": { + math: "\\lefttail" + }, + "⤚": { + math: "\\righttail" + }, + "⤛": { + math: "\\leftdbltail" + }, + "⤜": { + math: "\\rightdbltail" + }, + "⤝": { + math: "\\diamondleftarrow" + }, + "⤞": { + math: "\\rightarrowdiamond" + }, + "⤟": { + math: "\\diamondleftarrowbar" + }, + "⤠": { + math: "\\barrightarrowdiamond" + }, + "⤡": { + math: "\\nwsearrow" + }, + "⤢": { + math: "\\neswarrow" + }, + "⤫": { + math: "\\rdiagovfdiag" + }, + "⤬": { + math: "\\fdiagovrdiag" + }, + "⤭": { + math: "\\seovnearrow" + }, + "⤮": { + math: "\\neovsearrow" + }, + "⤯": { + math: "\\fdiagovnearrow" + }, + "⤰": { + math: "\\rdiagovsearrow" + }, + "⤱": { + math: "\\neovnwarrow" + }, + "⤲": { + math: "\\nwovnearrow" + }, + "⤴": { + math: "\\uprightcurvearrow" + }, + "⤵": { + math: "\\downrightcurvedarrow" + }, + "⤸": { + math: "\\cwrightarcarrow" + }, + "⤹": { + math: "\\acwleftarcarrow" + }, + "⤺": { + math: "\\acwoverarcarrow" + }, + "⤻": { + math: "\\acwunderarcarrow" + }, + "⤼": { + math: "\\curvearrowrightminus" + }, + "⤽": { + math: "\\curvearrowleftplus" + }, + "⤾": { + math: "\\cwundercurvearrow" + }, + "⤿": { + math: "\\ccwundercurvearrow" + }, + "⥀": { + math: "\\Elolarr" + }, + "⥁": { + math: "\\Elorarr" + }, + "⥂": { + math: "\\ElzRlarr" + }, + "⥃": { + math: "\\leftarrowshortrightarrow" + }, + "⥄": { + math: "\\ElzrLarr" + }, + "⥅": { + math: "\\rightarrowplus" + }, + "⥆": { + math: "\\leftarrowplus" + }, + "⥇": { + math: "\\Elzrarrx" + }, + "⥈": { + math: "\\leftrightarrowcircle" + }, + "⥉": { + math: "\\twoheaduparrowcircle" + }, + "⥊": { + math: "\\leftrightharpoon" + }, + "⥋": { + math: "\\rightleftharpoon" + }, + "⥌": { + math: "\\updownharpoonrightleft" + }, + "⥍": { + math: "\\updownharpoonleftright" + }, + "⥎": { + math: "\\LeftRightVector" + }, + "⥏": { + math: "\\RightUpDownVector" + }, + "⥐": { + math: "\\DownLeftRightVector" + }, + "⥑": { + math: "\\LeftUpDownVector" + }, + "⥒": { + math: "\\LeftVectorBar" + }, + "⥓": { + math: "\\RightVectorBar" + }, + "⥔": { + math: "\\RightUpVectorBar" + }, + "⥕": { + math: "\\RightDownVectorBar" + }, + "⥖": { + math: "\\DownLeftVectorBar" + }, + "⥗": { + math: "\\DownRightVectorBar" + }, + "⥘": { + math: "\\LeftUpVectorBar" + }, + "⥙": { + math: "\\LeftDownVectorBar" + }, + "⥚": { + math: "\\LeftTeeVector" + }, + "⥛": { + math: "\\RightTeeVector" + }, + "⥜": { + math: "\\RightUpTeeVector" + }, + "⥝": { + math: "\\RightDownTeeVector" + }, + "⥞": { + math: "\\DownLeftTeeVector" + }, + "⥟": { + math: "\\DownRightTeeVector" + }, + "⥠": { + math: "\\LeftUpTeeVector" + }, + "⥡": { + math: "\\LeftDownTeeVector" + }, + "⥢": { + math: "\\leftleftharpoons" + }, + "⥣": { + math: "\\upupharpoons" + }, + "⥤": { + math: "\\rightrightharpoons" + }, + "⥥": { + math: "\\downdownharpoons" + }, + "⥦": { + math: "\\leftrightharpoonsup" + }, + "⥧": { + math: "\\leftrightharpoonsdown" + }, + "⥨": { + math: "\\rightleftharpoonsup" + }, + "⥩": { + math: "\\rightleftharpoonsdown" + }, + "⥪": { + math: "\\leftbarharpoon" + }, + "⥫": { + math: "\\barleftharpoon" + }, + "⥬": { + math: "\\rightbarharpoon" + }, + "⥭": { + math: "\\barrightharpoon" + }, + "⥮": { + math: "\\UpEquilibrium" + }, + "⥯": { + math: "\\ReverseUpEquilibrium" + }, + "⥰": { + math: "\\RoundImplies" + }, + "⥱": { + math: "\\equalrightarrow" + }, + "⥲": { + math: "\\similarrightarrow" + }, + "⥳": { + math: "\\leftarrowsimilar" + }, + "⥴": { + math: "\\rightarrowsimilar" + }, + "⥵": { + math: "\\rightarrowapprox" + }, + "⥶": { + math: "\\ltlarr" + }, + "⥷": { + math: "\\leftarrowless" + }, + "⥸": { + math: "\\gtrarr" + }, + "⥹": { + math: "\\subrarr" + }, + "⥺": { + math: "\\leftarrowsubset" + }, + "⥻": { + math: "\\suplarr" + }, + "⥾": { + math: "\\upfishtail" + }, + "⥿": { + math: "\\downfishtail" + }, + "⦀": { + math: "\\Elztfnc" + }, + "⦁": { + math: "\\spot" + }, + "⦂": { + math: "\\typecolon" + }, + "⦃": { + math: "\\lBrace" + }, + "⦄": { + math: "\\rBrace" + }, + "⦆": { + math: "\\Elroang" + }, + "⦇": { + math: "\\limg" + }, + "⦈": { + math: "\\rimg" + }, + "⦉": { + math: "\\lblot" + }, + "⦊": { + math: "\\rblot" + }, + "⦋": { + math: "\\lbrackubar" + }, + "⦌": { + math: "\\rbrackubar" + }, + "⦍": { + math: "\\lbrackultick" + }, + "⦎": { + math: "\\rbracklrtick" + }, + "⦏": { + math: "\\lbracklltick" + }, + "⦐": { + math: "\\rbrackurtick" + }, + "⦑": { + math: "\\langledot" + }, + "⦒": { + math: "\\rangledot" + }, + "⦓": { + math: "<\\kern-0.58em(" + }, + "⦕": { + math: "\\Lparengtr" + }, + "⦖": { + math: "\\Rparenless" + }, + "⦗": { + math: "\\lblkbrbrak" + }, + "⦘": { + math: "\\rblkbrbrak" + }, + "⦙": { + math: "\\Elzddfnc" + }, + "⦚": { + math: "\\vzigzag" + }, + "⦛": { + math: "\\measuredangleleft" + }, + "⦜": { + math: "\\Angle" + }, + "⦝": { + math: "\\rightanglemdot" + }, + "⦞": { + math: "\\angles" + }, + "⦟": { + math: "\\angdnr" + }, + "⦠": { + math: "\\Elzlpargt" + }, + "⦡": { + math: "\\sphericalangleup" + }, + "⦢": { + math: "\\turnangle" + }, + "⦣": { + math: "\\revangle" + }, + "⦤": { + math: "\\angleubar" + }, + "⦥": { + math: "\\revangleubar" + }, + "⦦": { + math: "\\wideangledown" + }, + "⦧": { + math: "\\wideangleup" + }, + "⦨": { + math: "\\measanglerutone" + }, + "⦩": { + math: "\\measanglelutonw" + }, + "⦪": { + math: "\\measanglerdtose" + }, + "⦫": { + math: "\\measangleldtosw" + }, + "⦬": { + math: "\\measangleurtone" + }, + "⦭": { + math: "\\measangleultonw" + }, + "⦮": { + math: "\\measangledrtose" + }, + "⦯": { + math: "\\measangledltosw" + }, + "⦰": { + math: "\\revemptyset" + }, + "⦱": { + math: "\\emptysetobar" + }, + "⦲": { + math: "\\emptysetocirc" + }, + "⦳": { + math: "\\emptysetoarr" + }, + "⦴": { + math: "\\emptysetoarrl" + }, + "⦷": { + math: "\\circledparallel" + }, + "⦸": { + math: "\\circledbslash" + }, + "⦹": { + math: "\\operp" + }, + "⦺": { + math: "\\obot" + }, + "⦻": { + math: "\\olcross" + }, + "⦼": { + math: "\\odotslashdot" + }, + "⦽": { + math: "\\uparrowoncircle" + }, + "⦾": { + math: "\\circledwhitebullet" + }, + "⦿": { + math: "\\circledbullet" + }, + "⧀": { + math: "\\circledless" + }, + "⧁": { + math: "\\circledgtr" + }, + "⧂": { + math: "\\cirscir" + }, + "⧃": { + math: "\\cirE" + }, + "⧄": { + math: "\\boxslash" + }, + "⧅": { + math: "\\boxbslash" + }, + "⧆": { + math: "\\boxast" + }, + "⧇": { + math: "\\boxcircle" + }, + "⧈": { + math: "\\boxbox" + }, + "⧉": { + math: "\\boxonbox" + }, + "⧊": { + math: "\\ElzLap" + }, + "⧋": { + math: "\\Elzdefas" + }, + "⧌": { + math: "\\triangles" + }, + "⧍": { + math: "\\triangleserifs" + }, + "⧎": { + math: "\\rtriltri" + }, + "⧏": { + math: "\\LeftTriangleBar" + }, + "⧏̸": { + math: "\\NotLeftTriangleBar" + }, + "⧐": { + math: "\\RightTriangleBar" + }, + "⧐̸": { + math: "\\NotRightTriangleBar" + }, + "⧑": { + math: "\\lfbowtie" + }, + "⧒": { + math: "\\rfbowtie" + }, + "⧓": { + math: "\\fbowtie" + }, + "⧔": { + math: "\\lftimes" + }, + "⧕": { + math: "\\rftimes" + }, + "⧖": { + math: "\\hourglass" + }, + "⧗": { + math: "\\blackhourglass" + }, + "⧘": { + math: "\\lvzigzag" + }, + "⧙": { + math: "\\rvzigzag" + }, + "⧚": { + math: "\\Lvzigzag" + }, + "⧛": { + math: "\\Rvzigzag" + }, + "⧝": { + math: "\\tieinfty" + }, + "⧞": { + math: "\\nvinfty" + }, + "⧟": { + math: "\\multimapboth" + }, + "⧠": { + math: "\\laplac" + }, + "⧡": { + math: "\\lrtriangleeq" + }, + "⧢": { + math: "\\shuffle" + }, + "⧣": { + math: "\\eparsl" + }, + "⧤": { + math: "\\smeparsl" + }, + "⧥": { + math: "\\eqvparsl" + }, + "⧦": { + math: "\\gleichstark" + }, + "⧧": { + math: "\\thermod" + }, + "⧨": { + math: "\\downtriangleleftblack" + }, + "⧩": { + math: "\\downtrianglerightblack" + }, + "⧪": { + math: "\\blackdiamonddownarrow" + }, + "⧫": { + math: "\\blacklozenge" + }, + "⧬": { + math: "\\circledownarrow" + }, + "⧭": { + math: "\\blackcircledownarrow" + }, + "⧮": { + math: "\\errbarsquare" + }, + "⧯": { + math: "\\errbarblacksquare" + }, + "⧰": { + math: "\\errbardiamond" + }, + "⧱": { + math: "\\errbarblackdiamond" + }, + "⧲": { + math: "\\errbarcircle" + }, + "⧳": { + math: "\\errbarblackcircle" + }, + "⧴": { + math: "\\RuleDelayed" + }, + "⧵": { + math: "\\setminus" + }, + "⧶": { + math: "\\dsol" + }, + "⧷": { + math: "\\rsolbar" + }, + "⧸": { + math: "\\xsol" + }, + "⧹": { + math: "\\zhide" + }, + "⧺": { + math: "\\doubleplus" + }, + "⧻": { + math: "\\tripleplus" + }, + "⧼": { + math: "\\lcurvyangle" + }, + "⧽": { + math: "\\rcurvyangle" + }, + "⧾": { + math: "\\tplus" + }, + "⧿": { + math: "\\tminus" + }, + "⨀": { + math: "\\bigodot" + }, + "⨁": { + math: "\\bigoplus" + }, + "⨂": { + math: "\\bigotimes" + }, + "⨃": { + math: "\\bigcupdot" + }, + "⨄": { + math: "\\Elxuplus" + }, + "⨅": { + math: "\\ElzThr" + }, + "⨆": { + math: "\\Elxsqcup" + }, + "⨇": { + math: "\\ElzInf" + }, + "⨈": { + math: "\\ElzSup" + }, + "⨉": { + math: "\\varprod" + }, + "⨊": { + math: "\\modtwosum" + }, + "⨋": { + math: "\\sumint" + }, + "⨌": { + math: "\\iiiint" + }, + "⨍": { + math: "\\ElzCint" + }, + "⨎": { + math: "\\intBar" + }, + "⨏": { + math: "\\clockoint" + }, + "⨑": { + math: "\\awint" + }, + "⨒": { + math: "\\rppolint" + }, + "⨓": { + math: "\\scpolint" + }, + "⨔": { + math: "\\npolint" + }, + "⨕": { + math: "\\pointint" + }, + "⨖": { + math: "\\sqrint" + }, + "⨗": { + math: "\\intlarhk" + }, + "⨘": { + math: "\\intx" + }, + "⨙": { + math: "\\intcap" + }, + "⨚": { + math: "\\intcup" + }, + "⨛": { + math: "\\upint" + }, + "⨜": { + math: "\\lowint" + }, + "⨝": { + math: "\\Join" + }, + "⨞": { + math: "\\bigtriangleleft" + }, + "⨟": { + math: "\\zcmp" + }, + "⨠": { + math: "\\zpipe" + }, + "⨡": { + math: "\\zproject" + }, + "⨢": { + math: "\\ringplus" + }, + "⨣": { + math: "\\plushat" + }, + "⨤": { + math: "\\simplus" + }, + "⨦": { + math: "\\plussim" + }, + "⨧": { + math: "\\plussubtwo" + }, + "⨨": { + math: "\\plustrif" + }, + "⨩": { + math: "\\commaminus" + }, + "⨫": { + math: "\\minusfdots" + }, + "⨬": { + math: "\\minusrdots" + }, + "⨯": { + math: "\\ElzTimes" + }, + "⨰": { + math: "\\dottimes" + }, + "⨱": { + math: "\\timesbar" + }, + "⨲": { + math: "\\btimes" + }, + "⨳": { + math: "\\smashtimes" + }, + "⨶": { + math: "\\otimeshat" + }, + "⨷": { + math: "\\Otimes" + }, + "⨸": { + math: "\\odiv" + }, + "⨹": { + math: "\\triangleplus" + }, + "⨺": { + math: "\\triangleminus" + }, + "⨻": { + math: "\\triangletimes" + }, + "⨽": { + math: "\\intprodr" + }, + "⨾": { + math: "\\fcmp" + }, + "⨿": { + math: "\\amalg" + }, + "⩀": { + math: "\\capdot" + }, + "⩁": { + math: "\\uminus" + }, + "⩂": { + math: "\\barcup" + }, + "⩃": { + math: "\\barcap" + }, + "⩄": { + math: "\\capwedge" + }, + "⩅": { + math: "\\cupvee" + }, + "⩆": { + math: "\\cupovercap" + }, + "⩇": { + math: "\\capovercup" + }, + "⩈": { + math: "\\cupbarcap" + }, + "⩉": { + math: "\\capbarcup" + }, + "⩊": { + math: "\\twocups" + }, + "⩋": { + math: "\\twocaps" + }, + "⩌": { + math: "\\closedvarcup" + }, + "⩍": { + math: "\\closedvarcap" + }, + "⩎": { + math: "\\Sqcap" + }, + "⩏": { + math: "\\Sqcup" + }, + "⩐": { + math: "\\closedvarcupsmashprod" + }, + "⩑": { + math: "\\wedgeodot" + }, + "⩒": { + math: "\\veeodot" + }, + "⩓": { + math: "\\ElzAnd" + }, + "⩔": { + math: "\\ElzOr" + }, + "⩖": { + math: "\\ElOr" + }, + "⩗": { + math: "\\bigslopedvee" + }, + "⩘": { + math: "\\bigslopedwedge" + }, + "⩙": { + math: "\\veeonwedge" + }, + "⩚": { + math: "\\wedgemidvert" + }, + "⩛": { + math: "\\veemidvert" + }, + "⩜": { + math: "\\midbarwedge" + }, + "⩝": { + math: "\\midbarvee" + }, + "⩞": { + math: "\\perspcorrespond" + }, + "⩟": { + math: "\\Elzminhat" + }, + "⩠": { + math: "\\wedgedoublebar" + }, + "⩡": { + math: "\\varveebar" + }, + "⩢": { + math: "\\doublebarvee" + }, + "⩤": { + math: "\\dsub" + }, + "⩥": { + math: "\\rsub" + }, + "⩦": { + math: "\\eqdot" + }, + "⩧": { + math: "\\dotequiv" + }, + "⩨": { + math: "\\equivVert" + }, + "⩩": { + math: "\\equivVvert" + }, + "⩪": { + math: "\\dotsim" + }, + "⩫": { + math: "\\simrdots" + }, + "⩬": { + math: "\\simminussim" + }, + "⩭": { + math: "\\congdot" + }, + "⩮": { + math: "\\stackrel{*}{=}" + }, + "⩯": { + math: "\\hatapprox" + }, + "⩰": { + math: "\\approxeqq" + }, + "⩱": { + math: "\\eqqplus" + }, + "⩲": { + math: "\\pluseqq" + }, + "⩳": { + math: "\\eqqsim" + }, + "⩴": { + math: "\\Coloneqq" + }, + "⩵": { + math: "\\Equal" + }, + "⩶": { + math: "\\Same" + }, + "⩷": { + math: "\\ddotseq" + }, + "⩸": { + math: "\\equivDD" + }, + "⩹": { + math: "\\ltcir" + }, + "⩺": { + math: "\\gtcir" + }, + "⩻": { + math: "\\ltquest" + }, + "⩼": { + math: "\\gtquest" + }, + "⩽": { + math: "\\leqslant", + mathpackages: [ + "amssymb" + ] + }, + "⩽̸": { + math: "\\nleqslant", + mathpackages: [ + "amssymb" + ] + }, + "⩾": { + math: "\\geqslant", + mathpackages: [ + "amssymb" + ] + }, + "⩾̸": { + math: "\\ngeqslant", + mathpackages: [ + "amssymb" + ] + }, + "⩿": { + math: "\\lesdot" + }, + "⪀": { + math: "\\gesdot" + }, + "⪁": { + math: "\\lesdoto" + }, + "⪂": { + math: "\\gesdoto" + }, + "⪃": { + math: "\\lesdotor" + }, + "⪄": { + math: "\\gesdotol" + }, + "⪅": { + math: "\\lessapprox" + }, + "⪆": { + math: "\\gtrapprox" + }, + "⪇": { + math: "\\lneq" + }, + "⪈": { + math: "\\gneq" + }, + "⪉": { + math: "\\lnapprox" + }, + "⪊": { + math: "\\gnapprox" + }, + "⪋": { + math: "\\lesseqqgtr" + }, + "⪌": { + math: "\\gtreqqless" + }, + "⪍": { + math: "\\lsime" + }, + "⪎": { + math: "\\gsime" + }, + "⪏": { + math: "\\lsimg" + }, + "⪐": { + math: "\\gsiml" + }, + "⪑": { + math: "\\lgE" + }, + "⪒": { + math: "\\glE" + }, + "⪓": { + math: "\\lesges" + }, + "⪔": { + math: "\\gesles" + }, + "⪕": { + math: "\\eqslantless" + }, + "⪖": { + math: "\\eqslantgtr" + }, + "⪗": { + math: "\\elsdot" + }, + "⪘": { + math: "\\egsdot" + }, + "⪙": { + math: "\\eqqless" + }, + "⪚": { + math: "\\eqqgtr" + }, + "⪛": { + math: "\\eqqslantless" + }, + "⪜": { + math: "\\eqqslantgtr" + }, + "⪝": { + math: "\\Pisymbol{ppi020}{117}" + }, + "⪞": { + math: "\\Pisymbol{ppi020}{105}" + }, + "⪟": { + math: "\\simlE" + }, + "⪠": { + math: "\\simgE" + }, + "⪡": { + math: "\\NestedLessLess" + }, + "⪡̸": { + math: "\\NotNestedLessLess" + }, + "⪢": { + math: "\\NestedGreaterGreater" + }, + "⪢̸": { + math: "\\NotNestedGreaterGreater" + }, + "⪣": { + math: "\\partialmeetcontraction" + }, + "⪤": { + math: "\\glj" + }, + "⪥": { + math: "\\gla" + }, + "⪦": { + math: "\\leftslice" + }, + "⪧": { + math: "\\rightslice" + }, + "⪨": { + math: "\\lescc" + }, + "⪩": { + math: "\\gescc" + }, + "⪪": { + math: "\\smt" + }, + "⪫": { + math: "\\lat" + }, + "⪬": { + math: "\\smte" + }, + "⪭": { + math: "\\late" + }, + "⪮": { + math: "\\bumpeqq" + }, + "⪯": { + math: "\\preceq" + }, + "⪯̸": { + math: "\\not\\preceq" + }, + "⪰": { + math: "\\succeq" + }, + "⪰̸": { + math: "\\not\\succeq" + }, + "⪱": { + math: "\\precneq" + }, + "⪲": { + math: "\\succneq" + }, + "⪳": { + math: "\\preceqq" + }, + "⪴": { + math: "\\succeqq" + }, + "⪵": { + math: "\\precneqq" + }, + "⪶": { + math: "\\succneqq" + }, + "⪷": { + math: "\\precapprox" + }, + "⪸": { + math: "\\succapprox" + }, + "⪹": { + math: "\\precnapprox" + }, + "⪺": { + math: "\\succnapprox" + }, + "⪻": { + math: "\\llcurly" + }, + "⪼": { + math: "\\ggcurly" + }, + "⪽": { + math: "\\subsetdot" + }, + "⪾": { + math: "\\supsetdot" + }, + "⪿": { + math: "\\subsetplus" + }, + "⫀": { + math: "\\supsetplus" + }, + "⫁": { + math: "\\submult" + }, + "⫂": { + math: "\\supmult" + }, + "⫃": { + math: "\\subedot" + }, + "⫄": { + math: "\\supedot" + }, + "⫅": { + math: "\\subseteqq" + }, + "⫅̸": { + math: "\\nsubseteqq" + }, + "⫆": { + math: "\\supseteqq" + }, + "⫆̸": { + math: "\\nsupseteqq" + }, + "⫇": { + math: "\\subsim" + }, + "⫈": { + math: "\\supsim" + }, + "⫉": { + math: "\\subsetapprox" + }, + "⫊": { + math: "\\supsetapprox" + }, + "⫋": { + math: "\\subsetneqq" + }, + "⫌": { + math: "\\supsetneqq" + }, + "⫍": { + math: "\\lsqhook" + }, + "⫎": { + math: "\\rsqhook" + }, + "⫏": { + math: "\\csub" + }, + "⫐": { + math: "\\csup" + }, + "⫑": { + math: "\\csube" + }, + "⫒": { + math: "\\csupe" + }, + "⫓": { + math: "\\subsup" + }, + "⫔": { + math: "\\supsub" + }, + "⫕": { + math: "\\subsub" + }, + "⫖": { + math: "\\supsup" + }, + "⫗": { + math: "\\suphsub" + }, + "⫘": { + math: "\\supdsub" + }, + "⫙": { + math: "\\forkv" + }, + "⫚": { + math: "\\topfork" + }, + "⫛": { + math: "\\mlcp" + }, + "⫝̸": { + math: "\\forks" + }, + "⫝": { + math: "\\forksnot" + }, + "⫝̸": { + math: "\\forks" + }, + "⫞": { + math: "\\shortlefttack" + }, + "⫟": { + math: "\\shortdowntack" + }, + "⫠": { + math: "\\shortuptack" + }, + "⫡": { + math: "\\perps" + }, + "⫢": { + math: "\\vDdash" + }, + "⫣": { + math: "\\dashV" + }, + "⫤": { + math: "\\Dashv" + }, + "⫥": { + math: "\\DashV" + }, + "⫦": { + math: "\\varVdash" + }, + "⫧": { + math: "\\Barv" + }, + "⫨": { + math: "\\vBar" + }, + "⫩": { + math: "\\vBarv" + }, + "⫪": { + math: "\\Top" + }, + "⫬": { + math: "\\Not" + }, + "⫭": { + math: "\\bNot" + }, + "⫮": { + math: "\\revnmid" + }, + "⫯": { + math: "\\cirmid" + }, + "⫰": { + math: "\\midcir" + }, + "⫱": { + math: "\\topcir" + }, + "⫲": { + math: "\\nhpar" + }, + "⫳": { + math: "\\parsim" + }, + "⫴": { + math: "\\interleave" + }, + "⫵": { + math: "\\nhVvert" + }, + "⫶": { + math: "\\Elztdcol" + }, + "⫷": { + math: "\\lllnest" + }, + "⫸": { + math: "\\gggnest" + }, + "⫹": { + math: "\\leqqslant" + }, + "⫺": { + math: "\\geqqslant" + }, + "⫻": { + math: "\\trslash" + }, + "⫼": { + math: "\\biginterleave" + }, + "⫽": { + math: "{{/}\\!\\!{/}}" + }, + "⫽⃥": { + math: "{\\rlap{\\textbackslash}{{/}\\!\\!{/}}}" + }, + "⫾": { + math: "\\talloblong" + }, + "⫿": { + math: "\\bigtalloblong" + }, + "⬒": { + math: "\\squaretopblack" + }, + "⬓": { + math: "\\squarebotblack" + }, + "⬔": { + math: "\\squareurblack" + }, + "⬕": { + math: "\\squarellblack" + }, + "⬖": { + math: "\\diamondleftblack" + }, + "⬗": { + math: "\\diamondrightblack" + }, + "⬘": { + math: "\\diamondtopblack" + }, + "⬙": { + math: "\\diamondbotblack" + }, + "⬚": { + math: "\\dottedsquare" + }, + "⬛": { + math: "\\blacksquare" + }, + "⬜": { + math: "\\square" + }, + "⬝": { + math: "\\vysmblksquare" + }, + "⬞": { + math: "\\vysmwhtsquare" + }, + "⬟": { + math: "\\pentagonblack" + }, + "⬠": { + math: "\\pentagon" + }, + "⬡": { + math: "\\varhexagon" + }, + "⬢": { + math: "\\varhexagonblack" + }, + "⬣": { + math: "\\hexagonblack" + }, + "⬤": { + math: "\\lgblkcircle" + }, + "⬥": { + math: "\\mdblkdiamond" + }, + "⬦": { + math: "\\mdwhtdiamond" + }, + "⬧": { + math: "\\mdblklozenge" + }, + "⬨": { + math: "\\mdwhtlozenge" + }, + "⬩": { + math: "\\smblkdiamond" + }, + "⬪": { + math: "\\smblklozenge" + }, + "⬫": { + math: "\\smwhtlozenge" + }, + "⬬": { + math: "\\blkhorzoval" + }, + "⬭": { + math: "\\whthorzoval" + }, + "⬮": { + math: "\\blkvertoval" + }, + "⬯": { + math: "\\whtvertoval" + }, + "⬰": { + math: "\\circleonleftarrow" + }, + "⬱": { + math: "\\leftthreearrows" + }, + "⬲": { + math: "\\leftarrowonoplus" + }, + "⬳": { + math: "\\longleftsquigarrow" + }, + "⬴": { + math: "\\nvtwoheadleftarrow" + }, + "⬵": { + math: "\\nVtwoheadleftarrow" + }, + "⬶": { + math: "\\twoheadmapsfrom" + }, + "⬷": { + math: "\\twoheadleftdbkarrow" + }, + "⬸": { + math: "\\leftdotarrow" + }, + "⬹": { + math: "\\nvleftarrowtail" + }, + "⬺": { + math: "\\nVleftarrowtail" + }, + "⬻": { + math: "\\twoheadleftarrowtail" + }, + "⬼": { + math: "\\nvtwoheadleftarrowtail" + }, + "⬽": { + math: "\\nVtwoheadleftarrowtail" + }, + "⬾": { + math: "\\leftarrowx" + }, + "⬿": { + math: "\\leftcurvedarrow" + }, + "⭀": { + math: "\\equalleftarrow" + }, + "⭁": { + math: "\\bsimilarleftarrow" + }, + "⭂": { + math: "\\leftarrowbackapprox" + }, + "⭃": { + math: "\\rightarrowgtr" + }, + "⭄": { + math: "\\rightarrowsupset" + }, + "⭅": { + math: "\\LLeftarrow" + }, + "⭆": { + math: "\\RRightarrow" + }, + "⭇": { + math: "\\bsimilarrightarrow" + }, + "⭈": { + math: "\\rightarrowbackapprox" + }, + "⭉": { + math: "\\similarleftarrow" + }, + "⭊": { + math: "\\leftarrowapprox" + }, + "⭋": { + math: "\\leftarrowbsimilar" + }, + "⭌": { + math: "\\rightarrowbsimilar" + }, + "⭐": { + math: "\\medwhitestar" + }, + "⭑": { + math: "\\medblackstar" + }, + "⭒": { + math: "\\smwhitestar" + }, + "⭓": { + math: "\\rightpentagonblack" + }, + "⭔": { + math: "\\rightpentagon" + }, + "〈": { + math: "\\langle" + }, + "〉": { + math: "\\rangle" + }, + "〒": { + math: "\\postalmark" + }, + "〔": { + math: "\\lbrbrak" + }, + "〕": { + math: "\\rbrbrak" + }, + "〚": { + math: "\\openbracketleft" + }, + "〛": { + math: "\\openbracketright" + }, + "〰": { + math: "\\hzigzag" + }, + "ff": { + text: "ff" + }, + "fi": { + text: "fi" + }, + "fl": { + text: "fl" + }, + "ffi": { + text: "ffi" + }, + "ffl": { + text: "ffl" + }, + "ſt": { + text: "st" + }, + "st": { + text: "st" + }, + "�": { + text: "{\\dbend}" + }, + "𝐀": { + math: "\\mathbf{A}" + }, + "𝐁": { + math: "\\mathbf{B}" + }, + "𝐂": { + math: "\\mathbf{C}" + }, + "𝐃": { + math: "\\mathbf{D}" + }, + "𝐄": { + math: "\\mathbf{E}" + }, + "𝐅": { + math: "\\mathbf{F}" + }, + "𝐆": { + math: "\\mathbf{G}" + }, + "𝐇": { + math: "\\mathbf{H}" + }, + "𝐈": { + math: "\\mathbf{I}" + }, + "𝐉": { + math: "\\mathbf{J}" + }, + "𝐊": { + math: "\\mathbf{K}" + }, + "𝐋": { + math: "\\mathbf{L}" + }, + "𝐌": { + math: "\\mathbf{M}" + }, + "𝐍": { + math: "\\mathbf{N}" + }, + "𝐎": { + math: "\\mathbf{O}" + }, + "𝐏": { + math: "\\mathbf{P}" + }, + "𝐐": { + math: "\\mathbf{Q}" + }, + "𝐑": { + math: "\\mathbf{R}" + }, + "𝐒": { + math: "\\mathbf{S}" + }, + "𝐓": { + math: "\\mathbf{T}" + }, + "𝐔": { + math: "\\mathbf{U}" + }, + "𝐕": { + math: "\\mathbf{V}" + }, + "𝐖": { + math: "\\mathbf{W}" + }, + "𝐗": { + math: "\\mathbf{X}" + }, + "𝐘": { + math: "\\mathbf{Y}" + }, + "𝐙": { + math: "\\mathbf{Z}" + }, + "𝐚": { + math: "\\mathbf{a}" + }, + "𝐛": { + math: "\\mathbf{b}" + }, + "𝐜": { + math: "\\mathbf{c}" + }, + "𝐝": { + math: "\\mathbf{d}" + }, + "𝐞": { + math: "\\mathbf{e}" + }, + "𝐟": { + math: "\\mathbf{f}" + }, + "𝐠": { + math: "\\mathbf{g}" + }, + "𝐡": { + math: "\\mathbf{h}" + }, + "𝐢": { + math: "\\mathbf{i}" + }, + "𝐣": { + math: "\\mathbf{j}" + }, + "𝐤": { + math: "\\mathbf{k}" + }, + "𝐥": { + math: "\\mathbf{l}" + }, + "𝐦": { + math: "\\mathbf{m}" + }, + "𝐧": { + math: "\\mathbf{n}" + }, + "𝐨": { + math: "\\mathbf{o}" + }, + "𝐩": { + math: "\\mathbf{p}" + }, + "𝐪": { + math: "\\mathbf{q}" + }, + "𝐫": { + math: "\\mathbf{r}" + }, + "𝐬": { + math: "\\mathbf{s}" + }, + "𝐭": { + math: "\\mathbf{t}" + }, + "𝐮": { + math: "\\mathbf{u}" + }, + "𝐯": { + math: "\\mathbf{v}" + }, + "𝐰": { + math: "\\mathbf{w}" + }, + "𝐱": { + math: "\\mathbf{x}" + }, + "𝐲": { + math: "\\mathbf{y}" + }, + "𝐳": { + math: "\\mathbf{z}" + }, + "𝐴": { + math: "\\mathsl{A}" + }, + "𝐵": { + math: "\\mathsl{B}" + }, + "𝐶": { + math: "\\mathsl{C}" + }, + "𝐷": { + math: "\\mathsl{D}" + }, + "𝐸": { + math: "\\mathsl{E}" + }, + "𝐹": { + math: "\\mathsl{F}" + }, + "𝐺": { + math: "\\mathsl{G}" + }, + "𝐻": { + math: "\\mathsl{H}" + }, + "𝐼": { + math: "\\mathsl{I}" + }, + "𝐽": { + math: "\\mathsl{J}" + }, + "𝐾": { + math: "\\mathsl{K}" + }, + "𝐿": { + math: "\\mathsl{L}" + }, + "𝑀": { + math: "\\mathsl{M}" + }, + "𝑁": { + math: "\\mathsl{N}" + }, + "𝑂": { + math: "\\mathsl{O}" + }, + "𝑃": { + math: "\\mathsl{P}" + }, + "𝑄": { + math: "\\mathsl{Q}" + }, + "𝑅": { + math: "\\mathsl{R}" + }, + "𝑆": { + math: "\\mathsl{S}" + }, + "𝑇": { + math: "\\mathsl{T}" + }, + "𝑈": { + math: "\\mathsl{U}" + }, + "𝑉": { + math: "\\mathsl{V}" + }, + "𝑊": { + math: "\\mathsl{W}" + }, + "𝑋": { + math: "\\mathsl{X}" + }, + "𝑌": { + math: "\\mathsl{Y}" + }, + "𝑍": { + math: "\\mathsl{Z}" + }, + "𝑎": { + math: "\\mathsl{a}" + }, + "𝑏": { + math: "\\mathsl{b}" + }, + "𝑐": { + math: "\\mathsl{c}" + }, + "𝑑": { + math: "\\mathsl{d}" + }, + "𝑒": { + math: "\\mathsl{e}" + }, + "𝑓": { + math: "\\mathsl{f}" + }, + "𝑔": { + math: "\\mathsl{g}" + }, + "𝑖": { + math: "\\mathsl{i}" + }, + "𝑗": { + math: "\\mathsl{j}" + }, + "𝑘": { + math: "\\mathsl{k}" + }, + "𝑙": { + math: "\\mathsl{l}" + }, + "𝑚": { + math: "\\mathsl{m}" + }, + "𝑛": { + math: "\\mathsl{n}" + }, + "𝑜": { + math: "\\mathsl{o}" + }, + "𝑝": { + math: "\\mathsl{p}" + }, + "𝑞": { + math: "\\mathsl{q}" + }, + "𝑟": { + math: "\\mathsl{r}" + }, + "𝑠": { + math: "\\mathsl{s}" + }, + "𝑡": { + math: "\\mathsl{t}" + }, + "𝑢": { + math: "\\mathsl{u}" + }, + "𝑣": { + math: "\\mathsl{v}" + }, + "𝑤": { + math: "\\mathsl{w}" + }, + "𝑥": { + math: "\\mathsl{x}" + }, + "𝑦": { + math: "\\mathsl{y}" + }, + "𝑧": { + math: "\\mathsl{z}" + }, + "𝑨": { + math: "\\mathbit{A}" + }, + "𝑩": { + math: "\\mathbit{B}" + }, + "𝑪": { + math: "\\mathbit{C}" + }, + "𝑫": { + math: "\\mathbit{D}" + }, + "𝑬": { + math: "\\mathbit{E}" + }, + "𝑭": { + math: "\\mathbit{F}" + }, + "𝑮": { + math: "\\mathbit{G}" + }, + "𝑯": { + math: "\\mathbit{H}" + }, + "𝑰": { + math: "\\mathbit{I}" + }, + "𝑱": { + math: "\\mathbit{J}" + }, + "𝑲": { + math: "\\mathbit{K}" + }, + "𝑳": { + math: "\\mathbit{L}" + }, + "𝑴": { + math: "\\mathbit{M}" + }, + "𝑵": { + math: "\\mathbit{N}" + }, + "𝑶": { + math: "\\mathbit{O}" + }, + "𝑷": { + math: "\\mathbit{P}" + }, + "𝑸": { + math: "\\mathbit{Q}" + }, + "𝑹": { + math: "\\mathbit{R}" + }, + "𝑺": { + math: "\\mathbit{S}" + }, + "𝑻": { + math: "\\mathbit{T}" + }, + "𝑼": { + math: "\\mathbit{U}" + }, + "𝑽": { + math: "\\mathbit{V}" + }, + "𝑾": { + math: "\\mathbit{W}" + }, + "𝑿": { + math: "\\mathbit{X}" + }, + "𝒀": { + math: "\\mathbit{Y}" + }, + "𝒁": { + math: "\\mathbit{Z}" + }, + "𝒂": { + math: "\\mathbit{a}" + }, + "𝒃": { + math: "\\mathbit{b}" + }, + "𝒄": { + math: "\\mathbit{c}" + }, + "𝒅": { + math: "\\mathbit{d}" + }, + "𝒆": { + math: "\\mathbit{e}" + }, + "𝒇": { + math: "\\mathbit{f}" + }, + "𝒈": { + math: "\\mathbit{g}" + }, + "𝒉": { + math: "\\mathbit{h}" + }, + "𝒊": { + math: "\\mathbit{i}" + }, + "𝒋": { + math: "\\mathbit{j}" + }, + "𝒌": { + math: "\\mathbit{k}" + }, + "𝒍": { + math: "\\mathbit{l}" + }, + "𝒎": { + math: "\\mathbit{m}" + }, + "𝒏": { + math: "\\mathbit{n}" + }, + "𝒐": { + math: "\\mathbit{o}" + }, + "𝒑": { + math: "\\mathbit{p}" + }, + "𝒒": { + math: "\\mathbit{q}" + }, + "𝒓": { + math: "\\mathbit{r}" + }, + "𝒔": { + math: "\\mathbit{s}" + }, + "𝒕": { + math: "\\mathbit{t}" + }, + "𝒖": { + math: "\\mathbit{u}" + }, + "𝒗": { + math: "\\mathbit{v}" + }, + "𝒘": { + math: "\\mathbit{w}" + }, + "𝒙": { + math: "\\mathbit{x}" + }, + "𝒚": { + math: "\\mathbit{y}" + }, + "𝒛": { + math: "\\mathbit{z}" + }, + "𝒜": { + math: "\\mathscr{A}" + }, + "𝒞": { + math: "\\mathscr{C}" + }, + "𝒟": { + math: "\\mathscr{D}" + }, + "𝒢": { + math: "\\mathscr{G}" + }, + "𝒥": { + math: "\\mathscr{J}" + }, + "𝒦": { + math: "\\mathscr{K}" + }, + "𝒩": { + math: "\\mathscr{N}" + }, + "𝒪": { + math: "\\mathscr{O}" + }, + "𝒫": { + math: "\\mathscr{P}" + }, + "𝒬": { + math: "\\mathscr{Q}" + }, + "𝒮": { + math: "\\mathscr{S}" + }, + "𝒯": { + math: "\\mathscr{T}" + }, + "𝒰": { + math: "\\mathscr{U}" + }, + "𝒱": { + math: "\\mathscr{V}" + }, + "𝒲": { + math: "\\mathscr{W}" + }, + "𝒳": { + math: "\\mathscr{X}" + }, + "𝒴": { + math: "\\mathscr{Y}" + }, + "𝒵": { + math: "\\mathscr{Z}" + }, + "𝒶": { + math: "\\mathscr{a}" + }, + "𝒷": { + math: "\\mathscr{b}" + }, + "𝒸": { + math: "\\mathscr{c}" + }, + "𝒹": { + math: "\\mathscr{d}" + }, + "𝒻": { + math: "\\mathscr{f}" + }, + "𝒽": { + math: "\\mathscr{h}" + }, + "𝒾": { + math: "\\mathscr{i}" + }, + "𝒿": { + math: "\\mathscr{j}" + }, + "𝓀": { + math: "\\mathscr{k}" + }, + "𝓁": { + math: "\\mathscr{l}" + }, + "𝓂": { + math: "\\mathscr{m}" + }, + "𝓃": { + math: "\\mathscr{n}" + }, + "𝓅": { + math: "\\mathscr{p}" + }, + "𝓆": { + math: "\\mathscr{q}" + }, + "𝓇": { + math: "\\mathscr{r}" + }, + "𝓈": { + math: "\\mathscr{s}" + }, + "𝓉": { + math: "\\mathscr{t}" + }, + "𝓊": { + math: "\\mathscr{u}" + }, + "𝓋": { + math: "\\mathscr{v}" + }, + "𝓌": { + math: "\\mathscr{w}" + }, + "𝓍": { + math: "\\mathscr{x}" + }, + "𝓎": { + math: "\\mathscr{y}" + }, + "𝓏": { + math: "\\mathscr{z}" + }, + "𝓐": { + math: "\\mathmit{A}" + }, + "𝓑": { + math: "\\mathmit{B}" + }, + "𝓒": { + math: "\\mathmit{C}" + }, + "𝓓": { + math: "\\mathmit{D}" + }, + "𝓔": { + math: "\\mathmit{E}" + }, + "𝓕": { + math: "\\mathmit{F}" + }, + "𝓖": { + math: "\\mathmit{G}" + }, + "𝓗": { + math: "\\mathmit{H}" + }, + "𝓘": { + math: "\\mathmit{I}" + }, + "𝓙": { + math: "\\mathmit{J}" + }, + "𝓚": { + math: "\\mathmit{K}" + }, + "𝓛": { + math: "\\mathmit{L}" + }, + "𝓜": { + math: "\\mathmit{M}" + }, + "𝓝": { + math: "\\mathmit{N}" + }, + "𝓞": { + math: "\\mathmit{O}" + }, + "𝓟": { + math: "\\mathmit{P}" + }, + "𝓠": { + math: "\\mathmit{Q}" + }, + "𝓡": { + math: "\\mathmit{R}" + }, + "𝓢": { + math: "\\mathmit{S}" + }, + "𝓣": { + math: "\\mathmit{T}" + }, + "𝓤": { + math: "\\mathmit{U}" + }, + "𝓥": { + math: "\\mathmit{V}" + }, + "𝓦": { + math: "\\mathmit{W}" + }, + "𝓧": { + math: "\\mathmit{X}" + }, + "𝓨": { + math: "\\mathmit{Y}" + }, + "𝓩": { + math: "\\mathmit{Z}" + }, + "𝓪": { + math: "\\mathmit{a}" + }, + "𝓫": { + math: "\\mathmit{b}" + }, + "𝓬": { + math: "\\mathmit{c}" + }, + "𝓭": { + math: "\\mathmit{d}" + }, + "𝓮": { + math: "\\mathmit{e}" + }, + "𝓯": { + math: "\\mathmit{f}" + }, + "𝓰": { + math: "\\mathmit{g}" + }, + "𝓱": { + math: "\\mathmit{h}" + }, + "𝓲": { + math: "\\mathmit{i}" + }, + "𝓳": { + math: "\\mathmit{j}" + }, + "𝓴": { + math: "\\mathmit{k}" + }, + "𝓵": { + math: "\\mathmit{l}" + }, + "𝓶": { + math: "\\mathmit{m}" + }, + "𝓷": { + math: "\\mathmit{n}" + }, + "𝓸": { + math: "\\mathmit{o}" + }, + "𝓹": { + math: "\\mathmit{p}" + }, + "𝓺": { + math: "\\mathmit{q}" + }, + "𝓻": { + math: "\\mathmit{r}" + }, + "𝓼": { + math: "\\mathmit{s}" + }, + "𝓽": { + math: "\\mathmit{t}" + }, + "𝓾": { + math: "\\mathmit{u}" + }, + "𝓿": { + math: "\\mathmit{v}" + }, + "𝔀": { + math: "\\mathmit{w}" + }, + "𝔁": { + math: "\\mathmit{x}" + }, + "𝔂": { + math: "\\mathmit{y}" + }, + "𝔃": { + math: "\\mathmit{z}" + }, + "𝔄": { + math: "\\mathfrak{A}" + }, + "𝔅": { + math: "\\mathfrak{B}" + }, + "𝔇": { + math: "\\mathfrak{D}" + }, + "𝔈": { + math: "\\mathfrak{E}" + }, + "𝔉": { + math: "\\mathfrak{F}" + }, + "𝔊": { + math: "\\mathfrak{G}" + }, + "𝔍": { + math: "\\mathfrak{J}" + }, + "𝔎": { + math: "\\mathfrak{K}" + }, + "𝔏": { + math: "\\mathfrak{L}" + }, + "𝔐": { + math: "\\mathfrak{M}" + }, + "𝔑": { + math: "\\mathfrak{N}" + }, + "𝔒": { + math: "\\mathfrak{O}" + }, + "𝔓": { + math: "\\mathfrak{P}" + }, + "𝔔": { + math: "\\mathfrak{Q}" + }, + "𝔖": { + math: "\\mathfrak{S}" + }, + "𝔗": { + math: "\\mathfrak{T}" + }, + "𝔘": { + math: "\\mathfrak{U}" + }, + "𝔙": { + math: "\\mathfrak{V}" + }, + "𝔚": { + math: "\\mathfrak{W}" + }, + "𝔛": { + math: "\\mathfrak{X}" + }, + "𝔜": { + math: "\\mathfrak{Y}" + }, + "𝔞": { + math: "\\mathfrak{a}" + }, + "𝔟": { + math: "\\mathfrak{b}" + }, + "𝔠": { + math: "\\mathfrak{c}" + }, + "𝔡": { + math: "\\mathfrak{d}" + }, + "𝔢": { + math: "\\mathfrak{e}" + }, + "𝔣": { + math: "\\mathfrak{f}" + }, + "𝔤": { + math: "\\mathfrak{g}" + }, + "𝔥": { + math: "\\mathfrak{h}" + }, + "𝔦": { + math: "\\mathfrak{i}" + }, + "𝔧": { + math: "\\mathfrak{j}" + }, + "𝔨": { + math: "\\mathfrak{k}" + }, + "𝔩": { + math: "\\mathfrak{l}" + }, + "𝔪": { + math: "\\mathfrak{m}" + }, + "𝔫": { + math: "\\mathfrak{n}" + }, + "𝔬": { + math: "\\mathfrak{o}" + }, + "𝔭": { + math: "\\mathfrak{p}" + }, + "𝔮": { + math: "\\mathfrak{q}" + }, + "𝔯": { + math: "\\mathfrak{r}" + }, + "𝔰": { + math: "\\mathfrak{s}" + }, + "𝔱": { + math: "\\mathfrak{t}" + }, + "𝔲": { + math: "\\mathfrak{u}" + }, + "𝔳": { + math: "\\mathfrak{v}" + }, + "𝔴": { + math: "\\mathfrak{w}" + }, + "𝔵": { + math: "\\mathfrak{x}" + }, + "𝔶": { + math: "\\mathfrak{y}" + }, + "𝔷": { + math: "\\mathfrak{z}" + }, + "𝔸": { + math: "\\mathbb{A}" + }, + "𝔹": { + math: "\\mathbb{B}" + }, + "𝔻": { + math: "\\mathbb{D}" + }, + "𝔼": { + math: "\\mathbb{E}" + }, + "𝔽": { + math: "\\mathbb{F}" + }, + "𝔾": { + math: "\\mathbb{G}" + }, + "𝕀": { + math: "\\mathbb{I}" + }, + "𝕁": { + math: "\\mathbb{J}" + }, + "𝕂": { + math: "\\mathbb{K}" + }, + "𝕃": { + math: "\\mathbb{L}" + }, + "𝕄": { + math: "\\mathbb{M}" + }, + "𝕆": { + math: "\\mathbb{O}" + }, + "𝕊": { + math: "\\mathbb{S}" + }, + "𝕋": { + math: "\\mathbb{T}" + }, + "𝕌": { + math: "\\mathbb{U}" + }, + "𝕍": { + math: "\\mathbb{V}" + }, + "𝕎": { + math: "\\mathbb{W}" + }, + "𝕏": { + math: "\\mathbb{X}" + }, + "𝕐": { + math: "\\mathbb{Y}" + }, + "𝕒": { + math: "\\mathbb{a}" + }, + "𝕓": { + math: "\\mathbb{b}" + }, + "𝕔": { + math: "\\mathbb{c}" + }, + "𝕕": { + math: "\\mathbb{d}" + }, + "𝕖": { + math: "\\mathbb{e}" + }, + "𝕗": { + math: "\\mathbb{f}" + }, + "𝕘": { + math: "\\mathbb{g}" + }, + "𝕙": { + math: "\\mathbb{h}" + }, + "𝕚": { + math: "\\mathbb{i}" + }, + "𝕛": { + math: "\\mathbb{j}" + }, + "𝕜": { + math: "\\mathbb{k}" + }, + "𝕝": { + math: "\\mathbb{l}" + }, + "𝕞": { + math: "\\mathbb{m}" + }, + "𝕟": { + math: "\\mathbb{n}" + }, + "𝕠": { + math: "\\mathbb{o}" + }, + "𝕡": { + math: "\\mathbb{p}" + }, + "𝕢": { + math: "\\mathbb{q}" + }, + "𝕣": { + math: "\\mathbb{r}" + }, + "𝕤": { + math: "\\mathbb{s}" + }, + "𝕥": { + math: "\\mathbb{t}" + }, + "𝕦": { + math: "\\mathbb{u}" + }, + "𝕧": { + math: "\\mathbb{v}" + }, + "𝕨": { + math: "\\mathbb{w}" + }, + "𝕩": { + math: "\\mathbb{x}" + }, + "𝕪": { + math: "\\mathbb{y}" + }, + "𝕫": { + math: "\\mathbb{z}" + }, + "𝕬": { + math: "\\mathslbb{A}" + }, + "𝕭": { + math: "\\mathslbb{B}" + }, + "𝕮": { + math: "\\mathslbb{C}" + }, + "𝕯": { + math: "\\mathslbb{D}" + }, + "𝕰": { + math: "\\mathslbb{E}" + }, + "𝕱": { + math: "\\mathslbb{F}" + }, + "𝕲": { + math: "\\mathslbb{G}" + }, + "𝕳": { + math: "\\mathslbb{H}" + }, + "𝕴": { + math: "\\mathslbb{I}" + }, + "𝕵": { + math: "\\mathslbb{J}" + }, + "𝕶": { + math: "\\mathslbb{K}" + }, + "𝕷": { + math: "\\mathslbb{L}" + }, + "𝕸": { + math: "\\mathslbb{M}" + }, + "𝕹": { + math: "\\mathslbb{N}" + }, + "𝕺": { + math: "\\mathslbb{O}" + }, + "𝕻": { + math: "\\mathslbb{P}" + }, + "𝕼": { + math: "\\mathslbb{Q}" + }, + "𝕽": { + math: "\\mathslbb{R}" + }, + "𝕾": { + math: "\\mathslbb{S}" + }, + "𝕿": { + math: "\\mathslbb{T}" + }, + "𝖀": { + math: "\\mathslbb{U}" + }, + "𝖁": { + math: "\\mathslbb{V}" + }, + "𝖂": { + math: "\\mathslbb{W}" + }, + "𝖃": { + math: "\\mathslbb{X}" + }, + "𝖄": { + math: "\\mathslbb{Y}" + }, + "𝖅": { + math: "\\mathslbb{Z}" + }, + "𝖆": { + math: "\\mathslbb{a}" + }, + "𝖇": { + math: "\\mathslbb{b}" + }, + "𝖈": { + math: "\\mathslbb{c}" + }, + "𝖉": { + math: "\\mathslbb{d}" + }, + "𝖊": { + math: "\\mathslbb{e}" + }, + "𝖋": { + math: "\\mathslbb{f}" + }, + "𝖌": { + math: "\\mathslbb{g}" + }, + "𝖍": { + math: "\\mathslbb{h}" + }, + "𝖎": { + math: "\\mathslbb{i}" + }, + "𝖏": { + math: "\\mathslbb{j}" + }, + "𝖐": { + math: "\\mathslbb{k}" + }, + "𝖑": { + math: "\\mathslbb{l}" + }, + "𝖒": { + math: "\\mathslbb{m}" + }, + "𝖓": { + math: "\\mathslbb{n}" + }, + "𝖔": { + math: "\\mathslbb{o}" + }, + "𝖕": { + math: "\\mathslbb{p}" + }, + "𝖖": { + math: "\\mathslbb{q}" + }, + "𝖗": { + math: "\\mathslbb{r}" + }, + "𝖘": { + math: "\\mathslbb{s}" + }, + "𝖙": { + math: "\\mathslbb{t}" + }, + "𝖚": { + math: "\\mathslbb{u}" + }, + "𝖛": { + math: "\\mathslbb{v}" + }, + "𝖜": { + math: "\\mathslbb{w}" + }, + "𝖝": { + math: "\\mathslbb{x}" + }, + "𝖞": { + math: "\\mathslbb{y}" + }, + "𝖟": { + math: "\\mathslbb{z}" + }, + "𝖠": { + math: "\\mathsf{A}" + }, + "𝖡": { + math: "\\mathsf{B}" + }, + "𝖢": { + math: "\\mathsf{C}" + }, + "𝖣": { + math: "\\mathsf{D}" + }, + "𝖤": { + math: "\\mathsf{E}" + }, + "𝖥": { + math: "\\mathsf{F}" + }, + "𝖦": { + math: "\\mathsf{G}" + }, + "𝖧": { + math: "\\mathsf{H}" + }, + "𝖨": { + math: "\\mathsf{I}" + }, + "𝖩": { + math: "\\mathsf{J}" + }, + "𝖪": { + math: "\\mathsf{K}" + }, + "𝖫": { + math: "\\mathsf{L}" + }, + "𝖬": { + math: "\\mathsf{M}" + }, + "𝖭": { + math: "\\mathsf{N}" + }, + "𝖮": { + math: "\\mathsf{O}" + }, + "𝖯": { + math: "\\mathsf{P}" + }, + "𝖰": { + math: "\\mathsf{Q}" + }, + "𝖱": { + math: "\\mathsf{R}" + }, + "𝖲": { + math: "\\mathsf{S}" + }, + "𝖳": { + math: "\\mathsf{T}" + }, + "𝖴": { + math: "\\mathsf{U}" + }, + "𝖵": { + math: "\\mathsf{V}" + }, + "𝖶": { + math: "\\mathsf{W}" + }, + "𝖷": { + math: "\\mathsf{X}" + }, + "𝖸": { + math: "\\mathsf{Y}" + }, + "𝖹": { + math: "\\mathsf{Z}" + }, + "𝖺": { + math: "\\mathsf{a}" + }, + "𝖻": { + math: "\\mathsf{b}" + }, + "𝖼": { + math: "\\mathsf{c}" + }, + "𝖽": { + math: "\\mathsf{d}" + }, + "𝖾": { + math: "\\mathsf{e}" + }, + "𝖿": { + math: "\\mathsf{f}" + }, + "𝗀": { + math: "\\mathsf{g}" + }, + "𝗁": { + math: "\\mathsf{h}" + }, + "𝗂": { + math: "\\mathsf{i}" + }, + "𝗃": { + math: "\\mathsf{j}" + }, + "𝗄": { + math: "\\mathsf{k}" + }, + "𝗅": { + math: "\\mathsf{l}" + }, + "𝗆": { + math: "\\mathsf{m}" + }, + "𝗇": { + math: "\\mathsf{n}" + }, + "𝗈": { + math: "\\mathsf{o}" + }, + "𝗉": { + math: "\\mathsf{p}" + }, + "𝗊": { + math: "\\mathsf{q}" + }, + "𝗋": { + math: "\\mathsf{r}" + }, + "𝗌": { + math: "\\mathsf{s}" + }, + "𝗍": { + math: "\\mathsf{t}" + }, + "𝗎": { + math: "\\mathsf{u}" + }, + "𝗏": { + math: "\\mathsf{v}" + }, + "𝗐": { + math: "\\mathsf{w}" + }, + "𝗑": { + math: "\\mathsf{x}" + }, + "𝗒": { + math: "\\mathsf{y}" + }, + "𝗓": { + math: "\\mathsf{z}" + }, + "𝗔": { + math: "\\mathsfbf{A}" + }, + "𝗕": { + math: "\\mathsfbf{B}" + }, + "𝗖": { + math: "\\mathsfbf{C}" + }, + "𝗗": { + math: "\\mathsfbf{D}" + }, + "𝗘": { + math: "\\mathsfbf{E}" + }, + "𝗙": { + math: "\\mathsfbf{F}" + }, + "𝗚": { + math: "\\mathsfbf{G}" + }, + "𝗛": { + math: "\\mathsfbf{H}" + }, + "𝗜": { + math: "\\mathsfbf{I}" + }, + "𝗝": { + math: "\\mathsfbf{J}" + }, + "𝗞": { + math: "\\mathsfbf{K}" + }, + "𝗟": { + math: "\\mathsfbf{L}" + }, + "𝗠": { + math: "\\mathsfbf{M}" + }, + "𝗡": { + math: "\\mathsfbf{N}" + }, + "𝗢": { + math: "\\mathsfbf{O}" + }, + "𝗣": { + math: "\\mathsfbf{P}" + }, + "𝗤": { + math: "\\mathsfbf{Q}" + }, + "𝗥": { + math: "\\mathsfbf{R}" + }, + "𝗦": { + math: "\\mathsfbf{S}" + }, + "𝗧": { + math: "\\mathsfbf{T}" + }, + "𝗨": { + math: "\\mathsfbf{U}" + }, + "𝗩": { + math: "\\mathsfbf{V}" + }, + "𝗪": { + math: "\\mathsfbf{W}" + }, + "𝗫": { + math: "\\mathsfbf{X}" + }, + "𝗬": { + math: "\\mathsfbf{Y}" + }, + "𝗭": { + math: "\\mathsfbf{Z}" + }, + "𝗮": { + math: "\\mathsfbf{a}" + }, + "𝗯": { + math: "\\mathsfbf{b}" + }, + "𝗰": { + math: "\\mathsfbf{c}" + }, + "𝗱": { + math: "\\mathsfbf{d}" + }, + "𝗲": { + math: "\\mathsfbf{e}" + }, + "𝗳": { + math: "\\mathsfbf{f}" + }, + "𝗴": { + math: "\\mathsfbf{g}" + }, + "𝗵": { + math: "\\mathsfbf{h}" + }, + "𝗶": { + math: "\\mathsfbf{i}" + }, + "𝗷": { + math: "\\mathsfbf{j}" + }, + "𝗸": { + math: "\\mathsfbf{k}" + }, + "𝗹": { + math: "\\mathsfbf{l}" + }, + "𝗺": { + math: "\\mathsfbf{m}" + }, + "𝗻": { + math: "\\mathsfbf{n}" + }, + "𝗼": { + math: "\\mathsfbf{o}" + }, + "𝗽": { + math: "\\mathsfbf{p}" + }, + "𝗾": { + math: "\\mathsfbf{q}" + }, + "𝗿": { + math: "\\mathsfbf{r}" + }, + "𝘀": { + math: "\\mathsfbf{s}" + }, + "𝘁": { + math: "\\mathsfbf{t}" + }, + "𝘂": { + math: "\\mathsfbf{u}" + }, + "𝘃": { + math: "\\mathsfbf{v}" + }, + "𝘄": { + math: "\\mathsfbf{w}" + }, + "𝘅": { + math: "\\mathsfbf{x}" + }, + "𝘆": { + math: "\\mathsfbf{y}" + }, + "𝘇": { + math: "\\mathsfbf{z}" + }, + "𝘈": { + math: "\\mathsfsl{A}" + }, + "𝘉": { + math: "\\mathsfsl{B}" + }, + "𝘊": { + math: "\\mathsfsl{C}" + }, + "𝘋": { + math: "\\mathsfsl{D}" + }, + "𝘌": { + math: "\\mathsfsl{E}" + }, + "𝘍": { + math: "\\mathsfsl{F}" + }, + "𝘎": { + math: "\\mathsfsl{G}" + }, + "𝘏": { + math: "\\mathsfsl{H}" + }, + "𝘐": { + math: "\\mathsfsl{I}" + }, + "𝘑": { + math: "\\mathsfsl{J}" + }, + "𝘒": { + math: "\\mathsfsl{K}" + }, + "𝘓": { + math: "\\mathsfsl{L}" + }, + "𝘔": { + math: "\\mathsfsl{M}" + }, + "𝘕": { + math: "\\mathsfsl{N}" + }, + "𝘖": { + math: "\\mathsfsl{O}" + }, + "𝘗": { + math: "\\mathsfsl{P}" + }, + "𝘘": { + math: "\\mathsfsl{Q}" + }, + "𝘙": { + math: "\\mathsfsl{R}" + }, + "𝘚": { + math: "\\mathsfsl{S}" + }, + "𝘛": { + math: "\\mathsfsl{T}" + }, + "𝘜": { + math: "\\mathsfsl{U}" + }, + "𝘝": { + math: "\\mathsfsl{V}" + }, + "𝘞": { + math: "\\mathsfsl{W}" + }, + "𝘟": { + math: "\\mathsfsl{X}" + }, + "𝘠": { + math: "\\mathsfsl{Y}" + }, + "𝘡": { + math: "\\mathsfsl{Z}" + }, + "𝘢": { + math: "\\mathsfsl{a}" + }, + "𝘣": { + math: "\\mathsfsl{b}" + }, + "𝘤": { + math: "\\mathsfsl{c}" + }, + "𝘥": { + math: "\\mathsfsl{d}" + }, + "𝘦": { + math: "\\mathsfsl{e}" + }, + "𝘧": { + math: "\\mathsfsl{f}" + }, + "𝘨": { + math: "\\mathsfsl{g}" + }, + "𝘩": { + math: "\\mathsfsl{h}" + }, + "𝘪": { + math: "\\mathsfsl{i}" + }, + "𝘫": { + math: "\\mathsfsl{j}" + }, + "𝘬": { + math: "\\mathsfsl{k}" + }, + "𝘭": { + math: "\\mathsfsl{l}" + }, + "𝘮": { + math: "\\mathsfsl{m}" + }, + "𝘯": { + math: "\\mathsfsl{n}" + }, + "𝘰": { + math: "\\mathsfsl{o}" + }, + "𝘱": { + math: "\\mathsfsl{p}" + }, + "𝘲": { + math: "\\mathsfsl{q}" + }, + "𝘳": { + math: "\\mathsfsl{r}" + }, + "𝘴": { + math: "\\mathsfsl{s}" + }, + "𝘵": { + math: "\\mathsfsl{t}" + }, + "𝘶": { + math: "\\mathsfsl{u}" + }, + "𝘷": { + math: "\\mathsfsl{v}" + }, + "𝘸": { + math: "\\mathsfsl{w}" + }, + "𝘹": { + math: "\\mathsfsl{x}" + }, + "𝘺": { + math: "\\mathsfsl{y}" + }, + "𝘻": { + math: "\\mathsfsl{z}" + }, + "𝘼": { + math: "\\mathsfbfsl{A}" + }, + "𝘽": { + math: "\\mathsfbfsl{B}" + }, + "𝘾": { + math: "\\mathsfbfsl{C}" + }, + "𝘿": { + math: "\\mathsfbfsl{D}" + }, + "𝙀": { + math: "\\mathsfbfsl{E}" + }, + "𝙁": { + math: "\\mathsfbfsl{F}" + }, + "𝙂": { + math: "\\mathsfbfsl{G}" + }, + "𝙃": { + math: "\\mathsfbfsl{H}" + }, + "𝙄": { + math: "\\mathsfbfsl{I}" + }, + "𝙅": { + math: "\\mathsfbfsl{J}" + }, + "𝙆": { + math: "\\mathsfbfsl{K}" + }, + "𝙇": { + math: "\\mathsfbfsl{L}" + }, + "𝙈": { + math: "\\mathsfbfsl{M}" + }, + "𝙉": { + math: "\\mathsfbfsl{N}" + }, + "𝙊": { + math: "\\mathsfbfsl{O}" + }, + "𝙋": { + math: "\\mathsfbfsl{P}" + }, + "𝙌": { + math: "\\mathsfbfsl{Q}" + }, + "𝙍": { + math: "\\mathsfbfsl{R}" + }, + "𝙎": { + math: "\\mathsfbfsl{S}" + }, + "𝙏": { + math: "\\mathsfbfsl{T}" + }, + "𝙐": { + math: "\\mathsfbfsl{U}" + }, + "𝙑": { + math: "\\mathsfbfsl{V}" + }, + "𝙒": { + math: "\\mathsfbfsl{W}" + }, + "𝙓": { + math: "\\mathsfbfsl{X}" + }, + "𝙔": { + math: "\\mathsfbfsl{Y}" + }, + "𝙕": { + math: "\\mathsfbfsl{Z}" + }, + "𝙖": { + math: "\\mathsfbfsl{a}" + }, + "𝙗": { + math: "\\mathsfbfsl{b}" + }, + "𝙘": { + math: "\\mathsfbfsl{c}" + }, + "𝙙": { + math: "\\mathsfbfsl{d}" + }, + "𝙚": { + math: "\\mathsfbfsl{e}" + }, + "𝙛": { + math: "\\mathsfbfsl{f}" + }, + "𝙜": { + math: "\\mathsfbfsl{g}" + }, + "𝙝": { + math: "\\mathsfbfsl{h}" + }, + "𝙞": { + math: "\\mathsfbfsl{i}" + }, + "𝙟": { + math: "\\mathsfbfsl{j}" + }, + "𝙠": { + math: "\\mathsfbfsl{k}" + }, + "𝙡": { + math: "\\mathsfbfsl{l}" + }, + "𝙢": { + math: "\\mathsfbfsl{m}" + }, + "𝙣": { + math: "\\mathsfbfsl{n}" + }, + "𝙤": { + math: "\\mathsfbfsl{o}" + }, + "𝙥": { + math: "\\mathsfbfsl{p}" + }, + "𝙦": { + math: "\\mathsfbfsl{q}" + }, + "𝙧": { + math: "\\mathsfbfsl{r}" + }, + "𝙨": { + math: "\\mathsfbfsl{s}" + }, + "𝙩": { + math: "\\mathsfbfsl{t}" + }, + "𝙪": { + math: "\\mathsfbfsl{u}" + }, + "𝙫": { + math: "\\mathsfbfsl{v}" + }, + "𝙬": { + math: "\\mathsfbfsl{w}" + }, + "𝙭": { + math: "\\mathsfbfsl{x}" + }, + "𝙮": { + math: "\\mathsfbfsl{y}" + }, + "𝙯": { + math: "\\mathsfbfsl{z}" + }, + "𝙰": { + math: "\\mathtt{A}" + }, + "𝙱": { + math: "\\mathtt{B}" + }, + "𝙲": { + math: "\\mathtt{C}" + }, + "𝙳": { + math: "\\mathtt{D}" + }, + "𝙴": { + math: "\\mathtt{E}" + }, + "𝙵": { + math: "\\mathtt{F}" + }, + "𝙶": { + math: "\\mathtt{G}" + }, + "𝙷": { + math: "\\mathtt{H}" + }, + "𝙸": { + math: "\\mathtt{I}" + }, + "𝙹": { + math: "\\mathtt{J}" + }, + "𝙺": { + math: "\\mathtt{K}" + }, + "𝙻": { + math: "\\mathtt{L}" + }, + "𝙼": { + math: "\\mathtt{M}" + }, + "𝙽": { + math: "\\mathtt{N}" + }, + "𝙾": { + math: "\\mathtt{O}" + }, + "𝙿": { + math: "\\mathtt{P}" + }, + "𝚀": { + math: "\\mathtt{Q}" + }, + "𝚁": { + math: "\\mathtt{R}" + }, + "𝚂": { + math: "\\mathtt{S}" + }, + "𝚃": { + math: "\\mathtt{T}" + }, + "𝚄": { + math: "\\mathtt{U}" + }, + "𝚅": { + math: "\\mathtt{V}" + }, + "𝚆": { + math: "\\mathtt{W}" + }, + "𝚇": { + math: "\\mathtt{X}" + }, + "𝚈": { + math: "\\mathtt{Y}" + }, + "𝚉": { + math: "\\mathtt{Z}" + }, + "𝚊": { + math: "\\mathtt{a}" + }, + "𝚋": { + math: "\\mathtt{b}" + }, + "𝚌": { + math: "\\mathtt{c}" + }, + "𝚍": { + math: "\\mathtt{d}" + }, + "𝚎": { + math: "\\mathtt{e}" + }, + "𝚏": { + math: "\\mathtt{f}" + }, + "𝚐": { + math: "\\mathtt{g}" + }, + "𝚑": { + math: "\\mathtt{h}" + }, + "𝚒": { + math: "\\mathtt{i}" + }, + "𝚓": { + math: "\\mathtt{j}" + }, + "𝚔": { + math: "\\mathtt{k}" + }, + "𝚕": { + math: "\\mathtt{l}" + }, + "𝚖": { + math: "\\mathtt{m}" + }, + "𝚗": { + math: "\\mathtt{n}" + }, + "𝚘": { + math: "\\mathtt{o}" + }, + "𝚙": { + math: "\\mathtt{p}" + }, + "𝚚": { + math: "\\mathtt{q}" + }, + "𝚛": { + math: "\\mathtt{r}" + }, + "𝚜": { + math: "\\mathtt{s}" + }, + "𝚝": { + math: "\\mathtt{t}" + }, + "𝚞": { + math: "\\mathtt{u}" + }, + "𝚟": { + math: "\\mathtt{v}" + }, + "𝚠": { + math: "\\mathtt{w}" + }, + "𝚡": { + math: "\\mathtt{x}" + }, + "𝚢": { + math: "\\mathtt{y}" + }, + "𝚣": { + math: "\\mathtt{z}" + }, + "𝚤": { + math: "\\imath" + }, + "𝚥": { + math: "\\jmath" + }, + "𝚨": { + math: "\\mathbf{A}" + }, + "𝚩": { + math: "\\mathbf{B}" + }, + "𝚪": { + math: "\\mathbf{\\Gamma}" + }, + "𝚫": { + math: "\\mathbf{\\Delta}" + }, + "𝚬": { + math: "\\mathbf{E}" + }, + "𝚭": { + math: "\\mathbf{Z}" + }, + "𝚮": { + math: "\\mathbf{H}" + }, + "𝚯": { + math: "\\mathbf{\\Theta}" + }, + "𝚰": { + math: "\\mathbf{I}" + }, + "𝚱": { + math: "\\mathbf{K}" + }, + "𝚲": { + math: "\\mathbf{\\Lambda}" + }, + "𝚳": { + math: "M" + }, + "𝚴": { + math: "N" + }, + "𝚵": { + math: "\\mathbf{\\Xi}" + }, + "𝚶": { + math: "O" + }, + "𝚷": { + math: "\\mathbf{\\Pi}" + }, + "𝚸": { + math: "\\mathbf{P}" + }, + "𝚹": { + math: "\\mathbf{\\vartheta}" + }, + "𝚺": { + math: "\\mathbf{\\Sigma}" + }, + "𝚻": { + math: "\\mathbf{T}" + }, + "𝚼": { + math: "\\mathbf{\\Upsilon}" + }, + "𝚽": { + math: "\\mathbf{\\Phi}" + }, + "𝚾": { + math: "\\mathbf{X}" + }, + "𝚿": { + math: "\\mathbf{\\Psi}" + }, + "𝛀": { + math: "\\mathbf{\\Omega}" + }, + "𝛁": { + math: "\\mathbf{\\nabla}" + }, + "𝛂": { + math: "\\mathbf{\\alpha}" + }, + "𝛃": { + math: "\\mathbf{\\beta}" + }, + "𝛄": { + math: "\\mathbf{\\gamma}" + }, + "𝛅": { + math: "\\mathbf{\\delta}" + }, + "𝛆": { + math: "\\mathbf{\\epsilon}" + }, + "𝛇": { + math: "\\mathbf{\\zeta}" + }, + "𝛈": { + math: "\\mathbf{\\eta}" + }, + "𝛉": { + math: "\\mathbf{\\theta}" + }, + "𝛊": { + math: "\\mathbf{I}" + }, + "𝛋": { + math: "\\mathbf{K}" + }, + "𝛌": { + math: "\\mathbf{\\lambda}" + }, + "𝛍": { + math: "M" + }, + "𝛎": { + math: "N" + }, + "𝛏": { + math: "\\mathbf{\\xi}" + }, + "𝛐": { + math: "O" + }, + "𝛑": { + math: "\\mathbf{\\pi}" + }, + "𝛒": { + math: "\\mathbf{P}" + }, + "𝛓": { + math: "\\mathbf{\\varsigma}" + }, + "𝛔": { + math: "\\mathbf{\\sigma}" + }, + "𝛕": { + math: "\\mathbf{T}" + }, + "𝛖": { + math: "\\mathbf{\\upsilon}" + }, + "𝛗": { + math: "\\mathbf{\\phi}" + }, + "𝛘": { + math: "\\mathbf{X}" + }, + "𝛙": { + math: "\\mathbf{\\psi}" + }, + "𝛚": { + math: "\\mathbf{\\omega}" + }, + "𝛛": { + math: "\\partial" + }, + "𝛜": { + math: "\\in" + }, + "𝛝": { + math: "\\mathbf{\\vartheta}" + }, + "𝛞": { + math: "\\mathbf{\\varkappa}" + }, + "𝛟": { + math: "\\mathbf{\\phi}" + }, + "𝛠": { + math: "\\mathbf{\\varrho}" + }, + "𝛡": { + math: "\\mathbf{\\varpi}" + }, + "𝛢": { + math: "\\mathsl{A}" + }, + "𝛣": { + math: "\\mathsl{B}" + }, + "𝛤": { + math: "\\mathsl{\\Gamma}" + }, + "𝛥": { + math: "\\mathsl{\\Delta}" + }, + "𝛦": { + math: "\\mathsl{E}" + }, + "𝛧": { + math: "\\mathsl{Z}" + }, + "𝛨": { + math: "\\mathsl{H}" + }, + "𝛩": { + math: "\\mathsl{\\Theta}" + }, + "𝛪": { + math: "\\mathsl{I}" + }, + "𝛫": { + math: "\\mathsl{K}" + }, + "𝛬": { + math: "\\mathsl{\\Lambda}" + }, + "𝛭": { + math: "M" + }, + "𝛮": { + math: "N" + }, + "𝛯": { + math: "\\mathsl{\\Xi}" + }, + "𝛰": { + math: "O" + }, + "𝛱": { + math: "\\mathsl{\\Pi}" + }, + "𝛲": { + math: "\\mathsl{P}" + }, + "𝛳": { + math: "\\mathsl{\\Theta}" + }, + "𝛴": { + math: "\\mathsl{\\Sigma}" + }, + "𝛵": { + math: "\\mathsl{T}" + }, + "𝛶": { + math: "\\mathsl{\\Upsilon}" + }, + "𝛷": { + math: "\\mathsl{\\Phi}" + }, + "𝛸": { + math: "\\mathsl{X}" + }, + "𝛹": { + math: "\\mathsl{\\Psi}" + }, + "𝛺": { + math: "\\mathsl{\\Omega}" + }, + "𝛻": { + math: "\\mathsl{\\nabla}" + }, + "𝛼": { + math: "\\mathsl{A}" + }, + "𝛽": { + math: "\\mathsl{B}" + }, + "𝛾": { + math: "\\mathsl{\\gamma}" + }, + "𝛿": { + math: "\\mathsl{\\delta}" + }, + "𝜀": { + math: "\\mathsl{E}" + }, + "𝜁": { + math: "\\mathsl{Z}" + }, + "𝜂": { + math: "\\mathsl{H}" + }, + "𝜃": { + math: "\\mathsl{\\theta}" + }, + "𝜄": { + math: "\\mathsl{I}" + }, + "𝜅": { + math: "\\mathsl{K}" + }, + "𝜆": { + math: "\\mathsl{\\lambda}" + }, + "𝜇": { + math: "\\mu" + }, + "𝜈": { + math: "\\nu" + }, + "𝜉": { + math: "\\mathsl{\\xi}" + }, + "𝜊": { + math: "o" + }, + "𝜋": { + math: "\\mathsl{\\pi}" + }, + "𝜌": { + math: "\\mathsl{P}" + }, + "𝜍": { + math: "\\mathsl{\\varsigma}" + }, + "𝜎": { + math: "\\mathsl{\\sigma}" + }, + "𝜏": { + math: "\\mathsl{T}" + }, + "𝜐": { + math: "\\mathsl{\\upsilon}" + }, + "𝜑": { + math: "\\mathsl{\\varphi}" + }, + "𝜒": { + math: "\\mathsl{X}" + }, + "𝜓": { + math: "\\mathsl{\\psi}" + }, + "𝜔": { + math: "\\mathsl{\\omega}" + }, + "𝜕": { + math: "\\partial" + }, + "𝜖": { + math: "\\in" + }, + "𝜗": { + math: "\\mathsl{\\vartheta}" + }, + "𝜘": { + math: "\\mathsl{\\varkappa}" + }, + "𝜙": { + math: "\\mathsl{\\phi}" + }, + "𝜚": { + math: "\\mathsl{\\varrho}" + }, + "𝜛": { + math: "\\mathsl{\\varpi}" + }, + "𝜜": { + math: "\\mathbit{A}" + }, + "𝜝": { + math: "\\mathbit{B}" + }, + "𝜞": { + math: "\\mathbit{\\Gamma}" + }, + "𝜟": { + math: "\\mathbit{\\Delta}" + }, + "𝜠": { + math: "\\mathbit{E}" + }, + "𝜡": { + math: "\\mathbit{Z}" + }, + "𝜢": { + math: "\\mathbit{H}" + }, + "𝜣": { + math: "\\mathbit{\\Theta}" + }, + "𝜤": { + math: "\\mathbit{I}" + }, + "𝜥": { + math: "\\mathbit{K}" + }, + "𝜦": { + math: "\\mathbit{\\Lambda}" + }, + "𝜧": { + math: "M" + }, + "𝜨": { + math: "N" + }, + "𝜩": { + math: "\\mathbit{\\Xi}" + }, + "𝜪": { + math: "O" + }, + "𝜫": { + math: "\\mathbit{\\Pi}" + }, + "𝜬": { + math: "\\mathbit{P}" + }, + "𝜭": { + math: "\\mathbit{O}" + }, + "𝜮": { + math: "\\mathbit{\\Sigma}" + }, + "𝜯": { + math: "\\mathbit{T}" + }, + "𝜰": { + math: "\\mathbit{\\Upsilon}" + }, + "𝜱": { + math: "\\mathbit{\\Phi}" + }, + "𝜲": { + math: "\\mathbit{X}" + }, + "𝜳": { + math: "\\mathbit{\\Psi}" + }, + "𝜴": { + math: "\\mathbit{\\Omega}" + }, + "𝜵": { + math: "\\mathbit{\\nabla}" + }, + "𝜶": { + math: "\\mathbit{\\alpha}" + }, + "𝜷": { + math: "\\mathbit{\\beta}" + }, + "𝜸": { + math: "\\mathbit{\\gamma}" + }, + "𝜹": { + math: "\\mathbit{\\delta}" + }, + "𝜺": { + math: "\\mathbit{\\epsilon}" + }, + "𝜻": { + math: "\\mathbit{\\zeta}" + }, + "𝜼": { + math: "\\mathbit{\\eta}" + }, + "𝜽": { + math: "\\mathbit{\\theta}" + }, + "𝜾": { + math: "\\mathbit{\\imath}" + }, + "𝜿": { + math: "\\mathbit{\\kappa}" + }, + "𝝀": { + math: "\\mathbit{\\lambda}" + }, + "𝝁": { + math: "\\mu" + }, + "𝝂": { + math: "N" + }, + "𝝃": { + math: "\\mathbit{\\xi}" + }, + "𝝄": { + math: "O" + }, + "𝝅": { + math: "\\mathbit{\\pi}" + }, + "𝝆": { + math: "\\mathbit{\\rho}" + }, + "𝝇": { + math: "\\mathbit{\\varsigma}" + }, + "𝝈": { + math: "\\mathbit{\\sigma}" + }, + "𝝉": { + math: "\\mathbit{\\tau}" + }, + "𝝊": { + math: "\\mathbit{\\upsilon}" + }, + "𝝋": { + math: "\\mathbit{\\varphi}" + }, + "𝝌": { + math: "\\mathbit{\\chi}" + }, + "𝝍": { + math: "\\mathbit{\\psi}" + }, + "𝝎": { + math: "\\mathbit{\\omega}" + }, + "𝝏": { + math: "\\partial" + }, + "𝝐": { + math: "\\in" + }, + "𝝑": { + math: "\\mathbit{\\vartheta}" + }, + "𝝒": { + math: "\\mathbit{\\varkappa}" + }, + "𝝓": { + math: "\\mathbit{\\phi}" + }, + "𝝔": { + math: "\\mathbit{\\varrho}" + }, + "𝝕": { + math: "\\mathbit{\\varpi}" + }, + "𝝖": { + math: "\\mathsfbf{A}" + }, + "𝝗": { + math: "\\mathsfbf{B}" + }, + "𝝘": { + math: "\\mathsfbf{\\Gamma}" + }, + "𝝙": { + math: "\\mathsfbf{\\Delta}" + }, + "𝝚": { + math: "\\mathsfbf{E}" + }, + "𝝛": { + math: "\\mathsfbf{Z}" + }, + "𝝜": { + math: "\\mathsfbf{H}" + }, + "𝝝": { + math: "\\mathsfbf{\\Theta}" + }, + "𝝞": { + math: "\\mathsfbf{I}" + }, + "𝝟": { + math: "\\mathsfbf{K}" + }, + "𝝠": { + math: "\\mathsfbf{\\Lambda}" + }, + "𝝡": { + math: "M" + }, + "𝝢": { + math: "N" + }, + "𝝣": { + math: "\\mathsfbf{\\Xi}" + }, + "𝝤": { + math: "O" + }, + "𝝥": { + math: "\\mathsfbf{\\Pi}" + }, + "𝝦": { + math: "\\mathsfbf{P}" + }, + "𝝧": { + math: "\\mathsfbf{\\Theta}" + }, + "𝝨": { + math: "\\mathsfbf{\\Sigma}" + }, + "𝝩": { + math: "\\mathsfbf{T}" + }, + "𝝪": { + math: "\\mathsfbf{\\Upsilon}" + }, + "𝝫": { + math: "\\mathsfbf{\\Phi}" + }, + "𝝬": { + math: "\\mathsfbf{X}" + }, + "𝝭": { + math: "\\mathsfbf{\\Psi}" + }, + "𝝮": { + math: "\\mathsfbf{\\Omega}" + }, + "𝝯": { + math: "\\mathsfbf{\\nabla}" + }, + "𝝰": { + math: "\\mathsfbf{\\alpha}" + }, + "𝝱": { + math: "\\mathsfbf{\\beta}" + }, + "𝝲": { + math: "\\mathsfbf{\\gamma}" + }, + "𝝳": { + math: "\\mathsfbf{\\delta}" + }, + "𝝴": { + math: "\\mathsfbf{\\varepsilon}" + }, + "𝝵": { + math: "\\mathsfbf{\\zeta}" + }, + "𝝶": { + math: "\\mathsfbf{\\eta}" + }, + "𝝷": { + math: "\\mathsfbf{\\theta}" + }, + "𝝸": { + math: "\\mathsfbf{\\imath}" + }, + "𝝹": { + math: "\\mathsfbf{\\kappa}" + }, + "𝝺": { + math: "\\mathsfbf{\\lambda}" + }, + "𝝻": { + math: "\\mu" + }, + "𝝼": { + math: "\\nu" + }, + "𝝽": { + math: "\\mathsfbf{\\xi}" + }, + "𝝾": { + math: "o" + }, + "𝝿": { + math: "\\mathsfbf{\\pi}" + }, + "𝞀": { + math: "\\mathsfbf{\\rho}" + }, + "𝞁": { + math: "\\mathsfbf{\\varsigma}" + }, + "𝞂": { + math: "\\mathsfbf{\\sigma}" + }, + "𝞃": { + math: "\\mathsfbf{\\tau}" + }, + "𝞄": { + math: "\\mathsfbf{\\upsilon}" + }, + "𝞅": { + math: "\\mathsfbf{\\varphi}" + }, + "𝞆": { + math: "\\mathsfbf{\\chi}" + }, + "𝞇": { + math: "\\mathsfbf{\\psi}" + }, + "𝞈": { + math: "\\mathsfbf{\\omega}" + }, + "𝞉": { + math: "\\partial" + }, + "𝞊": { + math: "\\in" + }, + "𝞋": { + math: "\\mathsfbf{\\vartheta}" + }, + "𝞌": { + math: "\\mathsfbf{\\varkappa}" + }, + "𝞍": { + math: "\\mathsfbf{\\phi}" + }, + "𝞎": { + math: "\\mathsfbf{\\varrho}" + }, + "𝞏": { + math: "\\mathsfbf{\\varpi}" + }, + "𝞐": { + math: "\\mathsfbfsl{A}" + }, + "𝞑": { + math: "\\mathsfbfsl{B}" + }, + "𝞒": { + math: "\\mathsfbfsl{\\Gamma}" + }, + "𝞓": { + math: "\\mathsfbfsl{\\Delta}" + }, + "𝞔": { + math: "\\mathsfbfsl{E}" + }, + "𝞕": { + math: "\\mathsfbfsl{Z}" + }, + "𝞖": { + math: "\\mathsfbfsl{H}" + }, + "𝞗": { + math: "\\mathsfbfsl{\\Theta}" + }, + "𝞘": { + math: "\\mathsfbfsl{I}" + }, + "𝞙": { + math: "\\mathsfbfsl{K}" + }, + "𝞚": { + math: "\\mathsfbfsl{\\Lambda}" + }, + "𝞛": { + math: "\\mathsfbfsl{M}" + }, + "𝞜": { + math: "\\mathsfbfsl{N}" + }, + "𝞝": { + math: "\\mathsfbfsl{\\Xi}" + }, + "𝞞": { + math: "\\mathsfbfsl{O}" + }, + "𝞟": { + math: "\\mathsfbfsl{\\Pi}" + }, + "𝞠": { + math: "\\mathsfbfsl{P}" + }, + "𝞡": { + math: "\\mathsfbfsl{\\Theta}" + }, + "𝞢": { + math: "\\mathsfbfsl{\\Sigma}" + }, + "𝞣": { + math: "\\mathsfbfsl{T}" + }, + "𝞤": { + math: "\\mathsfbfsl{\\Upsilon}" + }, + "𝞥": { + math: "\\mathsfbfsl{\\Phi}" + }, + "𝞦": { + math: "\\mathsfbfsl{X}" + }, + "𝞧": { + math: "\\mathsfbfsl{\\Psi}" + }, + "𝞨": { + math: "\\mathsfbfsl{\\Omega}" + }, + "𝞩": { + math: "\\mathsfbfsl{\\nabla}" + }, + "𝞪": { + math: "\\mathsfbfsl{\\alpha}" + }, + "𝞫": { + math: "\\mathsfbfsl{\\beta}" + }, + "𝞬": { + math: "\\mathsfbfsl{\\gamma}" + }, + "𝞭": { + math: "\\mathsfbfsl{\\delta}" + }, + "𝞮": { + math: "\\mathsfbfsl{\\varepsilon}" + }, + "𝞯": { + math: "\\mathsfbfsl{\\zeta}" + }, + "𝞰": { + math: "\\mathsfbfsl{\\eta}" + }, + "𝞱": { + math: "\\mathsfbfsl{\\theta}" + }, + "𝞲": { + math: "\\mathsfbfsl{\\imath}" + }, + "𝞳": { + math: "\\mathsfbfsl{\\kappa}" + }, + "𝞴": { + math: "\\mathsfbfsl{\\lambda}" + }, + "𝞵": { + math: "\\mu" + }, + "𝞶": { + math: "\\nu" + }, + "𝞷": { + math: "\\mathsfbfsl{\\xi}" + }, + "𝞸": { + math: "o" + }, + "𝞹": { + math: "\\mathsfbfsl{\\pi}" + }, + "𝞺": { + math: "\\mathsfbfsl{\\rho}" + }, + "𝞻": { + math: "\\mathsfbfsl{\\varsigma}" + }, + "𝞼": { + math: "\\mathsfbfsl{\\sigma}" + }, + "𝞽": { + math: "\\mathsfbfsl{\\tau}" + }, + "𝞾": { + math: "\\mathsfbfsl{\\upsilon}" + }, + "𝞿": { + math: "\\mathsfbfsl{\\varphi}" + }, + "𝟀": { + math: "\\mathsfbfsl{\\chi}" + }, + "𝟁": { + math: "\\mathsfbfsl{\\psi}" + }, + "𝟂": { + math: "\\mathsfbfsl{\\omega}" + }, + "𝟃": { + math: "\\partial" + }, + "𝟄": { + math: "\\in" + }, + "𝟅": { + math: "\\mathsfbfsl{\\vartheta}" + }, + "𝟆": { + math: "\\mathsfbfsl{\\varkappa}" + }, + "𝟇": { + math: "\\mathsfbfsl{\\phi}" + }, + "𝟈": { + math: "\\mathsfbfsl{\\varrho}" + }, + "𝟉": { + math: "\\mathsfbfsl{\\varpi}" + }, + "𝟊": { + math: "\\mbfDigamma" + }, + "𝟋": { + math: "\\mbfdigamma" + }, + "𝟎": { + math: "\\mathbf{0}" + }, + "𝟏": { + math: "\\mathbf{1}" + }, + "𝟐": { + math: "\\mathbf{2}" + }, + "𝟑": { + math: "\\mathbf{3}" + }, + "𝟒": { + math: "\\mathbf{4}" + }, + "𝟓": { + math: "\\mathbf{5}" + }, + "𝟔": { + math: "\\mathbf{6}" + }, + "𝟕": { + math: "\\mathbf{7}" + }, + "𝟖": { + math: "\\mathbf{8}" + }, + "𝟗": { + math: "\\mathbf{9}" + }, + "𝟘": { + math: "\\mathbb{0}" + }, + "𝟙": { + math: "\\mathbb{1}" + }, + "𝟚": { + math: "\\mathbb{2}" + }, + "𝟛": { + math: "\\mathbb{3}" + }, + "𝟜": { + math: "\\mathbb{4}" + }, + "𝟝": { + math: "\\mathbb{5}" + }, + "𝟞": { + math: "\\mathbb{6}" + }, + "𝟟": { + math: "\\mathbb{7}" + }, + "𝟠": { + math: "\\mathbb{8}" + }, + "𝟡": { + math: "\\mathbb{9}" + }, + "𝟢": { + math: "\\mathsf{0}" + }, + "𝟣": { + math: "\\mathsf{1}" + }, + "𝟤": { + math: "\\mathsf{2}" + }, + "𝟥": { + math: "\\mathsf{3}" + }, + "𝟦": { + math: "\\mathsf{4}" + }, + "𝟧": { + math: "\\mathsf{5}" + }, + "𝟨": { + math: "\\mathsf{6}" + }, + "𝟩": { + math: "\\mathsf{7}" + }, + "𝟪": { + math: "\\mathsf{8}" + }, + "𝟫": { + math: "\\mathsf{9}" + }, + "𝟬": { + math: "\\mathsfbf{0}" + }, + "𝟭": { + math: "\\mathsfbf{1}" + }, + "𝟮": { + math: "\\mathsfbf{2}" + }, + "𝟯": { + math: "\\mathsfbf{3}" + }, + "𝟰": { + math: "\\mathsfbf{4}" + }, + "𝟱": { + math: "\\mathsfbf{5}" + }, + "𝟲": { + math: "\\mathsfbf{6}" + }, + "𝟳": { + math: "\\mathsfbf{7}" + }, + "𝟴": { + math: "\\mathsfbf{8}" + }, + "𝟵": { + math: "\\mathsfbf{9}" + }, + "𝟶": { + math: "\\mathtt{0}" + }, + "𝟷": { + math: "\\mathtt{1}" + }, + "𝟸": { + math: "\\mathtt{2}" + }, + "𝟹": { + math: "\\mathtt{3}" + }, + "𝟺": { + math: "\\mathtt{4}" + }, + "𝟻": { + math: "\\mathtt{5}" + }, + "𝟼": { + math: "\\mathtt{6}" + }, + "𝟽": { + math: "\\mathtt{7}" + }, + "𝟾": { + math: "\\mathtt{8}" + }, + "𝟿": { + math: "\\mathtt{9}" + } + }; + + var $$2 = { + math: "\\$", + text: "\\$" + }; + var _$2 = { + math: "\\_", + text: "\\_" + }; + var require$$2 = { + "#": { + math: "\\#", + text: "\\#" + }, + $: $$2, + "%": { + math: "\\%", + text: "\\%" + }, + "&": { + math: "\\&", + text: "\\&" + }, + "/​": { + text: "\\slash", + commandspacer: true + }, + "<": { + math: "<" + }, + ">": { + math: ">" + }, + "\\": { + math: "\\backslash", + text: "\\textbackslash", + commandspacer: true + }, + "^": { + math: "\\sphat", + text: "\\^" + }, + _: _$2, + "{": { + math: "\\lbrace", + text: "\\{" + }, + "}": { + math: "\\rbrace", + text: "\\}" + }, + "~": { + math: "\\sptilde", + text: "\\textasciitilde", + commandspacer: true + }, + " ": { + math: "~", + space: true, + text: "~" + }, + " ": { + text: " ", + space: true + }, + " ": { + math: "\\quad", + space: true + }, + " ": { + text: "\\hspace{0.6em}", + space: true + }, + " ": { + math: "\\quad", + space: true, + text: "\\hspace{1em}" + }, + " ": { + text: "\\;", + space: true + }, + " ": { + text: "\\hspace{0.25em}", + space: true + }, + " ": { + text: "\\hspace{0.166em}", + space: true + }, + " ": { + text: "\\hphantom{0}", + space: true + }, + " ": { + text: "\\hphantom{,}", + space: true + }, + " ": { + text: "\\,", + space: true + }, + " ": { + math: "\\mkern1mu", + space: true + }, + "​": { + text: "\\mbox", + commandspacer: true, + space: true + }, + " ": { + text: " ", + space: true + }, + " ": { + math: "\\:", + space: true, + text: "\\:" + } + }; + + var require$$3 = { + "\\#": "#", + "\\$": "$", + "\\%": "%", + "\\&": "&", + "\\slash": "/​", + "\\textless": "<", + "\\textgreater": ">", + "\\LaTeX": "LaTeX", + "\\textbackslash": "\\", + "\\backslash": "\\", + "\\": "\\", + "\\^": "^", + "\\sphat": "^", + "\\_": "_", + "\\t{ia}": "i︠a︡", + "{\\~ w}": "w̃", + "\\{": "{", + "\\lbrace": "{", + "\\textbar": "|", + "\\}": "}", + "\\rbrace": "}", + "\\textasciitilde": "~", + "\\sptilde": "~", + "\\textexclamdown": "¡", + "\\textcent": "¢", + "\\cent": "¢", + "\\textsterling": "£", + "\\pounds": "£", + "\\textcurrency": "¤", + "\\textyen": "¥", + "\\yen": "¥", + "\\textbrokenbar": "¦", + "\\textsection": "§", + "\\textasciidieresis": "¨", + "\\spddot": "¨", + "\\textcopyright": "©", + "\\textordfeminine": "ª", + "\\guillemotleft": "«", + "\\lnot": "¬", + "\\neg": "¬", + "\\-": "­", + "\\textregistered": "®", + "\\circledR": "®", + "\\textasciimacron": "¯", + "\\textdegree": "°", + "^\\circ": "°", + "\\pm": "±", + "^{2}": "²", + "^{3}": "³", + "\\textasciiacute": "´", + "\\textmu": "µ", + "\\textparagraph": "¶", + "^{1}": "¹", + "\\textordmasculine": "º", + "\\guillemotright": "»", + "\\frac{1}{4}": "¼", + "\\textonequarter": "¼", + "\\frac{1}{2}": "½", + "\\textonehalf": "½", + "\\frac{3}{4}": "¾", + "\\textthreequarters": "¾", + "\\textquestiondown": "¿", + "\\`A": "À", + "\\'A": "Á", + "\\^A": "Â", + "\\~A": "Ã", + "\\\"A": "Ä", + "\\AA": "Å", + "\\r{A}": "Å", + "{\\r A}": "Å", + "\\AE": "Æ", + "\\c{C}": "Ç", + "\\`E": "È", + "\\'E": "É", + "\\^E": "Ê", + "\\\"E": "Ë", + "\\`I": "Ì", + "\\'I": "Í", + "\\^I": "Î", + "\\\"I": "Ï", + "\\DH": "Ð", + "\\~N": "Ñ", + "\\`O": "Ò", + "\\'O": "Ó", + "\\^O": "Ô", + "\\~O": "Õ", + "\\\"O": "Ö", + "\\texttimes": "×", + "\\times": "×", + "\\O": "Ø", + "\\`U": "Ù", + "\\'U": "Ú", + "\\^U": "Û", + "\\\"U": "Ü", + "\\'Y": "Ý", + "\\TH": "Þ", + "\\ss": "ß", + "\\`a": "à", + "\\'a": "á", + "\\^a": "â", + "\\~a": "ã", + "\\\"a": "ä", + "\\aa": "å", + "\\r{a}": "å", + "{\\r a}": "å", + "\\ae": "æ", + "\\c{c}": "ç", + "\\`e": "è", + "\\'e": "é", + "\\^e": "ê", + "\\\"e": "ë", + "\\`i": "ì", + "\\`\\i": "ì", + "\\'i": "í", + "\\'\\i": "í", + "\\^i": "î", + "\\^\\i": "î", + "\\\"i": "ï", + "\\\"\\i": "ï", + "\\dh": "ð", + "\\eth": "ð", + "\\~n": "ñ", + "\\`o": "ò", + "\\'o": "ó", + "\\^o": "ô", + "\\~o": "õ", + "\\\"o": "ö", + "\\div": "÷", + "\\o": "ø", + "\\`u": "ù", + "\\'u": "ú", + "\\^u": "û", + "\\\"u": "ü", + "\\'y": "ý", + "\\th": "þ", + "\\\"y": "ÿ", + "\\=A": "Ā", + "\\=a": "ā", + "\\u{A}": "Ă", + "\\u{a}": "ă", + "\\k{A}": "Ą", + "\\k{a}": "ą", + "\\'C": "Ć", + "\\'c": "ć", + "\\^C": "Ĉ", + "\\^c": "ĉ", + "\\.C": "Ċ", + "\\.c": "ċ", + "\\v{C}": "Č", + "\\v{c}": "č", + "\\v{D}": "Ď", + "\\v{d}": "ď", + "\\DJ": "Đ", + "\\dj": "đ", + "\\=E": "Ē", + "\\=e": "ē", + "\\u{E}": "Ĕ", + "\\u{e}": "ĕ", + "\\.E": "Ė", + "\\.e": "ė", + "\\k{E}": "Ę", + "\\k{e}": "ę", + "\\v{E}": "Ě", + "\\v{e}": "ě", + "\\^G": "Ĝ", + "\\^g": "ĝ", + "\\u{G}": "Ğ", + "\\u{g}": "ğ", + "\\.G": "Ġ", + "\\.g": "ġ", + "\\c{G}": "Ģ", + "\\c{g}": "ģ", + "\\^H": "Ĥ", + "\\^h": "ĥ", + "{\\fontencoding{LELA}\\selectfont\\char40}": "Ħ", + "\\Elzxh": "ħ", + "\\~I": "Ĩ", + "\\~i": "ĩ", + "\\=I": "Ī", + "\\=i": "ī", + "\\u{I}": "Ĭ", + "{\\u \\i}": "ĭ", + "\\k{I}": "Į", + "\\k{i}": "į", + "\\.I": "İ", + "\\i": "ı", + "\\imath": "ı", + "\\^J": "Ĵ", + "\\^\\j": "ĵ", + "\\c{K}": "Ķ", + "\\c{k}": "ķ", + "{\\fontencoding{LELA}\\selectfont\\char91}": "ĸ", + "\\'L": "Ĺ", + "\\'l": "ĺ", + "\\c{L}": "Ļ", + "\\c{l}": "ļ", + "\\v{L}": "Ľ", + "\\v{l}": "ľ", + "{\\fontencoding{LELA}\\selectfont\\char201}": "Ŀ", + "{\\fontencoding{LELA}\\selectfont\\char202}": "ŀ", + "\\L": "Ł", + "\\l": "ł", + "\\'N": "Ń", + "\\'n": "ń", + "\\c{N}": "Ņ", + "\\c{n}": "ņ", + "\\v{N}": "Ň", + "\\v{n}": "ň", + "\\NG": "Ŋ", + "\\ng": "ŋ", + "\\=O": "Ō", + "\\=o": "ō", + "\\u{O}": "Ŏ", + "\\u{o}": "ŏ", + "\\H{O}": "Ő", + "\\H{o}": "ő", + "\\OE": "Œ", + "\\oe": "œ", + "\\'R": "Ŕ", + "\\'r": "ŕ", + "\\c{R}": "Ŗ", + "\\c{r}": "ŗ", + "\\v{R}": "Ř", + "\\v{r}": "ř", + "\\'S": "Ś", + "\\'s": "ś", + "\\^S": "Ŝ", + "\\^s": "ŝ", + "\\c{S}": "Ş", + "\\c{s}": "ş", + "\\v{S}": "Š", + "\\v{s}": "š", + "\\c{T}": "Ţ", + "\\c{t}": "ţ", + "\\v{T}": "Ť", + "\\v{t}": "ť", + "{\\fontencoding{LELA}\\selectfont\\char47}": "Ŧ", + "{\\fontencoding{LELA}\\selectfont\\char63}": "ŧ", + "\\~U": "Ũ", + "\\~u": "ũ", + "\\=U": "Ū", + "\\=u": "ū", + "\\u{U}": "Ŭ", + "\\u{u}": "ŭ", + "\\r{U}": "Ů", + "{\\r U}": "Ů", + "\\r{u}": "ů", + "\\ocirc{u}": "ů", + "{\\r u}": "ů", + "\\H{U}": "Ű", + "\\H{u}": "ű", + "\\k{U}": "Ų", + "\\k{u}": "ų", + "\\^W": "Ŵ", + "\\^w": "ŵ", + "\\^Y": "Ŷ", + "\\^y": "ŷ", + "\\\"Y": "Ÿ", + "\\'Z": "Ź", + "\\'z": "ź", + "\\.Z": "Ż", + "\\.z": "ż", + "\\v{Z}": "Ž", + "\\v{z}": "ž", + "\\texthvlig": "ƕ", + "\\textnrleg": "ƞ", + "\\textesh": "ƪ", + "\\Zbar": "Ƶ", + "{\\fontencoding{LELA}\\selectfont\\char195}": "ƺ", + "\\textdoublepipe": "ǂ", + "\\v{A}": "Ǎ", + "\\v{a}": "ǎ", + "\\v{I}": "Ǐ", + "\\v{i}": "ǐ", + "\\v{O}": "Ǒ", + "\\v{o}": "ǒ", + "\\v{U}": "Ǔ", + "\\v{u}": "ǔ", + "\\v{G}": "Ǧ", + "\\v{g}": "ǧ", + "\\v{K}": "Ǩ", + "\\v{k}": "ǩ", + "\\k{O}": "Ǫ", + "\\k{o}": "ǫ", + "\\v{j}": "ǰ", + "\\'G": "Ǵ", + "\\'g": "ǵ", + "\\c{E}": "Ȩ", + "\\c{e}": "ȩ", + "\\jmath": "ȷ", + "\\Elztrna": "ɐ", + "\\Elztrnsa": "ɒ", + "\\Elzopeno": "ɔ", + "\\Elzrtld": "ɖ", + "{\\fontencoding{LEIP}\\selectfont\\char61}": "ɘ", + "\\Elzschwa": "ə", + "\\varepsilon": "ɛ", + "\\Elzpgamma": "ɣ", + "\\Elzpbgam": "ɤ", + "\\Elztrnh": "ɥ", + "\\Elzbtdl": "ɬ", + "\\Elzrtll": "ɭ", + "\\Elztrnm": "ɯ", + "\\Elztrnmlr": "ɰ", + "\\Elzltlmr": "ɱ", + "\\Elzltln": "ɲ", + "\\Elzrtln": "ɳ", + "\\Elzclomeg": "ɷ", + "\\textphi": "ɸ", + "\\Elztrnr": "ɹ", + "\\Elztrnrl": "ɺ", + "\\Elzrttrnr": "ɻ", + "\\Elzrl": "ɼ", + "\\Elzrtlr": "ɽ", + "\\Elzfhr": "ɾ", + "{\\fontencoding{LEIP}\\selectfont\\char202}": "ɿ", + "\\Elzrtls": "ʂ", + "\\Elzesh": "ʃ", + "\\Elztrnt": "ʇ", + "\\Elzrtlt": "ʈ", + "\\Elzpupsil": "ʊ", + "\\Elzpscrv": "ʋ", + "\\Elzinvv": "ʌ", + "\\Elzinvw": "ʍ", + "\\Elztrny": "ʎ", + "\\Elzrtlz": "ʐ", + "\\Elzyogh": "ʒ", + "\\Elzglst": "ʔ", + "\\Elzreglst": "ʕ", + "\\Elzinglst": "ʖ", + "\\textturnk": "ʞ", + "\\Elzdyogh": "ʤ", + "\\Elztesh": "ʧ", + "\\textsuperscript{h}": "ʰ", + "^{h}": "ʰ", + "\\textsuperscript{j}": "ʲ", + "^{j}": "ʲ", + "\\textsuperscript{r}": "ʳ", + "^{r}": "ʳ", + "\\textsuperscript{w}": "ʷ", + "^{w}": "ʷ", + "\\textsuperscript{y}": "ʸ", + "^{y}": "ʸ", + "\\lasp": "ʿ", + "\\textasciicircum": "ˆ", + "\\textasciicaron": "ˇ", + "\\Elzverts": "ˈ", + "\\Elzverti": "ˌ", + "\\Elzlmrk": "ː", + "\\Elzhlmrk": "ˑ", + "\\Elzsbrhr": "˒", + "\\Elzsblhr": "˓", + "\\Elzrais": "˔", + "\\Elzlow": "˕", + "\\textasciibreve": "˘", + "\\textperiodcentered": "˙", + "\\texttildelow": "˜", + "\\textsuperscript{l}": "ˡ", + "^{l}": "ˡ", + "\\textsuperscript{s}": "ˢ", + "^{s}": "ˢ", + "\\textsuperscript{x}": "ˣ", + "^{x}": "ˣ", + "\\tone{55}": "˥", + "\\tone{44}": "˦", + "\\tone{33}": "˧", + "\\tone{22}": "˨", + "\\tone{11}": "˩", + "\\`": "̀", + "\\grave": "̀", + "\\textgravemacron": "̀̄", + "\\textgravedot": "̀̇", + "\\'": "́", + "\\acute": "́", + "\\textacutemacron": "́̄", + "\\textacutewedge": "́̌", + "\\hat": "̂", + "\\textcircumdot": "̂̇", + "\\~": "̃", + "\\tilde": "̃", + "\\texttildedot": "̃̇", + "\\=": "̄", + "\\bar": "̄", + "\\overline": "̅", + "\\u": "̆", + "\\breve": "̆", + "\\textbrevemacron": "̆̄", + "\\.": "̇", + "\\dot": "̇", + "\\textdotacute": "̇́", + "\\\"": "̈", + "\\ddot": "̈", + "\\ovhook": "̉", + "\\r": "̊", + "\\mathring": "̊", + "\\textringmacron": "̊̄", + "\\H": "̋", + "\\check": "̌", + "\\v": "̌", + "\\textvbaraccent": "̍", + "\\textdoublevbaraccent": "̎", + "\\textdoublegrave": "̏", + "\\textdotbreve": "̐", + "{\\fontencoding{LECO}\\selectfont\\char177}": "̑", + "\\oturnedcomma": "̒", + "\\ocommatopright": "̕", + "\\textsubgrave": "̖", + "\\textadvancing": "̘", + "\\textretracting": "̙", + "\\droang": "̚", + "\\textcorner": "̚", + "\\textsublhalfring": "̜", + "\\textraising": "̝", + "\\textlowering": "̞", + "\\textsubplus": "̟", + "\\Elzpalh": "̡", + "\\Elzrh": "̢", + "\\d": "̣", + "\\textsubumlaut": "̤", + "\\textsubring": "̥", + "\\c": "̧", + "\\k": "̨", + "\\textsyllabic": "̩", + "\\Elzsbbrg": "̪", + "\\textsubbridge": "̪", + "{\\fontencoding{LECO}\\selectfont\\char203}": "̫", + "\\textsubwedge": "̬", + "\\textsubarch": "̯", + "\\utilde": "̰", + "\\textsubtilde": "̰", + "\\textsubbar": "̱", + "\\underbar": "̱", + "\\underline": "̲", + "\\textsuperimposetilde": "̴", + "\\Elzxl": "̵", + "\\Elzbar": "̶", + "{\\fontencoding{LECO}\\selectfont\\char215}": "̷", + "\\not": "̸", + "\\textsubrhalfring": "̹", + "\\textinvsubbridge": "̺", + "\\textsubsquare": "̻", + "\\textseagull": "̼", + "\\textovercross": "̽", + "{\\fontencoding{LECO}\\selectfont\\char225}": "͡", + "\\'H": "Ή", + "{\\'{}I}": "Ί", + "{\\'{}O}": "Ό", + "\\mathrm{'Y}": "Ύ", + "\\mathrm{'\\Omega}": "Ώ", + "\\acute{\\ddot{\\iota}}": "ΐ", + "\\Gamma": "Γ", + "\\varGamma": "Γ", + "\\Delta": "Δ", + "\\Theta": "Θ", + "\\Lambda": "Λ", + "\\Xi": "Ξ", + "\\Pi": "Π", + "\\Sigma": "Σ", + "\\Upsilon": "Υ", + "\\Phi": "Φ", + "\\Psi": "Ψ", + "\\Omega": "Ω", + "\\mathrm{\\ddot{I}}": "Ϊ", + "\\mathrm{\\ddot{Y}}": "Ϋ", + "{\\'$\\alpha$}": "ά", + "\\acute{\\epsilon}": "έ", + "\\acute{\\eta}": "ή", + "\\acute{\\iota}": "ί", + "\\acute{\\ddot{\\upsilon}}": "ΰ", + "\\alpha": "α", + "\\beta": "β", + "\\gamma": "γ", + "\\delta": "δ", + "\\zeta": "ζ", + "\\eta": "η", + "\\texttheta": "θ", + "\\theta": "θ", + "\\iota": "ι", + "\\kappa": "κ", + "\\lambda": "λ", + "\\nu": "ν", + "\\xi": "ξ", + "\\pi": "π", + "\\rho": "ρ", + "\\varsigma": "ς", + "\\sigma": "σ", + "\\tau": "τ", + "\\upsilon": "υ", + "\\varphi": "φ", + "\\chi": "χ", + "\\psi": "ψ", + "\\omega": "ω", + "\\ddot{\\iota}": "ϊ", + "\\ddot{\\upsilon}": "ϋ", + "\\acute{\\upsilon}": "ύ", + "\\acute{\\omega}": "ώ", + "\\Pisymbol{ppi022}{87}": "ϐ", + "\\varbeta": "ϐ", + "\\textvartheta": "ϑ", + "\\vartheta": "ϑ", + "\\phi": "ϕ", + "\\varpi": "ϖ", + "\\Qoppa": "Ϙ", + "\\qoppa": "ϙ", + "\\Stigma": "Ϛ", + "\\stigma": "ϛ", + "\\Digamma": "Ϝ", + "\\digamma": "ϝ", + "\\Koppa": "Ϟ", + "\\koppa": "ϟ", + "\\Sampi": "Ϡ", + "\\sampi": "ϡ", + "\\varkappa": "ϰ", + "\\varrho": "ϱ", + "\\textTheta": "ϴ", + "\\upvarTheta": "ϴ", + "\\epsilon": "ϵ", + "\\backepsilon": "϶", + "\\cyrchar\\CYRYO": "Ё", + "\\cyrchar\\CYRDJE": "Ђ", + "\\cyrchar{\\'\\CYRG}": "Ѓ", + "\\cyrchar\\CYRIE": "Є", + "\\cyrchar\\CYRDZE": "Ѕ", + "\\cyrchar\\CYRII": "І", + "\\cyrchar\\CYRYI": "Ї", + "\\cyrchar\\CYRJE": "Ј", + "\\cyrchar\\CYRLJE": "Љ", + "\\cyrchar\\CYRNJE": "Њ", + "\\cyrchar\\CYRTSHE": "Ћ", + "\\cyrchar{\\'\\CYRK}": "Ќ", + "\\cyrchar\\CYRUSHRT": "Ў", + "\\cyrchar\\CYRDZHE": "Џ", + "\\cyrchar\\CYRA": "А", + "\\cyrchar\\CYRB": "Б", + "\\cyrchar\\CYRV": "В", + "\\cyrchar\\CYRG": "Г", + "\\cyrchar\\CYRD": "Д", + "\\cyrchar\\CYRE": "Е", + "\\cyrchar\\CYRZH": "Ж", + "\\cyrchar\\CYRZ": "З", + "\\cyrchar\\CYRI": "И", + "\\cyrchar\\CYRISHRT": "Й", + "\\cyrchar\\CYRK": "К", + "\\cyrchar\\CYRL": "Л", + "\\cyrchar\\CYRM": "М", + "\\cyrchar\\CYRN": "Н", + "\\cyrchar\\CYRO": "О", + "\\cyrchar\\CYRP": "П", + "\\cyrchar\\CYRR": "Р", + "\\cyrchar\\CYRS": "С", + "\\cyrchar\\CYRT": "Т", + "\\cyrchar\\CYRU": "У", + "\\cyrchar\\CYRF": "Ф", + "\\cyrchar\\CYRH": "Х", + "\\cyrchar\\CYRC": "Ц", + "\\cyrchar\\CYRCH": "Ч", + "\\cyrchar\\CYRSH": "Ш", + "\\cyrchar\\CYRSHCH": "Щ", + "\\cyrchar\\CYRHRDSN": "Ъ", + "\\bud": "Ъ", + "\\cdprime": "Ъ", + "\\cyrchar\\CYRERY": "Ы", + "\\cyrchar\\CYRSFTSN": "Ь", + "\\cprime": "Ь", + "\\cyrchar\\CYREREV": "Э", + "\\cyrchar\\CYRYU": "Ю", + "\\cyrchar\\CYRYA": "Я", + "\\cyrchar\\cyra": "а", + "\\cyrchar\\cyrb": "б", + "\\cyrchar\\cyrv": "в", + "\\cyrchar\\cyrg": "г", + "\\cyrchar\\cyrd": "д", + "\\cyrchar\\cyre": "е", + "\\cyrchar\\cyrzh": "ж", + "\\cyrchar\\cyrz": "з", + "\\cyrchar\\cyri": "и", + "\\cyrchar\\cyrishrt": "й", + "\\cyrchar\\cyrk": "к", + "\\cyrchar\\cyrl": "л", + "\\cyrchar\\cyrm": "м", + "\\cyrchar\\cyrn": "н", + "\\cyrchar\\cyro": "о", + "\\cyrchar\\cyrp": "п", + "\\cyrchar\\cyrr": "р", + "\\cyrchar\\cyrs": "с", + "\\cyrchar\\cyrt": "т", + "\\cyrchar\\cyru": "у", + "\\cyrchar\\cyrf": "ф", + "\\cyrchar\\cyrh": "х", + "\\cyrchar\\cyrc": "ц", + "\\cyrchar\\cyrch": "ч", + "\\cyrchar\\cyrsh": "ш", + "\\cyrchar\\cyrshch": "щ", + "\\cyrchar\\cyrhrdsn": "ъ", + "\\cyrchar\\cyrery": "ы", + "\\cyrchar\\cyrsftsn": "ь", + "\\cyrchar\\cyrerev": "э", + "\\cyrchar\\cyryu": "ю", + "\\cyrchar\\cyrya": "я", + "\\cyrchar\\cyryo": "ё", + "\\cyrchar\\cyrdje": "ђ", + "\\cyrchar{\\'\\cyrg}": "ѓ", + "\\cyrchar\\cyrie": "є", + "\\cyrchar\\cyrdze": "ѕ", + "\\cyrchar\\cyrii": "і", + "\\cyrchar\\cyryi": "ї", + "\\cyrchar\\cyrje": "ј", + "\\cyrchar\\cyrlje": "љ", + "\\cyrchar\\cyrnje": "њ", + "\\cyrchar\\cyrtshe": "ћ", + "\\cyrchar{\\'\\cyrk}": "ќ", + "\\cyrchar\\cyrushrt": "ў", + "\\cyrchar\\cyrdzhe": "џ", + "\\cyrchar\\CYROMEGA": "Ѡ", + "\\cyrchar\\cyromega": "ѡ", + "\\cyrchar\\CYRYAT": "Ѣ", + "\\cyrchar\\CYRIOTE": "Ѥ", + "\\cyrchar\\cyriote": "ѥ", + "\\cyrchar\\CYRLYUS": "Ѧ", + "\\cyrchar\\cyrlyus": "ѧ", + "\\cyrchar\\CYRIOTLYUS": "Ѩ", + "\\cyrchar\\cyriotlyus": "ѩ", + "\\cyrchar\\CYRBYUS": "Ѫ", + "\\cyrchar\\CYRIOTBYUS": "Ѭ", + "\\cyrchar\\cyriotbyus": "ѭ", + "\\cyrchar\\CYRKSI": "Ѯ", + "\\cyrchar\\cyrksi": "ѯ", + "\\cyrchar\\CYRPSI": "Ѱ", + "\\cyrchar\\cyrpsi": "ѱ", + "\\cyrchar\\CYRFITA": "Ѳ", + "\\cyrchar\\CYRIZH": "Ѵ", + "\\cyrchar\\CYRUK": "Ѹ", + "\\cyrchar\\cyruk": "ѹ", + "\\cyrchar\\CYROMEGARND": "Ѻ", + "\\cyrchar\\cyromegarnd": "ѻ", + "\\cyrchar\\CYROMEGATITLO": "Ѽ", + "\\cyrchar\\cyromegatitlo": "ѽ", + "\\cyrchar\\CYROT": "Ѿ", + "\\cyrchar\\cyrot": "ѿ", + "\\cyrchar\\CYRKOPPA": "Ҁ", + "\\cyrchar\\cyrkoppa": "ҁ", + "\\cyrchar\\cyrthousands": "҂", + "\\cyrchar\\cyrhundredthousands": "҈", + "\\cyrchar\\cyrmillions": "҉", + "\\cyrchar\\CYRSEMISFTSN": "Ҍ", + "\\cyrchar\\cyrsemisftsn": "ҍ", + "\\cyrchar\\CYRRTICK": "Ҏ", + "\\cyrchar\\cyrrtick": "ҏ", + "\\cyrchar\\CYRGUP": "Ґ", + "\\cyrchar\\cyrgup": "ґ", + "\\cyrchar\\CYRGHCRS": "Ғ", + "\\cyrchar\\cyrghcrs": "ғ", + "\\cyrchar\\CYRGHK": "Ҕ", + "\\cyrchar\\cyrghk": "ҕ", + "\\cyrchar\\CYRZHDSC": "Җ", + "\\cyrchar\\cyrzhdsc": "җ", + "\\cyrchar\\CYRZDSC": "Ҙ", + "\\cyrchar\\cyrzdsc": "ҙ", + "\\cyrchar\\CYRKDSC": "Қ", + "\\cyrchar\\cyrkdsc": "қ", + "\\cyrchar\\CYRKVCRS": "Ҝ", + "\\cyrchar\\cyrkvcrs": "ҝ", + "\\cyrchar\\CYRKHCRS": "Ҟ", + "\\cyrchar\\cyrkhcrs": "ҟ", + "\\cyrchar\\CYRKBEAK": "Ҡ", + "\\cyrchar\\cyrkbeak": "ҡ", + "\\cyrchar\\CYRNDSC": "Ң", + "\\cyrchar\\cyrndsc": "ң", + "\\cyrchar\\CYRNG": "Ҥ", + "\\cyrchar\\cyrng": "ҥ", + "\\cyrchar\\CYRPHK": "Ҧ", + "\\cyrchar\\cyrphk": "ҧ", + "\\cyrchar\\CYRABHHA": "Ҩ", + "\\cyrchar\\cyrabhha": "ҩ", + "\\cyrchar\\CYRSDSC": "Ҫ", + "\\cyrchar\\cyrsdsc": "ҫ", + "\\cyrchar\\CYRTDSC": "Ҭ", + "\\cyrchar\\cyrtdsc": "ҭ", + "\\cyrchar\\CYRY": "Ү", + "\\cyrchar\\cyry": "ү", + "\\cyrchar\\CYRYHCRS": "Ұ", + "\\cyrchar\\cyryhcrs": "ұ", + "\\cyrchar\\CYRHDSC": "Ҳ", + "\\cyrchar\\cyrhdsc": "ҳ", + "\\cyrchar\\CYRTETSE": "Ҵ", + "\\cyrchar\\cyrtetse": "ҵ", + "\\cyrchar\\CYRCHRDSC": "Ҷ", + "\\cyrchar\\cyrchrdsc": "ҷ", + "\\cyrchar\\CYRCHVCRS": "Ҹ", + "\\cyrchar\\cyrchvcrs": "ҹ", + "\\cyrchar\\CYRSHHA": "Һ", + "\\cyrchar\\cyrshha": "һ", + "\\cyrchar\\CYRABHCH": "Ҽ", + "\\cyrchar\\cyrabhch": "ҽ", + "\\cyrchar\\CYRABHCHDSC": "Ҿ", + "\\cyrchar\\cyrabhchdsc": "ҿ", + "\\cyrchar\\CYRpalochka": "Ӏ", + "\\cyrchar\\CYRKHK": "Ӄ", + "\\cyrchar\\cyrkhk": "ӄ", + "\\cyrchar\\CYRNHK": "Ӈ", + "\\cyrchar\\cyrnhk": "ӈ", + "\\cyrchar\\CYRCHLDSC": "Ӌ", + "\\cyrchar\\cyrchldsc": "ӌ", + "\\cyrchar\\CYRAE": "Ӕ", + "\\cyrchar\\cyrae": "ӕ", + "\\cyrchar\\CYRSCHWA": "Ә", + "\\cyrchar\\cyrschwa": "ә", + "\\cyrchar\\CYRABHDZE": "Ӡ", + "\\cyrchar\\cyrabhdze": "ӡ", + "\\cyrchar\\CYROTLD": "Ө", + "\\cyrchar\\cyrotld": "ө", + "\\\\backslash": "ࡱ", + "\\textsuperscript{a}": "ᵃ", + "^{a}": "ᵃ", + "\\textsuperscript{b}": "ᵇ", + "^{b}": "ᵇ", + "\\textsuperscript{d}": "ᵈ", + "^{d}": "ᵈ", + "\\textsuperscript{e}": "ᵉ", + "^{e}": "ᵉ", + "\\textsuperscript{g}": "ᵍ", + "^{g}": "ᵍ", + "\\textsuperscript{k}": "ᵏ", + "^{k}": "ᵏ", + "\\textsuperscript{m}": "ᵐ", + "^{m}": "ᵐ", + "\\textsuperscript{o}": "ᵒ", + "^{o}": "ᵒ", + "\\textsuperscript{p}": "ᵖ", + "^{p}": "ᵖ", + "\\textsuperscript{t}": "ᵗ", + "^{t}": "ᵗ", + "\\textsuperscript{u}": "ᵘ", + "^{u}": "ᵘ", + "\\textsuperscript{v}": "ᵛ", + "^{v}": "ᵛ", + "\\textsuperscript{c}": "ᶜ", + "^{c}": "ᶜ", + "\\textsuperscript{f}": "ᶠ", + "^{f}": "ᶠ", + "\\textsuperscript{z}": "ᶻ", + "^{z}": "ᶻ", + "\\.B": "Ḃ", + "\\.b": "ḃ", + "\\d{B}": "Ḅ", + "\\d{b}": "ḅ", + "\\b{B}": "Ḇ", + "\\b{b}": "ḇ", + "\\.D": "Ḋ", + "\\.d": "ḋ", + "\\d{D}": "Ḍ", + "\\d{d}": "ḍ", + "\\b{D}": "Ḏ", + "\\b{d}": "ḏ", + "\\c{D}": "Ḑ", + "\\c{d}": "ḑ", + "\\c{\\u{E}}": "Ḝ", + "\\c{\\u{e}}": "ḝ", + "\\.F": "Ḟ", + "\\.f": "ḟ", + "\\=G": "Ḡ", + "\\=g": "ḡ", + "\\.H": "Ḣ", + "\\.h": "ḣ", + "\\d{H}": "Ḥ", + "\\d{h}": "ḥ", + "\\\"H": "Ḧ", + "\\\"h": "ḧ", + "\\c{H}": "Ḩ", + "\\c{h}": "ḩ", + "\\'K": "Ḱ", + "\\'k": "ḱ", + "\\d{K}": "Ḳ", + "\\d{k}": "ḳ", + "\\b{K}": "Ḵ", + "\\b{k}": "ḵ", + "\\d{L}": "Ḷ", + "\\d{l}": "ḷ", + "\\b{L}": "Ḻ", + "\\b{l}": "ḻ", + "\\'M": "Ḿ", + "\\'m": "ḿ", + "\\.M": "Ṁ", + "\\.m": "ṁ", + "\\d{M}": "Ṃ", + "\\d{m}": "ṃ", + "\\.N": "Ṅ", + "\\.n": "ṅ", + "\\d{N}": "Ṇ", + "\\d{n}": "ṇ", + "\\b{N}": "Ṉ", + "\\b{n}": "ṉ", + "\\'P": "Ṕ", + "\\'p": "ṕ", + "\\.P": "Ṗ", + "\\.p": "ṗ", + "\\.R": "Ṙ", + "\\.r": "ṙ", + "\\d{R}": "Ṛ", + "\\d{r}": "ṛ", + "\\b{R}": "Ṟ", + "\\b{r}": "ṟ", + "\\.S": "Ṡ", + "\\.s": "ṡ", + "\\d{S}": "Ṣ", + "\\d{s}": "ṣ", + "\\.T": "Ṫ", + "\\.t": "ṫ", + "\\d{T}": "Ṭ", + "\\d{t}": "ṭ", + "\\b{T}": "Ṯ", + "\\b{t}": "ṯ", + "\\~V": "Ṽ", + "\\~v": "ṽ", + "\\d{V}": "Ṿ", + "\\d{v}": "ṿ", + "\\`W": "Ẁ", + "\\`w": "ẁ", + "\\'W": "Ẃ", + "\\'w": "ẃ", + "\\\"W": "Ẅ", + "\\\"w": "ẅ", + "\\.W": "Ẇ", + "\\.w": "ẇ", + "\\d{W}": "Ẉ", + "\\d{w}": "ẉ", + "\\.X": "Ẋ", + "\\.x": "ẋ", + "\\\"X": "Ẍ", + "\\\"x": "ẍ", + "\\.Y": "Ẏ", + "\\.y": "ẏ", + "\\^Z": "Ẑ", + "\\^z": "ẑ", + "\\d{Z}": "Ẓ", + "\\d{z}": "ẓ", + "\\b{Z}": "Ẕ", + "\\b{z}": "ẕ", + "\\b{h}": "ẖ", + "\\\"t": "ẗ", + "\\r{w}": "ẘ", + "\\r{y}": "ẙ", + "\\d{A}": "Ạ", + "\\d{a}": "ạ", + "\\d{E}": "Ẹ", + "\\d{e}": "ẹ", + "\\~E": "Ẽ", + "\\~e": "ẽ", + "\\d{I}": "Ị", + "\\d{i}": "ị", + "\\d{O}": "Ọ", + "\\d{o}": "ọ", + "\\d{U}": "Ụ", + "\\d{u}": "ụ", + "\\`Y": "Ỳ", + "\\`y": "ỳ", + "\\d{Y}": "Ỵ", + "\\d{y}": "ỵ", + "\\~Y": "Ỹ", + "\\~y": "ỹ", + "\\hspace{0.6em}": " ", + "\\hspace{1em}": " ", + "\\quad": " ", + "\\;": " ", + "\\hspace{0.25em}": " ", + "\\hspace{0.166em}": " ", + "\\hphantom{0}": " ", + "\\hphantom{,}": " ", + "\\,": " ", + "\\mkern1mu": " ", + "\\mbox": "​", + "{\\aftergroup\\ignorespaces}": "‌", + "\\textendash": "–", + "\\textemdash": "—", + "\\rule{1em}{1pt}": "―", + "\\horizbar": "―", + "\\Vert": "‖", + "\\twolowline": "‗", + "\\textquoteleft": "‘", + "\\textquoteright": "’", + "\\Elzreapos": "‛", + "\\textquotedblleft": "“", + "\\textquotedblright": "”", + "\\quotedblbase": "‟", + "\\textdagger": "†", + "\\dagger": "†", + "\\textdaggerdbl": "‡", + "\\ddagger": "‡", + "\\textbullet": "•", + "\\enleadertwodots": "‥", + "\\ldots": "…", + "\\textperthousand": "‰", + "\\textpertenthousand": "‱", + "{'}": "′", + "{''}": "″", + "{'''}": "‴", + "\\backprime": "‵", + "\\backdprime": "‶", + "\\backtrprime": "‷", + "\\caretinsert": "‸", + "\\guilsinglleft": "‹", + "\\guilsinglright": "›", + "\\Exclam": "‼", + "\\hyphenbullet": "⁃", + "\\fracslash": "⁄", + "\\Question": "⁇", + "\\closure": "⁐", + "\\:": " ", + "\\nolinebreak": "⁠", + "^{0}": "⁰", + "\\textsuperscript{i}": "ⁱ", + "^{i}": "ⁱ", + "^{4}": "⁴", + "^{5}": "⁵", + "^{6}": "⁶", + "^{7}": "⁷", + "^{8}": "⁸", + "^{9}": "⁹", + "^{+}": "⁺", + "^{-}": "⁻", + "^{=}": "⁼", + "^{(}": "⁽", + "^{)}": "⁾", + "\\textsuperscript{n}": "ⁿ", + "^{n}": "ⁿ", + "_{0}": "₀", + "_{1}": "₁", + "_{2}": "₂", + "_{3}": "₃", + "_{4}": "₄", + "_{5}": "₅", + "_{6}": "₆", + "_{7}": "₇", + "_{8}": "₈", + "_{9}": "₉", + "_{+}": "₊", + "_{-}": "₋", + "_{=}": "₌", + "_{(}": "₍", + "_{)}": "₎", + "\\textsubscript{a}": "ₐ", + "_{a}": "ₐ", + "\\textsubscript{e}": "ₑ", + "_{e}": "ₑ", + "\\textsubscript{o}": "ₒ", + "_{o}": "ₒ", + "\\textsubscript{x}": "ₓ", + "_{x}": "ₓ", + "\\textsubscript{\\textschwa}": "ₔ", + "\\textsubscript{h}": "ₕ", + "_{h}": "ₕ", + "\\textsubscript{k}": "ₖ", + "_{k}": "ₖ", + "\\textsubscript{l}": "ₗ", + "_{l}": "ₗ", + "\\textsubscript{m}": "ₘ", + "_{m}": "ₘ", + "\\textsubscript{n}": "ₙ", + "_{n}": "ₙ", + "\\textsubscript{p}": "ₚ", + "_{p}": "ₚ", + "\\textsubscript{s}": "ₛ", + "_{s}": "ₛ", + "\\textsubscript{t}": "ₜ", + "_{t}": "ₜ", + "\\ensuremath{\\Elzpes}": "₧", + "\\texteuro": "€", + "\\euro": "€", + "\\lvec": "⃐", + "\\vertoverlay": "⃒", + "\\LVec": "⃖", + "\\vec": "⃗", + "\\dddot": "⃛", + "\\ddddot": "⃜", + "\\enclosecircle": "⃝", + "\\enclosesquare": "⃞", + "\\enclosediamond": "⃟", + "\\overleftrightarrow": "⃡", + "\\enclosetriangle": "⃤", + "\\annuity": "⃧", + "\\threeunderdot": "⃨", + "\\widebridgeabove": "⃩", + "\\underrightharpoondown": "⃬", + "\\underleftharpoondown": "⃭", + "\\underleftarrow": "⃮", + "\\underrightarrow": "⃯", + "\\asteraccent": "⃰", + "\\mathbb{C}": "ℂ", + "\\textcelsius": "℃", + "\\Euler": "ℇ", + "\\mathscr{g}": "ℊ", + "\\mathscr{H}": "ℋ", + "\\mathfrak{H}": "ℌ", + "\\mathbb{H}": "ℍ", + "\\Planckconst": "ℎ", + "\\hslash": "ℏ", + "\\mathscr{I}": "ℐ", + "\\mathfrak{I}": "ℑ", + "\\mathscr{L}": "ℒ", + "\\mathscr{l}": "ℓ", + "\\mathbb{N}": "ℕ", + "\\cyrchar\\textnumero": "№", + "\\textcircledP": "℗", + "\\wp": "℘", + "\\mathbb{P}": "ℙ", + "\\mathbb{Q}": "ℚ", + "\\mathscr{R}": "ℛ", + "\\mathfrak{R}": "ℜ", + "\\mathbb{R}": "ℝ", + "\\Elzxrat": "℞", + "\\textservicemark": "℠", + "\\texttrademark": "™", + "\\mathbb{Z}": "ℤ", + "\\mho": "℧", + "\\mathfrak{Z}": "ℨ", + "\\textriota": "℩", + "\\Angstroem": "Å", + "\\mathscr{B}": "ℬ", + "\\mathfrak{C}": "ℭ", + "\\textestimated": "℮", + "\\mathscr{e}": "ℯ", + "\\mathscr{E}": "ℰ", + "\\mathscr{F}": "ℱ", + "\\Finv": "Ⅎ", + "\\mathscr{M}": "ℳ", + "\\mathscr{o}": "ℴ", + "\\aleph": "ℵ", + "\\beth": "ℶ", + "\\gimel": "ℷ", + "\\daleth": "ℸ", + "\\mathbb{\\pi}": "ℼ", + "\\mathbb{\\gamma}": "ℽ", + "\\mathbb{\\Gamma}": "ℾ", + "\\mathbb{\\Pi}": "ℿ", + "\\mathbb{\\Sigma}": "⅀", + "\\Game": "⅁", + "\\sansLturned": "⅂", + "\\sansLmirrored": "⅃", + "\\Yup": "⅄", + "\\CapitalDifferentialD": "ⅅ", + "\\DifferentialD": "ⅆ", + "\\ExponetialE": "ⅇ", + "\\ComplexI": "ⅈ", + "\\ComplexJ": "ⅉ", + "\\PropertyLine": "⅊", + "\\invamp": "⅋", + "\\frac{1}{7}": "⅐", + "\\textfrac{1}{7}": "⅐", + "\\frac{1}{9}": "⅑", + "\\textfrac{1}{9}": "⅑", + "\\frac{1}{10}": "⅒", + "\\textfrac{1}{10}": "⅒", + "\\frac{1}{3}": "⅓", + "\\textfrac{1}{3}": "⅓", + "\\frac{2}{3}": "⅔", + "\\textfrac{2}{3}": "⅔", + "\\frac{1}{5}": "⅕", + "\\textfrac{1}{5}": "⅕", + "\\frac{2}{5}": "⅖", + "\\textfrac{2}{5}": "⅖", + "\\frac{3}{5}": "⅗", + "\\textfrac{3}{5}": "⅗", + "\\frac{4}{5}": "⅘", + "\\textfrac{4}{5}": "⅘", + "\\frac{1}{6}": "⅙", + "\\textfrac{1}{6}": "⅙", + "\\frac{5}{6}": "⅚", + "\\textfrac{5}{6}": "⅚", + "\\frac{1}{8}": "⅛", + "\\textfrac{1}{8}": "⅛", + "\\frac{3}{8}": "⅜", + "\\textfrac{3}{8}": "⅜", + "\\frac{5}{8}": "⅝", + "\\textfrac{5}{8}": "⅝", + "\\frac{7}{8}": "⅞", + "\\textfrac{7}{8}": "⅞", + "\\frac{1}": "⅟", + "\\textfrac{1}": "⅟", + "\\frac{0}{3}": "↉", + "\\textfrac{0}{3}": "↉", + "\\leftarrow": "←", + "\\uparrow": "↑", + "\\textrightarrow": "→", + "\\rightarrow": "→", + "\\to": "→", + "\\downarrow": "↓", + "\\leftrightarrow": "↔", + "\\updownarrow": "↕", + "\\nwarrow": "↖", + "\\nearrow": "↗", + "\\searrow": "↘", + "\\swarrow": "↙", + "\\nleftarrow": "↚", + "\\nrightarrow": "↛", + "\\arrowwaveleft": "↜", + "\\arrowwaveright": "↝", + "\\twoheadleftarrow": "↞", + "\\twoheaduparrow": "↟", + "\\twoheadrightarrow": "↠", + "\\twoheaddownarrow": "↡", + "\\leftarrowtail": "↢", + "\\rightarrowtail": "↣", + "\\mapsfrom": "↤", + "\\MapsUp": "↥", + "\\mapsto": "↦", + "\\MapsDown": "↧", + "\\updownarrowbar": "↨", + "\\hookleftarrow": "↩", + "\\hookrightarrow": "↪", + "\\looparrowleft": "↫", + "\\looparrowright": "↬", + "\\leftrightsquigarrow": "↭", + "\\nleftrightarrow": "↮", + "\\lightning": "↯", + "\\Lsh": "↰", + "\\Rsh": "↱", + "\\dlsh": "↲", + "\\reflectbox{\\carriagereturn}": "↳", + "\\linefeed": "↴", + "\\carriagereturn": "↵", + "\\curvearrowleft": "↶", + "\\curvearrowright": "↷", + "\\barovernorthwestarrow": "↸", + "\\barleftarrowrightarrowba": "↹", + "\\circlearrowleft": "↺", + "\\circlearrowright": "↻", + "\\leftharpoonup": "↼", + "\\leftharpoondown": "↽", + "\\upharpoonright": "↾", + "\\upharpoonleft": "↿", + "\\rightharpoonup": "⇀", + "\\rightharpoondown": "⇁", + "\\downharpoonright": "⇂", + "\\downharpoonleft": "⇃", + "\\rightleftarrows": "⇄", + "\\dblarrowupdown": "⇅", + "\\leftrightarrows": "⇆", + "\\leftleftarrows": "⇇", + "\\upuparrows": "⇈", + "\\rightrightarrows": "⇉", + "\\downdownarrows": "⇊", + "\\leftrightharpoons": "⇋", + "\\rightleftharpoons": "⇌", + "\\nLeftarrow": "⇍", + "\\nLeftrightarrow": "⇎", + "\\nRightarrow": "⇏", + "\\Leftarrow": "⇐", + "\\Uparrow": "⇑", + "\\Rightarrow": "⇒", + "\\Downarrow": "⇓", + "\\Leftrightarrow": "⇔", + "\\Updownarrow": "⇕", + "\\Nwarrow": "⇖", + "\\Nearrow": "⇗", + "\\Searrow": "⇘", + "\\Swarrow": "⇙", + "\\Lleftarrow": "⇚", + "\\Rrightarrow": "⇛", + "\\leftsquigarrow": "⇜", + "\\rightsquigarrow": "⇝", + "\\nHuparrow": "⇞", + "\\nHdownarrow": "⇟", + "\\dashleftarrow": "⇠", + "\\updasharrow": "⇡", + "\\dashrightarrow": "⇢", + "\\downdasharrow": "⇣", + "\\LeftArrowBar": "⇤", + "\\RightArrowBar": "⇥", + "\\leftwhitearrow": "⇦", + "\\upwhitearrow": "⇧", + "\\rightwhitearrow": "⇨", + "\\downwhitearrow": "⇩", + "\\whitearrowupfrombar": "⇪", + "\\circleonrightarrow": "⇴", + "\\DownArrowUpArrow": "⇵", + "\\rightthreearrows": "⇶", + "\\nvleftarrow": "⇷", + "\\pfun": "⇸", + "\\nvleftrightarrow": "⇹", + "\\nVleftarrow": "⇺", + "\\ffun": "⇻", + "\\nVleftrightarrow": "⇼", + "\\leftarrowtriangle": "⇽", + "\\rightarrowtriangle": "⇾", + "\\leftrightarrowtriangle": "⇿", + "\\forall": "∀", + "\\complement": "∁", + "\\partial": "∂", + "\\exists": "∃", + "\\nexists": "∄", + "\\varnothing": "∅", + "\\increment": "∆", + "\\nabla": "∇", + "\\in": "∈", + "\\not\\in": "∉", + "\\smallin": "∊", + "\\ni": "∋", + "\\not\\ni": "∌", + "\\smallni": "∍", + "\\QED": "∎", + "\\prod": "∏", + "\\coprod": "∐", + "\\sum": "∑", + "\\mp": "∓", + "\\dotplus": "∔", + "\\setminus": "∖", + "{_\\ast}": "∗", + "\\circ": "∘", + "\\bullet": "∙", + "\\surd": "√", + "\\sqrt[3]": "∛", + "\\sqrt[4]": "∜", + "\\propto": "∝", + "\\infty": "∞", + "\\rightangle": "∟", + "\\angle": "∠", + "\\measuredangle": "∡", + "\\sphericalangle": "∢", + "\\mid": "∣", + "\\nmid": "∤", + "\\parallel": "∥", + "\\nparallel": "∦", + "\\wedge": "∧", + "\\vee": "∨", + "\\cap": "∩", + "\\cup": "∪", + "\\int": "∫", + "{\\int\\!\\int}": "∬", + "{\\int\\!\\int\\!\\int}": "∭", + "\\oint": "∮", + "\\surfintegral": "∯", + "\\volintegral": "∰", + "\\clwintegral": "∱", + "\\lcirclerightint": "∲", + "\\rcirclerightint": "∳", + "\\therefore": "∴", + "\\because": "∵", + "\\Colon": "∷", + "\\dotdiv": "∸", + "\\eqcolon": "∹", + "\\mathbin{{:}\\!\\!{-}\\!\\!{:}}": "∺", + "\\homothetic": "∻", + "\\sim": "∼", + "\\backsim": "∽", + "\\lazysinv": "∾", + "\\AC": "∿", + "\\wr": "≀", + "\\not\\sim": "≁", + "\\texteqsim": "≂", + "\\NotEqualTilde": "≂̸", + "\\simeq": "≃", + "\\not\\simeq": "≄", + "\\cong": "≅", + "\\approxnotequal": "≆", + "\\not\\cong": "≇", + "\\approx": "≈", + "\\not\\approx": "≉", + "\\approxeq": "≊", + "\\tildetrpl": "≋", + "\\not\\apid": "≋̸", + "\\allequal": "≌", + "\\asymp": "≍", + "\\Bumpeq": "≎", + "\\NotHumpDownHump": "≎̸", + "\\bumpeq": "≏", + "\\NotHumpEqual": "≏̸", + "\\doteq": "≐", + "\\not\\doteq": "≐̸", + "\\doteqdot": "≑", + "\\fallingdotseq": "≒", + "\\risingdotseq": "≓", + "\\coloneq": "≔", + "\\eqcirc": "≖", + "\\circeq": "≗", + "\\arceq": "≘", + "\\estimates": "≙", + "\\starequal": "≛", + "\\triangleq": "≜", + "\\eqdef": "≝", + "\\measeq": "≞", + "\\neq": "≠", + "\\equiv": "≡", + "\\not\\equiv": "≢", + "\\Equiv": "≣", + "\\leq": "≤", + "\\le": "≤", + "\\geq": "≥", + "\\leqq": "≦", + "\\geqq": "≧", + "\\lneqq": "≨", + "\\lvertneqq": "≨︀", + "\\gneqq": "≩", + "\\gvertneqq": "≩︀", + "\\ll": "≪", + "\\NotLessLess": "≪̸", + "\\gg": "≫", + "\\NotGreaterGreater": "≫̸", + "\\between": "≬", + "{\\not\\kern-0.3em\\times}": "≭", + "\\not<": "≮", + "\\not>": "≯", + "\\not\\leq": "≰", + "\\not\\geq": "≱", + "\\lessequivlnt": "≲", + "\\greaterequivlnt": "≳", + "\\lessgtr": "≶", + "\\gtrless": "≷", + "\\notlessgreater": "≸", + "\\notgreaterless": "≹", + "\\prec": "≺", + "\\succ": "≻", + "\\preccurlyeq": "≼", + "\\succcurlyeq": "≽", + "\\NotPrecedesTilde": "≾̸", + "\\NotSucceedsTilde": "≿̸", + "\\not\\prec": "⊀", + "\\not\\succ": "⊁", + "\\subset": "⊂", + "\\supset": "⊃", + "\\not\\subset": "⊄", + "\\not\\supset": "⊅", + "\\subseteq": "⊆", + "\\supseteq": "⊇", + "\\not\\subseteq": "⊈", + "\\not\\supseteq": "⊉", + "\\subsetneq": "⊊", + "\\varsubsetneqq": "⊊︀", + "\\supsetneq": "⊋", + "\\varsupsetneq": "⊋︀", + "\\cupleftarrow": "⊌", + "\\cupdot": "⊍", + "\\uplus": "⊎", + "\\sqsubset": "⊏", + "\\NotSquareSubset": "⊏̸", + "\\sqsupset": "⊐", + "\\NotSquareSuperset": "⊐̸", + "\\sqsubseteq": "⊑", + "\\sqsupseteq": "⊒", + "\\sqcap": "⊓", + "\\sqcup": "⊔", + "\\oplus": "⊕", + "\\ominus": "⊖", + "\\otimes": "⊗", + "\\oslash": "⊘", + "\\odot": "⊙", + "\\circledcirc": "⊚", + "\\circledast": "⊛", + "\\circledequal": "⊜", + "\\circleddash": "⊝", + "\\boxplus": "⊞", + "\\boxminus": "⊟", + "\\boxtimes": "⊠", + "\\boxdot": "⊡", + "\\vdash": "⊢", + "\\dashv": "⊣", + "\\top": "⊤", + "\\assert": "⊦", + "\\truestate": "⊧", + "\\forcesextra": "⊨", + "\\Vdash": "⊩", + "\\Vvdash": "⊪", + "\\VDash": "⊫", + "\\nvdash": "⊬", + "\\nvDash": "⊭", + "\\nVdash": "⊮", + "\\nVDash": "⊯", + "\\prurel": "⊰", + "\\scurel": "⊱", + "\\vartriangleleft": "⊲", + "\\vartriangleright": "⊳", + "\\trianglelefteq": "⊴", + "\\trianglerighteq": "⊵", + "\\original": "⊶", + "\\image": "⊷", + "\\multimap": "⊸", + "\\hermitconjmatrix": "⊹", + "\\intercal": "⊺", + "\\veebar": "⊻", + "\\barvee": "⊽", + "\\rightanglearc": "⊾", + "\\varlrtriangle": "⊿", + "\\bigcap": "⋂", + "\\bigcup": "⋃", + "\\diamond": "⋄", + "\\cdot": "⋅", + "\\star": "⋆", + "\\divideontimes": "⋇", + "\\bowtie": "⋈", + "\\ltimes": "⋉", + "\\rtimes": "⋊", + "\\leftthreetimes": "⋋", + "\\rightthreetimes": "⋌", + "\\backsimeq": "⋍", + "\\curlyvee": "⋎", + "\\curlywedge": "⋏", + "\\Subset": "⋐", + "\\Supset": "⋑", + "\\Cap": "⋒", + "\\Cup": "⋓", + "\\pitchfork": "⋔", + "\\hash": "⋕", + "\\lessdot": "⋖", + "\\gtrdot": "⋗", + "\\verymuchless": "⋘", + "\\verymuchgreater": "⋙", + "\\lesseqgtr": "⋚", + "\\gtreqless": "⋛", + "\\eqless": "⋜", + "\\eqgtr": "⋝", + "\\curlyeqprec": "⋞", + "\\curlyeqsucc": "⋟", + "\\npreceq": "⋠", + "\\nsucceq": "⋡", + "\\not\\sqsubseteq": "⋢", + "\\not\\sqsupseteq": "⋣", + "\\sqsubsetneq": "⋤", + "\\Elzsqspne": "⋥", + "\\lnsim": "⋦", + "\\gnsim": "⋧", + "\\precedesnotsimilar": "⋨", + "\\succnsim": "⋩", + "\\ntriangleleft": "⋪", + "\\ntriangleright": "⋫", + "\\ntrianglelefteq": "⋬", + "\\ntrianglerighteq": "⋭", + "\\vdots": "⋮", + "\\cdots": "⋯", + "\\upslopeellipsis": "⋰", + "\\downslopeellipsis": "⋱", + "\\disin": "⋲", + "\\varisins": "⋳", + "\\isins": "⋴", + "\\isindot": "⋵", + "\\barin": "⋶", + "\\isinobar": "⋷", + "\\isinvb": "⋸", + "\\isinE": "⋹", + "\\nisd": "⋺", + "\\varnis": "⋻", + "\\nis": "⋼", + "\\varniobar": "⋽", + "\\niobar": "⋾", + "\\bagmember": "⋿", + "\\diameter": "⌀", + "\\house": "⌂", + "\\barwedge": "⌅", + "\\varbarwedge": "⌅", + "\\perspcorrespond": "⌆", + "\\lceil": "⌈", + "\\rceil": "⌉", + "\\lfloor": "⌊", + "\\rfloor": "⌋", + "\\invneg": "⌐", + "\\wasylozenge": "⌑", + "\\profline": "⌒", + "\\profsurf": "⌓", + "\\recorder": "⌕", + "{\\mathchar\"2208}": "⌖", + "\\viewdata": "⌗", + "\\turnednot": "⌙", + "\\ulcorner": "⌜", + "\\urcorner": "⌝", + "\\llcorner": "⌞", + "\\lrcorner": "⌟", + "\\inttop": "⌠", + "\\intbottom": "⌡", + "\\frown": "⌢", + "\\smile": "⌣", + "\\varhexagonlrbonds": "⌬", + "\\conictaper": "⌲", + "\\topbot": "⌶", + "\\APLinv": "⌹", + "\\notslash": "⌿", + "\\notbackslash": "⍀", + "\\APLleftarrowbox": "⍇", + "\\APLrightarrowbox": "⍈", + "\\invdiameter": "⍉", + "\\APLuparrowbox": "⍐", + "\\APLboxupcaret": "⍓", + "\\APLdownarrowbox": "⍗", + "\\APLcomment": "⍝", + "\\APLinput": "⍞", + "\\APLlog": "⍟", + "\\APLboxquestion": "⍰", + "\\rangledownzigzagarrow": "⍼", + "\\hexagon": "⎔", + "\\lparenuend": "⎛", + "\\lparenextender": "⎜", + "\\lparenlend": "⎝", + "\\rparenuend": "⎞", + "\\rparenextender": "⎟", + "\\rparenlend": "⎠", + "\\lbrackuend": "⎡", + "\\lbrackextender": "⎢", + "\\Elzdlcorn": "⎣", + "\\rbrackuend": "⎤", + "\\rbrackextender": "⎥", + "\\rbracklend": "⎦", + "\\lbraceuend": "⎧", + "\\lbracemid": "⎨", + "\\lbracelend": "⎩", + "\\vbraceextender": "⎪", + "\\rbraceuend": "⎫", + "\\rbracemid": "⎬", + "\\rbracelend": "⎭", + "\\intextender": "⎮", + "\\harrowextender": "⎯", + "\\lmoustache": "⎰", + "\\rmoustache": "⎱", + "\\sumtop": "⎲", + "\\sumbottom": "⎳", + "\\overbracket": "⎴", + "\\underbracket": "⎵", + "\\bbrktbrk": "⎶", + "\\sqrtbottom": "⎷", + "\\lvboxline": "⎸", + "\\rvboxline": "⎹", + "\\varcarriagereturn": "⏎", + "\\overparen": "⏜", + "\\underparen": "⏝", + "\\overbrace": "⏞", + "\\underbrace": "⏟", + "\\obrbrak": "⏠", + "\\ubrbrak": "⏡", + "\\trapezium": "⏢", + "\\benzenr": "⏣", + "\\strns": "⏤", + "\\fltns": "⏥", + "\\accurrent": "⏦", + "\\elinters": "⏧", + "\\textvisiblespace": "␣", + "\\ding{172}": "①", + "\\ding{173}": "②", + "\\ding{174}": "③", + "\\ding{175}": "④", + "\\ding{176}": "⑤", + "\\ding{177}": "⑥", + "\\ding{178}": "⑦", + "\\ding{179}": "⑧", + "\\ding{180}": "⑨", + "\\ding{181}": "⑩", + "\\circledS": "Ⓢ", + "\\Elzdshfnc": "┆", + "\\Elzsqfnw": "┙", + "\\diagup": "╱", + "\\blockuphalf": "▀", + "\\blocklowhalf": "▄", + "\\blockfull": "█", + "\\blocklefthalf": "▌", + "\\blockrighthalf": "▐", + "\\blockqtrshaded": "░", + "\\blockhalfshaded": "▒", + "\\blockthreeqtrshaded": "▓", + "\\ding{110}": "■", + "\\mdlgblksquare": "■", + "\\square": "□", + "\\Box": "□", + "\\squoval": "▢", + "\\blackinwhitesquare": "▣", + "\\squarehfill": "▤", + "\\squarevfill": "▥", + "\\squarehvfill": "▦", + "\\squarenwsefill": "▧", + "\\squareneswfill": "▨", + "\\squarecrossfill": "▩", + "\\smwhtsquare": "▫", + "\\hrectangleblack": "▬", + "\\fbox{~~}": "▭", + "\\vrectangleblack": "▮", + "\\Elzvrecto": "▯", + "\\parallelogramblack": "▰", + "\\ding{115}": "▲", + "\\bigblacktriangleup": "▲", + "\\bigtriangleup": "△", + "\\blacktriangle": "▴", + "\\vartriangle": "▵", + "\\RHD": "▶", + "\\rhd": "▷", + "\\blacktriangleright": "▸", + "\\triangleright": "▹", + "\\blackpointerright": "►", + "\\whitepointerright": "▻", + "\\ding{116}": "▼", + "\\bigblacktriangledown": "▼", + "\\bigtriangledown": "▽", + "\\blacktriangledown": "▾", + "\\triangledown": "▿", + "\\LHD": "◀", + "\\lhd": "◁", + "\\blacktriangleleft": "◂", + "\\triangleleft": "◃", + "\\blackpointerleft": "◄", + "\\whitepointerleft": "◅", + "\\ding{117}": "◆", + "\\Diamondblack": "◆", + "\\Diamond": "◇", + "\\blackinwhitediamond": "◈", + "\\fisheye": "◉", + "\\lozenge": "◊", + "\\dottedcircle": "◌", + "\\circlevertfill": "◍", + "\\bullseye": "◎", + "\\ding{108}": "●", + "\\CIRCLE": "●", + "\\Elzcirfl": "◐", + "\\Elzcirfr": "◑", + "\\Elzcirfb": "◒", + "\\circletophalfblack": "◓", + "\\circleurquadblack": "◔", + "\\blackcircleulquadwhite": "◕", + "\\LEFTCIRCLE": "◖", + "\\ding{119}": "◗", + "\\RIGHTCIRCLE": "◗", + "\\Elzrvbull": "◘", + "\\inversewhitecircle": "◙", + "\\invwhiteupperhalfcircle": "◚", + "\\invwhitelowerhalfcircle": "◛", + "\\ularc": "◜", + "\\urarc": "◝", + "\\lrarc": "◞", + "\\llarc": "◟", + "\\topsemicircle": "◠", + "\\botsemicircle": "◡", + "\\lrblacktriangle": "◢", + "\\llblacktriangle": "◣", + "\\ulblacktriangle": "◤", + "\\urblacktriangle": "◥", + "\\smwhtcircle": "◦", + "\\Elzsqfl": "◧", + "\\Elzsqfr": "◨", + "\\squareulblack": "◩", + "\\Elzsqfse": "◪", + "\\boxbar": "◫", + "\\trianglecdot": "◬", + "\\triangleleftblack": "◭", + "\\trianglerightblack": "◮", + "\\bigcirc": "◯", + "\\squareulquad": "◰", + "\\squarellquad": "◱", + "\\squarelrquad": "◲", + "\\squareurquad": "◳", + "\\circleulquad": "◴", + "\\circlellquad": "◵", + "\\circlelrquad": "◶", + "\\circleurquad": "◷", + "\\ultriangle": "◸", + "\\urtriangle": "◹", + "\\lltriangle": "◺", + "\\mdsmwhtsquare": "◽", + "\\mdsmblksquare": "◾", + "\\lrtriangle": "◿", + "\\ding{72}": "★", + "\\bigstar": "★", + "\\ding{73}": "☆", + "\\bigwhitestar": "☆", + "\\Sun": "☉", + "\\ding{37}": "☎", + "\\Square": "☐", + "\\CheckedBox": "☑", + "\\XBox": "☒", + "\\steaming": "☕", + "\\ding{42}": "☛", + "\\ding{43}": "☞", + "\\pointright": "☞", + "\\skull": "☠", + "\\danger": "☡", + "\\radiation": "☢", + "\\biohazard": "☣", + "\\yinyang": "☯", + "\\frownie": "☹", + "\\smiley": "☺", + "\\blacksmiley": "☻", + "\\sun": "☼", + "\\rightmoon": "☽", + "\\leftmoon": "☾", + "\\mercury": "☿", + "\\venus": "♀", + "\\female": "♀", + "\\earth": "♁", + "\\male": "♂", + "\\jupiter": "♃", + "\\saturn": "♄", + "\\uranus": "♅", + "\\neptune": "♆", + "\\pluto": "♇", + "\\aries": "♈", + "\\taurus": "♉", + "\\gemini": "♊", + "\\cancer": "♋", + "\\leo": "♌", + "\\virgo": "♍", + "\\libra": "♎", + "\\scorpio": "♏", + "\\sagittarius": "♐", + "\\capricornus": "♑", + "\\aquarius": "♒", + "\\pisces": "♓", + "\\ding{171}": "♠", + "\\spadesuit": "♠", + "\\heartsuit": "♡", + "\\ding{168}": "♣", + "\\clubsuit": "♣", + "\\varspadesuit": "♤", + "\\ding{170}": "♥", + "\\varheartsuit": "♥", + "\\ding{169}": "♦", + "\\vardiamondsuit": "♦", + "\\varclubsuit": "♧", + "\\quarternote": "♩", + "\\eighthnote": "♪", + "\\twonotes": "♫", + "\\sixteenthnote": "♬", + "\\flat": "♭", + "\\natural": "♮", + "\\sharp": "♯", + "\\recycle": "♻", + "\\acidfree": "♾", + "\\dicei": "⚀", + "\\diceii": "⚁", + "\\diceiii": "⚂", + "\\diceiv": "⚃", + "\\dicev": "⚄", + "\\dicevi": "⚅", + "\\circledrightdot": "⚆", + "\\circledtwodots": "⚇", + "\\blackcircledrightdot": "⚈", + "\\blackcircledtwodots": "⚉", + "\\anchor": "⚓", + "\\swords": "⚔", + "\\warning": "⚠", + "\\Hermaphrodite": "⚥", + "\\medcirc": "⚪", + "\\medbullet": "⚫", + "\\mdsmwhtcircle": "⚬", + "\\neuter": "⚲", + "\\ding{33}": "✁", + "\\ding{34}": "✂", + "\\ding{35}": "✃", + "\\ding{36}": "✄", + "\\ding{38}": "✆", + "\\ding{39}": "✇", + "\\ding{40}": "✈", + "\\ding{41}": "✉", + "\\ding{44}": "✌", + "\\ding{45}": "✍", + "\\ding{46}": "✎", + "\\pencil": "✎", + "\\ding{47}": "✏", + "\\ding{48}": "✐", + "\\ding{49}": "✑", + "\\ding{50}": "✒", + "\\ding{51}": "✓", + "\\checkmark": "✓", + "\\ding{52}": "✔", + "\\ding{53}": "✕", + "\\ding{54}": "✖", + "\\ding{55}": "✗", + "\\ballotx": "✗", + "\\ding{56}": "✘", + "\\ding{57}": "✙", + "\\ding{58}": "✚", + "\\ding{59}": "✛", + "\\ding{60}": "✜", + "\\ding{61}": "✝", + "\\ding{62}": "✞", + "\\ding{63}": "✟", + "\\ding{64}": "✠", + "\\maltese": "✠", + "\\ding{65}": "✡", + "\\ding{66}": "✢", + "\\ding{67}": "✣", + "\\ding{68}": "✤", + "\\ding{69}": "✥", + "\\ding{70}": "✦", + "\\ding{71}": "✧", + "\\ding{74}": "✪", + "\\circledstar": "✪", + "\\ding{75}": "✫", + "\\ding{76}": "✬", + "\\ding{77}": "✭", + "\\ding{78}": "✮", + "\\ding{79}": "✯", + "\\ding{80}": "✰", + "\\ding{81}": "✱", + "\\ding{82}": "✲", + "\\ding{83}": "✳", + "\\ding{84}": "✴", + "\\ding{85}": "✵", + "\\ding{86}": "✶", + "\\varstar": "✶", + "\\ding{87}": "✷", + "\\ding{88}": "✸", + "\\ding{89}": "✹", + "\\ding{90}": "✺", + "\\ding{91}": "✻", + "\\ding{92}": "✼", + "\\ding{93}": "✽", + "\\dingasterisk": "✽", + "\\ding{94}": "✾", + "\\ding{95}": "✿", + "\\ding{96}": "❀", + "\\ding{97}": "❁", + "\\ding{98}": "❂", + "\\ding{99}": "❃", + "\\ding{100}": "❄", + "\\ding{101}": "❅", + "\\ding{102}": "❆", + "\\ding{103}": "❇", + "\\ding{104}": "❈", + "\\ding{105}": "❉", + "\\ding{106}": "❊", + "\\ding{107}": "❋", + "\\ding{109}": "❍", + "\\ding{111}": "❏", + "\\ding{112}": "❐", + "\\ding{113}": "❑", + "\\ding{114}": "❒", + "\\ding{118}": "❖", + "\\ding{120}": "❘", + "\\ding{121}": "❙", + "\\ding{122}": "❚", + "\\ding{123}": "❛", + "\\ding{124}": "❜", + "\\ding{125}": "❝", + "\\ding{126}": "❞", + "\\ding{161}": "❡", + "\\ding{162}": "❢", + "\\ding{163}": "❣", + "\\ding{164}": "❤", + "\\ding{165}": "❥", + "\\ding{166}": "❦", + "\\ding{167}": "❧", + "\\ding{182}": "❶", + "\\ding{183}": "❷", + "\\ding{184}": "❸", + "\\ding{185}": "❹", + "\\ding{186}": "❺", + "\\ding{187}": "❻", + "\\ding{188}": "❼", + "\\ding{189}": "❽", + "\\ding{190}": "❾", + "\\ding{191}": "❿", + "\\ding{192}": "➀", + "\\ding{193}": "➁", + "\\ding{194}": "➂", + "\\ding{195}": "➃", + "\\ding{196}": "➄", + "\\ding{197}": "➅", + "\\ding{198}": "➆", + "\\ding{199}": "➇", + "\\ding{200}": "➈", + "\\ding{201}": "➉", + "\\ding{202}": "➊", + "\\ding{203}": "➋", + "\\ding{204}": "➌", + "\\ding{205}": "➍", + "\\ding{206}": "➎", + "\\ding{207}": "➏", + "\\ding{208}": "➐", + "\\ding{209}": "➑", + "\\ding{210}": "➒", + "\\ding{211}": "➓", + "\\ding{212}": "➔", + "\\ding{216}": "➘", + "\\ding{217}": "➙", + "\\ding{218}": "➚", + "\\ding{219}": "➛", + "\\draftingarrow": "➛", + "\\ding{220}": "➜", + "\\ding{221}": "➝", + "\\ding{222}": "➞", + "\\ding{223}": "➟", + "\\ding{224}": "➠", + "\\ding{225}": "➡", + "\\ding{226}": "➢", + "\\arrowbullet": "➢", + "\\ding{227}": "➣", + "\\ding{228}": "➤", + "\\ding{229}": "➥", + "\\ding{230}": "➦", + "\\ding{231}": "➧", + "\\ding{232}": "➨", + "\\ding{233}": "➩", + "\\ding{234}": "➪", + "\\ding{235}": "➫", + "\\ding{236}": "➬", + "\\ding{237}": "➭", + "\\ding{238}": "➮", + "\\ding{239}": "➯", + "\\ding{241}": "➱", + "\\ding{242}": "➲", + "\\ding{243}": "➳", + "\\ding{244}": "➴", + "\\ding{245}": "➵", + "\\ding{246}": "➶", + "\\ding{247}": "➷", + "\\ding{248}": "➸", + "\\ding{249}": "➹", + "\\ding{250}": "➺", + "\\ding{251}": "➻", + "\\ding{252}": "➼", + "\\ding{253}": "➽", + "\\ding{254}": "➾", + "\\threedangle": "⟀", + "\\whiteinwhitetriangle": "⟁", + "\\perp": "⟂", + "\\subsetcirc": "⟃", + "\\supsetcirc": "⟄", + "\\Lbag": "⟅", + "\\Rbag": "⟆", + "\\veedot": "⟇", + "\\bsolhsub": "⟈", + "\\suphsol": "⟉", + "\\longdivision": "⟌", + "\\Diamonddot": "⟐", + "\\wedgedot": "⟑", + "\\upin": "⟒", + "\\pullback": "⟓", + "\\pushout": "⟔", + "\\leftouterjoin": "⟕", + "\\rightouterjoin": "⟖", + "\\fullouterjoin": "⟗", + "\\bigbot": "⟘", + "\\bigtop": "⟙", + "\\DashVDash": "⟚", + "\\dashVdash": "⟛", + "\\multimapinv": "⟜", + "\\vlongdash": "⟝", + "\\longdashv": "⟞", + "\\cirbot": "⟟", + "\\lozengeminus": "⟠", + "\\concavediamond": "⟡", + "\\concavediamondtickleft": "⟢", + "\\concavediamondtickright": "⟣", + "\\whitesquaretickleft": "⟤", + "\\whitesquaretickright": "⟥", + "\\llbracket": "⟦", + "\\rrbracket": "⟧", + "\\langle": "⟨", + "\\rangle": "⟩", + "\\lang": "⟪", + "\\rang": "⟫", + "\\Lbrbrak": "⟬", + "\\Rbrbrak": "⟭", + "\\lgroup": "⟮", + "\\rgroup": "⟯", + "\\UUparrow": "⟰", + "\\DDownarrow": "⟱", + "\\acwgapcirclearrow": "⟲", + "\\cwgapcirclearrow": "⟳", + "\\rightarrowonoplus": "⟴", + "\\longleftarrow": "⟵", + "\\longrightarrow": "⟶", + "\\longleftrightarrow": "⟷", + "\\Longleftarrow": "⟸", + "\\Longrightarrow": "⟹", + "\\Longleftrightarrow": "⟺", + "\\longmapsfrom": "⟻", + "\\longmapsto": "⟼", + "\\Longmapsfrom": "⟽", + "\\Longmapsto": "⟾", + "\\sim\\joinrel\\leadsto": "⟿", + "\\psur": "⤀", + "\\nVtwoheadrightarrow": "⤁", + "\\nvLeftarrow": "⤂", + "\\nvRightarrow": "⤃", + "\\nvLeftrightarrow": "⤄", + "\\Mapsfrom": "⤆", + "\\Mapsto": "⤇", + "\\downarrowbarred": "⤈", + "\\uparrowbarred": "⤉", + "\\Uuparrow": "⤊", + "\\Ddownarrow": "⤋", + "\\leftbkarrow": "⤌", + "\\rightbkarrow": "⤍", + "\\leftdbkarrow": "⤎", + "\\dbkarow": "⤏", + "\\drbkarow": "⤐", + "\\rightdotarrow": "⤑", + "\\UpArrowBar": "⤒", + "\\DownArrowBar": "⤓", + "\\pinj": "⤔", + "\\finj": "⤕", + "\\bij": "⤖", + "\\nvtwoheadrightarrowtail": "⤗", + "\\nVtwoheadrightarrowtail": "⤘", + "\\lefttail": "⤙", + "\\righttail": "⤚", + "\\leftdbltail": "⤛", + "\\rightdbltail": "⤜", + "\\diamondleftarrow": "⤝", + "\\rightarrowdiamond": "⤞", + "\\diamondleftarrowbar": "⤟", + "\\barrightarrowdiamond": "⤠", + "\\nwsearrow": "⤡", + "\\neswarrow": "⤢", + "\\rdiagovfdiag": "⤫", + "\\fdiagovrdiag": "⤬", + "\\seovnearrow": "⤭", + "\\neovsearrow": "⤮", + "\\fdiagovnearrow": "⤯", + "\\rdiagovsearrow": "⤰", + "\\neovnwarrow": "⤱", + "\\nwovnearrow": "⤲", + "\\uprightcurvearrow": "⤴", + "\\downrightcurvedarrow": "⤵", + "\\cwrightarcarrow": "⤸", + "\\acwleftarcarrow": "⤹", + "\\acwoverarcarrow": "⤺", + "\\acwunderarcarrow": "⤻", + "\\curvearrowrightminus": "⤼", + "\\curvearrowleftplus": "⤽", + "\\cwundercurvearrow": "⤾", + "\\ccwundercurvearrow": "⤿", + "\\Elolarr": "⥀", + "\\Elorarr": "⥁", + "\\ElzRlarr": "⥂", + "\\leftarrowshortrightarrow": "⥃", + "\\ElzrLarr": "⥄", + "\\rightarrowplus": "⥅", + "\\leftarrowplus": "⥆", + "\\Elzrarrx": "⥇", + "\\leftrightarrowcircle": "⥈", + "\\twoheaduparrowcircle": "⥉", + "\\leftrightharpoon": "⥊", + "\\rightleftharpoon": "⥋", + "\\updownharpoonrightleft": "⥌", + "\\updownharpoonleftright": "⥍", + "\\LeftRightVector": "⥎", + "\\RightUpDownVector": "⥏", + "\\DownLeftRightVector": "⥐", + "\\LeftUpDownVector": "⥑", + "\\LeftVectorBar": "⥒", + "\\RightVectorBar": "⥓", + "\\RightUpVectorBar": "⥔", + "\\RightDownVectorBar": "⥕", + "\\DownLeftVectorBar": "⥖", + "\\DownRightVectorBar": "⥗", + "\\LeftUpVectorBar": "⥘", + "\\LeftDownVectorBar": "⥙", + "\\LeftTeeVector": "⥚", + "\\RightTeeVector": "⥛", + "\\RightUpTeeVector": "⥜", + "\\RightDownTeeVector": "⥝", + "\\DownLeftTeeVector": "⥞", + "\\DownRightTeeVector": "⥟", + "\\LeftUpTeeVector": "⥠", + "\\LeftDownTeeVector": "⥡", + "\\leftleftharpoons": "⥢", + "\\upupharpoons": "⥣", + "\\rightrightharpoons": "⥤", + "\\downdownharpoons": "⥥", + "\\leftrightharpoonsup": "⥦", + "\\leftrightharpoonsdown": "⥧", + "\\rightleftharpoonsup": "⥨", + "\\rightleftharpoonsdown": "⥩", + "\\leftbarharpoon": "⥪", + "\\barleftharpoon": "⥫", + "\\rightbarharpoon": "⥬", + "\\barrightharpoon": "⥭", + "\\UpEquilibrium": "⥮", + "\\ReverseUpEquilibrium": "⥯", + "\\RoundImplies": "⥰", + "\\equalrightarrow": "⥱", + "\\similarrightarrow": "⥲", + "\\leftarrowsimilar": "⥳", + "\\rightarrowsimilar": "⥴", + "\\rightarrowapprox": "⥵", + "\\ltlarr": "⥶", + "\\leftarrowless": "⥷", + "\\gtrarr": "⥸", + "\\subrarr": "⥹", + "\\leftarrowsubset": "⥺", + "\\suplarr": "⥻", + "\\upfishtail": "⥾", + "\\downfishtail": "⥿", + "\\Elztfnc": "⦀", + "\\spot": "⦁", + "\\typecolon": "⦂", + "\\lBrace": "⦃", + "\\rBrace": "⦄", + "\\Elroang": "⦆", + "\\limg": "⦇", + "\\rimg": "⦈", + "\\lblot": "⦉", + "\\rblot": "⦊", + "\\lbrackubar": "⦋", + "\\rbrackubar": "⦌", + "\\lbrackultick": "⦍", + "\\rbracklrtick": "⦎", + "\\lbracklltick": "⦏", + "\\rbrackurtick": "⦐", + "\\langledot": "⦑", + "\\rangledot": "⦒", + "<\\kern-0.58em(": "⦓", + "\\Lparengtr": "⦕", + "\\Rparenless": "⦖", + "\\lblkbrbrak": "⦗", + "\\rblkbrbrak": "⦘", + "\\Elzddfnc": "⦙", + "\\vzigzag": "⦚", + "\\measuredangleleft": "⦛", + "\\Angle": "⦜", + "\\rightanglemdot": "⦝", + "\\angles": "⦞", + "\\angdnr": "⦟", + "\\Elzlpargt": "⦠", + "\\sphericalangleup": "⦡", + "\\turnangle": "⦢", + "\\revangle": "⦣", + "\\angleubar": "⦤", + "\\revangleubar": "⦥", + "\\wideangledown": "⦦", + "\\wideangleup": "⦧", + "\\measanglerutone": "⦨", + "\\measanglelutonw": "⦩", + "\\measanglerdtose": "⦪", + "\\measangleldtosw": "⦫", + "\\measangleurtone": "⦬", + "\\measangleultonw": "⦭", + "\\measangledrtose": "⦮", + "\\measangledltosw": "⦯", + "\\revemptyset": "⦰", + "\\emptysetobar": "⦱", + "\\emptysetocirc": "⦲", + "\\emptysetoarr": "⦳", + "\\emptysetoarrl": "⦴", + "\\circledparallel": "⦷", + "\\circledbslash": "⦸", + "\\operp": "⦹", + "\\obot": "⦺", + "\\olcross": "⦻", + "\\odotslashdot": "⦼", + "\\uparrowoncircle": "⦽", + "\\circledwhitebullet": "⦾", + "\\circledbullet": "⦿", + "\\circledless": "⧀", + "\\circledgtr": "⧁", + "\\cirscir": "⧂", + "\\cirE": "⧃", + "\\boxslash": "⧄", + "\\boxbslash": "⧅", + "\\boxast": "⧆", + "\\boxcircle": "⧇", + "\\boxbox": "⧈", + "\\boxonbox": "⧉", + "\\ElzLap": "⧊", + "\\Elzdefas": "⧋", + "\\triangles": "⧌", + "\\triangleserifs": "⧍", + "\\rtriltri": "⧎", + "\\LeftTriangleBar": "⧏", + "\\NotLeftTriangleBar": "⧏̸", + "\\RightTriangleBar": "⧐", + "\\NotRightTriangleBar": "⧐̸", + "\\lfbowtie": "⧑", + "\\rfbowtie": "⧒", + "\\fbowtie": "⧓", + "\\lftimes": "⧔", + "\\rftimes": "⧕", + "\\hourglass": "⧖", + "\\blackhourglass": "⧗", + "\\lvzigzag": "⧘", + "\\rvzigzag": "⧙", + "\\Lvzigzag": "⧚", + "\\Rvzigzag": "⧛", + "\\tieinfty": "⧝", + "\\nvinfty": "⧞", + "\\multimapboth": "⧟", + "\\laplac": "⧠", + "\\lrtriangleeq": "⧡", + "\\shuffle": "⧢", + "\\eparsl": "⧣", + "\\smeparsl": "⧤", + "\\eqvparsl": "⧥", + "\\gleichstark": "⧦", + "\\thermod": "⧧", + "\\downtriangleleftblack": "⧨", + "\\downtrianglerightblack": "⧩", + "\\blackdiamonddownarrow": "⧪", + "\\blacklozenge": "⧫", + "\\circledownarrow": "⧬", + "\\blackcircledownarrow": "⧭", + "\\errbarsquare": "⧮", + "\\errbarblacksquare": "⧯", + "\\errbardiamond": "⧰", + "\\errbarblackdiamond": "⧱", + "\\errbarcircle": "⧲", + "\\errbarblackcircle": "⧳", + "\\RuleDelayed": "⧴", + "\\dsol": "⧶", + "\\rsolbar": "⧷", + "\\xsol": "⧸", + "\\zhide": "⧹", + "\\doubleplus": "⧺", + "\\tripleplus": "⧻", + "\\lcurvyangle": "⧼", + "\\rcurvyangle": "⧽", + "\\tplus": "⧾", + "\\tminus": "⧿", + "\\bigodot": "⨀", + "\\bigoplus": "⨁", + "\\bigotimes": "⨂", + "\\bigcupdot": "⨃", + "\\Elxuplus": "⨄", + "\\ElzThr": "⨅", + "\\Elxsqcup": "⨆", + "\\ElzInf": "⨇", + "\\ElzSup": "⨈", + "\\varprod": "⨉", + "\\modtwosum": "⨊", + "\\sumint": "⨋", + "\\iiiint": "⨌", + "\\ElzCint": "⨍", + "\\intBar": "⨎", + "\\clockoint": "⨏", + "\\awint": "⨑", + "\\rppolint": "⨒", + "\\scpolint": "⨓", + "\\npolint": "⨔", + "\\pointint": "⨕", + "\\sqrint": "⨖", + "\\intlarhk": "⨗", + "\\intx": "⨘", + "\\intcap": "⨙", + "\\intcup": "⨚", + "\\upint": "⨛", + "\\lowint": "⨜", + "\\Join": "⨝", + "\\bigtriangleleft": "⨞", + "\\zcmp": "⨟", + "\\zpipe": "⨠", + "\\zproject": "⨡", + "\\ringplus": "⨢", + "\\plushat": "⨣", + "\\simplus": "⨤", + "\\plussim": "⨦", + "\\plussubtwo": "⨧", + "\\plustrif": "⨨", + "\\commaminus": "⨩", + "\\minusfdots": "⨫", + "\\minusrdots": "⨬", + "\\ElzTimes": "⨯", + "\\dottimes": "⨰", + "\\timesbar": "⨱", + "\\btimes": "⨲", + "\\smashtimes": "⨳", + "\\otimeshat": "⨶", + "\\Otimes": "⨷", + "\\odiv": "⨸", + "\\triangleplus": "⨹", + "\\triangleminus": "⨺", + "\\triangletimes": "⨻", + "\\intprodr": "⨽", + "\\fcmp": "⨾", + "\\amalg": "⨿", + "\\capdot": "⩀", + "\\uminus": "⩁", + "\\barcup": "⩂", + "\\barcap": "⩃", + "\\capwedge": "⩄", + "\\cupvee": "⩅", + "\\cupovercap": "⩆", + "\\capovercup": "⩇", + "\\cupbarcap": "⩈", + "\\capbarcup": "⩉", + "\\twocups": "⩊", + "\\twocaps": "⩋", + "\\closedvarcup": "⩌", + "\\closedvarcap": "⩍", + "\\Sqcap": "⩎", + "\\Sqcup": "⩏", + "\\closedvarcupsmashprod": "⩐", + "\\wedgeodot": "⩑", + "\\veeodot": "⩒", + "\\ElzAnd": "⩓", + "\\ElzOr": "⩔", + "\\ElOr": "⩖", + "\\bigslopedvee": "⩗", + "\\bigslopedwedge": "⩘", + "\\veeonwedge": "⩙", + "\\wedgemidvert": "⩚", + "\\veemidvert": "⩛", + "\\midbarwedge": "⩜", + "\\midbarvee": "⩝", + "\\Elzminhat": "⩟", + "\\wedgedoublebar": "⩠", + "\\varveebar": "⩡", + "\\doublebarvee": "⩢", + "\\dsub": "⩤", + "\\rsub": "⩥", + "\\eqdot": "⩦", + "\\dotequiv": "⩧", + "\\equivVert": "⩨", + "\\equivVvert": "⩩", + "\\dotsim": "⩪", + "\\simrdots": "⩫", + "\\simminussim": "⩬", + "\\congdot": "⩭", + "\\stackrel{*}{=}": "⩮", + "\\hatapprox": "⩯", + "\\approxeqq": "⩰", + "\\eqqplus": "⩱", + "\\pluseqq": "⩲", + "\\eqqsim": "⩳", + "\\Coloneqq": "⩴", + "\\Equal": "⩵", + "\\Same": "⩶", + "\\ddotseq": "⩷", + "\\equivDD": "⩸", + "\\ltcir": "⩹", + "\\gtcir": "⩺", + "\\ltquest": "⩻", + "\\gtquest": "⩼", + "\\leqslant": "⩽", + "\\nleqslant": "⩽̸", + "\\geqslant": "⩾", + "\\ngeqslant": "⩾̸", + "\\lesdot": "⩿", + "\\gesdot": "⪀", + "\\lesdoto": "⪁", + "\\gesdoto": "⪂", + "\\lesdotor": "⪃", + "\\gesdotol": "⪄", + "\\lessapprox": "⪅", + "\\gtrapprox": "⪆", + "\\lneq": "⪇", + "\\gneq": "⪈", + "\\lnapprox": "⪉", + "\\gnapprox": "⪊", + "\\lesseqqgtr": "⪋", + "\\gtreqqless": "⪌", + "\\lsime": "⪍", + "\\gsime": "⪎", + "\\lsimg": "⪏", + "\\gsiml": "⪐", + "\\lgE": "⪑", + "\\glE": "⪒", + "\\lesges": "⪓", + "\\gesles": "⪔", + "\\eqslantless": "⪕", + "\\eqslantgtr": "⪖", + "\\elsdot": "⪗", + "\\egsdot": "⪘", + "\\eqqless": "⪙", + "\\eqqgtr": "⪚", + "\\eqqslantless": "⪛", + "\\eqqslantgtr": "⪜", + "\\Pisymbol{ppi020}{117}": "⪝", + "\\Pisymbol{ppi020}{105}": "⪞", + "\\simlE": "⪟", + "\\simgE": "⪠", + "\\NestedLessLess": "⪡", + "\\NotNestedLessLess": "⪡̸", + "\\NestedGreaterGreater": "⪢", + "\\NotNestedGreaterGreater": "⪢̸", + "\\partialmeetcontraction": "⪣", + "\\glj": "⪤", + "\\gla": "⪥", + "\\leftslice": "⪦", + "\\rightslice": "⪧", + "\\lescc": "⪨", + "\\gescc": "⪩", + "\\smt": "⪪", + "\\lat": "⪫", + "\\smte": "⪬", + "\\late": "⪭", + "\\bumpeqq": "⪮", + "\\preceq": "⪯", + "\\not\\preceq": "⪯̸", + "\\succeq": "⪰", + "\\not\\succeq": "⪰̸", + "\\precneq": "⪱", + "\\succneq": "⪲", + "\\preceqq": "⪳", + "\\succeqq": "⪴", + "\\precneqq": "⪵", + "\\succneqq": "⪶", + "\\precapprox": "⪷", + "\\succapprox": "⪸", + "\\precnapprox": "⪹", + "\\succnapprox": "⪺", + "\\llcurly": "⪻", + "\\ggcurly": "⪼", + "\\subsetdot": "⪽", + "\\supsetdot": "⪾", + "\\subsetplus": "⪿", + "\\supsetplus": "⫀", + "\\submult": "⫁", + "\\supmult": "⫂", + "\\subedot": "⫃", + "\\supedot": "⫄", + "\\subseteqq": "⫅", + "\\nsubseteqq": "⫅̸", + "\\supseteqq": "⫆", + "\\nsupseteqq": "⫆̸", + "\\subsim": "⫇", + "\\supsim": "⫈", + "\\subsetapprox": "⫉", + "\\supsetapprox": "⫊", + "\\subsetneqq": "⫋", + "\\supsetneqq": "⫌", + "\\lsqhook": "⫍", + "\\rsqhook": "⫎", + "\\csub": "⫏", + "\\csup": "⫐", + "\\csube": "⫑", + "\\csupe": "⫒", + "\\subsup": "⫓", + "\\supsub": "⫔", + "\\subsub": "⫕", + "\\supsup": "⫖", + "\\suphsub": "⫗", + "\\supdsub": "⫘", + "\\forkv": "⫙", + "\\topfork": "⫚", + "\\mlcp": "⫛", + "\\forks": "⫝̸", + "\\forksnot": "⫝", + "\\shortlefttack": "⫞", + "\\shortdowntack": "⫟", + "\\shortuptack": "⫠", + "\\perps": "⫡", + "\\vDdash": "⫢", + "\\dashV": "⫣", + "\\Dashv": "⫤", + "\\DashV": "⫥", + "\\varVdash": "⫦", + "\\Barv": "⫧", + "\\vBar": "⫨", + "\\vBarv": "⫩", + "\\Top": "⫪", + "\\Not": "⫬", + "\\bNot": "⫭", + "\\revnmid": "⫮", + "\\cirmid": "⫯", + "\\midcir": "⫰", + "\\topcir": "⫱", + "\\nhpar": "⫲", + "\\parsim": "⫳", + "\\interleave": "⫴", + "\\nhVvert": "⫵", + "\\Elztdcol": "⫶", + "\\lllnest": "⫷", + "\\gggnest": "⫸", + "\\leqqslant": "⫹", + "\\geqqslant": "⫺", + "\\trslash": "⫻", + "\\biginterleave": "⫼", + "{{/}\\!\\!{/}}": "⫽", + "{\\rlap{\\textbackslash}{{/}\\!\\!{/}}}": "⫽⃥", + "\\talloblong": "⫾", + "\\bigtalloblong": "⫿", + "\\squaretopblack": "⬒", + "\\squarebotblack": "⬓", + "\\squareurblack": "⬔", + "\\squarellblack": "⬕", + "\\diamondleftblack": "⬖", + "\\diamondrightblack": "⬗", + "\\diamondtopblack": "⬘", + "\\diamondbotblack": "⬙", + "\\dottedsquare": "⬚", + "\\blacksquare": "⬛", + "\\vysmblksquare": "⬝", + "\\vysmwhtsquare": "⬞", + "\\pentagonblack": "⬟", + "\\pentagon": "⬠", + "\\varhexagon": "⬡", + "\\varhexagonblack": "⬢", + "\\hexagonblack": "⬣", + "\\lgblkcircle": "⬤", + "\\mdblkdiamond": "⬥", + "\\mdwhtdiamond": "⬦", + "\\mdblklozenge": "⬧", + "\\mdwhtlozenge": "⬨", + "\\smblkdiamond": "⬩", + "\\smblklozenge": "⬪", + "\\smwhtlozenge": "⬫", + "\\blkhorzoval": "⬬", + "\\whthorzoval": "⬭", + "\\blkvertoval": "⬮", + "\\whtvertoval": "⬯", + "\\circleonleftarrow": "⬰", + "\\leftthreearrows": "⬱", + "\\leftarrowonoplus": "⬲", + "\\longleftsquigarrow": "⬳", + "\\nvtwoheadleftarrow": "⬴", + "\\nVtwoheadleftarrow": "⬵", + "\\twoheadmapsfrom": "⬶", + "\\twoheadleftdbkarrow": "⬷", + "\\leftdotarrow": "⬸", + "\\nvleftarrowtail": "⬹", + "\\nVleftarrowtail": "⬺", + "\\twoheadleftarrowtail": "⬻", + "\\nvtwoheadleftarrowtail": "⬼", + "\\nVtwoheadleftarrowtail": "⬽", + "\\leftarrowx": "⬾", + "\\leftcurvedarrow": "⬿", + "\\equalleftarrow": "⭀", + "\\bsimilarleftarrow": "⭁", + "\\leftarrowbackapprox": "⭂", + "\\rightarrowgtr": "⭃", + "\\rightarrowsupset": "⭄", + "\\LLeftarrow": "⭅", + "\\RRightarrow": "⭆", + "\\bsimilarrightarrow": "⭇", + "\\rightarrowbackapprox": "⭈", + "\\similarleftarrow": "⭉", + "\\leftarrowapprox": "⭊", + "\\leftarrowbsimilar": "⭋", + "\\rightarrowbsimilar": "⭌", + "\\medwhitestar": "⭐", + "\\medblackstar": "⭑", + "\\smwhitestar": "⭒", + "\\rightpentagonblack": "⭓", + "\\rightpentagon": "⭔", + "\\postalmark": "〒", + "\\lbrbrak": "〔", + "\\rbrbrak": "〕", + "\\openbracketleft": "〚", + "\\openbracketright": "〛", + "\\hzigzag": "〰", + "\\dbend": "�", + "\\mathbf{A}": "𝐀", + "\\mathbf{B}": "𝐁", + "\\mathbf{C}": "𝐂", + "\\mathbf{D}": "𝐃", + "\\mathbf{E}": "𝐄", + "\\mathbf{F}": "𝐅", + "\\mathbf{G}": "𝐆", + "\\mathbf{H}": "𝐇", + "\\mathbf{I}": "𝐈", + "\\mathbf{J}": "𝐉", + "\\mathbf{K}": "𝐊", + "\\mathbf{L}": "𝐋", + "\\mathbf{M}": "𝐌", + "\\mathbf{N}": "𝐍", + "\\mathbf{O}": "𝐎", + "\\mathbf{P}": "𝐏", + "\\mathbf{Q}": "𝐐", + "\\mathbf{R}": "𝐑", + "\\mathbf{S}": "𝐒", + "\\mathbf{T}": "𝐓", + "\\mathbf{U}": "𝐔", + "\\mathbf{V}": "𝐕", + "\\mathbf{W}": "𝐖", + "\\mathbf{X}": "𝐗", + "\\mathbf{Y}": "𝐘", + "\\mathbf{Z}": "𝐙", + "\\mathbf{a}": "𝐚", + "\\mathbf{b}": "𝐛", + "\\mathbf{c}": "𝐜", + "\\mathbf{d}": "𝐝", + "\\mathbf{e}": "𝐞", + "\\mathbf{f}": "𝐟", + "\\mathbf{g}": "𝐠", + "\\mathbf{h}": "𝐡", + "\\mathbf{i}": "𝐢", + "\\mathbf{j}": "𝐣", + "\\mathbf{k}": "𝐤", + "\\mathbf{l}": "𝐥", + "\\mathbf{m}": "𝐦", + "\\mathbf{n}": "𝐧", + "\\mathbf{o}": "𝐨", + "\\mathbf{p}": "𝐩", + "\\mathbf{q}": "𝐪", + "\\mathbf{r}": "𝐫", + "\\mathbf{s}": "𝐬", + "\\mathbf{t}": "𝐭", + "\\mathbf{u}": "𝐮", + "\\mathbf{v}": "𝐯", + "\\mathbf{w}": "𝐰", + "\\mathbf{x}": "𝐱", + "\\mathbf{y}": "𝐲", + "\\mathbf{z}": "𝐳", + "\\mathsl{A}": "𝐴", + "\\mathsl{B}": "𝐵", + "\\mathsl{C}": "𝐶", + "\\mathsl{D}": "𝐷", + "\\mathsl{E}": "𝐸", + "\\mathsl{F}": "𝐹", + "\\mathsl{G}": "𝐺", + "\\mathsl{H}": "𝐻", + "\\mathsl{I}": "𝐼", + "\\mathsl{J}": "𝐽", + "\\mathsl{K}": "𝐾", + "\\mathsl{L}": "𝐿", + "\\mathsl{M}": "𝑀", + "\\mathsl{N}": "𝑁", + "\\mathsl{O}": "𝑂", + "\\mathsl{P}": "𝑃", + "\\mathsl{Q}": "𝑄", + "\\mathsl{R}": "𝑅", + "\\mathsl{S}": "𝑆", + "\\mathsl{T}": "𝑇", + "\\mathsl{U}": "𝑈", + "\\mathsl{V}": "𝑉", + "\\mathsl{W}": "𝑊", + "\\mathsl{X}": "𝑋", + "\\mathsl{Y}": "𝑌", + "\\mathsl{Z}": "𝑍", + "\\mathsl{a}": "𝑎", + "\\mathsl{b}": "𝑏", + "\\mathsl{c}": "𝑐", + "\\mathsl{d}": "𝑑", + "\\mathsl{e}": "𝑒", + "\\mathsl{f}": "𝑓", + "\\mathsl{g}": "𝑔", + "\\mathsl{i}": "𝑖", + "\\mathsl{j}": "𝑗", + "\\mathsl{k}": "𝑘", + "\\mathsl{l}": "𝑙", + "\\mathsl{m}": "𝑚", + "\\mathsl{n}": "𝑛", + "\\mathsl{o}": "𝑜", + "\\mathsl{p}": "𝑝", + "\\mathsl{q}": "𝑞", + "\\mathsl{r}": "𝑟", + "\\mathsl{s}": "𝑠", + "\\mathsl{t}": "𝑡", + "\\mathsl{u}": "𝑢", + "\\mathsl{v}": "𝑣", + "\\mathsl{w}": "𝑤", + "\\mathsl{x}": "𝑥", + "\\mathsl{y}": "𝑦", + "\\mathsl{z}": "𝑧", + "\\mathbit{A}": "𝑨", + "\\mathbit{B}": "𝑩", + "\\mathbit{C}": "𝑪", + "\\mathbit{D}": "𝑫", + "\\mathbit{E}": "𝑬", + "\\mathbit{F}": "𝑭", + "\\mathbit{G}": "𝑮", + "\\mathbit{H}": "𝑯", + "\\mathbit{I}": "𝑰", + "\\mathbit{J}": "𝑱", + "\\mathbit{K}": "𝑲", + "\\mathbit{L}": "𝑳", + "\\mathbit{M}": "𝑴", + "\\mathbit{N}": "𝑵", + "\\mathbit{O}": "𝑶", + "\\mathbit{P}": "𝑷", + "\\mathbit{Q}": "𝑸", + "\\mathbit{R}": "𝑹", + "\\mathbit{S}": "𝑺", + "\\mathbit{T}": "𝑻", + "\\mathbit{U}": "𝑼", + "\\mathbit{V}": "𝑽", + "\\mathbit{W}": "𝑾", + "\\mathbit{X}": "𝑿", + "\\mathbit{Y}": "𝒀", + "\\mathbit{Z}": "𝒁", + "\\mathbit{a}": "𝒂", + "\\mathbit{b}": "𝒃", + "\\mathbit{c}": "𝒄", + "\\mathbit{d}": "𝒅", + "\\mathbit{e}": "𝒆", + "\\mathbit{f}": "𝒇", + "\\mathbit{g}": "𝒈", + "\\mathbit{h}": "𝒉", + "\\mathbit{i}": "𝒊", + "\\mathbit{j}": "𝒋", + "\\mathbit{k}": "𝒌", + "\\mathbit{l}": "𝒍", + "\\mathbit{m}": "𝒎", + "\\mathbit{n}": "𝒏", + "\\mathbit{o}": "𝒐", + "\\mathbit{p}": "𝒑", + "\\mathbit{q}": "𝒒", + "\\mathbit{r}": "𝒓", + "\\mathbit{s}": "𝒔", + "\\mathbit{t}": "𝒕", + "\\mathbit{u}": "𝒖", + "\\mathbit{v}": "𝒗", + "\\mathbit{w}": "𝒘", + "\\mathbit{x}": "𝒙", + "\\mathbit{y}": "𝒚", + "\\mathbit{z}": "𝒛", + "\\mathscr{A}": "𝒜", + "\\mathscr{C}": "𝒞", + "\\mathscr{D}": "𝒟", + "\\mathscr{G}": "𝒢", + "\\mathscr{J}": "𝒥", + "\\mathscr{K}": "𝒦", + "\\mathscr{N}": "𝒩", + "\\mathscr{O}": "𝒪", + "\\mathscr{P}": "𝒫", + "\\mathscr{Q}": "𝒬", + "\\mathscr{S}": "𝒮", + "\\mathscr{T}": "𝒯", + "\\mathscr{U}": "𝒰", + "\\mathscr{V}": "𝒱", + "\\mathscr{W}": "𝒲", + "\\mathscr{X}": "𝒳", + "\\mathscr{Y}": "𝒴", + "\\mathscr{Z}": "𝒵", + "\\mathscr{a}": "𝒶", + "\\mathscr{b}": "𝒷", + "\\mathscr{c}": "𝒸", + "\\mathscr{d}": "𝒹", + "\\mathscr{f}": "𝒻", + "\\mathscr{h}": "𝒽", + "\\mathscr{i}": "𝒾", + "\\mathscr{j}": "𝒿", + "\\mathscr{k}": "𝓀", + "\\mathscr{m}": "𝓂", + "\\mathscr{n}": "𝓃", + "\\mathscr{p}": "𝓅", + "\\mathscr{q}": "𝓆", + "\\mathscr{r}": "𝓇", + "\\mathscr{s}": "𝓈", + "\\mathscr{t}": "𝓉", + "\\mathscr{u}": "𝓊", + "\\mathscr{v}": "𝓋", + "\\mathscr{w}": "𝓌", + "\\mathscr{x}": "𝓍", + "\\mathscr{y}": "𝓎", + "\\mathscr{z}": "𝓏", + "\\mathmit{A}": "𝓐", + "\\mathmit{B}": "𝓑", + "\\mathmit{C}": "𝓒", + "\\mathmit{D}": "𝓓", + "\\mathmit{E}": "𝓔", + "\\mathmit{F}": "𝓕", + "\\mathmit{G}": "𝓖", + "\\mathmit{H}": "𝓗", + "\\mathmit{I}": "𝓘", + "\\mathmit{J}": "𝓙", + "\\mathmit{K}": "𝓚", + "\\mathmit{L}": "𝓛", + "\\mathmit{M}": "𝓜", + "\\mathmit{N}": "𝓝", + "\\mathmit{O}": "𝓞", + "\\mathmit{P}": "𝓟", + "\\mathmit{Q}": "𝓠", + "\\mathmit{R}": "𝓡", + "\\mathmit{S}": "𝓢", + "\\mathmit{T}": "𝓣", + "\\mathmit{U}": "𝓤", + "\\mathmit{V}": "𝓥", + "\\mathmit{W}": "𝓦", + "\\mathmit{X}": "𝓧", + "\\mathmit{Y}": "𝓨", + "\\mathmit{Z}": "𝓩", + "\\mathmit{a}": "𝓪", + "\\mathmit{b}": "𝓫", + "\\mathmit{c}": "𝓬", + "\\mathmit{d}": "𝓭", + "\\mathmit{e}": "𝓮", + "\\mathmit{f}": "𝓯", + "\\mathmit{g}": "𝓰", + "\\mathmit{h}": "𝓱", + "\\mathmit{i}": "𝓲", + "\\mathmit{j}": "𝓳", + "\\mathmit{k}": "𝓴", + "\\mathmit{l}": "𝓵", + "\\mathmit{m}": "𝓶", + "\\mathmit{n}": "𝓷", + "\\mathmit{o}": "𝓸", + "\\mathmit{p}": "𝓹", + "\\mathmit{q}": "𝓺", + "\\mathmit{r}": "𝓻", + "\\mathmit{s}": "𝓼", + "\\mathmit{t}": "𝓽", + "\\mathmit{u}": "𝓾", + "\\mathmit{v}": "𝓿", + "\\mathmit{w}": "𝔀", + "\\mathmit{x}": "𝔁", + "\\mathmit{y}": "𝔂", + "\\mathmit{z}": "𝔃", + "\\mathfrak{A}": "𝔄", + "\\mathfrak{B}": "𝔅", + "\\mathfrak{D}": "𝔇", + "\\mathfrak{E}": "𝔈", + "\\mathfrak{F}": "𝔉", + "\\mathfrak{G}": "𝔊", + "\\mathfrak{J}": "𝔍", + "\\mathfrak{K}": "𝔎", + "\\mathfrak{L}": "𝔏", + "\\mathfrak{M}": "𝔐", + "\\mathfrak{N}": "𝔑", + "\\mathfrak{O}": "𝔒", + "\\mathfrak{P}": "𝔓", + "\\mathfrak{Q}": "𝔔", + "\\mathfrak{S}": "𝔖", + "\\mathfrak{T}": "𝔗", + "\\mathfrak{U}": "𝔘", + "\\mathfrak{V}": "𝔙", + "\\mathfrak{W}": "𝔚", + "\\mathfrak{X}": "𝔛", + "\\mathfrak{Y}": "𝔜", + "\\mathfrak{a}": "𝔞", + "\\mathfrak{b}": "𝔟", + "\\mathfrak{c}": "𝔠", + "\\mathfrak{d}": "𝔡", + "\\mathfrak{e}": "𝔢", + "\\mathfrak{f}": "𝔣", + "\\mathfrak{g}": "𝔤", + "\\mathfrak{h}": "𝔥", + "\\mathfrak{i}": "𝔦", + "\\mathfrak{j}": "𝔧", + "\\mathfrak{k}": "𝔨", + "\\mathfrak{l}": "𝔩", + "\\mathfrak{m}": "𝔪", + "\\mathfrak{n}": "𝔫", + "\\mathfrak{o}": "𝔬", + "\\mathfrak{p}": "𝔭", + "\\mathfrak{q}": "𝔮", + "\\mathfrak{r}": "𝔯", + "\\mathfrak{s}": "𝔰", + "\\mathfrak{t}": "𝔱", + "\\mathfrak{u}": "𝔲", + "\\mathfrak{v}": "𝔳", + "\\mathfrak{w}": "𝔴", + "\\mathfrak{x}": "𝔵", + "\\mathfrak{y}": "𝔶", + "\\mathfrak{z}": "𝔷", + "\\mathbb{A}": "𝔸", + "\\mathbb{B}": "𝔹", + "\\mathbb{D}": "𝔻", + "\\mathbb{E}": "𝔼", + "\\mathbb{F}": "𝔽", + "\\mathbb{G}": "𝔾", + "\\mathbb{I}": "𝕀", + "\\mathbb{J}": "𝕁", + "\\mathbb{K}": "𝕂", + "\\mathbb{L}": "𝕃", + "\\mathbb{M}": "𝕄", + "\\mathbb{O}": "𝕆", + "\\mathbb{S}": "𝕊", + "\\mathbb{T}": "𝕋", + "\\mathbb{U}": "𝕌", + "\\mathbb{V}": "𝕍", + "\\mathbb{W}": "𝕎", + "\\mathbb{X}": "𝕏", + "\\mathbb{Y}": "𝕐", + "\\mathbb{a}": "𝕒", + "\\mathbb{b}": "𝕓", + "\\mathbb{c}": "𝕔", + "\\mathbb{d}": "𝕕", + "\\mathbb{e}": "𝕖", + "\\mathbb{f}": "𝕗", + "\\mathbb{g}": "𝕘", + "\\mathbb{h}": "𝕙", + "\\mathbb{i}": "𝕚", + "\\mathbb{j}": "𝕛", + "\\mathbb{k}": "𝕜", + "\\mathbb{l}": "𝕝", + "\\mathbb{m}": "𝕞", + "\\mathbb{n}": "𝕟", + "\\mathbb{o}": "𝕠", + "\\mathbb{p}": "𝕡", + "\\mathbb{q}": "𝕢", + "\\mathbb{r}": "𝕣", + "\\mathbb{s}": "𝕤", + "\\mathbb{t}": "𝕥", + "\\mathbb{u}": "𝕦", + "\\mathbb{v}": "𝕧", + "\\mathbb{w}": "𝕨", + "\\mathbb{x}": "𝕩", + "\\mathbb{y}": "𝕪", + "\\mathbb{z}": "𝕫", + "\\mathslbb{A}": "𝕬", + "\\mathslbb{B}": "𝕭", + "\\mathslbb{C}": "𝕮", + "\\mathslbb{D}": "𝕯", + "\\mathslbb{E}": "𝕰", + "\\mathslbb{F}": "𝕱", + "\\mathslbb{G}": "𝕲", + "\\mathslbb{H}": "𝕳", + "\\mathslbb{I}": "𝕴", + "\\mathslbb{J}": "𝕵", + "\\mathslbb{K}": "𝕶", + "\\mathslbb{L}": "𝕷", + "\\mathslbb{M}": "𝕸", + "\\mathslbb{N}": "𝕹", + "\\mathslbb{O}": "𝕺", + "\\mathslbb{P}": "𝕻", + "\\mathslbb{Q}": "𝕼", + "\\mathslbb{R}": "𝕽", + "\\mathslbb{S}": "𝕾", + "\\mathslbb{T}": "𝕿", + "\\mathslbb{U}": "𝖀", + "\\mathslbb{V}": "𝖁", + "\\mathslbb{W}": "𝖂", + "\\mathslbb{X}": "𝖃", + "\\mathslbb{Y}": "𝖄", + "\\mathslbb{Z}": "𝖅", + "\\mathslbb{a}": "𝖆", + "\\mathslbb{b}": "𝖇", + "\\mathslbb{c}": "𝖈", + "\\mathslbb{d}": "𝖉", + "\\mathslbb{e}": "𝖊", + "\\mathslbb{f}": "𝖋", + "\\mathslbb{g}": "𝖌", + "\\mathslbb{h}": "𝖍", + "\\mathslbb{i}": "𝖎", + "\\mathslbb{j}": "𝖏", + "\\mathslbb{k}": "𝖐", + "\\mathslbb{l}": "𝖑", + "\\mathslbb{m}": "𝖒", + "\\mathslbb{n}": "𝖓", + "\\mathslbb{o}": "𝖔", + "\\mathslbb{p}": "𝖕", + "\\mathslbb{q}": "𝖖", + "\\mathslbb{r}": "𝖗", + "\\mathslbb{s}": "𝖘", + "\\mathslbb{t}": "𝖙", + "\\mathslbb{u}": "𝖚", + "\\mathslbb{v}": "𝖛", + "\\mathslbb{w}": "𝖜", + "\\mathslbb{x}": "𝖝", + "\\mathslbb{y}": "𝖞", + "\\mathslbb{z}": "𝖟", + "\\mathsf{A}": "𝖠", + "\\mathsf{B}": "𝖡", + "\\mathsf{C}": "𝖢", + "\\mathsf{D}": "𝖣", + "\\mathsf{E}": "𝖤", + "\\mathsf{F}": "𝖥", + "\\mathsf{G}": "𝖦", + "\\mathsf{H}": "𝖧", + "\\mathsf{I}": "𝖨", + "\\mathsf{J}": "𝖩", + "\\mathsf{K}": "𝖪", + "\\mathsf{L}": "𝖫", + "\\mathsf{M}": "𝖬", + "\\mathsf{N}": "𝖭", + "\\mathsf{O}": "𝖮", + "\\mathsf{P}": "𝖯", + "\\mathsf{Q}": "𝖰", + "\\mathsf{R}": "𝖱", + "\\mathsf{S}": "𝖲", + "\\mathsf{T}": "𝖳", + "\\mathsf{U}": "𝖴", + "\\mathsf{V}": "𝖵", + "\\mathsf{W}": "𝖶", + "\\mathsf{X}": "𝖷", + "\\mathsf{Y}": "𝖸", + "\\mathsf{Z}": "𝖹", + "\\mathsf{a}": "𝖺", + "\\mathsf{b}": "𝖻", + "\\mathsf{c}": "𝖼", + "\\mathsf{d}": "𝖽", + "\\mathsf{e}": "𝖾", + "\\mathsf{f}": "𝖿", + "\\mathsf{g}": "𝗀", + "\\mathsf{h}": "𝗁", + "\\mathsf{i}": "𝗂", + "\\mathsf{j}": "𝗃", + "\\mathsf{k}": "𝗄", + "\\mathsf{l}": "𝗅", + "\\mathsf{m}": "𝗆", + "\\mathsf{n}": "𝗇", + "\\mathsf{o}": "𝗈", + "\\mathsf{p}": "𝗉", + "\\mathsf{q}": "𝗊", + "\\mathsf{r}": "𝗋", + "\\mathsf{s}": "𝗌", + "\\mathsf{t}": "𝗍", + "\\mathsf{u}": "𝗎", + "\\mathsf{v}": "𝗏", + "\\mathsf{w}": "𝗐", + "\\mathsf{x}": "𝗑", + "\\mathsf{y}": "𝗒", + "\\mathsf{z}": "𝗓", + "\\mathsfbf{A}": "𝗔", + "\\mathsfbf{B}": "𝗕", + "\\mathsfbf{C}": "𝗖", + "\\mathsfbf{D}": "𝗗", + "\\mathsfbf{E}": "𝗘", + "\\mathsfbf{F}": "𝗙", + "\\mathsfbf{G}": "𝗚", + "\\mathsfbf{H}": "𝗛", + "\\mathsfbf{I}": "𝗜", + "\\mathsfbf{J}": "𝗝", + "\\mathsfbf{K}": "𝗞", + "\\mathsfbf{L}": "𝗟", + "\\mathsfbf{M}": "𝗠", + "\\mathsfbf{N}": "𝗡", + "\\mathsfbf{O}": "𝗢", + "\\mathsfbf{P}": "𝗣", + "\\mathsfbf{Q}": "𝗤", + "\\mathsfbf{R}": "𝗥", + "\\mathsfbf{S}": "𝗦", + "\\mathsfbf{T}": "𝗧", + "\\mathsfbf{U}": "𝗨", + "\\mathsfbf{V}": "𝗩", + "\\mathsfbf{W}": "𝗪", + "\\mathsfbf{X}": "𝗫", + "\\mathsfbf{Y}": "𝗬", + "\\mathsfbf{Z}": "𝗭", + "\\mathsfbf{a}": "𝗮", + "\\mathsfbf{b}": "𝗯", + "\\mathsfbf{c}": "𝗰", + "\\mathsfbf{d}": "𝗱", + "\\mathsfbf{e}": "𝗲", + "\\mathsfbf{f}": "𝗳", + "\\mathsfbf{g}": "𝗴", + "\\mathsfbf{h}": "𝗵", + "\\mathsfbf{i}": "𝗶", + "\\mathsfbf{j}": "𝗷", + "\\mathsfbf{k}": "𝗸", + "\\mathsfbf{l}": "𝗹", + "\\mathsfbf{m}": "𝗺", + "\\mathsfbf{n}": "𝗻", + "\\mathsfbf{o}": "𝗼", + "\\mathsfbf{p}": "𝗽", + "\\mathsfbf{q}": "𝗾", + "\\mathsfbf{r}": "𝗿", + "\\mathsfbf{s}": "𝘀", + "\\mathsfbf{t}": "𝘁", + "\\mathsfbf{u}": "𝘂", + "\\mathsfbf{v}": "𝘃", + "\\mathsfbf{w}": "𝘄", + "\\mathsfbf{x}": "𝘅", + "\\mathsfbf{y}": "𝘆", + "\\mathsfbf{z}": "𝘇", + "\\mathsfsl{A}": "𝘈", + "\\mathsfsl{B}": "𝘉", + "\\mathsfsl{C}": "𝘊", + "\\mathsfsl{D}": "𝘋", + "\\mathsfsl{E}": "𝘌", + "\\mathsfsl{F}": "𝘍", + "\\mathsfsl{G}": "𝘎", + "\\mathsfsl{H}": "𝘏", + "\\mathsfsl{I}": "𝘐", + "\\mathsfsl{J}": "𝘑", + "\\mathsfsl{K}": "𝘒", + "\\mathsfsl{L}": "𝘓", + "\\mathsfsl{M}": "𝘔", + "\\mathsfsl{N}": "𝘕", + "\\mathsfsl{O}": "𝘖", + "\\mathsfsl{P}": "𝘗", + "\\mathsfsl{Q}": "𝘘", + "\\mathsfsl{R}": "𝘙", + "\\mathsfsl{S}": "𝘚", + "\\mathsfsl{T}": "𝘛", + "\\mathsfsl{U}": "𝘜", + "\\mathsfsl{V}": "𝘝", + "\\mathsfsl{W}": "𝘞", + "\\mathsfsl{X}": "𝘟", + "\\mathsfsl{Y}": "𝘠", + "\\mathsfsl{Z}": "𝘡", + "\\mathsfsl{a}": "𝘢", + "\\mathsfsl{b}": "𝘣", + "\\mathsfsl{c}": "𝘤", + "\\mathsfsl{d}": "𝘥", + "\\mathsfsl{e}": "𝘦", + "\\mathsfsl{f}": "𝘧", + "\\mathsfsl{g}": "𝘨", + "\\mathsfsl{h}": "𝘩", + "\\mathsfsl{i}": "𝘪", + "\\mathsfsl{j}": "𝘫", + "\\mathsfsl{k}": "𝘬", + "\\mathsfsl{l}": "𝘭", + "\\mathsfsl{m}": "𝘮", + "\\mathsfsl{n}": "𝘯", + "\\mathsfsl{o}": "𝘰", + "\\mathsfsl{p}": "𝘱", + "\\mathsfsl{q}": "𝘲", + "\\mathsfsl{r}": "𝘳", + "\\mathsfsl{s}": "𝘴", + "\\mathsfsl{t}": "𝘵", + "\\mathsfsl{u}": "𝘶", + "\\mathsfsl{v}": "𝘷", + "\\mathsfsl{w}": "𝘸", + "\\mathsfsl{x}": "𝘹", + "\\mathsfsl{y}": "𝘺", + "\\mathsfsl{z}": "𝘻", + "\\mathsfbfsl{A}": "𝘼", + "\\mathsfbfsl{B}": "𝘽", + "\\mathsfbfsl{C}": "𝘾", + "\\mathsfbfsl{D}": "𝘿", + "\\mathsfbfsl{E}": "𝙀", + "\\mathsfbfsl{F}": "𝙁", + "\\mathsfbfsl{G}": "𝙂", + "\\mathsfbfsl{H}": "𝙃", + "\\mathsfbfsl{I}": "𝙄", + "\\mathsfbfsl{J}": "𝙅", + "\\mathsfbfsl{K}": "𝙆", + "\\mathsfbfsl{L}": "𝙇", + "\\mathsfbfsl{M}": "𝙈", + "\\mathsfbfsl{N}": "𝙉", + "\\mathsfbfsl{O}": "𝙊", + "\\mathsfbfsl{P}": "𝙋", + "\\mathsfbfsl{Q}": "𝙌", + "\\mathsfbfsl{R}": "𝙍", + "\\mathsfbfsl{S}": "𝙎", + "\\mathsfbfsl{T}": "𝙏", + "\\mathsfbfsl{U}": "𝙐", + "\\mathsfbfsl{V}": "𝙑", + "\\mathsfbfsl{W}": "𝙒", + "\\mathsfbfsl{X}": "𝙓", + "\\mathsfbfsl{Y}": "𝙔", + "\\mathsfbfsl{Z}": "𝙕", + "\\mathsfbfsl{a}": "𝙖", + "\\mathsfbfsl{b}": "𝙗", + "\\mathsfbfsl{c}": "𝙘", + "\\mathsfbfsl{d}": "𝙙", + "\\mathsfbfsl{e}": "𝙚", + "\\mathsfbfsl{f}": "𝙛", + "\\mathsfbfsl{g}": "𝙜", + "\\mathsfbfsl{h}": "𝙝", + "\\mathsfbfsl{i}": "𝙞", + "\\mathsfbfsl{j}": "𝙟", + "\\mathsfbfsl{k}": "𝙠", + "\\mathsfbfsl{l}": "𝙡", + "\\mathsfbfsl{m}": "𝙢", + "\\mathsfbfsl{n}": "𝙣", + "\\mathsfbfsl{o}": "𝙤", + "\\mathsfbfsl{p}": "𝙥", + "\\mathsfbfsl{q}": "𝙦", + "\\mathsfbfsl{r}": "𝙧", + "\\mathsfbfsl{s}": "𝙨", + "\\mathsfbfsl{t}": "𝙩", + "\\mathsfbfsl{u}": "𝙪", + "\\mathsfbfsl{v}": "𝙫", + "\\mathsfbfsl{w}": "𝙬", + "\\mathsfbfsl{x}": "𝙭", + "\\mathsfbfsl{y}": "𝙮", + "\\mathsfbfsl{z}": "𝙯", + "\\mathtt{A}": "𝙰", + "\\mathtt{B}": "𝙱", + "\\mathtt{C}": "𝙲", + "\\mathtt{D}": "𝙳", + "\\mathtt{E}": "𝙴", + "\\mathtt{F}": "𝙵", + "\\mathtt{G}": "𝙶", + "\\mathtt{H}": "𝙷", + "\\mathtt{I}": "𝙸", + "\\mathtt{J}": "𝙹", + "\\mathtt{K}": "𝙺", + "\\mathtt{L}": "𝙻", + "\\mathtt{M}": "𝙼", + "\\mathtt{N}": "𝙽", + "\\mathtt{O}": "𝙾", + "\\mathtt{P}": "𝙿", + "\\mathtt{Q}": "𝚀", + "\\mathtt{R}": "𝚁", + "\\mathtt{S}": "𝚂", + "\\mathtt{T}": "𝚃", + "\\mathtt{U}": "𝚄", + "\\mathtt{V}": "𝚅", + "\\mathtt{W}": "𝚆", + "\\mathtt{X}": "𝚇", + "\\mathtt{Y}": "𝚈", + "\\mathtt{Z}": "𝚉", + "\\mathtt{a}": "𝚊", + "\\mathtt{b}": "𝚋", + "\\mathtt{c}": "𝚌", + "\\mathtt{d}": "𝚍", + "\\mathtt{e}": "𝚎", + "\\mathtt{f}": "𝚏", + "\\mathtt{g}": "𝚐", + "\\mathtt{h}": "𝚑", + "\\mathtt{i}": "𝚒", + "\\mathtt{j}": "𝚓", + "\\mathtt{k}": "𝚔", + "\\mathtt{l}": "𝚕", + "\\mathtt{m}": "𝚖", + "\\mathtt{n}": "𝚗", + "\\mathtt{o}": "𝚘", + "\\mathtt{p}": "𝚙", + "\\mathtt{q}": "𝚚", + "\\mathtt{r}": "𝚛", + "\\mathtt{s}": "𝚜", + "\\mathtt{t}": "𝚝", + "\\mathtt{u}": "𝚞", + "\\mathtt{v}": "𝚟", + "\\mathtt{w}": "𝚠", + "\\mathtt{x}": "𝚡", + "\\mathtt{y}": "𝚢", + "\\mathtt{z}": "𝚣", + "\\mathbf{\\Gamma}": "𝚪", + "\\mathbf{\\Delta}": "𝚫", + "\\mathbf{\\Theta}": "𝚯", + "\\mathbf{\\Lambda}": "𝚲", + "\\mathbf{\\Xi}": "𝚵", + "\\mathbf{\\Pi}": "𝚷", + "\\mathbf{\\vartheta}": "𝚹", + "\\mathbf{\\Sigma}": "𝚺", + "\\mathbf{\\Upsilon}": "𝚼", + "\\mathbf{\\Phi}": "𝚽", + "\\mathbf{\\Psi}": "𝚿", + "\\mathbf{\\Omega}": "𝛀", + "\\mathbf{\\nabla}": "𝛁", + "\\mathbf{\\alpha}": "𝛂", + "\\mathbf{\\beta}": "𝛃", + "\\mathbf{\\gamma}": "𝛄", + "\\mathbf{\\delta}": "𝛅", + "\\mathbf{\\epsilon}": "𝛆", + "\\mathbf{\\zeta}": "𝛇", + "\\mathbf{\\eta}": "𝛈", + "\\mathbf{\\theta}": "𝛉", + "\\mathbf{\\lambda}": "𝛌", + "\\mathbf{\\xi}": "𝛏", + "\\mathbf{\\pi}": "𝛑", + "\\mathbf{\\varsigma}": "𝛓", + "\\mathbf{\\sigma}": "𝛔", + "\\mathbf{\\upsilon}": "𝛖", + "\\mathbf{\\phi}": "𝛗", + "\\mathbf{\\psi}": "𝛙", + "\\mathbf{\\omega}": "𝛚", + "\\mathbf{\\varkappa}": "𝛞", + "\\mathbf{\\varrho}": "𝛠", + "\\mathbf{\\varpi}": "𝛡", + "\\mathsl{\\Gamma}": "𝛤", + "\\mathsl{\\Delta}": "𝛥", + "\\mathsl{\\Lambda}": "𝛬", + "\\mathsl{\\Xi}": "𝛯", + "\\mathsl{\\Pi}": "𝛱", + "\\mathsl{\\Theta}": "𝛳", + "\\mathsl{\\Sigma}": "𝛴", + "\\mathsl{\\Upsilon}": "𝛶", + "\\mathsl{\\Phi}": "𝛷", + "\\mathsl{\\Psi}": "𝛹", + "\\mathsl{\\Omega}": "𝛺", + "\\mathsl{\\nabla}": "𝛻", + "\\mathsl{\\gamma}": "𝛾", + "\\mathsl{\\delta}": "𝛿", + "\\mathsl{\\theta}": "𝜃", + "\\mathsl{\\lambda}": "𝜆", + "\\mu": "𝜇", + "\\mathsl{\\xi}": "𝜉", + "\\mathsl{\\pi}": "𝜋", + "\\mathsl{\\varsigma}": "𝜍", + "\\mathsl{\\sigma}": "𝜎", + "\\mathsl{\\upsilon}": "𝜐", + "\\mathsl{\\varphi}": "𝜑", + "\\mathsl{\\psi}": "𝜓", + "\\mathsl{\\omega}": "𝜔", + "\\mathsl{\\vartheta}": "𝜗", + "\\mathsl{\\varkappa}": "𝜘", + "\\mathsl{\\phi}": "𝜙", + "\\mathsl{\\varrho}": "𝜚", + "\\mathsl{\\varpi}": "𝜛", + "\\mathbit{\\Gamma}": "𝜞", + "\\mathbit{\\Delta}": "𝜟", + "\\mathbit{\\Theta}": "𝜣", + "\\mathbit{\\Lambda}": "𝜦", + "\\mathbit{\\Xi}": "𝜩", + "\\mathbit{\\Pi}": "𝜫", + "\\mathbit{\\Sigma}": "𝜮", + "\\mathbit{\\Upsilon}": "𝜰", + "\\mathbit{\\Phi}": "𝜱", + "\\mathbit{\\Psi}": "𝜳", + "\\mathbit{\\Omega}": "𝜴", + "\\mathbit{\\nabla}": "𝜵", + "\\mathbit{\\alpha}": "𝜶", + "\\mathbit{\\beta}": "𝜷", + "\\mathbit{\\gamma}": "𝜸", + "\\mathbit{\\delta}": "𝜹", + "\\mathbit{\\epsilon}": "𝜺", + "\\mathbit{\\zeta}": "𝜻", + "\\mathbit{\\eta}": "𝜼", + "\\mathbit{\\theta}": "𝜽", + "\\mathbit{\\imath}": "𝜾", + "\\mathbit{\\kappa}": "𝜿", + "\\mathbit{\\lambda}": "𝝀", + "\\mathbit{\\xi}": "𝝃", + "\\mathbit{\\pi}": "𝝅", + "\\mathbit{\\rho}": "𝝆", + "\\mathbit{\\varsigma}": "𝝇", + "\\mathbit{\\sigma}": "𝝈", + "\\mathbit{\\tau}": "𝝉", + "\\mathbit{\\upsilon}": "𝝊", + "\\mathbit{\\varphi}": "𝝋", + "\\mathbit{\\chi}": "𝝌", + "\\mathbit{\\psi}": "𝝍", + "\\mathbit{\\omega}": "𝝎", + "\\mathbit{\\vartheta}": "𝝑", + "\\mathbit{\\varkappa}": "𝝒", + "\\mathbit{\\phi}": "𝝓", + "\\mathbit{\\varrho}": "𝝔", + "\\mathbit{\\varpi}": "𝝕", + "\\mathsfbf{\\Gamma}": "𝝘", + "\\mathsfbf{\\Delta}": "𝝙", + "\\mathsfbf{\\Theta}": "𝝝", + "\\mathsfbf{\\Lambda}": "𝝠", + "\\mathsfbf{\\Xi}": "𝝣", + "\\mathsfbf{\\Pi}": "𝝥", + "\\mathsfbf{\\Sigma}": "𝝨", + "\\mathsfbf{\\Upsilon}": "𝝪", + "\\mathsfbf{\\Phi}": "𝝫", + "\\mathsfbf{\\Psi}": "𝝭", + "\\mathsfbf{\\Omega}": "𝝮", + "\\mathsfbf{\\nabla}": "𝝯", + "\\mathsfbf{\\alpha}": "𝝰", + "\\mathsfbf{\\beta}": "𝝱", + "\\mathsfbf{\\gamma}": "𝝲", + "\\mathsfbf{\\delta}": "𝝳", + "\\mathsfbf{\\varepsilon}": "𝝴", + "\\mathsfbf{\\zeta}": "𝝵", + "\\mathsfbf{\\eta}": "𝝶", + "\\mathsfbf{\\theta}": "𝝷", + "\\mathsfbf{\\imath}": "𝝸", + "\\mathsfbf{\\kappa}": "𝝹", + "\\mathsfbf{\\lambda}": "𝝺", + "\\mathsfbf{\\xi}": "𝝽", + "\\mathsfbf{\\pi}": "𝝿", + "\\mathsfbf{\\rho}": "𝞀", + "\\mathsfbf{\\varsigma}": "𝞁", + "\\mathsfbf{\\sigma}": "𝞂", + "\\mathsfbf{\\tau}": "𝞃", + "\\mathsfbf{\\upsilon}": "𝞄", + "\\mathsfbf{\\varphi}": "𝞅", + "\\mathsfbf{\\chi}": "𝞆", + "\\mathsfbf{\\psi}": "𝞇", + "\\mathsfbf{\\omega}": "𝞈", + "\\mathsfbf{\\vartheta}": "𝞋", + "\\mathsfbf{\\varkappa}": "𝞌", + "\\mathsfbf{\\phi}": "𝞍", + "\\mathsfbf{\\varrho}": "𝞎", + "\\mathsfbf{\\varpi}": "𝞏", + "\\mathsfbfsl{\\Gamma}": "𝞒", + "\\mathsfbfsl{\\Delta}": "𝞓", + "\\mathsfbfsl{\\Theta}": "𝞗", + "\\mathsfbfsl{\\Lambda}": "𝞚", + "\\mathsfbfsl{\\Xi}": "𝞝", + "\\mathsfbfsl{\\Pi}": "𝞟", + "\\mathsfbfsl{\\Sigma}": "𝞢", + "\\mathsfbfsl{\\Upsilon}": "𝞤", + "\\mathsfbfsl{\\Phi}": "𝞥", + "\\mathsfbfsl{\\Psi}": "𝞧", + "\\mathsfbfsl{\\Omega}": "𝞨", + "\\mathsfbfsl{\\nabla}": "𝞩", + "\\mathsfbfsl{\\alpha}": "𝞪", + "\\mathsfbfsl{\\beta}": "𝞫", + "\\mathsfbfsl{\\gamma}": "𝞬", + "\\mathsfbfsl{\\delta}": "𝞭", + "\\mathsfbfsl{\\varepsilon}": "𝞮", + "\\mathsfbfsl{\\zeta}": "𝞯", + "\\mathsfbfsl{\\eta}": "𝞰", + "\\mathsfbfsl{\\theta}": "𝞱", + "\\mathsfbfsl{\\imath}": "𝞲", + "\\mathsfbfsl{\\kappa}": "𝞳", + "\\mathsfbfsl{\\lambda}": "𝞴", + "\\mathsfbfsl{\\xi}": "𝞷", + "\\mathsfbfsl{\\pi}": "𝞹", + "\\mathsfbfsl{\\rho}": "𝞺", + "\\mathsfbfsl{\\varsigma}": "𝞻", + "\\mathsfbfsl{\\sigma}": "𝞼", + "\\mathsfbfsl{\\tau}": "𝞽", + "\\mathsfbfsl{\\upsilon}": "𝞾", + "\\mathsfbfsl{\\varphi}": "𝞿", + "\\mathsfbfsl{\\chi}": "𝟀", + "\\mathsfbfsl{\\psi}": "𝟁", + "\\mathsfbfsl{\\omega}": "𝟂", + "\\mathsfbfsl{\\vartheta}": "𝟅", + "\\mathsfbfsl{\\varkappa}": "𝟆", + "\\mathsfbfsl{\\phi}": "𝟇", + "\\mathsfbfsl{\\varrho}": "𝟈", + "\\mathsfbfsl{\\varpi}": "𝟉", + "\\mbfDigamma": "𝟊", + "\\mbfdigamma": "𝟋", + "\\mathbf{0}": "𝟎", + "\\mathbf{1}": "𝟏", + "\\mathbf{2}": "𝟐", + "\\mathbf{3}": "𝟑", + "\\mathbf{4}": "𝟒", + "\\mathbf{5}": "𝟓", + "\\mathbf{6}": "𝟔", + "\\mathbf{7}": "𝟕", + "\\mathbf{8}": "𝟖", + "\\mathbf{9}": "𝟗", + "\\mathbb{0}": "𝟘", + "\\mathbb{1}": "𝟙", + "\\mathbb{2}": "𝟚", + "\\mathbb{3}": "𝟛", + "\\mathbb{4}": "𝟜", + "\\mathbb{5}": "𝟝", + "\\mathbb{6}": "𝟞", + "\\mathbb{7}": "𝟟", + "\\mathbb{8}": "𝟠", + "\\mathbb{9}": "𝟡", + "\\mathsf{0}": "𝟢", + "\\mathsf{1}": "𝟣", + "\\mathsf{2}": "𝟤", + "\\mathsf{3}": "𝟥", + "\\mathsf{4}": "𝟦", + "\\mathsf{5}": "𝟧", + "\\mathsf{6}": "𝟨", + "\\mathsf{7}": "𝟩", + "\\mathsf{8}": "𝟪", + "\\mathsf{9}": "𝟫", + "\\mathsfbf{0}": "𝟬", + "\\mathsfbf{1}": "𝟭", + "\\mathsfbf{2}": "𝟮", + "\\mathsfbf{3}": "𝟯", + "\\mathsfbf{4}": "𝟰", + "\\mathsfbf{5}": "𝟱", + "\\mathsfbf{6}": "𝟲", + "\\mathsfbf{7}": "𝟳", + "\\mathsfbf{8}": "𝟴", + "\\mathsfbf{9}": "𝟵", + "\\mathtt{0}": "𝟶", + "\\mathtt{1}": "𝟷", + "\\mathtt{2}": "𝟸", + "\\mathtt{3}": "𝟹", + "\\mathtt{4}": "𝟺", + "\\mathtt{5}": "𝟻", + "\\mathtt{6}": "𝟼", + "\\mathtt{7}": "𝟽", + "\\mathtt{8}": "𝟾", + "\\mathtt{9}": "𝟿" + }; + + var commands = [ + "acute", + "bar", + "breve", + "c", + "d", + "ddot", + "dot", + "grave", + "hat", + "k", + "mathring", + "overline", + "r", + "textacutemacron", + "textacutewedge", + "textadvancing", + "textbrevemacron", + "textcircumdot", + "textcorner", + "textdotacute", + "textdotbreve", + "textdoublegrave", + "textdoublevbaraccent", + "textgravedot", + "textgravemacron", + "textinvsubbridge", + "textlowering", + "textovercross", + "textraising", + "textretracting", + "textringmacron", + "textseagull", + "textsubarch", + "textsubbar", + "textsubbridge", + "textsubgrave", + "textsublhalfring", + "textsubplus", + "textsubrhalfring", + "textsubring", + "textsubsquare", + "textsubtilde", + "textsubumlaut", + "textsubwedge", + "textsuperimposetilde", + "textsyllabic", + "texttildedot", + "textvbaraccent", + "tilde", + "u", + "underbar", + "v" + ]; + var tolatex = { + "̀": { + command: "`", + mode: "text" + }, + "̀̄": { + command: "textgravemacron", + mode: "text" + }, + "̀̇": { + command: "textgravedot", + mode: "text" + }, + "́": { + command: "'", + mode: "text" + }, + "́̄": { + command: "textacutemacron", + mode: "text" + }, + "́̇": { + command: "textdotacute", + mode: "text" + }, + "́̌": { + command: "textacutewedge", + mode: "text" + }, + "̂": { + command: "^", + mode: "text" + }, + "̂̇": { + command: "textcircumdot", + mode: "text" + }, + "̃": { + command: "~", + mode: "text" + }, + "̃̇": { + command: "texttildedot", + mode: "text" + }, + "̄": { + command: "=", + mode: "text" + }, + "̄̀": { + command: "textgravemacron", + mode: "text" + }, + "̄́": { + command: "textacutemacron", + mode: "text" + }, + "̄̆": { + command: "textbrevemacron", + mode: "text" + }, + "̄̊": { + command: "textringmacron", + mode: "text" + }, + "̅": { + command: "overline", + mode: "math" + }, + "̆": { + command: "u", + mode: "text" + }, + "̆̄": { + command: "textbrevemacron", + mode: "text" + }, + "̆̇": { + command: "textdotbreve", + mode: "text" + }, + "̇": { + command: ".", + mode: "text" + }, + "̇̀": { + command: "textgravedot", + mode: "text" + }, + "̇́": { + command: "textdotacute", + mode: "text" + }, + "̇̂": { + command: "textcircumdot", + mode: "text" + }, + "̇̃": { + command: "texttildedot", + mode: "text" + }, + "̇̆": { + command: "textdotbreve", + mode: "text" + }, + "̈": { + command: "\"", + mode: "text" + }, + "̊": { + command: "r", + mode: "text" + }, + "̊̄": { + command: "textringmacron", + mode: "text" + }, + "̋": { + command: "H", + mode: "text" + }, + "̌": { + command: "v", + mode: "text" + }, + "̌́": { + command: "textacutewedge", + mode: "text" + }, + "̍": { + command: "textvbaraccent", + mode: "text" + }, + "̎": { + command: "textdoublevbaraccent", + mode: "text" + }, + "̏": { + command: "textdoublegrave", + mode: "text" + }, + "̐": { + command: "textdotbreve", + mode: "text" + }, + "̖": { + command: "textsubgrave", + mode: "text" + }, + "̘": { + command: "textadvancing", + mode: "text" + }, + "̙": { + command: "textretracting", + mode: "text" + }, + "̚": { + command: "textcorner", + mode: "text" + }, + "̜": { + command: "textsublhalfring", + mode: "text" + }, + "̝": { + command: "textraising", + mode: "text" + }, + "̞": { + command: "textlowering", + mode: "text" + }, + "̟": { + command: "textsubplus", + mode: "text" + }, + "̣": { + command: "d", + mode: "text" + }, + "̤": { + command: "textsubumlaut", + mode: "text" + }, + "̥": { + command: "textsubring", + mode: "text" + }, + "̧": { + command: "c", + mode: "text" + }, + "̨": { + command: "k", + mode: "text" + }, + "̩": { + command: "textsyllabic", + mode: "text" + }, + "̪": { + command: "textsubbridge", + mode: "text" + }, + "̬": { + command: "textsubwedge", + mode: "text" + }, + "̯": { + command: "textsubarch", + mode: "text" + }, + "̰": { + command: "textsubtilde", + mode: "text" + }, + "̱": { + command: "textsubbar", + mode: "text" + }, + "̴": { + command: "textsuperimposetilde", + mode: "text" + }, + "̹": { + command: "textsubrhalfring", + mode: "text" + }, + "̺": { + command: "textinvsubbridge", + mode: "text" + }, + "̻": { + command: "textsubsquare", + mode: "text" + }, + "̼": { + command: "textseagull", + mode: "text" + }, + "̽": { + command: "textovercross", + mode: "text" + } + }; + var tounicode = { + "\"": "̈", + "'": "́", + ".": "̇", + "=": "̄", + H: "̋", + "^": "̂", + "`": "̀", + acute: "́", + bar: "̄", + breve: "̆", + c: "̧", + d: "̣", + ddot: "̈", + dot: "̇", + grave: "̀", + hat: "̂", + k: "̨", + mathring: "̊", + overline: "̅", + r: "̊", + textacutemacron: "̄́", + textacutewedge: "̌́", + textadvancing: "̘", + textbrevemacron: "̄̆", + textcircumdot: "̇̂", + textcorner: "̚", + textdotacute: "́̇", + textdotbreve: "̐", + textdoublegrave: "̏", + textdoublevbaraccent: "̎", + textgravedot: "̇̀", + textgravemacron: "̀̄", + textinvsubbridge: "̺", + textlowering: "̞", + textovercross: "̽", + textraising: "̝", + textretracting: "̙", + textringmacron: "̄̊", + textseagull: "̼", + textsubarch: "̯", + textsubbar: "̱", + textsubbridge: "̪", + textsubgrave: "̖", + textsublhalfring: "̜", + textsubplus: "̟", + textsubrhalfring: "̹", + textsubring: "̥", + textsubsquare: "̻", + textsubtilde: "̰", + textsubumlaut: "̤", + textsubwedge: "̬", + textsuperimposetilde: "̴", + textsyllabic: "̩", + texttildedot: "̇̃", + textvbaraccent: "̍", + tilde: "̃", + u: "̆", + underbar: "̱", + v: "̌", + "~": "̃" + }; + var require$$4 = { + commands: commands, + tolatex: tolatex, + tounicode: tounicode + }; + + var unicode2latex = { + ascii: require$$0, + ascii_bibtex_creator: require$$1, + unicode: require$$2, + latex: require$$3, + diacritics: require$$4, + }; + + var categories = [ + { + 'name': 'C', + 'alias': 'Other', + 'isBmpLast': true, + 'bmp': '\0-\x1F\x7F-\x9F\xAD\u0378\u0379\u0380-\u0383\u038B\u038D\u03A2\u0530\u0557\u0558\u058B\u058C\u0590\u05C8-\u05CF\u05EB-\u05EE\u05F5-\u0605\u061C\u061D\u06DD\u070E\u070F\u074B\u074C\u07B2-\u07BF\u07FB\u07FC\u082E\u082F\u083F\u085C\u085D\u085F\u086B-\u089F\u08B5\u08C8-\u08D2\u08E2\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09FF\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A77-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF2-\u0AF8\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B54\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B78-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BFB-\u0BFF\u0C0D\u0C11\u0C29\u0C3A-\u0C3C\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5B-\u0C5F\u0C64\u0C65\u0C70-\u0C76\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDD\u0CDF\u0CE4\u0CE5\u0CF0\u0CF3-\u0CFF\u0D0D\u0D11\u0D45\u0D49\u0D50-\u0D53\u0D64\u0D65\u0D80\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DE5\u0DF0\u0DF1\u0DF5-\u0E00\u0E3B-\u0E3E\u0E5C-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EBE\u0EBF\u0EC5\u0EC7\u0ECE\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F48\u0F6D-\u0F70\u0F98\u0FBD\u0FCD\u0FDB-\u0FFF\u10C6\u10C8-\u10CC\u10CE\u10CF\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u137D-\u137F\u139A-\u139F\u13F6\u13F7\u13FE\u13FF\u169D-\u169F\u16F9-\u16FF\u170D\u1715-\u171F\u1737-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17DE\u17DF\u17EA-\u17EF\u17FA-\u17FF\u180E\u180F\u181A-\u181F\u1879-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191F\u192C-\u192F\u193C-\u193F\u1941-\u1943\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DB-\u19DD\u1A1C\u1A1D\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1A9F\u1AAE\u1AAF\u1AC1-\u1AFF\u1B4C-\u1B4F\u1B7D-\u1B7F\u1BF4-\u1BFB\u1C38-\u1C3A\u1C4A-\u1C4C\u1C89-\u1C8F\u1CBB\u1CBC\u1CC8-\u1CCF\u1CFB-\u1CFF\u1DFA\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FC5\u1FD4\u1FD5\u1FDC\u1FF0\u1FF1\u1FF5\u1FFF\u200B-\u200F\u202A-\u202E\u2060-\u206F\u2072\u2073\u208F\u209D-\u209F\u20C0-\u20CF\u20F1-\u20FF\u218C-\u218F\u2427-\u243F\u244B-\u245F\u2B74\u2B75\u2B96\u2C2F\u2C5F\u2CF4-\u2CF8\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D71-\u2D7E\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF\u2E53-\u2E7F\u2E9A\u2EF4-\u2EFF\u2FD6-\u2FEF\u2FFC-\u2FFF\u3040\u3097\u3098\u3100-\u3104\u3130\u318F\u31E4-\u31EF\u321F\u9FFD-\u9FFF\uA48D-\uA48F\uA4C7-\uA4CF\uA62C-\uA63F\uA6F8-\uA6FF\uA7C0\uA7C1\uA7CB-\uA7F4\uA82D-\uA82F\uA83A-\uA83F\uA878-\uA87F\uA8C6-\uA8CD\uA8DA-\uA8DF\uA954-\uA95E\uA97D-\uA97F\uA9CE\uA9DA-\uA9DD\uA9FF\uAA37-\uAA3F\uAA4E\uAA4F\uAA5A\uAA5B\uAAC3-\uAADA\uAAF7-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB6C-\uAB6F\uABEE\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBC2-\uFBD2\uFD40-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFE\uFDFF\uFE1A-\uFE1F\uFE53\uFE67\uFE6C-\uFE6F\uFE75\uFEFD-\uFF00\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFDF\uFFE7\uFFEF-\uFFFB\uFFFE\uFFFF', + 'astral': '\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDCFF\uDD03-\uDD06\uDD34-\uDD36\uDD8F\uDD9D-\uDD9F\uDDA1-\uDDCF\uDDFE-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEDF\uDEFC-\uDEFF\uDF24-\uDF2C\uDF4B-\uDF4F\uDF7B-\uDF7F\uDF9E\uDFC4-\uDFC7\uDFD6-\uDFFF]|\uD801[\uDC9E\uDC9F\uDCAA-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDD6E\uDD70-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56\uDC9F-\uDCA6\uDCB0-\uDCDF\uDCF3\uDCF6-\uDCFA\uDD1C-\uDD1E\uDD3A-\uDD3E\uDD40-\uDD7F\uDDB8-\uDDBB\uDDD0\uDDD1\uDE04\uDE07-\uDE0B\uDE14\uDE18\uDE36\uDE37\uDE3B-\uDE3E\uDE49-\uDE4F\uDE59-\uDE5F\uDEA0-\uDEBF\uDEE7-\uDEEA\uDEF7-\uDEFF\uDF36-\uDF38\uDF56\uDF57\uDF73-\uDF77\uDF92-\uDF98\uDF9D-\uDFA8\uDFB0-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCF9\uDD28-\uDD2F\uDD3A-\uDE5F\uDE7F\uDEAA\uDEAE\uDEAF\uDEB2-\uDEFF\uDF28-\uDF2F\uDF5A-\uDFAF\uDFCC-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC4E-\uDC51\uDC70-\uDC7E\uDCBD\uDCC2-\uDCCF\uDCE9-\uDCEF\uDCFA-\uDCFF\uDD35\uDD48-\uDD4F\uDD77-\uDD7F\uDDE0\uDDF5-\uDDFF\uDE12\uDE3F-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEAA-\uDEAF\uDEEB-\uDEEF\uDEFA-\uDEFF\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A\uDF45\uDF46\uDF49\uDF4A\uDF4E\uDF4F\uDF51-\uDF56\uDF58-\uDF5C\uDF64\uDF65\uDF6D-\uDF6F\uDF75-\uDFFF]|\uD805[\uDC5C\uDC62-\uDC7F\uDCC8-\uDCCF\uDCDA-\uDD7F\uDDB6\uDDB7\uDDDE-\uDDFF\uDE45-\uDE4F\uDE5A-\uDE5F\uDE6D-\uDE7F\uDEB9-\uDEBF\uDECA-\uDEFF\uDF1B\uDF1C\uDF2C-\uDF2F\uDF40-\uDFFF]|\uD806[\uDC3C-\uDC9F\uDCF3-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD36\uDD39\uDD3A\uDD47-\uDD4F\uDD5A-\uDD9F\uDDA8\uDDA9\uDDD8\uDDD9\uDDE5-\uDDFF\uDE48-\uDE4F\uDEA3-\uDEBF\uDEF9-\uDFFF]|\uD807[\uDC09\uDC37\uDC46-\uDC4F\uDC6D-\uDC6F\uDC90\uDC91\uDCA8\uDCB7-\uDCFF\uDD07\uDD0A\uDD37-\uDD39\uDD3B\uDD3E\uDD48-\uDD4F\uDD5A-\uDD5F\uDD66\uDD69\uDD8F\uDD92\uDD99-\uDD9F\uDDAA-\uDEDF\uDEF9-\uDFAF\uDFB1-\uDFBF\uDFF2-\uDFFE]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC6F\uDC75-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD80B\uD80E-\uD810\uD812-\uD819\uD824-\uD82B\uD82D\uD82E\uD830-\uD833\uD837\uD839\uD83F\uD87B-\uD87D\uD87F\uD885-\uDB3F\uDB41-\uDBFF][\uDC00-\uDFFF]|\uD80D[\uDC2F-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F\uDE6A-\uDE6D\uDE70-\uDECF\uDEEE\uDEEF\uDEF6-\uDEFF\uDF46-\uDF4F\uDF5A\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDE3F\uDE9B-\uDEFF\uDF4B-\uDF4E\uDF88-\uDF8E\uDFA0-\uDFDF\uDFE5-\uDFEF\uDFF2-\uDFFF]|\uD821[\uDFF8-\uDFFF]|\uD823[\uDCD6-\uDCFF\uDD09-\uDFFF]|\uD82C[\uDD1F-\uDD4F\uDD53-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A\uDC9B\uDCA0-\uDFFF]|\uD834[\uDCF6-\uDCFF\uDD27\uDD28\uDD73-\uDD7A\uDDE9-\uDDFF\uDE46-\uDEDF\uDEF4-\uDEFF\uDF57-\uDF5F\uDF79-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDFCC\uDFCD]|\uD836[\uDE8C-\uDE9A\uDEA0\uDEB0-\uDFFF]|\uD838[\uDC07\uDC19\uDC1A\uDC22\uDC25\uDC2B-\uDCFF\uDD2D-\uDD2F\uDD3E\uDD3F\uDD4A-\uDD4D\uDD50-\uDEBF\uDEFA-\uDEFE\uDF00-\uDFFF]|\uD83A[\uDCC5\uDCC6\uDCD7-\uDCFF\uDD4C-\uDD4F\uDD5A-\uDD5D\uDD60-\uDFFF]|\uD83B[\uDC00-\uDC70\uDCB5-\uDD00\uDD3E-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDEEF\uDEF2-\uDFFF]|\uD83C[\uDC2C-\uDC2F\uDC94-\uDC9F\uDCAF\uDCB0\uDCC0\uDCD0\uDCF6-\uDCFF\uDDAE-\uDDE5\uDE03-\uDE0F\uDE3C-\uDE3F\uDE49-\uDE4F\uDE52-\uDE5F\uDE66-\uDEFF]|\uD83D[\uDED8-\uDEDF\uDEED-\uDEEF\uDEFD-\uDEFF\uDF74-\uDF7F\uDFD9-\uDFDF\uDFEC-\uDFFF]|\uD83E[\uDC0C-\uDC0F\uDC48-\uDC4F\uDC5A-\uDC5F\uDC88-\uDC8F\uDCAE\uDCAF\uDCB2-\uDCFF\uDD79\uDDCC\uDE54-\uDE5F\uDE6E\uDE6F\uDE75-\uDE77\uDE7B-\uDE7F\uDE87-\uDE8F\uDEA9-\uDEAF\uDEB7-\uDEBF\uDEC3-\uDECF\uDED7-\uDEFF\uDF93\uDFCB-\uDFEF\uDFFA-\uDFFF]|\uD869[\uDEDE-\uDEFF]|\uD86D[\uDF35-\uDF3F]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEA2-\uDEAF]|\uD87A[\uDFE1-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDFFF]|\uDB40[\uDC00-\uDCFF\uDDF0-\uDFFF]' + }, + { + 'name': 'Cc', + 'alias': 'Control', + 'bmp': '\0-\x1F\x7F-\x9F' + }, + { + 'name': 'Cf', + 'alias': 'Format', + 'bmp': '\xAD\u0600-\u0605\u061C\u06DD\u070F\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB', + 'astral': '\uD804[\uDCBD\uDCCD]|\uD80D[\uDC30-\uDC38]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]' + }, + { + 'name': 'Cn', + 'alias': 'Unassigned', + 'bmp': '\u0378\u0379\u0380-\u0383\u038B\u038D\u03A2\u0530\u0557\u0558\u058B\u058C\u0590\u05C8-\u05CF\u05EB-\u05EE\u05F5-\u05FF\u061D\u070E\u074B\u074C\u07B2-\u07BF\u07FB\u07FC\u082E\u082F\u083F\u085C\u085D\u085F\u086B-\u089F\u08B5\u08C8-\u08D2\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09FF\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A77-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF2-\u0AF8\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B54\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B78-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BFB-\u0BFF\u0C0D\u0C11\u0C29\u0C3A-\u0C3C\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5B-\u0C5F\u0C64\u0C65\u0C70-\u0C76\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDD\u0CDF\u0CE4\u0CE5\u0CF0\u0CF3-\u0CFF\u0D0D\u0D11\u0D45\u0D49\u0D50-\u0D53\u0D64\u0D65\u0D80\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DE5\u0DF0\u0DF1\u0DF5-\u0E00\u0E3B-\u0E3E\u0E5C-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EBE\u0EBF\u0EC5\u0EC7\u0ECE\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F48\u0F6D-\u0F70\u0F98\u0FBD\u0FCD\u0FDB-\u0FFF\u10C6\u10C8-\u10CC\u10CE\u10CF\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u137D-\u137F\u139A-\u139F\u13F6\u13F7\u13FE\u13FF\u169D-\u169F\u16F9-\u16FF\u170D\u1715-\u171F\u1737-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17DE\u17DF\u17EA-\u17EF\u17FA-\u17FF\u180F\u181A-\u181F\u1879-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191F\u192C-\u192F\u193C-\u193F\u1941-\u1943\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DB-\u19DD\u1A1C\u1A1D\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1A9F\u1AAE\u1AAF\u1AC1-\u1AFF\u1B4C-\u1B4F\u1B7D-\u1B7F\u1BF4-\u1BFB\u1C38-\u1C3A\u1C4A-\u1C4C\u1C89-\u1C8F\u1CBB\u1CBC\u1CC8-\u1CCF\u1CFB-\u1CFF\u1DFA\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FC5\u1FD4\u1FD5\u1FDC\u1FF0\u1FF1\u1FF5\u1FFF\u2065\u2072\u2073\u208F\u209D-\u209F\u20C0-\u20CF\u20F1-\u20FF\u218C-\u218F\u2427-\u243F\u244B-\u245F\u2B74\u2B75\u2B96\u2C2F\u2C5F\u2CF4-\u2CF8\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D71-\u2D7E\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF\u2E53-\u2E7F\u2E9A\u2EF4-\u2EFF\u2FD6-\u2FEF\u2FFC-\u2FFF\u3040\u3097\u3098\u3100-\u3104\u3130\u318F\u31E4-\u31EF\u321F\u9FFD-\u9FFF\uA48D-\uA48F\uA4C7-\uA4CF\uA62C-\uA63F\uA6F8-\uA6FF\uA7C0\uA7C1\uA7CB-\uA7F4\uA82D-\uA82F\uA83A-\uA83F\uA878-\uA87F\uA8C6-\uA8CD\uA8DA-\uA8DF\uA954-\uA95E\uA97D-\uA97F\uA9CE\uA9DA-\uA9DD\uA9FF\uAA37-\uAA3F\uAA4E\uAA4F\uAA5A\uAA5B\uAAC3-\uAADA\uAAF7-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB6C-\uAB6F\uABEE\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uD7FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBC2-\uFBD2\uFD40-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFE\uFDFF\uFE1A-\uFE1F\uFE53\uFE67\uFE6C-\uFE6F\uFE75\uFEFD\uFEFE\uFF00\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFDF\uFFE7\uFFEF-\uFFF8\uFFFE\uFFFF', + 'astral': '\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDCFF\uDD03-\uDD06\uDD34-\uDD36\uDD8F\uDD9D-\uDD9F\uDDA1-\uDDCF\uDDFE-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEDF\uDEFC-\uDEFF\uDF24-\uDF2C\uDF4B-\uDF4F\uDF7B-\uDF7F\uDF9E\uDFC4-\uDFC7\uDFD6-\uDFFF]|\uD801[\uDC9E\uDC9F\uDCAA-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDD6E\uDD70-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56\uDC9F-\uDCA6\uDCB0-\uDCDF\uDCF3\uDCF6-\uDCFA\uDD1C-\uDD1E\uDD3A-\uDD3E\uDD40-\uDD7F\uDDB8-\uDDBB\uDDD0\uDDD1\uDE04\uDE07-\uDE0B\uDE14\uDE18\uDE36\uDE37\uDE3B-\uDE3E\uDE49-\uDE4F\uDE59-\uDE5F\uDEA0-\uDEBF\uDEE7-\uDEEA\uDEF7-\uDEFF\uDF36-\uDF38\uDF56\uDF57\uDF73-\uDF77\uDF92-\uDF98\uDF9D-\uDFA8\uDFB0-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCF9\uDD28-\uDD2F\uDD3A-\uDE5F\uDE7F\uDEAA\uDEAE\uDEAF\uDEB2-\uDEFF\uDF28-\uDF2F\uDF5A-\uDFAF\uDFCC-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC4E-\uDC51\uDC70-\uDC7E\uDCC2-\uDCCC\uDCCE\uDCCF\uDCE9-\uDCEF\uDCFA-\uDCFF\uDD35\uDD48-\uDD4F\uDD77-\uDD7F\uDDE0\uDDF5-\uDDFF\uDE12\uDE3F-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEAA-\uDEAF\uDEEB-\uDEEF\uDEFA-\uDEFF\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A\uDF45\uDF46\uDF49\uDF4A\uDF4E\uDF4F\uDF51-\uDF56\uDF58-\uDF5C\uDF64\uDF65\uDF6D-\uDF6F\uDF75-\uDFFF]|\uD805[\uDC5C\uDC62-\uDC7F\uDCC8-\uDCCF\uDCDA-\uDD7F\uDDB6\uDDB7\uDDDE-\uDDFF\uDE45-\uDE4F\uDE5A-\uDE5F\uDE6D-\uDE7F\uDEB9-\uDEBF\uDECA-\uDEFF\uDF1B\uDF1C\uDF2C-\uDF2F\uDF40-\uDFFF]|\uD806[\uDC3C-\uDC9F\uDCF3-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD36\uDD39\uDD3A\uDD47-\uDD4F\uDD5A-\uDD9F\uDDA8\uDDA9\uDDD8\uDDD9\uDDE5-\uDDFF\uDE48-\uDE4F\uDEA3-\uDEBF\uDEF9-\uDFFF]|\uD807[\uDC09\uDC37\uDC46-\uDC4F\uDC6D-\uDC6F\uDC90\uDC91\uDCA8\uDCB7-\uDCFF\uDD07\uDD0A\uDD37-\uDD39\uDD3B\uDD3E\uDD48-\uDD4F\uDD5A-\uDD5F\uDD66\uDD69\uDD8F\uDD92\uDD99-\uDD9F\uDDAA-\uDEDF\uDEF9-\uDFAF\uDFB1-\uDFBF\uDFF2-\uDFFE]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC6F\uDC75-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD80B\uD80E-\uD810\uD812-\uD819\uD824-\uD82B\uD82D\uD82E\uD830-\uD833\uD837\uD839\uD83F\uD87B-\uD87D\uD87F\uD885-\uDB3F\uDB41-\uDB7F][\uDC00-\uDFFF]|\uD80D[\uDC2F\uDC39-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F\uDE6A-\uDE6D\uDE70-\uDECF\uDEEE\uDEEF\uDEF6-\uDEFF\uDF46-\uDF4F\uDF5A\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDE3F\uDE9B-\uDEFF\uDF4B-\uDF4E\uDF88-\uDF8E\uDFA0-\uDFDF\uDFE5-\uDFEF\uDFF2-\uDFFF]|\uD821[\uDFF8-\uDFFF]|\uD823[\uDCD6-\uDCFF\uDD09-\uDFFF]|\uD82C[\uDD1F-\uDD4F\uDD53-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A\uDC9B\uDCA4-\uDFFF]|\uD834[\uDCF6-\uDCFF\uDD27\uDD28\uDDE9-\uDDFF\uDE46-\uDEDF\uDEF4-\uDEFF\uDF57-\uDF5F\uDF79-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDFCC\uDFCD]|\uD836[\uDE8C-\uDE9A\uDEA0\uDEB0-\uDFFF]|\uD838[\uDC07\uDC19\uDC1A\uDC22\uDC25\uDC2B-\uDCFF\uDD2D-\uDD2F\uDD3E\uDD3F\uDD4A-\uDD4D\uDD50-\uDEBF\uDEFA-\uDEFE\uDF00-\uDFFF]|\uD83A[\uDCC5\uDCC6\uDCD7-\uDCFF\uDD4C-\uDD4F\uDD5A-\uDD5D\uDD60-\uDFFF]|\uD83B[\uDC00-\uDC70\uDCB5-\uDD00\uDD3E-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDEEF\uDEF2-\uDFFF]|\uD83C[\uDC2C-\uDC2F\uDC94-\uDC9F\uDCAF\uDCB0\uDCC0\uDCD0\uDCF6-\uDCFF\uDDAE-\uDDE5\uDE03-\uDE0F\uDE3C-\uDE3F\uDE49-\uDE4F\uDE52-\uDE5F\uDE66-\uDEFF]|\uD83D[\uDED8-\uDEDF\uDEED-\uDEEF\uDEFD-\uDEFF\uDF74-\uDF7F\uDFD9-\uDFDF\uDFEC-\uDFFF]|\uD83E[\uDC0C-\uDC0F\uDC48-\uDC4F\uDC5A-\uDC5F\uDC88-\uDC8F\uDCAE\uDCAF\uDCB2-\uDCFF\uDD79\uDDCC\uDE54-\uDE5F\uDE6E\uDE6F\uDE75-\uDE77\uDE7B-\uDE7F\uDE87-\uDE8F\uDEA9-\uDEAF\uDEB7-\uDEBF\uDEC3-\uDECF\uDED7-\uDEFF\uDF93\uDFCB-\uDFEF\uDFFA-\uDFFF]|\uD869[\uDEDE-\uDEFF]|\uD86D[\uDF35-\uDF3F]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEA2-\uDEAF]|\uD87A[\uDFE1-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDFFF]|\uDB40[\uDC00\uDC02-\uDC1F\uDC80-\uDCFF\uDDF0-\uDFFF]|[\uDBBF\uDBFF][\uDFFE\uDFFF]' + }, + { + 'name': 'Co', + 'alias': 'Private_Use', + 'bmp': '\uE000-\uF8FF', + 'astral': '[\uDB80-\uDBBE\uDBC0-\uDBFE][\uDC00-\uDFFF]|[\uDBBF\uDBFF][\uDC00-\uDFFD]' + }, + { + 'name': 'Cs', + 'alias': 'Surrogate', + 'bmp': '\uD800-\uDFFF' + }, + { + 'name': 'L', + 'alias': 'Letter', + 'bmp': 'A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08C7\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\u9FFC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7BF\uA7C2-\uA7CA\uA7F5-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC', + 'astral': '\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82C[\uDC00-\uDD1E\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDEC0-\uDEEB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDD\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A]' + }, + { + 'name': 'LC', + 'alias': 'Cased_Letter', + 'bmp': 'A-Za-z\xB5\xC0-\xD6\xD8-\xF6\xF8-\u01BA\u01BC-\u01BF\u01C4-\u0293\u0295-\u02AF\u0370-\u0373\u0376\u0377\u037B-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0560-\u0588\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FD-\u10FF\u13A0-\u13F5\u13F8-\u13FD\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1D00-\u1D2B\u1D6B-\u1D77\u1D79-\u1D9A\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2134\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2C7B\u2C7E-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA640-\uA66D\uA680-\uA69B\uA722-\uA76F\uA771-\uA787\uA78B-\uA78E\uA790-\uA7BF\uA7C2-\uA7CA\uA7F5\uA7F6\uA7FA\uAB30-\uAB5A\uAB60-\uAB68\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF21-\uFF3A\uFF41-\uFF5A', + 'astral': '\uD801[\uDC00-\uDC4F\uDCB0-\uDCD3\uDCD8-\uDCFB]|\uD803[\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD806[\uDCA0-\uDCDF]|\uD81B[\uDE40-\uDE7F]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDD00-\uDD43]' + }, + { + 'name': 'Ll', + 'alias': 'Lowercase_Letter', + 'bmp': 'a-z\xB5\xDF-\xF6\xF8-\xFF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02AF\u0371\u0373\u0377\u037B-\u037D\u0390\u03AC-\u03CE\u03D0\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0560-\u0588\u10D0-\u10FA\u10FD-\u10FF\u13F8-\u13FD\u1C80-\u1C88\u1D00-\u1D2B\u1D6B-\u1D77\u1D79-\u1D9A\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6\u1FC7\u1FD0-\u1FD3\u1FD6\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6\u1FF7\u210A\u210E\u210F\u2113\u212F\u2134\u2139\u213C\u213D\u2146-\u2149\u214E\u2184\u2C30-\u2C5E\u2C61\u2C65\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73\u2C74\u2C76-\u2C7B\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3\u2CE4\u2CEC\u2CEE\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA771-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uA78E\uA791\uA793-\uA795\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7AF\uA7B5\uA7B7\uA7B9\uA7BB\uA7BD\uA7BF\uA7C3\uA7C8\uA7CA\uA7F6\uA7FA\uAB30-\uAB5A\uAB60-\uAB68\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A', + 'astral': '\uD801[\uDC28-\uDC4F\uDCD8-\uDCFB]|\uD803[\uDCC0-\uDCF2]|\uD806[\uDCC0-\uDCDF]|\uD81B[\uDE60-\uDE7F]|\uD835[\uDC1A-\uDC33\uDC4E-\uDC54\uDC56-\uDC67\uDC82-\uDC9B\uDCB6-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDCEA-\uDD03\uDD1E-\uDD37\uDD52-\uDD6B\uDD86-\uDD9F\uDDBA-\uDDD3\uDDEE-\uDE07\uDE22-\uDE3B\uDE56-\uDE6F\uDE8A-\uDEA5\uDEC2-\uDEDA\uDEDC-\uDEE1\uDEFC-\uDF14\uDF16-\uDF1B\uDF36-\uDF4E\uDF50-\uDF55\uDF70-\uDF88\uDF8A-\uDF8F\uDFAA-\uDFC2\uDFC4-\uDFC9\uDFCB]|\uD83A[\uDD22-\uDD43]' + }, + { + 'name': 'Lm', + 'alias': 'Modifier_Letter', + 'bmp': '\u02B0-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0374\u037A\u0559\u0640\u06E5\u06E6\u07F4\u07F5\u07FA\u081A\u0824\u0828\u0971\u0E46\u0EC6\u10FC\u17D7\u1843\u1AA7\u1C78-\u1C7D\u1D2C-\u1D6A\u1D78\u1D9B-\u1DBF\u2071\u207F\u2090-\u209C\u2C7C\u2C7D\u2D6F\u2E2F\u3005\u3031-\u3035\u303B\u309D\u309E\u30FC-\u30FE\uA015\uA4F8-\uA4FD\uA60C\uA67F\uA69C\uA69D\uA717-\uA71F\uA770\uA788\uA7F8\uA7F9\uA9CF\uA9E6\uAA70\uAADD\uAAF3\uAAF4\uAB5C-\uAB5F\uAB69\uFF70\uFF9E\uFF9F', + 'astral': '\uD81A[\uDF40-\uDF43]|\uD81B[\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD838[\uDD37-\uDD3D]|\uD83A\uDD4B' + }, + { + 'name': 'Lo', + 'alias': 'Other_Letter', + 'bmp': '\xAA\xBA\u01BB\u01C0-\u01C3\u0294\u05D0-\u05EA\u05EF-\u05F2\u0620-\u063F\u0641-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u0800-\u0815\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08C7\u0904-\u0939\u093D\u0950\u0958-\u0961\u0972-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E45\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1100-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17DC\u1820-\u1842\u1844-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C77\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u2135-\u2138\u2D30-\u2D67\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3006\u303C\u3041-\u3096\u309F\u30A1-\u30FA\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\u9FFC\uA000-\uA014\uA016-\uA48C\uA4D0-\uA4F7\uA500-\uA60B\uA610-\uA61F\uA62A\uA62B\uA66E\uA6A0-\uA6E5\uA78F\uA7F7\uA7FB-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9E0-\uA9E4\uA9E7-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA6F\uAA71-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB\uAADC\uAAE0-\uAAEA\uAAF2\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF66-\uFF6F\uFF71-\uFF9D\uFFA0-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC', + 'astral': '\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC50-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A]|\uD806[\uDC00-\uDC2B\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF4A\uDF50]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82C[\uDC00-\uDD1E\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD838[\uDD00-\uDD2C\uDD4E\uDEC0-\uDEEB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDD\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A]' + }, + { + 'name': 'Lt', + 'alias': 'Titlecase_Letter', + 'bmp': '\u01C5\u01C8\u01CB\u01F2\u1F88-\u1F8F\u1F98-\u1F9F\u1FA8-\u1FAF\u1FBC\u1FCC\u1FFC' + }, + { + 'name': 'Lu', + 'alias': 'Uppercase_Letter', + 'bmp': 'A-Z\xC0-\xD6\xD8-\xDE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178\u0179\u017B\u017D\u0181\u0182\u0184\u0186\u0187\u0189-\u018B\u018E-\u0191\u0193\u0194\u0196-\u0198\u019C\u019D\u019F\u01A0\u01A2\u01A4\u01A6\u01A7\u01A9\u01AC\u01AE\u01AF\u01B1-\u01B3\u01B5\u01B7\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A\u023B\u023D\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u037F\u0386\u0388-\u038A\u038C\u038E\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u13A0-\u13F5\u1C90-\u1CBA\u1CBD-\u1CBF\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E\u213F\u2145\u2183\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA-\uA7AE\uA7B0-\uA7B4\uA7B6\uA7B8\uA7BA\uA7BC\uA7BE\uA7C2\uA7C4-\uA7C7\uA7C9\uA7F5\uFF21-\uFF3A', + 'astral': '\uD801[\uDC00-\uDC27\uDCB0-\uDCD3]|\uD803[\uDC80-\uDCB2]|\uD806[\uDCA0-\uDCBF]|\uD81B[\uDE40-\uDE5F]|\uD835[\uDC00-\uDC19\uDC34-\uDC4D\uDC68-\uDC81\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB5\uDCD0-\uDCE9\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD38\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD6C-\uDD85\uDDA0-\uDDB9\uDDD4-\uDDED\uDE08-\uDE21\uDE3C-\uDE55\uDE70-\uDE89\uDEA8-\uDEC0\uDEE2-\uDEFA\uDF1C-\uDF34\uDF56-\uDF6E\uDF90-\uDFA8\uDFCA]|\uD83A[\uDD00-\uDD21]' + }, + { + 'name': 'M', + 'alias': 'Mark', + 'bmp': '\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09FE\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B55-\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C04\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D81-\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u192B\u1930-\u193B\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1AC0\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA82C\uA880\uA881\uA8B4-\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F', + 'astral': '\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD803[\uDD24-\uDD27\uDEAB\uDEAC\uDF46-\uDF50]|\uD804[\uDC00-\uDC02\uDC38-\uDC46\uDC7F-\uDC82\uDCB0-\uDCBA\uDD00-\uDD02\uDD27-\uDD34\uDD45\uDD46\uDD73\uDD80-\uDD82\uDDB3-\uDDC0\uDDC9-\uDDCC\uDDCE\uDDCF\uDE2C-\uDE37\uDE3E\uDEDF-\uDEEA\uDF00-\uDF03\uDF3B\uDF3C\uDF3E-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC35-\uDC46\uDC5E\uDCB0-\uDCC3\uDDAF-\uDDB5\uDDB8-\uDDC0\uDDDC\uDDDD\uDE30-\uDE40\uDEAB-\uDEB7\uDF1D-\uDF2B]|\uD806[\uDC2C-\uDC3A\uDD30-\uDD35\uDD37\uDD38\uDD3B-\uDD3E\uDD40\uDD42\uDD43\uDDD1-\uDDD7\uDDDA-\uDDE0\uDDE4\uDE01-\uDE0A\uDE33-\uDE39\uDE3B-\uDE3E\uDE47\uDE51-\uDE5B\uDE8A-\uDE99]|\uD807[\uDC2F-\uDC36\uDC38-\uDC3F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD31-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD45\uDD47\uDD8A-\uDD8E\uDD90\uDD91\uDD93-\uDD97\uDEF3-\uDEF6]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF4F\uDF51-\uDF87\uDF8F-\uDF92\uDFE4\uDFF0\uDFF1]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A\uDD30-\uDD36\uDEEC-\uDEEF]|\uD83A[\uDCD0-\uDCD6\uDD44-\uDD4A]|\uDB40[\uDD00-\uDDEF]' + }, + { + 'name': 'Mc', + 'alias': 'Spacing_Mark', + 'bmp': '\u0903\u093B\u093E-\u0940\u0949-\u094C\u094E\u094F\u0982\u0983\u09BE-\u09C0\u09C7\u09C8\u09CB\u09CC\u09D7\u0A03\u0A3E-\u0A40\u0A83\u0ABE-\u0AC0\u0AC9\u0ACB\u0ACC\u0B02\u0B03\u0B3E\u0B40\u0B47\u0B48\u0B4B\u0B4C\u0B57\u0BBE\u0BBF\u0BC1\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCC\u0BD7\u0C01-\u0C03\u0C41-\u0C44\u0C82\u0C83\u0CBE\u0CC0-\u0CC4\u0CC7\u0CC8\u0CCA\u0CCB\u0CD5\u0CD6\u0D02\u0D03\u0D3E-\u0D40\u0D46-\u0D48\u0D4A-\u0D4C\u0D57\u0D82\u0D83\u0DCF-\u0DD1\u0DD8-\u0DDF\u0DF2\u0DF3\u0F3E\u0F3F\u0F7F\u102B\u102C\u1031\u1038\u103B\u103C\u1056\u1057\u1062-\u1064\u1067-\u106D\u1083\u1084\u1087-\u108C\u108F\u109A-\u109C\u17B6\u17BE-\u17C5\u17C7\u17C8\u1923-\u1926\u1929-\u192B\u1930\u1931\u1933-\u1938\u1A19\u1A1A\u1A55\u1A57\u1A61\u1A63\u1A64\u1A6D-\u1A72\u1B04\u1B35\u1B3B\u1B3D-\u1B41\u1B43\u1B44\u1B82\u1BA1\u1BA6\u1BA7\u1BAA\u1BE7\u1BEA-\u1BEC\u1BEE\u1BF2\u1BF3\u1C24-\u1C2B\u1C34\u1C35\u1CE1\u1CF7\u302E\u302F\uA823\uA824\uA827\uA880\uA881\uA8B4-\uA8C3\uA952\uA953\uA983\uA9B4\uA9B5\uA9BA\uA9BB\uA9BE-\uA9C0\uAA2F\uAA30\uAA33\uAA34\uAA4D\uAA7B\uAA7D\uAAEB\uAAEE\uAAEF\uAAF5\uABE3\uABE4\uABE6\uABE7\uABE9\uABEA\uABEC', + 'astral': '\uD804[\uDC00\uDC02\uDC82\uDCB0-\uDCB2\uDCB7\uDCB8\uDD2C\uDD45\uDD46\uDD82\uDDB3-\uDDB5\uDDBF\uDDC0\uDDCE\uDE2C-\uDE2E\uDE32\uDE33\uDE35\uDEE0-\uDEE2\uDF02\uDF03\uDF3E\uDF3F\uDF41-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63]|\uD805[\uDC35-\uDC37\uDC40\uDC41\uDC45\uDCB0-\uDCB2\uDCB9\uDCBB-\uDCBE\uDCC1\uDDAF-\uDDB1\uDDB8-\uDDBB\uDDBE\uDE30-\uDE32\uDE3B\uDE3C\uDE3E\uDEAC\uDEAE\uDEAF\uDEB6\uDF20\uDF21\uDF26]|\uD806[\uDC2C-\uDC2E\uDC38\uDD30-\uDD35\uDD37\uDD38\uDD3D\uDD40\uDD42\uDDD1-\uDDD3\uDDDC-\uDDDF\uDDE4\uDE39\uDE57\uDE58\uDE97]|\uD807[\uDC2F\uDC3E\uDCA9\uDCB1\uDCB4\uDD8A-\uDD8E\uDD93\uDD94\uDD96\uDEF5\uDEF6]|\uD81B[\uDF51-\uDF87\uDFF0\uDFF1]|\uD834[\uDD65\uDD66\uDD6D-\uDD72]' + }, + { + 'name': 'Me', + 'alias': 'Enclosing_Mark', + 'bmp': '\u0488\u0489\u1ABE\u20DD-\u20E0\u20E2-\u20E4\uA670-\uA672' + }, + { + 'name': 'Mn', + 'alias': 'Nonspacing_Mark', + 'bmp': '\u0300-\u036F\u0483-\u0487\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2\u09E3\u09FE\u0A01\u0A02\u0A3C\u0A41\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7\u0AC8\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B55\u0B56\u0B62\u0B63\u0B82\u0BC0\u0BCD\u0C00\u0C04\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81\u0CBC\u0CBF\u0CC6\u0CCC\u0CCD\u0CE2\u0CE3\u0D00\u0D01\u0D3B\u0D3C\u0D41-\u0D44\u0D4D\u0D62\u0D63\u0D81\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039\u103A\u103D\u103E\u1058\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085\u1086\u108D\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4\u17B5\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193B\u1A17\u1A18\u1A1B\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1AB0-\u1ABD\u1ABF\u1AC0\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80\u1B81\u1BA2-\u1BA5\u1BA8\u1BA9\u1BAB-\u1BAD\u1BE6\u1BE8\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302D\u3099\u309A\uA66F\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA825\uA826\uA82C\uA8C4\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uA9BD\uA9E5\uAA29-\uAA2E\uAA31\uAA32\uAA35\uAA36\uAA43\uAA4C\uAA7C\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEC\uAAED\uAAF6\uABE5\uABE8\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F', + 'astral': '\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD803[\uDD24-\uDD27\uDEAB\uDEAC\uDF46-\uDF50]|\uD804[\uDC01\uDC38-\uDC46\uDC7F-\uDC81\uDCB3-\uDCB6\uDCB9\uDCBA\uDD00-\uDD02\uDD27-\uDD2B\uDD2D-\uDD34\uDD73\uDD80\uDD81\uDDB6-\uDDBE\uDDC9-\uDDCC\uDDCF\uDE2F-\uDE31\uDE34\uDE36\uDE37\uDE3E\uDEDF\uDEE3-\uDEEA\uDF00\uDF01\uDF3B\uDF3C\uDF40\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC38-\uDC3F\uDC42-\uDC44\uDC46\uDC5E\uDCB3-\uDCB8\uDCBA\uDCBF\uDCC0\uDCC2\uDCC3\uDDB2-\uDDB5\uDDBC\uDDBD\uDDBF\uDDC0\uDDDC\uDDDD\uDE33-\uDE3A\uDE3D\uDE3F\uDE40\uDEAB\uDEAD\uDEB0-\uDEB5\uDEB7\uDF1D-\uDF1F\uDF22-\uDF25\uDF27-\uDF2B]|\uD806[\uDC2F-\uDC37\uDC39\uDC3A\uDD3B\uDD3C\uDD3E\uDD43\uDDD4-\uDDD7\uDDDA\uDDDB\uDDE0\uDE01-\uDE0A\uDE33-\uDE38\uDE3B-\uDE3E\uDE47\uDE51-\uDE56\uDE59-\uDE5B\uDE8A-\uDE96\uDE98\uDE99]|\uD807[\uDC30-\uDC36\uDC38-\uDC3D\uDC3F\uDC92-\uDCA7\uDCAA-\uDCB0\uDCB2\uDCB3\uDCB5\uDCB6\uDD31-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD45\uDD47\uDD90\uDD91\uDD95\uDD97\uDEF3\uDEF4]|\uD81A[\uDEF0-\uDEF4\uDF30-\uDF36]|\uD81B[\uDF4F\uDF8F-\uDF92\uDFE4]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD67-\uDD69\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A\uDD30-\uDD36\uDEEC-\uDEEF]|\uD83A[\uDCD0-\uDCD6\uDD44-\uDD4A]|\uDB40[\uDD00-\uDDEF]' + }, + { + 'name': 'N', + 'alias': 'Number', + 'bmp': '0-9\xB2\xB3\xB9\xBC-\xBE\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u09F4-\u09F9\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0B72-\u0B77\u0BE6-\u0BF2\u0C66-\u0C6F\u0C78-\u0C7E\u0CE6-\u0CEF\u0D58-\u0D5E\u0D66-\u0D78\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F33\u1040-\u1049\u1090-\u1099\u1369-\u137C\u16EE-\u16F0\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1946-\u194F\u19D0-\u19DA\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\u2070\u2074-\u2079\u2080-\u2089\u2150-\u2182\u2185-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3007\u3021-\u3029\u3038-\u303A\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA620-\uA629\uA6E6-\uA6EF\uA830-\uA835\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19', + 'astral': '\uD800[\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDEE1-\uDEFB\uDF20-\uDF23\uDF41\uDF4A\uDFD1-\uDFD5]|\uD801[\uDCA0-\uDCA9]|\uD802[\uDC58-\uDC5F\uDC79-\uDC7F\uDCA7-\uDCAF\uDCFB-\uDCFF\uDD16-\uDD1B\uDDBC\uDDBD\uDDC0-\uDDCF\uDDD2-\uDDFF\uDE40-\uDE48\uDE7D\uDE7E\uDE9D-\uDE9F\uDEEB-\uDEEF\uDF58-\uDF5F\uDF78-\uDF7F\uDFA9-\uDFAF]|\uD803[\uDCFA-\uDCFF\uDD30-\uDD39\uDE60-\uDE7E\uDF1D-\uDF26\uDF51-\uDF54\uDFC5-\uDFCB]|\uD804[\uDC52-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9\uDDE1-\uDDF4\uDEF0-\uDEF9]|\uD805[\uDC50-\uDC59\uDCD0-\uDCD9\uDE50-\uDE59\uDEC0-\uDEC9\uDF30-\uDF3B]|\uD806[\uDCE0-\uDCF2\uDD50-\uDD59]|\uD807[\uDC50-\uDC6C\uDD50-\uDD59\uDDA0-\uDDA9\uDFC0-\uDFD4]|\uD809[\uDC00-\uDC6E]|\uD81A[\uDE60-\uDE69\uDF50-\uDF59\uDF5B-\uDF61]|\uD81B[\uDE80-\uDE96]|\uD834[\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDFCE-\uDFFF]|\uD838[\uDD40-\uDD49\uDEF0-\uDEF9]|\uD83A[\uDCC7-\uDCCF\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]' + }, + { + 'name': 'Nd', + 'alias': 'Decimal_Number', + 'bmp': '0-9\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19', + 'astral': '\uD801[\uDCA0-\uDCA9]|\uD803[\uDD30-\uDD39]|\uD804[\uDC66-\uDC6F\uDCF0-\uDCF9\uDD36-\uDD3F\uDDD0-\uDDD9\uDEF0-\uDEF9]|\uD805[\uDC50-\uDC59\uDCD0-\uDCD9\uDE50-\uDE59\uDEC0-\uDEC9\uDF30-\uDF39]|\uD806[\uDCE0-\uDCE9\uDD50-\uDD59]|\uD807[\uDC50-\uDC59\uDD50-\uDD59\uDDA0-\uDDA9]|\uD81A[\uDE60-\uDE69\uDF50-\uDF59]|\uD835[\uDFCE-\uDFFF]|\uD838[\uDD40-\uDD49\uDEF0-\uDEF9]|\uD83A[\uDD50-\uDD59]|\uD83E[\uDFF0-\uDFF9]' + }, + { + 'name': 'Nl', + 'alias': 'Letter_Number', + 'bmp': '\u16EE-\u16F0\u2160-\u2182\u2185-\u2188\u3007\u3021-\u3029\u3038-\u303A\uA6E6-\uA6EF', + 'astral': '\uD800[\uDD40-\uDD74\uDF41\uDF4A\uDFD1-\uDFD5]|\uD809[\uDC00-\uDC6E]' + }, + { + 'name': 'No', + 'alias': 'Other_Number', + 'bmp': '\xB2\xB3\xB9\xBC-\xBE\u09F4-\u09F9\u0B72-\u0B77\u0BF0-\u0BF2\u0C78-\u0C7E\u0D58-\u0D5E\u0D70-\u0D78\u0F2A-\u0F33\u1369-\u137C\u17F0-\u17F9\u19DA\u2070\u2074-\u2079\u2080-\u2089\u2150-\u215F\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2CFD\u3192-\u3195\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\uA830-\uA835', + 'astral': '\uD800[\uDD07-\uDD33\uDD75-\uDD78\uDD8A\uDD8B\uDEE1-\uDEFB\uDF20-\uDF23]|\uD802[\uDC58-\uDC5F\uDC79-\uDC7F\uDCA7-\uDCAF\uDCFB-\uDCFF\uDD16-\uDD1B\uDDBC\uDDBD\uDDC0-\uDDCF\uDDD2-\uDDFF\uDE40-\uDE48\uDE7D\uDE7E\uDE9D-\uDE9F\uDEEB-\uDEEF\uDF58-\uDF5F\uDF78-\uDF7F\uDFA9-\uDFAF]|\uD803[\uDCFA-\uDCFF\uDE60-\uDE7E\uDF1D-\uDF26\uDF51-\uDF54\uDFC5-\uDFCB]|\uD804[\uDC52-\uDC65\uDDE1-\uDDF4]|\uD805[\uDF3A\uDF3B]|\uD806[\uDCEA-\uDCF2]|\uD807[\uDC5A-\uDC6C\uDFC0-\uDFD4]|\uD81A[\uDF5B-\uDF61]|\uD81B[\uDE80-\uDE96]|\uD834[\uDEE0-\uDEF3\uDF60-\uDF78]|\uD83A[\uDCC7-\uDCCF]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D]|\uD83C[\uDD00-\uDD0C]' + }, + { + 'name': 'P', + 'alias': 'Punctuation', + 'bmp': '!-#%-\\*,-\\/:;\\?@\\[-\\]_\\{\\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65', + 'astral': '\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDEAD\uDF55-\uDF59]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5A\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDF3C-\uDF3E]|\uD806[\uDC3B\uDD44-\uDD46\uDDE2\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8\uDFFF]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A\uDFE2]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]' + }, + { + 'name': 'Pc', + 'alias': 'Connector_Punctuation', + 'bmp': '_\u203F\u2040\u2054\uFE33\uFE34\uFE4D-\uFE4F\uFF3F' + }, + { + 'name': 'Pd', + 'alias': 'Dash_Punctuation', + 'bmp': '\\-\u058A\u05BE\u1400\u1806\u2010-\u2015\u2E17\u2E1A\u2E3A\u2E3B\u2E40\u301C\u3030\u30A0\uFE31\uFE32\uFE58\uFE63\uFF0D', + 'astral': '\uD803\uDEAD' + }, + { + 'name': 'Pe', + 'alias': 'Close_Punctuation', + 'bmp': '\\)\\]\\}\u0F3B\u0F3D\u169C\u2046\u207E\u208E\u2309\u230B\u232A\u2769\u276B\u276D\u276F\u2771\u2773\u2775\u27C6\u27E7\u27E9\u27EB\u27ED\u27EF\u2984\u2986\u2988\u298A\u298C\u298E\u2990\u2992\u2994\u2996\u2998\u29D9\u29DB\u29FD\u2E23\u2E25\u2E27\u2E29\u3009\u300B\u300D\u300F\u3011\u3015\u3017\u3019\u301B\u301E\u301F\uFD3E\uFE18\uFE36\uFE38\uFE3A\uFE3C\uFE3E\uFE40\uFE42\uFE44\uFE48\uFE5A\uFE5C\uFE5E\uFF09\uFF3D\uFF5D\uFF60\uFF63' + }, + { + 'name': 'Pf', + 'alias': 'Final_Punctuation', + 'bmp': '\xBB\u2019\u201D\u203A\u2E03\u2E05\u2E0A\u2E0D\u2E1D\u2E21' + }, + { + 'name': 'Pi', + 'alias': 'Initial_Punctuation', + 'bmp': '\xAB\u2018\u201B\u201C\u201F\u2039\u2E02\u2E04\u2E09\u2E0C\u2E1C\u2E20' + }, + { + 'name': 'Po', + 'alias': 'Other_Punctuation', + 'bmp': '!-#%-\'\\*,\\.\\/:;\\?@\\\xA1\xA7\xB6\xB7\xBF\u037E\u0387\u055A-\u055F\u0589\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u166E\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u1805\u1807-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2016\u2017\u2020-\u2027\u2030-\u2038\u203B-\u203E\u2041-\u2043\u2047-\u2051\u2053\u2055-\u205E\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00\u2E01\u2E06-\u2E08\u2E0B\u2E0E-\u2E16\u2E18\u2E19\u2E1B\u2E1E\u2E1F\u2E2A-\u2E2E\u2E30-\u2E39\u2E3C-\u2E3F\u2E41\u2E43-\u2E4F\u2E52\u3001-\u3003\u303D\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFE10-\uFE16\uFE19\uFE30\uFE45\uFE46\uFE49-\uFE4C\uFE50-\uFE52\uFE54-\uFE57\uFE5F-\uFE61\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF07\uFF0A\uFF0C\uFF0E\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3C\uFF61\uFF64\uFF65', + 'astral': '\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDF55-\uDF59]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5A\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDF3C-\uDF3E]|\uD806[\uDC3B\uDD44-\uDD46\uDDE2\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8\uDFFF]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A\uDFE2]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]' + }, + { + 'name': 'Ps', + 'alias': 'Open_Punctuation', + 'bmp': '\\(\\[\\{\u0F3A\u0F3C\u169B\u201A\u201E\u2045\u207D\u208D\u2308\u230A\u2329\u2768\u276A\u276C\u276E\u2770\u2772\u2774\u27C5\u27E6\u27E8\u27EA\u27EC\u27EE\u2983\u2985\u2987\u2989\u298B\u298D\u298F\u2991\u2993\u2995\u2997\u29D8\u29DA\u29FC\u2E22\u2E24\u2E26\u2E28\u2E42\u3008\u300A\u300C\u300E\u3010\u3014\u3016\u3018\u301A\u301D\uFD3F\uFE17\uFE35\uFE37\uFE39\uFE3B\uFE3D\uFE3F\uFE41\uFE43\uFE47\uFE59\uFE5B\uFE5D\uFF08\uFF3B\uFF5B\uFF5F\uFF62' + }, + { + 'name': 'S', + 'alias': 'Symbol', + 'bmp': '\\$\\+<->\\^`\\|~\xA2-\xA6\xA8\xA9\xAC\xAE-\xB1\xB4\xB8\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384\u0385\u03F6\u0482\u058D-\u058F\u0606-\u0608\u060B\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u07FE\u07FF\u09F2\u09F3\u09FA\u09FB\u0AF1\u0B70\u0BF3-\u0BFA\u0C7F\u0D4F\u0D79\u0E3F\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u17DB\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u2044\u2052\u207A-\u207C\u208A-\u208C\u20A0-\u20BF\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A\u218B\u2190-\u2307\u230C-\u2328\u232B-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u2767\u2794-\u27C4\u27C7-\u27E5\u27F0-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u309B\u309C\u3190\u3191\u3196-\u319F\u31C0-\u31E3\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA700-\uA716\uA720\uA721\uA789\uA78A\uA828-\uA82B\uA836-\uA839\uAA77-\uAA79\uAB5B\uAB6A\uAB6B\uFB29\uFBB2-\uFBC1\uFDFC\uFDFD\uFE62\uFE64-\uFE66\uFE69\uFF04\uFF0B\uFF1C-\uFF1E\uFF3E\uFF40\uFF5C\uFF5E\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFFC\uFFFD', + 'astral': '\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\uD805\uDF3F|\uD807[\uDFD5-\uDFF1]|\uD81A[\uDF3C-\uDF3F\uDF45]|\uD82F\uDC9C|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDE8\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD838[\uDD4F\uDEFF]|\uD83B[\uDCAC\uDCB0\uDD2E\uDEF0\uDEF1]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED7\uDEE0-\uDEEC\uDEF0-\uDEFC\uDF00-\uDF73\uDF80-\uDFD8\uDFE0-\uDFEB]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0\uDCB1\uDD00-\uDD78\uDD7A-\uDDCB\uDDCD-\uDE53\uDE60-\uDE6D\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6\uDF00-\uDF92\uDF94-\uDFCA]' + }, + { + 'name': 'Sc', + 'alias': 'Currency_Symbol', + 'bmp': '\\$\xA2-\xA5\u058F\u060B\u07FE\u07FF\u09F2\u09F3\u09FB\u0AF1\u0BF9\u0E3F\u17DB\u20A0-\u20BF\uA838\uFDFC\uFE69\uFF04\uFFE0\uFFE1\uFFE5\uFFE6', + 'astral': '\uD807[\uDFDD-\uDFE0]|\uD838\uDEFF|\uD83B\uDCB0' + }, + { + 'name': 'Sk', + 'alias': 'Modifier_Symbol', + 'bmp': '\\^`\xA8\xAF\xB4\xB8\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384\u0385\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u309B\u309C\uA700-\uA716\uA720\uA721\uA789\uA78A\uAB5B\uAB6A\uAB6B\uFBB2-\uFBC1\uFF3E\uFF40\uFFE3', + 'astral': '\uD83C[\uDFFB-\uDFFF]' + }, + { + 'name': 'Sm', + 'alias': 'Math_Symbol', + 'bmp': '\\+<->\\|~\xAC\xB1\xD7\xF7\u03F6\u0606-\u0608\u2044\u2052\u207A-\u207C\u208A-\u208C\u2118\u2140-\u2144\u214B\u2190-\u2194\u219A\u219B\u21A0\u21A3\u21A6\u21AE\u21CE\u21CF\u21D2\u21D4\u21F4-\u22FF\u2320\u2321\u237C\u239B-\u23B3\u23DC-\u23E1\u25B7\u25C1\u25F8-\u25FF\u266F\u27C0-\u27C4\u27C7-\u27E5\u27F0-\u27FF\u2900-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2AFF\u2B30-\u2B44\u2B47-\u2B4C\uFB29\uFE62\uFE64-\uFE66\uFF0B\uFF1C-\uFF1E\uFF5C\uFF5E\uFFE2\uFFE9-\uFFEC', + 'astral': '\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD83B[\uDEF0\uDEF1]' + }, + { + 'name': 'So', + 'alias': 'Other_Symbol', + 'bmp': '\xA6\xA9\xAE\xB0\u0482\u058D\u058E\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u09FA\u0B70\u0BF3-\u0BF8\u0BFA\u0C7F\u0D4F\u0D79\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116\u2117\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u214A\u214C\u214D\u214F\u218A\u218B\u2195-\u2199\u219C-\u219F\u21A1\u21A2\u21A4\u21A5\u21A7-\u21AD\u21AF-\u21CD\u21D0\u21D1\u21D3\u21D5-\u21F3\u2300-\u2307\u230C-\u231F\u2322-\u2328\u232B-\u237B\u237D-\u239A\u23B4-\u23DB\u23E2-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u25B6\u25B8-\u25C0\u25C2-\u25F7\u2600-\u266E\u2670-\u2767\u2794-\u27BF\u2800-\u28FF\u2B00-\u2B2F\u2B45\u2B46\u2B4D-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u3190\u3191\u3196-\u319F\u31C0-\u31E3\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA828-\uA82B\uA836\uA837\uA839\uAA77-\uAA79\uFDFD\uFFE4\uFFE8\uFFED\uFFEE\uFFFC\uFFFD', + 'astral': '\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\uD805\uDF3F|\uD807[\uDFD5-\uDFDC\uDFE1-\uDFF1]|\uD81A[\uDF3C-\uDF3F\uDF45]|\uD82F\uDC9C|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDE8\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD838\uDD4F|\uD83B[\uDCAC\uDD2E]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFA]|\uD83D[\uDC00-\uDED7\uDEE0-\uDEEC\uDEF0-\uDEFC\uDF00-\uDF73\uDF80-\uDFD8\uDFE0-\uDFEB]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0\uDCB1\uDD00-\uDD78\uDD7A-\uDDCB\uDDCD-\uDE53\uDE60-\uDE6D\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6\uDF00-\uDF92\uDF94-\uDFCA]' + }, + { + 'name': 'Z', + 'alias': 'Separator', + 'bmp': ' \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000' + }, + { + 'name': 'Zl', + 'alias': 'Line_Separator', + 'bmp': '\u2028' + }, + { + 'name': 'Zp', + 'alias': 'Paragraph_Separator', + 'bmp': '\u2029' + }, + { + 'name': 'Zs', + 'alias': 'Space_Separator', + 'bmp': ' \xA0\u1680\u2000-\u200A\u202F\u205F\u3000' + } + ]; + + var jabref = createCommonjsModule(function (module, exports) { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.parse = void 0; + function decode(s, sep = ';') { + s = s.replace(/\n/g, ''); + let pos = 0; + const records = ['']; + while (pos < s.length) { + switch (s[pos]) { + case '\\': + pos++; + records[0] += s[pos]; + break; + case sep: + records.unshift(''); + break; + default: + records[0] += s[pos]; + } + pos++; + } + return records.reverse().filter(record => record); + } + const prefixes = { + fileDirectory: 'jabref-meta: fileDirectory:', + groupsversion: 'jabref-meta: groupsversion:', + groupstree: 'jabref-meta: groupstree:', + grouping: 'jabref-meta: grouping:', + }; + /** + * Import the JabRef groups from the `@string` comments in which they were stored. You would typically pass the comments parsed by [[bibtex.parse]] in here. + * + * JabRef knows several group types, and this parser parses most, but not all of them: + * + * * independent group: the keys listed in the group are the entries that are considered to belong to it + * * intersection: the keys listed in the group are considered to belong to the group if they're also in the parent group + * * union: the keys listed in the group are considered to belong to the group, and also the keys that are in the parent group + * * query: not supported by this parser + */ + function parse(comments) { + const result = { + root: [], + groups: {}, + fileDirectory: '', + version: '', + }; + const levels = []; + const decoded = { + fileDirectory: null, + groupsversion: null, + groupstree: null, + grouping: null, + }; + for (const comment of comments) { + for (const [meta, prefix] of Object.entries(prefixes)) { + if (comment.startsWith(prefix)) { + decoded[meta] = decode(comment.substring(prefix.length)); + } + } + } + result.version = decoded.groupsversion && decoded.groupsversion[0]; + result.fileDirectory = decoded.fileDirectory && decoded.fileDirectory[0]; + for (const tree of ['groupstree', 'grouping']) { + if (!decoded[tree]) + continue; + for (const encoded of decoded[tree]) { + const fields = decode(encoded); + const level_type_name = decode(fields.shift(), ':'); + const m = /^([0-9]+) (.+)/.exec(level_type_name[0]); + if (!m) + break; + const level = parseInt(m[1]); + const type = m[2]; // test for StaticGroup? + if (type === 'AllEntriesGroup') + continue; // root + const name = level_type_name[1]; + const intersection = decode(fields.shift())[0]; + const keys = tree === 'grouping' ? [] : fields.map(field => decode(field)[0]); + const group = { + name, + entries: keys, + groups: [], + }; + result.groups[name] = result.groups[name] || group; + if (levels.length < level) { + levels.push(group); + } + else { + levels[level - 1] = group; + } + if (level === 1) { + result.root.push(group); + } + else { + const parent = levels[level - 2]; + switch (intersection) { + case '0': // independent + break; + case '1': // intersect + group.entries = group.entries.filter(key => parent.entries.includes(key)); + break; + case '2': // union + group.entries = group.entries.concat(parent.entries.filter(key => !group.entries.includes(key))); + break; + } + levels[level - 2].groups.push(group); + } + } + } + return result; + } + exports.parse = parse; + + }); + + var bibtexParser = createCommonjsModule(function (module, exports) { + Object.defineProperty(exports, "__esModule", { value: true }); + exports.jabref = exports.chunker = exports.ast = exports.parse = void 0; + + + + class ParserError extends Error { + constructor(message, node) { + super(message); // 'Error' breaks prototype chain here + Object.setPrototypeOf(this, new.target.prototype); // restore prototype chain + this.name = this.constructor.name; + this.node = node; + } + } + class TeXError extends Error { + constructor(message, node, text) { + super(message); // 'Error' breaks prototype chain here + Object.setPrototypeOf(this, new.target.prototype); // restore prototype chain + this.name = this.constructor.name; + this.node = node; + this.text = text; + } + } + + const charClass = { + Lu: categories.filter(cat => ['Uppercase_Letter', 'Titlecase_Letter'].includes(cat.alias)).map(cat => cat.bmp).join(''), + Ll: categories.find(cat => cat.alias === 'Lowercase_Letter').bmp, + LnotLu: categories.filter(cat => ['Lowercase_Letter', 'Modifier_Letter', 'Other_Letter', 'Nonspacing_Mark', 'Spacing_Mark', 'Decimal_Number', 'Letter_Number'].includes(cat.alias)).map(cat => cat.bmp).join(''), + P: categories.find(cat => cat.alias === 'Punctuation').bmp, + L: categories.find(cat => cat.alias === 'Letter').bmp, + N: categories.filter(cat => ['Decimal_Number', 'Letter_Number'].includes(cat.alias)).map(cat => cat.bmp).join(''), + AlphaNum: categories.filter(cat => ['Letter', 'Decimal_Number', 'Letter_Number'].includes(cat.alias)).map(cat => cat.bmp).join(''), + LC: categories.find(cat => cat.alias === 'Cased_Letter').bmp, + }; + const marker = { + and: '\u0001', + comma: '\u0002', + space: '\u0003', + literal: '\u0004', + markup: '\u0005', + re: { + and: /./, + comma: /./, + space: /./, + literal: /./, + literalName: /./, + }, + clean(s) { + return s.replace(marker.re.space, ' ').replace(marker.re.comma, ', ').replace(marker.re.literal, ''); + }, + }; + marker.re = { + and: new RegExp(marker.and, 'g'), + comma: new RegExp(marker.comma, 'g'), + space: new RegExp(marker.space, 'g'), + literal: new RegExp(marker.literal, 'g'), + literalName: new RegExp(`^${marker.literal}([^${marker.literal}]*)${marker.literal}$`), + }; + const preserveCase = { + leadingCap: new RegExp(`^[${charClass.Lu}][${charClass.LnotLu}]+[${charClass.P}]?$`), + allCaps: new RegExp(`^[${charClass.Lu}${charClass.N}]{2,}$`), + allLower: new RegExp(`^[${charClass.Ll}${charClass.N}]{2,}$`), + joined: new RegExp(`^[${charClass.Lu}][${charClass.LnotLu}]*([-+][${charClass.L}${charClass.N}]+)*[${charClass.P}]*$`), + hasUpper: new RegExp(`[${charClass.Lu}]`), + hasLower: new RegExp(`[${charClass.Ll}]`), + isNumber: /^[0-9]+$/, + hasAlpha: new RegExp(`[${charClass.L}]`), + hasAlphaNum: new RegExp(`[${charClass.AlphaNum}]`), + notAlphaNum: new RegExp(`[^${charClass.AlphaNum}]`, 'g'), + sentenceStart: new RegExp(`(^|([\u2014:?!.]\\s+))[${charClass.Lu}]`, 'g'), + markup: /<\/?span[^>]*>/g, + acronym: new RegExp(`.*\\.${marker.markup}*[${charClass.Lu}]${marker.markup}*\\.$`), + notCaseSensitive: new RegExp(`[^${charClass.LC}]`), + isCaseSensitive: new RegExp(`[${charClass.LC}]`), + quoted: /("[^"]+")|(“[^“]+“)/g, + }; + const fields = { + creator: [ + 'author', + 'bookauthor', + 'collaborator', + 'commentator', + 'director', + 'editor', + 'editora', + 'editorb', + 'editors', + 'holder', + 'scriptwriter', + 'translator', + ], + title: [ + 'title', + 'series', + 'shorttitle', + 'booktitle', + 'type', + 'origtitle', + 'maintitle', + 'eventtitle', + ], + unnest: [ + 'publisher', + 'location', + ], + verbatim: [ + 'url', + 'doi', + 'file', + 'files', + 'eprint', + 'verba', + 'verbb', + 'verbc', + 'groups', + ], + html: [ + 'annotation', + 'comment', + 'annote', + 'review', + 'notes', + 'note', + ], + unabbrev: [ + 'journal', + 'journaltitle', + 'journal-full', + ], + }; + const english = [ + 'american', + 'british', + 'canadian', + 'english', + 'australian', + 'newzealand', + 'usenglish', + 'ukenglish', + 'en', + 'eng', + 'en-au', + 'en-bz', + 'en-ca', + 'en-cb', + 'en-gb', + 'en-ie', + 'en-jm', + 'en-nz', + 'en-ph', + 'en-tt', + 'en-us', + 'en-za', + 'en-zw', + 'anglais', + ]; + class Parser { + constructor(options = {}) { + this.in_preamble = false; + this.preamble = []; + this.log = function (str) { }; // tslint:disable-line variable-name only-arrow-functions no-empty + for (const [option, value] of Object.entries(options)) { + if (typeof value === 'undefined') + delete options[option]; + } + if (options.errorHandler === false) { + // tslint:disable-next-line only-arrow-functions no-empty + options.errorHandler = function (err) { }; + } + else if (options.errorHandler === undefined) { + // tslint:disable-next-line only-arrow-functions + options.errorHandler = function (err) { throw err; }; + } + if (typeof options.sentenceCase === 'boolean') { + options.sentenceCase = options.sentenceCase ? english : []; + } + else { + options.sentenceCase = options.sentenceCase || english; + } + if (!options.strings) + options.strings = {}; + if (!options.unabbreviate) + options.unabbreviate = {}; + if (options.raw) { + options.sentenceCase = false; + options.caseProtection = false; + } + this.options = Object.assign({ caseProtection: 'as-needed', verbatimFields: [/^citeulike-linkout-[0-9]+$/, ...fields.verbatim], verbatimCommands: ['url', 'href'], unnestFields: [...fields.title, ...fields.unnest, ...fields.verbatim], unnestMode: 'unwrap', htmlFields: fields.html, guessAlreadySentenceCased: true, markup: {} }, options); + const markup_defaults = { + enquote: { open: '\u201c', close: '\u201d' }, + sub: { open: '', close: '' }, + sup: { open: '', close: '' }, + bold: { open: '', close: '' }, + italics: { open: '', close: '' }, + smallCaps: { open: '', close: '' }, + caseProtect: { open: '', close: '' }, + roman: { open: '', close: '' }, + fixedWidth: { open: '', close: '' }, + }; + // patch in because the options will likely not have enquote and case-protect + for (const [markup, { open, close }] of Object.entries(markup_defaults)) { + this.options.markup[markup] = this.options.markup[markup] || { open, close }; + } + for (const i of [1, 2, 3, 4]) { // tslint:disable-line:no-magic-numbers + this.options.markup[`h${i}`] = this.options.markup[`h${i}`] || { open: ``, close: `` }; + } + this.unresolvedStrings = {}; + this.errors = []; + this.comments = []; + this.entries = []; + this.strings = {}; + this.newcommands = {}; + this.default_strings = { + JAN: [this.text('01')], + FEB: [this.text('02')], + MAR: [this.text('03')], + APR: [this.text('04')], + MAY: [this.text('05')], + JUN: [this.text('06')], + JUL: [this.text('07')], + AUG: [this.text('08')], + SEP: [this.text('09')], + OCT: [this.text('10')], + NOV: [this.text('11')], + DEC: [this.text('12')], + ACMCS: [this.text('ACM Computing Surveys')], + ACTA: [this.text('Acta Informatica')], + CACM: [this.text('Communications of the ACM')], + IBMJRD: [this.text('IBM Journal of Research and Development')], + IBMSJ: [this.text('IBM Systems Journal')], + IEEESE: [this.text('IEEE Transactions on Software Engineering')], + IEEETC: [this.text('IEEE Transactions on Computers')], + IEEETCAD: [this.text('IEEE Transactions on Computer-Aided Design of Integrated Circuits')], + IPL: [this.text('Information Processing Letters')], + JACM: [this.text('Journal of the ACM')], + JCSS: [this.text('Journal of Computer and System Sciences')], + SCP: [this.text('Science of Computer Programming')], + SICOMP: [this.text('SIAM Journal on Computing')], + TOCS: [this.text('ACM Transactions on Computer Systems')], + TODS: [this.text('ACM Transactions on Database Systems')], + TOG: [this.text('ACM Transactions on Graphics')], + TOMS: [this.text('ACM Transactions on Mathematical Software')], + TOOIS: [this.text('ACM Transactions on Office Information Systems')], + TOPLAS: [this.text('ACM Transactions on Programming Languages and Systems')], + TCS: [this.text('Theoretical Computer Science')], + }; + } + ast(input, clean = true) { + const _ast = []; + for (const chunk of chunker.parse(input)) { + let chunk_ast = grammar.parse(chunk.text, Object.assign(Object.assign({}, this.options), { combiningDiacritics: unicode2latex.diacritics.commands })); + if (clean) + chunk_ast = this.clean(chunk_ast); + _ast.push(chunk_ast); + } + return _ast; + } + parse(input) { + return this.options.async ? this.parseAsync(input) : this.parseSync(input); + } + parseSync(input) { + for (const chunk of chunker.parse(input)) { + this.parseChunk(chunk); + } + return this.parsed(); + } + async parseAsync(input) { + for (const chunk of await chunker.parse(input, { async: true })) { + this.parseChunk(chunk); + } + return this.parsed(); + } + parsed() { + this.field = null; + const strings = {}; + this.cleaning = { type: 'other' }; + for (const [key, value] of Object.entries(this.strings)) { + this.field = { + name: '@string', + text: '', + level: 0, + preserveRanges: null, + words: { + upper: 0, + lower: 0, + other: 0, + }, + }; + this.convert(this.clean(value)); + strings[key] = this.field.text; + } + return { + errors: this.errors, + entries: this.entries, + comments: this.comments, + strings, + preamble: this.preamble, + }; + } + preserve(start, end, reason) { + if (!this.field.preserveRanges) + return; + if (!end) { + this.field.preserveRanges = null; + return; + } + /* + this.field.preserveRanges = this.field.preserveRanges.filter(range => range.start < start || range.end > end) + if (this.field.preserveRanges.find(range => range.start <= start && range.end >= end)) return + */ + /* + if (this.field.preserveRanges && this.field.preserveRanges.length) { + const last = this.field.preserveRanges[this.field.preserveRanges.length - 1] + if (start < last.start) throw new Error(JSON.stringify({...last, new: { start, end, reason }, text: this.field.text})) + } + */ + this.field.preserveRanges.push({ start, end, reason }); + } + parseChunk(chunk) { + this.chunk = chunk.text; + try { + let bib = grammar.parse(chunk.text, Object.assign(Object.assign({}, this.options), { combiningDiacritics: unicode2latex.diacritics.commands })); + if (bib.kind !== 'Bibliography') + throw new Error(this.show(bib)); + bib = this.clean(bib); + for (const entity of bib.children) { + switch (entity.kind) { + case 'Entry': + case 'BracedComment': + case 'LineComment': + case 'PreambleExpression': + this.convert(entity); + break; + case 'StringDeclaration': + case 'NonEntryText': + break; + } + } + return bib; + } + catch (err) { + if (!err.location) + throw err; + this.errors.push({ + message: err.message, + line: err.location.start.line + chunk.offset.line, + column: err.location.start.column, + source: this.chunk, + }); + return null; + } + } + show(o) { + // tslint:disable-next-line prefer-template + let text = JSON.stringify(o); + if (this.chunk) + text += '\n' + this.chunk.trim(); + return text; + } + text(value = '') { + return { kind: 'Text', value, mode: 'text' }; + } + error(err, returnvalue) { + if (typeof this.options.errorHandler === 'function') + this.options.errorHandler(err); + return returnvalue; + } + condense(node) { + // apply cleaning to resulting children + node.value = node.value.map(child => this.clean(child)); + // unpack redundant blocks + node.value = node.value.reduce((acc, child, i) => { + if (child.kind === 'Block' && !child.case && Object.keys(child.markup).length === 0) { + acc = acc.concat(child.value); + } + else { + acc.push(child); + } + return acc; + }, []); + // condense text nodes to make whole words for sentence casing + node.value = node.value.reduce((acc, child, i) => { + if (acc.length === 0) { + acc.push(child); + return acc; + } + const last = acc[acc.length - 1]; + const next = node.value[i + 1]; + if (this.options.caseProtection === 'strict' && this.onlyCaseProtected(last) && child.kind === 'Text' && !child.value.match(preserveCase.isCaseSensitive) && this.onlyCaseProtected(next)) { + last.value.push(child); + delete last.source; + return acc; + } + if (last.kind === 'Block' && child.kind === 'Block' && Object.keys(last.markup).sort().join('/') === Object.keys(child.markup).sort().join('/')) { + last.value = last.value.concat(child.value); + delete last.source; + return acc; + } + if (last.kind === 'Text' && child.kind === 'Text' && last.mode === child.mode) { + last.value += child.value; + delete last.source; + return acc; + } + acc.push(child); + return acc; + }, []); + } + onlyCaseProtected(node) { + return (node === null || node === void 0 ? void 0 : node.kind) === 'Block' && node.case === 'protect' && Object.keys(node.markup).join('/') === ''; + } + argument(node, kind) { + if (!node.arguments || !node.arguments.required.length) + return (kind === 'none'); + // expect 'n' text arguments + if (typeof kind === 'number') { + if (node.arguments.required.length !== kind) + return false; + return node.arguments.required; + } + // return first argument if it's the only one + if (node.arguments.required.length !== 1) + return false; + // loose checking for text + if (kind === 'text') { + const first = node.arguments.required[0]; + if (first.kind === 'Block' && first.value.length === 1) { + if (first.value[0].kind === 'Text') + return first.value[0].value; + } + // fall back to strict kind check + kind = 'Text'; + } + // return first argument if it's the only one and is of the specified kind + if (node.arguments.required.length !== 1 || node.arguments.required[0].kind !== kind) + return false; + switch (kind) { + case 'Text': + return node.arguments.required[0].value; + case 'RegularCommand': + case 'Block': + return node.arguments.required[0]; + } + return false; + } + clean(node) { + if (Array.isArray(node)) + return node.map(child => this.clean(child)); + delete node.loc; + switch (node.kind) { + case 'InlineMath': + case 'DisplayMath': + return this.clean_block(node); + case 'Environment': + return this.clean_environment(node); + case 'Block': + return this.clean_block(node); + case 'Bibliography': + return this.clean_bib(node); + case 'RegularCommand': + return this.clean_command(node); + case 'DiacriticCommand': + return this.clean_diacritic(node); + case 'Entry': + return this.clean_entry(node); + case 'Field': + return this.options.raw ? node : this.clean_field(node); + case 'StringDeclaration': + return this.clean_stringdecl(node); + case 'StringReference': + return this.clean_stringref(node); + case 'SubscriptCommand': + case 'SuperscriptCommand': + return this.clean_script(node); + case 'SymbolCommand': + return this.clean_symbol(node); + case 'PreambleExpression': + return this.clean_preamble(node); + case 'Number': + case 'Text': + case 'BracedComment': + case 'LineComment': + return node; + default: + return this.error(new ParserError(`no cleanup method for ${this.show(node)}`, node), this.text()); + } + } + clean_preamble(node) { + this.in_preamble = true; + const clean = this.clean(node.value); + this.in_preamble = false; + return clean; + } + clean_bib(node) { + node.children = node.children.filter(child => child.kind !== 'NonEntryText').map(child => this.clean(child)); + return node; + } + clean_stringdecl(node) { + this.strings[node.name.toUpperCase()] = node.value; + return node; + } + clean_stringref(node) { + var _a; + const name = node.name.toUpperCase(); + const _string = this.strings[name] + || this.options.strings[name] + || this.default_strings[name] + || (fields.unabbrev.includes(this.cleaning.name) && ((_a = this.options.unabbreviate[name]) === null || _a === void 0 ? void 0 : _a.text) && [this.text(this.options.unabbreviate[name].text)]); + if (!_string) { + if (!this.unresolvedStrings[name]) + this.errors.push({ message: `Unresolved @string reference ${JSON.stringify(node.name)}` }); + this.unresolvedStrings[name] = true; + } + return this.clean({ + kind: 'Block', + // if the string isn't found, add it as-is but exempt it from sentence casing + case: _string ? undefined : 'preserve', + markup: {}, + value: _string ? JSON.parse(JSON.stringify(_string)) : [this.text(node.name)], + }); + } + clean_entry(node) { + const shortjournals = []; + for (const field of node.fields) { + if (fields.unabbrev.includes(field.name) && Array.isArray(field.value)) { + const abbr = field.value.map(v => v.source).join(''); + const journal = this.options.unabbreviate[abbr]; + if (journal) { + shortjournals.push(Object.assign(Object.assign({}, JSON.parse(JSON.stringify(field))), { name: 'shortjournal' })); + field.value = JSON.parse(JSON.stringify(journal.ast)); + } + } + } + node.fields = node.fields.concat(shortjournals).map(child => this.clean(child)); + return node; + } + startCleaning(name) { + name = name.toLowerCase(); + if (fields.title.includes(name)) { + this.cleaning = { type: 'title', name }; + } + else if (fields.creator.includes(name.replace(/s$/, ''))) { + this.cleaning = { type: 'creator', name: name.replace(/s$/, '') }; + } + else { + this.cleaning = { type: 'other', name }; + } + } + stripNoCase(node, strip, preserve) { + switch (node.kind) { + case 'RegularCommand': + // a bit cheaty to assume these to be nocased, but it's just more likely to be what people want + if (['chsf', 'bibstring', 'cite'].includes(node.command)) + strip = true; + node.arguments.required.map(arg => this.stripNoCase(arg, strip, preserve)); + break; + case 'Block': + case 'InlineMath': + case 'DisplayMath': + if (strip && node.case === 'protect') { + if (preserve) { + node.case = 'preserve'; + } + else { + delete node.case; + } + } + node.value.map(v => this.stripNoCase(v, strip || node.case === 'protect', preserve)); + break; + case 'Field': + if (Array.isArray(node.value)) + node.value.map(v => this.stripNoCase(v, strip, preserve)); + break; + } + } + isVerbatimField(name) { + return !!this.options.verbatimFields.find(p => (typeof p === 'string') ? name === p : name.match(p)); + } + clean_field(node) { + this.startCleaning(node.name); + this.stripNoCase(node, !this.options.caseProtection || this.isVerbatimField(node.name), this.options.sentenceCase.length === 0); + if (Array.isArray(node.value)) + this.condense(node); + return node; + } + clean_script(node) { + let m, value, singlechar; + // recognize combined forms like \^\circ + if (singlechar = unicode2latex.latex[node.source]) + return this.text(singlechar); + if ((m = node.source.match(/^([\^_])([^{}]+)$/)) && ((singlechar = unicode2latex.latex[`${m[1]}${m[2]}`]) || (singlechar = unicode2latex.latex[`${m[1]}{${m[2]}}`]))) + return this.text(singlechar); + if ((m = node.source.match(/^([\^_])\{([^{}]+)\}$/)) && ((singlechar = unicode2latex.latex[`${m[1]}${m[2]}`]) || (singlechar = unicode2latex.latex[`${m[1]}{${m[2]}}`]))) + return this.text(singlechar); + const cmd = node.kind === 'SuperscriptCommand' ? '^' : '_'; + if (typeof node.value === 'string' && (singlechar = unicode2latex.latex[`${cmd}${node.value}`] || unicode2latex.latex[`${cmd}{${node.value}}`])) { + return this.text(singlechar); + } + if (typeof node.value === 'string') { + value = [this.text(node.value)]; + } + else if (!Array.isArray(node.value)) { + value = [node.value]; + } + else { + value = node.value; + } + const mode = node.kind === 'SuperscriptCommand' ? 'sup' : 'sub'; + return this.clean({ + kind: 'Block', + markup: { [mode]: true }, + value, + }); + } + clean_environment(node) { + this.condense(node); + return node; + } + needsProtection(word) { + return !word.match(preserveCase.hasUpper) && word.match(preserveCase.hasLower); + } + clean_block(node) { + var _a; + this.condense(node); + if (this.options.caseProtection !== 'strict' && ((_a = this.cleaning) === null || _a === void 0 ? void 0 : _a.type) === 'title' && node.case === 'protect') { + // test whether we can get away with skipping case protection because it contains all words that will be preserved anyway when converting back to Title Case + let preserve = true; + for (const child of node.value) { + if (child.kind === 'Text') { + const value = child.value.trim(); + preserve = !value.match(preserveCase.isCaseSensitive) || !value.split(/\s+/).find(word => this.needsProtection(word)); + } + else { + preserve = false; + } + if (!preserve) + break; + } + if (preserve) + node.case = 'preserve'; + } + if (node.kind === 'Block') { + for (const [markup, on] of Object.entries(node.markup)) { + if (!on) + delete node.markup[markup]; + } + } + return node; + } + clean_diacritic(node) { + const char = node.dotless ? `\\${node.character}` : node.character; + let unicode = unicode2latex.latex[`\\${node.mark}{${char}}`] + || unicode2latex.latex[`\\${node.mark}${char}`] + || unicode2latex.latex[`{\\${node.mark} ${char}}`] + || unicode2latex.latex[`{\\${node.mark}${char}}`] + || unicode2latex.latex[`\\${node.mark} ${char}`]; + if (!unicode && !node.dotless && node.character.length === 1 && unicode2latex.diacritics.tounicode[node.mark]) + unicode = node.character + unicode2latex.diacritics.tounicode[node.mark]; + if (!unicode && !this.in_preamble) + return this.error(new TeXError(`Unhandled \\${node.mark}{${char}}`, node, this.chunk), this.text()); + return this.text(unicode); + } + clean_symbol(node) { + if (node.command === '\\') + return this.text('\n'); + return this.text(unicode2latex.latex[`\\${node.command}`] || node.command); + } + first_text_block(node) { + if (!node) + return null; + if (node.kind === 'Block') { + for (const child of node.value) { + switch (child.kind) { + case 'Text': + return child.value ? node : null; + case 'Block': + const candidate = this.first_text_block(child); + if (candidate) + return candidate; + break; + default: + return null; + } + } + } + else { + return null; + } + } + clean_command(node) { + var _a; + let arg, unicode; + if (unicode = unicode2latex.latex[node.source]) + return this.text(unicode); + switch (node.command) { + case 'newcommand': + if (((_a = node.arguments) === null || _a === void 0 ? void 0 : _a.required.length) === 2 + && node.arguments.required[0].kind === 'Block' + && node.arguments.required[0].value.length === 1 + && node.arguments.required[0].value[0].kind === 'RegularCommand' + && node.arguments.required[1].kind === 'Block') { + this.newcommands[node.arguments.required[0].value[0].command] = node.arguments.required[1].value; + return this.text(); + } + // console.log('newcommand?', JSON.stringify(node, null, 2)) + break; + case 'item': + return { kind: 'Markup', value: '
  • ', source: node.source }; + case 'frac': + if (arg = this.argument(node, 2)) { + if (arg[0].kind === 'Text' && arg[1].kind === 'Text' && (unicode = unicode2latex.latex[`\\frac{${arg[0].value}}{${arg[1].value}}`])) + return this.text(unicode); + return this.clean({ + kind: 'Block', + case: 'protect', + markup: {}, + value: [ + { kind: 'Block', markup: { sup: true }, value: [arg[0]] }, + this.text('\u2044'), + { kind: 'Block', markup: { sub: true }, value: [arg[1]] }, + ], + }); + } + break; + // ignore + case 'vspace': + case 'vphantom': + case 'path': + case 'aftergroup': + case 'ignorespaces': + case 'relax': + case 'noopsort': + case 'ifdefined': + case 'DeclarePrefChars': + case 'else': + case 'fi': + case 'makeatletter': + return this.text(); + case 'ElsevierGlyph': + if (arg = this.argument(node, 'Text')) { + if (unicode = unicode2latex.latex[`\\${node.command}{${arg}}`]) + return this.text(unicode); + return this.text(String.fromCharCode(parseInt(arg, 16))); + } + break; + case 'chsf': + if (this.argument(node, 'none')) + return this.text(); + if (arg = this.argument(node, 'Block')) + return this.clean(arg); + break; + case 'bibstring': + if (arg = this.argument(node, 'Block')) + return this.clean(arg); + break; + case 'cite': + if (arg = this.argument(node, 'Block')) + return this.clean(arg); + break; + case 'textsuperscript': + case 'sp': + if ((arg = this.argument(node, 'Text')) && (unicode = unicode2latex.latex[`^{${arg}}`])) + return this.text(unicode); + if (arg = this.argument(node, 'Block')) + return this.clean(arg); + break; + case 'textsubscript': + case 'sb': + if ((arg = this.argument(node, 'Text')) && (unicode = unicode2latex.latex[`_{${arg}}`])) + return this.text(unicode); + if (arg = this.argument(node, 'Block')) + return this.clean(arg); + break; + case 'textsc': + if (arg = this.argument(node, 'Block')) + return this.clean(arg); + break; + case 'enquote': + case 'mkbibquote': + if (arg = this.argument(node, 'Block')) + return this.clean(arg); + break; + case 'textbf': + case 'mkbibbold': + if (arg = this.argument(node, 'Block')) + return this.clean(arg); + break; + case 'section': + case 'subsection': + case 'subsubsection': + case 'subsubsubsection': + if (arg = this.argument(node, 'Block')) + return this.clean(arg); + break; + case 'mkbibitalic': + case 'mkbibemph': + case 'textit': + case 'emph': + if (arg = this.argument(node, 'Block')) + return this.clean(arg); + if (arg = this.argument(node, 'Text')) + return this.clean({ kind: 'Block', markup: { italics: true }, value: [this.text(arg)] }); + break; + case 'bibcyr': + if (this.argument(node, 'none')) + return this.text(); + if (arg = this.argument(node, 'Block')) + return this.clean(arg); + break; + case 'hspace': + case 'mathrm': + case 'textrm': + case 'ocirc': + case 'mbox': + if (arg = this.argument(node, 'text')) { + unicode = unicode2latex.latex[`\\${node.command}{${arg}}`]; + return this.text(unicode || (node.command === 'hspace' ? ' ' : arg)); + } + else if (!node.arguments.required.length) { + return this.text(); + } + else if (arg = this.argument(node, 'Block')) { + return this.clean(arg); + } + break; + // just take the URL? Not the label? + case 'href': + if (arg = this.argument(node, 2)) + return this.clean(arg[0]); + break; + case 'url': + if (arg = this.argument(node, 'Text')) + return this.text(arg); + if (arg = this.argument(node, 'Block')) + return this.clean(arg); + break; + case 'sl': + case 'em': + case 'it': + case 'itshape': + case 'bf': + case 'bfseries': + case 'sc': + case 'scshape': + case 'tt': + case 'rm': + case 'sf': + case 'verb': + // handled in the grammar + return this.text(); + // wouldn't know what to do with these + case 'left': + case 'right': + return this.text(); + case 'par': + return this.text('\n\n'); + case 'cyr': + if (this.argument(node, 'none')) + return this.text(); + break; + case 'polhk': + if (unicode = this.argument(node, 'text')) { + if (unicode.length === 1) + return this.text(unicode + '\u0328'); + } + if (this.argument(node, 'none')) + return this.text('\u0328'); + break; + default: + if (node.kind === 'RegularCommand' && this.newcommands[node.command]) { + return this.clean({ + kind: 'Block', + markup: {}, + value: JSON.parse(JSON.stringify(this.newcommands[node.command])), + }); + } + if (unicode2latex.diacritics.tounicode[node.command]) { + node.arguments.required = this.clean(node.arguments.required); + let block; + if (node.arguments.required.length === 1 && node.arguments.required[0].kind === 'Text') { + // no idea why I can't just straight return this but typescript just won't shut up + block = { + kind: 'Block', + markup: {}, + value: [{ + kind: 'DiacriticCommand', + mark: node.command, + character: node.arguments.required[0].value, + dotless: false, + loc: node.arguments.required[0].loc, + source: node.arguments.required[0].source, + }], + }; + return this.clean(block); + } + else if (block = this.first_text_block(node.arguments.required[0])) { + let fixed = false; + block.value = block.value.reduce((value, child) => { + if (!fixed && child.kind === 'Text') { + fixed = true; + value.push({ kind: 'DiacriticCommand', mark: node.command, character: child.value[0] }); + value.push(Object.assign(Object.assign({}, child), { value: child.value.substring(1) })); + } + else { + value.push(child); + } + return value; + }, []); + return this.clean({ + kind: 'Block', + markup: {}, + value: node.arguments.required, + }); + } + else { + // overline without arguments doesn't seem to render in LaTeX + if (node.command === 'overline') + return this.text(' '); + return this.clean({ + kind: 'Block', + markup: {}, + value: [this.text(' ' + unicode2latex.diacritics.tounicode[node.command])].concat(node.arguments.required), + }); + } + } + if (unicode = unicode2latex.latex[node.source] || unicode2latex.latex[`${node.source}{}`]) + return this.text(unicode); + if ((unicode = unicode2latex.latex[`\\${node.command}`] || unicode2latex.latex[`\\${node.command}{}`]) && this.argument(node, 'none')) + return this.text(unicode); + if ((arg = this.argument(node, 'Text')) && (unicode = unicode2latex.latex[`\\${node.command}{${arg}}`])) + return this.text(unicode); + break; + } + if (this.in_preamble) + return this.text(node.source); + return this.error(new TeXError(`Unhandled command: ${node.command}` + this.show(node), node, this.chunk), this.text()); + } + preserveCase(word) { + // word = word.replace(new RegExp(`"[${this.markup.enquote.open}${this.markup.enquote.close}:()]`, 'g'), '') + var _a, _b; + if (!word.trim()) + return false; + if (!word.match(preserveCase.hasAlphaNum)) + return true; + word = word.replace(/[\/’'”:()]/g, ''); + if (word === 'I') + return true; + if (word.length === 1) + return false; + if (word.replace(preserveCase.notCaseSensitive) === '') + return false; + // word = word.replace(preserveCase.notAlphaNum, '') + // simple cap at start of field + if (word.match(preserveCase.leadingCap) && ((_b = (_a = this.field) === null || _a === void 0 ? void 0 : _a.text) === null || _b === void 0 ? void 0 : _b.length) === 0) + return false; + if (word.match(preserveCase.allCaps)) + return true; + if (word.length > 1 && word.match(preserveCase.joined)) + return false; + if (word.match(preserveCase.hasUpper)) + return true; + if (word.match(preserveCase.isNumber)) + return true; + return false; + } + convert(node) { + if (Array.isArray(node)) + return node.map(child => this.convert(child)); + if (this.options.raw && this.field) + node = this.text(node.source); + switch (node.kind) { + case 'Markup': + if (this.field) + this.field.text += node.value; + break; + case 'BracedComment': + case 'LineComment': + this.comments.push(node.value); + break; + case 'Entry': + this.convert_entry(node); + break; + case 'Number': + this.convert_number(node); + break; + case 'Text': + this.convert_text(node); + break; + case 'Block': + case 'InlineMath': + case 'DisplayMath': + const start = this.field ? this.field.text.length : null; + const preserve = typeof start === 'number' && this.field.preserveRanges; + this.convert_block(node); + if (preserve && (node.case || node.kind.endsWith('Math'))) + this.preserve(start, this.field.text.length); // , `convert-block: case=${node.case}, math=${node.kind.endsWith('Math')}`) + break; + case 'Environment': + this.convert_environment(node); + break; + case 'PreambleExpression': + this.preamble.push(node.value.map(preamble => preamble.source).join('\n\n')); + break; + case 'DisplayMath': + case 'InlineMath': + case 'StringDeclaration': + break; + default: + return this.error(new ParserError(`no converter for ${node.kind}: ${this.show(node)}`, node), undefined); + } + } + splitOnce(s, sep, fromEnd = false) { + const split = fromEnd ? s.lastIndexOf(sep) : s.indexOf(sep); + return (split < 0) ? [s, ''] : [s.substr(0, split), s.substr(split + 1)]; + } + parseName(name) { + let parsed = null; + const parts = name.split(marker.comma); + if (parts.length && !parts.find(p => !p.match(/^[a-z]+(-i)?=/i))) { // extended name format + for (const part of parts) { + parsed = parsed || {}; + const [attr, value] = this.splitOnce(part.replace(marker.re.space, ''), '=').map(v => v.trim()); + if (!value) { + parsed = null; + break; + } + switch (attr.toLowerCase()) { + case 'family': + parsed.lastName = value; + break; + case 'given-i': + parsed.initial = value; + break; + case 'given': + parsed.firstName = value; + break; + case 'prefix': + parsed.prefix = value; + break; + case 'suffix': + parsed.suffix = value; + break; + case 'useprefix': + parsed.useprefix = value.toLowerCase() === 'true'; + break; + case 'juniorcomma': + parsed.useprefix = value.toLowerCase() === 'true'; + break; + default: + parsed[attr.toLowerCase()] = value; + break; + } + } + } + const prefix = /(.+?)\s+(vere|von|van den|van der|van|de|del|della|der|di|da|pietro|vanden|du|st.|st|la|lo|ter|bin|ibn|te|ten|op|ben|al)\s+(.+)/; + let m; + switch (parsed ? 0 : parts.length) { + case 0: + // already parsed + break; + case 1: // name without commas + // literal + if (marker.re.literalName.test(parts[0])) { + parsed = { literal: parts[0] }; + } + else if (m = parts[0].replace(marker.re.space, ' ').match(prefix)) { // split on prefix + parsed = { + firstName: m[1], + prefix: m[2], + lastName: m[3], + }; + } + else { + // top-level "firstname lastname" + const [firstName, lastName] = this.splitOnce(parts[0], marker.space, true); + if (lastName) { + parsed = { firstName, lastName }; + } + else { + parsed = { lastName: firstName }; + } + } + break; + case 2: // lastname, firstname + parsed = { + lastName: parts[0], + firstName: parts[1], + }; + break; + default: // lastname, suffix, firstname + parsed = { + lastName: parts[0], + suffix: parts[1], + firstName: parts.slice(2).join(marker.comma), + }; + } + for (const [k, v] of Object.entries(parsed)) { + if (typeof v !== 'string') + continue; + parsed[k] = marker.clean(v).trim(); + } + return parsed; + } + convert_entry(node) { + var _a; + this.entry = { + key: node.id, + type: node.type, + fields: {}, + creators: {}, + }; + this.entries.push(this.entry); + // order these first for language-dependent sentence casing + const order = ['langid', 'hyphenation', 'language']; + node.fields.sort((a, b) => { + const ia = order.indexOf(a.name); + const ib = order.indexOf(b.name); + if (ia === -1 && ib === -1) + return a.name.localeCompare(b.name); // doesn't matter really + if (ia === -1) + return 1; + if (ib === -1) + return -1; + return ia - ib; + }); + let sentenceCase = !!this.options.sentenceCase.length; // if sentenceCase is empty, no sentence casing + for (const field of node.fields) { + if (field.kind !== 'Field') + return this.error(new ParserError(`Expected Field, got ${field.kind}`, node), undefined); + this.startCleaning(field.name); + /* + if (this.options.raw && this.fieldType !== 'creator') { + this.entry.fields[field.name] = [ field.value.map(v => v.source).join('') ] + continue + } + */ + this.field = { + name: field.name, + text: '', + level: 0, + words: { + upper: 0, + lower: 0, + other: 0, + }, + preserveRanges: (sentenceCase && fields.title.includes(field.name)) ? [] : null, + html: this.options.htmlFields.includes(field.name), + }; + this.entry.fields[this.field.name] = this.entry.fields[this.field.name] || []; + // special case for 'title = 2020' + if (field.value.kind === 'Number') { + this.entry.fields[this.field.name].push(field.value.value); + this.field = null; + continue; + } + this.convert(field.value); + this.field.text = this.field.text.trim(); + this.field.text = this.field.text.replace(/<\/([a-z])><\1>/g, ''); + this.field.text = this.field.text.replace(/<([a-z])>(\s*)<\/\1>/g, '$1'); + if (!this.field.text) + continue; + // disable sentenceCasing if not an english + switch (this.field.name) { + case 'langid': + case 'hyphenation': + sentenceCase = sentenceCase && this.options.sentenceCase.includes(this.field.text.toLowerCase()); + break; + case 'language': + sentenceCase = sentenceCase && !!(this.field.text.toLowerCase().trim().split(/\s*,\s*/).find(lang => this.options.sentenceCase.includes(lang))); + break; + } + // "groups" is a jabref 3.8+ monstrosity + if (this.field.name.match(/^(keywords?|groups)$/)) { + for (let text of this.field.text.split(marker.comma)) { + text = text.trim(); + if (text) + this.entry.fields[this.field.name].push(text); + } + } + else if (this.cleaning.type === 'creator') { + if (!this.entry.creators[this.field.name]) + this.entry.creators[this.field.name] = []; + // {M. Halle, J. Bresnan, and G. Miller} + if (this.field.text.includes(`${marker.comma}${marker.and}`)) { // + this.field.text = this.field.text.replace(new RegExp(`${marker.comma}${marker.and}`, 'g'), marker.and).replace(new RegExp(marker.comma), marker.and); + } + for (const creator of this.field.text.split(marker.and)) { + this.entry.fields[this.field.name].push(marker.clean(creator)); + this.entry.creators[this.field.name].push(this.parseName(creator)); + } + } + else if (fields.unabbrev.includes(field.name)) { // doesn't get sentence casing anyhow TODO: booktitle does! + this.entry.fields[this.field.name].push((((_a = this.options.unabbreviate[this.field.text]) === null || _a === void 0 ? void 0 : _a.text) || this.field.text).normalize('NFC')); + } + else { + if (this.field.preserveRanges) { + if (this.options.guessAlreadySentenceCased && Math.max(this.field.words.upper, this.field.words.lower) > (this.field.words.other + Math.min(this.field.words.upper, this.field.words.lower))) { + this.preserve(null, null); // , 'mostly sentence cased already') + } + else { + const txt = this.field.text.replace(preserveCase.markup, markup => marker.markup.repeat(markup.length)); + let match; + preserveCase.sentenceStart.lastIndex = 0; + while ((match = preserveCase.sentenceStart.exec(txt))) { + // exclude stuff like "U.S. Taxes" + if (match.index > 2 && txt.substr(0, match.index + 1).match(preserveCase.acronym)) + continue; + this.preserve(match.index, match.index + match[0].length); // , `sentenceStart: ${match[0]} at ${match.index}..${match.index + match[0].length}`) + } + preserveCase.quoted.lastIndex = 0; + while ((match = preserveCase.quoted.exec(this.field.text))) { + this.preserve(match.index, match.index + match[0].length); // , 'quoted') + } + } + } + this.entry.fields[this.field.name].push(this.convertToSentenceCase(this.field.text).normalize('NFC')); + } + } + this.field = null; + } + convertToSentenceCase(text) { + if (!this.field.preserveRanges) + return text; + // always keep the leading char, but skip markup + const lead = text.match(/^(<[^>]+>)*./); + if (lead) { + this.preserve(lead[0].length - 1, lead[0].length); + } + else { + this.preserve(0, 1); + } + let sentenceCased = text.toLowerCase().replace(/(([\?!]\s*|^)([\'\"¡¿“‘„«\s]+)?[^\s])/g, x => x.toUpperCase()); + for (const { start, end } of this.field.preserveRanges) { + sentenceCased = sentenceCased.substring(0, start) + text.substring(start, end) + sentenceCased.substring(end); + } + if (text !== sentenceCased) + this.entry.sentenceCased = true; + return sentenceCased; + } + convert_number(node) { + this.field.text += `${node.value}`; + } + convert_text(node) { + if (node.mode === 'verbatim') { + this.field.text += node.value.trim(); + return; + } + // heuristic to detect pre-sentencecased text + for (const word of node.value.split(/\b/)) { + if (word.match(preserveCase.allLower)) { + this.field.words.lower++; + } + else if (word.match(preserveCase.allCaps)) { + this.field.words.upper++; + } + else if (word.match(preserveCase.hasAlpha)) { + this.field.words.other++; + } + } + if (this.field.level === 0 && this.cleaning.type === 'creator') { + this.field.text += node.value.replace(/\s+and\s+/ig, marker.and).replace(/\s*,\s*/g, marker.comma).replace(/\s+/g, marker.space); + return; + } + if (this.field.level === 0 && this.field.name.match(/^(keywords?|groups)$/)) { + this.field.text += node.value.replace(/\s*[;,]\s*/g, marker.comma); + return; + } + if (this.field.html) { + this.field.text += node.value.replace(/&/g, '&').replace(//g, '>'); + } + else if (this.field.preserveRanges) { + const words = node.value.split(/(\s+)/); + for (const word of words) { + const start = this.field.text.length; + this.field.text += word; + if (this.preserveCase(word)) + this.preserve(start, this.field.text.length); // , `word: ${JSON.stringify(word)}`) + } + } + else { + this.field.text += node.value; + } + } + convert_environment(node) { + this.field.text += { enumerate: '
      ', itemize: '
        ' }[node.env]; + this.convert_block(Object.assign(Object.assign({}, node), { kind: 'Block', markup: {} })); + this.field.text += { enumerate: '
    ', itemize: '' }[node.env]; + } + convert_block(node) { + const start = this.field.text.length; + let prefix = ''; + let postfix = ''; + if (this.options.caseProtection !== 'strict' && this.cleaning.type === 'other') + delete node.case; + if (this.cleaning.type === 'creator' && node.case === 'protect') { + prefix += marker.literal; + postfix = marker.literal + postfix; + delete node.case; + } + if (node.case === 'protect') { + prefix += this.options.markup.caseProtect.open; + postfix = this.options.markup.caseProtect.close + postfix; + } + if (node.kind === 'Block') { + for (const markup of Object.keys(node.markup)) { + if (!this.options.markup[markup]) + return this.error(new ParserError(`markup: ${markup}`, node), undefined); + prefix += this.options.markup[markup].open; + postfix = this.options.markup[markup].close + postfix; + } + } + const end = { + withoutPrefix: this.field.text.length, + withPrefix: this.field.text.length + prefix.length, + }; + this.field.text += prefix; + this.field.level++; + this.convert(node.value); + this.field.level--; + const added = this.field.text.substring(end.withPrefix); + const added_text = added.replace(/<\/?[^>]+>/g, ''); + const needsProtection = added_text && ((this.options.caseProtection === 'strict' && added_text.match(preserveCase.isCaseSensitive)) + || + (this.options.caseProtection === 'as-needed' && added_text.split(/\s+/).find(word => this.needsProtection(word)))); + if (!added) { // nothing was added, so remove prefix + this.field.text = this.field.text.substring(0, end.withoutPrefix); + } + else if (this.field.preserveRanges && prefix === this.options.markup.caseProtect.open && !needsProtection) { + // something was added that didn't actually need case protection + this.field.text = this.field.text.substring(0, end.withoutPrefix) + added; + this.field.preserveRanges = this.field.preserveRanges.filter(range => range.start < end.withoutPrefix); + } + else { + this.field.text += postfix; + } + this.field.text = this.field.text.replace(/<(sup|sub)>([^<>]+)<\/\1>$/i, (m, mode, chars) => { + const cmd = mode === 'sup' ? '^' : '_'; + let script = ''; + for (const char of chars) { + const unicode = unicode2latex.latex[`${cmd}${char}`] || unicode2latex.latex[`${cmd}{${char}}`]; + script += unicode ? unicode : `<${mode}>${char}`; + } + script = script.replace(new RegExp(`<${mode}>`, 'g'), ''); + return script.length < m.length ? script : m; + }); + if (node.case && this.field.preserveRanges) + this.preserve(start, this.field.text.length); // , 'in convert-block ' + node.source || '') + } + } + /** + * parse bibtex. This will try to convert TeX commands into unicode equivalents, and apply `@string` expansion + */ + function parse(input, options = {}) { + const parser = new Parser(options); + return parser.parse(input); + } + exports.parse = parse; + function ast(input, options = {}, clean = true) { + const parser = new Parser(options); + return parser.ast(input, clean); + } + exports.ast = ast; + var chunker_2 = chunker; + Object.defineProperty(exports, "chunker", { enumerable: true, get: function () { return chunker_2.parse; } }); + + Object.defineProperty(exports, "jabref", { enumerable: true, get: function () { return jabref.parse; } }); + + }); + + var Library = /** @class */ (function () { + function Library(entries) { + this.entries = entries; + } + Object.defineProperty(Library.prototype, "size", { + get: function () { + return Object.keys(this.entries).length; + }, + enumerable: false, + configurable: true + }); + /** + * For the given citekey, find the corresponding `Entry` and return a + * collection of template variable assignments. + */ + Library.prototype.getTemplateVariablesForCitekey = function (citekey) { + var _a; + var entry = this.entries[citekey]; + var shortcuts = { + citekey: citekey, + abstract: entry.abstract, + authorString: entry.authorString, + containerTitle: entry.containerTitle, + DOI: entry.DOI, + eprint: entry.eprint, + eprinttype: entry.eprinttype, + eventPlace: entry.eventPlace, + note: entry.note, + page: entry.page, + publisher: entry.publisher, + publisherPlace: entry.publisherPlace, + title: entry.title, + titleShort: entry.titleShort, + URL: entry.URL, + year: (_a = entry.year) === null || _a === void 0 ? void 0 : _a.toString(), + zoteroSelectURI: entry.zoteroSelectURI, + }; + return __assign({ entry: entry.toJSON() }, shortcuts); + }; + return Library; + }()); + /** + * Load reference entries from the given raw database data. + * + * Returns a list of `EntryData`, which should be wrapped with the relevant + * adapter and used to instantiate a `Library`. + */ + function loadEntries(databaseRaw, databaseType) { + var libraryArray; + if (databaseType == 'csl-json') { + libraryArray = JSON.parse(databaseRaw); + } + else if (databaseType == 'biblatex') { + var options = { + errorHandler: function (err) { + console.warn('Citation plugin: non-fatal error loading BibLaTeX entry:', err); + }, + }; + var parsed = bibtexParser.parse(databaseRaw, options); + parsed.errors.forEach(function (error) { + console.error("Citation plugin: fatal error loading BibLaTeX entry" + + (" (line " + error.line + ", column " + error.column + "):"), error.message); + }); + libraryArray = parsed.entries; + } + return libraryArray; + } + /** + * An `Entry` represents a single reference in a reference database. + * Each entry has a unique identifier, known in most reference managers as its + * "citekey." + */ + var Entry = /** @class */ (function () { + function Entry() { + } + Object.defineProperty(Entry.prototype, "year", { + get: function () { + var _a; + return this._year + ? parseInt(this._year) + : (_a = this.issuedDate) === null || _a === void 0 ? void 0 : _a.getUTCFullYear(); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(Entry.prototype, "note", { + get: function () { + var _a; + return (_a = this._note) === null || _a === void 0 ? void 0 : _a.map(function (el) { return el.replace(/(zotero:\/\/.+)/g, '[Link]($1)'); }).join('\n\n'); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(Entry.prototype, "zoteroSelectURI", { + /** + * A URI which will open the relevant entry in the Zotero client. + */ + get: function () { + return "zotero://select/items/@" + this.id; + }, + enumerable: false, + configurable: true + }); + Entry.prototype.toJSON = function () { + var _this = this; + var jsonObj = Object.assign({}, this); + // add getter values + var proto = Object.getPrototypeOf(this); + Object.entries(Object.getOwnPropertyDescriptors(proto)) + .filter(function (_a) { + var descriptor = _a[1]; + return typeof descriptor.get == 'function'; + }) + .forEach(function (_a) { + var key = _a[0], descriptor = _a[1]; + if (descriptor && key[0] !== '_') { + try { + var val = _this[key]; + jsonObj[key] = val; + } + catch (error) { + return; + } + } + }); + return jsonObj; + }; + return Entry; + }()); + var EntryCSLAdapter = /** @class */ (function (_super) { + __extends(EntryCSLAdapter, _super); + function EntryCSLAdapter(data) { + var _this = _super.call(this) || this; + _this.data = data; + _this.eprint = null; + _this.eprinttype = null; + _this.files = null; + return _this; + } + Object.defineProperty(EntryCSLAdapter.prototype, "id", { + get: function () { + return this.data.id; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryCSLAdapter.prototype, "type", { + get: function () { + return this.data.type; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryCSLAdapter.prototype, "abstract", { + get: function () { + return this.data.abstract; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryCSLAdapter.prototype, "author", { + get: function () { + return this.data.author; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryCSLAdapter.prototype, "authorString", { + get: function () { + return this.data.author + ? this.data.author.map(function (a) { return a.given + " " + a.family; }).join(', ') + : null; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryCSLAdapter.prototype, "containerTitle", { + get: function () { + return this.data['container-title']; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryCSLAdapter.prototype, "DOI", { + get: function () { + return this.data.DOI; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryCSLAdapter.prototype, "eventPlace", { + get: function () { + return this.data['event-place']; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryCSLAdapter.prototype, "issuedDate", { + get: function () { + if (!(this.data.issued && + this.data.issued['date-parts'] && + this.data.issued['date-parts'][0].length > 0)) + return null; + var _a = this.data.issued['date-parts'][0], year = _a[0], month = _a[1], day = _a[2]; + return new Date(Date.UTC(year, (month || 1) - 1, day || 1)); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryCSLAdapter.prototype, "page", { + get: function () { + return this.data.page; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryCSLAdapter.prototype, "publisher", { + get: function () { + return this.data.publisher; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryCSLAdapter.prototype, "publisherPlace", { + get: function () { + return this.data['publisher-place']; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryCSLAdapter.prototype, "title", { + get: function () { + return this.data.title; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryCSLAdapter.prototype, "titleShort", { + get: function () { + return this.data['title-short']; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryCSLAdapter.prototype, "URL", { + get: function () { + return this.data.URL; + }, + enumerable: false, + configurable: true + }); + return EntryCSLAdapter; + }(Entry)); + var BIBLATEX_PROPERTY_MAPPING = { + abstract: 'abstract', + booktitle: '_containerTitle', + date: 'issued', + doi: 'DOI', + eprint: 'eprint', + eprinttype: 'eprinttype', + eventtitle: 'event', + journal: '_containerTitle', + journaltitle: '_containerTitle', + location: 'publisherPlace', + pages: 'page', + shortjournal: 'containerTitleShort', + title: 'title', + shorttitle: 'titleShort', + url: 'URL', + venue: 'eventPlace', + year: '_year', + publisher: 'publisher', + note: '_note', + }; + // BibLaTeX parser returns arrays of property values (allowing for repeated + // property entries). For the following fields, just blindly take the first. + var BIBLATEX_PROPERTY_TAKE_FIRST = [ + 'abstract', + 'booktitle', + '_containerTitle', + 'date', + 'doi', + 'eprint', + 'eprinttype', + 'eventtitle', + 'journaltitle', + 'location', + 'pages', + 'shortjournal', + 'title', + 'shorttitle', + 'url', + 'venue', + '_year', + 'publisher', + ]; + var EntryBibLaTeXAdapter = /** @class */ (function (_super) { + __extends(EntryBibLaTeXAdapter, _super); + function EntryBibLaTeXAdapter(data) { + var _this = _super.call(this) || this; + _this.data = data; + Object.entries(BIBLATEX_PROPERTY_MAPPING).forEach(function (map) { + var src = map[0], tgt = map[1]; + if (src in _this.data.fields) { + var val = _this.data.fields[src]; + if (BIBLATEX_PROPERTY_TAKE_FIRST.includes(src)) { + val = val[0]; + } + _this[tgt] = val; + } + }); + return _this; + } + Object.defineProperty(EntryBibLaTeXAdapter.prototype, "id", { + get: function () { + return this.data.key; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryBibLaTeXAdapter.prototype, "type", { + get: function () { + return this.data.type; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryBibLaTeXAdapter.prototype, "files", { + get: function () { + // For some reason the bibtex parser doesn't reliably parse file list to + // array ; so we'll do it manually / redundantly + var ret = []; + if (this.data.fields.file) { + ret = ret.concat(this.data.fields.file.flatMap(function (x) { return x.split(';'); })); + } + if (this.data.fields.files) { + ret = ret.concat(this.data.fields.files.flatMap(function (x) { return x.split(';'); })); + } + return ret; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryBibLaTeXAdapter.prototype, "authorString", { + get: function () { + var _a; + if (this.data.creators.author) { + var names = this.data.creators.author.map(function (name) { + if (name.literal) + return name.literal; + var parts = [name.firstName, name.prefix, name.lastName, name.suffix]; + // Drop any null parts and join + return parts.filter(function (x) { return x; }).join(' '); + }); + return names.join(', '); + } + else { + return (_a = this.data.fields.author) === null || _a === void 0 ? void 0 : _a.join(', '); + } + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryBibLaTeXAdapter.prototype, "containerTitle", { + get: function () { + if (this._containerTitle) { + return this._containerTitle; + } + else if (this.data.fields.eprint) { + var prefix = this.data.fields.eprinttype + ? this.data.fields.eprinttype + ":" + : ''; + var suffix = this.data.fields.primaryclass + ? " [" + this.data.fields.primaryclass + "]" + : ''; + return "" + prefix + this.data.fields.eprint + suffix; + } + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryBibLaTeXAdapter.prototype, "issuedDate", { + get: function () { + return this.issued ? new Date(this.issued) : null; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(EntryBibLaTeXAdapter.prototype, "author", { + get: function () { + var _a; + return (_a = this.data.creators.author) === null || _a === void 0 ? void 0 : _a.map(function (a) { return ({ + given: a.firstName, + family: a.lastName, + }); }); + }, + enumerable: false, + configurable: true + }); + return EntryBibLaTeXAdapter; + }(Entry)); + + register(function (msg) { + return loadEntries(msg.databaseRaw, msg.databaseType); + }); + +}()); +}, 'data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyLmpzIiwic291cmNlcyI6WyJ3b3JrZXI6Ly93ZWItd29ya2VyL25vZGVfbW9kdWxlcy9wcm9taXNlLXdvcmtlci9yZWdpc3Rlci5qcyIsIndvcmtlcjovL3dlYi13b3JrZXIvbm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsIndvcmtlcjovL3dlYi13b3JrZXIvbm9kZV9tb2R1bGVzL0ByZXRvcnF1ZXJlL2JpYnRleC1wYXJzZXIvZ3JhbW1hci5qcyIsIndvcmtlcjovL3dlYi13b3JrZXIvbm9kZV9tb2R1bGVzL0ByZXRvcnF1ZXJlL2JpYnRleC1wYXJzZXIvY2h1bmtlci5qcyIsIndvcmtlcjovL3dlYi13b3JrZXIvbm9kZV9tb2R1bGVzL3VuaWNvZGUybGF0ZXgvaW5kZXguanMiLCJ3b3JrZXI6Ly93ZWItd29ya2VyL25vZGVfbW9kdWxlcy94cmVnZXhwL3Rvb2xzL291dHB1dC9jYXRlZ29yaWVzLmpzIiwid29ya2VyOi8vd2ViLXdvcmtlci9ub2RlX21vZHVsZXMvQHJldG9ycXVlcmUvYmlidGV4LXBhcnNlci9qYWJyZWYuanMiLCJ3b3JrZXI6Ly93ZWItd29ya2VyL25vZGVfbW9kdWxlcy9AcmV0b3JxdWVyZS9iaWJ0ZXgtcGFyc2VyL2luZGV4LmpzIiwic3JjL3R5cGVzLnRzIiwic3JjL3dvcmtlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCdcblxuZnVuY3Rpb24gaXNQcm9taXNlIChvYmopIHtcbiAgLy8gdmlhIGh0dHBzOi8vdW5wa2cuY29tL2lzLXByb21pc2VAMi4xLjAvaW5kZXguanNcbiAgcmV0dXJuICEhb2JqICYmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyB8fCB0eXBlb2Ygb2JqID09PSAnZnVuY3Rpb24nKSAmJiB0eXBlb2Ygb2JqLnRoZW4gPT09ICdmdW5jdGlvbidcbn1cblxuZnVuY3Rpb24gcmVnaXN0ZXJQcm9taXNlV29ya2VyIChjYWxsYmFjaykge1xuICBmdW5jdGlvbiBwb3N0T3V0Z29pbmdNZXNzYWdlIChlLCBtZXNzYWdlSWQsIGVycm9yLCByZXN1bHQpIHtcbiAgICBmdW5jdGlvbiBwb3N0TWVzc2FnZSAobXNnKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmICh0eXBlb2Ygc2VsZi5wb3N0TWVzc2FnZSAhPT0gJ2Z1bmN0aW9uJykgeyAvLyBzZXJ2aWNlIHdvcmtlclxuICAgICAgICBlLnBvcnRzWzBdLnBvc3RNZXNzYWdlKG1zZylcbiAgICAgIH0gZWxzZSB7IC8vIHdlYiB3b3JrZXJcbiAgICAgICAgc2VsZi5wb3N0TWVzc2FnZShtc2cpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChlcnJvcikge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgJ2Vycm9yJyBpbiBjb25zb2xlKSB7XG4gICAgICAgIC8vIFRoaXMgaXMgdG8gbWFrZSBlcnJvcnMgZWFzaWVyIHRvIGRlYnVnLiBJIHRoaW5rIGl0J3MgaW1wb3J0YW50XG4gICAgICAgIC8vIGVub3VnaCB0byBqdXN0IGxlYXZlIGhlcmUgd2l0aG91dCBnaXZpbmcgdGhlIHVzZXIgYW4gb3B0aW9uXG4gICAgICAgIC8vIHRvIHNpbGVuY2UgaXQuXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1dvcmtlciBjYXVnaHQgYW4gZXJyb3I6JywgZXJyb3IpXG4gICAgICB9XG4gICAgICBwb3N0TWVzc2FnZShbbWVzc2FnZUlkLCB7XG4gICAgICAgIG1lc3NhZ2U6IGVycm9yLm1lc3NhZ2VcbiAgICAgIH1dKVxuICAgIH0gZWxzZSB7XG4gICAgICBwb3N0TWVzc2FnZShbbWVzc2FnZUlkLCBudWxsLCByZXN1bHRdKVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHRyeUNhdGNoRnVuYyAoY2FsbGJhY2ssIG1lc3NhZ2UpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHsgcmVzOiBjYWxsYmFjayhtZXNzYWdlKSB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHsgZXJyOiBlIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVJbmNvbWluZ01lc3NhZ2UgKGUsIGNhbGxiYWNrLCBtZXNzYWdlSWQsIG1lc3NhZ2UpIHtcbiAgICB2YXIgcmVzdWx0ID0gdHJ5Q2F0Y2hGdW5jKGNhbGxiYWNrLCBtZXNzYWdlKVxuXG4gICAgaWYgKHJlc3VsdC5lcnIpIHtcbiAgICAgIHBvc3RPdXRnb2luZ01lc3NhZ2UoZSwgbWVzc2FnZUlkLCByZXN1bHQuZXJyKVxuICAgIH0gZWxzZSBpZiAoIWlzUHJvbWlzZShyZXN1bHQucmVzKSkge1xuICAgICAgcG9zdE91dGdvaW5nTWVzc2FnZShlLCBtZXNzYWdlSWQsIG51bGwsIHJlc3VsdC5yZXMpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5yZXMudGhlbihmdW5jdGlvbiAoZmluYWxSZXN1bHQpIHtcbiAgICAgICAgcG9zdE91dGdvaW5nTWVzc2FnZShlLCBtZXNzYWdlSWQsIG51bGwsIGZpbmFsUmVzdWx0KVxuICAgICAgfSwgZnVuY3Rpb24gKGZpbmFsRXJyb3IpIHtcbiAgICAgICAgcG9zdE91dGdvaW5nTWVzc2FnZShlLCBtZXNzYWdlSWQsIGZpbmFsRXJyb3IpXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uSW5jb21pbmdNZXNzYWdlIChlKSB7XG4gICAgdmFyIHBheWxvYWQgPSBlLmRhdGFcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkocGF5bG9hZCkgfHwgcGF5bG9hZC5sZW5ndGggIT09IDIpIHtcbiAgICAgIC8vIG1lc3NhZ2UgZG9lbnMndCBtYXRjaCBjb21tdW5pY2F0aW9uIGZvcm1hdDsgaWdub3JlXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgdmFyIG1lc3NhZ2VJZCA9IHBheWxvYWRbMF1cbiAgICB2YXIgbWVzc2FnZSA9IHBheWxvYWRbMV1cblxuICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHBvc3RPdXRnb2luZ01lc3NhZ2UoZSwgbWVzc2FnZUlkLCBuZXcgRXJyb3IoXG4gICAgICAgICdQbGVhc2UgcGFzcyBhIGZ1bmN0aW9uIGludG8gcmVnaXN0ZXIoKS4nKSlcbiAgICB9IGVsc2Uge1xuICAgICAgaGFuZGxlSW5jb21pbmdNZXNzYWdlKGUsIGNhbGxiYWNrLCBtZXNzYWdlSWQsIG1lc3NhZ2UpXG4gICAgfVxuICB9XG5cbiAgc2VsZi5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgb25JbmNvbWluZ01lc3NhZ2UpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmVnaXN0ZXJQcm9taXNlV29ya2VyXG4iLCIvKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcblxyXG5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcclxucHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxyXG5SRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcclxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG5JTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cclxuTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcclxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG5QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSAqL1xyXG5cclxudmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbihkLCBiKSB7XHJcbiAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XHJcbiAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxyXG4gICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XHJcbiAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4dGVuZHMoZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XHJcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH1cclxuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcclxuICAgIHZhciB0ID0ge307XHJcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcclxuICAgICAgICB0W3BdID0gc1twXTtcclxuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcclxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgICAgIH1cclxuICAgIHJldHVybiB0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xyXG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XHJcbiAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xyXG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fbWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpIHtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XHJcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cclxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkge1xyXG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcclxuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XHJcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xyXG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19jcmVhdGVCaW5kaW5nID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9KTtcclxufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcclxuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XHJcbiAgICBvW2syXSA9IG1ba107XHJcbn0pO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXhwb3J0U3RhcihtLCBvKSB7XHJcbiAgICBmb3IgKHZhciBwIGluIG0pIGlmIChwICE9PSBcImRlZmF1bHRcIiAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8sIHApKSBfX2NyZWF0ZUJpbmRpbmcobywgbSwgcCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3ZhbHVlcyhvKSB7XHJcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xyXG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XHJcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XHJcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xyXG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVhZChvLCBuKSB7XHJcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XHJcbiAgICBpZiAoIW0pIHJldHVybiBvO1xyXG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XHJcbiAgICBmaW5hbGx5IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZCgpIHtcclxuICAgIGZvciAodmFyIGFyID0gW10sIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIGFyID0gYXIuY29uY2F0KF9fcmVhZChhcmd1bWVudHNbaV0pKTtcclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXlzKCkge1xyXG4gICAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XHJcbiAgICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspXHJcbiAgICAgICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspXHJcbiAgICAgICAgICAgIHJba10gPSBhW2pdO1xyXG4gICAgcmV0dXJuIHI7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IG4gPT09IFwicmV0dXJuXCIgfSA6IGYgPyBmKHYpIDogdjsgfSA6IGY7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNWYWx1ZXMobykge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XHJcbiAgICByZXR1cm4gbSA/IG0uY2FsbChvKSA6IChvID0gdHlwZW9mIF9fdmFsdWVzID09PSBcImZ1bmN0aW9uXCIgPyBfX3ZhbHVlcyhvKSA6IG9bU3ltYm9sLml0ZXJhdG9yXSgpLCBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaSk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaVtuXSA9IG9bbl0gJiYgZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgdiA9IG9bbl0odiksIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHYuZG9uZSwgdi52YWx1ZSk7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ha2VUZW1wbGF0ZU9iamVjdChjb29rZWQsIHJhdykge1xyXG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cclxuICAgIHJldHVybiBjb29rZWQ7XHJcbn07XHJcblxyXG52YXIgX19zZXRNb2R1bGVEZWZhdWx0ID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCB2KSB7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgXCJkZWZhdWx0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHYgfSk7XHJcbn0pIDogZnVuY3Rpb24obywgdikge1xyXG4gICAgb1tcImRlZmF1bHRcIl0gPSB2O1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0U3Rhcihtb2QpIHtcclxuICAgIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XHJcbiAgICB2YXIgcmVzdWx0ID0ge307XHJcbiAgICBpZiAobW9kICE9IG51bGwpIGZvciAodmFyIGsgaW4gbW9kKSBpZiAoayAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZCwgaykpIF9fY3JlYXRlQmluZGluZyhyZXN1bHQsIG1vZCwgayk7XHJcbiAgICBfX3NldE1vZHVsZURlZmF1bHQocmVzdWx0LCBtb2QpO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0RGVmYXVsdChtb2QpIHtcclxuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgZGVmYXVsdDogbW9kIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHJlY2VpdmVyLCBwcml2YXRlTWFwKSB7XHJcbiAgICBpZiAoIXByaXZhdGVNYXAuaGFzKHJlY2VpdmVyKSkge1xyXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlXCIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHByaXZhdGVNYXAuZ2V0KHJlY2VpdmVyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHByaXZhdGVNYXAsIHZhbHVlKSB7XHJcbiAgICBpZiAoIXByaXZhdGVNYXAuaGFzKHJlY2VpdmVyKSkge1xyXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJhdHRlbXB0ZWQgdG8gc2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlXCIpO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZU1hcC5zZXQocmVjZWl2ZXIsIHZhbHVlKTtcclxuICAgIHJldHVybiB2YWx1ZTtcclxufVxyXG4iLCIvKlxuICogR2VuZXJhdGVkIGJ5IFBFRy5qcyAwLjEwLjAuXG4gKlxuICogaHR0cDovL3BlZ2pzLm9yZy9cbiAqL1xuXG5cInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gcGVnJHN1YmNsYXNzKGNoaWxkLCBwYXJlbnQpIHtcbiAgZnVuY3Rpb24gY3RvcigpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGNoaWxkOyB9XG4gIGN0b3IucHJvdG90eXBlID0gcGFyZW50LnByb3RvdHlwZTtcbiAgY2hpbGQucHJvdG90eXBlID0gbmV3IGN0b3IoKTtcbn1cblxuZnVuY3Rpb24gcGVnJFN5bnRheEVycm9yKG1lc3NhZ2UsIGV4cGVjdGVkLCBmb3VuZCwgbG9jYXRpb24pIHtcbiAgdGhpcy5tZXNzYWdlICA9IG1lc3NhZ2U7XG4gIHRoaXMuZXhwZWN0ZWQgPSBleHBlY3RlZDtcbiAgdGhpcy5mb3VuZCAgICA9IGZvdW5kO1xuICB0aGlzLmxvY2F0aW9uID0gbG9jYXRpb247XG4gIHRoaXMubmFtZSAgICAgPSBcIlN5bnRheEVycm9yXCI7XG5cbiAgaWYgKHR5cGVvZiBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgcGVnJFN5bnRheEVycm9yKTtcbiAgfVxufVxuXG5wZWckc3ViY2xhc3MocGVnJFN5bnRheEVycm9yLCBFcnJvcik7XG5cbnBlZyRTeW50YXhFcnJvci5idWlsZE1lc3NhZ2UgPSBmdW5jdGlvbihleHBlY3RlZCwgZm91bmQpIHtcbiAgdmFyIERFU0NSSUJFX0VYUEVDVEFUSU9OX0ZOUyA9IHtcbiAgICAgICAgbGl0ZXJhbDogZnVuY3Rpb24oZXhwZWN0YXRpb24pIHtcbiAgICAgICAgICByZXR1cm4gXCJcXFwiXCIgKyBsaXRlcmFsRXNjYXBlKGV4cGVjdGF0aW9uLnRleHQpICsgXCJcXFwiXCI7XG4gICAgICAgIH0sXG5cbiAgICAgICAgXCJjbGFzc1wiOiBmdW5jdGlvbihleHBlY3RhdGlvbikge1xuICAgICAgICAgIHZhciBlc2NhcGVkUGFydHMgPSBcIlwiLFxuICAgICAgICAgICAgICBpO1xuXG4gICAgICAgICAgZm9yIChpID0gMDsgaSA8IGV4cGVjdGF0aW9uLnBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBlc2NhcGVkUGFydHMgKz0gZXhwZWN0YXRpb24ucGFydHNbaV0gaW5zdGFuY2VvZiBBcnJheVxuICAgICAgICAgICAgICA/IGNsYXNzRXNjYXBlKGV4cGVjdGF0aW9uLnBhcnRzW2ldWzBdKSArIFwiLVwiICsgY2xhc3NFc2NhcGUoZXhwZWN0YXRpb24ucGFydHNbaV1bMV0pXG4gICAgICAgICAgICAgIDogY2xhc3NFc2NhcGUoZXhwZWN0YXRpb24ucGFydHNbaV0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBcIltcIiArIChleHBlY3RhdGlvbi5pbnZlcnRlZCA/IFwiXlwiIDogXCJcIikgKyBlc2NhcGVkUGFydHMgKyBcIl1cIjtcbiAgICAgICAgfSxcblxuICAgICAgICBhbnk6IGZ1bmN0aW9uKGV4cGVjdGF0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIFwiYW55IGNoYXJhY3RlclwiO1xuICAgICAgICB9LFxuXG4gICAgICAgIGVuZDogZnVuY3Rpb24oZXhwZWN0YXRpb24pIHtcbiAgICAgICAgICByZXR1cm4gXCJlbmQgb2YgaW5wdXRcIjtcbiAgICAgICAgfSxcblxuICAgICAgICBvdGhlcjogZnVuY3Rpb24oZXhwZWN0YXRpb24pIHtcbiAgICAgICAgICByZXR1cm4gZXhwZWN0YXRpb24uZGVzY3JpcHRpb247XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgZnVuY3Rpb24gaGV4KGNoKSB7XG4gICAgcmV0dXJuIGNoLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG4gIH1cblxuICBmdW5jdGlvbiBsaXRlcmFsRXNjYXBlKHMpIHtcbiAgICByZXR1cm4gc1xuICAgICAgLnJlcGxhY2UoL1xcXFwvZywgJ1xcXFxcXFxcJylcbiAgICAgIC5yZXBsYWNlKC9cIi9nLCAgJ1xcXFxcIicpXG4gICAgICAucmVwbGFjZSgvXFwwL2csICdcXFxcMCcpXG4gICAgICAucmVwbGFjZSgvXFx0L2csICdcXFxcdCcpXG4gICAgICAucmVwbGFjZSgvXFxuL2csICdcXFxcbicpXG4gICAgICAucmVwbGFjZSgvXFxyL2csICdcXFxccicpXG4gICAgICAucmVwbGFjZSgvW1xceDAwLVxceDBGXS9nLCAgICAgICAgICBmdW5jdGlvbihjaCkgeyByZXR1cm4gJ1xcXFx4MCcgKyBoZXgoY2gpOyB9KVxuICAgICAgLnJlcGxhY2UoL1tcXHgxMC1cXHgxRlxceDdGLVxceDlGXS9nLCBmdW5jdGlvbihjaCkgeyByZXR1cm4gJ1xcXFx4JyAgKyBoZXgoY2gpOyB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNsYXNzRXNjYXBlKHMpIHtcbiAgICByZXR1cm4gc1xuICAgICAgLnJlcGxhY2UoL1xcXFwvZywgJ1xcXFxcXFxcJylcbiAgICAgIC5yZXBsYWNlKC9cXF0vZywgJ1xcXFxdJylcbiAgICAgIC5yZXBsYWNlKC9cXF4vZywgJ1xcXFxeJylcbiAgICAgIC5yZXBsYWNlKC8tL2csICAnXFxcXC0nKVxuICAgICAgLnJlcGxhY2UoL1xcMC9nLCAnXFxcXDAnKVxuICAgICAgLnJlcGxhY2UoL1xcdC9nLCAnXFxcXHQnKVxuICAgICAgLnJlcGxhY2UoL1xcbi9nLCAnXFxcXG4nKVxuICAgICAgLnJlcGxhY2UoL1xcci9nLCAnXFxcXHInKVxuICAgICAgLnJlcGxhY2UoL1tcXHgwMC1cXHgwRl0vZywgICAgICAgICAgZnVuY3Rpb24oY2gpIHsgcmV0dXJuICdcXFxceDAnICsgaGV4KGNoKTsgfSlcbiAgICAgIC5yZXBsYWNlKC9bXFx4MTAtXFx4MUZcXHg3Ri1cXHg5Rl0vZywgZnVuY3Rpb24oY2gpIHsgcmV0dXJuICdcXFxceCcgICsgaGV4KGNoKTsgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBkZXNjcmliZUV4cGVjdGF0aW9uKGV4cGVjdGF0aW9uKSB7XG4gICAgcmV0dXJuIERFU0NSSUJFX0VYUEVDVEFUSU9OX0ZOU1tleHBlY3RhdGlvbi50eXBlXShleHBlY3RhdGlvbik7XG4gIH1cblxuICBmdW5jdGlvbiBkZXNjcmliZUV4cGVjdGVkKGV4cGVjdGVkKSB7XG4gICAgdmFyIGRlc2NyaXB0aW9ucyA9IG5ldyBBcnJheShleHBlY3RlZC5sZW5ndGgpLFxuICAgICAgICBpLCBqO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IGV4cGVjdGVkLmxlbmd0aDsgaSsrKSB7XG4gICAgICBkZXNjcmlwdGlvbnNbaV0gPSBkZXNjcmliZUV4cGVjdGF0aW9uKGV4cGVjdGVkW2ldKTtcbiAgICB9XG5cbiAgICBkZXNjcmlwdGlvbnMuc29ydCgpO1xuXG4gICAgaWYgKGRlc2NyaXB0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGkgPSAxLCBqID0gMTsgaSA8IGRlc2NyaXB0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoZGVzY3JpcHRpb25zW2kgLSAxXSAhPT0gZGVzY3JpcHRpb25zW2ldKSB7XG4gICAgICAgICAgZGVzY3JpcHRpb25zW2pdID0gZGVzY3JpcHRpb25zW2ldO1xuICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZGVzY3JpcHRpb25zLmxlbmd0aCA9IGo7XG4gICAgfVxuXG4gICAgc3dpdGNoIChkZXNjcmlwdGlvbnMubGVuZ3RoKSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHJldHVybiBkZXNjcmlwdGlvbnNbMF07XG5cbiAgICAgIGNhc2UgMjpcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0aW9uc1swXSArIFwiIG9yIFwiICsgZGVzY3JpcHRpb25zWzFdO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZGVzY3JpcHRpb25zLnNsaWNlKDAsIC0xKS5qb2luKFwiLCBcIilcbiAgICAgICAgICArIFwiLCBvciBcIlxuICAgICAgICAgICsgZGVzY3JpcHRpb25zW2Rlc2NyaXB0aW9ucy5sZW5ndGggLSAxXTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBkZXNjcmliZUZvdW5kKGZvdW5kKSB7XG4gICAgcmV0dXJuIGZvdW5kID8gXCJcXFwiXCIgKyBsaXRlcmFsRXNjYXBlKGZvdW5kKSArIFwiXFxcIlwiIDogXCJlbmQgb2YgaW5wdXRcIjtcbiAgfVxuXG4gIHJldHVybiBcIkV4cGVjdGVkIFwiICsgZGVzY3JpYmVFeHBlY3RlZChleHBlY3RlZCkgKyBcIiBidXQgXCIgKyBkZXNjcmliZUZvdW5kKGZvdW5kKSArIFwiIGZvdW5kLlwiO1xufTtcblxuZnVuY3Rpb24gcGVnJHBhcnNlKGlucHV0LCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zICE9PSB2b2lkIDAgPyBvcHRpb25zIDoge307XG5cbiAgdmFyIHBlZyRGQUlMRUQgPSB7fSxcblxuICAgICAgcGVnJHN0YXJ0UnVsZUZ1bmN0aW9ucyA9IHsgQmlibGlvZ3JhcGh5OiBwZWckcGFyc2VCaWJsaW9ncmFwaHkgfSxcbiAgICAgIHBlZyRzdGFydFJ1bGVGdW5jdGlvbiAgPSBwZWckcGFyc2VCaWJsaW9ncmFwaHksXG5cbiAgICAgIHBlZyRjMCA9IGZ1bmN0aW9uKHIpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogJ0JpYmxpb2dyYXBoeScsXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIGNoaWxkcmVuOiByLFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjMSA9IFwiQFwiLFxuICAgICAgcGVnJGMyID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIkBcIiwgZmFsc2UpLFxuICAgICAgcGVnJGMzID0gXCJjb21tZW50XCIsXG4gICAgICBwZWckYzQgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiY29tbWVudFwiLCB0cnVlKSxcbiAgICAgIHBlZyRjNSA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogJ0JyYWNlZENvbW1lbnQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICB2YWx1ZTogdi5zbGljZSgxLCAtMSksXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgcGVnJGM2ID0gL15bXlxcblxccl0vLFxuICAgICAgcGVnJGM3ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1wiXFxuXCIsIFwiXFxyXCJdLCB0cnVlLCBmYWxzZSksXG4gICAgICBwZWckYzggPSAvXltcXG5cXHJdLyxcbiAgICAgIHBlZyRjOSA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIlxcblwiLCBcIlxcclwiXSwgZmFsc2UsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTAgPSBmdW5jdGlvbih2KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtpbmQ6ICdMaW5lQ29tbWVudCcsXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIHZhbHVlOiBub3JtYWxpemVXaGl0ZXNwYWNlKHYpLFxuICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgcGVnJGMxMSA9IC9eW15AXS8sXG4gICAgICBwZWckYzEyID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1wiQFwiXSwgdHJ1ZSwgZmFsc2UpLFxuICAgICAgcGVnJGMxMyA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogJ05vbkVudHJ5VGV4dCcsXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIHZhbHVlOiBub3JtYWxpemVXaGl0ZXNwYWNlKHYpLFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjMTQgPSBmdW5jdGlvbihuKSB7IHJldHVybiBuOyB9LFxuICAgICAgcGVnJGMxNSA9IFwie1wiLFxuICAgICAgcGVnJGMxNiA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJ7XCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTcgPSAvXltee31dLyxcbiAgICAgIHBlZyRjMTggPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCJ7XCIsIFwifVwiXSwgdHJ1ZSwgZmFsc2UpLFxuICAgICAgcGVnJGMxOSA9IFwifVwiLFxuICAgICAgcGVnJGMyMCA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJ9XCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjMjEgPSBmdW5jdGlvbihjb21tZW50KSB7IHJldHVybiAneycgKyBjb21tZW50LmpvaW4oJycpICsgJ30nIH0sXG4gICAgICBwZWckYzIyID0gL15bQS1aYS16XS8sXG4gICAgICBwZWckYzIzID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1tcIkFcIiwgXCJaXCJdLCBbXCJhXCIsIFwielwiXV0sIGZhbHNlLCBmYWxzZSksXG4gICAgICBwZWckYzI0ID0gL15bKHtdLyxcbiAgICAgIHBlZyRjMjUgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCIoXCIsIFwie1wiXSwgZmFsc2UsIGZhbHNlKSxcbiAgICAgIHBlZyRjMjYgPSAvXlt9KV0vLFxuICAgICAgcGVnJGMyNyA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIn1cIiwgXCIpXCJdLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgcGVnJGMyOCA9IGZ1bmN0aW9uKHR5cGUsIGlkLCBmaWVsZHMpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogJ0VudHJ5JyxcbiAgICAgICAgICAgIGlkOiBpZCB8fCAnJyxcbiAgICAgICAgICAgIHR5cGU6IHR5cGUudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgZmllbGRzOiBmaWVsZHMsXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgcGVnJGMyOSA9IFwicHJlYW1ibGVcIixcbiAgICAgIHBlZyRjMzAgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwicHJlYW1ibGVcIiwgdHJ1ZSksXG4gICAgICBwZWckYzMxID0gZnVuY3Rpb24ob3BlbmVyLCB2LCBjbG9zZXIpIHtcbiAgICAgICAgICBzd2l0Y2ggKG9wZW5lciArIGNsb3Nlcikge1xuICAgICAgICAgICAgY2FzZSAne30nOlxuICAgICAgICAgICAgY2FzZSAnKCknOlxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmJhbGFuY2VkIG9wZW5lci1jbG9zZXIgZm9yIHByZWFtYmxlOiAke29wZW5lcn0uLi4ke2Nsb3Nlcn1gKVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogJ1ByZWFtYmxlRXhwcmVzc2lvbicsXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIHZhbHVlOiB2LnJlZHVjZSgoYSwgYikgPT4gYS5jb25jYXQoYiksIFtdKSxcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICBwZWckYzMyID0gXCJzdHJpbmdcIixcbiAgICAgIHBlZyRjMzMgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwic3RyaW5nXCIsIHRydWUpLFxuICAgICAgcGVnJGMzNCA9IGZ1bmN0aW9uKGssIHYpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogJ1N0cmluZ0RlY2xhcmF0aW9uJyxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgbmFtZTogayxcbiAgICAgICAgICAgIHZhbHVlOiB2LnJlZHVjZSgoYSwgYikgPT4gYS5jb25jYXQoYiksIFtdKSxcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICBwZWckYzM1ID0gL15bXiBcXHRcXHJcXG4sXS8sXG4gICAgICBwZWckYzM2ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1wiIFwiLCBcIlxcdFwiLCBcIlxcclwiLCBcIlxcblwiLCBcIixcIl0sIHRydWUsIGZhbHNlKSxcbiAgICAgIHBlZyRjMzcgPSBcIixcIixcbiAgICAgIHBlZyRjMzggPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiLFwiLCBmYWxzZSksXG4gICAgICBwZWckYzM5ID0gZnVuY3Rpb24oaWQpIHsgcmV0dXJuIGlkOyB9LFxuICAgICAgcGVnJGM0MCA9IGZ1bmN0aW9uKG5hbWUpIHsgcmV0dXJuIGlzVmVyYmF0aW1GaWVsZChuYW1lKSAmJiB1bm5lc3RGaWVsZHMuaW5jbHVkZXMobmFtZSkgfSxcbiAgICAgIHBlZyRjNDEgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICAgICAgICAgIC8vIGJlY2F1c2UgdGhpcyB3YXMgYWJ1c2VkIHNvIG11Y2gsIG1hbnkgcHJvY2Vzc29ycyB0cmVhdCBkb3VibGUtb3V0ZXItYnJhY2VzIGFzIHNpbmdsZVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBraW5kOiAnRmllbGQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgdmFsdWU6IFsgcHJvdGVjdCh2YWx1ZSkgXVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjNDIgPSBmdW5jdGlvbihuYW1lKSB7IHJldHVybiBpc1ZlcmJhdGltRmllbGQobmFtZSkgfSxcbiAgICAgIHBlZyRjNDMgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBraW5kOiAnRmllbGQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgdmFsdWU6IFsgcHJvdGVjdCh2YWx1ZSkgXVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjNDQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICAgICAgICAgIC8vIGJlY2F1c2UgdGhpcyB3YXMgYWJ1c2VkIHNvIG11Y2gsIG1hbnkgcHJvY2Vzc29ycyB0cmVhdCBkb3VibGUtb3V0ZXItYnJhY2VzIGFzIHNpbmdsZVxuICAgICAgICAgIGlmICh1bm5lc3RGaWVsZHMuaW5jbHVkZXMobmFtZSkgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAxICYmIHZhbHVlWzBdLmtpbmQgPT09ICdCbG9jaycpIHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnVubmVzdE1vZGUgPT09ICdwcmVzZXJ2ZScpIHtcbiAgICAgICAgICAgICAgdmFsdWVbMF0uY2FzZSA9ICdwcmVzZXJ2ZSdcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHZhbHVlID0gdmFsdWVbMF0udmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gaGFuZGxlX21hcmt1cF9zd2l0Y2hlcyh7XG4gICAgICAgICAgICBraW5kOiAnRmllbGQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICBwZWckYzQ1ID0gL15bXzphLXpBLVowLTlcXC1dLyxcbiAgICAgIHBlZyRjNDYgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCJfXCIsIFwiOlwiLCBbXCJhXCIsIFwielwiXSwgW1wiQVwiLCBcIlpcIl0sIFtcIjBcIiwgXCI5XCJdLCBcIi1cIl0sIGZhbHNlLCBmYWxzZSksXG4gICAgICBwZWckYzQ3ID0gZnVuY3Rpb24obmFtZSkgeyByZXR1cm4gbmFtZS50b0xvd2VyQ2FzZSgpIH0sXG4gICAgICBwZWckYzQ4ID0gXCJcXFwiXCIsXG4gICAgICBwZWckYzQ5ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIlxcXCJcIiwgZmFsc2UpLFxuICAgICAgcGVnJGM1MCA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICB2ID0gdiB8fCB7XG4gICAgICAgICAgICBraW5kOiAnVGV4dCcsXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICB9XG4gICAgICAgICAgdi5tb2RlID0gJ3ZlcmJhdGltJ1xuICAgICAgICAgIHJldHVybiBiYXNpY1RleHRDb252ZXJzaW9ucyh2KVxuICAgICAgICB9LFxuICAgICAgcGVnJGM1MSA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICByZXR1cm4gYmFzaWNUZXh0Q29udmVyc2lvbnMoe1xuICAgICAgICAgICAga2luZDogJ1RleHQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICB2YWx1ZTogdi5qb2luKCcnKS50cmltKCksXG4gICAgICAgICAgICBtb2RlOiAndmVyYmF0aW0nLFxuICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICBwZWckYzUyID0gZnVuY3Rpb24odikgeyByZXR1cm4gdiB9LFxuICAgICAgcGVnJGM1MyA9IGZ1bmN0aW9uKHYpIHsgcmV0dXJuICd7JyArIHYuam9pbignJykgKyAnfScgfSxcbiAgICAgIHBlZyRjNTQgPSBmdW5jdGlvbigpIHsgcmV0dXJuIG1hdGguc2V0KGZhbHNlKSB9LFxuICAgICAgcGVnJGM1NSA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICByZXR1cm4gdi5yZWR1Y2UoKGEsIGIpID0+IGEuY29uY2F0KGIpLCBbXSk7XG4gICAgICAgIH0sXG4gICAgICBwZWckYzU2ID0gZnVuY3Rpb24odikgeyByZXR1cm4gdjsgfSxcbiAgICAgIHBlZyRjNTcgPSBcIntcXFxcdmVyYlwiLFxuICAgICAgcGVnJGM1OCA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJ7XFxcXHZlcmJcIiwgZmFsc2UpLFxuICAgICAgcGVnJGM1OSA9IC9eW2EtekEtWl0vLFxuICAgICAgcGVnJGM2MCA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtbXCJhXCIsIFwielwiXSwgW1wiQVwiLCBcIlpcIl1dLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgcGVnJGM2MSA9IC9eW15cXF5fJHt9XFxcXF0vLFxuICAgICAgcGVnJGM2MiA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIl5cIiwgXCJfXCIsIFwiJFwiLCBcIntcIiwgXCJ9XCIsIFwiXFxcXFwiXSwgdHJ1ZSwgZmFsc2UpLFxuICAgICAgcGVnJGM2MyA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICByZXR1cm4gYmFzaWNUZXh0Q29udmVyc2lvbnMoe1xuICAgICAgICAgICAga2luZDogJ1RleHQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICB2YWx1ZTogbm9ybWFsaXplV2hpdGVzcGFjZSh2KSxcbiAgICAgICAgICAgIG1vZGU6IG1hdGgub24gPyAnbWF0aCcgOiAndGV4dCcsXG4gICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgIHBlZyRjNjQgPSAvXlteXFxeXyR7fVwiXFxcXF0vLFxuICAgICAgcGVnJGM2NSA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIl5cIiwgXCJfXCIsIFwiJFwiLCBcIntcIiwgXCJ9XCIsIFwiXFxcIlwiLCBcIlxcXFxcIl0sIHRydWUsIGZhbHNlKSxcbiAgICAgIHBlZyRjNjYgPSAvXlswLTldLyxcbiAgICAgIHBlZyRjNjcgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbW1wiMFwiLCBcIjlcIl1dLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgcGVnJGM2OCA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogJ051bWJlcicsXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIHZhbHVlOiBwYXJzZUludCh2LCAxMCksXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgcGVnJGM2OSA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogJ1N0cmluZ1JlZmVyZW5jZScsXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIG5hbWU6IHYsXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgcGVnJGM3MCA9IFwiXFxcXGJlZ2lue1wiLFxuICAgICAgcGVnJGM3MSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJcXFxcYmVnaW57XCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjNzIgPSAvXlthLXpBLVowLTldLyxcbiAgICAgIHBlZyRjNzMgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbW1wiYVwiLCBcInpcIl0sIFtcIkFcIiwgXCJaXCJdLCBbXCIwXCIsIFwiOVwiXV0sIGZhbHNlLCBmYWxzZSksXG4gICAgICBwZWckYzc0ID0gXCJcXFxcZW5ke1wiLFxuICAgICAgcGVnJGM3NSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJcXFxcZW5ke1wiLCBmYWxzZSksXG4gICAgICBwZWckYzc2ID0gZnVuY3Rpb24oZW52LCB2LCBjZW52KSB7IHJldHVybiBlbnYgPT09IGNlbnYgfSxcbiAgICAgIHBlZyRjNzcgPSBmdW5jdGlvbihlbnYsIHYsIGNlbnYpIHtcbiAgICAgICAgICBpZiAobWFya3VwW2Vudl0pIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGtpbmQ6ICdCbG9jaycsXG4gICAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICAgIHZhbHVlOiB2LFxuICAgICAgICAgICAgICBtYXJrdXA6IHsgW21hcmt1cFtlbnZdXTogdHJ1ZSB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBraW5kOiAnRW52aXJvbm1lbnQnLFxuICAgICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgICB2YWx1ZTogdixcbiAgICAgICAgICAgICAgZW52OiBlbnYsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgcGVnJGM3OCA9IFwie1xcXFxcIixcbiAgICAgIHBlZyRjNzkgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwie1xcXFxcIiwgZmFsc2UpLFxuICAgICAgcGVnJGM4MCA9IFwiXFxcXFwiLFxuICAgICAgcGVnJGM4MSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJcXFxcXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjODIgPSAvXltpal0vLFxuICAgICAgcGVnJGM4MyA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcImlcIiwgXCJqXCJdLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgcGVnJGM4NCA9IGZ1bmN0aW9uKG1hcmssIGNoYXIpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogJ0RpYWNyaXRpY0NvbW1hbmQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICBtYXJrOiBtYXJrLFxuICAgICAgICAgICAgZG90bGVzczogISFjaGFyWzFdLFxuICAgICAgICAgICAgY2hhcmFjdGVyOiBjaGFyWzFdIHx8IGNoYXJbMF0sXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgcGVnJGM4NSA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICAgIHJldHVybiBiYXNpY1RleHRDb252ZXJzaW9ucyh7XG4gICAgICAgICAgICAgIGtpbmQ6ICdUZXh0JyxcbiAgICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgICAgdmFsdWU6IHYuam9pbignJykudHJpbSgpLFxuICAgICAgICAgICAgICBtb2RlOiAndmVyYmF0aW0nLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgIHBlZyRjODYgPSBmdW5jdGlvbih2KSB7XG4gICAgICAgICAgY29uc3QgYmxvY2sgPSB7XG4gICAgICAgICAgICBraW5kOiAnQmxvY2snLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICB2YWx1ZTogdixcbiAgICAgICAgICAgIG1hcmt1cDoge30sXG4gICAgICAgICAgICBjYXNlOiAncHJvdGVjdCcsXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IGxlYWRpbmdjbWQgPSBibG9jay52YWx1ZS5sZW5ndGggJiYgKGJsb2NrLnZhbHVlWzBdLmtpbmQuZW5kc1dpdGgoJ0NvbW1hbmQnKSB8fCBibG9jay52YWx1ZVswXS5raW5kID09PSAnRW52aXJvbm1lbnQnKSA/IGJsb2NrLnZhbHVlWzBdIDogbnVsbFxuICAgICAgICAgIGxldCBsZWFkaW5nY21kYmxvY2thcmcgPSBsZWFkaW5nY21kXG4gICAgICAgICAgICAmJiBsZWFkaW5nY21kLmtpbmQgPT09ICdSZWd1bGFyQ29tbWFuZCdcbiAgICAgICAgICAgICYmIGxlYWRpbmdjbWQuYXJndW1lbnRzLnJlcXVpcmVkLmxlbmd0aFxuICAgICAgICAgICAgJiYgbGVhZGluZ2NtZC5hcmd1bWVudHMucmVxdWlyZWRbMF0ua2luZCA9PT0gJ0Jsb2NrJ1xuICAgICAgICAgICAgJiYgbGVhZGluZ2NtZC5hcmd1bWVudHMucmVxdWlyZWRbMF1cblxuICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9yZXRvcnF1ZXJlL3pvdGVyby1iZXR0ZXItYmlidGV4L2lzc3Vlcy81NDEjaXNzdWVjb21tZW50LTI0MDE1NjI3NFxuICAgICAgICAgIGlmIChsZWFkaW5nY21kKSB7XG4gICAgICAgICAgICBkZWxldGUgYmxvY2suY2FzZVxuXG4gICAgICAgICAgICAvLyBjb21tYW5kIHdpdGggYSBibG9jayBjYW5jZWxzIG91dCBjYXNlIHByb3RlY3Rpb24gd2l0aCBjb250YWluaW5nIGJsb2NrXG4gICAgICAgICAgICAvLyBpZiBhIHNtYWxsY2FwcyBibG9jayBoYXMgc2V0IGNhc2UgdG8gJ3ByZXNlcnZlJyB3ZSB3YW50IHRvIGtlZXAgdGhpc1xuICAgICAgICAgICAgaWYgKGxlYWRpbmdjbWRibG9ja2FyZyAmJiBsZWFkaW5nY21kYmxvY2thcmcuY2FzZSA9PT0gJ3Byb3RlY3QnKSBkZWxldGUgbGVhZGluZ2NtZGJsb2NrYXJnLmNhc2VcblxuICAgICAgICAgICAgLy8gXFxzbCwgXFxpdCBldGNcbiAgICAgICAgICAgIGlmIChtYXJrdXBbbGVhZGluZ2NtZC5jb21tYW5kXSkge1xuICAgICAgICAgICAgICBibG9jay5tYXJrdXBbbWFya3VwW2xlYWRpbmdjbWQuY29tbWFuZF1dID0gdHJ1ZVxuICAgICAgICAgICAgICBibG9jay52YWx1ZS5zaGlmdCgpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGhhbmRsZV9tYXJrdXBfc3dpdGNoZXMoYmxvY2spXG4gICAgICAgIH0sXG4gICAgICBwZWckYzg3ID0gZnVuY3Rpb24oKSB7IHJldHVybiAhbWF0aC5vbiB9LFxuICAgICAgcGVnJGM4OCA9IFwiJFwiLFxuICAgICAgcGVnJGM4OSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCIkXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjOTAgPSBcIiQkXCIsXG4gICAgICBwZWckYzkxID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIiQkXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjOTIgPSBmdW5jdGlvbihtb2RlKSB7IHJldHVybiBtYXRoLnNldCh0cnVlKSB9LFxuICAgICAgcGVnJGM5MyA9IGZ1bmN0aW9uKG1vZGUsIHYpIHsgcmV0dXJuIG1hdGguc2V0KGZhbHNlKSB9LFxuICAgICAgcGVnJGM5NCA9IGZ1bmN0aW9uKG1vZGUsIHYpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogbW9kZSA9PSAnJCQnID8gJ0Rpc3BsYXlNYXRoJyA6ICdJbmxpbmVNYXRoJyxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgdmFsdWU6IHYsXG4gICAgICAgICAgICBjYXNlOiAncHJvdGVjdCcsXG4gICAgICAgICAgICBtYXJrdXA6IHt9LFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjOTUgPSBcIiVcIixcbiAgICAgIHBlZyRjOTYgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiJVwiLCBmYWxzZSksXG4gICAgICBwZWckYzk3ID0gL15bXlxcclxcbl0vLFxuICAgICAgcGVnJGM5OCA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIlxcclwiLCBcIlxcblwiXSwgdHJ1ZSwgZmFsc2UpLFxuICAgICAgcGVnJGM5OSA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogJ0xpbmVDb21tZW50JyxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgdmFsdWU6IHYsXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgcGVnJGMxMDAgPSAvXltfXFxeXS8sXG4gICAgICBwZWckYzEwMSA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIl9cIiwgXCJeXCJdLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgcGVnJGMxMDIgPSBmdW5jdGlvbihtb2RlLCB2KSB7XG4gICAgICAgICAgaWYgKHYua2luZCA9PT0gJ0Jsb2NrJykgdiA9IHYudmFsdWVcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBraW5kOiBtb2RlID09PSAnXycgPyAnU3Vic2NyaXB0Q29tbWFuZCcgOiAnU3VwZXJzY3JpcHRDb21tYW5kJyxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgdmFsdWU6IHYsXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgcGVnJGMxMDMgPSBmdW5jdGlvbihtYXJrLCB2KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtpbmQ6ICdSZWd1bGFyQ29tbWFuZCcsXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIGNvbW1hbmQ6IG1hcmssXG4gICAgICAgICAgICBhcmd1bWVudHM6IHtcbiAgICAgICAgICAgICAgb3B0aW9uYWw6IFtdLFxuICAgICAgICAgICAgICByZXF1aXJlZDogWyBwcm90ZWN0KHYpIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjMTA0ID0gL15bXkEtWmEtejAtOVxcdFxcclxcbl0vLFxuICAgICAgcGVnJGMxMDUgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbW1wiQVwiLCBcIlpcIl0sIFtcImFcIiwgXCJ6XCJdLCBbXCIwXCIsIFwiOVwiXSwgXCJcXHRcIiwgXCJcXHJcIiwgXCJcXG5cIl0sIHRydWUsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTA2ID0gZnVuY3Rpb24odikge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBraW5kOiAnU3ltYm9sQ29tbWFuZCcsXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIGNvbW1hbmQ6IHYsXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgcGVnJGMxMDcgPSBcIm5ld2NvbW1hbmRcIixcbiAgICAgIHBlZyRjMTA4ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIm5ld2NvbW1hbmRcIiwgZmFsc2UpLFxuICAgICAgcGVnJGMxMDkgPSBmdW5jdGlvbihjbWQsIG5hbWUpIHsgcmV0dXJuIG5hbWUudmFsdWUubGVuZ3RoID09IDEgJiYgbmFtZS52YWx1ZVswXS5raW5kID09PSAnUmVndWxhckNvbW1hbmQnIH0sXG4gICAgICBwZWckYzExMCA9IGZ1bmN0aW9uKGNtZCwgbmFtZSwgb3B0aW9uYWwsIGRlZikge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBraW5kOiAnUmVndWxhckNvbW1hbmQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICBjb21tYW5kOiBjbWQsXG4gICAgICAgICAgICBhcmd1bWVudHM6IHtcbiAgICAgICAgICAgICAgb3B0aW9uYWw6IFtdLFxuICAgICAgICAgICAgICByZXF1aXJlZDogW25hbWUsIGRlZl0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjMTExID0gXCJiZWdpblwiLFxuICAgICAgcGVnJGMxMTIgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiYmVnaW5cIiwgZmFsc2UpLFxuICAgICAgcGVnJGMxMTMgPSBcImVuZFwiLFxuICAgICAgcGVnJGMxMTQgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiZW5kXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTE1ID0gZnVuY3Rpb24oY21kKSB7IHJldHVybiB2ZXJiYXRpbUNvbW1hbmRzLmluY2x1ZGVzKGNtZCkgJiYgKGhhc19hcmd1bWVudHNbY21kXSA9PT0gMikgfSxcbiAgICAgIHBlZyRjMTE2ID0gZnVuY3Rpb24oY21kLCBvcHRpb25hbCwgcmVxMSwgcmVxMikge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBraW5kOiAnUmVndWxhckNvbW1hbmQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICBjb21tYW5kOiBjbWQsXG4gICAgICAgICAgICBhcmd1bWVudHM6IHtcbiAgICAgICAgICAgICAgb3B0aW9uYWw6IG9wdGlvbmFsLFxuICAgICAgICAgICAgICByZXF1aXJlZDogW3Byb3RlY3QocmVxMSksIHByb3RlY3QocmVxMildLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICBwZWckYzExNyA9IGZ1bmN0aW9uKGNtZCkgeyByZXR1cm4gdmVyYmF0aW1Db21tYW5kcy5pbmNsdWRlcyhjbWQpICYmIChoYXNfYXJndW1lbnRzW2NtZF0gPT09IDEpIH0sXG4gICAgICBwZWckYzExOCA9IGZ1bmN0aW9uKGNtZCwgb3B0aW9uYWwsIHJlcSkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBraW5kOiAnUmVndWxhckNvbW1hbmQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICBjb21tYW5kOiBjbWQsXG4gICAgICAgICAgICBhcmd1bWVudHM6IHtcbiAgICAgICAgICAgICAgb3B0aW9uYWw6IG9wdGlvbmFsLFxuICAgICAgICAgICAgICByZXF1aXJlZDogW3Byb3RlY3QocmVxKV0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjMTE5ID0gZnVuY3Rpb24oY21kKSB7IHJldHVybiAoaGFzX2FyZ3VtZW50c1tjbWRdID09PSAyKSB9LFxuICAgICAgcGVnJGMxMjAgPSBmdW5jdGlvbihjbWQsIG9wdGlvbmFsLCByZXExLCByZXEyKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtpbmQ6ICdSZWd1bGFyQ29tbWFuZCcsXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIGNvbW1hbmQ6IGNtZCxcbiAgICAgICAgICAgIGFyZ3VtZW50czoge1xuICAgICAgICAgICAgICBvcHRpb25hbDogb3B0aW9uYWwsXG4gICAgICAgICAgICAgIHJlcXVpcmVkOiBbcmVxMSwgcmVxMl0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjMTIxID0gZnVuY3Rpb24oY21kKSB7IHJldHVybiAoaGFzX2FyZ3VtZW50c1tjbWRdID09PSAxKSB9LFxuICAgICAgcGVnJGMxMjIgPSBmdW5jdGlvbihjbWQsIG9wdGlvbmFsLCByZXEpIHtcbiAgICAgICAgICBsZXQgbVxuICAgICAgICAgIGlmIChyZXEua2luZCA9PT0gJ0Jsb2NrJykge1xuICAgICAgICAgICAgc3dpdGNoIChjbWQpIHtcbiAgICAgICAgICAgICAgY2FzZSAndGV4dHN1cGVyc2NyaXB0JzpcbiAgICAgICAgICAgICAgY2FzZSAnc3AnOlxuICAgICAgICAgICAgICAgIHJlcS5tYXJrdXAuc3VwID0gdHJ1ZVxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIGNhc2UgJ3RleHRzdWJzY3JpcHQnOlxuICAgICAgICAgICAgICBjYXNlICdzYic6XG4gICAgICAgICAgICAgICAgcmVxLm1hcmt1cC5zdWIgPSB0cnVlXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgY2FzZSAndGV4dHNjJzpcbiAgICAgICAgICAgICAgICByZXEubWFya3VwLnNtYWxsQ2FwcyA9IHRydWVcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICBjYXNlICdlbnF1b3RlJzpcbiAgICAgICAgICAgICAgY2FzZSAnbWtiaWJxdW90ZSc6XG4gICAgICAgICAgICAgICAgcmVxLm1hcmt1cC5lbnF1b3RlID0gdHJ1ZVxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIGNhc2UgJ3RleHRiZic6XG4gICAgICAgICAgICAgIGNhc2UgJ21rYmliYm9sZCc6XG4gICAgICAgICAgICAgICAgcmVxLm1hcmt1cC5ib2xkID0gdHJ1ZVxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIGNhc2UgJ2VtcGgnOlxuICAgICAgICAgICAgICBjYXNlICd0ZXh0aXQnOlxuICAgICAgICAgICAgICBjYXNlICdta2JpYml0YWxpYyc6XG4gICAgICAgICAgICAgIGNhc2UgJ21rYmliZW1waCc6XG4gICAgICAgICAgICAgICAgcmVxLm1hcmt1cC5pdGFsaWNzID0gdHJ1ZVxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgaWYgKG0gPSBjbWQubWF0Y2goL14oKHN1YikqKXNlY3Rpb24kLykpIHtcbiAgICAgICAgICAgICAgICAgIHJlcS5tYXJrdXBbYGgkeyhtWzFdLmxlbmd0aCAvIDMpICsgMX1gXSA9IHRydWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gaWdub3JlIGNhc2Ugc3R1ZmYgb24gYmliY3lyXG4gICAgICAgICAgaWYgKGNtZCA9PT0gJ2JpYmN5cicpIGRlbGV0ZSByZXEuY2FzZVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtpbmQ6ICdSZWd1bGFyQ29tbWFuZCcsXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIGNvbW1hbmQ6IGNtZCxcbiAgICAgICAgICAgIGFyZ3VtZW50czoge1xuICAgICAgICAgICAgICBvcHRpb25hbDogb3B0aW9uYWwsXG4gICAgICAgICAgICAgIHJlcXVpcmVkOiBbcmVxXSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICBwZWckYzEyMyA9IGZ1bmN0aW9uKGNtZCwgb3B0aW9uYWwpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogJ1JlZ3VsYXJDb21tYW5kJyxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgY29tbWFuZDogY21kLFxuICAgICAgICAgICAgYXJndW1lbnRzOiB7XG4gICAgICAgICAgICAgIG9wdGlvbmFsOiBvcHRpb25hbCxcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IFtdLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjMTI0ID0gXCJbXCIsXG4gICAgICBwZWckYzEyNSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJbXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTI2ID0gL15bXlxcXV0vLFxuICAgICAgcGVnJGMxMjcgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCJdXCJdLCB0cnVlLCBmYWxzZSksXG4gICAgICBwZWckYzEyOCA9IFwiXVwiLFxuICAgICAgcGVnJGMxMjkgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiXVwiLCBmYWxzZSksXG4gICAgICBwZWckYzEzMCA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICByZXR1cm4gYmFzaWNUZXh0Q29udmVyc2lvbnMoe1xuICAgICAgICAgICAga2luZDogJ1RleHQnLCAvLyB0aGlzIGlzbid0IHJlYWxseSBjb3JyZWN0IGJ1dCBJIGRvbid0IG5lZWQgdGhlc2UgcmlnaHQgbm93XG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIHZhbHVlOiB2LFxuICAgICAgICAgICAgbW9kZTogbWF0aC5vbiA/ICdtYXRoJyA6ICd0ZXh0JyxcbiAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgcGVnJGMxMzEgPSAvXlteIFxcdFxcXl8ke31cXFxcXS8sXG4gICAgICBwZWckYzEzMiA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIiBcIiwgXCJcXHRcIiwgXCJeXCIsIFwiX1wiLCBcIiRcIiwgXCJ7XCIsIFwifVwiLCBcIlxcXFxcIl0sIHRydWUsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTMzID0gZnVuY3Rpb24odikge1xuICAgICAgICAgIHJldHVybiBiYXNpY1RleHRDb252ZXJzaW9ucyh7XG4gICAgICAgICAgICBraW5kOiAnVGV4dCcsXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIHZhbHVlOiBub3JtYWxpemVXaGl0ZXNwYWNlKFt2XSksXG4gICAgICAgICAgICBtb2RlOiBtYXRoLm9uID8gJ21hdGgnIDogJ3RleHQnLFxuICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICBwZWckYzEzNCA9IC9eW2EtekEtWlxcLV9dLyxcbiAgICAgIHBlZyRjMTM1ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1tcImFcIiwgXCJ6XCJdLCBbXCJBXCIsIFwiWlwiXSwgXCItXCIsIFwiX1wiXSwgZmFsc2UsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTM2ID0gL15bYS16QS1aMC05XFwtJl86XS8sXG4gICAgICBwZWckYzEzNyA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtbXCJhXCIsIFwielwiXSwgW1wiQVwiLCBcIlpcIl0sIFtcIjBcIiwgXCI5XCJdLCBcIi1cIiwgXCImXCIsIFwiX1wiLCBcIjpcIl0sIGZhbHNlLCBmYWxzZSksXG4gICAgICBwZWckYzEzOCA9IC9eWydgXCI9flxcXi5dLyxcbiAgICAgIHBlZyRjMTM5ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1wiJ1wiLCBcImBcIiwgXCJcXFwiXCIsIFwiPVwiLCBcIn5cIiwgXCJeXCIsIFwiLlwiXSwgZmFsc2UsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTQwID0gL15bJ2BcIj1+XFxeLmNidXZkckhrXS8sXG4gICAgICBwZWckYzE0MSA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIidcIiwgXCJgXCIsIFwiXFxcIlwiLCBcIj1cIiwgXCJ+XCIsIFwiXlwiLCBcIi5cIiwgXCJjXCIsIFwiYlwiLCBcInVcIiwgXCJ2XCIsIFwiZFwiLCBcInJcIiwgXCJIXCIsIFwia1wiXSwgZmFsc2UsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTQyID0gXCI9XCIsXG4gICAgICBwZWckYzE0MyA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCI9XCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTQ0ID0gXCIjXCIsXG4gICAgICBwZWckYzE0NSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCIjXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTQ2ID0gL15bXFxyXFxuXS8sXG4gICAgICBwZWckYzE0NyA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIlxcclwiLCBcIlxcblwiXSwgZmFsc2UsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTQ4ID0gcGVnJG90aGVyRXhwZWN0YXRpb24oXCJNYW5kYXRvcnkgSG9yaXpvbnRhbCBXaGl0ZXNwYWNlXCIpLFxuICAgICAgcGVnJGMxNDkgPSAvXlsgXFx0XS8sXG4gICAgICBwZWckYzE1MCA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIiBcIiwgXCJcXHRcIl0sIGZhbHNlLCBmYWxzZSksXG4gICAgICBwZWckYzE1MSA9IHBlZyRvdGhlckV4cGVjdGF0aW9uKFwiT3B0aW9uYWwgSG9yaXpvbnRhbCBXaGl0ZXNwYWNlXCIpLFxuICAgICAgcGVnJGMxNTIgPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcIk1hbmRhdG9yeSBWZXJ0aWNhbCBXaGl0ZXNwYWNlXCIpLFxuICAgICAgcGVnJGMxNTMgPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcIk9wdGlvbmFsIFZlcnRpY2FsIFdoaXRlc3BhY2VcIiksXG4gICAgICBwZWckYzE1NCA9IHBlZyRvdGhlckV4cGVjdGF0aW9uKFwiTWFuZGF0b3J5IFdoaXRlc3BhY2VcIiksXG4gICAgICBwZWckYzE1NSA9IC9eWyBcXHRcXG5cXHJdLyxcbiAgICAgIHBlZyRjMTU2ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1wiIFwiLCBcIlxcdFwiLCBcIlxcblwiLCBcIlxcclwiXSwgZmFsc2UsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTU3ID0gcGVnJG90aGVyRXhwZWN0YXRpb24oXCJPcHRpb25hbCBXaGl0ZXNwYWNlXCIpLFxuXG4gICAgICBwZWckY3VyclBvcyAgICAgICAgICA9IDAsXG4gICAgICBwZWckc2F2ZWRQb3MgICAgICAgICA9IDAsXG4gICAgICBwZWckcG9zRGV0YWlsc0NhY2hlICA9IFt7IGxpbmU6IDEsIGNvbHVtbjogMSB9XSxcbiAgICAgIHBlZyRtYXhGYWlsUG9zICAgICAgID0gMCxcbiAgICAgIHBlZyRtYXhGYWlsRXhwZWN0ZWQgID0gW10sXG4gICAgICBwZWckc2lsZW50RmFpbHMgICAgICA9IDAsXG5cbiAgICAgIHBlZyRyZXN1bHQ7XG5cbiAgaWYgKFwic3RhcnRSdWxlXCIgaW4gb3B0aW9ucykge1xuICAgIGlmICghKG9wdGlvbnMuc3RhcnRSdWxlIGluIHBlZyRzdGFydFJ1bGVGdW5jdGlvbnMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW4ndCBzdGFydCBwYXJzaW5nIGZyb20gcnVsZSBcXFwiXCIgKyBvcHRpb25zLnN0YXJ0UnVsZSArIFwiXFxcIi5cIik7XG4gICAgfVxuXG4gICAgcGVnJHN0YXJ0UnVsZUZ1bmN0aW9uID0gcGVnJHN0YXJ0UnVsZUZ1bmN0aW9uc1tvcHRpb25zLnN0YXJ0UnVsZV07XG4gIH1cblxuICBmdW5jdGlvbiB0ZXh0KCkge1xuICAgIHJldHVybiBpbnB1dC5zdWJzdHJpbmcocGVnJHNhdmVkUG9zLCBwZWckY3VyclBvcyk7XG4gIH1cblxuICBmdW5jdGlvbiBsb2NhdGlvbigpIHtcbiAgICByZXR1cm4gcGVnJGNvbXB1dGVMb2NhdGlvbihwZWckc2F2ZWRQb3MsIHBlZyRjdXJyUG9zKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGV4cGVjdGVkKGRlc2NyaXB0aW9uLCBsb2NhdGlvbikge1xuICAgIGxvY2F0aW9uID0gbG9jYXRpb24gIT09IHZvaWQgMCA/IGxvY2F0aW9uIDogcGVnJGNvbXB1dGVMb2NhdGlvbihwZWckc2F2ZWRQb3MsIHBlZyRjdXJyUG9zKVxuXG4gICAgdGhyb3cgcGVnJGJ1aWxkU3RydWN0dXJlZEVycm9yKFxuICAgICAgW3BlZyRvdGhlckV4cGVjdGF0aW9uKGRlc2NyaXB0aW9uKV0sXG4gICAgICBpbnB1dC5zdWJzdHJpbmcocGVnJHNhdmVkUG9zLCBwZWckY3VyclBvcyksXG4gICAgICBsb2NhdGlvblxuICAgICk7XG4gIH1cblxuICBmdW5jdGlvbiBlcnJvcihtZXNzYWdlLCBsb2NhdGlvbikge1xuICAgIGxvY2F0aW9uID0gbG9jYXRpb24gIT09IHZvaWQgMCA/IGxvY2F0aW9uIDogcGVnJGNvbXB1dGVMb2NhdGlvbihwZWckc2F2ZWRQb3MsIHBlZyRjdXJyUG9zKVxuXG4gICAgdGhyb3cgcGVnJGJ1aWxkU2ltcGxlRXJyb3IobWVzc2FnZSwgbG9jYXRpb24pO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbih0ZXh0LCBpZ25vcmVDYXNlKSB7XG4gICAgcmV0dXJuIHsgdHlwZTogXCJsaXRlcmFsXCIsIHRleHQ6IHRleHQsIGlnbm9yZUNhc2U6IGlnbm9yZUNhc2UgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRjbGFzc0V4cGVjdGF0aW9uKHBhcnRzLCBpbnZlcnRlZCwgaWdub3JlQ2FzZSkge1xuICAgIHJldHVybiB7IHR5cGU6IFwiY2xhc3NcIiwgcGFydHM6IHBhcnRzLCBpbnZlcnRlZDogaW52ZXJ0ZWQsIGlnbm9yZUNhc2U6IGlnbm9yZUNhc2UgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRhbnlFeHBlY3RhdGlvbigpIHtcbiAgICByZXR1cm4geyB0eXBlOiBcImFueVwiIH07XG4gIH1cblxuICBmdW5jdGlvbiBwZWckZW5kRXhwZWN0YXRpb24oKSB7XG4gICAgcmV0dXJuIHsgdHlwZTogXCJlbmRcIiB9O1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJG90aGVyRXhwZWN0YXRpb24oZGVzY3JpcHRpb24pIHtcbiAgICByZXR1cm4geyB0eXBlOiBcIm90aGVyXCIsIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiB9O1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJGNvbXB1dGVQb3NEZXRhaWxzKHBvcykge1xuICAgIHZhciBkZXRhaWxzID0gcGVnJHBvc0RldGFpbHNDYWNoZVtwb3NdLCBwO1xuXG4gICAgaWYgKGRldGFpbHMpIHtcbiAgICAgIHJldHVybiBkZXRhaWxzO1xuICAgIH0gZWxzZSB7XG4gICAgICBwID0gcG9zIC0gMTtcbiAgICAgIHdoaWxlICghcGVnJHBvc0RldGFpbHNDYWNoZVtwXSkge1xuICAgICAgICBwLS07XG4gICAgICB9XG5cbiAgICAgIGRldGFpbHMgPSBwZWckcG9zRGV0YWlsc0NhY2hlW3BdO1xuICAgICAgZGV0YWlscyA9IHtcbiAgICAgICAgbGluZTogICBkZXRhaWxzLmxpbmUsXG4gICAgICAgIGNvbHVtbjogZGV0YWlscy5jb2x1bW5cbiAgICAgIH07XG5cbiAgICAgIHdoaWxlIChwIDwgcG9zKSB7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHApID09PSAxMCkge1xuICAgICAgICAgIGRldGFpbHMubGluZSsrO1xuICAgICAgICAgIGRldGFpbHMuY29sdW1uID0gMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkZXRhaWxzLmNvbHVtbisrO1xuICAgICAgICB9XG5cbiAgICAgICAgcCsrO1xuICAgICAgfVxuXG4gICAgICBwZWckcG9zRGV0YWlsc0NhY2hlW3Bvc10gPSBkZXRhaWxzO1xuICAgICAgcmV0dXJuIGRldGFpbHM7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcGVnJGNvbXB1dGVMb2NhdGlvbihzdGFydFBvcywgZW5kUG9zKSB7XG4gICAgdmFyIHN0YXJ0UG9zRGV0YWlscyA9IHBlZyRjb21wdXRlUG9zRGV0YWlscyhzdGFydFBvcyksXG4gICAgICAgIGVuZFBvc0RldGFpbHMgICA9IHBlZyRjb21wdXRlUG9zRGV0YWlscyhlbmRQb3MpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXJ0OiB7XG4gICAgICAgIG9mZnNldDogc3RhcnRQb3MsXG4gICAgICAgIGxpbmU6ICAgc3RhcnRQb3NEZXRhaWxzLmxpbmUsXG4gICAgICAgIGNvbHVtbjogc3RhcnRQb3NEZXRhaWxzLmNvbHVtblxuICAgICAgfSxcbiAgICAgIGVuZDoge1xuICAgICAgICBvZmZzZXQ6IGVuZFBvcyxcbiAgICAgICAgbGluZTogICBlbmRQb3NEZXRhaWxzLmxpbmUsXG4gICAgICAgIGNvbHVtbjogZW5kUG9zRGV0YWlscy5jb2x1bW5cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJGZhaWwoZXhwZWN0ZWQpIHtcbiAgICBpZiAocGVnJGN1cnJQb3MgPCBwZWckbWF4RmFpbFBvcykgeyByZXR1cm47IH1cblxuICAgIGlmIChwZWckY3VyclBvcyA+IHBlZyRtYXhGYWlsUG9zKSB7XG4gICAgICBwZWckbWF4RmFpbFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgcGVnJG1heEZhaWxFeHBlY3RlZCA9IFtdO1xuICAgIH1cblxuICAgIHBlZyRtYXhGYWlsRXhwZWN0ZWQucHVzaChleHBlY3RlZCk7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckYnVpbGRTaW1wbGVFcnJvcihtZXNzYWdlLCBsb2NhdGlvbikge1xuICAgIHJldHVybiBuZXcgcGVnJFN5bnRheEVycm9yKG1lc3NhZ2UsIG51bGwsIG51bGwsIGxvY2F0aW9uKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRidWlsZFN0cnVjdHVyZWRFcnJvcihleHBlY3RlZCwgZm91bmQsIGxvY2F0aW9uKSB7XG4gICAgcmV0dXJuIG5ldyBwZWckU3ludGF4RXJyb3IoXG4gICAgICBwZWckU3ludGF4RXJyb3IuYnVpbGRNZXNzYWdlKGV4cGVjdGVkLCBmb3VuZCksXG4gICAgICBleHBlY3RlZCxcbiAgICAgIGZvdW5kLFxuICAgICAgbG9jYXRpb25cbiAgICApO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlQmlibGlvZ3JhcGh5KCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMztcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBwZWckcGFyc2VfXygpO1xuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBbXTtcbiAgICAgIHMzID0gcGVnJHBhcnNlTm9kZSgpO1xuICAgICAgd2hpbGUgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyLnB1c2goczMpO1xuICAgICAgICBzMyA9IHBlZyRwYXJzZU5vZGUoKTtcbiAgICAgIH1cbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMyA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgIHMxID0gcGVnJGMwKHMyKTtcbiAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlQ29tbWVudCgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNSwgczYsIHM3O1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDY0KSB7XG4gICAgICBzMSA9IHBlZyRjMTtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyKTsgfVxuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMyID0gcGVnJHBhcnNlX18oKTtcbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCA3KS50b0xvd2VyQ2FzZSgpID09PSBwZWckYzMpIHtcbiAgICAgICAgICBzMyA9IGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgNyk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgKz0gNztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzQpOyB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczQgPSBwZWckcGFyc2VfX2goKTtcbiAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlQnJhY2VkQ29tbWVudCgpO1xuICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMSA9IHBlZyRjNShzNSk7XG4gICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNjQpIHtcbiAgICAgICAgczEgPSBwZWckYzE7XG4gICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyKTsgfVxuICAgICAgfVxuICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyID0gcGVnJHBhcnNlX18oKTtcbiAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgNykudG9Mb3dlckNhc2UoKSA9PT0gcGVnJGMzKSB7XG4gICAgICAgICAgICBzMyA9IGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgNyk7XG4gICAgICAgICAgICBwZWckY3VyclBvcyArPSA3O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNCk7IH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzNCA9IHBlZyRwYXJzZV9faCgpO1xuICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM1ID0gW107XG4gICAgICAgICAgICAgIGlmIChwZWckYzYudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgIHM2ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHM2ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNyk7IH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB3aGlsZSAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzNS5wdXNoKHM2KTtcbiAgICAgICAgICAgICAgICBpZiAocGVnJGM2LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICAgIHM2ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHM2ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM3KTsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzNiA9IFtdO1xuICAgICAgICAgICAgICAgIGlmIChwZWckYzgudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgczcgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgczcgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzkpOyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHdoaWxlIChzNyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczYucHVzaChzNyk7XG4gICAgICAgICAgICAgICAgICBpZiAocGVnJGM4LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgczcgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgczcgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjOSk7IH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGMxMChzNSk7XG4gICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMxID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChwZWckYzExLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICBzMiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEyKTsgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMzID0gW107XG4gICAgICAgICAgaWYgKHBlZyRjNi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICBzNCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNyk7IH1cbiAgICAgICAgICB9XG4gICAgICAgICAgd2hpbGUgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMy5wdXNoKHM0KTtcbiAgICAgICAgICAgIGlmIChwZWckYzYudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICBzNCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM3KTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyID0gW3MyLCBzM107XG4gICAgICAgICAgICBzMSA9IHMyO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMxO1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMxO1xuICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMiA9IFtdO1xuICAgICAgICAgIGlmIChwZWckYzgudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgczMgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzkpOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHdoaWxlIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIucHVzaChzMyk7XG4gICAgICAgICAgICBpZiAocGVnJGM4LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgczMgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjOSk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgIHMxID0gcGVnJGMxMyhzMSk7XG4gICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZU5vZGUoKSB7XG4gICAgdmFyIHMwLCBzMTtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBwZWckcGFyc2VDb21tZW50KCk7XG4gICAgaWYgKHMxID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMSA9IHBlZyRwYXJzZVByZWFtYmxlRXhwcmVzc2lvbigpO1xuICAgICAgaWYgKHMxID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMxID0gcGVnJHBhcnNlU3RyaW5nRGVjbGFyYXRpb24oKTtcbiAgICAgICAgaWYgKHMxID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczEgPSBwZWckcGFyc2VFbnRyeSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICBzMSA9IHBlZyRjMTQoczEpO1xuICAgIH1cbiAgICBzMCA9IHMxO1xuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlQnJhY2VkQ29tbWVudCgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczM7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTIzKSB7XG4gICAgICBzMSA9IHBlZyRjMTU7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTYpOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBbXTtcbiAgICAgIGlmIChwZWckYzE3LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgczMgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTgpOyB9XG4gICAgICB9XG4gICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczMgPSBwZWckcGFyc2VCcmFjZWRDb21tZW50KCk7XG4gICAgICB9XG4gICAgICB3aGlsZSAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIucHVzaChzMyk7XG4gICAgICAgIGlmIChwZWckYzE3LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICBzMyA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE4KTsgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMzID0gcGVnJHBhcnNlQnJhY2VkQ29tbWVudCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjUpIHtcbiAgICAgICAgICBzMyA9IHBlZyRjMTk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIwKTsgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgIHMxID0gcGVnJGMyMShzMik7XG4gICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZUVudHJ5KCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1LCBzNiwgczcsIHM4LCBzOSwgczEwLCBzMTEsIHMxMjtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA2NCkge1xuICAgICAgczEgPSBwZWckYzE7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMik7IH1cbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMiA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczMgPSBwZWckY3VyclBvcztcbiAgICAgICAgczQgPSBbXTtcbiAgICAgICAgaWYgKHBlZyRjMjIudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgIHM1ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjMpOyB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgd2hpbGUgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzNC5wdXNoKHM1KTtcbiAgICAgICAgICAgIGlmIChwZWckYzIyLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgczUgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjMpOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMyA9IGlucHV0LnN1YnN0cmluZyhzMywgcGVnJGN1cnJQb3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMzID0gczQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczQgPSBwZWckcGFyc2VfXygpO1xuICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgaWYgKHBlZyRjMjQudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICBzNSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyNSk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzNiA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHM3ID0gcGVnJHBhcnNlRW50cnlJZCgpO1xuICAgICAgICAgICAgICAgIGlmIChzNyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczcgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJHBhcnNlX18oKTtcbiAgICAgICAgICAgICAgICAgIGlmIChzOCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzOSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBzMTAgPSBwZWckcGFyc2VGaWVsZCgpO1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoczEwICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgczkucHVzaChzMTApO1xuICAgICAgICAgICAgICAgICAgICAgIHMxMCA9IHBlZyRwYXJzZUZpZWxkKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHM5ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgczEwID0gcGVnJHBhcnNlX18oKTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoczEwICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJGMyNi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMxMSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzMTEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjcpOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoczExICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMxMiA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjMjgoczMsIHM3LCBzOSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZVByZWFtYmxlRXhwcmVzc2lvbigpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNSwgczYsIHM3LCBzOCwgczksIHMxMDtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA2NCkge1xuICAgICAgczEgPSBwZWckYzE7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMik7IH1cbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMiA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgOCkudG9Mb3dlckNhc2UoKSA9PT0gcGVnJGMyOSkge1xuICAgICAgICAgIHMzID0gaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCA4KTtcbiAgICAgICAgICBwZWckY3VyclBvcyArPSA4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMzApOyB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczQgPSBwZWckcGFyc2VfXygpO1xuICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgaWYgKHBlZyRjMjQudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICBzNSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyNSk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzNiA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHM3ID0gW107XG4gICAgICAgICAgICAgICAgczggPSBwZWckcGFyc2VFbnZpcm9ubWVudCgpO1xuICAgICAgICAgICAgICAgIGlmIChzOCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczggPSBwZWckcGFyc2VCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgaWYgKHM4ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJHBhcnNlTWF0aCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoczggPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzOCA9IHBlZyRwYXJzZUNvbW1hbmQoKTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoczggPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJHBhcnNlVGV4dCgpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3aGlsZSAoczggIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHM3LnB1c2goczgpO1xuICAgICAgICAgICAgICAgICAgczggPSBwZWckcGFyc2VFbnZpcm9ubWVudCgpO1xuICAgICAgICAgICAgICAgICAgaWYgKHM4ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJHBhcnNlQmxvY2soKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHM4ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgczggPSBwZWckcGFyc2VNYXRoKCk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHM4ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzOCA9IHBlZyRwYXJzZUNvbW1hbmQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzOCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzOCA9IHBlZyRwYXJzZVRleHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBzOCA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgICAgICAgICAgICBpZiAoczggIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRjMjYudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICAgIHM5ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHM5ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjcpOyB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHM5ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgczEwID0gcGVnJHBhcnNlX18oKTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoczEwICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGMzMShzNSwgczcsIHM5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlU3RyaW5nRGVjbGFyYXRpb24oKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNCwgczUsIHM2LCBzNywgczgsIHM5LCBzMTAsIHMxMSwgczEyO1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDY0KSB7XG4gICAgICBzMSA9IHBlZyRjMTtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyKTsgfVxuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMyID0gcGVnJHBhcnNlX18oKTtcbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCA2KS50b0xvd2VyQ2FzZSgpID09PSBwZWckYzMyKSB7XG4gICAgICAgICAgczMgPSBpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDYpO1xuICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMzMyk7IH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzNCA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBpZiAocGVnJGMyNC50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgIHM1ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzI1KTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM2ID0gcGVnJHBhcnNlX18oKTtcbiAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczcgPSBwZWckcGFyc2VWYXJpYWJsZU5hbWUoKTtcbiAgICAgICAgICAgICAgICBpZiAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJHBhcnNlRmllbGRTZXBhcmF0b3IoKTtcbiAgICAgICAgICAgICAgICAgIGlmIChzOCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzOSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBzMTAgPSBwZWckcGFyc2VSZWd1bGFyVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHMxMCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChzMTAgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM5LnB1c2goczEwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMxMCA9IHBlZyRwYXJzZVJlZ3VsYXJWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBzOSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHM5ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgczEwID0gcGVnJHBhcnNlX18oKTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoczEwICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJGMyNi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMxMSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzMTEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjcpOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoczExICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMxMiA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjMzQoczcsIHM5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlRW50cnlJZCgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0O1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBzMSA9IHBlZyRwYXJzZV9fKCk7XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMiA9IHBlZyRjdXJyUG9zO1xuICAgICAgczMgPSBbXTtcbiAgICAgIGlmIChwZWckYzM1LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgczQgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMzYpOyB9XG4gICAgICB9XG4gICAgICB3aGlsZSAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczMucHVzaChzNCk7XG4gICAgICAgIGlmIChwZWckYzM1LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICBzNCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzM2KTsgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIgPSBpbnB1dC5zdWJzdHJpbmcoczIsIHBlZyRjdXJyUG9zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMyID0gczM7XG4gICAgICB9XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczMgPSBwZWckcGFyc2VfXygpO1xuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDQ0KSB7XG4gICAgICAgICAgICBzNCA9IHBlZyRjMzc7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMzgpOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICBzMSA9IHBlZyRjMzkoczIpO1xuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VGaWVsZCgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNSwgczYsIHM3LCBzODtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBwZWckcGFyc2VGaWVsZE5hbWUoKTtcbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHBlZyRzYXZlZFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgczIgPSBwZWckYzQwKHMxKTtcbiAgICAgIGlmIChzMikge1xuICAgICAgICBzMiA9IHZvaWQgMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMyA9IHBlZyRwYXJzZUZpZWxkU2VwYXJhdG9yKCk7XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTIzKSB7XG4gICAgICAgICAgICBzNCA9IHBlZyRjMTU7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTYpOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczUgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjMpIHtcbiAgICAgICAgICAgICAgczYgPSBwZWckYzE1O1xuICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczYgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTYpOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHM1O1xuICAgICAgICAgICAgICBzNSA9IHZvaWQgMDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzNiA9IHBlZyRwYXJzZVZlcmJhdGltRmllbGRWYWx1ZSgpO1xuICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyNSkge1xuICAgICAgICAgICAgICAgICAgczcgPSBwZWckYzE5O1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgczcgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIwKTsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJHBhcnNlRmllbGRUZXJtaW5hdG9yKCk7XG4gICAgICAgICAgICAgICAgICBpZiAoczggIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGM0MShzMSwgczYpO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cbiAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICBzMSA9IHBlZyRwYXJzZUZpZWxkTmFtZSgpO1xuICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHBlZyRzYXZlZFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMiA9IHBlZyRjNDIoczEpO1xuICAgICAgICBpZiAoczIpIHtcbiAgICAgICAgICBzMiA9IHZvaWQgMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczMgPSBwZWckcGFyc2VGaWVsZFNlcGFyYXRvcigpO1xuICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczQgPSBwZWckcGFyc2VWZXJiYXRpbUZpZWxkVmFsdWUoKTtcbiAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRwYXJzZUZpZWxkVGVybWluYXRvcigpO1xuICAgICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNDMoczEsIHM0KTtcbiAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgczEgPSBwZWckcGFyc2VGaWVsZE5hbWUoKTtcbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczIgPSBwZWckcGFyc2VGaWVsZFNlcGFyYXRvcigpO1xuICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczMgPSBwZWckcGFyc2VGaWVsZFZhbHVlKCk7XG4gICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczQgPSBwZWckcGFyc2VGaWVsZFRlcm1pbmF0b3IoKTtcbiAgICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckYzQ0KHMxLCBzMyk7XG4gICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZUZpZWxkTmFtZSgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0O1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBzMSA9IHBlZyRwYXJzZV9fKCk7XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMiA9IHBlZyRjdXJyUG9zO1xuICAgICAgczMgPSBbXTtcbiAgICAgIGlmIChwZWckYzQ1LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgczQgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNDYpOyB9XG4gICAgICB9XG4gICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgd2hpbGUgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczMucHVzaChzNCk7XG4gICAgICAgICAgaWYgKHBlZyRjNDUudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgczQgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzQ2KTsgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyID0gaW5wdXQuc3Vic3RyaW5nKHMyLCBwZWckY3VyclBvcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMiA9IHMzO1xuICAgICAgfVxuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICBzMSA9IHBlZyRjNDcoczIpO1xuICAgICAgICBzMCA9IHMxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZVZlcmJhdGltRmllbGRWYWx1ZSgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczM7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMzQpIHtcbiAgICAgIHMxID0gcGVnJGM0ODtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM0OSk7IH1cbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMiA9IHBlZyRwYXJzZVRleHROb1F1b3RlcygpO1xuICAgICAgaWYgKHMyID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDM0KSB7XG4gICAgICAgICAgczMgPSBwZWckYzQ4O1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM0OSk7IH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICBzMSA9IHBlZyRjNTAoczIpO1xuICAgICAgICAgIHMwID0gczE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjMpIHtcbiAgICAgICAgczEgPSBwZWckYzE1O1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTYpOyB9XG4gICAgICB9XG4gICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIgPSBbXTtcbiAgICAgICAgczMgPSBwZWckcGFyc2VWZXJiYXRpbVRleHQoKTtcbiAgICAgICAgd2hpbGUgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczIucHVzaChzMyk7XG4gICAgICAgICAgczMgPSBwZWckcGFyc2VWZXJiYXRpbVRleHQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyNSkge1xuICAgICAgICAgICAgczMgPSBwZWckYzE5O1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIwKTsgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgczEgPSBwZWckYzUxKHMyKTtcbiAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlVmVyYmF0aW1UZXh0KCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMztcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBwZWckY3VyclBvcztcbiAgICBzMiA9IFtdO1xuICAgIGlmIChwZWckYzE3LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgIHMzID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxOCk7IH1cbiAgICB9XG4gICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICB3aGlsZSAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIucHVzaChzMyk7XG4gICAgICAgIGlmIChwZWckYzE3LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICBzMyA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE4KTsgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMSA9IGlucHV0LnN1YnN0cmluZyhzMSwgcGVnJGN1cnJQb3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHMyO1xuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgczEgPSBwZWckYzUyKHMxKTtcbiAgICB9XG4gICAgczAgPSBzMTtcbiAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyMykge1xuICAgICAgICBzMSA9IHBlZyRjMTU7XG4gICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNik7IH1cbiAgICAgIH1cbiAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMiA9IFtdO1xuICAgICAgICBzMyA9IHBlZyRwYXJzZVZlcmJhdGltVGV4dCgpO1xuICAgICAgICB3aGlsZSAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMi5wdXNoKHMzKTtcbiAgICAgICAgICBzMyA9IHBlZyRwYXJzZVZlcmJhdGltVGV4dCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTI1KSB7XG4gICAgICAgICAgICBzMyA9IHBlZyRjMTk7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjApOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICBzMSA9IHBlZyRjNTMoczIpO1xuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VGaWVsZFZhbHVlKCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMztcblxuICAgIHMwID0gcGVnJHBhcnNlTnVtYmVyKCk7XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgcGVnJHNhdmVkUG9zID0gcGVnJGN1cnJQb3M7XG4gICAgICBzMSA9IHBlZyRjNTQoKTtcbiAgICAgIGlmIChzMSkge1xuICAgICAgICBzMSA9IHZvaWQgMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMiA9IFtdO1xuICAgICAgICBzMyA9IHBlZyRwYXJzZVJlZ3VsYXJWYWx1ZSgpO1xuICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMyA9IHBlZyRwYXJzZVN0cmluZ1ZhbHVlKCk7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczIucHVzaChzMyk7XG4gICAgICAgICAgczMgPSBwZWckcGFyc2VSZWd1bGFyVmFsdWUoKTtcbiAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlU3RyaW5nVmFsdWUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgczEgPSBwZWckYzU1KHMyKTtcbiAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlUmVndWxhclZhbHVlKCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1O1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDM0KSB7XG4gICAgICBzMSA9IHBlZyRjNDg7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNDkpOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBbXTtcbiAgICAgIHMzID0gcGVnJHBhcnNlRW52aXJvbm1lbnQoKTtcbiAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMyA9IHBlZyRwYXJzZUJsb2NrKCk7XG4gICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMzID0gcGVnJHBhcnNlTWF0aCgpO1xuICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczMgPSBwZWckcGFyc2VDb21tYW5kKCk7XG4gICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VUZXh0Tm9RdW90ZXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHdoaWxlIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMi5wdXNoKHMzKTtcbiAgICAgICAgczMgPSBwZWckcGFyc2VFbnZpcm9ubWVudCgpO1xuICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMyA9IHBlZyRwYXJzZUJsb2NrKCk7XG4gICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMyA9IHBlZyRwYXJzZU1hdGgoKTtcbiAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZUNvbW1hbmQoKTtcbiAgICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VUZXh0Tm9RdW90ZXMoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMzQpIHtcbiAgICAgICAgICBzMyA9IHBlZyRjNDg7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzQ5KTsgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHM0ID0gcGVnJHBhcnNlQ29uY2F0KCk7XG4gICAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzNCA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICBzMSA9IHBlZyRjNTYoczIpO1xuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgNikgPT09IHBlZyRjNTcpIHtcbiAgICAgICAgczEgPSBwZWckYzU3O1xuICAgICAgICBwZWckY3VyclBvcyArPSA2O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNTgpOyB9XG4gICAgICB9XG4gICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIgPSBwZWckY3VyclBvcztcbiAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgIGlmIChwZWckYzU5LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICBzMyA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzYwKTsgfVxuICAgICAgICB9XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMiA9IHZvaWQgMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMyO1xuICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMyA9IFtdO1xuICAgICAgICAgIHM0ID0gcGVnJHBhcnNlVmVyYmF0aW1UZXh0KCk7XG4gICAgICAgICAgd2hpbGUgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMy5wdXNoKHM0KTtcbiAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNlVmVyYmF0aW1UZXh0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjUpIHtcbiAgICAgICAgICAgICAgczQgPSBwZWckYzE5O1xuICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjApOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczUgPSBwZWckcGFyc2VDb25jYXQoKTtcbiAgICAgICAgICAgICAgaWYgKHM1ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczUgPSBudWxsO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJGM1MShzMyk7XG4gICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTIzKSB7XG4gICAgICAgICAgczEgPSBwZWckYzE1O1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNik7IH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMiA9IFtdO1xuICAgICAgICAgIHMzID0gcGVnJHBhcnNlRW52aXJvbm1lbnQoKTtcbiAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlQmxvY2soKTtcbiAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZU1hdGgoKTtcbiAgICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VDb21tYW5kKCk7XG4gICAgICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZVRleHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgd2hpbGUgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMi5wdXNoKHMzKTtcbiAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlRW52aXJvbm1lbnQoKTtcbiAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZUJsb2NrKCk7XG4gICAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlTWF0aCgpO1xuICAgICAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VDb21tYW5kKCk7XG4gICAgICAgICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VUZXh0KCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjUpIHtcbiAgICAgICAgICAgICAgczMgPSBwZWckYzE5O1xuICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjApOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczQgPSBwZWckcGFyc2VDb25jYXQoKTtcbiAgICAgICAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczQgPSBudWxsO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJGM1NihzMik7XG4gICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgIHMxID0gcGVnJHBhcnNlU3RyaW5nUmVmZXJlbmNlKCk7XG4gICAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRwYXJzZUNvbmNhdCgpO1xuICAgICAgICAgICAgaWYgKHMyID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHMyID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczEgPSBwZWckYzU2KHMxKTtcbiAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VTdHJpbmdWYWx1ZSgpIHtcbiAgICB2YXIgczAsIHMxLCBzMjtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBwZWckcGFyc2VTdHJpbmdSZWZlcmVuY2UoKTtcbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMyID0gcGVnJHBhcnNlQ29uY2F0KCk7XG4gICAgICBpZiAoczIgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIgPSBudWxsO1xuICAgICAgfVxuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICBzMSA9IHBlZyRjNTYoczEpO1xuICAgICAgICBzMCA9IHMxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZVRleHQoKSB7XG4gICAgdmFyIHMwLCBzMSwgczI7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gW107XG4gICAgaWYgKHBlZyRjNjEudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgczIgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzYyKTsgfVxuICAgIH1cbiAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHdoaWxlIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMS5wdXNoKHMyKTtcbiAgICAgICAgaWYgKHBlZyRjNjEudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgIHMyID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNjIpOyB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgczEgPSBwZWckYzYzKHMxKTtcbiAgICB9XG4gICAgczAgPSBzMTtcblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZVRleHROb1F1b3RlcygpIHtcbiAgICB2YXIgczAsIHMxLCBzMjtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBbXTtcbiAgICBpZiAocGVnJGM2NC50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICBzMiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNjUpOyB9XG4gICAgfVxuICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgd2hpbGUgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMxLnB1c2goczIpO1xuICAgICAgICBpZiAocGVnJGM2NC50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgczIgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM2NSk7IH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICBzMSA9IHBlZyRjNjMoczEpO1xuICAgIH1cbiAgICBzMCA9IHMxO1xuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlTnVtYmVyKCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMztcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBwZWckY3VyclBvcztcbiAgICBzMiA9IFtdO1xuICAgIGlmIChwZWckYzY2LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgIHMzID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM2Nyk7IH1cbiAgICB9XG4gICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICB3aGlsZSAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIucHVzaChzMyk7XG4gICAgICAgIGlmIChwZWckYzY2LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICBzMyA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzY3KTsgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMSA9IGlucHV0LnN1YnN0cmluZyhzMSwgcGVnJGN1cnJQb3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHMyO1xuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgczEgPSBwZWckYzY4KHMxKTtcbiAgICB9XG4gICAgczAgPSBzMTtcblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZVN0cmluZ1JlZmVyZW5jZSgpIHtcbiAgICB2YXIgczAsIHMxO1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBzMSA9IHBlZyRwYXJzZVZhcmlhYmxlTmFtZSgpO1xuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICBzMSA9IHBlZyRjNjkoczEpO1xuICAgIH1cbiAgICBzMCA9IHMxO1xuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlRW52aXJvbm1lbnQoKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNCwgczUsIHM2LCBzNywgczg7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDcpID09PSBwZWckYzcwKSB7XG4gICAgICBzMSA9IHBlZyRjNzA7XG4gICAgICBwZWckY3VyclBvcyArPSA3O1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNzEpOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBwZWckY3VyclBvcztcbiAgICAgIHMzID0gW107XG4gICAgICBpZiAocGVnJGM3Mi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzczKTsgfVxuICAgICAgfVxuICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHdoaWxlIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMzLnB1c2goczQpO1xuICAgICAgICAgIGlmIChwZWckYzcyLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM3Myk7IH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMiA9IGlucHV0LnN1YnN0cmluZyhzMiwgcGVnJGN1cnJQb3MpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczIgPSBzMztcbiAgICAgIH1cbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyNSkge1xuICAgICAgICAgIHMzID0gcGVnJGMxOTtcbiAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjApOyB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczQgPSBbXTtcbiAgICAgICAgICBzNSA9IHBlZyRwYXJzZUVudmlyb25tZW50KCk7XG4gICAgICAgICAgaWYgKHM1ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzNSA9IHBlZyRwYXJzZUJsb2NrKCk7XG4gICAgICAgICAgICBpZiAoczUgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczUgPSBwZWckcGFyc2VDb21tYW5kKCk7XG4gICAgICAgICAgICAgIGlmIChzNSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlTWF0aCgpO1xuICAgICAgICAgICAgICAgIGlmIChzNSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczUgPSBwZWckcGFyc2VUZXh0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHdoaWxlIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczQucHVzaChzNSk7XG4gICAgICAgICAgICBzNSA9IHBlZyRwYXJzZUVudmlyb25tZW50KCk7XG4gICAgICAgICAgICBpZiAoczUgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczUgPSBwZWckcGFyc2VCbG9jaygpO1xuICAgICAgICAgICAgICBpZiAoczUgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzNSA9IHBlZyRwYXJzZUNvbW1hbmQoKTtcbiAgICAgICAgICAgICAgICBpZiAoczUgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlTWF0aCgpO1xuICAgICAgICAgICAgICAgICAgaWYgKHM1ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlVGV4dCgpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDUpID09PSBwZWckYzc0KSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJGM3NDtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gNTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzc1KTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM2ID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgIHM3ID0gW107XG4gICAgICAgICAgICAgIGlmIChwZWckYzcyLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICBzOCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzOCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzczKTsgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChzOCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHdoaWxlIChzOCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczcucHVzaChzOCk7XG4gICAgICAgICAgICAgICAgICBpZiAocGVnJGM3Mi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICAgIHM4ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzczKTsgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzNyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczYgPSBpbnB1dC5zdWJzdHJpbmcoczYsIHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzNiA9IHM3O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTI1KSB7XG4gICAgICAgICAgICAgICAgICBzNyA9IHBlZyRjMTk7XG4gICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBzNyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjApOyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzNyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgICBzOCA9IHBlZyRjNzYoczIsIHM0LCBzNik7XG4gICAgICAgICAgICAgICAgICBpZiAoczgpIHtcbiAgICAgICAgICAgICAgICAgICAgczggPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzOCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBpZiAoczggIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGM3NyhzMiwgczQsIHM2KTtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VCbG9jaygpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNSwgczY7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzc4KSB7XG4gICAgICBzMSA9IHBlZyRjNzg7XG4gICAgICBwZWckY3VyclBvcyArPSAyO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNzkpOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBwZWckcGFyc2VFeHRlbmRlZERpYWNyaXRpYygpO1xuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMzID0gcGVnJHBhcnNlX18oKTtcbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgaWYgKHBlZyRjNzIudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgczQgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzczKTsgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczQgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHM0ID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDkyKSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJGM4MDtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzgxKTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIGlmIChwZWckYzgyLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICBzNiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzNiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzgzKTsgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHM1ID0gW3M1LCBzNl07XG4gICAgICAgICAgICAgICAgczQgPSBzNTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHM0O1xuICAgICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzNDtcbiAgICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTI1KSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJGMxOTtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIwKTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMSA9IHBlZyRjODQoczIsIHM0KTtcbiAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgNikgPT09IHBlZyRjNTcpIHtcbiAgICAgICAgczEgPSBwZWckYzU3O1xuICAgICAgICBwZWckY3VyclBvcyArPSA2O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNTgpOyB9XG4gICAgICB9XG4gICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIgPSBwZWckY3VyclBvcztcbiAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgIGlmIChwZWckYzU5LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICBzMyA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzYwKTsgfVxuICAgICAgICB9XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMiA9IHZvaWQgMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMyO1xuICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMyA9IFtdO1xuICAgICAgICAgIHM0ID0gcGVnJHBhcnNlVmVyYmF0aW1UZXh0KCk7XG4gICAgICAgICAgd2hpbGUgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMy5wdXNoKHM0KTtcbiAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNlVmVyYmF0aW1UZXh0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjUpIHtcbiAgICAgICAgICAgICAgczQgPSBwZWckYzE5O1xuICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjApOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgIHMxID0gcGVnJGM4NShzMyk7XG4gICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjMpIHtcbiAgICAgICAgICBzMSA9IHBlZyRjMTU7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE2KTsgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMyID0gW107XG4gICAgICAgICAgczMgPSBwZWckcGFyc2VFbnZpcm9ubWVudCgpO1xuICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczMgPSBwZWckcGFyc2VCbG9jaygpO1xuICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlQ29tbWFuZCgpO1xuICAgICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZU1hdGgoKTtcbiAgICAgICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlVGV4dCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB3aGlsZSAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyLnB1c2goczMpO1xuICAgICAgICAgICAgczMgPSBwZWckcGFyc2VFbnZpcm9ubWVudCgpO1xuICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlQmxvY2soKTtcbiAgICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VDb21tYW5kKCk7XG4gICAgICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZU1hdGgoKTtcbiAgICAgICAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZVRleHQoKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyNSkge1xuICAgICAgICAgICAgICBzMyA9IHBlZyRjMTk7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyMCk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczEgPSBwZWckYzg2KHMyKTtcbiAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VNYXRoKCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1LCBzNjtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgcGVnJHNhdmVkUG9zID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBwZWckYzg3KCk7XG4gICAgaWYgKHMxKSB7XG4gICAgICBzMSA9IHZvaWQgMDtcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMzYpIHtcbiAgICAgICAgczIgPSBwZWckYzg4O1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjODkpOyB9XG4gICAgICB9XG4gICAgICBpZiAoczIgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgMikgPT09IHBlZyRjOTApIHtcbiAgICAgICAgICBzMiA9IHBlZyRjOTA7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgKz0gMjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzkxKTsgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgcGVnJHNhdmVkUG9zID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMzID0gcGVnJGM5MihzMik7XG4gICAgICAgIGlmIChzMykge1xuICAgICAgICAgIHMzID0gdm9pZCAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzNCA9IFtdO1xuICAgICAgICAgIHM1ID0gcGVnJHBhcnNlQmxvY2soKTtcbiAgICAgICAgICBpZiAoczUgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlQ29tbWFuZCgpO1xuICAgICAgICAgICAgaWYgKHM1ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlVGV4dCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB3aGlsZSAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHM0LnB1c2goczUpO1xuICAgICAgICAgICAgczUgPSBwZWckcGFyc2VCbG9jaygpO1xuICAgICAgICAgICAgaWYgKHM1ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlQ29tbWFuZCgpO1xuICAgICAgICAgICAgICBpZiAoczUgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzNSA9IHBlZyRwYXJzZVRleHQoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMzYpIHtcbiAgICAgICAgICAgICAgczUgPSBwZWckYzg4O1xuICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjODkpOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczUgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgMikgPT09IHBlZyRjOTApIHtcbiAgICAgICAgICAgICAgICBzNSA9IHBlZyRjOTA7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gMjtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzkxKTsgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgIHM2ID0gcGVnJGM5MyhzMiwgczQpO1xuICAgICAgICAgICAgICBpZiAoczYpIHtcbiAgICAgICAgICAgICAgICBzNiA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzNiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckYzk0KHMyLCBzNCk7XG4gICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZUxpbmVDb21tZW50KCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1O1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDM3KSB7XG4gICAgICBzMSA9IHBlZyRjOTU7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjOTYpOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBwZWckcGFyc2VfX2goKTtcbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzNCA9IFtdO1xuICAgICAgICBpZiAocGVnJGM5Ny50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgczUgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM5OCk7IH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICB3aGlsZSAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHM0LnB1c2goczUpO1xuICAgICAgICAgICAgaWYgKHBlZyRjOTcudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICBzNSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM5OCk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMzID0gaW5wdXQuc3Vic3RyaW5nKHMzLCBwZWckY3VyclBvcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczMgPSBzNDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzNCA9IFtdO1xuICAgICAgICAgIHM1ID0gcGVnJHBhcnNlRU9MKCk7XG4gICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICB3aGlsZSAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczQucHVzaChzNSk7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlRU9MKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgIHMxID0gcGVnJGM5OShzMyk7XG4gICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZUNvbW1hbmQoKSB7XG4gICAgdmFyIHMwO1xuXG4gICAgczAgPSBwZWckcGFyc2VTY3JpcHRDb21tYW5kKCk7XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMCA9IHBlZyRwYXJzZURpYWNyaXRpY0NvbW1hbmQoKTtcbiAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMCA9IHBlZyRwYXJzZVJlZ3VsYXJDb21tYW5kKCk7XG4gICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMwID0gcGVnJHBhcnNlU3ltYm9sQ29tbWFuZCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlU2NyaXB0Q29tbWFuZCgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczM7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIGlmIChwZWckYzEwMC50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICBzMSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTAxKTsgfVxuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMyID0gcGVnJHBhcnNlX19oKCk7XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczMgPSBwZWckcGFyc2VSZXF1aXJlZEFyZ3VtZW50KCk7XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgIHMxID0gcGVnJGMxMDIoczEsIHMzKTtcbiAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlRGlhY3JpdGljQ29tbWFuZCgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNSwgczY7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gOTIpIHtcbiAgICAgIHMxID0gcGVnJGM4MDtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4MSk7IH1cbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMiA9IHBlZyRwYXJzZVNpbXBsZURpYWNyaXRpYygpO1xuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMzID0gcGVnJHBhcnNlX18oKTtcbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgaWYgKHBlZyRjNzIudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgczQgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzczKTsgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczQgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHM0ID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDkyKSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJGM4MDtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzgxKTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIGlmIChwZWckYzgyLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICBzNiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzNiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzgzKTsgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHM1ID0gW3M1LCBzNl07XG4gICAgICAgICAgICAgICAgczQgPSBzNTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHM0O1xuICAgICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzNDtcbiAgICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgczEgPSBwZWckYzg0KHMyLCBzNCk7XG4gICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cbiAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDkyKSB7XG4gICAgICAgIHMxID0gcGVnJGM4MDtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzgxKTsgfVxuICAgICAgfVxuICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyID0gcGVnJHBhcnNlRXh0ZW5kZWREaWFjcml0aWMoKTtcbiAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjMpIHtcbiAgICAgICAgICAgIHMzID0gcGVnJGMxNTtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNik7IH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBpZiAocGVnJGM3Mi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzczKTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gOTIpIHtcbiAgICAgICAgICAgICAgICBzNSA9IHBlZyRjODA7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzgxKTsgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIGlmIChwZWckYzgyLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICAgIHM2ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHM2ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4Myk7IH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBzNSA9IFtzNSwgczZdO1xuICAgICAgICAgICAgICAgICAgczQgPSBzNTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzNDtcbiAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzNDtcbiAgICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyNSkge1xuICAgICAgICAgICAgICAgIHM1ID0gcGVnJGMxOTtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjApOyB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckYzg0KHMyLCBzNCk7XG4gICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gOTIpIHtcbiAgICAgICAgICBzMSA9IHBlZyRjODA7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzgxKTsgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMyID0gcGVnJHBhcnNlRXh0ZW5kZWREaWFjcml0aWMoKTtcbiAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMzID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTIzKSB7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJGMxNTtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE2KTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMztcbiAgICAgICAgICAgICAgczMgPSB2b2lkIDA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczQgPSBwZWckcGFyc2VSZWd1bGFyVmFsdWUoKTtcbiAgICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckYzEwMyhzMiwgczQpO1xuICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VTeW1ib2xDb21tYW5kKCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMztcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA5Mikge1xuICAgICAgczEgPSBwZWckYzgwO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzgxKTsgfVxuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMyID0gcGVnJGN1cnJQb3M7XG4gICAgICBpZiAocGVnJGMxMDQudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICBzMyA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMDUpOyB9XG4gICAgICB9XG4gICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIgPSBpbnB1dC5zdWJzdHJpbmcoczIsIHBlZyRjdXJyUG9zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMyID0gczM7XG4gICAgICB9XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgIHMxID0gcGVnJGMxMDYoczIpO1xuICAgICAgICBzMCA9IHMxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZVJlZ3VsYXJDb21tYW5kKCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1LCBzNiwgczcsIHM4LCBzOSwgczEwO1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDkyKSB7XG4gICAgICBzMSA9IHBlZyRjODA7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjODEpOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgMTApID09PSBwZWckYzEwNykge1xuICAgICAgICBzMiA9IHBlZyRjMTA3O1xuICAgICAgICBwZWckY3VyclBvcyArPSAxMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEwOCk7IH1cbiAgICAgIH1cbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMyA9IHBlZyRwYXJzZUJsb2NrKCk7XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgIHM0ID0gcGVnJGMxMDkoczIsIHMzKTtcbiAgICAgICAgICBpZiAoczQpIHtcbiAgICAgICAgICAgIHM0ID0gdm9pZCAwO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczUgPSBbXTtcbiAgICAgICAgICAgIHM2ID0gcGVnJHBhcnNlT3B0aW9uYWxBcmd1bWVudCgpO1xuICAgICAgICAgICAgd2hpbGUgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM1LnB1c2goczYpO1xuICAgICAgICAgICAgICBzNiA9IHBlZyRwYXJzZU9wdGlvbmFsQXJndW1lbnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzNiA9IHBlZyRwYXJzZVJlcXVpcmVkQXJndW1lbnQoKTtcbiAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckYzExMChzMiwgczMsIHM1LCBzNik7XG4gICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cbiAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDkyKSB7XG4gICAgICAgIHMxID0gcGVnJGM4MDtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzgxKTsgfVxuICAgICAgfVxuICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCA1KSA9PT0gcGVnJGMxMTEpIHtcbiAgICAgICAgICBzMyA9IHBlZyRjMTExO1xuICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMTIpOyB9XG4gICAgICAgIH1cbiAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMyID0gdm9pZCAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczI7XG4gICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMzID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgMykgPT09IHBlZyRjMTEzKSB7XG4gICAgICAgICAgICBzNCA9IHBlZyRjMTEzO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gMztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzExNCk7IH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMyA9IHZvaWQgMDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMztcbiAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzNCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgczUgPSBbXTtcbiAgICAgICAgICAgIGlmIChwZWckYzIyLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgczYgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczYgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjMpOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgd2hpbGUgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczUucHVzaChzNik7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRjMjIudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgczYgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgczYgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIzKTsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM0ID0gaW5wdXQuc3Vic3RyaW5nKHM0LCBwZWckY3VyclBvcyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzNCA9IHM1O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICBzNSA9IHBlZyRjMTE1KHM0KTtcbiAgICAgICAgICAgICAgaWYgKHM1KSB7XG4gICAgICAgICAgICAgICAgczUgPSB2b2lkIDA7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHM2ID0gW107XG4gICAgICAgICAgICAgICAgczcgPSBwZWckcGFyc2VPcHRpb25hbEFyZ3VtZW50KCk7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBzNi5wdXNoKHM3KTtcbiAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJHBhcnNlT3B0aW9uYWxBcmd1bWVudCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJHBhcnNlX19oKCk7XG4gICAgICAgICAgICAgICAgICBpZiAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczggPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTIzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgczkgPSBwZWckYzE1O1xuICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgczkgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNik7IH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHM5ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzODtcbiAgICAgICAgICAgICAgICAgICAgICBzOCA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBzOCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHM4ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgczkgPSBwZWckcGFyc2VWZXJiYXRpbUZpZWxkVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoczkgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMxMCA9IHBlZyRwYXJzZVZlcmJhdGltRmllbGRWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzExNihzNCwgczYsIHM5LCBzMTApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gOTIpIHtcbiAgICAgICAgICBzMSA9IHBlZyRjODA7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzgxKTsgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMyID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgNSkgPT09IHBlZyRjMTExKSB7XG4gICAgICAgICAgICBzMyA9IHBlZyRjMTExO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gNTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzExMik7IH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IHZvaWQgMDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMjtcbiAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCAzKSA9PT0gcGVnJGMxMTMpIHtcbiAgICAgICAgICAgICAgczQgPSBwZWckYzExMztcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gMztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzExNCk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHMzID0gdm9pZCAwO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMztcbiAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgIHM1ID0gW107XG4gICAgICAgICAgICAgIGlmIChwZWckYzIyLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICBzNiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzNiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIzKTsgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHdoaWxlIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczUucHVzaChzNik7XG4gICAgICAgICAgICAgICAgICBpZiAocGVnJGMyMi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICAgIHM2ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHM2ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIzKTsgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczQgPSBpbnB1dC5zdWJzdHJpbmcoczQsIHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzNCA9IHM1O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICAgIHM1ID0gcGVnJGMxMTcoczQpO1xuICAgICAgICAgICAgICAgIGlmIChzNSkge1xuICAgICAgICAgICAgICAgICAgczUgPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBzNiA9IFtdO1xuICAgICAgICAgICAgICAgICAgczcgPSBwZWckcGFyc2VPcHRpb25hbEFyZ3VtZW50KCk7XG4gICAgICAgICAgICAgICAgICB3aGlsZSAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczYucHVzaChzNyk7XG4gICAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJHBhcnNlT3B0aW9uYWxBcmd1bWVudCgpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJHBhcnNlX19oKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzNyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM5ID0gcGVnJGMxNTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM5ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNik7IH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHM5ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHM4O1xuICAgICAgICAgICAgICAgICAgICAgICAgczggPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHM4ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzOSA9IHBlZyRwYXJzZVZlcmJhdGltRmllbGRWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM5ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjMTE4KHM0LCBzNiwgczkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gOTIpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJGM4MDtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4MSk7IH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCA1KSA9PT0gcGVnJGMxMTEpIHtcbiAgICAgICAgICAgICAgczMgPSBwZWckYzExMTtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gNTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzExMik7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHMyID0gdm9pZCAwO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMjtcbiAgICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHMzID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCAzKSA9PT0gcGVnJGMxMTMpIHtcbiAgICAgICAgICAgICAgICBzNCA9IHBlZyRjMTEzO1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDM7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMTQpOyB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgICAgICAgIGlmIChzNCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMzID0gdm9pZCAwO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHM0ID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgczUgPSBbXTtcbiAgICAgICAgICAgICAgICBpZiAocGVnJGMyMi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICBzNiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBzNiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjMpOyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgd2hpbGUgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHM1LnB1c2goczYpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGVnJGMyMi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgczYgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgczYgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyMyk7IH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczQgPSBpbnB1dC5zdWJzdHJpbmcoczQsIHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgczQgPSBzNTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJGMxMTkoczQpO1xuICAgICAgICAgICAgICAgICAgaWYgKHM1KSB7XG4gICAgICAgICAgICAgICAgICAgIHM1ID0gdm9pZCAwO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHM2ID0gW107XG4gICAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJHBhcnNlT3B0aW9uYWxBcmd1bWVudCgpO1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzNi5wdXNoKHM3KTtcbiAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRwYXJzZU9wdGlvbmFsQXJndW1lbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRwYXJzZV9faCgpO1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChzNyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczggPSBwZWckcGFyc2VSZXF1aXJlZEFyZ3VtZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoczggIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgczkgPSBwZWckcGFyc2VSZXF1aXJlZEFyZ3VtZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzOSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGMxMjAoczQsIHM2LCBzOCwgczkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA5Mikge1xuICAgICAgICAgICAgICBzMSA9IHBlZyRjODA7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4MSk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzMiA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgNSkgPT09IHBlZyRjMTExKSB7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckYzExMTtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyArPSA1O1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTEyKTsgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMiA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMyO1xuICAgICAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDMpID09PSBwZWckYzExMykge1xuICAgICAgICAgICAgICAgICAgczQgPSBwZWckYzExMztcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDM7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMTQpOyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICAgICAgICAgIGlmIChzNCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczMgPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczQgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgICAgIHM1ID0gW107XG4gICAgICAgICAgICAgICAgICBpZiAocGVnJGMyMi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICAgIHM2ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHM2ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIzKTsgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgIHM1LnB1c2goczYpO1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckYzIyLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM2ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM2ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyMyk7IH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzNCA9IGlucHV0LnN1YnN0cmluZyhzNCwgcGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgczQgPSBzNTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckYzEyMShzNCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzNSkge1xuICAgICAgICAgICAgICAgICAgICAgIHM1ID0gdm9pZCAwO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzNiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJHBhcnNlT3B0aW9uYWxBcmd1bWVudCgpO1xuICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChzNyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczYucHVzaChzNyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRwYXJzZU9wdGlvbmFsQXJndW1lbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRwYXJzZV9faCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJHBhcnNlUmVxdWlyZWRBcmd1bWVudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczggIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjMTIyKHM0LCBzNiwgczgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDkyKSB7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckYzgwO1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4MSk7IH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMiA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDUpID09PSBwZWckYzExMSkge1xuICAgICAgICAgICAgICAgICAgczMgPSBwZWckYzExMTtcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMTIpOyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczIgPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczI7XG4gICAgICAgICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczMgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgMykgPT09IHBlZyRjMTEzKSB7XG4gICAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJGMxMTM7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDM7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMTQpOyB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgICAgICAgICAgIGlmIChzNCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzMyA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICAgICAgICBzNSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGVnJGMyMi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgczYgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgczYgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyMyk7IH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM1LnB1c2goczYpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRjMjIudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzNiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzNiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyMyk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgIHM0ID0gaW5wdXQuc3Vic3RyaW5nKHM0LCBwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgczQgPSBzNTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzNSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgIHM2ID0gcGVnJHBhcnNlT3B0aW9uYWxBcmd1bWVudCgpO1xuICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczUucHVzaChzNik7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNiA9IHBlZyRwYXJzZU9wdGlvbmFsQXJndW1lbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNiA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGMxMjMoczQsIHM1KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VPcHRpb25hbEFyZ3VtZW50KCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1O1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDkxKSB7XG4gICAgICBzMSA9IHBlZyRjMTI0O1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEyNSk7IH1cbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMiA9IHBlZyRwYXJzZV9faCgpO1xuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMzID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHM0ID0gW107XG4gICAgICAgIGlmIChwZWckYzEyNi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgczUgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMjcpOyB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgd2hpbGUgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzNC5wdXNoKHM1KTtcbiAgICAgICAgICAgIGlmIChwZWckYzEyNi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgIHM1ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEyNyk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMzID0gaW5wdXQuc3Vic3RyaW5nKHMzLCBwZWckY3VyclBvcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczMgPSBzNDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzNCA9IHBlZyRwYXJzZV9faCgpO1xuICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA5Mykge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRjMTI4O1xuICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTI5KTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMSA9IHBlZyRjMTMwKHMzKTtcbiAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VSZXF1aXJlZEFyZ3VtZW50KCkge1xuICAgIHZhciBzMCwgczEsIHMyO1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBzMSA9IHBlZyRwYXJzZV9faCgpO1xuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgaWYgKHBlZyRjMTMxLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgczIgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTMyKTsgfVxuICAgICAgfVxuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICBzMSA9IHBlZyRjMTMzKHMyKTtcbiAgICAgICAgczAgPSBzMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgczEgPSBwZWckcGFyc2VCbG9jaygpO1xuICAgICAgaWYgKHMxID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMxID0gcGVnJHBhcnNlQ29tbWFuZCgpO1xuICAgICAgfVxuICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICBzMSA9IHBlZyRjNTIoczEpO1xuICAgICAgfVxuICAgICAgczAgPSBzMTtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VWYXJpYWJsZU5hbWUoKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNDtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBwZWckY3VyclBvcztcbiAgICBpZiAocGVnJGMxMzQudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgczIgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEzNSk7IH1cbiAgICB9XG4gICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMyA9IFtdO1xuICAgICAgaWYgKHBlZyRjMTM2LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgczQgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTM3KTsgfVxuICAgICAgfVxuICAgICAgd2hpbGUgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMzLnB1c2goczQpO1xuICAgICAgICBpZiAocGVnJGMxMzYudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTM3KTsgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIgPSBbczIsIHMzXTtcbiAgICAgICAgczEgPSBzMjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczE7XG4gICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMTtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMCA9IGlucHV0LnN1YnN0cmluZyhzMCwgcGVnJGN1cnJQb3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMCA9IHMxO1xuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZVNpbXBsZURpYWNyaXRpYygpIHtcbiAgICB2YXIgczA7XG5cbiAgICBpZiAocGVnJGMxMzgudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgczAgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEzOSk7IH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VFeHRlbmRlZERpYWNyaXRpYygpIHtcbiAgICB2YXIgczA7XG5cbiAgICBpZiAocGVnJGMxNDAudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgczAgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE0MSk7IH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VGaWVsZFNlcGFyYXRvcigpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczM7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gcGVnJHBhcnNlX18oKTtcbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNjEpIHtcbiAgICAgICAgczIgPSBwZWckYzE0MjtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE0Myk7IH1cbiAgICAgIH1cbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMyA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMxID0gW3MxLCBzMiwgczNdO1xuICAgICAgICAgIHMwID0gczE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VGaWVsZFRlcm1pbmF0b3IoKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNCwgczU7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gcGVnJHBhcnNlX18oKTtcbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNDQpIHtcbiAgICAgICAgczIgPSBwZWckYzM3O1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMzgpOyB9XG4gICAgICB9XG4gICAgICBpZiAoczIgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIgPSBudWxsO1xuICAgICAgfVxuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMzID0gcGVnJHBhcnNlX19oKCk7XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHM0ID0gW107XG4gICAgICAgICAgczUgPSBwZWckcGFyc2VMaW5lQ29tbWVudCgpO1xuICAgICAgICAgIGlmIChzNSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczUgPSBwZWckcGFyc2VFT0woKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgd2hpbGUgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzNC5wdXNoKHM1KTtcbiAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlTGluZUNvbW1lbnQoKTtcbiAgICAgICAgICAgIGlmIChzNSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRwYXJzZUVPTCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMxID0gW3MxLCBzMiwgczMsIHM0XTtcbiAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlQ29uY2F0KCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMztcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBwZWckcGFyc2VfXygpO1xuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAzNSkge1xuICAgICAgICBzMiA9IHBlZyRjMTQ0O1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTQ1KTsgfVxuICAgICAgfVxuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMzID0gcGVnJHBhcnNlX18oKTtcbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczEgPSBbczEsIHMyLCBzM107XG4gICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZUVPTCgpIHtcbiAgICB2YXIgczA7XG5cbiAgICBpZiAocGVnJGMxNDYudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgczAgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE0Nyk7IH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VfaCgpIHtcbiAgICB2YXIgczAsIHMxO1xuXG4gICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgczAgPSBbXTtcbiAgICBpZiAocGVnJGMxNDkudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgczEgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE1MCk7IH1cbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICB3aGlsZSAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczAucHVzaChzMSk7XG4gICAgICAgIGlmIChwZWckYzE0OS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgczEgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNTApOyB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cbiAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNDgpOyB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlX19oKCkge1xuICAgIHZhciBzMCwgczE7XG5cbiAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICBzMCA9IFtdO1xuICAgIGlmIChwZWckYzE0OS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICBzMSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTUwKTsgfVxuICAgIH1cbiAgICB3aGlsZSAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMwLnB1c2goczEpO1xuICAgICAgaWYgKHBlZyRjMTQ5LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgczEgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTUwKTsgfVxuICAgICAgfVxuICAgIH1cbiAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNTEpOyB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlX3YoKSB7XG4gICAgdmFyIHMwLCBzMTtcblxuICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgIHMwID0gW107XG4gICAgaWYgKHBlZyRjMTQ2LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgIHMxID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNDcpOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgd2hpbGUgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMwLnB1c2goczEpO1xuICAgICAgICBpZiAocGVnJGMxNDYudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgIHMxID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTQ3KTsgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTUyKTsgfVxuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZV9fdigpIHtcbiAgICB2YXIgczAsIHMxO1xuXG4gICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgczAgPSBbXTtcbiAgICBpZiAocGVnJGMxNDYudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgczEgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE0Nyk7IH1cbiAgICB9XG4gICAgd2hpbGUgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMC5wdXNoKHMxKTtcbiAgICAgIGlmIChwZWckYzE0Ni50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgIHMxID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE0Nyk7IH1cbiAgICAgIH1cbiAgICB9XG4gICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTUzKTsgfVxuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZV8oKSB7XG4gICAgdmFyIHMwLCBzMTtcblxuICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgIHMwID0gW107XG4gICAgaWYgKHBlZyRjMTU1LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgIHMxID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNTYpOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgd2hpbGUgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMwLnB1c2goczEpO1xuICAgICAgICBpZiAocGVnJGMxNTUudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgIHMxID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTU2KTsgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTU0KTsgfVxuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZV9fKCkge1xuICAgIHZhciBzMCwgczE7XG5cbiAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICBzMCA9IFtdO1xuICAgIGlmIChwZWckYzE1NS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICBzMSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTU2KTsgfVxuICAgIH1cbiAgICB3aGlsZSAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMwLnB1c2goczEpO1xuICAgICAgaWYgKHBlZyRjMTU1LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgczEgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTU2KTsgfVxuICAgICAgfVxuICAgIH1cbiAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNTcpOyB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cblxuICAgIC8qXG4gICAgICBNSVQgTGljZW5zZVxuXG4gICAgICBDb3B5cmlnaHQgKGMpIDIwMTcgRGVyZWsgUCBTaWZmb3JkLCBwYXJ0cyBjb3B5cmlnaHQgKGMpIDIwMTkgYnkgRW1pbGlhbm8gSGV5bnNcblxuICAgICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICAgICAgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICAgICAgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICAgICAgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICAgICAgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gICAgICBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuXG4gICAgICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAgICAgIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG5cbiAgICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAgICAgIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICAgICAgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gICAgICBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gICAgICBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICAgICAgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAgICAgIFNPRlRXQVJFLlxuICAgICovXG5cbiAgICBjb25zdCBtYXJrdXAgPSB7XG4gICAgICBzbDogJ2l0YWxpY3MnLFxuICAgICAgZW06ICdpdGFsaWNzJyxcbiAgICAgIGl0OiAnaXRhbGljcycsXG4gICAgICBpdHNoYXBlOiAnaXRhbGljcycsXG5cbiAgICAgIGJmOiAnYm9sZCcsXG4gICAgICBiZnNlcmllczogJ2JvbGQnLFxuXG4gICAgICBzYzogJ3NtYWxsQ2FwcycsXG4gICAgICBzY3NoYXBlOiAnc21hbGxDYXBzJyxcblxuICAgICAgdHQ6ICdmaXhlZFdpZHRoJyxcbiAgICAgIHJtOiAncm9tYW4nLFxuICAgICAgc2Y6ICdzYW5zU2VyaWYnLFxuICAgICAgdmVyYjogJ3ZlcmJhdGltJyxcbiAgICB9XG5cbiAgICBjb25zdCB1bm5lc3RGaWVsZHMgPSAob3B0aW9ucy51bm5lc3RGaWVsZHMgfHwgW10pLm1hcChmaWVsZCA9PiBmaWVsZC50b0xvd2VyQ2FzZSgpKVxuICAgIGNvbnN0IHZlcmJhdGltRmllbGRzID0gKG9wdGlvbnMudmVyYmF0aW1GaWVsZHMgfHwgWyAndXJscmF3JywgJ3VybCcsICdkb2knLCAnZmlsZScsICdmaWxlcycsICdlcHJpbnQnLCAndmVyYmEnLCAndmVyYmInLCAndmVyYmMnIF0pLm1hcChmaWVsZCA9PiB0eXBlb2YgZmllbGQgPT09ICdzdHJpbmcnID8gZmllbGQudG9Mb3dlckNhc2UoKSA6IGZpZWxkKVxuICAgIGNvbnN0IHZlcmJhdGltQ29tbWFuZHMgPSAob3B0aW9ucy52ZXJiYXRpbUNvbW1hbmRzIHx8IFsndGV4dHR0JywgJ3VybCcsICdocmVmJ10pXG5cbiAgICBmdW5jdGlvbiBpc1ZlcmJhdGltRmllbGQobmFtZSkge1xuICAgICAgcmV0dXJuIHZlcmJhdGltRmllbGRzLmZpbmQocCA9PiAodHlwZW9mIHAgPT09ICdzdHJpbmcnKSA/IG5hbWUgPT09IHAgOiBuYW1lLm1hdGNoKHApKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZVdoaXRlc3BhY2UodGV4dEFycikge1xuICAgICAgcmV0dXJuIHRleHRBcnIucmVkdWNlKChwcmV2LCBjdXJyKSA9PiB7XG4gICAgICAgIGlmICgvXFxzLy50ZXN0KGN1cnIpKSB7XG4gICAgICAgICAgaWYgKC9cXHMvLnRlc3QocHJldltwcmV2Lmxlbmd0aCAtIDFdKSkge1xuICAgICAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBwcmV2ICsgJyAnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJldiArIGN1cnI7XG4gICAgICB9LCAnJyk7XG4gICAgfVxuXG4gICAgY29uc3QgaGFzX2FyZ3VtZW50cyA9IHtcbiAgICAgIEVsc2V2aWVyR2x5cGg6IDEsXG4gICAgICBlbmQ6IDEsXG4gICAgICBiZWdpbjogMSxcbiAgICAgIGJpYmN5cjogMSxcbiAgICAgIGJpYnN0cmluZzogMSxcbiAgICAgIGNoc2Y6IDEsXG4gICAgICBjaXRlOiAxLFxuICAgICAgY3lyY2hhcjogMSxcbiAgICAgIGRpbmc6IDEsXG4gICAgICBlbXBoOiAxLFxuICAgICAgZW5xdW90ZTogMSxcbiAgICAgIGZyYWM6IDIsXG4gICAgICBocmVmOiAyLFxuICAgICAgaHNwYWNlOiAxLFxuICAgICAgbWF0aHJtOiAxLFxuICAgICAgbWJveDogMSxcbiAgICAgIG1rYmliYm9sZDogMSxcbiAgICAgIG1rYmliZW1waDogMSxcbiAgICAgIG1rYmliaXRhbGljOiAxLFxuICAgICAgbWtiaWJxdW90ZTogMSxcbiAgICAgIG5ld2NvbW1hbmQ6IDIsXG4gICAgICBub29wc29ydDogMSxcbiAgICAgIG9jaXJjOiAxLFxuICAgICAgc2VjdGlvbjogMSxcbiAgICAgIHNiOiAxLFxuICAgICAgc3A6IDEsXG4gICAgICBzdWJzZWN0aW9uOiAxLFxuICAgICAgc3Vic3Vic2VjdGlvbjogMSxcbiAgICAgIHN1YnN1YnN1YnNlY3Rpb246IDEsXG4gICAgICB0OiAxLFxuICAgICAgdGV4dGJmOiAxLFxuICAgICAgdGV4dGl0OiAxLFxuICAgICAgdGV4dHJtOiAxLFxuICAgICAgdGV4dHNjOiAxLFxuICAgICAgdGV4dHN1YnNjcmlwdDogMSxcbiAgICAgIHRleHRzdXBlcnNjcmlwdDogMSxcbiAgICAgIHRleHR0dDogMSxcbiAgICAgIHVybDogMSxcbiAgICAgIHZwaGFudG9tOiAxLFxuICAgICAgdnNwYWNlOiAxLFxuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmNvbWJpbmluZ0RpYWNyaXRpY3MpIHtcbiAgICAgIGZvciAoY29uc3QgY21kIG9mIG9wdGlvbnMuY29tYmluaW5nRGlhY3JpdGljcykge1xuICAgICAgICBoYXNfYXJndW1lbnRzW2NtZF0gPSAxXG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2F5KCkge1xuICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoQXJyYXkuZnJvbShhcmd1bWVudHMpLCBudWxsLCAyKSlcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcGVlayhuKSB7XG4gICAgICByZXR1cm4gaW5wdXQuc3Vic3RyKHBlZyRzYXZlZFBvcywgbilcbiAgICB9XG5cbiAgICBjb25zdCBtYXRoID0ge1xuICAgICAgb246IGZhbHNlLFxuXG4gICAgICBzZXQ6IGZ1bmN0aW9uKHN0YXRlKSB7XG4gICAgICAgIHRoaXMub24gPSBzdGF0ZVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJhc2ljVGV4dENvbnZlcnNpb25zKG5vZGUpIHtcbiAgICAgIGlmIChub2RlLmtpbmQgIT09ICdUZXh0JykgdGhyb3cgbmV3IEVycm9yKG5vZGUua2luZCArICcgaXMgbm90IGEgVGV4dCBub2RlJylcblxuICAgICAgc3dpdGNoIChub2RlLm1vZGUpIHtcbiAgICAgICAgY2FzZSAndmVyYmF0aW0nOlxuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAnbWF0aCc6XG4gICAgICAgICAgbm9kZS52YWx1ZSA9IG5vZGUudmFsdWUucmVwbGFjZSgvfi9nLCAnXFx1MDBBMCcpXG4gICAgICAgICAgYnJlYWtcblxuICAgICAgICBjYXNlICd0ZXh0JzpcbiAgICAgICAgICBub2RlLnZhbHVlID0gbm9kZS52YWx1ZVxuICAgICAgICAgICAgLnJlcGxhY2UoLy0tLS9nLCAnXFx1MjAxNCcpXG4gICAgICAgICAgICAucmVwbGFjZSgvLS0vZywgJ1xcdTIwMTMnKVxuICAgICAgICAgICAgLnJlcGxhY2UoLzwvZywgJ1xcdTAwQTEnKVxuICAgICAgICAgICAgLnJlcGxhY2UoLz4vZywgJ1xcdTAwQkYnKVxuICAgICAgICAgICAgLnJlcGxhY2UoL34vZywgJ1xcdTAwQTAnKVxuICAgICAgICAgICAgLnJlcGxhY2UoL2BgL2csIG9wdGlvbnMubWFya3VwLmVucXVvdGUub3BlbilcbiAgICAgICAgICAgIC5yZXBsYWNlKC8nJy9nLCBvcHRpb25zLm1hcmt1cC5lbnF1b3RlLmNsb3NlKVxuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgdGV4dCBtb2RlICR7bm9kZS5tb2RlfWApXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBub2RlXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcHJvdGVjdCh2KSB7XG4gICAgICBsZXQgc291cmNlXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2KSkge1xuICAgICAgICBzb3VyY2UgPSB2Lm1hcChlID0+IGUuc291cmNlKS5qb2luKCcnKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdiA9IFsgdiBdXG4gICAgICAgIHNvdXJjZSA9IHYuc291cmNlXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGtpbmQ6ICdCbG9jaycsXG4gICAgICAgIHZhbHVlOiB2LFxuICAgICAgICBtYXJrdXA6IHt9LFxuICAgICAgICBjYXNlOiAncHJvdGVjdCcsXG4gICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhhbmRsZV9tYXJrdXBfc3dpdGNoZXMoYmxvY2spIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gYmxvY2sudmFsdWVcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHJldHVybiBibG9ja1xuXG4gICAgICBibG9jay52YWx1ZSA9IFtdXG5cbiAgICAgIGNvbnN0IHBzZXVkbyA9IHtcbiAgICAgICAgYmxvY2s6IG51bGwsXG4gICAgICAgIG1hcmt1cDoge30sXG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBwc2V1ZG9fYmxvY2soKSB7XG4gICAgICAgIHBzZXVkby5ibG9jayA9IHtcbiAgICAgICAgICBraW5kOiAnQmxvY2snLFxuICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICBzb3VyY2U6ICcnLFxuICAgICAgICAgIHZhbHVlOiBbXSxcbiAgICAgICAgICBtYXJrdXA6IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocHNldWRvLm1hcmt1cCkpLFxuICAgICAgICAgIHBzZXVkbzogdHJ1ZSxcbiAgICAgICAgfVxuICAgICAgICBibG9jay52YWx1ZS5wdXNoKHBzZXVkby5ibG9jaylcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiB2YWx1ZSkge1xuICAgICAgICBpZiAobm9kZS5raW5kID09PSAnRW52aXJvbm1lbnQnIHx8IG5vZGUua2luZCA9PT0gJ0Jsb2NrJykge1xuICAgICAgICAgIGJsb2NrLnZhbHVlLnB1c2gobm9kZSlcblxuICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhwc2V1ZG8ubWFya3VwKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHBzZXVkb19ibG9jaygpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBzZXVkby5ibG9jayA9IG51bGxcbiAgICAgICAgICB9XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChub2RlLmtpbmQgPT09ICdSZWd1bGFyQ29tbWFuZCcgJiYgbWFya3VwW25vZGUuY29tbWFuZF0pIHtcbiAgICAgICAgICBpZiAocHNldWRvLm1hcmt1cC5pdGFsaWNzKSB7IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9jaXRhdGlvbi1qcy9iaWJ0ZXgtcGFyc2VyLWV4cGVyaW1lbnRzL2NvbW1pdC9jYWU0NzVmMDc1YTA1ZDFjMDc0NDg1YTA2MWIwOGVkMjQ1MTcwYzdlXG4gICAgICAgICAgICBkZWxldGUgcHNldWRvLm1hcmt1cC5pdGFsaWNzXG4gICAgICAgICAgICBpZiAobWFya3VwW25vZGUuY29tbWFuZF0gIT09ICdpdGFsaWNzJykgcHNldWRvLm1hcmt1cFttYXJrdXBbbm9kZS5jb21tYW5kXV0gPSB0cnVlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBzZXVkby5tYXJrdXBbbWFya3VwW25vZGUuY29tbWFuZF1dID0gdHJ1ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhwc2V1ZG8ubWFya3VwKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHBzZXVkb19ibG9jaygpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICBwc2V1ZG8uYmxvY2sgPSBudWxsXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBzZXVkby5ibG9jaykge1xuICAgICAgICAgIHBzZXVkby5ibG9jay5zb3VyY2UgKz0gbm9kZS5zb3VyY2VcbiAgICAgICAgICBwc2V1ZG8uYmxvY2sudmFsdWUucHVzaChub2RlKVxuXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmxvY2sudmFsdWUucHVzaChub2RlKVxuXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYmxvY2sudmFsdWUgPSBibG9jay52YWx1ZS5maWx0ZXIobm9kZSA9PiAhKG5vZGUucHNldWRvICYmIG5vZGUudmFsdWUubGVuZ3RoID09PSAwKSlcblxuICAgICAgcmV0dXJuIGJsb2NrXG4gICAgfVxuXG5cbiAgcGVnJHJlc3VsdCA9IHBlZyRzdGFydFJ1bGVGdW5jdGlvbigpO1xuXG4gIGlmIChwZWckcmVzdWx0ICE9PSBwZWckRkFJTEVEICYmIHBlZyRjdXJyUG9zID09PSBpbnB1dC5sZW5ndGgpIHtcbiAgICByZXR1cm4gcGVnJHJlc3VsdDtcbiAgfSBlbHNlIHtcbiAgICBpZiAocGVnJHJlc3VsdCAhPT0gcGVnJEZBSUxFRCAmJiBwZWckY3VyclBvcyA8IGlucHV0Lmxlbmd0aCkge1xuICAgICAgcGVnJGZhaWwocGVnJGVuZEV4cGVjdGF0aW9uKCkpO1xuICAgIH1cblxuICAgIHRocm93IHBlZyRidWlsZFN0cnVjdHVyZWRFcnJvcihcbiAgICAgIHBlZyRtYXhGYWlsRXhwZWN0ZWQsXG4gICAgICBwZWckbWF4RmFpbFBvcyA8IGlucHV0Lmxlbmd0aCA/IGlucHV0LmNoYXJBdChwZWckbWF4RmFpbFBvcykgOiBudWxsLFxuICAgICAgcGVnJG1heEZhaWxQb3MgPCBpbnB1dC5sZW5ndGhcbiAgICAgICAgPyBwZWckY29tcHV0ZUxvY2F0aW9uKHBlZyRtYXhGYWlsUG9zLCBwZWckbWF4RmFpbFBvcyArIDEpXG4gICAgICAgIDogcGVnJGNvbXB1dGVMb2NhdGlvbihwZWckbWF4RmFpbFBvcywgcGVnJG1heEZhaWxQb3MpXG4gICAgKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgU3ludGF4RXJyb3I6IHBlZyRTeW50YXhFcnJvcixcbiAgcGFyc2U6ICAgICAgIHBlZyRwYXJzZVxufTtcbiIsIlwidXNlIHN0cmljdFwiO1xuLy8gT3JpZ2luYWwgd29yayBieSBIZW5yaWsgTXVlaGUgKGMpIDIwMTBcbi8vXG4vLyBDb21tb25KUyBwb3J0IGJ5IE1pa29sYSBMeXNlbmtvIDIwMTNcbi8vXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnBhcnNlID0gdm9pZCAwO1xuY2xhc3MgUGFyc2VFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcihtZXNzYWdlLCBwYXJzZXIpIHtcbiAgICAgICAgbWVzc2FnZSArPSBgIEAgJHtwYXJzZXIucG9zfWA7XG4gICAgICAgIGlmIChwYXJzZXIucGFyc2luZylcbiAgICAgICAgICAgIG1lc3NhZ2UgKz0gYCBpbiAke0pTT04uc3RyaW5naWZ5KHBhcnNlci5wYXJzaW5nKX1gO1xuICAgICAgICBzdXBlcihtZXNzYWdlKTtcbiAgICAgICAgdGhpcy5uYW1lID0gJ1BhcnNlRXJyb3InO1xuICAgIH1cbn1cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBwcmVmZXItdGVtcGxhdGVcbmNvbnN0IGxldHRlciA9IG5ldyBSZWdFeHAoJ1snICsgW1xuICAgIC8vIExldHRlciwgVXBwZXJjYXNlXG4gICAgL1xcdTAwNDEtXFx1MDA1QVxcdTAwQzAtXFx1MDBENlxcdTAwRDgtXFx1MDBERVxcdTAxMDBcXHUwMTAyXFx1MDEwNFxcdTAxMDZcXHUwMTA4XFx1MDEwQVxcdTAxMENcXHUwMTBFXFx1MDExMFxcdTAxMTJcXHUwMTE0XFx1MDExNlxcdTAxMThcXHUwMTFBXFx1MDExQ1xcdTAxMUVcXHUwMTIwXFx1MDEyMlxcdTAxMjRcXHUwMTI2XFx1MDEyOFxcdTAxMkFcXHUwMTJDXFx1MDEyRVxcdTAxMzBcXHUwMTMyXFx1MDEzNFxcdTAxMzZcXHUwMTM5XFx1MDEzQlxcdTAxM0RcXHUwMTNGXFx1MDE0MVxcdTAxNDNcXHUwMTQ1XFx1MDE0N1xcdTAxNEFcXHUwMTRDXFx1MDE0RVxcdTAxNTBcXHUwMTUyXFx1MDE1NFxcdTAxNTZcXHUwMTU4XFx1MDE1QVxcdTAxNUNcXHUwMTVFXFx1MDE2MFxcdTAxNjJcXHUwMTY0XFx1MDE2NlxcdTAxNjhcXHUwMTZBXFx1MDE2Q1xcdTAxNkVcXHUwMTcwXFx1MDE3MlxcdTAxNzRcXHUwMTc2XFx1MDE3OC1cXHUwMTc5XFx1MDE3QlxcdTAxN0RcXHUwMTgxLVxcdTAxODJcXHUwMTg0XFx1MDE4Ni1cXHUwMTg3XFx1MDE4OS1cXHUwMThCXFx1MDE4RS1cXHUwMTkxXFx1MDE5My1cXHUwMTk0XFx1MDE5Ni1cXHUwMTk4XFx1MDE5Qy1cXHUwMTlEXFx1MDE5Ri1cXHUwMUEwXFx1MDFBMlxcdTAxQTRcXHUwMUE2LVxcdTAxQTdcXHUwMUE5XFx1MDFBQ1xcdTAxQUUtXFx1MDFBRlxcdTAxQjEtXFx1MDFCM1xcdTAxQjVcXHUwMUI3LVxcdTAxQjhcXHUwMUJDXFx1MDFDNFxcdTAxQzdcXHUwMUNBXFx1MDFDRFxcdTAxQ0ZcXHUwMUQxXFx1MDFEM1xcdTAxRDVcXHUwMUQ3XFx1MDFEOVxcdTAxREJcXHUwMURFXFx1MDFFMFxcdTAxRTJcXHUwMUU0XFx1MDFFNlxcdTAxRThcXHUwMUVBXFx1MDFFQ1xcdTAxRUVcXHUwMUYxXFx1MDFGNFxcdTAxRjYtXFx1MDFGOFxcdTAxRkFcXHUwMUZDXFx1MDFGRVxcdTAyMDBcXHUwMjAyXFx1MDIwNFxcdTAyMDZcXHUwMjA4XFx1MDIwQVxcdTAyMENcXHUwMjBFXFx1MDIxMFxcdTAyMTJcXHUwMjE0XFx1MDIxNlxcdTAyMThcXHUwMjFBXFx1MDIxQ1xcdTAyMUVcXHUwMjIwXFx1MDIyMlxcdTAyMjRcXHUwMjI2XFx1MDIyOFxcdTAyMkFcXHUwMjJDXFx1MDIyRVxcdTAyMzBcXHUwMjMyXFx1MDIzQS1cXHUwMjNCXFx1MDIzRC1cXHUwMjNFXFx1MDI0MVxcdTAyNDMtXFx1MDI0NlxcdTAyNDhcXHUwMjRBXFx1MDI0Q1xcdTAyNEVcXHUwMzcwXFx1MDM3MlxcdTAzNzZcXHUwMzdGXFx1MDM4NlxcdTAzODgtXFx1MDM4QVxcdTAzOENcXHUwMzhFLVxcdTAzOEZcXHUwMzkxLVxcdTAzQTFcXHUwM0EzLVxcdTAzQUJcXHUwM0NGXFx1MDNEMi1cXHUwM0Q0XFx1MDNEOFxcdTAzREFcXHUwM0RDXFx1MDNERVxcdTAzRTBcXHUwM0UyXFx1MDNFNFxcdTAzRTZcXHUwM0U4XFx1MDNFQVxcdTAzRUNcXHUwM0VFXFx1MDNGNFxcdTAzRjdcXHUwM0Y5LVxcdTAzRkFcXHUwM0ZELVxcdTA0MkZcXHUwNDYwXFx1MDQ2MlxcdTA0NjRcXHUwNDY2XFx1MDQ2OFxcdTA0NkFcXHUwNDZDXFx1MDQ2RVxcdTA0NzBcXHUwNDcyXFx1MDQ3NFxcdTA0NzZcXHUwNDc4XFx1MDQ3QVxcdTA0N0NcXHUwNDdFXFx1MDQ4MFxcdTA0OEFcXHUwNDhDXFx1MDQ4RVxcdTA0OTBcXHUwNDkyXFx1MDQ5NFxcdTA0OTZcXHUwNDk4XFx1MDQ5QVxcdTA0OUNcXHUwNDlFXFx1MDRBMFxcdTA0QTJcXHUwNEE0XFx1MDRBNlxcdTA0QThcXHUwNEFBXFx1MDRBQ1xcdTA0QUVcXHUwNEIwXFx1MDRCMlxcdTA0QjRcXHUwNEI2XFx1MDRCOFxcdTA0QkFcXHUwNEJDXFx1MDRCRVxcdTA0QzAtXFx1MDRDMVxcdTA0QzNcXHUwNEM1XFx1MDRDN1xcdTA0QzlcXHUwNENCXFx1MDRDRFxcdTA0RDBcXHUwNEQyXFx1MDRENFxcdTA0RDZcXHUwNEQ4XFx1MDREQVxcdTA0RENcXHUwNERFXFx1MDRFMFxcdTA0RTJcXHUwNEU0XFx1MDRFNlxcdTA0RThcXHUwNEVBXFx1MDRFQ1xcdTA0RUVcXHUwNEYwXFx1MDRGMlxcdTA0RjRcXHUwNEY2XFx1MDRGOFxcdTA0RkFcXHUwNEZDXFx1MDRGRVxcdTA1MDBcXHUwNTAyXFx1MDUwNFxcdTA1MDZcXHUwNTA4XFx1MDUwQVxcdTA1MENcXHUwNTBFXFx1MDUxMFxcdTA1MTJcXHUwNTE0XFx1MDUxNlxcdTA1MThcXHUwNTFBXFx1MDUxQ1xcdTA1MUVcXHUwNTIwXFx1MDUyMlxcdTA1MjRcXHUwNTI2XFx1MDUyOFxcdTA1MkFcXHUwNTJDXFx1MDUyRVxcdTA1MzEtXFx1MDU1NlxcdTEwQTAtXFx1MTBDNVxcdTEwQzdcXHUxMENEXFx1MTNBMC1cXHUxM0Y1XFx1MUUwMFxcdTFFMDJcXHUxRTA0XFx1MUUwNlxcdTFFMDhcXHUxRTBBXFx1MUUwQ1xcdTFFMEVcXHUxRTEwXFx1MUUxMlxcdTFFMTRcXHUxRTE2XFx1MUUxOFxcdTFFMUFcXHUxRTFDXFx1MUUxRVxcdTFFMjBcXHUxRTIyXFx1MUUyNFxcdTFFMjZcXHUxRTI4XFx1MUUyQVxcdTFFMkNcXHUxRTJFXFx1MUUzMFxcdTFFMzJcXHUxRTM0XFx1MUUzNlxcdTFFMzhcXHUxRTNBXFx1MUUzQ1xcdTFFM0VcXHUxRTQwXFx1MUU0MlxcdTFFNDRcXHUxRTQ2XFx1MUU0OFxcdTFFNEFcXHUxRTRDXFx1MUU0RVxcdTFFNTBcXHUxRTUyXFx1MUU1NFxcdTFFNTZcXHUxRTU4XFx1MUU1QVxcdTFFNUNcXHUxRTVFXFx1MUU2MFxcdTFFNjJcXHUxRTY0XFx1MUU2NlxcdTFFNjhcXHUxRTZBXFx1MUU2Q1xcdTFFNkVcXHUxRTcwXFx1MUU3MlxcdTFFNzRcXHUxRTc2XFx1MUU3OFxcdTFFN0FcXHUxRTdDXFx1MUU3RVxcdTFFODBcXHUxRTgyXFx1MUU4NFxcdTFFODZcXHUxRTg4XFx1MUU4QVxcdTFFOENcXHUxRThFXFx1MUU5MFxcdTFFOTJcXHUxRTk0XFx1MUU5RVxcdTFFQTBcXHUxRUEyXFx1MUVBNFxcdTFFQTZcXHUxRUE4XFx1MUVBQVxcdTFFQUNcXHUxRUFFXFx1MUVCMFxcdTFFQjJcXHUxRUI0XFx1MUVCNlxcdTFFQjhcXHUxRUJBXFx1MUVCQ1xcdTFFQkVcXHUxRUMwXFx1MUVDMlxcdTFFQzRcXHUxRUM2XFx1MUVDOFxcdTFFQ0FcXHUxRUNDXFx1MUVDRVxcdTFFRDBcXHUxRUQyXFx1MUVENFxcdTFFRDZcXHUxRUQ4XFx1MUVEQVxcdTFFRENcXHUxRURFXFx1MUVFMFxcdTFFRTJcXHUxRUU0XFx1MUVFNlxcdTFFRThcXHUxRUVBXFx1MUVFQ1xcdTFFRUVcXHUxRUYwXFx1MUVGMlxcdTFFRjRcXHUxRUY2XFx1MUVGOFxcdTFFRkFcXHUxRUZDXFx1MUVGRVxcdTFGMDgtXFx1MUYwRlxcdTFGMTgtXFx1MUYxRFxcdTFGMjgtXFx1MUYyRlxcdTFGMzgtXFx1MUYzRlxcdTFGNDgtXFx1MUY0RFxcdTFGNTlcXHUxRjVCXFx1MUY1RFxcdTFGNUZcXHUxRjY4LVxcdTFGNkZcXHUxRkI4LVxcdTFGQkJcXHUxRkM4LVxcdTFGQ0JcXHUxRkQ4LVxcdTFGREJcXHUxRkU4LVxcdTFGRUNcXHUxRkY4LVxcdTFGRkJcXHUyMTAyXFx1MjEwN1xcdTIxMEItXFx1MjEwRFxcdTIxMTAtXFx1MjExMlxcdTIxMTVcXHUyMTE5LVxcdTIxMURcXHUyMTI0XFx1MjEyNlxcdTIxMjhcXHUyMTJBLVxcdTIxMkRcXHUyMTMwLVxcdTIxMzNcXHUyMTNFLVxcdTIxM0ZcXHUyMTQ1XFx1MjE4M1xcdTJDMDAtXFx1MkMyRVxcdTJDNjBcXHUyQzYyLVxcdTJDNjRcXHUyQzY3XFx1MkM2OVxcdTJDNkJcXHUyQzZELVxcdTJDNzBcXHUyQzcyXFx1MkM3NVxcdTJDN0UtXFx1MkM4MFxcdTJDODJcXHUyQzg0XFx1MkM4NlxcdTJDODhcXHUyQzhBXFx1MkM4Q1xcdTJDOEVcXHUyQzkwXFx1MkM5MlxcdTJDOTRcXHUyQzk2XFx1MkM5OFxcdTJDOUFcXHUyQzlDXFx1MkM5RVxcdTJDQTBcXHUyQ0EyXFx1MkNBNFxcdTJDQTZcXHUyQ0E4XFx1MkNBQVxcdTJDQUNcXHUyQ0FFXFx1MkNCMFxcdTJDQjJcXHUyQ0I0XFx1MkNCNlxcdTJDQjhcXHUyQ0JBXFx1MkNCQ1xcdTJDQkVcXHUyQ0MwXFx1MkNDMlxcdTJDQzRcXHUyQ0M2XFx1MkNDOFxcdTJDQ0FcXHUyQ0NDXFx1MkNDRVxcdTJDRDBcXHUyQ0QyXFx1MkNENFxcdTJDRDZcXHUyQ0Q4XFx1MkNEQVxcdTJDRENcXHUyQ0RFXFx1MkNFMFxcdTJDRTJcXHUyQ0VCXFx1MkNFRFxcdTJDRjJcXHVBNjQwXFx1QTY0MlxcdUE2NDRcXHVBNjQ2XFx1QTY0OFxcdUE2NEFcXHVBNjRDXFx1QTY0RVxcdUE2NTBcXHVBNjUyXFx1QTY1NFxcdUE2NTZcXHVBNjU4XFx1QTY1QVxcdUE2NUNcXHVBNjVFXFx1QTY2MFxcdUE2NjJcXHVBNjY0XFx1QTY2NlxcdUE2NjhcXHVBNjZBXFx1QTY2Q1xcdUE2ODBcXHVBNjgyXFx1QTY4NFxcdUE2ODZcXHVBNjg4XFx1QTY4QVxcdUE2OENcXHVBNjhFXFx1QTY5MFxcdUE2OTJcXHVBNjk0XFx1QTY5NlxcdUE2OThcXHVBNjlBXFx1QTcyMlxcdUE3MjRcXHVBNzI2XFx1QTcyOFxcdUE3MkFcXHVBNzJDXFx1QTcyRVxcdUE3MzJcXHVBNzM0XFx1QTczNlxcdUE3MzhcXHVBNzNBXFx1QTczQ1xcdUE3M0VcXHVBNzQwXFx1QTc0MlxcdUE3NDRcXHVBNzQ2XFx1QTc0OFxcdUE3NEFcXHVBNzRDXFx1QTc0RVxcdUE3NTBcXHVBNzUyXFx1QTc1NFxcdUE3NTZcXHVBNzU4XFx1QTc1QVxcdUE3NUNcXHVBNzVFXFx1QTc2MFxcdUE3NjJcXHVBNzY0XFx1QTc2NlxcdUE3NjhcXHVBNzZBXFx1QTc2Q1xcdUE3NkVcXHVBNzc5XFx1QTc3QlxcdUE3N0QtXFx1QTc3RVxcdUE3ODBcXHVBNzgyXFx1QTc4NFxcdUE3ODZcXHVBNzhCXFx1QTc4RFxcdUE3OTBcXHVBNzkyXFx1QTc5NlxcdUE3OThcXHVBNzlBXFx1QTc5Q1xcdUE3OUVcXHVBN0EwXFx1QTdBMlxcdUE3QTRcXHVBN0E2XFx1QTdBOFxcdUE3QUEtXFx1QTdBRFxcdUE3QjAtXFx1QTdCNFxcdUE3QjZcXHVGRjIxLVxcdUZGM0EvLnNvdXJjZSxcbiAgICAvLyBMZXR0ZXIsIFRpdGxlY2FzZVxuICAgIC9cXHUwMUM1XFx1MDFDOFxcdTAxQ0JcXHUwMUYyXFx1MUY4OC1cXHUxRjhGXFx1MUY5OC1cXHUxRjlGXFx1MUZBOC1cXHUxRkFGXFx1MUZCQ1xcdTFGQ0NcXHUxRkZDLy5zb3VyY2UsXG4gICAgLy8gTGV0dGVyLCBMb3dlcmNhc2VcbiAgICAvXFx1MDA2MS1cXHUwMDdBXFx1MDBCNVxcdTAwREYtXFx1MDBGNlxcdTAwRjgtXFx1MDBGRlxcdTAxMDFcXHUwMTAzXFx1MDEwNVxcdTAxMDdcXHUwMTA5XFx1MDEwQlxcdTAxMERcXHUwMTBGXFx1MDExMVxcdTAxMTNcXHUwMTE1XFx1MDExN1xcdTAxMTlcXHUwMTFCXFx1MDExRFxcdTAxMUZcXHUwMTIxXFx1MDEyM1xcdTAxMjVcXHUwMTI3XFx1MDEyOVxcdTAxMkJcXHUwMTJEXFx1MDEyRlxcdTAxMzFcXHUwMTMzXFx1MDEzNVxcdTAxMzctXFx1MDEzOFxcdTAxM0FcXHUwMTNDXFx1MDEzRVxcdTAxNDBcXHUwMTQyXFx1MDE0NFxcdTAxNDZcXHUwMTQ4LVxcdTAxNDlcXHUwMTRCXFx1MDE0RFxcdTAxNEZcXHUwMTUxXFx1MDE1M1xcdTAxNTVcXHUwMTU3XFx1MDE1OVxcdTAxNUJcXHUwMTVEXFx1MDE1RlxcdTAxNjFcXHUwMTYzXFx1MDE2NVxcdTAxNjdcXHUwMTY5XFx1MDE2QlxcdTAxNkRcXHUwMTZGXFx1MDE3MVxcdTAxNzNcXHUwMTc1XFx1MDE3N1xcdTAxN0FcXHUwMTdDXFx1MDE3RS1cXHUwMTgwXFx1MDE4M1xcdTAxODVcXHUwMTg4XFx1MDE4Qy1cXHUwMThEXFx1MDE5MlxcdTAxOTVcXHUwMTk5LVxcdTAxOUJcXHUwMTlFXFx1MDFBMVxcdTAxQTNcXHUwMUE1XFx1MDFBOFxcdTAxQUEtXFx1MDFBQlxcdTAxQURcXHUwMUIwXFx1MDFCNFxcdTAxQjZcXHUwMUI5LVxcdTAxQkFcXHUwMUJELVxcdTAxQkZcXHUwMUM2XFx1MDFDOVxcdTAxQ0NcXHUwMUNFXFx1MDFEMFxcdTAxRDJcXHUwMUQ0XFx1MDFENlxcdTAxRDhcXHUwMURBXFx1MDFEQy1cXHUwMUREXFx1MDFERlxcdTAxRTFcXHUwMUUzXFx1MDFFNVxcdTAxRTdcXHUwMUU5XFx1MDFFQlxcdTAxRURcXHUwMUVGLVxcdTAxRjBcXHUwMUYzXFx1MDFGNVxcdTAxRjlcXHUwMUZCXFx1MDFGRFxcdTAxRkZcXHUwMjAxXFx1MDIwM1xcdTAyMDVcXHUwMjA3XFx1MDIwOVxcdTAyMEJcXHUwMjBEXFx1MDIwRlxcdTAyMTFcXHUwMjEzXFx1MDIxNVxcdTAyMTdcXHUwMjE5XFx1MDIxQlxcdTAyMURcXHUwMjFGXFx1MDIyMVxcdTAyMjNcXHUwMjI1XFx1MDIyN1xcdTAyMjlcXHUwMjJCXFx1MDIyRFxcdTAyMkZcXHUwMjMxXFx1MDIzMy1cXHUwMjM5XFx1MDIzQ1xcdTAyM0YtXFx1MDI0MFxcdTAyNDJcXHUwMjQ3XFx1MDI0OVxcdTAyNEJcXHUwMjREXFx1MDI0Ri1cXHUwMjkzXFx1MDI5NS1cXHUwMkFGXFx1MDM3MVxcdTAzNzNcXHUwMzc3XFx1MDM3Qi1cXHUwMzdEXFx1MDM5MFxcdTAzQUMtXFx1MDNDRVxcdTAzRDAtXFx1MDNEMVxcdTAzRDUtXFx1MDNEN1xcdTAzRDlcXHUwM0RCXFx1MDNERFxcdTAzREZcXHUwM0UxXFx1MDNFM1xcdTAzRTVcXHUwM0U3XFx1MDNFOVxcdTAzRUJcXHUwM0VEXFx1MDNFRi1cXHUwM0YzXFx1MDNGNVxcdTAzRjhcXHUwM0ZCLVxcdTAzRkNcXHUwNDMwLVxcdTA0NUZcXHUwNDYxXFx1MDQ2M1xcdTA0NjVcXHUwNDY3XFx1MDQ2OVxcdTA0NkJcXHUwNDZEXFx1MDQ2RlxcdTA0NzFcXHUwNDczXFx1MDQ3NVxcdTA0NzdcXHUwNDc5XFx1MDQ3QlxcdTA0N0RcXHUwNDdGXFx1MDQ4MVxcdTA0OEJcXHUwNDhEXFx1MDQ4RlxcdTA0OTFcXHUwNDkzXFx1MDQ5NVxcdTA0OTdcXHUwNDk5XFx1MDQ5QlxcdTA0OURcXHUwNDlGXFx1MDRBMVxcdTA0QTNcXHUwNEE1XFx1MDRBN1xcdTA0QTlcXHUwNEFCXFx1MDRBRFxcdTA0QUZcXHUwNEIxXFx1MDRCM1xcdTA0QjVcXHUwNEI3XFx1MDRCOVxcdTA0QkJcXHUwNEJEXFx1MDRCRlxcdTA0QzJcXHUwNEM0XFx1MDRDNlxcdTA0QzhcXHUwNENBXFx1MDRDQ1xcdTA0Q0UtXFx1MDRDRlxcdTA0RDFcXHUwNEQzXFx1MDRENVxcdTA0RDdcXHUwNEQ5XFx1MDREQlxcdTA0RERcXHUwNERGXFx1MDRFMVxcdTA0RTNcXHUwNEU1XFx1MDRFN1xcdTA0RTlcXHUwNEVCXFx1MDRFRFxcdTA0RUZcXHUwNEYxXFx1MDRGM1xcdTA0RjVcXHUwNEY3XFx1MDRGOVxcdTA0RkJcXHUwNEZEXFx1MDRGRlxcdTA1MDFcXHUwNTAzXFx1MDUwNVxcdTA1MDdcXHUwNTA5XFx1MDUwQlxcdTA1MERcXHUwNTBGXFx1MDUxMVxcdTA1MTNcXHUwNTE1XFx1MDUxN1xcdTA1MTlcXHUwNTFCXFx1MDUxRFxcdTA1MUZcXHUwNTIxXFx1MDUyM1xcdTA1MjVcXHUwNTI3XFx1MDUyOVxcdTA1MkJcXHUwNTJEXFx1MDUyRlxcdTA1NjEtXFx1MDU4N1xcdTEzRjgtXFx1MTNGRFxcdTFEMDAtXFx1MUQyQlxcdTFENkItXFx1MUQ3N1xcdTFENzktXFx1MUQ5QVxcdTFFMDFcXHUxRTAzXFx1MUUwNVxcdTFFMDdcXHUxRTA5XFx1MUUwQlxcdTFFMERcXHUxRTBGXFx1MUUxMVxcdTFFMTNcXHUxRTE1XFx1MUUxN1xcdTFFMTlcXHUxRTFCXFx1MUUxRFxcdTFFMUZcXHUxRTIxXFx1MUUyM1xcdTFFMjVcXHUxRTI3XFx1MUUyOVxcdTFFMkJcXHUxRTJEXFx1MUUyRlxcdTFFMzFcXHUxRTMzXFx1MUUzNVxcdTFFMzdcXHUxRTM5XFx1MUUzQlxcdTFFM0RcXHUxRTNGXFx1MUU0MVxcdTFFNDNcXHUxRTQ1XFx1MUU0N1xcdTFFNDlcXHUxRTRCXFx1MUU0RFxcdTFFNEZcXHUxRTUxXFx1MUU1M1xcdTFFNTVcXHUxRTU3XFx1MUU1OVxcdTFFNUJcXHUxRTVEXFx1MUU1RlxcdTFFNjFcXHUxRTYzXFx1MUU2NVxcdTFFNjdcXHUxRTY5XFx1MUU2QlxcdTFFNkRcXHUxRTZGXFx1MUU3MVxcdTFFNzNcXHUxRTc1XFx1MUU3N1xcdTFFNzlcXHUxRTdCXFx1MUU3RFxcdTFFN0ZcXHUxRTgxXFx1MUU4M1xcdTFFODVcXHUxRTg3XFx1MUU4OVxcdTFFOEJcXHUxRThEXFx1MUU4RlxcdTFFOTFcXHUxRTkzXFx1MUU5NS1cXHUxRTlEXFx1MUU5RlxcdTFFQTFcXHUxRUEzXFx1MUVBNVxcdTFFQTdcXHUxRUE5XFx1MUVBQlxcdTFFQURcXHUxRUFGXFx1MUVCMVxcdTFFQjNcXHUxRUI1XFx1MUVCN1xcdTFFQjlcXHUxRUJCXFx1MUVCRFxcdTFFQkZcXHUxRUMxXFx1MUVDM1xcdTFFQzVcXHUxRUM3XFx1MUVDOVxcdTFFQ0JcXHUxRUNEXFx1MUVDRlxcdTFFRDFcXHUxRUQzXFx1MUVENVxcdTFFRDdcXHUxRUQ5XFx1MUVEQlxcdTFFRERcXHUxRURGXFx1MUVFMVxcdTFFRTNcXHUxRUU1XFx1MUVFN1xcdTFFRTlcXHUxRUVCXFx1MUVFRFxcdTFFRUZcXHUxRUYxXFx1MUVGM1xcdTFFRjVcXHUxRUY3XFx1MUVGOVxcdTFFRkJcXHUxRUZEXFx1MUVGRi1cXHUxRjA3XFx1MUYxMC1cXHUxRjE1XFx1MUYyMC1cXHUxRjI3XFx1MUYzMC1cXHUxRjM3XFx1MUY0MC1cXHUxRjQ1XFx1MUY1MC1cXHUxRjU3XFx1MUY2MC1cXHUxRjY3XFx1MUY3MC1cXHUxRjdEXFx1MUY4MC1cXHUxRjg3XFx1MUY5MC1cXHUxRjk3XFx1MUZBMC1cXHUxRkE3XFx1MUZCMC1cXHUxRkI0XFx1MUZCNi1cXHUxRkI3XFx1MUZCRVxcdTFGQzItXFx1MUZDNFxcdTFGQzYtXFx1MUZDN1xcdTFGRDAtXFx1MUZEM1xcdTFGRDYtXFx1MUZEN1xcdTFGRTAtXFx1MUZFN1xcdTFGRjItXFx1MUZGNFxcdTFGRjYtXFx1MUZGN1xcdTIxMEFcXHUyMTBFLVxcdTIxMEZcXHUyMTEzXFx1MjEyRlxcdTIxMzRcXHUyMTM5XFx1MjEzQy1cXHUyMTNEXFx1MjE0Ni1cXHUyMTQ5XFx1MjE0RVxcdTIxODRcXHUyQzMwLVxcdTJDNUVcXHUyQzYxXFx1MkM2NS1cXHUyQzY2XFx1MkM2OFxcdTJDNkFcXHUyQzZDXFx1MkM3MVxcdTJDNzMtXFx1MkM3NFxcdTJDNzYtXFx1MkM3QlxcdTJDODFcXHUyQzgzXFx1MkM4NVxcdTJDODdcXHUyQzg5XFx1MkM4QlxcdTJDOERcXHUyQzhGXFx1MkM5MVxcdTJDOTNcXHUyQzk1XFx1MkM5N1xcdTJDOTlcXHUyQzlCXFx1MkM5RFxcdTJDOUZcXHUyQ0ExXFx1MkNBM1xcdTJDQTVcXHUyQ0E3XFx1MkNBOVxcdTJDQUJcXHUyQ0FEXFx1MkNBRlxcdTJDQjFcXHUyQ0IzXFx1MkNCNVxcdTJDQjdcXHUyQ0I5XFx1MkNCQlxcdTJDQkRcXHUyQ0JGXFx1MkNDMVxcdTJDQzNcXHUyQ0M1XFx1MkNDN1xcdTJDQzlcXHUyQ0NCXFx1MkNDRFxcdTJDQ0ZcXHUyQ0QxXFx1MkNEM1xcdTJDRDVcXHUyQ0Q3XFx1MkNEOVxcdTJDREJcXHUyQ0REXFx1MkNERlxcdTJDRTFcXHUyQ0UzLVxcdTJDRTRcXHUyQ0VDXFx1MkNFRVxcdTJDRjNcXHUyRDAwLVxcdTJEMjVcXHUyRDI3XFx1MkQyRFxcdUE2NDFcXHVBNjQzXFx1QTY0NVxcdUE2NDdcXHVBNjQ5XFx1QTY0QlxcdUE2NERcXHVBNjRGXFx1QTY1MVxcdUE2NTNcXHVBNjU1XFx1QTY1N1xcdUE2NTlcXHVBNjVCXFx1QTY1RFxcdUE2NUZcXHVBNjYxXFx1QTY2M1xcdUE2NjVcXHVBNjY3XFx1QTY2OVxcdUE2NkJcXHVBNjZEXFx1QTY4MVxcdUE2ODNcXHVBNjg1XFx1QTY4N1xcdUE2ODlcXHVBNjhCXFx1QTY4RFxcdUE2OEZcXHVBNjkxXFx1QTY5M1xcdUE2OTVcXHVBNjk3XFx1QTY5OVxcdUE2OUJcXHVBNzIzXFx1QTcyNVxcdUE3MjdcXHVBNzI5XFx1QTcyQlxcdUE3MkRcXHVBNzJGLVxcdUE3MzFcXHVBNzMzXFx1QTczNVxcdUE3MzdcXHVBNzM5XFx1QTczQlxcdUE3M0RcXHVBNzNGXFx1QTc0MVxcdUE3NDNcXHVBNzQ1XFx1QTc0N1xcdUE3NDlcXHVBNzRCXFx1QTc0RFxcdUE3NEZcXHVBNzUxXFx1QTc1M1xcdUE3NTVcXHVBNzU3XFx1QTc1OVxcdUE3NUJcXHVBNzVEXFx1QTc1RlxcdUE3NjFcXHVBNzYzXFx1QTc2NVxcdUE3NjdcXHVBNzY5XFx1QTc2QlxcdUE3NkRcXHVBNzZGXFx1QTc3MS1cXHVBNzc4XFx1QTc3QVxcdUE3N0NcXHVBNzdGXFx1QTc4MVxcdUE3ODNcXHVBNzg1XFx1QTc4N1xcdUE3OENcXHVBNzhFXFx1QTc5MVxcdUE3OTMtXFx1QTc5NVxcdUE3OTdcXHVBNzk5XFx1QTc5QlxcdUE3OURcXHVBNzlGXFx1QTdBMVxcdUE3QTNcXHVBN0E1XFx1QTdBN1xcdUE3QTlcXHVBN0I1XFx1QTdCN1xcdUE3RkFcXHVBQjMwLVxcdUFCNUFcXHVBQjYwLVxcdUFCNjVcXHVBQjcwLVxcdUFCQkZcXHVGQjAwLVxcdUZCMDZcXHVGQjEzLVxcdUZCMTdcXHVGRjQxLVxcdUZGNUEvLnNvdXJjZSxcbiAgICAvLyBMZXR0ZXIsIE1vZGlmaWVyXG4gICAgL1xcdTAyQjAtXFx1MDJDMVxcdTAyQzYtXFx1MDJEMVxcdTAyRTAtXFx1MDJFNFxcdTAyRUNcXHUwMkVFXFx1MDM3NFxcdTAzN0FcXHUwNTU5XFx1MDY0MFxcdTA2RTUtXFx1MDZFNlxcdTA3RjQtXFx1MDdGNVxcdTA3RkFcXHUwODFBXFx1MDgyNFxcdTA4MjhcXHUwOTcxXFx1MEU0NlxcdTBFQzZcXHUxMEZDXFx1MTdEN1xcdTE4NDNcXHUxQUE3XFx1MUM3OC1cXHUxQzdEXFx1MUQyQy1cXHUxRDZBXFx1MUQ3OFxcdTFEOUItXFx1MURCRlxcdTIwNzFcXHUyMDdGXFx1MjA5MC1cXHUyMDlDXFx1MkM3Qy1cXHUyQzdEXFx1MkQ2RlxcdTJFMkZcXHUzMDA1XFx1MzAzMS1cXHUzMDM1XFx1MzAzQlxcdTMwOUQtXFx1MzA5RVxcdTMwRkMtXFx1MzBGRVxcdUEwMTVcXHVBNEY4LVxcdUE0RkRcXHVBNjBDXFx1QTY3RlxcdUE2OUMtXFx1QTY5RFxcdUE3MTctXFx1QTcxRlxcdUE3NzBcXHVBNzg4XFx1QTdGOC1cXHVBN0Y5XFx1QTlDRlxcdUE5RTZcXHVBQTcwXFx1QUFERFxcdUFBRjMtXFx1QUFGNFxcdUFCNUMtXFx1QUI1RlxcdUZGNzBcXHVGRjlFLVxcdUZGOUYvLnNvdXJjZSxcbiAgICAvLyBMZXR0ZXIsIE90aGVyXG4gICAgL1xcdTAwQUFcXHUwMEJBXFx1MDFCQlxcdTAxQzAtXFx1MDFDM1xcdTAyOTRcXHUwNUQwLVxcdTA1RUFcXHUwNUYwLVxcdTA1RjJcXHUwNjIwLVxcdTA2M0ZcXHUwNjQxLVxcdTA2NEFcXHUwNjZFLVxcdTA2NkZcXHUwNjcxLVxcdTA2RDNcXHUwNkQ1XFx1MDZFRS1cXHUwNkVGXFx1MDZGQS1cXHUwNkZDXFx1MDZGRlxcdTA3MTBcXHUwNzEyLVxcdTA3MkZcXHUwNzRELVxcdTA3QTVcXHUwN0IxXFx1MDdDQS1cXHUwN0VBXFx1MDgwMC1cXHUwODE1XFx1MDg0MC1cXHUwODU4XFx1MDhBMC1cXHUwOEI0XFx1MDkwNC1cXHUwOTM5XFx1MDkzRFxcdTA5NTBcXHUwOTU4LVxcdTA5NjFcXHUwOTcyLVxcdTA5ODBcXHUwOTg1LVxcdTA5OENcXHUwOThGLVxcdTA5OTBcXHUwOTkzLVxcdTA5QThcXHUwOUFBLVxcdTA5QjBcXHUwOUIyXFx1MDlCNi1cXHUwOUI5XFx1MDlCRFxcdTA5Q0VcXHUwOURDLVxcdTA5RERcXHUwOURGLVxcdTA5RTFcXHUwOUYwLVxcdTA5RjFcXHUwQTA1LVxcdTBBMEFcXHUwQTBGLVxcdTBBMTBcXHUwQTEzLVxcdTBBMjhcXHUwQTJBLVxcdTBBMzBcXHUwQTMyLVxcdTBBMzNcXHUwQTM1LVxcdTBBMzZcXHUwQTM4LVxcdTBBMzlcXHUwQTU5LVxcdTBBNUNcXHUwQTVFXFx1MEE3Mi1cXHUwQTc0XFx1MEE4NS1cXHUwQThEXFx1MEE4Ri1cXHUwQTkxXFx1MEE5My1cXHUwQUE4XFx1MEFBQS1cXHUwQUIwXFx1MEFCMi1cXHUwQUIzXFx1MEFCNS1cXHUwQUI5XFx1MEFCRFxcdTBBRDBcXHUwQUUwLVxcdTBBRTFcXHUwQUY5XFx1MEIwNS1cXHUwQjBDXFx1MEIwRi1cXHUwQjEwXFx1MEIxMy1cXHUwQjI4XFx1MEIyQS1cXHUwQjMwXFx1MEIzMi1cXHUwQjMzXFx1MEIzNS1cXHUwQjM5XFx1MEIzRFxcdTBCNUMtXFx1MEI1RFxcdTBCNUYtXFx1MEI2MVxcdTBCNzFcXHUwQjgzXFx1MEI4NS1cXHUwQjhBXFx1MEI4RS1cXHUwQjkwXFx1MEI5Mi1cXHUwQjk1XFx1MEI5OS1cXHUwQjlBXFx1MEI5Q1xcdTBCOUUtXFx1MEI5RlxcdTBCQTMtXFx1MEJBNFxcdTBCQTgtXFx1MEJBQVxcdTBCQUUtXFx1MEJCOVxcdTBCRDBcXHUwQzA1LVxcdTBDMENcXHUwQzBFLVxcdTBDMTBcXHUwQzEyLVxcdTBDMjhcXHUwQzJBLVxcdTBDMzlcXHUwQzNEXFx1MEM1OC1cXHUwQzVBXFx1MEM2MC1cXHUwQzYxXFx1MEM4NS1cXHUwQzhDXFx1MEM4RS1cXHUwQzkwXFx1MEM5Mi1cXHUwQ0E4XFx1MENBQS1cXHUwQ0IzXFx1MENCNS1cXHUwQ0I5XFx1MENCRFxcdTBDREVcXHUwQ0UwLVxcdTBDRTFcXHUwQ0YxLVxcdTBDRjJcXHUwRDA1LVxcdTBEMENcXHUwRDBFLVxcdTBEMTBcXHUwRDEyLVxcdTBEM0FcXHUwRDNEXFx1MEQ0RVxcdTBENUYtXFx1MEQ2MVxcdTBEN0EtXFx1MEQ3RlxcdTBEODUtXFx1MEQ5NlxcdTBEOUEtXFx1MERCMVxcdTBEQjMtXFx1MERCQlxcdTBEQkRcXHUwREMwLVxcdTBEQzZcXHUwRTAxLVxcdTBFMzBcXHUwRTMyLVxcdTBFMzNcXHUwRTQwLVxcdTBFNDVcXHUwRTgxLVxcdTBFODJcXHUwRTg0XFx1MEU4Ny1cXHUwRTg4XFx1MEU4QVxcdTBFOERcXHUwRTk0LVxcdTBFOTdcXHUwRTk5LVxcdTBFOUZcXHUwRUExLVxcdTBFQTNcXHUwRUE1XFx1MEVBN1xcdTBFQUEtXFx1MEVBQlxcdTBFQUQtXFx1MEVCMFxcdTBFQjItXFx1MEVCM1xcdTBFQkRcXHUwRUMwLVxcdTBFQzRcXHUwRURDLVxcdTBFREZcXHUwRjAwXFx1MEY0MC1cXHUwRjQ3XFx1MEY0OS1cXHUwRjZDXFx1MEY4OC1cXHUwRjhDXFx1MTAwMC1cXHUxMDJBXFx1MTAzRlxcdTEwNTAtXFx1MTA1NVxcdTEwNUEtXFx1MTA1RFxcdTEwNjFcXHUxMDY1LVxcdTEwNjZcXHUxMDZFLVxcdTEwNzBcXHUxMDc1LVxcdTEwODFcXHUxMDhFXFx1MTBEMC1cXHUxMEZBXFx1MTBGRC1cXHUxMjQ4XFx1MTI0QS1cXHUxMjREXFx1MTI1MC1cXHUxMjU2XFx1MTI1OFxcdTEyNUEtXFx1MTI1RFxcdTEyNjAtXFx1MTI4OFxcdTEyOEEtXFx1MTI4RFxcdTEyOTAtXFx1MTJCMFxcdTEyQjItXFx1MTJCNVxcdTEyQjgtXFx1MTJCRVxcdTEyQzBcXHUxMkMyLVxcdTEyQzVcXHUxMkM4LVxcdTEyRDZcXHUxMkQ4LVxcdTEzMTBcXHUxMzEyLVxcdTEzMTVcXHUxMzE4LVxcdTEzNUFcXHUxMzgwLVxcdTEzOEZcXHUxNDAxLVxcdTE2NkNcXHUxNjZGLVxcdTE2N0ZcXHUxNjgxLVxcdTE2OUFcXHUxNkEwLVxcdTE2RUFcXHUxNkYxLVxcdTE2RjhcXHUxNzAwLVxcdTE3MENcXHUxNzBFLVxcdTE3MTFcXHUxNzIwLVxcdTE3MzFcXHUxNzQwLVxcdTE3NTFcXHUxNzYwLVxcdTE3NkNcXHUxNzZFLVxcdTE3NzBcXHUxNzgwLVxcdTE3QjNcXHUxN0RDXFx1MTgyMC1cXHUxODQyXFx1MTg0NC1cXHUxODc3XFx1MTg4MC1cXHUxOEE4XFx1MThBQVxcdTE4QjAtXFx1MThGNVxcdTE5MDAtXFx1MTkxRVxcdTE5NTAtXFx1MTk2RFxcdTE5NzAtXFx1MTk3NFxcdTE5ODAtXFx1MTlBQlxcdTE5QjAtXFx1MTlDOVxcdTFBMDAtXFx1MUExNlxcdTFBMjAtXFx1MUE1NFxcdTFCMDUtXFx1MUIzM1xcdTFCNDUtXFx1MUI0QlxcdTFCODMtXFx1MUJBMFxcdTFCQUUtXFx1MUJBRlxcdTFCQkEtXFx1MUJFNVxcdTFDMDAtXFx1MUMyM1xcdTFDNEQtXFx1MUM0RlxcdTFDNUEtXFx1MUM3N1xcdTFDRTktXFx1MUNFQ1xcdTFDRUUtXFx1MUNGMVxcdTFDRjUtXFx1MUNGNlxcdTIxMzUtXFx1MjEzOFxcdTJEMzAtXFx1MkQ2N1xcdTJEODAtXFx1MkQ5NlxcdTJEQTAtXFx1MkRBNlxcdTJEQTgtXFx1MkRBRVxcdTJEQjAtXFx1MkRCNlxcdTJEQjgtXFx1MkRCRVxcdTJEQzAtXFx1MkRDNlxcdTJEQzgtXFx1MkRDRVxcdTJERDAtXFx1MkRENlxcdTJERDgtXFx1MkRERVxcdTMwMDZcXHUzMDNDXFx1MzA0MS1cXHUzMDk2XFx1MzA5RlxcdTMwQTEtXFx1MzBGQVxcdTMwRkZcXHUzMTA1LVxcdTMxMkRcXHUzMTMxLVxcdTMxOEVcXHUzMUEwLVxcdTMxQkFcXHUzMUYwLVxcdTMxRkZcXHUzNDAwLVxcdTREQjVcXHU0RTAwLVxcdTlGRDVcXHVBMDAwLVxcdUEwMTRcXHVBMDE2LVxcdUE0OENcXHVBNEQwLVxcdUE0RjdcXHVBNTAwLVxcdUE2MEJcXHVBNjEwLVxcdUE2MUZcXHVBNjJBLVxcdUE2MkJcXHVBNjZFXFx1QTZBMC1cXHVBNkU1XFx1QTc4RlxcdUE3RjdcXHVBN0ZCLVxcdUE4MDFcXHVBODAzLVxcdUE4MDVcXHVBODA3LVxcdUE4MEFcXHVBODBDLVxcdUE4MjJcXHVBODQwLVxcdUE4NzNcXHVBODgyLVxcdUE4QjNcXHVBOEYyLVxcdUE4RjdcXHVBOEZCXFx1QThGRFxcdUE5MEEtXFx1QTkyNVxcdUE5MzAtXFx1QTk0NlxcdUE5NjAtXFx1QTk3Q1xcdUE5ODQtXFx1QTlCMlxcdUE5RTAtXFx1QTlFNFxcdUE5RTctXFx1QTlFRlxcdUE5RkEtXFx1QTlGRVxcdUFBMDAtXFx1QUEyOFxcdUFBNDAtXFx1QUE0MlxcdUFBNDQtXFx1QUE0QlxcdUFBNjAtXFx1QUE2RlxcdUFBNzEtXFx1QUE3NlxcdUFBN0FcXHVBQTdFLVxcdUFBQUZcXHVBQUIxXFx1QUFCNS1cXHVBQUI2XFx1QUFCOS1cXHVBQUJEXFx1QUFDMFxcdUFBQzJcXHVBQURCLVxcdUFBRENcXHVBQUUwLVxcdUFBRUFcXHVBQUYyXFx1QUIwMS1cXHVBQjA2XFx1QUIwOS1cXHVBQjBFXFx1QUIxMS1cXHVBQjE2XFx1QUIyMC1cXHVBQjI2XFx1QUIyOC1cXHVBQjJFXFx1QUJDMC1cXHVBQkUyXFx1QUMwMC1cXHVEN0EzXFx1RDdCMC1cXHVEN0M2XFx1RDdDQi1cXHVEN0ZCXFx1RjkwMC1cXHVGQTZEXFx1RkE3MC1cXHVGQUQ5XFx1RkIxRFxcdUZCMUYtXFx1RkIyOFxcdUZCMkEtXFx1RkIzNlxcdUZCMzgtXFx1RkIzQ1xcdUZCM0VcXHVGQjQwLVxcdUZCNDFcXHVGQjQzLVxcdUZCNDRcXHVGQjQ2LVxcdUZCQjFcXHVGQkQzLVxcdUZEM0RcXHVGRDUwLVxcdUZEOEZcXHVGRDkyLVxcdUZEQzdcXHVGREYwLVxcdUZERkJcXHVGRTcwLVxcdUZFNzRcXHVGRTc2LVxcdUZFRkNcXHVGRjY2LVxcdUZGNkZcXHVGRjcxLVxcdUZGOURcXHVGRkEwLVxcdUZGQkVcXHVGRkMyLVxcdUZGQzdcXHVGRkNBLVxcdUZGQ0ZcXHVGRkQyLVxcdUZGRDdcXHVGRkRBLVxcdUZGREMvLnNvdXJjZSxcbl0uam9pbignJykgKyAnXScpO1xuY2xhc3MgQmlidGV4UGFyc2VyIHtcbiAgICBwYXJzZShpbnB1dCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIC8vIHRoaXMuX3Byb2dyZXNzID0gMFxuICAgICAgICB0aGlzLnBvcyA9IDA7XG4gICAgICAgIHRoaXMuaW5wdXQgPSBpbnB1dDtcbiAgICAgICAgdGhpcy5tYXhfZW50cmllcyA9IG9wdGlvbnMubWF4X2VudHJpZXMgfHwgMDtcbiAgICAgICAgdGhpcy5lbnRyaWVzID0gMDtcbiAgICAgICAgdGhpcy5wYXJzaW5nID0gbnVsbDtcbiAgICAgICAgdGhpcy5jaHVua3MgPSBbXTtcbiAgICAgICAgaWYgKG9wdGlvbnMuYXN5bmMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJpYnRleEFzeW5jKCkudGhlbigoKSA9PiB0aGlzLmNodW5rcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmJpYnRleCgpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2h1bmtzO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlzV2hpdGVzcGFjZShzLCBob3Jpem9udGFsT25seSA9IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiAocyA9PT0gJyAnIHx8IHMgPT09ICdcXHQnIHx8ICghaG9yaXpvbnRhbE9ubHkgJiYgKHMgPT09ICdcXHInIHx8IHMgPT09ICdcXG4nKSkpO1xuICAgIH1cbiAgICBtYXRjaChzKSB7XG4gICAgICAgIHRoaXMuc2tpcFdoaXRlc3BhY2UoKTtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXQuc3Vic3RyKHRoaXMucG9zLCBzLmxlbmd0aCkgIT09IHMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKGBUb2tlbiBtaXNtYXRjaCwgZXhwZWN0ZWQgJHtKU09OLnN0cmluZ2lmeShzKX0sIGZvdW5kICR7SlNPTi5zdHJpbmdpZnkodGhpcy5pbnB1dC5zdWJzdHIodGhpcy5wb3MsIDIwKSl9Li4uYCwgdGhpcyk7IC8vIHRzbGludDpkaXNhYmxlLWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucG9zICs9IHMubGVuZ3RoO1xuICAgICAgICB0aGlzLnNraXBXaGl0ZXNwYWNlKCk7XG4gICAgfVxuICAgIHRyeU1hdGNoKHMpIHtcbiAgICAgICAgdGhpcy5za2lwV2hpdGVzcGFjZSgpO1xuICAgICAgICByZXR1cm4gKHRoaXMuaW5wdXQuc3Vic3RyKHRoaXMucG9zLCBzLmxlbmd0aCkgPT09IHMpO1xuICAgICAgICAvLyB0aGlzLnNraXBXaGl0ZXNwYWNlKClcbiAgICB9XG4gICAgc2tpcFdoaXRlc3BhY2UoKSB7XG4gICAgICAgIHdoaWxlICh0aGlzLnBvcyA8IHRoaXMuaW5wdXQubGVuZ3RoICYmIHRoaXMuaXNXaGl0ZXNwYWNlKHRoaXMuaW5wdXRbdGhpcy5wb3NdKSlcbiAgICAgICAgICAgIHRoaXMucG9zKys7XG4gICAgICAgIC8vIHNoYWR5XG4gICAgICAgIGlmICh0aGlzLmlucHV0W3RoaXMucG9zXSA9PT0gJyUnKSB7XG4gICAgICAgICAgICB3aGlsZSAodGhpcy5wb3MgPCB0aGlzLmlucHV0Lmxlbmd0aCAmJiB0aGlzLmlucHV0W3RoaXMucG9zXSAhPT0gJ1xcbicpXG4gICAgICAgICAgICAgICAgdGhpcy5wb3MrKztcbiAgICAgICAgICAgIHdoaWxlICh0aGlzLnBvcyA8IHRoaXMuaW5wdXQubGVuZ3RoICYmIHRoaXMuaXNXaGl0ZXNwYWNlKHRoaXMuaW5wdXRbdGhpcy5wb3NdKSlcbiAgICAgICAgICAgICAgICB0aGlzLnBvcysrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHZhbHVlX2JyYWNlcygpIHtcbiAgICAgICAgbGV0IGJyYWNlY291bnQgPSAwO1xuICAgICAgICB0aGlzLm1hdGNoKCd7Jyk7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5wb3M7XG4gICAgICAgIGxldCBtYXRoID0gZmFsc2U7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMuaW5wdXRbdGhpcy5wb3NdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnXFxcXCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9zICs9IDE7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3snOlxuICAgICAgICAgICAgICAgICAgICBicmFjZWNvdW50Kys7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ30nOlxuICAgICAgICAgICAgICAgICAgICBpZiAoYnJhY2Vjb3VudCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlRXJyb3IoJ1VuY2xvc2VkIG1hdGggc2VjdGlvbicsIHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3MrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlucHV0LnN1YnN0cmluZyhzdGFydCwgdGhpcy5wb3MgLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmFjZWNvdW50LS07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJyQnOlxuICAgICAgICAgICAgICAgICAgICBtYXRoID0gIW1hdGg7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5wb3MrKztcbiAgICAgICAgICAgIGlmICh0aGlzLnBvcyA+PSB0aGlzLmlucHV0Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKGBVbnRlcm1pbmF0ZWQgYnJhY2UtdmFsdWUgJHtKU09OLnN0cmluZ2lmeSh0aGlzLmlucHV0LnN1YnN0cihzdGFydCwgMjApKX1gLCB0aGlzKTsgLy8gdHNsaW50OmRpc2FibGUtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFsdWVfcXVvdGVzKCkge1xuICAgICAgICB0aGlzLm1hdGNoKCdcIicpO1xuICAgICAgICBjb25zdCBzdGFydCA9IHRoaXMucG9zO1xuICAgICAgICBsZXQgYnJhY2Vjb3VudCA9IDA7XG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMuaW5wdXRbdGhpcy5wb3NdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnXFxcXCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9zICs9IDE7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3snOlxuICAgICAgICAgICAgICAgICAgICBicmFjZWNvdW50Kys7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ30nOlxuICAgICAgICAgICAgICAgICAgICBicmFjZWNvdW50LS07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ1wiJzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJyYWNlY291bnQgPD0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3MrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlucHV0LnN1YnN0cmluZyhzdGFydCwgdGhpcy5wb3MgLSAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5wb3MrKztcbiAgICAgICAgICAgIGlmICh0aGlzLnBvcyA+PSB0aGlzLmlucHV0Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKGBVbnRlcm1pbmF0ZWQgcXVvdGUtdmFsdWUgJHtKU09OLnN0cmluZ2lmeSh0aGlzLmlucHV0LnN1YnN0cihzdGFydCwgMjApKX1gLCB0aGlzKTsgLy8gdHNsaW50OmRpc2FibGUtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgc2luZ2xlX3ZhbHVlKCkge1xuICAgICAgICBpZiAodGhpcy50cnlNYXRjaCgneycpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZV9icmFjZXMoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLnRyeU1hdGNoKCdcIicpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZV9xdW90ZXMoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmtleSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHZhbHVlKCkge1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSBbXTtcbiAgICAgICAgdmFsdWVzLnB1c2godGhpcy5zaW5nbGVfdmFsdWUoKSk7XG4gICAgICAgIHdoaWxlICh0aGlzLnRyeU1hdGNoKCcjJykpIHtcbiAgICAgICAgICAgIHRoaXMubWF0Y2goJyMnKTtcbiAgICAgICAgICAgIHZhbHVlcy5wdXNoKHRoaXMuc2luZ2xlX3ZhbHVlKCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZXMuam9pbignJyk7XG4gICAgfVxuICAgIGtleShhbGxvd1VuaWNvZGUgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCBzdGFydCA9IHRoaXMucG9zO1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucG9zID09PSB0aGlzLmlucHV0Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKCdSdW5hd2F5IGtleScsIHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXRbdGhpcy5wb3NdLm1hdGNoKC9bJ2EtekEtWjAtOSY7XzpcXFxcLi8tXS8pKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3MrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGFsbG93VW5pY29kZSAmJiB0aGlzLmlucHV0W3RoaXMucG9zXS5tYXRjaChsZXR0ZXIpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3MrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlucHV0LnN1YnN0cmluZyhzdGFydCwgdGhpcy5wb3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGtleV9lcXVhbHNfdmFsdWUoKSB7XG4gICAgICAgIGNvbnN0IGtleSA9IHRoaXMua2V5KCk7XG4gICAgICAgIGlmICghdGhpcy50cnlNYXRjaCgnPScpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcihgLi4uID0gdmFsdWUgZXhwZWN0ZWQsIGVxdWFscyBzaWduIG1pc3Npbmc6ICR7SlNPTi5zdHJpbmdpZnkodGhpcy5pbnB1dC5zdWJzdHIodGhpcy5wb3MsIDIwKSl9Li4uYCwgdGhpcyk7IC8vIHRzbGludDpkaXNhYmxlLWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubWF0Y2goJz0nKTtcbiAgICAgICAgY29uc3QgdmFsID0gdGhpcy52YWx1ZSgpO1xuICAgICAgICByZXR1cm4gW2tleSwgdmFsXTtcbiAgICB9XG4gICAga2V5X3ZhbHVlX2xpc3QoKSB7XG4gICAgICAgIHRoaXMua2V5X2VxdWFsc192YWx1ZSgpO1xuICAgICAgICB3aGlsZSAodGhpcy50cnlNYXRjaCgnLCcpKSB7XG4gICAgICAgICAgICB0aGlzLm1hdGNoKCcsJyk7XG4gICAgICAgICAgICAvLyBmaXhlcyBwcm9ibGVtcyB3aXRoIGNvbW1hcyBhdCB0aGUgZW5kIG9mIGEgbGlzdFxuICAgICAgICAgICAgaWYgKHRoaXMudHJ5TWF0Y2goJ30nKSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5rZXlfZXF1YWxzX3ZhbHVlKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZW50cnkoZCkge1xuICAgICAgICB0aGlzLnBhcnNpbmcgPSB0aGlzLmtleSh0cnVlKTtcbiAgICAgICAgdGhpcy5tYXRjaCgnLCcpO1xuICAgICAgICB0aGlzLmtleV92YWx1ZV9saXN0KCk7XG4gICAgfVxuICAgIGRpcmVjdGl2ZSgpIHtcbiAgICAgICAgdGhpcy5tYXRjaCgnQCcpO1xuICAgICAgICByZXR1cm4gYEAke3RoaXMua2V5KCl9YC50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICBzdHJpbmcoKSB7XG4gICAgICAgIHRoaXMua2V5X2VxdWFsc192YWx1ZSgpO1xuICAgIH1cbiAgICBwcmVhbWJsZSgpIHtcbiAgICAgICAgdGhpcy52YWx1ZSgpO1xuICAgIH1cbiAgICBjb21tZW50KCkge1xuICAgICAgICB3aGlsZSAodGhpcy5pc1doaXRlc3BhY2UodGhpcy5pbnB1dFt0aGlzLnBvc10sIHRydWUpKVxuICAgICAgICAgICAgdGhpcy5wb3MrKztcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRbdGhpcy5wb3NdID09PSAneycpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWVfYnJhY2VzKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKHRoaXMuaW5wdXRbdGhpcy5wb3NdICE9PSAnXFxuJyAmJiB0aGlzLnBvcyA8IHRoaXMuaW5wdXQubGVuZ3RoKVxuICAgICAgICAgICAgdGhpcy5wb3MrKztcbiAgICB9XG4gICAgLypcbiAgICBwcml2YXRlIHByb2dyZXNzKCkge1xuICAgICAgY29uc3QgcHJvZ3Jlc3MgPSBNYXRoLnJvdW5kKCh0aGlzLnBvcyAvIHRoaXMuaW5wdXQubGVuZ3RoICogMTAwKSAvIDUpICogNSAvLyB0c2xpbnQ6ZGlzYWJsZS1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICAgIGlmICh0aGlzLl9wcm9ncmVzcyAhPT0gcHJvZ3Jlc3MpIHtcbiAgICAgICAgdGhpcy5fcHJvZ3Jlc3MgPSBwcm9ncmVzc1xuICAgICAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShgICgke3RoaXMuX3Byb2dyZXNzfSUpIGApXG4gICAgICB9XG4gICAgfVxuICAgICovXG4gICAgaGFzTW9yZSgpIHtcbiAgICAgICAgaWYgKHRoaXMubWF4X2VudHJpZXMgJiYgdGhpcy5lbnRyaWVzID49IHRoaXMubWF4X2VudHJpZXMpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiAodGhpcy5wb3MgPCB0aGlzLmlucHV0Lmxlbmd0aCk7XG4gICAgfVxuICAgIGJpYnRleCgpIHtcbiAgICAgICAgd2hpbGUgKHRoaXMuaGFzTW9yZSgpKSB7XG4gICAgICAgICAgICB0aGlzLnBhcnNlTmV4dCgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGJpYnRleEFzeW5jKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNNb3JlKCkgPyAobmV3IFByb21pc2UocmVzb2x2ZSA9PiByZXNvbHZlKHRoaXMucGFyc2VOZXh0KCkpKSkudGhlbigoKSA9PiB0aGlzLmJpYnRleEFzeW5jKCkpIDogUHJvbWlzZS5yZXNvbHZlKG51bGwpO1xuICAgIH1cbiAgICBwYXJzZU5leHQoKSB7XG4gICAgICAgIC8vIHRoaXMucHJvZ3Jlc3MoKVxuICAgICAgICBjb25zdCBjaHVuayA9IHtcbiAgICAgICAgICAgIG9mZnNldDoge1xuICAgICAgICAgICAgICAgIHBvczogdGhpcy5wb3MsXG4gICAgICAgICAgICAgICAgbGluZTogdGhpcy5pbnB1dC5zdWJzdHJpbmcoMCwgdGhpcy5wb3MpLnNwbGl0KCdcXG4nKS5sZW5ndGggLSAxLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVycm9yOiBudWxsLFxuICAgICAgICAgICAgdGV4dDogbnVsbCxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5za2lwV2hpdGVzcGFjZSgpO1xuICAgICAgICBpZiAodGhpcy5wb3MgPj0gdGhpcy5pbnB1dC5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGxldCBndWFyZCA9ICcnO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZCA9IHRoaXMuZGlyZWN0aXZlKCk7XG4gICAgICAgICAgICBzd2l0Y2ggKGQpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdAc3RyaW5nJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaCgneycpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hdGNoKCd9Jyk7XG4gICAgICAgICAgICAgICAgICAgIGNodW5rLnN0cmluZ0RlY2xhcmF0aW9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnQHByZWFtYmxlJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaCgneycpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZWFtYmxlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWF0Y2goJ30nKTtcbiAgICAgICAgICAgICAgICAgICAgY2h1bmsucHJlYW1ibGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdAY29tbWVudCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tbWVudCgpO1xuICAgICAgICAgICAgICAgICAgICBjaHVuay5jb21tZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudHJ5TWF0Y2goJ3snKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3VhcmQgPSAne30nO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMudHJ5TWF0Y2goJygnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3VhcmQgPSAnKCknO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlRXJyb3IoYFRva2VuIG1pc21hdGNoLCBleHBlY3RlZCAneycgb3IgJygnLCBmb3VuZCAke0pTT04uc3RyaW5naWZ5KHRoaXMuaW5wdXQuc3Vic3RyKHRoaXMucG9zLCAyMCkpfS4uLmAsIHRoaXMpOyAvLyB0c2xpbnQ6ZGlzYWJsZS1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hdGNoKGd1YXJkWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbnRyeShkKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaChndWFyZFsxXSk7XG4gICAgICAgICAgICAgICAgICAgIGNodW5rLmVudHJ5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbnRyaWVzKys7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGlmIChlcnIubmFtZSAhPT0gJ1BhcnNlRXJyb3InKVxuICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgIGNodW5rLmVycm9yID0gZXJyLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgLy8gc2tpcCBhaGVhZCB0byB0aGUgbmV4dCBAIGFuZCB0cnkgYWdhaW5cbiAgICAgICAgICAgICAgICB0aGlzLnBvcyA9IGNodW5rLm9mZnNldC5wb3MgKyAxO1xuICAgICAgICAgICAgd2hpbGUgKHRoaXMucG9zIDwgdGhpcy5pbnB1dC5sZW5ndGggJiYgdGhpcy5pbnB1dFt0aGlzLnBvc10gIT09ICdAJylcbiAgICAgICAgICAgICAgICB0aGlzLnBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRleHQgPSB0aGlzLmlucHV0LnN1YnN0cmluZyhjaHVuay5vZmZzZXQucG9zLCB0aGlzLnBvcyk7XG4gICAgICAgIGNvbnN0IGxhc3QgPSB0aGlzLmNodW5rcy5sZW5ndGggLSAxO1xuICAgICAgICBpZiAoY2h1bmsuZXJyb3IgJiYgdGhpcy5jaHVua3MubGVuZ3RoICYmIHRoaXMuY2h1bmtzW2xhc3RdLmVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLmNodW5rc1tsYXN0XS50ZXh0ICs9IHRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjaHVuay50ZXh0ID0gdGV4dDtcbiAgICAgICAgICAgIHRoaXMuY2h1bmtzLnB1c2goY2h1bmspO1xuICAgICAgICB9XG4gICAgfVxufVxuLyoqXG4gKiBSZWFkcyB0aGUgYmlidGV4IGlucHV0IGFuZCBzcGxpdHMgaXQgaW50byBzZXBhcmF0ZSBjaHVua3Mgb2YgYEBzdHJpbmdgcywgYEBjb21tZW50YHMsIGFuZCBiaWJ0ZXggZW50cmllcy4gVXNlZnVsIGZvciBkZXRlY3RpbmcgaWYgYSBmaWxlIGlzIGJpYnRleCBmaWxlIGFuZCBmb3IgZmlsdGVyaW5nIG91dCBiYXNpYyBlcnJvcnMgdGhhdCB3b3VsZFxuICogbWFrZSB0aGUgbW9yZSBzb3BoaXN0aWNhdGVkIFtbYmlidGV4LnBhcnNlXV0gcmVqZWN0IHRoZSB3aG9sZSBmaWxlXG4gKlxuICogQHJldHVybnMgYXJyYXkgb2YgY2h1bmtzLCB3aXRoIG1hcmtlcnMgZm9yIHR5cGUgYW5kIGVycm9ycyAoaWYgYW55KSBmb3VuZC5cbiAqL1xuZnVuY3Rpb24gcGFyc2UoaW5wdXQsIG9wdGlvbnMgPSB7fSkge1xuICAgIHJldHVybiAobmV3IEJpYnRleFBhcnNlcikucGFyc2UoaW5wdXQsIG9wdGlvbnMpO1xufVxuZXhwb3J0cy5wYXJzZSA9IHBhcnNlO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y2h1bmtlci5qcy5tYXAiLCJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgYXNjaWk6IHJlcXVpcmUoJy4vdGFibGVzL2FzY2lpLmpzb24nKSxcbiAgYXNjaWlfYmlidGV4X2NyZWF0b3I6IHJlcXVpcmUoJy4vdGFibGVzL2FzY2lpLWJpYnRleC1jcmVhdG9yLmpzb24nKSxcbiAgdW5pY29kZTogcmVxdWlyZSgnLi90YWJsZXMvdW5pY29kZS5qc29uJyksXG4gIGxhdGV4OiByZXF1aXJlKCcuL3RhYmxlcy9sYXRleC5qc29uJyksXG4gIGRpYWNyaXRpY3M6IHJlcXVpcmUoJy4vdGFibGVzL2RpYWNyaXRpY3MuanNvbicpLFxufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gW1xuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnQycsXG4gICAgICAgICdhbGlhcyc6ICdPdGhlcicsXG4gICAgICAgICdpc0JtcExhc3QnOiB0cnVlLFxuICAgICAgICAnYm1wJzogJ1xcMC1cXHgxRlxceDdGLVxceDlGXFx4QURcXHUwMzc4XFx1MDM3OVxcdTAzODAtXFx1MDM4M1xcdTAzOEJcXHUwMzhEXFx1MDNBMlxcdTA1MzBcXHUwNTU3XFx1MDU1OFxcdTA1OEJcXHUwNThDXFx1MDU5MFxcdTA1QzgtXFx1MDVDRlxcdTA1RUItXFx1MDVFRVxcdTA1RjUtXFx1MDYwNVxcdTA2MUNcXHUwNjFEXFx1MDZERFxcdTA3MEVcXHUwNzBGXFx1MDc0QlxcdTA3NENcXHUwN0IyLVxcdTA3QkZcXHUwN0ZCXFx1MDdGQ1xcdTA4MkVcXHUwODJGXFx1MDgzRlxcdTA4NUNcXHUwODVEXFx1MDg1RlxcdTA4NkItXFx1MDg5RlxcdTA4QjVcXHUwOEM4LVxcdTA4RDJcXHUwOEUyXFx1MDk4NFxcdTA5OERcXHUwOThFXFx1MDk5MVxcdTA5OTJcXHUwOUE5XFx1MDlCMVxcdTA5QjMtXFx1MDlCNVxcdTA5QkFcXHUwOUJCXFx1MDlDNVxcdTA5QzZcXHUwOUM5XFx1MDlDQVxcdTA5Q0YtXFx1MDlENlxcdTA5RDgtXFx1MDlEQlxcdTA5REVcXHUwOUU0XFx1MDlFNVxcdTA5RkZcXHUwQTAwXFx1MEEwNFxcdTBBMEItXFx1MEEwRVxcdTBBMTFcXHUwQTEyXFx1MEEyOVxcdTBBMzFcXHUwQTM0XFx1MEEzN1xcdTBBM0FcXHUwQTNCXFx1MEEzRFxcdTBBNDMtXFx1MEE0NlxcdTBBNDlcXHUwQTRBXFx1MEE0RS1cXHUwQTUwXFx1MEE1Mi1cXHUwQTU4XFx1MEE1RFxcdTBBNUYtXFx1MEE2NVxcdTBBNzctXFx1MEE4MFxcdTBBODRcXHUwQThFXFx1MEE5MlxcdTBBQTlcXHUwQUIxXFx1MEFCNFxcdTBBQkFcXHUwQUJCXFx1MEFDNlxcdTBBQ0FcXHUwQUNFXFx1MEFDRlxcdTBBRDEtXFx1MEFERlxcdTBBRTRcXHUwQUU1XFx1MEFGMi1cXHUwQUY4XFx1MEIwMFxcdTBCMDRcXHUwQjBEXFx1MEIwRVxcdTBCMTFcXHUwQjEyXFx1MEIyOVxcdTBCMzFcXHUwQjM0XFx1MEIzQVxcdTBCM0JcXHUwQjQ1XFx1MEI0NlxcdTBCNDlcXHUwQjRBXFx1MEI0RS1cXHUwQjU0XFx1MEI1OC1cXHUwQjVCXFx1MEI1RVxcdTBCNjRcXHUwQjY1XFx1MEI3OC1cXHUwQjgxXFx1MEI4NFxcdTBCOEItXFx1MEI4RFxcdTBCOTFcXHUwQjk2LVxcdTBCOThcXHUwQjlCXFx1MEI5RFxcdTBCQTAtXFx1MEJBMlxcdTBCQTUtXFx1MEJBN1xcdTBCQUItXFx1MEJBRFxcdTBCQkEtXFx1MEJCRFxcdTBCQzMtXFx1MEJDNVxcdTBCQzlcXHUwQkNFXFx1MEJDRlxcdTBCRDEtXFx1MEJENlxcdTBCRDgtXFx1MEJFNVxcdTBCRkItXFx1MEJGRlxcdTBDMERcXHUwQzExXFx1MEMyOVxcdTBDM0EtXFx1MEMzQ1xcdTBDNDVcXHUwQzQ5XFx1MEM0RS1cXHUwQzU0XFx1MEM1N1xcdTBDNUItXFx1MEM1RlxcdTBDNjRcXHUwQzY1XFx1MEM3MC1cXHUwQzc2XFx1MEM4RFxcdTBDOTFcXHUwQ0E5XFx1MENCNFxcdTBDQkFcXHUwQ0JCXFx1MENDNVxcdTBDQzlcXHUwQ0NFLVxcdTBDRDRcXHUwQ0Q3LVxcdTBDRERcXHUwQ0RGXFx1MENFNFxcdTBDRTVcXHUwQ0YwXFx1MENGMy1cXHUwQ0ZGXFx1MEQwRFxcdTBEMTFcXHUwRDQ1XFx1MEQ0OVxcdTBENTAtXFx1MEQ1M1xcdTBENjRcXHUwRDY1XFx1MEQ4MFxcdTBEODRcXHUwRDk3LVxcdTBEOTlcXHUwREIyXFx1MERCQ1xcdTBEQkVcXHUwREJGXFx1MERDNy1cXHUwREM5XFx1MERDQi1cXHUwRENFXFx1MERENVxcdTBERDdcXHUwREUwLVxcdTBERTVcXHUwREYwXFx1MERGMVxcdTBERjUtXFx1MEUwMFxcdTBFM0ItXFx1MEUzRVxcdTBFNUMtXFx1MEU4MFxcdTBFODNcXHUwRTg1XFx1MEU4QlxcdTBFQTRcXHUwRUE2XFx1MEVCRVxcdTBFQkZcXHUwRUM1XFx1MEVDN1xcdTBFQ0VcXHUwRUNGXFx1MEVEQVxcdTBFREJcXHUwRUUwLVxcdTBFRkZcXHUwRjQ4XFx1MEY2RC1cXHUwRjcwXFx1MEY5OFxcdTBGQkRcXHUwRkNEXFx1MEZEQi1cXHUwRkZGXFx1MTBDNlxcdTEwQzgtXFx1MTBDQ1xcdTEwQ0VcXHUxMENGXFx1MTI0OVxcdTEyNEVcXHUxMjRGXFx1MTI1N1xcdTEyNTlcXHUxMjVFXFx1MTI1RlxcdTEyODlcXHUxMjhFXFx1MTI4RlxcdTEyQjFcXHUxMkI2XFx1MTJCN1xcdTEyQkZcXHUxMkMxXFx1MTJDNlxcdTEyQzdcXHUxMkQ3XFx1MTMxMVxcdTEzMTZcXHUxMzE3XFx1MTM1QlxcdTEzNUNcXHUxMzdELVxcdTEzN0ZcXHUxMzlBLVxcdTEzOUZcXHUxM0Y2XFx1MTNGN1xcdTEzRkVcXHUxM0ZGXFx1MTY5RC1cXHUxNjlGXFx1MTZGOS1cXHUxNkZGXFx1MTcwRFxcdTE3MTUtXFx1MTcxRlxcdTE3MzctXFx1MTczRlxcdTE3NTQtXFx1MTc1RlxcdTE3NkRcXHUxNzcxXFx1MTc3NC1cXHUxNzdGXFx1MTdERVxcdTE3REZcXHUxN0VBLVxcdTE3RUZcXHUxN0ZBLVxcdTE3RkZcXHUxODBFXFx1MTgwRlxcdTE4MUEtXFx1MTgxRlxcdTE4NzktXFx1MTg3RlxcdTE4QUItXFx1MThBRlxcdTE4RjYtXFx1MThGRlxcdTE5MUZcXHUxOTJDLVxcdTE5MkZcXHUxOTNDLVxcdTE5M0ZcXHUxOTQxLVxcdTE5NDNcXHUxOTZFXFx1MTk2RlxcdTE5NzUtXFx1MTk3RlxcdTE5QUMtXFx1MTlBRlxcdTE5Q0EtXFx1MTlDRlxcdTE5REItXFx1MTlERFxcdTFBMUNcXHUxQTFEXFx1MUE1RlxcdTFBN0RcXHUxQTdFXFx1MUE4QS1cXHUxQThGXFx1MUE5QS1cXHUxQTlGXFx1MUFBRVxcdTFBQUZcXHUxQUMxLVxcdTFBRkZcXHUxQjRDLVxcdTFCNEZcXHUxQjdELVxcdTFCN0ZcXHUxQkY0LVxcdTFCRkJcXHUxQzM4LVxcdTFDM0FcXHUxQzRBLVxcdTFDNENcXHUxQzg5LVxcdTFDOEZcXHUxQ0JCXFx1MUNCQ1xcdTFDQzgtXFx1MUNDRlxcdTFDRkItXFx1MUNGRlxcdTFERkFcXHUxRjE2XFx1MUYxN1xcdTFGMUVcXHUxRjFGXFx1MUY0NlxcdTFGNDdcXHUxRjRFXFx1MUY0RlxcdTFGNThcXHUxRjVBXFx1MUY1Q1xcdTFGNUVcXHUxRjdFXFx1MUY3RlxcdTFGQjVcXHUxRkM1XFx1MUZENFxcdTFGRDVcXHUxRkRDXFx1MUZGMFxcdTFGRjFcXHUxRkY1XFx1MUZGRlxcdTIwMEItXFx1MjAwRlxcdTIwMkEtXFx1MjAyRVxcdTIwNjAtXFx1MjA2RlxcdTIwNzJcXHUyMDczXFx1MjA4RlxcdTIwOUQtXFx1MjA5RlxcdTIwQzAtXFx1MjBDRlxcdTIwRjEtXFx1MjBGRlxcdTIxOEMtXFx1MjE4RlxcdTI0MjctXFx1MjQzRlxcdTI0NEItXFx1MjQ1RlxcdTJCNzRcXHUyQjc1XFx1MkI5NlxcdTJDMkZcXHUyQzVGXFx1MkNGNC1cXHUyQ0Y4XFx1MkQyNlxcdTJEMjgtXFx1MkQyQ1xcdTJEMkVcXHUyRDJGXFx1MkQ2OC1cXHUyRDZFXFx1MkQ3MS1cXHUyRDdFXFx1MkQ5Ny1cXHUyRDlGXFx1MkRBN1xcdTJEQUZcXHUyREI3XFx1MkRCRlxcdTJEQzdcXHUyRENGXFx1MkREN1xcdTJEREZcXHUyRTUzLVxcdTJFN0ZcXHUyRTlBXFx1MkVGNC1cXHUyRUZGXFx1MkZENi1cXHUyRkVGXFx1MkZGQy1cXHUyRkZGXFx1MzA0MFxcdTMwOTdcXHUzMDk4XFx1MzEwMC1cXHUzMTA0XFx1MzEzMFxcdTMxOEZcXHUzMUU0LVxcdTMxRUZcXHUzMjFGXFx1OUZGRC1cXHU5RkZGXFx1QTQ4RC1cXHVBNDhGXFx1QTRDNy1cXHVBNENGXFx1QTYyQy1cXHVBNjNGXFx1QTZGOC1cXHVBNkZGXFx1QTdDMFxcdUE3QzFcXHVBN0NCLVxcdUE3RjRcXHVBODJELVxcdUE4MkZcXHVBODNBLVxcdUE4M0ZcXHVBODc4LVxcdUE4N0ZcXHVBOEM2LVxcdUE4Q0RcXHVBOERBLVxcdUE4REZcXHVBOTU0LVxcdUE5NUVcXHVBOTdELVxcdUE5N0ZcXHVBOUNFXFx1QTlEQS1cXHVBOUREXFx1QTlGRlxcdUFBMzctXFx1QUEzRlxcdUFBNEVcXHVBQTRGXFx1QUE1QVxcdUFBNUJcXHVBQUMzLVxcdUFBREFcXHVBQUY3LVxcdUFCMDBcXHVBQjA3XFx1QUIwOFxcdUFCMEZcXHVBQjEwXFx1QUIxNy1cXHVBQjFGXFx1QUIyN1xcdUFCMkZcXHVBQjZDLVxcdUFCNkZcXHVBQkVFXFx1QUJFRlxcdUFCRkEtXFx1QUJGRlxcdUQ3QTQtXFx1RDdBRlxcdUQ3QzctXFx1RDdDQVxcdUQ3RkMtXFx1RjhGRlxcdUZBNkVcXHVGQTZGXFx1RkFEQS1cXHVGQUZGXFx1RkIwNy1cXHVGQjEyXFx1RkIxOC1cXHVGQjFDXFx1RkIzN1xcdUZCM0RcXHVGQjNGXFx1RkI0MlxcdUZCNDVcXHVGQkMyLVxcdUZCRDJcXHVGRDQwLVxcdUZENEZcXHVGRDkwXFx1RkQ5MVxcdUZEQzgtXFx1RkRFRlxcdUZERkVcXHVGREZGXFx1RkUxQS1cXHVGRTFGXFx1RkU1M1xcdUZFNjdcXHVGRTZDLVxcdUZFNkZcXHVGRTc1XFx1RkVGRC1cXHVGRjAwXFx1RkZCRi1cXHVGRkMxXFx1RkZDOFxcdUZGQzlcXHVGRkQwXFx1RkZEMVxcdUZGRDhcXHVGRkQ5XFx1RkZERC1cXHVGRkRGXFx1RkZFN1xcdUZGRUYtXFx1RkZGQlxcdUZGRkVcXHVGRkZGJyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODAwW1xcdURDMENcXHVEQzI3XFx1REMzQlxcdURDM0VcXHVEQzRFXFx1REM0RlxcdURDNUUtXFx1REM3RlxcdURDRkItXFx1RENGRlxcdUREMDMtXFx1REQwNlxcdUREMzQtXFx1REQzNlxcdUREOEZcXHVERDlELVxcdUREOUZcXHVEREExLVxcdUREQ0ZcXHVEREZFLVxcdURFN0ZcXHVERTlELVxcdURFOUZcXHVERUQxLVxcdURFREZcXHVERUZDLVxcdURFRkZcXHVERjI0LVxcdURGMkNcXHVERjRCLVxcdURGNEZcXHVERjdCLVxcdURGN0ZcXHVERjlFXFx1REZDNC1cXHVERkM3XFx1REZENi1cXHVERkZGXXxcXHVEODAxW1xcdURDOUVcXHVEQzlGXFx1RENBQS1cXHVEQ0FGXFx1RENENC1cXHVEQ0Q3XFx1RENGQy1cXHVEQ0ZGXFx1REQyOC1cXHVERDJGXFx1REQ2NC1cXHVERDZFXFx1REQ3MC1cXHVEREZGXFx1REYzNy1cXHVERjNGXFx1REY1Ni1cXHVERjVGXFx1REY2OC1cXHVERkZGXXxcXHVEODAyW1xcdURDMDZcXHVEQzA3XFx1REMwOVxcdURDMzZcXHVEQzM5LVxcdURDM0JcXHVEQzNEXFx1REMzRVxcdURDNTZcXHVEQzlGLVxcdURDQTZcXHVEQ0IwLVxcdURDREZcXHVEQ0YzXFx1RENGNi1cXHVEQ0ZBXFx1REQxQy1cXHVERDFFXFx1REQzQS1cXHVERDNFXFx1REQ0MC1cXHVERDdGXFx1RERCOC1cXHVEREJCXFx1REREMFxcdURERDFcXHVERTA0XFx1REUwNy1cXHVERTBCXFx1REUxNFxcdURFMThcXHVERTM2XFx1REUzN1xcdURFM0ItXFx1REUzRVxcdURFNDktXFx1REU0RlxcdURFNTktXFx1REU1RlxcdURFQTAtXFx1REVCRlxcdURFRTctXFx1REVFQVxcdURFRjctXFx1REVGRlxcdURGMzYtXFx1REYzOFxcdURGNTZcXHVERjU3XFx1REY3My1cXHVERjc3XFx1REY5Mi1cXHVERjk4XFx1REY5RC1cXHVERkE4XFx1REZCMC1cXHVERkZGXXxcXHVEODAzW1xcdURDNDktXFx1REM3RlxcdURDQjMtXFx1RENCRlxcdURDRjMtXFx1RENGOVxcdUREMjgtXFx1REQyRlxcdUREM0EtXFx1REU1RlxcdURFN0ZcXHVERUFBXFx1REVBRVxcdURFQUZcXHVERUIyLVxcdURFRkZcXHVERjI4LVxcdURGMkZcXHVERjVBLVxcdURGQUZcXHVERkNDLVxcdURGREZcXHVERkY3LVxcdURGRkZdfFxcdUQ4MDRbXFx1REM0RS1cXHVEQzUxXFx1REM3MC1cXHVEQzdFXFx1RENCRFxcdURDQzItXFx1RENDRlxcdURDRTktXFx1RENFRlxcdURDRkEtXFx1RENGRlxcdUREMzVcXHVERDQ4LVxcdURENEZcXHVERDc3LVxcdUREN0ZcXHVEREUwXFx1RERGNS1cXHVEREZGXFx1REUxMlxcdURFM0YtXFx1REU3RlxcdURFODdcXHVERTg5XFx1REU4RVxcdURFOUVcXHVERUFBLVxcdURFQUZcXHVERUVCLVxcdURFRUZcXHVERUZBLVxcdURFRkZcXHVERjA0XFx1REYwRFxcdURGMEVcXHVERjExXFx1REYxMlxcdURGMjlcXHVERjMxXFx1REYzNFxcdURGM0FcXHVERjQ1XFx1REY0NlxcdURGNDlcXHVERjRBXFx1REY0RVxcdURGNEZcXHVERjUxLVxcdURGNTZcXHVERjU4LVxcdURGNUNcXHVERjY0XFx1REY2NVxcdURGNkQtXFx1REY2RlxcdURGNzUtXFx1REZGRl18XFx1RDgwNVtcXHVEQzVDXFx1REM2Mi1cXHVEQzdGXFx1RENDOC1cXHVEQ0NGXFx1RENEQS1cXHVERDdGXFx1RERCNlxcdUREQjdcXHVERERFLVxcdURERkZcXHVERTQ1LVxcdURFNEZcXHVERTVBLVxcdURFNUZcXHVERTZELVxcdURFN0ZcXHVERUI5LVxcdURFQkZcXHVERUNBLVxcdURFRkZcXHVERjFCXFx1REYxQ1xcdURGMkMtXFx1REYyRlxcdURGNDAtXFx1REZGRl18XFx1RDgwNltcXHVEQzNDLVxcdURDOUZcXHVEQ0YzLVxcdURDRkVcXHVERDA3XFx1REQwOFxcdUREMEFcXHVERDBCXFx1REQxNFxcdUREMTdcXHVERDM2XFx1REQzOVxcdUREM0FcXHVERDQ3LVxcdURENEZcXHVERDVBLVxcdUREOUZcXHVEREE4XFx1RERBOVxcdURERDhcXHVEREQ5XFx1RERFNS1cXHVEREZGXFx1REU0OC1cXHVERTRGXFx1REVBMy1cXHVERUJGXFx1REVGOS1cXHVERkZGXXxcXHVEODA3W1xcdURDMDlcXHVEQzM3XFx1REM0Ni1cXHVEQzRGXFx1REM2RC1cXHVEQzZGXFx1REM5MFxcdURDOTFcXHVEQ0E4XFx1RENCNy1cXHVEQ0ZGXFx1REQwN1xcdUREMEFcXHVERDM3LVxcdUREMzlcXHVERDNCXFx1REQzRVxcdURENDgtXFx1REQ0RlxcdURENUEtXFx1REQ1RlxcdURENjZcXHVERDY5XFx1REQ4RlxcdUREOTJcXHVERDk5LVxcdUREOUZcXHVEREFBLVxcdURFREZcXHVERUY5LVxcdURGQUZcXHVERkIxLVxcdURGQkZcXHVERkYyLVxcdURGRkVdfFxcdUQ4MDhbXFx1REY5QS1cXHVERkZGXXxcXHVEODA5W1xcdURDNkZcXHVEQzc1LVxcdURDN0ZcXHVERDQ0LVxcdURGRkZdfFtcXHVEODBBXFx1RDgwQlxcdUQ4MEUtXFx1RDgxMFxcdUQ4MTItXFx1RDgxOVxcdUQ4MjQtXFx1RDgyQlxcdUQ4MkRcXHVEODJFXFx1RDgzMC1cXHVEODMzXFx1RDgzN1xcdUQ4MzlcXHVEODNGXFx1RDg3Qi1cXHVEODdEXFx1RDg3RlxcdUQ4ODUtXFx1REIzRlxcdURCNDEtXFx1REJGRl1bXFx1REMwMC1cXHVERkZGXXxcXHVEODBEW1xcdURDMkYtXFx1REZGRl18XFx1RDgxMVtcXHVERTQ3LVxcdURGRkZdfFxcdUQ4MUFbXFx1REUzOS1cXHVERTNGXFx1REU1RlxcdURFNkEtXFx1REU2RFxcdURFNzAtXFx1REVDRlxcdURFRUVcXHVERUVGXFx1REVGNi1cXHVERUZGXFx1REY0Ni1cXHVERjRGXFx1REY1QVxcdURGNjJcXHVERjc4LVxcdURGN0NcXHVERjkwLVxcdURGRkZdfFxcdUQ4MUJbXFx1REMwMC1cXHVERTNGXFx1REU5Qi1cXHVERUZGXFx1REY0Qi1cXHVERjRFXFx1REY4OC1cXHVERjhFXFx1REZBMC1cXHVERkRGXFx1REZFNS1cXHVERkVGXFx1REZGMi1cXHVERkZGXXxcXHVEODIxW1xcdURGRjgtXFx1REZGRl18XFx1RDgyM1tcXHVEQ0Q2LVxcdURDRkZcXHVERDA5LVxcdURGRkZdfFxcdUQ4MkNbXFx1REQxRi1cXHVERDRGXFx1REQ1My1cXHVERDYzXFx1REQ2OC1cXHVERDZGXFx1REVGQy1cXHVERkZGXXxcXHVEODJGW1xcdURDNkItXFx1REM2RlxcdURDN0QtXFx1REM3RlxcdURDODktXFx1REM4RlxcdURDOUFcXHVEQzlCXFx1RENBMC1cXHVERkZGXXxcXHVEODM0W1xcdURDRjYtXFx1RENGRlxcdUREMjdcXHVERDI4XFx1REQ3My1cXHVERDdBXFx1RERFOS1cXHVEREZGXFx1REU0Ni1cXHVERURGXFx1REVGNC1cXHVERUZGXFx1REY1Ny1cXHVERjVGXFx1REY3OS1cXHVERkZGXXxcXHVEODM1W1xcdURDNTVcXHVEQzlEXFx1RENBMFxcdURDQTFcXHVEQ0EzXFx1RENBNFxcdURDQTdcXHVEQ0E4XFx1RENBRFxcdURDQkFcXHVEQ0JDXFx1RENDNFxcdUREMDZcXHVERDBCXFx1REQwQ1xcdUREMTVcXHVERDFEXFx1REQzQVxcdUREM0ZcXHVERDQ1XFx1REQ0Ny1cXHVERDQ5XFx1REQ1MVxcdURFQTZcXHVERUE3XFx1REZDQ1xcdURGQ0RdfFxcdUQ4MzZbXFx1REU4Qy1cXHVERTlBXFx1REVBMFxcdURFQjAtXFx1REZGRl18XFx1RDgzOFtcXHVEQzA3XFx1REMxOVxcdURDMUFcXHVEQzIyXFx1REMyNVxcdURDMkItXFx1RENGRlxcdUREMkQtXFx1REQyRlxcdUREM0VcXHVERDNGXFx1REQ0QS1cXHVERDREXFx1REQ1MC1cXHVERUJGXFx1REVGQS1cXHVERUZFXFx1REYwMC1cXHVERkZGXXxcXHVEODNBW1xcdURDQzVcXHVEQ0M2XFx1RENENy1cXHVEQ0ZGXFx1REQ0Qy1cXHVERDRGXFx1REQ1QS1cXHVERDVEXFx1REQ2MC1cXHVERkZGXXxcXHVEODNCW1xcdURDMDAtXFx1REM3MFxcdURDQjUtXFx1REQwMFxcdUREM0UtXFx1RERGRlxcdURFMDRcXHVERTIwXFx1REUyM1xcdURFMjVcXHVERTI2XFx1REUyOFxcdURFMzNcXHVERTM4XFx1REUzQVxcdURFM0MtXFx1REU0MVxcdURFNDMtXFx1REU0NlxcdURFNDhcXHVERTRBXFx1REU0Q1xcdURFNTBcXHVERTUzXFx1REU1NVxcdURFNTZcXHVERTU4XFx1REU1QVxcdURFNUNcXHVERTVFXFx1REU2MFxcdURFNjNcXHVERTY1XFx1REU2NlxcdURFNkJcXHVERTczXFx1REU3OFxcdURFN0RcXHVERTdGXFx1REU4QVxcdURFOUMtXFx1REVBMFxcdURFQTRcXHVERUFBXFx1REVCQy1cXHVERUVGXFx1REVGMi1cXHVERkZGXXxcXHVEODNDW1xcdURDMkMtXFx1REMyRlxcdURDOTQtXFx1REM5RlxcdURDQUZcXHVEQ0IwXFx1RENDMFxcdURDRDBcXHVEQ0Y2LVxcdURDRkZcXHVEREFFLVxcdURERTVcXHVERTAzLVxcdURFMEZcXHVERTNDLVxcdURFM0ZcXHVERTQ5LVxcdURFNEZcXHVERTUyLVxcdURFNUZcXHVERTY2LVxcdURFRkZdfFxcdUQ4M0RbXFx1REVEOC1cXHVERURGXFx1REVFRC1cXHVERUVGXFx1REVGRC1cXHVERUZGXFx1REY3NC1cXHVERjdGXFx1REZEOS1cXHVERkRGXFx1REZFQy1cXHVERkZGXXxcXHVEODNFW1xcdURDMEMtXFx1REMwRlxcdURDNDgtXFx1REM0RlxcdURDNUEtXFx1REM1RlxcdURDODgtXFx1REM4RlxcdURDQUVcXHVEQ0FGXFx1RENCMi1cXHVEQ0ZGXFx1REQ3OVxcdUREQ0NcXHVERTU0LVxcdURFNUZcXHVERTZFXFx1REU2RlxcdURFNzUtXFx1REU3N1xcdURFN0ItXFx1REU3RlxcdURFODctXFx1REU4RlxcdURFQTktXFx1REVBRlxcdURFQjctXFx1REVCRlxcdURFQzMtXFx1REVDRlxcdURFRDctXFx1REVGRlxcdURGOTNcXHVERkNCLVxcdURGRUZcXHVERkZBLVxcdURGRkZdfFxcdUQ4NjlbXFx1REVERS1cXHVERUZGXXxcXHVEODZEW1xcdURGMzUtXFx1REYzRl18XFx1RDg2RVtcXHVEQzFFXFx1REMxRl18XFx1RDg3M1tcXHVERUEyLVxcdURFQUZdfFxcdUQ4N0FbXFx1REZFMS1cXHVERkZGXXxcXHVEODdFW1xcdURFMUUtXFx1REZGRl18XFx1RDg4NFtcXHVERjRCLVxcdURGRkZdfFxcdURCNDBbXFx1REMwMC1cXHVEQ0ZGXFx1RERGMC1cXHVERkZGXSdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnQ2MnLFxuICAgICAgICAnYWxpYXMnOiAnQ29udHJvbCcsXG4gICAgICAgICdibXAnOiAnXFwwLVxceDFGXFx4N0YtXFx4OUYnXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ0NmJyxcbiAgICAgICAgJ2FsaWFzJzogJ0Zvcm1hdCcsXG4gICAgICAgICdibXAnOiAnXFx4QURcXHUwNjAwLVxcdTA2MDVcXHUwNjFDXFx1MDZERFxcdTA3MEZcXHUwOEUyXFx1MTgwRVxcdTIwMEItXFx1MjAwRlxcdTIwMkEtXFx1MjAyRVxcdTIwNjAtXFx1MjA2NFxcdTIwNjYtXFx1MjA2RlxcdUZFRkZcXHVGRkY5LVxcdUZGRkInLFxuICAgICAgICAnYXN0cmFsJzogJ1xcdUQ4MDRbXFx1RENCRFxcdURDQ0RdfFxcdUQ4MERbXFx1REMzMC1cXHVEQzM4XXxcXHVEODJGW1xcdURDQTAtXFx1RENBM118XFx1RDgzNFtcXHVERDczLVxcdUREN0FdfFxcdURCNDBbXFx1REMwMVxcdURDMjAtXFx1REM3Rl0nXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ0NuJyxcbiAgICAgICAgJ2FsaWFzJzogJ1VuYXNzaWduZWQnLFxuICAgICAgICAnYm1wJzogJ1xcdTAzNzhcXHUwMzc5XFx1MDM4MC1cXHUwMzgzXFx1MDM4QlxcdTAzOERcXHUwM0EyXFx1MDUzMFxcdTA1NTdcXHUwNTU4XFx1MDU4QlxcdTA1OENcXHUwNTkwXFx1MDVDOC1cXHUwNUNGXFx1MDVFQi1cXHUwNUVFXFx1MDVGNS1cXHUwNUZGXFx1MDYxRFxcdTA3MEVcXHUwNzRCXFx1MDc0Q1xcdTA3QjItXFx1MDdCRlxcdTA3RkJcXHUwN0ZDXFx1MDgyRVxcdTA4MkZcXHUwODNGXFx1MDg1Q1xcdTA4NURcXHUwODVGXFx1MDg2Qi1cXHUwODlGXFx1MDhCNVxcdTA4QzgtXFx1MDhEMlxcdTA5ODRcXHUwOThEXFx1MDk4RVxcdTA5OTFcXHUwOTkyXFx1MDlBOVxcdTA5QjFcXHUwOUIzLVxcdTA5QjVcXHUwOUJBXFx1MDlCQlxcdTA5QzVcXHUwOUM2XFx1MDlDOVxcdTA5Q0FcXHUwOUNGLVxcdTA5RDZcXHUwOUQ4LVxcdTA5REJcXHUwOURFXFx1MDlFNFxcdTA5RTVcXHUwOUZGXFx1MEEwMFxcdTBBMDRcXHUwQTBCLVxcdTBBMEVcXHUwQTExXFx1MEExMlxcdTBBMjlcXHUwQTMxXFx1MEEzNFxcdTBBMzdcXHUwQTNBXFx1MEEzQlxcdTBBM0RcXHUwQTQzLVxcdTBBNDZcXHUwQTQ5XFx1MEE0QVxcdTBBNEUtXFx1MEE1MFxcdTBBNTItXFx1MEE1OFxcdTBBNURcXHUwQTVGLVxcdTBBNjVcXHUwQTc3LVxcdTBBODBcXHUwQTg0XFx1MEE4RVxcdTBBOTJcXHUwQUE5XFx1MEFCMVxcdTBBQjRcXHUwQUJBXFx1MEFCQlxcdTBBQzZcXHUwQUNBXFx1MEFDRVxcdTBBQ0ZcXHUwQUQxLVxcdTBBREZcXHUwQUU0XFx1MEFFNVxcdTBBRjItXFx1MEFGOFxcdTBCMDBcXHUwQjA0XFx1MEIwRFxcdTBCMEVcXHUwQjExXFx1MEIxMlxcdTBCMjlcXHUwQjMxXFx1MEIzNFxcdTBCM0FcXHUwQjNCXFx1MEI0NVxcdTBCNDZcXHUwQjQ5XFx1MEI0QVxcdTBCNEUtXFx1MEI1NFxcdTBCNTgtXFx1MEI1QlxcdTBCNUVcXHUwQjY0XFx1MEI2NVxcdTBCNzgtXFx1MEI4MVxcdTBCODRcXHUwQjhCLVxcdTBCOERcXHUwQjkxXFx1MEI5Ni1cXHUwQjk4XFx1MEI5QlxcdTBCOURcXHUwQkEwLVxcdTBCQTJcXHUwQkE1LVxcdTBCQTdcXHUwQkFCLVxcdTBCQURcXHUwQkJBLVxcdTBCQkRcXHUwQkMzLVxcdTBCQzVcXHUwQkM5XFx1MEJDRVxcdTBCQ0ZcXHUwQkQxLVxcdTBCRDZcXHUwQkQ4LVxcdTBCRTVcXHUwQkZCLVxcdTBCRkZcXHUwQzBEXFx1MEMxMVxcdTBDMjlcXHUwQzNBLVxcdTBDM0NcXHUwQzQ1XFx1MEM0OVxcdTBDNEUtXFx1MEM1NFxcdTBDNTdcXHUwQzVCLVxcdTBDNUZcXHUwQzY0XFx1MEM2NVxcdTBDNzAtXFx1MEM3NlxcdTBDOERcXHUwQzkxXFx1MENBOVxcdTBDQjRcXHUwQ0JBXFx1MENCQlxcdTBDQzVcXHUwQ0M5XFx1MENDRS1cXHUwQ0Q0XFx1MENENy1cXHUwQ0REXFx1MENERlxcdTBDRTRcXHUwQ0U1XFx1MENGMFxcdTBDRjMtXFx1MENGRlxcdTBEMERcXHUwRDExXFx1MEQ0NVxcdTBENDlcXHUwRDUwLVxcdTBENTNcXHUwRDY0XFx1MEQ2NVxcdTBEODBcXHUwRDg0XFx1MEQ5Ny1cXHUwRDk5XFx1MERCMlxcdTBEQkNcXHUwREJFXFx1MERCRlxcdTBEQzctXFx1MERDOVxcdTBEQ0ItXFx1MERDRVxcdTBERDVcXHUwREQ3XFx1MERFMC1cXHUwREU1XFx1MERGMFxcdTBERjFcXHUwREY1LVxcdTBFMDBcXHUwRTNCLVxcdTBFM0VcXHUwRTVDLVxcdTBFODBcXHUwRTgzXFx1MEU4NVxcdTBFOEJcXHUwRUE0XFx1MEVBNlxcdTBFQkVcXHUwRUJGXFx1MEVDNVxcdTBFQzdcXHUwRUNFXFx1MEVDRlxcdTBFREFcXHUwRURCXFx1MEVFMC1cXHUwRUZGXFx1MEY0OFxcdTBGNkQtXFx1MEY3MFxcdTBGOThcXHUwRkJEXFx1MEZDRFxcdTBGREItXFx1MEZGRlxcdTEwQzZcXHUxMEM4LVxcdTEwQ0NcXHUxMENFXFx1MTBDRlxcdTEyNDlcXHUxMjRFXFx1MTI0RlxcdTEyNTdcXHUxMjU5XFx1MTI1RVxcdTEyNUZcXHUxMjg5XFx1MTI4RVxcdTEyOEZcXHUxMkIxXFx1MTJCNlxcdTEyQjdcXHUxMkJGXFx1MTJDMVxcdTEyQzZcXHUxMkM3XFx1MTJEN1xcdTEzMTFcXHUxMzE2XFx1MTMxN1xcdTEzNUJcXHUxMzVDXFx1MTM3RC1cXHUxMzdGXFx1MTM5QS1cXHUxMzlGXFx1MTNGNlxcdTEzRjdcXHUxM0ZFXFx1MTNGRlxcdTE2OUQtXFx1MTY5RlxcdTE2RjktXFx1MTZGRlxcdTE3MERcXHUxNzE1LVxcdTE3MUZcXHUxNzM3LVxcdTE3M0ZcXHUxNzU0LVxcdTE3NUZcXHUxNzZEXFx1MTc3MVxcdTE3NzQtXFx1MTc3RlxcdTE3REVcXHUxN0RGXFx1MTdFQS1cXHUxN0VGXFx1MTdGQS1cXHUxN0ZGXFx1MTgwRlxcdTE4MUEtXFx1MTgxRlxcdTE4NzktXFx1MTg3RlxcdTE4QUItXFx1MThBRlxcdTE4RjYtXFx1MThGRlxcdTE5MUZcXHUxOTJDLVxcdTE5MkZcXHUxOTNDLVxcdTE5M0ZcXHUxOTQxLVxcdTE5NDNcXHUxOTZFXFx1MTk2RlxcdTE5NzUtXFx1MTk3RlxcdTE5QUMtXFx1MTlBRlxcdTE5Q0EtXFx1MTlDRlxcdTE5REItXFx1MTlERFxcdTFBMUNcXHUxQTFEXFx1MUE1RlxcdTFBN0RcXHUxQTdFXFx1MUE4QS1cXHUxQThGXFx1MUE5QS1cXHUxQTlGXFx1MUFBRVxcdTFBQUZcXHUxQUMxLVxcdTFBRkZcXHUxQjRDLVxcdTFCNEZcXHUxQjdELVxcdTFCN0ZcXHUxQkY0LVxcdTFCRkJcXHUxQzM4LVxcdTFDM0FcXHUxQzRBLVxcdTFDNENcXHUxQzg5LVxcdTFDOEZcXHUxQ0JCXFx1MUNCQ1xcdTFDQzgtXFx1MUNDRlxcdTFDRkItXFx1MUNGRlxcdTFERkFcXHUxRjE2XFx1MUYxN1xcdTFGMUVcXHUxRjFGXFx1MUY0NlxcdTFGNDdcXHUxRjRFXFx1MUY0RlxcdTFGNThcXHUxRjVBXFx1MUY1Q1xcdTFGNUVcXHUxRjdFXFx1MUY3RlxcdTFGQjVcXHUxRkM1XFx1MUZENFxcdTFGRDVcXHUxRkRDXFx1MUZGMFxcdTFGRjFcXHUxRkY1XFx1MUZGRlxcdTIwNjVcXHUyMDcyXFx1MjA3M1xcdTIwOEZcXHUyMDlELVxcdTIwOUZcXHUyMEMwLVxcdTIwQ0ZcXHUyMEYxLVxcdTIwRkZcXHUyMThDLVxcdTIxOEZcXHUyNDI3LVxcdTI0M0ZcXHUyNDRCLVxcdTI0NUZcXHUyQjc0XFx1MkI3NVxcdTJCOTZcXHUyQzJGXFx1MkM1RlxcdTJDRjQtXFx1MkNGOFxcdTJEMjZcXHUyRDI4LVxcdTJEMkNcXHUyRDJFXFx1MkQyRlxcdTJENjgtXFx1MkQ2RVxcdTJENzEtXFx1MkQ3RVxcdTJEOTctXFx1MkQ5RlxcdTJEQTdcXHUyREFGXFx1MkRCN1xcdTJEQkZcXHUyREM3XFx1MkRDRlxcdTJERDdcXHUyRERGXFx1MkU1My1cXHUyRTdGXFx1MkU5QVxcdTJFRjQtXFx1MkVGRlxcdTJGRDYtXFx1MkZFRlxcdTJGRkMtXFx1MkZGRlxcdTMwNDBcXHUzMDk3XFx1MzA5OFxcdTMxMDAtXFx1MzEwNFxcdTMxMzBcXHUzMThGXFx1MzFFNC1cXHUzMUVGXFx1MzIxRlxcdTlGRkQtXFx1OUZGRlxcdUE0OEQtXFx1QTQ4RlxcdUE0QzctXFx1QTRDRlxcdUE2MkMtXFx1QTYzRlxcdUE2RjgtXFx1QTZGRlxcdUE3QzBcXHVBN0MxXFx1QTdDQi1cXHVBN0Y0XFx1QTgyRC1cXHVBODJGXFx1QTgzQS1cXHVBODNGXFx1QTg3OC1cXHVBODdGXFx1QThDNi1cXHVBOENEXFx1QThEQS1cXHVBOERGXFx1QTk1NC1cXHVBOTVFXFx1QTk3RC1cXHVBOTdGXFx1QTlDRVxcdUE5REEtXFx1QTlERFxcdUE5RkZcXHVBQTM3LVxcdUFBM0ZcXHVBQTRFXFx1QUE0RlxcdUFBNUFcXHVBQTVCXFx1QUFDMy1cXHVBQURBXFx1QUFGNy1cXHVBQjAwXFx1QUIwN1xcdUFCMDhcXHVBQjBGXFx1QUIxMFxcdUFCMTctXFx1QUIxRlxcdUFCMjdcXHVBQjJGXFx1QUI2Qy1cXHVBQjZGXFx1QUJFRVxcdUFCRUZcXHVBQkZBLVxcdUFCRkZcXHVEN0E0LVxcdUQ3QUZcXHVEN0M3LVxcdUQ3Q0FcXHVEN0ZDLVxcdUQ3RkZcXHVGQTZFXFx1RkE2RlxcdUZBREEtXFx1RkFGRlxcdUZCMDctXFx1RkIxMlxcdUZCMTgtXFx1RkIxQ1xcdUZCMzdcXHVGQjNEXFx1RkIzRlxcdUZCNDJcXHVGQjQ1XFx1RkJDMi1cXHVGQkQyXFx1RkQ0MC1cXHVGRDRGXFx1RkQ5MFxcdUZEOTFcXHVGREM4LVxcdUZERUZcXHVGREZFXFx1RkRGRlxcdUZFMUEtXFx1RkUxRlxcdUZFNTNcXHVGRTY3XFx1RkU2Qy1cXHVGRTZGXFx1RkU3NVxcdUZFRkRcXHVGRUZFXFx1RkYwMFxcdUZGQkYtXFx1RkZDMVxcdUZGQzhcXHVGRkM5XFx1RkZEMFxcdUZGRDFcXHVGRkQ4XFx1RkZEOVxcdUZGREQtXFx1RkZERlxcdUZGRTdcXHVGRkVGLVxcdUZGRjhcXHVGRkZFXFx1RkZGRicsXG4gICAgICAgICdhc3RyYWwnOiAnXFx1RDgwMFtcXHVEQzBDXFx1REMyN1xcdURDM0JcXHVEQzNFXFx1REM0RVxcdURDNEZcXHVEQzVFLVxcdURDN0ZcXHVEQ0ZCLVxcdURDRkZcXHVERDAzLVxcdUREMDZcXHVERDM0LVxcdUREMzZcXHVERDhGXFx1REQ5RC1cXHVERDlGXFx1RERBMS1cXHVERENGXFx1RERGRS1cXHVERTdGXFx1REU5RC1cXHVERTlGXFx1REVEMS1cXHVERURGXFx1REVGQy1cXHVERUZGXFx1REYyNC1cXHVERjJDXFx1REY0Qi1cXHVERjRGXFx1REY3Qi1cXHVERjdGXFx1REY5RVxcdURGQzQtXFx1REZDN1xcdURGRDYtXFx1REZGRl18XFx1RDgwMVtcXHVEQzlFXFx1REM5RlxcdURDQUEtXFx1RENBRlxcdURDRDQtXFx1RENEN1xcdURDRkMtXFx1RENGRlxcdUREMjgtXFx1REQyRlxcdURENjQtXFx1REQ2RVxcdURENzAtXFx1RERGRlxcdURGMzctXFx1REYzRlxcdURGNTYtXFx1REY1RlxcdURGNjgtXFx1REZGRl18XFx1RDgwMltcXHVEQzA2XFx1REMwN1xcdURDMDlcXHVEQzM2XFx1REMzOS1cXHVEQzNCXFx1REMzRFxcdURDM0VcXHVEQzU2XFx1REM5Ri1cXHVEQ0E2XFx1RENCMC1cXHVEQ0RGXFx1RENGM1xcdURDRjYtXFx1RENGQVxcdUREMUMtXFx1REQxRVxcdUREM0EtXFx1REQzRVxcdURENDAtXFx1REQ3RlxcdUREQjgtXFx1RERCQlxcdURERDBcXHVEREQxXFx1REUwNFxcdURFMDctXFx1REUwQlxcdURFMTRcXHVERTE4XFx1REUzNlxcdURFMzdcXHVERTNCLVxcdURFM0VcXHVERTQ5LVxcdURFNEZcXHVERTU5LVxcdURFNUZcXHVERUEwLVxcdURFQkZcXHVERUU3LVxcdURFRUFcXHVERUY3LVxcdURFRkZcXHVERjM2LVxcdURGMzhcXHVERjU2XFx1REY1N1xcdURGNzMtXFx1REY3N1xcdURGOTItXFx1REY5OFxcdURGOUQtXFx1REZBOFxcdURGQjAtXFx1REZGRl18XFx1RDgwM1tcXHVEQzQ5LVxcdURDN0ZcXHVEQ0IzLVxcdURDQkZcXHVEQ0YzLVxcdURDRjlcXHVERDI4LVxcdUREMkZcXHVERDNBLVxcdURFNUZcXHVERTdGXFx1REVBQVxcdURFQUVcXHVERUFGXFx1REVCMi1cXHVERUZGXFx1REYyOC1cXHVERjJGXFx1REY1QS1cXHVERkFGXFx1REZDQy1cXHVERkRGXFx1REZGNy1cXHVERkZGXXxcXHVEODA0W1xcdURDNEUtXFx1REM1MVxcdURDNzAtXFx1REM3RVxcdURDQzItXFx1RENDQ1xcdURDQ0VcXHVEQ0NGXFx1RENFOS1cXHVEQ0VGXFx1RENGQS1cXHVEQ0ZGXFx1REQzNVxcdURENDgtXFx1REQ0RlxcdURENzctXFx1REQ3RlxcdURERTBcXHVEREY1LVxcdURERkZcXHVERTEyXFx1REUzRi1cXHVERTdGXFx1REU4N1xcdURFODlcXHVERThFXFx1REU5RVxcdURFQUEtXFx1REVBRlxcdURFRUItXFx1REVFRlxcdURFRkEtXFx1REVGRlxcdURGMDRcXHVERjBEXFx1REYwRVxcdURGMTFcXHVERjEyXFx1REYyOVxcdURGMzFcXHVERjM0XFx1REYzQVxcdURGNDVcXHVERjQ2XFx1REY0OVxcdURGNEFcXHVERjRFXFx1REY0RlxcdURGNTEtXFx1REY1NlxcdURGNTgtXFx1REY1Q1xcdURGNjRcXHVERjY1XFx1REY2RC1cXHVERjZGXFx1REY3NS1cXHVERkZGXXxcXHVEODA1W1xcdURDNUNcXHVEQzYyLVxcdURDN0ZcXHVEQ0M4LVxcdURDQ0ZcXHVEQ0RBLVxcdUREN0ZcXHVEREI2XFx1RERCN1xcdUREREUtXFx1RERGRlxcdURFNDUtXFx1REU0RlxcdURFNUEtXFx1REU1RlxcdURFNkQtXFx1REU3RlxcdURFQjktXFx1REVCRlxcdURFQ0EtXFx1REVGRlxcdURGMUJcXHVERjFDXFx1REYyQy1cXHVERjJGXFx1REY0MC1cXHVERkZGXXxcXHVEODA2W1xcdURDM0MtXFx1REM5RlxcdURDRjMtXFx1RENGRVxcdUREMDdcXHVERDA4XFx1REQwQVxcdUREMEJcXHVERDE0XFx1REQxN1xcdUREMzZcXHVERDM5XFx1REQzQVxcdURENDctXFx1REQ0RlxcdURENUEtXFx1REQ5RlxcdUREQThcXHVEREE5XFx1REREOFxcdURERDlcXHVEREU1LVxcdURERkZcXHVERTQ4LVxcdURFNEZcXHVERUEzLVxcdURFQkZcXHVERUY5LVxcdURGRkZdfFxcdUQ4MDdbXFx1REMwOVxcdURDMzdcXHVEQzQ2LVxcdURDNEZcXHVEQzZELVxcdURDNkZcXHVEQzkwXFx1REM5MVxcdURDQThcXHVEQ0I3LVxcdURDRkZcXHVERDA3XFx1REQwQVxcdUREMzctXFx1REQzOVxcdUREM0JcXHVERDNFXFx1REQ0OC1cXHVERDRGXFx1REQ1QS1cXHVERDVGXFx1REQ2NlxcdURENjlcXHVERDhGXFx1REQ5MlxcdUREOTktXFx1REQ5RlxcdUREQUEtXFx1REVERlxcdURFRjktXFx1REZBRlxcdURGQjEtXFx1REZCRlxcdURGRjItXFx1REZGRV18XFx1RDgwOFtcXHVERjlBLVxcdURGRkZdfFxcdUQ4MDlbXFx1REM2RlxcdURDNzUtXFx1REM3RlxcdURENDQtXFx1REZGRl18W1xcdUQ4MEFcXHVEODBCXFx1RDgwRS1cXHVEODEwXFx1RDgxMi1cXHVEODE5XFx1RDgyNC1cXHVEODJCXFx1RDgyRFxcdUQ4MkVcXHVEODMwLVxcdUQ4MzNcXHVEODM3XFx1RDgzOVxcdUQ4M0ZcXHVEODdCLVxcdUQ4N0RcXHVEODdGXFx1RDg4NS1cXHVEQjNGXFx1REI0MS1cXHVEQjdGXVtcXHVEQzAwLVxcdURGRkZdfFxcdUQ4MERbXFx1REMyRlxcdURDMzktXFx1REZGRl18XFx1RDgxMVtcXHVERTQ3LVxcdURGRkZdfFxcdUQ4MUFbXFx1REUzOS1cXHVERTNGXFx1REU1RlxcdURFNkEtXFx1REU2RFxcdURFNzAtXFx1REVDRlxcdURFRUVcXHVERUVGXFx1REVGNi1cXHVERUZGXFx1REY0Ni1cXHVERjRGXFx1REY1QVxcdURGNjJcXHVERjc4LVxcdURGN0NcXHVERjkwLVxcdURGRkZdfFxcdUQ4MUJbXFx1REMwMC1cXHVERTNGXFx1REU5Qi1cXHVERUZGXFx1REY0Qi1cXHVERjRFXFx1REY4OC1cXHVERjhFXFx1REZBMC1cXHVERkRGXFx1REZFNS1cXHVERkVGXFx1REZGMi1cXHVERkZGXXxcXHVEODIxW1xcdURGRjgtXFx1REZGRl18XFx1RDgyM1tcXHVEQ0Q2LVxcdURDRkZcXHVERDA5LVxcdURGRkZdfFxcdUQ4MkNbXFx1REQxRi1cXHVERDRGXFx1REQ1My1cXHVERDYzXFx1REQ2OC1cXHVERDZGXFx1REVGQy1cXHVERkZGXXxcXHVEODJGW1xcdURDNkItXFx1REM2RlxcdURDN0QtXFx1REM3RlxcdURDODktXFx1REM4RlxcdURDOUFcXHVEQzlCXFx1RENBNC1cXHVERkZGXXxcXHVEODM0W1xcdURDRjYtXFx1RENGRlxcdUREMjdcXHVERDI4XFx1RERFOS1cXHVEREZGXFx1REU0Ni1cXHVERURGXFx1REVGNC1cXHVERUZGXFx1REY1Ny1cXHVERjVGXFx1REY3OS1cXHVERkZGXXxcXHVEODM1W1xcdURDNTVcXHVEQzlEXFx1RENBMFxcdURDQTFcXHVEQ0EzXFx1RENBNFxcdURDQTdcXHVEQ0E4XFx1RENBRFxcdURDQkFcXHVEQ0JDXFx1RENDNFxcdUREMDZcXHVERDBCXFx1REQwQ1xcdUREMTVcXHVERDFEXFx1REQzQVxcdUREM0ZcXHVERDQ1XFx1REQ0Ny1cXHVERDQ5XFx1REQ1MVxcdURFQTZcXHVERUE3XFx1REZDQ1xcdURGQ0RdfFxcdUQ4MzZbXFx1REU4Qy1cXHVERTlBXFx1REVBMFxcdURFQjAtXFx1REZGRl18XFx1RDgzOFtcXHVEQzA3XFx1REMxOVxcdURDMUFcXHVEQzIyXFx1REMyNVxcdURDMkItXFx1RENGRlxcdUREMkQtXFx1REQyRlxcdUREM0VcXHVERDNGXFx1REQ0QS1cXHVERDREXFx1REQ1MC1cXHVERUJGXFx1REVGQS1cXHVERUZFXFx1REYwMC1cXHVERkZGXXxcXHVEODNBW1xcdURDQzVcXHVEQ0M2XFx1RENENy1cXHVEQ0ZGXFx1REQ0Qy1cXHVERDRGXFx1REQ1QS1cXHVERDVEXFx1REQ2MC1cXHVERkZGXXxcXHVEODNCW1xcdURDMDAtXFx1REM3MFxcdURDQjUtXFx1REQwMFxcdUREM0UtXFx1RERGRlxcdURFMDRcXHVERTIwXFx1REUyM1xcdURFMjVcXHVERTI2XFx1REUyOFxcdURFMzNcXHVERTM4XFx1REUzQVxcdURFM0MtXFx1REU0MVxcdURFNDMtXFx1REU0NlxcdURFNDhcXHVERTRBXFx1REU0Q1xcdURFNTBcXHVERTUzXFx1REU1NVxcdURFNTZcXHVERTU4XFx1REU1QVxcdURFNUNcXHVERTVFXFx1REU2MFxcdURFNjNcXHVERTY1XFx1REU2NlxcdURFNkJcXHVERTczXFx1REU3OFxcdURFN0RcXHVERTdGXFx1REU4QVxcdURFOUMtXFx1REVBMFxcdURFQTRcXHVERUFBXFx1REVCQy1cXHVERUVGXFx1REVGMi1cXHVERkZGXXxcXHVEODNDW1xcdURDMkMtXFx1REMyRlxcdURDOTQtXFx1REM5RlxcdURDQUZcXHVEQ0IwXFx1RENDMFxcdURDRDBcXHVEQ0Y2LVxcdURDRkZcXHVEREFFLVxcdURERTVcXHVERTAzLVxcdURFMEZcXHVERTNDLVxcdURFM0ZcXHVERTQ5LVxcdURFNEZcXHVERTUyLVxcdURFNUZcXHVERTY2LVxcdURFRkZdfFxcdUQ4M0RbXFx1REVEOC1cXHVERURGXFx1REVFRC1cXHVERUVGXFx1REVGRC1cXHVERUZGXFx1REY3NC1cXHVERjdGXFx1REZEOS1cXHVERkRGXFx1REZFQy1cXHVERkZGXXxcXHVEODNFW1xcdURDMEMtXFx1REMwRlxcdURDNDgtXFx1REM0RlxcdURDNUEtXFx1REM1RlxcdURDODgtXFx1REM4RlxcdURDQUVcXHVEQ0FGXFx1RENCMi1cXHVEQ0ZGXFx1REQ3OVxcdUREQ0NcXHVERTU0LVxcdURFNUZcXHVERTZFXFx1REU2RlxcdURFNzUtXFx1REU3N1xcdURFN0ItXFx1REU3RlxcdURFODctXFx1REU4RlxcdURFQTktXFx1REVBRlxcdURFQjctXFx1REVCRlxcdURFQzMtXFx1REVDRlxcdURFRDctXFx1REVGRlxcdURGOTNcXHVERkNCLVxcdURGRUZcXHVERkZBLVxcdURGRkZdfFxcdUQ4NjlbXFx1REVERS1cXHVERUZGXXxcXHVEODZEW1xcdURGMzUtXFx1REYzRl18XFx1RDg2RVtcXHVEQzFFXFx1REMxRl18XFx1RDg3M1tcXHVERUEyLVxcdURFQUZdfFxcdUQ4N0FbXFx1REZFMS1cXHVERkZGXXxcXHVEODdFW1xcdURFMUUtXFx1REZGRl18XFx1RDg4NFtcXHVERjRCLVxcdURGRkZdfFxcdURCNDBbXFx1REMwMFxcdURDMDItXFx1REMxRlxcdURDODAtXFx1RENGRlxcdURERjAtXFx1REZGRl18W1xcdURCQkZcXHVEQkZGXVtcXHVERkZFXFx1REZGRl0nXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ0NvJyxcbiAgICAgICAgJ2FsaWFzJzogJ1ByaXZhdGVfVXNlJyxcbiAgICAgICAgJ2JtcCc6ICdcXHVFMDAwLVxcdUY4RkYnLFxuICAgICAgICAnYXN0cmFsJzogJ1tcXHVEQjgwLVxcdURCQkVcXHVEQkMwLVxcdURCRkVdW1xcdURDMDAtXFx1REZGRl18W1xcdURCQkZcXHVEQkZGXVtcXHVEQzAwLVxcdURGRkRdJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdDcycsXG4gICAgICAgICdhbGlhcyc6ICdTdXJyb2dhdGUnLFxuICAgICAgICAnYm1wJzogJ1xcdUQ4MDAtXFx1REZGRidcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnTCcsXG4gICAgICAgICdhbGlhcyc6ICdMZXR0ZXInLFxuICAgICAgICAnYm1wJzogJ0EtWmEtelxceEFBXFx4QjVcXHhCQVxceEMwLVxceEQ2XFx4RDgtXFx4RjZcXHhGOC1cXHUwMkMxXFx1MDJDNi1cXHUwMkQxXFx1MDJFMC1cXHUwMkU0XFx1MDJFQ1xcdTAyRUVcXHUwMzcwLVxcdTAzNzRcXHUwMzc2XFx1MDM3N1xcdTAzN0EtXFx1MDM3RFxcdTAzN0ZcXHUwMzg2XFx1MDM4OC1cXHUwMzhBXFx1MDM4Q1xcdTAzOEUtXFx1MDNBMVxcdTAzQTMtXFx1MDNGNVxcdTAzRjctXFx1MDQ4MVxcdTA0OEEtXFx1MDUyRlxcdTA1MzEtXFx1MDU1NlxcdTA1NTlcXHUwNTYwLVxcdTA1ODhcXHUwNUQwLVxcdTA1RUFcXHUwNUVGLVxcdTA1RjJcXHUwNjIwLVxcdTA2NEFcXHUwNjZFXFx1MDY2RlxcdTA2NzEtXFx1MDZEM1xcdTA2RDVcXHUwNkU1XFx1MDZFNlxcdTA2RUVcXHUwNkVGXFx1MDZGQS1cXHUwNkZDXFx1MDZGRlxcdTA3MTBcXHUwNzEyLVxcdTA3MkZcXHUwNzRELVxcdTA3QTVcXHUwN0IxXFx1MDdDQS1cXHUwN0VBXFx1MDdGNFxcdTA3RjVcXHUwN0ZBXFx1MDgwMC1cXHUwODE1XFx1MDgxQVxcdTA4MjRcXHUwODI4XFx1MDg0MC1cXHUwODU4XFx1MDg2MC1cXHUwODZBXFx1MDhBMC1cXHUwOEI0XFx1MDhCNi1cXHUwOEM3XFx1MDkwNC1cXHUwOTM5XFx1MDkzRFxcdTA5NTBcXHUwOTU4LVxcdTA5NjFcXHUwOTcxLVxcdTA5ODBcXHUwOTg1LVxcdTA5OENcXHUwOThGXFx1MDk5MFxcdTA5OTMtXFx1MDlBOFxcdTA5QUEtXFx1MDlCMFxcdTA5QjJcXHUwOUI2LVxcdTA5QjlcXHUwOUJEXFx1MDlDRVxcdTA5RENcXHUwOUREXFx1MDlERi1cXHUwOUUxXFx1MDlGMFxcdTA5RjFcXHUwOUZDXFx1MEEwNS1cXHUwQTBBXFx1MEEwRlxcdTBBMTBcXHUwQTEzLVxcdTBBMjhcXHUwQTJBLVxcdTBBMzBcXHUwQTMyXFx1MEEzM1xcdTBBMzVcXHUwQTM2XFx1MEEzOFxcdTBBMzlcXHUwQTU5LVxcdTBBNUNcXHUwQTVFXFx1MEE3Mi1cXHUwQTc0XFx1MEE4NS1cXHUwQThEXFx1MEE4Ri1cXHUwQTkxXFx1MEE5My1cXHUwQUE4XFx1MEFBQS1cXHUwQUIwXFx1MEFCMlxcdTBBQjNcXHUwQUI1LVxcdTBBQjlcXHUwQUJEXFx1MEFEMFxcdTBBRTBcXHUwQUUxXFx1MEFGOVxcdTBCMDUtXFx1MEIwQ1xcdTBCMEZcXHUwQjEwXFx1MEIxMy1cXHUwQjI4XFx1MEIyQS1cXHUwQjMwXFx1MEIzMlxcdTBCMzNcXHUwQjM1LVxcdTBCMzlcXHUwQjNEXFx1MEI1Q1xcdTBCNURcXHUwQjVGLVxcdTBCNjFcXHUwQjcxXFx1MEI4M1xcdTBCODUtXFx1MEI4QVxcdTBCOEUtXFx1MEI5MFxcdTBCOTItXFx1MEI5NVxcdTBCOTlcXHUwQjlBXFx1MEI5Q1xcdTBCOUVcXHUwQjlGXFx1MEJBM1xcdTBCQTRcXHUwQkE4LVxcdTBCQUFcXHUwQkFFLVxcdTBCQjlcXHUwQkQwXFx1MEMwNS1cXHUwQzBDXFx1MEMwRS1cXHUwQzEwXFx1MEMxMi1cXHUwQzI4XFx1MEMyQS1cXHUwQzM5XFx1MEMzRFxcdTBDNTgtXFx1MEM1QVxcdTBDNjBcXHUwQzYxXFx1MEM4MFxcdTBDODUtXFx1MEM4Q1xcdTBDOEUtXFx1MEM5MFxcdTBDOTItXFx1MENBOFxcdTBDQUEtXFx1MENCM1xcdTBDQjUtXFx1MENCOVxcdTBDQkRcXHUwQ0RFXFx1MENFMFxcdTBDRTFcXHUwQ0YxXFx1MENGMlxcdTBEMDQtXFx1MEQwQ1xcdTBEMEUtXFx1MEQxMFxcdTBEMTItXFx1MEQzQVxcdTBEM0RcXHUwRDRFXFx1MEQ1NC1cXHUwRDU2XFx1MEQ1Ri1cXHUwRDYxXFx1MEQ3QS1cXHUwRDdGXFx1MEQ4NS1cXHUwRDk2XFx1MEQ5QS1cXHUwREIxXFx1MERCMy1cXHUwREJCXFx1MERCRFxcdTBEQzAtXFx1MERDNlxcdTBFMDEtXFx1MEUzMFxcdTBFMzJcXHUwRTMzXFx1MEU0MC1cXHUwRTQ2XFx1MEU4MVxcdTBFODJcXHUwRTg0XFx1MEU4Ni1cXHUwRThBXFx1MEU4Qy1cXHUwRUEzXFx1MEVBNVxcdTBFQTctXFx1MEVCMFxcdTBFQjJcXHUwRUIzXFx1MEVCRFxcdTBFQzAtXFx1MEVDNFxcdTBFQzZcXHUwRURDLVxcdTBFREZcXHUwRjAwXFx1MEY0MC1cXHUwRjQ3XFx1MEY0OS1cXHUwRjZDXFx1MEY4OC1cXHUwRjhDXFx1MTAwMC1cXHUxMDJBXFx1MTAzRlxcdTEwNTAtXFx1MTA1NVxcdTEwNUEtXFx1MTA1RFxcdTEwNjFcXHUxMDY1XFx1MTA2NlxcdTEwNkUtXFx1MTA3MFxcdTEwNzUtXFx1MTA4MVxcdTEwOEVcXHUxMEEwLVxcdTEwQzVcXHUxMEM3XFx1MTBDRFxcdTEwRDAtXFx1MTBGQVxcdTEwRkMtXFx1MTI0OFxcdTEyNEEtXFx1MTI0RFxcdTEyNTAtXFx1MTI1NlxcdTEyNThcXHUxMjVBLVxcdTEyNURcXHUxMjYwLVxcdTEyODhcXHUxMjhBLVxcdTEyOERcXHUxMjkwLVxcdTEyQjBcXHUxMkIyLVxcdTEyQjVcXHUxMkI4LVxcdTEyQkVcXHUxMkMwXFx1MTJDMi1cXHUxMkM1XFx1MTJDOC1cXHUxMkQ2XFx1MTJEOC1cXHUxMzEwXFx1MTMxMi1cXHUxMzE1XFx1MTMxOC1cXHUxMzVBXFx1MTM4MC1cXHUxMzhGXFx1MTNBMC1cXHUxM0Y1XFx1MTNGOC1cXHUxM0ZEXFx1MTQwMS1cXHUxNjZDXFx1MTY2Ri1cXHUxNjdGXFx1MTY4MS1cXHUxNjlBXFx1MTZBMC1cXHUxNkVBXFx1MTZGMS1cXHUxNkY4XFx1MTcwMC1cXHUxNzBDXFx1MTcwRS1cXHUxNzExXFx1MTcyMC1cXHUxNzMxXFx1MTc0MC1cXHUxNzUxXFx1MTc2MC1cXHUxNzZDXFx1MTc2RS1cXHUxNzcwXFx1MTc4MC1cXHUxN0IzXFx1MTdEN1xcdTE3RENcXHUxODIwLVxcdTE4NzhcXHUxODgwLVxcdTE4ODRcXHUxODg3LVxcdTE4QThcXHUxOEFBXFx1MThCMC1cXHUxOEY1XFx1MTkwMC1cXHUxOTFFXFx1MTk1MC1cXHUxOTZEXFx1MTk3MC1cXHUxOTc0XFx1MTk4MC1cXHUxOUFCXFx1MTlCMC1cXHUxOUM5XFx1MUEwMC1cXHUxQTE2XFx1MUEyMC1cXHUxQTU0XFx1MUFBN1xcdTFCMDUtXFx1MUIzM1xcdTFCNDUtXFx1MUI0QlxcdTFCODMtXFx1MUJBMFxcdTFCQUVcXHUxQkFGXFx1MUJCQS1cXHUxQkU1XFx1MUMwMC1cXHUxQzIzXFx1MUM0RC1cXHUxQzRGXFx1MUM1QS1cXHUxQzdEXFx1MUM4MC1cXHUxQzg4XFx1MUM5MC1cXHUxQ0JBXFx1MUNCRC1cXHUxQ0JGXFx1MUNFOS1cXHUxQ0VDXFx1MUNFRS1cXHUxQ0YzXFx1MUNGNVxcdTFDRjZcXHUxQ0ZBXFx1MUQwMC1cXHUxREJGXFx1MUUwMC1cXHUxRjE1XFx1MUYxOC1cXHUxRjFEXFx1MUYyMC1cXHUxRjQ1XFx1MUY0OC1cXHUxRjREXFx1MUY1MC1cXHUxRjU3XFx1MUY1OVxcdTFGNUJcXHUxRjVEXFx1MUY1Ri1cXHUxRjdEXFx1MUY4MC1cXHUxRkI0XFx1MUZCNi1cXHUxRkJDXFx1MUZCRVxcdTFGQzItXFx1MUZDNFxcdTFGQzYtXFx1MUZDQ1xcdTFGRDAtXFx1MUZEM1xcdTFGRDYtXFx1MUZEQlxcdTFGRTAtXFx1MUZFQ1xcdTFGRjItXFx1MUZGNFxcdTFGRjYtXFx1MUZGQ1xcdTIwNzFcXHUyMDdGXFx1MjA5MC1cXHUyMDlDXFx1MjEwMlxcdTIxMDdcXHUyMTBBLVxcdTIxMTNcXHUyMTE1XFx1MjExOS1cXHUyMTFEXFx1MjEyNFxcdTIxMjZcXHUyMTI4XFx1MjEyQS1cXHUyMTJEXFx1MjEyRi1cXHUyMTM5XFx1MjEzQy1cXHUyMTNGXFx1MjE0NS1cXHUyMTQ5XFx1MjE0RVxcdTIxODNcXHUyMTg0XFx1MkMwMC1cXHUyQzJFXFx1MkMzMC1cXHUyQzVFXFx1MkM2MC1cXHUyQ0U0XFx1MkNFQi1cXHUyQ0VFXFx1MkNGMlxcdTJDRjNcXHUyRDAwLVxcdTJEMjVcXHUyRDI3XFx1MkQyRFxcdTJEMzAtXFx1MkQ2N1xcdTJENkZcXHUyRDgwLVxcdTJEOTZcXHUyREEwLVxcdTJEQTZcXHUyREE4LVxcdTJEQUVcXHUyREIwLVxcdTJEQjZcXHUyREI4LVxcdTJEQkVcXHUyREMwLVxcdTJEQzZcXHUyREM4LVxcdTJEQ0VcXHUyREQwLVxcdTJERDZcXHUyREQ4LVxcdTJEREVcXHUyRTJGXFx1MzAwNVxcdTMwMDZcXHUzMDMxLVxcdTMwMzVcXHUzMDNCXFx1MzAzQ1xcdTMwNDEtXFx1MzA5NlxcdTMwOUQtXFx1MzA5RlxcdTMwQTEtXFx1MzBGQVxcdTMwRkMtXFx1MzBGRlxcdTMxMDUtXFx1MzEyRlxcdTMxMzEtXFx1MzE4RVxcdTMxQTAtXFx1MzFCRlxcdTMxRjAtXFx1MzFGRlxcdTM0MDAtXFx1NERCRlxcdTRFMDAtXFx1OUZGQ1xcdUEwMDAtXFx1QTQ4Q1xcdUE0RDAtXFx1QTRGRFxcdUE1MDAtXFx1QTYwQ1xcdUE2MTAtXFx1QTYxRlxcdUE2MkFcXHVBNjJCXFx1QTY0MC1cXHVBNjZFXFx1QTY3Ri1cXHVBNjlEXFx1QTZBMC1cXHVBNkU1XFx1QTcxNy1cXHVBNzFGXFx1QTcyMi1cXHVBNzg4XFx1QTc4Qi1cXHVBN0JGXFx1QTdDMi1cXHVBN0NBXFx1QTdGNS1cXHVBODAxXFx1QTgwMy1cXHVBODA1XFx1QTgwNy1cXHVBODBBXFx1QTgwQy1cXHVBODIyXFx1QTg0MC1cXHVBODczXFx1QTg4Mi1cXHVBOEIzXFx1QThGMi1cXHVBOEY3XFx1QThGQlxcdUE4RkRcXHVBOEZFXFx1QTkwQS1cXHVBOTI1XFx1QTkzMC1cXHVBOTQ2XFx1QTk2MC1cXHVBOTdDXFx1QTk4NC1cXHVBOUIyXFx1QTlDRlxcdUE5RTAtXFx1QTlFNFxcdUE5RTYtXFx1QTlFRlxcdUE5RkEtXFx1QTlGRVxcdUFBMDAtXFx1QUEyOFxcdUFBNDAtXFx1QUE0MlxcdUFBNDQtXFx1QUE0QlxcdUFBNjAtXFx1QUE3NlxcdUFBN0FcXHVBQTdFLVxcdUFBQUZcXHVBQUIxXFx1QUFCNVxcdUFBQjZcXHVBQUI5LVxcdUFBQkRcXHVBQUMwXFx1QUFDMlxcdUFBREItXFx1QUFERFxcdUFBRTAtXFx1QUFFQVxcdUFBRjItXFx1QUFGNFxcdUFCMDEtXFx1QUIwNlxcdUFCMDktXFx1QUIwRVxcdUFCMTEtXFx1QUIxNlxcdUFCMjAtXFx1QUIyNlxcdUFCMjgtXFx1QUIyRVxcdUFCMzAtXFx1QUI1QVxcdUFCNUMtXFx1QUI2OVxcdUFCNzAtXFx1QUJFMlxcdUFDMDAtXFx1RDdBM1xcdUQ3QjAtXFx1RDdDNlxcdUQ3Q0ItXFx1RDdGQlxcdUY5MDAtXFx1RkE2RFxcdUZBNzAtXFx1RkFEOVxcdUZCMDAtXFx1RkIwNlxcdUZCMTMtXFx1RkIxN1xcdUZCMURcXHVGQjFGLVxcdUZCMjhcXHVGQjJBLVxcdUZCMzZcXHVGQjM4LVxcdUZCM0NcXHVGQjNFXFx1RkI0MFxcdUZCNDFcXHVGQjQzXFx1RkI0NFxcdUZCNDYtXFx1RkJCMVxcdUZCRDMtXFx1RkQzRFxcdUZENTAtXFx1RkQ4RlxcdUZEOTItXFx1RkRDN1xcdUZERjAtXFx1RkRGQlxcdUZFNzAtXFx1RkU3NFxcdUZFNzYtXFx1RkVGQ1xcdUZGMjEtXFx1RkYzQVxcdUZGNDEtXFx1RkY1QVxcdUZGNjYtXFx1RkZCRVxcdUZGQzItXFx1RkZDN1xcdUZGQ0EtXFx1RkZDRlxcdUZGRDItXFx1RkZEN1xcdUZGREEtXFx1RkZEQycsXG4gICAgICAgICdhc3RyYWwnOiAnXFx1RDgwMFtcXHVEQzAwLVxcdURDMEJcXHVEQzBELVxcdURDMjZcXHVEQzI4LVxcdURDM0FcXHVEQzNDXFx1REMzRFxcdURDM0YtXFx1REM0RFxcdURDNTAtXFx1REM1RFxcdURDODAtXFx1RENGQVxcdURFODAtXFx1REU5Q1xcdURFQTAtXFx1REVEMFxcdURGMDAtXFx1REYxRlxcdURGMkQtXFx1REY0MFxcdURGNDItXFx1REY0OVxcdURGNTAtXFx1REY3NVxcdURGODAtXFx1REY5RFxcdURGQTAtXFx1REZDM1xcdURGQzgtXFx1REZDRl18XFx1RDgwMVtcXHVEQzAwLVxcdURDOURcXHVEQ0IwLVxcdURDRDNcXHVEQ0Q4LVxcdURDRkJcXHVERDAwLVxcdUREMjdcXHVERDMwLVxcdURENjNcXHVERTAwLVxcdURGMzZcXHVERjQwLVxcdURGNTVcXHVERjYwLVxcdURGNjddfFxcdUQ4MDJbXFx1REMwMC1cXHVEQzA1XFx1REMwOFxcdURDMEEtXFx1REMzNVxcdURDMzdcXHVEQzM4XFx1REMzQ1xcdURDM0YtXFx1REM1NVxcdURDNjAtXFx1REM3NlxcdURDODAtXFx1REM5RVxcdURDRTAtXFx1RENGMlxcdURDRjRcXHVEQ0Y1XFx1REQwMC1cXHVERDE1XFx1REQyMC1cXHVERDM5XFx1REQ4MC1cXHVEREI3XFx1RERCRVxcdUREQkZcXHVERTAwXFx1REUxMC1cXHVERTEzXFx1REUxNS1cXHVERTE3XFx1REUxOS1cXHVERTM1XFx1REU2MC1cXHVERTdDXFx1REU4MC1cXHVERTlDXFx1REVDMC1cXHVERUM3XFx1REVDOS1cXHVERUU0XFx1REYwMC1cXHVERjM1XFx1REY0MC1cXHVERjU1XFx1REY2MC1cXHVERjcyXFx1REY4MC1cXHVERjkxXXxcXHVEODAzW1xcdURDMDAtXFx1REM0OFxcdURDODAtXFx1RENCMlxcdURDQzAtXFx1RENGMlxcdUREMDAtXFx1REQyM1xcdURFODAtXFx1REVBOVxcdURFQjBcXHVERUIxXFx1REYwMC1cXHVERjFDXFx1REYyN1xcdURGMzAtXFx1REY0NVxcdURGQjAtXFx1REZDNFxcdURGRTAtXFx1REZGNl18XFx1RDgwNFtcXHVEQzAzLVxcdURDMzdcXHVEQzgzLVxcdURDQUZcXHVEQ0QwLVxcdURDRThcXHVERDAzLVxcdUREMjZcXHVERDQ0XFx1REQ0N1xcdURENTAtXFx1REQ3MlxcdURENzZcXHVERDgzLVxcdUREQjJcXHVEREMxLVxcdUREQzRcXHVERERBXFx1REREQ1xcdURFMDAtXFx1REUxMVxcdURFMTMtXFx1REUyQlxcdURFODAtXFx1REU4NlxcdURFODhcXHVERThBLVxcdURFOERcXHVERThGLVxcdURFOURcXHVERTlGLVxcdURFQThcXHVERUIwLVxcdURFREVcXHVERjA1LVxcdURGMENcXHVERjBGXFx1REYxMFxcdURGMTMtXFx1REYyOFxcdURGMkEtXFx1REYzMFxcdURGMzJcXHVERjMzXFx1REYzNS1cXHVERjM5XFx1REYzRFxcdURGNTBcXHVERjVELVxcdURGNjFdfFxcdUQ4MDVbXFx1REMwMC1cXHVEQzM0XFx1REM0Ny1cXHVEQzRBXFx1REM1Ri1cXHVEQzYxXFx1REM4MC1cXHVEQ0FGXFx1RENDNFxcdURDQzVcXHVEQ0M3XFx1REQ4MC1cXHVEREFFXFx1REREOC1cXHVERERCXFx1REUwMC1cXHVERTJGXFx1REU0NFxcdURFODAtXFx1REVBQVxcdURFQjhcXHVERjAwLVxcdURGMUFdfFxcdUQ4MDZbXFx1REMwMC1cXHVEQzJCXFx1RENBMC1cXHVEQ0RGXFx1RENGRi1cXHVERDA2XFx1REQwOVxcdUREMEMtXFx1REQxM1xcdUREMTVcXHVERDE2XFx1REQxOC1cXHVERDJGXFx1REQzRlxcdURENDFcXHVEREEwLVxcdUREQTdcXHVEREFBLVxcdURERDBcXHVEREUxXFx1RERFM1xcdURFMDBcXHVERTBCLVxcdURFMzJcXHVERTNBXFx1REU1MFxcdURFNUMtXFx1REU4OVxcdURFOURcXHVERUMwLVxcdURFRjhdfFxcdUQ4MDdbXFx1REMwMC1cXHVEQzA4XFx1REMwQS1cXHVEQzJFXFx1REM0MFxcdURDNzItXFx1REM4RlxcdUREMDAtXFx1REQwNlxcdUREMDhcXHVERDA5XFx1REQwQi1cXHVERDMwXFx1REQ0NlxcdURENjAtXFx1REQ2NVxcdURENjdcXHVERDY4XFx1REQ2QS1cXHVERDg5XFx1REQ5OFxcdURFRTAtXFx1REVGMlxcdURGQjBdfFxcdUQ4MDhbXFx1REMwMC1cXHVERjk5XXxcXHVEODA5W1xcdURDODAtXFx1REQ0M118W1xcdUQ4MENcXHVEODFDLVxcdUQ4MjBcXHVEODIyXFx1RDg0MC1cXHVEODY4XFx1RDg2QS1cXHVEODZDXFx1RDg2Ri1cXHVEODcyXFx1RDg3NC1cXHVEODc5XFx1RDg4MC1cXHVEODgzXVtcXHVEQzAwLVxcdURGRkZdfFxcdUQ4MERbXFx1REMwMC1cXHVEQzJFXXxcXHVEODExW1xcdURDMDAtXFx1REU0Nl18XFx1RDgxQVtcXHVEQzAwLVxcdURFMzhcXHVERTQwLVxcdURFNUVcXHVERUQwLVxcdURFRURcXHVERjAwLVxcdURGMkZcXHVERjQwLVxcdURGNDNcXHVERjYzLVxcdURGNzdcXHVERjdELVxcdURGOEZdfFxcdUQ4MUJbXFx1REU0MC1cXHVERTdGXFx1REYwMC1cXHVERjRBXFx1REY1MFxcdURGOTMtXFx1REY5RlxcdURGRTBcXHVERkUxXFx1REZFM118XFx1RDgyMVtcXHVEQzAwLVxcdURGRjddfFxcdUQ4MjNbXFx1REMwMC1cXHVEQ0Q1XFx1REQwMC1cXHVERDA4XXxcXHVEODJDW1xcdURDMDAtXFx1REQxRVxcdURENTAtXFx1REQ1MlxcdURENjQtXFx1REQ2N1xcdURENzAtXFx1REVGQl18XFx1RDgyRltcXHVEQzAwLVxcdURDNkFcXHVEQzcwLVxcdURDN0NcXHVEQzgwLVxcdURDODhcXHVEQzkwLVxcdURDOTldfFxcdUQ4MzVbXFx1REMwMC1cXHVEQzU0XFx1REM1Ni1cXHVEQzlDXFx1REM5RVxcdURDOUZcXHVEQ0EyXFx1RENBNVxcdURDQTZcXHVEQ0E5LVxcdURDQUNcXHVEQ0FFLVxcdURDQjlcXHVEQ0JCXFx1RENCRC1cXHVEQ0MzXFx1RENDNS1cXHVERDA1XFx1REQwNy1cXHVERDBBXFx1REQwRC1cXHVERDE0XFx1REQxNi1cXHVERDFDXFx1REQxRS1cXHVERDM5XFx1REQzQi1cXHVERDNFXFx1REQ0MC1cXHVERDQ0XFx1REQ0NlxcdURENEEtXFx1REQ1MFxcdURENTItXFx1REVBNVxcdURFQTgtXFx1REVDMFxcdURFQzItXFx1REVEQVxcdURFREMtXFx1REVGQVxcdURFRkMtXFx1REYxNFxcdURGMTYtXFx1REYzNFxcdURGMzYtXFx1REY0RVxcdURGNTAtXFx1REY2RVxcdURGNzAtXFx1REY4OFxcdURGOEEtXFx1REZBOFxcdURGQUEtXFx1REZDMlxcdURGQzQtXFx1REZDQl18XFx1RDgzOFtcXHVERDAwLVxcdUREMkNcXHVERDM3LVxcdUREM0RcXHVERDRFXFx1REVDMC1cXHVERUVCXXxcXHVEODNBW1xcdURDMDAtXFx1RENDNFxcdUREMDAtXFx1REQ0M1xcdURENEJdfFxcdUQ4M0JbXFx1REUwMC1cXHVERTAzXFx1REUwNS1cXHVERTFGXFx1REUyMVxcdURFMjJcXHVERTI0XFx1REUyN1xcdURFMjktXFx1REUzMlxcdURFMzQtXFx1REUzN1xcdURFMzlcXHVERTNCXFx1REU0MlxcdURFNDdcXHVERTQ5XFx1REU0QlxcdURFNEQtXFx1REU0RlxcdURFNTFcXHVERTUyXFx1REU1NFxcdURFNTdcXHVERTU5XFx1REU1QlxcdURFNURcXHVERTVGXFx1REU2MVxcdURFNjJcXHVERTY0XFx1REU2Ny1cXHVERTZBXFx1REU2Qy1cXHVERTcyXFx1REU3NC1cXHVERTc3XFx1REU3OS1cXHVERTdDXFx1REU3RVxcdURFODAtXFx1REU4OVxcdURFOEItXFx1REU5QlxcdURFQTEtXFx1REVBM1xcdURFQTUtXFx1REVBOVxcdURFQUItXFx1REVCQl18XFx1RDg2OVtcXHVEQzAwLVxcdURFRERcXHVERjAwLVxcdURGRkZdfFxcdUQ4NkRbXFx1REMwMC1cXHVERjM0XFx1REY0MC1cXHVERkZGXXxcXHVEODZFW1xcdURDMDAtXFx1REMxRFxcdURDMjAtXFx1REZGRl18XFx1RDg3M1tcXHVEQzAwLVxcdURFQTFcXHVERUIwLVxcdURGRkZdfFxcdUQ4N0FbXFx1REMwMC1cXHVERkUwXXxcXHVEODdFW1xcdURDMDAtXFx1REUxRF18XFx1RDg4NFtcXHVEQzAwLVxcdURGNEFdJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdMQycsXG4gICAgICAgICdhbGlhcyc6ICdDYXNlZF9MZXR0ZXInLFxuICAgICAgICAnYm1wJzogJ0EtWmEtelxceEI1XFx4QzAtXFx4RDZcXHhEOC1cXHhGNlxceEY4LVxcdTAxQkFcXHUwMUJDLVxcdTAxQkZcXHUwMUM0LVxcdTAyOTNcXHUwMjk1LVxcdTAyQUZcXHUwMzcwLVxcdTAzNzNcXHUwMzc2XFx1MDM3N1xcdTAzN0ItXFx1MDM3RFxcdTAzN0ZcXHUwMzg2XFx1MDM4OC1cXHUwMzhBXFx1MDM4Q1xcdTAzOEUtXFx1MDNBMVxcdTAzQTMtXFx1MDNGNVxcdTAzRjctXFx1MDQ4MVxcdTA0OEEtXFx1MDUyRlxcdTA1MzEtXFx1MDU1NlxcdTA1NjAtXFx1MDU4OFxcdTEwQTAtXFx1MTBDNVxcdTEwQzdcXHUxMENEXFx1MTBEMC1cXHUxMEZBXFx1MTBGRC1cXHUxMEZGXFx1MTNBMC1cXHUxM0Y1XFx1MTNGOC1cXHUxM0ZEXFx1MUM4MC1cXHUxQzg4XFx1MUM5MC1cXHUxQ0JBXFx1MUNCRC1cXHUxQ0JGXFx1MUQwMC1cXHUxRDJCXFx1MUQ2Qi1cXHUxRDc3XFx1MUQ3OS1cXHUxRDlBXFx1MUUwMC1cXHUxRjE1XFx1MUYxOC1cXHUxRjFEXFx1MUYyMC1cXHUxRjQ1XFx1MUY0OC1cXHUxRjREXFx1MUY1MC1cXHUxRjU3XFx1MUY1OVxcdTFGNUJcXHUxRjVEXFx1MUY1Ri1cXHUxRjdEXFx1MUY4MC1cXHUxRkI0XFx1MUZCNi1cXHUxRkJDXFx1MUZCRVxcdTFGQzItXFx1MUZDNFxcdTFGQzYtXFx1MUZDQ1xcdTFGRDAtXFx1MUZEM1xcdTFGRDYtXFx1MUZEQlxcdTFGRTAtXFx1MUZFQ1xcdTFGRjItXFx1MUZGNFxcdTFGRjYtXFx1MUZGQ1xcdTIxMDJcXHUyMTA3XFx1MjEwQS1cXHUyMTEzXFx1MjExNVxcdTIxMTktXFx1MjExRFxcdTIxMjRcXHUyMTI2XFx1MjEyOFxcdTIxMkEtXFx1MjEyRFxcdTIxMkYtXFx1MjEzNFxcdTIxMzlcXHUyMTNDLVxcdTIxM0ZcXHUyMTQ1LVxcdTIxNDlcXHUyMTRFXFx1MjE4M1xcdTIxODRcXHUyQzAwLVxcdTJDMkVcXHUyQzMwLVxcdTJDNUVcXHUyQzYwLVxcdTJDN0JcXHUyQzdFLVxcdTJDRTRcXHUyQ0VCLVxcdTJDRUVcXHUyQ0YyXFx1MkNGM1xcdTJEMDAtXFx1MkQyNVxcdTJEMjdcXHUyRDJEXFx1QTY0MC1cXHVBNjZEXFx1QTY4MC1cXHVBNjlCXFx1QTcyMi1cXHVBNzZGXFx1QTc3MS1cXHVBNzg3XFx1QTc4Qi1cXHVBNzhFXFx1QTc5MC1cXHVBN0JGXFx1QTdDMi1cXHVBN0NBXFx1QTdGNVxcdUE3RjZcXHVBN0ZBXFx1QUIzMC1cXHVBQjVBXFx1QUI2MC1cXHVBQjY4XFx1QUI3MC1cXHVBQkJGXFx1RkIwMC1cXHVGQjA2XFx1RkIxMy1cXHVGQjE3XFx1RkYyMS1cXHVGRjNBXFx1RkY0MS1cXHVGRjVBJyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODAxW1xcdURDMDAtXFx1REM0RlxcdURDQjAtXFx1RENEM1xcdURDRDgtXFx1RENGQl18XFx1RDgwM1tcXHVEQzgwLVxcdURDQjJcXHVEQ0MwLVxcdURDRjJdfFxcdUQ4MDZbXFx1RENBMC1cXHVEQ0RGXXxcXHVEODFCW1xcdURFNDAtXFx1REU3Rl18XFx1RDgzNVtcXHVEQzAwLVxcdURDNTRcXHVEQzU2LVxcdURDOUNcXHVEQzlFXFx1REM5RlxcdURDQTJcXHVEQ0E1XFx1RENBNlxcdURDQTktXFx1RENBQ1xcdURDQUUtXFx1RENCOVxcdURDQkJcXHVEQ0JELVxcdURDQzNcXHVEQ0M1LVxcdUREMDVcXHVERDA3LVxcdUREMEFcXHVERDBELVxcdUREMTRcXHVERDE2LVxcdUREMUNcXHVERDFFLVxcdUREMzlcXHVERDNCLVxcdUREM0VcXHVERDQwLVxcdURENDRcXHVERDQ2XFx1REQ0QS1cXHVERDUwXFx1REQ1Mi1cXHVERUE1XFx1REVBOC1cXHVERUMwXFx1REVDMi1cXHVERURBXFx1REVEQy1cXHVERUZBXFx1REVGQy1cXHVERjE0XFx1REYxNi1cXHVERjM0XFx1REYzNi1cXHVERjRFXFx1REY1MC1cXHVERjZFXFx1REY3MC1cXHVERjg4XFx1REY4QS1cXHVERkE4XFx1REZBQS1cXHVERkMyXFx1REZDNC1cXHVERkNCXXxcXHVEODNBW1xcdUREMDAtXFx1REQ0M10nXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ0xsJyxcbiAgICAgICAgJ2FsaWFzJzogJ0xvd2VyY2FzZV9MZXR0ZXInLFxuICAgICAgICAnYm1wJzogJ2EtelxceEI1XFx4REYtXFx4RjZcXHhGOC1cXHhGRlxcdTAxMDFcXHUwMTAzXFx1MDEwNVxcdTAxMDdcXHUwMTA5XFx1MDEwQlxcdTAxMERcXHUwMTBGXFx1MDExMVxcdTAxMTNcXHUwMTE1XFx1MDExN1xcdTAxMTlcXHUwMTFCXFx1MDExRFxcdTAxMUZcXHUwMTIxXFx1MDEyM1xcdTAxMjVcXHUwMTI3XFx1MDEyOVxcdTAxMkJcXHUwMTJEXFx1MDEyRlxcdTAxMzFcXHUwMTMzXFx1MDEzNVxcdTAxMzdcXHUwMTM4XFx1MDEzQVxcdTAxM0NcXHUwMTNFXFx1MDE0MFxcdTAxNDJcXHUwMTQ0XFx1MDE0NlxcdTAxNDhcXHUwMTQ5XFx1MDE0QlxcdTAxNERcXHUwMTRGXFx1MDE1MVxcdTAxNTNcXHUwMTU1XFx1MDE1N1xcdTAxNTlcXHUwMTVCXFx1MDE1RFxcdTAxNUZcXHUwMTYxXFx1MDE2M1xcdTAxNjVcXHUwMTY3XFx1MDE2OVxcdTAxNkJcXHUwMTZEXFx1MDE2RlxcdTAxNzFcXHUwMTczXFx1MDE3NVxcdTAxNzdcXHUwMTdBXFx1MDE3Q1xcdTAxN0UtXFx1MDE4MFxcdTAxODNcXHUwMTg1XFx1MDE4OFxcdTAxOENcXHUwMThEXFx1MDE5MlxcdTAxOTVcXHUwMTk5LVxcdTAxOUJcXHUwMTlFXFx1MDFBMVxcdTAxQTNcXHUwMUE1XFx1MDFBOFxcdTAxQUFcXHUwMUFCXFx1MDFBRFxcdTAxQjBcXHUwMUI0XFx1MDFCNlxcdTAxQjlcXHUwMUJBXFx1MDFCRC1cXHUwMUJGXFx1MDFDNlxcdTAxQzlcXHUwMUNDXFx1MDFDRVxcdTAxRDBcXHUwMUQyXFx1MDFENFxcdTAxRDZcXHUwMUQ4XFx1MDFEQVxcdTAxRENcXHUwMUREXFx1MDFERlxcdTAxRTFcXHUwMUUzXFx1MDFFNVxcdTAxRTdcXHUwMUU5XFx1MDFFQlxcdTAxRURcXHUwMUVGXFx1MDFGMFxcdTAxRjNcXHUwMUY1XFx1MDFGOVxcdTAxRkJcXHUwMUZEXFx1MDFGRlxcdTAyMDFcXHUwMjAzXFx1MDIwNVxcdTAyMDdcXHUwMjA5XFx1MDIwQlxcdTAyMERcXHUwMjBGXFx1MDIxMVxcdTAyMTNcXHUwMjE1XFx1MDIxN1xcdTAyMTlcXHUwMjFCXFx1MDIxRFxcdTAyMUZcXHUwMjIxXFx1MDIyM1xcdTAyMjVcXHUwMjI3XFx1MDIyOVxcdTAyMkJcXHUwMjJEXFx1MDIyRlxcdTAyMzFcXHUwMjMzLVxcdTAyMzlcXHUwMjNDXFx1MDIzRlxcdTAyNDBcXHUwMjQyXFx1MDI0N1xcdTAyNDlcXHUwMjRCXFx1MDI0RFxcdTAyNEYtXFx1MDI5M1xcdTAyOTUtXFx1MDJBRlxcdTAzNzFcXHUwMzczXFx1MDM3N1xcdTAzN0ItXFx1MDM3RFxcdTAzOTBcXHUwM0FDLVxcdTAzQ0VcXHUwM0QwXFx1MDNEMVxcdTAzRDUtXFx1MDNEN1xcdTAzRDlcXHUwM0RCXFx1MDNERFxcdTAzREZcXHUwM0UxXFx1MDNFM1xcdTAzRTVcXHUwM0U3XFx1MDNFOVxcdTAzRUJcXHUwM0VEXFx1MDNFRi1cXHUwM0YzXFx1MDNGNVxcdTAzRjhcXHUwM0ZCXFx1MDNGQ1xcdTA0MzAtXFx1MDQ1RlxcdTA0NjFcXHUwNDYzXFx1MDQ2NVxcdTA0NjdcXHUwNDY5XFx1MDQ2QlxcdTA0NkRcXHUwNDZGXFx1MDQ3MVxcdTA0NzNcXHUwNDc1XFx1MDQ3N1xcdTA0NzlcXHUwNDdCXFx1MDQ3RFxcdTA0N0ZcXHUwNDgxXFx1MDQ4QlxcdTA0OERcXHUwNDhGXFx1MDQ5MVxcdTA0OTNcXHUwNDk1XFx1MDQ5N1xcdTA0OTlcXHUwNDlCXFx1MDQ5RFxcdTA0OUZcXHUwNEExXFx1MDRBM1xcdTA0QTVcXHUwNEE3XFx1MDRBOVxcdTA0QUJcXHUwNEFEXFx1MDRBRlxcdTA0QjFcXHUwNEIzXFx1MDRCNVxcdTA0QjdcXHUwNEI5XFx1MDRCQlxcdTA0QkRcXHUwNEJGXFx1MDRDMlxcdTA0QzRcXHUwNEM2XFx1MDRDOFxcdTA0Q0FcXHUwNENDXFx1MDRDRVxcdTA0Q0ZcXHUwNEQxXFx1MDREM1xcdTA0RDVcXHUwNEQ3XFx1MDREOVxcdTA0REJcXHUwNEREXFx1MDRERlxcdTA0RTFcXHUwNEUzXFx1MDRFNVxcdTA0RTdcXHUwNEU5XFx1MDRFQlxcdTA0RURcXHUwNEVGXFx1MDRGMVxcdTA0RjNcXHUwNEY1XFx1MDRGN1xcdTA0RjlcXHUwNEZCXFx1MDRGRFxcdTA0RkZcXHUwNTAxXFx1MDUwM1xcdTA1MDVcXHUwNTA3XFx1MDUwOVxcdTA1MEJcXHUwNTBEXFx1MDUwRlxcdTA1MTFcXHUwNTEzXFx1MDUxNVxcdTA1MTdcXHUwNTE5XFx1MDUxQlxcdTA1MURcXHUwNTFGXFx1MDUyMVxcdTA1MjNcXHUwNTI1XFx1MDUyN1xcdTA1MjlcXHUwNTJCXFx1MDUyRFxcdTA1MkZcXHUwNTYwLVxcdTA1ODhcXHUxMEQwLVxcdTEwRkFcXHUxMEZELVxcdTEwRkZcXHUxM0Y4LVxcdTEzRkRcXHUxQzgwLVxcdTFDODhcXHUxRDAwLVxcdTFEMkJcXHUxRDZCLVxcdTFENzdcXHUxRDc5LVxcdTFEOUFcXHUxRTAxXFx1MUUwM1xcdTFFMDVcXHUxRTA3XFx1MUUwOVxcdTFFMEJcXHUxRTBEXFx1MUUwRlxcdTFFMTFcXHUxRTEzXFx1MUUxNVxcdTFFMTdcXHUxRTE5XFx1MUUxQlxcdTFFMURcXHUxRTFGXFx1MUUyMVxcdTFFMjNcXHUxRTI1XFx1MUUyN1xcdTFFMjlcXHUxRTJCXFx1MUUyRFxcdTFFMkZcXHUxRTMxXFx1MUUzM1xcdTFFMzVcXHUxRTM3XFx1MUUzOVxcdTFFM0JcXHUxRTNEXFx1MUUzRlxcdTFFNDFcXHUxRTQzXFx1MUU0NVxcdTFFNDdcXHUxRTQ5XFx1MUU0QlxcdTFFNERcXHUxRTRGXFx1MUU1MVxcdTFFNTNcXHUxRTU1XFx1MUU1N1xcdTFFNTlcXHUxRTVCXFx1MUU1RFxcdTFFNUZcXHUxRTYxXFx1MUU2M1xcdTFFNjVcXHUxRTY3XFx1MUU2OVxcdTFFNkJcXHUxRTZEXFx1MUU2RlxcdTFFNzFcXHUxRTczXFx1MUU3NVxcdTFFNzdcXHUxRTc5XFx1MUU3QlxcdTFFN0RcXHUxRTdGXFx1MUU4MVxcdTFFODNcXHUxRTg1XFx1MUU4N1xcdTFFODlcXHUxRThCXFx1MUU4RFxcdTFFOEZcXHUxRTkxXFx1MUU5M1xcdTFFOTUtXFx1MUU5RFxcdTFFOUZcXHUxRUExXFx1MUVBM1xcdTFFQTVcXHUxRUE3XFx1MUVBOVxcdTFFQUJcXHUxRUFEXFx1MUVBRlxcdTFFQjFcXHUxRUIzXFx1MUVCNVxcdTFFQjdcXHUxRUI5XFx1MUVCQlxcdTFFQkRcXHUxRUJGXFx1MUVDMVxcdTFFQzNcXHUxRUM1XFx1MUVDN1xcdTFFQzlcXHUxRUNCXFx1MUVDRFxcdTFFQ0ZcXHUxRUQxXFx1MUVEM1xcdTFFRDVcXHUxRUQ3XFx1MUVEOVxcdTFFREJcXHUxRUREXFx1MUVERlxcdTFFRTFcXHUxRUUzXFx1MUVFNVxcdTFFRTdcXHUxRUU5XFx1MUVFQlxcdTFFRURcXHUxRUVGXFx1MUVGMVxcdTFFRjNcXHUxRUY1XFx1MUVGN1xcdTFFRjlcXHUxRUZCXFx1MUVGRFxcdTFFRkYtXFx1MUYwN1xcdTFGMTAtXFx1MUYxNVxcdTFGMjAtXFx1MUYyN1xcdTFGMzAtXFx1MUYzN1xcdTFGNDAtXFx1MUY0NVxcdTFGNTAtXFx1MUY1N1xcdTFGNjAtXFx1MUY2N1xcdTFGNzAtXFx1MUY3RFxcdTFGODAtXFx1MUY4N1xcdTFGOTAtXFx1MUY5N1xcdTFGQTAtXFx1MUZBN1xcdTFGQjAtXFx1MUZCNFxcdTFGQjZcXHUxRkI3XFx1MUZCRVxcdTFGQzItXFx1MUZDNFxcdTFGQzZcXHUxRkM3XFx1MUZEMC1cXHUxRkQzXFx1MUZENlxcdTFGRDdcXHUxRkUwLVxcdTFGRTdcXHUxRkYyLVxcdTFGRjRcXHUxRkY2XFx1MUZGN1xcdTIxMEFcXHUyMTBFXFx1MjEwRlxcdTIxMTNcXHUyMTJGXFx1MjEzNFxcdTIxMzlcXHUyMTNDXFx1MjEzRFxcdTIxNDYtXFx1MjE0OVxcdTIxNEVcXHUyMTg0XFx1MkMzMC1cXHUyQzVFXFx1MkM2MVxcdTJDNjVcXHUyQzY2XFx1MkM2OFxcdTJDNkFcXHUyQzZDXFx1MkM3MVxcdTJDNzNcXHUyQzc0XFx1MkM3Ni1cXHUyQzdCXFx1MkM4MVxcdTJDODNcXHUyQzg1XFx1MkM4N1xcdTJDODlcXHUyQzhCXFx1MkM4RFxcdTJDOEZcXHUyQzkxXFx1MkM5M1xcdTJDOTVcXHUyQzk3XFx1MkM5OVxcdTJDOUJcXHUyQzlEXFx1MkM5RlxcdTJDQTFcXHUyQ0EzXFx1MkNBNVxcdTJDQTdcXHUyQ0E5XFx1MkNBQlxcdTJDQURcXHUyQ0FGXFx1MkNCMVxcdTJDQjNcXHUyQ0I1XFx1MkNCN1xcdTJDQjlcXHUyQ0JCXFx1MkNCRFxcdTJDQkZcXHUyQ0MxXFx1MkNDM1xcdTJDQzVcXHUyQ0M3XFx1MkNDOVxcdTJDQ0JcXHUyQ0NEXFx1MkNDRlxcdTJDRDFcXHUyQ0QzXFx1MkNENVxcdTJDRDdcXHUyQ0Q5XFx1MkNEQlxcdTJDRERcXHUyQ0RGXFx1MkNFMVxcdTJDRTNcXHUyQ0U0XFx1MkNFQ1xcdTJDRUVcXHUyQ0YzXFx1MkQwMC1cXHUyRDI1XFx1MkQyN1xcdTJEMkRcXHVBNjQxXFx1QTY0M1xcdUE2NDVcXHVBNjQ3XFx1QTY0OVxcdUE2NEJcXHVBNjREXFx1QTY0RlxcdUE2NTFcXHVBNjUzXFx1QTY1NVxcdUE2NTdcXHVBNjU5XFx1QTY1QlxcdUE2NURcXHVBNjVGXFx1QTY2MVxcdUE2NjNcXHVBNjY1XFx1QTY2N1xcdUE2NjlcXHVBNjZCXFx1QTY2RFxcdUE2ODFcXHVBNjgzXFx1QTY4NVxcdUE2ODdcXHVBNjg5XFx1QTY4QlxcdUE2OERcXHVBNjhGXFx1QTY5MVxcdUE2OTNcXHVBNjk1XFx1QTY5N1xcdUE2OTlcXHVBNjlCXFx1QTcyM1xcdUE3MjVcXHVBNzI3XFx1QTcyOVxcdUE3MkJcXHVBNzJEXFx1QTcyRi1cXHVBNzMxXFx1QTczM1xcdUE3MzVcXHVBNzM3XFx1QTczOVxcdUE3M0JcXHVBNzNEXFx1QTczRlxcdUE3NDFcXHVBNzQzXFx1QTc0NVxcdUE3NDdcXHVBNzQ5XFx1QTc0QlxcdUE3NERcXHVBNzRGXFx1QTc1MVxcdUE3NTNcXHVBNzU1XFx1QTc1N1xcdUE3NTlcXHVBNzVCXFx1QTc1RFxcdUE3NUZcXHVBNzYxXFx1QTc2M1xcdUE3NjVcXHVBNzY3XFx1QTc2OVxcdUE3NkJcXHVBNzZEXFx1QTc2RlxcdUE3NzEtXFx1QTc3OFxcdUE3N0FcXHVBNzdDXFx1QTc3RlxcdUE3ODFcXHVBNzgzXFx1QTc4NVxcdUE3ODdcXHVBNzhDXFx1QTc4RVxcdUE3OTFcXHVBNzkzLVxcdUE3OTVcXHVBNzk3XFx1QTc5OVxcdUE3OUJcXHVBNzlEXFx1QTc5RlxcdUE3QTFcXHVBN0EzXFx1QTdBNVxcdUE3QTdcXHVBN0E5XFx1QTdBRlxcdUE3QjVcXHVBN0I3XFx1QTdCOVxcdUE3QkJcXHVBN0JEXFx1QTdCRlxcdUE3QzNcXHVBN0M4XFx1QTdDQVxcdUE3RjZcXHVBN0ZBXFx1QUIzMC1cXHVBQjVBXFx1QUI2MC1cXHVBQjY4XFx1QUI3MC1cXHVBQkJGXFx1RkIwMC1cXHVGQjA2XFx1RkIxMy1cXHVGQjE3XFx1RkY0MS1cXHVGRjVBJyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODAxW1xcdURDMjgtXFx1REM0RlxcdURDRDgtXFx1RENGQl18XFx1RDgwM1tcXHVEQ0MwLVxcdURDRjJdfFxcdUQ4MDZbXFx1RENDMC1cXHVEQ0RGXXxcXHVEODFCW1xcdURFNjAtXFx1REU3Rl18XFx1RDgzNVtcXHVEQzFBLVxcdURDMzNcXHVEQzRFLVxcdURDNTRcXHVEQzU2LVxcdURDNjdcXHVEQzgyLVxcdURDOUJcXHVEQ0I2LVxcdURDQjlcXHVEQ0JCXFx1RENCRC1cXHVEQ0MzXFx1RENDNS1cXHVEQ0NGXFx1RENFQS1cXHVERDAzXFx1REQxRS1cXHVERDM3XFx1REQ1Mi1cXHVERDZCXFx1REQ4Ni1cXHVERDlGXFx1RERCQS1cXHVEREQzXFx1RERFRS1cXHVERTA3XFx1REUyMi1cXHVERTNCXFx1REU1Ni1cXHVERTZGXFx1REU4QS1cXHVERUE1XFx1REVDMi1cXHVERURBXFx1REVEQy1cXHVERUUxXFx1REVGQy1cXHVERjE0XFx1REYxNi1cXHVERjFCXFx1REYzNi1cXHVERjRFXFx1REY1MC1cXHVERjU1XFx1REY3MC1cXHVERjg4XFx1REY4QS1cXHVERjhGXFx1REZBQS1cXHVERkMyXFx1REZDNC1cXHVERkM5XFx1REZDQl18XFx1RDgzQVtcXHVERDIyLVxcdURENDNdJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdMbScsXG4gICAgICAgICdhbGlhcyc6ICdNb2RpZmllcl9MZXR0ZXInLFxuICAgICAgICAnYm1wJzogJ1xcdTAyQjAtXFx1MDJDMVxcdTAyQzYtXFx1MDJEMVxcdTAyRTAtXFx1MDJFNFxcdTAyRUNcXHUwMkVFXFx1MDM3NFxcdTAzN0FcXHUwNTU5XFx1MDY0MFxcdTA2RTVcXHUwNkU2XFx1MDdGNFxcdTA3RjVcXHUwN0ZBXFx1MDgxQVxcdTA4MjRcXHUwODI4XFx1MDk3MVxcdTBFNDZcXHUwRUM2XFx1MTBGQ1xcdTE3RDdcXHUxODQzXFx1MUFBN1xcdTFDNzgtXFx1MUM3RFxcdTFEMkMtXFx1MUQ2QVxcdTFENzhcXHUxRDlCLVxcdTFEQkZcXHUyMDcxXFx1MjA3RlxcdTIwOTAtXFx1MjA5Q1xcdTJDN0NcXHUyQzdEXFx1MkQ2RlxcdTJFMkZcXHUzMDA1XFx1MzAzMS1cXHUzMDM1XFx1MzAzQlxcdTMwOURcXHUzMDlFXFx1MzBGQy1cXHUzMEZFXFx1QTAxNVxcdUE0RjgtXFx1QTRGRFxcdUE2MENcXHVBNjdGXFx1QTY5Q1xcdUE2OURcXHVBNzE3LVxcdUE3MUZcXHVBNzcwXFx1QTc4OFxcdUE3RjhcXHVBN0Y5XFx1QTlDRlxcdUE5RTZcXHVBQTcwXFx1QUFERFxcdUFBRjNcXHVBQUY0XFx1QUI1Qy1cXHVBQjVGXFx1QUI2OVxcdUZGNzBcXHVGRjlFXFx1RkY5RicsXG4gICAgICAgICdhc3RyYWwnOiAnXFx1RDgxQVtcXHVERjQwLVxcdURGNDNdfFxcdUQ4MUJbXFx1REY5My1cXHVERjlGXFx1REZFMFxcdURGRTFcXHVERkUzXXxcXHVEODM4W1xcdUREMzctXFx1REQzRF18XFx1RDgzQVxcdURENEInXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ0xvJyxcbiAgICAgICAgJ2FsaWFzJzogJ090aGVyX0xldHRlcicsXG4gICAgICAgICdibXAnOiAnXFx4QUFcXHhCQVxcdTAxQkJcXHUwMUMwLVxcdTAxQzNcXHUwMjk0XFx1MDVEMC1cXHUwNUVBXFx1MDVFRi1cXHUwNUYyXFx1MDYyMC1cXHUwNjNGXFx1MDY0MS1cXHUwNjRBXFx1MDY2RVxcdTA2NkZcXHUwNjcxLVxcdTA2RDNcXHUwNkQ1XFx1MDZFRVxcdTA2RUZcXHUwNkZBLVxcdTA2RkNcXHUwNkZGXFx1MDcxMFxcdTA3MTItXFx1MDcyRlxcdTA3NEQtXFx1MDdBNVxcdTA3QjFcXHUwN0NBLVxcdTA3RUFcXHUwODAwLVxcdTA4MTVcXHUwODQwLVxcdTA4NThcXHUwODYwLVxcdTA4NkFcXHUwOEEwLVxcdTA4QjRcXHUwOEI2LVxcdTA4QzdcXHUwOTA0LVxcdTA5MzlcXHUwOTNEXFx1MDk1MFxcdTA5NTgtXFx1MDk2MVxcdTA5NzItXFx1MDk4MFxcdTA5ODUtXFx1MDk4Q1xcdTA5OEZcXHUwOTkwXFx1MDk5My1cXHUwOUE4XFx1MDlBQS1cXHUwOUIwXFx1MDlCMlxcdTA5QjYtXFx1MDlCOVxcdTA5QkRcXHUwOUNFXFx1MDlEQ1xcdTA5RERcXHUwOURGLVxcdTA5RTFcXHUwOUYwXFx1MDlGMVxcdTA5RkNcXHUwQTA1LVxcdTBBMEFcXHUwQTBGXFx1MEExMFxcdTBBMTMtXFx1MEEyOFxcdTBBMkEtXFx1MEEzMFxcdTBBMzJcXHUwQTMzXFx1MEEzNVxcdTBBMzZcXHUwQTM4XFx1MEEzOVxcdTBBNTktXFx1MEE1Q1xcdTBBNUVcXHUwQTcyLVxcdTBBNzRcXHUwQTg1LVxcdTBBOERcXHUwQThGLVxcdTBBOTFcXHUwQTkzLVxcdTBBQThcXHUwQUFBLVxcdTBBQjBcXHUwQUIyXFx1MEFCM1xcdTBBQjUtXFx1MEFCOVxcdTBBQkRcXHUwQUQwXFx1MEFFMFxcdTBBRTFcXHUwQUY5XFx1MEIwNS1cXHUwQjBDXFx1MEIwRlxcdTBCMTBcXHUwQjEzLVxcdTBCMjhcXHUwQjJBLVxcdTBCMzBcXHUwQjMyXFx1MEIzM1xcdTBCMzUtXFx1MEIzOVxcdTBCM0RcXHUwQjVDXFx1MEI1RFxcdTBCNUYtXFx1MEI2MVxcdTBCNzFcXHUwQjgzXFx1MEI4NS1cXHUwQjhBXFx1MEI4RS1cXHUwQjkwXFx1MEI5Mi1cXHUwQjk1XFx1MEI5OVxcdTBCOUFcXHUwQjlDXFx1MEI5RVxcdTBCOUZcXHUwQkEzXFx1MEJBNFxcdTBCQTgtXFx1MEJBQVxcdTBCQUUtXFx1MEJCOVxcdTBCRDBcXHUwQzA1LVxcdTBDMENcXHUwQzBFLVxcdTBDMTBcXHUwQzEyLVxcdTBDMjhcXHUwQzJBLVxcdTBDMzlcXHUwQzNEXFx1MEM1OC1cXHUwQzVBXFx1MEM2MFxcdTBDNjFcXHUwQzgwXFx1MEM4NS1cXHUwQzhDXFx1MEM4RS1cXHUwQzkwXFx1MEM5Mi1cXHUwQ0E4XFx1MENBQS1cXHUwQ0IzXFx1MENCNS1cXHUwQ0I5XFx1MENCRFxcdTBDREVcXHUwQ0UwXFx1MENFMVxcdTBDRjFcXHUwQ0YyXFx1MEQwNC1cXHUwRDBDXFx1MEQwRS1cXHUwRDEwXFx1MEQxMi1cXHUwRDNBXFx1MEQzRFxcdTBENEVcXHUwRDU0LVxcdTBENTZcXHUwRDVGLVxcdTBENjFcXHUwRDdBLVxcdTBEN0ZcXHUwRDg1LVxcdTBEOTZcXHUwRDlBLVxcdTBEQjFcXHUwREIzLVxcdTBEQkJcXHUwREJEXFx1MERDMC1cXHUwREM2XFx1MEUwMS1cXHUwRTMwXFx1MEUzMlxcdTBFMzNcXHUwRTQwLVxcdTBFNDVcXHUwRTgxXFx1MEU4MlxcdTBFODRcXHUwRTg2LVxcdTBFOEFcXHUwRThDLVxcdTBFQTNcXHUwRUE1XFx1MEVBNy1cXHUwRUIwXFx1MEVCMlxcdTBFQjNcXHUwRUJEXFx1MEVDMC1cXHUwRUM0XFx1MEVEQy1cXHUwRURGXFx1MEYwMFxcdTBGNDAtXFx1MEY0N1xcdTBGNDktXFx1MEY2Q1xcdTBGODgtXFx1MEY4Q1xcdTEwMDAtXFx1MTAyQVxcdTEwM0ZcXHUxMDUwLVxcdTEwNTVcXHUxMDVBLVxcdTEwNURcXHUxMDYxXFx1MTA2NVxcdTEwNjZcXHUxMDZFLVxcdTEwNzBcXHUxMDc1LVxcdTEwODFcXHUxMDhFXFx1MTEwMC1cXHUxMjQ4XFx1MTI0QS1cXHUxMjREXFx1MTI1MC1cXHUxMjU2XFx1MTI1OFxcdTEyNUEtXFx1MTI1RFxcdTEyNjAtXFx1MTI4OFxcdTEyOEEtXFx1MTI4RFxcdTEyOTAtXFx1MTJCMFxcdTEyQjItXFx1MTJCNVxcdTEyQjgtXFx1MTJCRVxcdTEyQzBcXHUxMkMyLVxcdTEyQzVcXHUxMkM4LVxcdTEyRDZcXHUxMkQ4LVxcdTEzMTBcXHUxMzEyLVxcdTEzMTVcXHUxMzE4LVxcdTEzNUFcXHUxMzgwLVxcdTEzOEZcXHUxNDAxLVxcdTE2NkNcXHUxNjZGLVxcdTE2N0ZcXHUxNjgxLVxcdTE2OUFcXHUxNkEwLVxcdTE2RUFcXHUxNkYxLVxcdTE2RjhcXHUxNzAwLVxcdTE3MENcXHUxNzBFLVxcdTE3MTFcXHUxNzIwLVxcdTE3MzFcXHUxNzQwLVxcdTE3NTFcXHUxNzYwLVxcdTE3NkNcXHUxNzZFLVxcdTE3NzBcXHUxNzgwLVxcdTE3QjNcXHUxN0RDXFx1MTgyMC1cXHUxODQyXFx1MTg0NC1cXHUxODc4XFx1MTg4MC1cXHUxODg0XFx1MTg4Ny1cXHUxOEE4XFx1MThBQVxcdTE4QjAtXFx1MThGNVxcdTE5MDAtXFx1MTkxRVxcdTE5NTAtXFx1MTk2RFxcdTE5NzAtXFx1MTk3NFxcdTE5ODAtXFx1MTlBQlxcdTE5QjAtXFx1MTlDOVxcdTFBMDAtXFx1MUExNlxcdTFBMjAtXFx1MUE1NFxcdTFCMDUtXFx1MUIzM1xcdTFCNDUtXFx1MUI0QlxcdTFCODMtXFx1MUJBMFxcdTFCQUVcXHUxQkFGXFx1MUJCQS1cXHUxQkU1XFx1MUMwMC1cXHUxQzIzXFx1MUM0RC1cXHUxQzRGXFx1MUM1QS1cXHUxQzc3XFx1MUNFOS1cXHUxQ0VDXFx1MUNFRS1cXHUxQ0YzXFx1MUNGNVxcdTFDRjZcXHUxQ0ZBXFx1MjEzNS1cXHUyMTM4XFx1MkQzMC1cXHUyRDY3XFx1MkQ4MC1cXHUyRDk2XFx1MkRBMC1cXHUyREE2XFx1MkRBOC1cXHUyREFFXFx1MkRCMC1cXHUyREI2XFx1MkRCOC1cXHUyREJFXFx1MkRDMC1cXHUyREM2XFx1MkRDOC1cXHUyRENFXFx1MkREMC1cXHUyREQ2XFx1MkREOC1cXHUyRERFXFx1MzAwNlxcdTMwM0NcXHUzMDQxLVxcdTMwOTZcXHUzMDlGXFx1MzBBMS1cXHUzMEZBXFx1MzBGRlxcdTMxMDUtXFx1MzEyRlxcdTMxMzEtXFx1MzE4RVxcdTMxQTAtXFx1MzFCRlxcdTMxRjAtXFx1MzFGRlxcdTM0MDAtXFx1NERCRlxcdTRFMDAtXFx1OUZGQ1xcdUEwMDAtXFx1QTAxNFxcdUEwMTYtXFx1QTQ4Q1xcdUE0RDAtXFx1QTRGN1xcdUE1MDAtXFx1QTYwQlxcdUE2MTAtXFx1QTYxRlxcdUE2MkFcXHVBNjJCXFx1QTY2RVxcdUE2QTAtXFx1QTZFNVxcdUE3OEZcXHVBN0Y3XFx1QTdGQi1cXHVBODAxXFx1QTgwMy1cXHVBODA1XFx1QTgwNy1cXHVBODBBXFx1QTgwQy1cXHVBODIyXFx1QTg0MC1cXHVBODczXFx1QTg4Mi1cXHVBOEIzXFx1QThGMi1cXHVBOEY3XFx1QThGQlxcdUE4RkRcXHVBOEZFXFx1QTkwQS1cXHVBOTI1XFx1QTkzMC1cXHVBOTQ2XFx1QTk2MC1cXHVBOTdDXFx1QTk4NC1cXHVBOUIyXFx1QTlFMC1cXHVBOUU0XFx1QTlFNy1cXHVBOUVGXFx1QTlGQS1cXHVBOUZFXFx1QUEwMC1cXHVBQTI4XFx1QUE0MC1cXHVBQTQyXFx1QUE0NC1cXHVBQTRCXFx1QUE2MC1cXHVBQTZGXFx1QUE3MS1cXHVBQTc2XFx1QUE3QVxcdUFBN0UtXFx1QUFBRlxcdUFBQjFcXHVBQUI1XFx1QUFCNlxcdUFBQjktXFx1QUFCRFxcdUFBQzBcXHVBQUMyXFx1QUFEQlxcdUFBRENcXHVBQUUwLVxcdUFBRUFcXHVBQUYyXFx1QUIwMS1cXHVBQjA2XFx1QUIwOS1cXHVBQjBFXFx1QUIxMS1cXHVBQjE2XFx1QUIyMC1cXHVBQjI2XFx1QUIyOC1cXHVBQjJFXFx1QUJDMC1cXHVBQkUyXFx1QUMwMC1cXHVEN0EzXFx1RDdCMC1cXHVEN0M2XFx1RDdDQi1cXHVEN0ZCXFx1RjkwMC1cXHVGQTZEXFx1RkE3MC1cXHVGQUQ5XFx1RkIxRFxcdUZCMUYtXFx1RkIyOFxcdUZCMkEtXFx1RkIzNlxcdUZCMzgtXFx1RkIzQ1xcdUZCM0VcXHVGQjQwXFx1RkI0MVxcdUZCNDNcXHVGQjQ0XFx1RkI0Ni1cXHVGQkIxXFx1RkJEMy1cXHVGRDNEXFx1RkQ1MC1cXHVGRDhGXFx1RkQ5Mi1cXHVGREM3XFx1RkRGMC1cXHVGREZCXFx1RkU3MC1cXHVGRTc0XFx1RkU3Ni1cXHVGRUZDXFx1RkY2Ni1cXHVGRjZGXFx1RkY3MS1cXHVGRjlEXFx1RkZBMC1cXHVGRkJFXFx1RkZDMi1cXHVGRkM3XFx1RkZDQS1cXHVGRkNGXFx1RkZEMi1cXHVGRkQ3XFx1RkZEQS1cXHVGRkRDJyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODAwW1xcdURDMDAtXFx1REMwQlxcdURDMEQtXFx1REMyNlxcdURDMjgtXFx1REMzQVxcdURDM0NcXHVEQzNEXFx1REMzRi1cXHVEQzREXFx1REM1MC1cXHVEQzVEXFx1REM4MC1cXHVEQ0ZBXFx1REU4MC1cXHVERTlDXFx1REVBMC1cXHVERUQwXFx1REYwMC1cXHVERjFGXFx1REYyRC1cXHVERjQwXFx1REY0Mi1cXHVERjQ5XFx1REY1MC1cXHVERjc1XFx1REY4MC1cXHVERjlEXFx1REZBMC1cXHVERkMzXFx1REZDOC1cXHVERkNGXXxcXHVEODAxW1xcdURDNTAtXFx1REM5RFxcdUREMDAtXFx1REQyN1xcdUREMzAtXFx1REQ2M1xcdURFMDAtXFx1REYzNlxcdURGNDAtXFx1REY1NVxcdURGNjAtXFx1REY2N118XFx1RDgwMltcXHVEQzAwLVxcdURDMDVcXHVEQzA4XFx1REMwQS1cXHVEQzM1XFx1REMzN1xcdURDMzhcXHVEQzNDXFx1REMzRi1cXHVEQzU1XFx1REM2MC1cXHVEQzc2XFx1REM4MC1cXHVEQzlFXFx1RENFMC1cXHVEQ0YyXFx1RENGNFxcdURDRjVcXHVERDAwLVxcdUREMTVcXHVERDIwLVxcdUREMzlcXHVERDgwLVxcdUREQjdcXHVEREJFXFx1RERCRlxcdURFMDBcXHVERTEwLVxcdURFMTNcXHVERTE1LVxcdURFMTdcXHVERTE5LVxcdURFMzVcXHVERTYwLVxcdURFN0NcXHVERTgwLVxcdURFOUNcXHVERUMwLVxcdURFQzdcXHVERUM5LVxcdURFRTRcXHVERjAwLVxcdURGMzVcXHVERjQwLVxcdURGNTVcXHVERjYwLVxcdURGNzJcXHVERjgwLVxcdURGOTFdfFxcdUQ4MDNbXFx1REMwMC1cXHVEQzQ4XFx1REQwMC1cXHVERDIzXFx1REU4MC1cXHVERUE5XFx1REVCMFxcdURFQjFcXHVERjAwLVxcdURGMUNcXHVERjI3XFx1REYzMC1cXHVERjQ1XFx1REZCMC1cXHVERkM0XFx1REZFMC1cXHVERkY2XXxcXHVEODA0W1xcdURDMDMtXFx1REMzN1xcdURDODMtXFx1RENBRlxcdURDRDAtXFx1RENFOFxcdUREMDMtXFx1REQyNlxcdURENDRcXHVERDQ3XFx1REQ1MC1cXHVERDcyXFx1REQ3NlxcdUREODMtXFx1RERCMlxcdUREQzEtXFx1RERDNFxcdUREREFcXHVERERDXFx1REUwMC1cXHVERTExXFx1REUxMy1cXHVERTJCXFx1REU4MC1cXHVERTg2XFx1REU4OFxcdURFOEEtXFx1REU4RFxcdURFOEYtXFx1REU5RFxcdURFOUYtXFx1REVBOFxcdURFQjAtXFx1REVERVxcdURGMDUtXFx1REYwQ1xcdURGMEZcXHVERjEwXFx1REYxMy1cXHVERjI4XFx1REYyQS1cXHVERjMwXFx1REYzMlxcdURGMzNcXHVERjM1LVxcdURGMzlcXHVERjNEXFx1REY1MFxcdURGNUQtXFx1REY2MV18XFx1RDgwNVtcXHVEQzAwLVxcdURDMzRcXHVEQzQ3LVxcdURDNEFcXHVEQzVGLVxcdURDNjFcXHVEQzgwLVxcdURDQUZcXHVEQ0M0XFx1RENDNVxcdURDQzdcXHVERDgwLVxcdUREQUVcXHVEREQ4LVxcdUREREJcXHVERTAwLVxcdURFMkZcXHVERTQ0XFx1REU4MC1cXHVERUFBXFx1REVCOFxcdURGMDAtXFx1REYxQV18XFx1RDgwNltcXHVEQzAwLVxcdURDMkJcXHVEQ0ZGLVxcdUREMDZcXHVERDA5XFx1REQwQy1cXHVERDEzXFx1REQxNVxcdUREMTZcXHVERDE4LVxcdUREMkZcXHVERDNGXFx1REQ0MVxcdUREQTAtXFx1RERBN1xcdUREQUEtXFx1REREMFxcdURERTFcXHVEREUzXFx1REUwMFxcdURFMEItXFx1REUzMlxcdURFM0FcXHVERTUwXFx1REU1Qy1cXHVERTg5XFx1REU5RFxcdURFQzAtXFx1REVGOF18XFx1RDgwN1tcXHVEQzAwLVxcdURDMDhcXHVEQzBBLVxcdURDMkVcXHVEQzQwXFx1REM3Mi1cXHVEQzhGXFx1REQwMC1cXHVERDA2XFx1REQwOFxcdUREMDlcXHVERDBCLVxcdUREMzBcXHVERDQ2XFx1REQ2MC1cXHVERDY1XFx1REQ2N1xcdURENjhcXHVERDZBLVxcdUREODlcXHVERDk4XFx1REVFMC1cXHVERUYyXFx1REZCMF18XFx1RDgwOFtcXHVEQzAwLVxcdURGOTldfFxcdUQ4MDlbXFx1REM4MC1cXHVERDQzXXxbXFx1RDgwQ1xcdUQ4MUMtXFx1RDgyMFxcdUQ4MjJcXHVEODQwLVxcdUQ4NjhcXHVEODZBLVxcdUQ4NkNcXHVEODZGLVxcdUQ4NzJcXHVEODc0LVxcdUQ4NzlcXHVEODgwLVxcdUQ4ODNdW1xcdURDMDAtXFx1REZGRl18XFx1RDgwRFtcXHVEQzAwLVxcdURDMkVdfFxcdUQ4MTFbXFx1REMwMC1cXHVERTQ2XXxcXHVEODFBW1xcdURDMDAtXFx1REUzOFxcdURFNDAtXFx1REU1RVxcdURFRDAtXFx1REVFRFxcdURGMDAtXFx1REYyRlxcdURGNjMtXFx1REY3N1xcdURGN0QtXFx1REY4Rl18XFx1RDgxQltcXHVERjAwLVxcdURGNEFcXHVERjUwXXxcXHVEODIxW1xcdURDMDAtXFx1REZGN118XFx1RDgyM1tcXHVEQzAwLVxcdURDRDVcXHVERDAwLVxcdUREMDhdfFxcdUQ4MkNbXFx1REMwMC1cXHVERDFFXFx1REQ1MC1cXHVERDUyXFx1REQ2NC1cXHVERDY3XFx1REQ3MC1cXHVERUZCXXxcXHVEODJGW1xcdURDMDAtXFx1REM2QVxcdURDNzAtXFx1REM3Q1xcdURDODAtXFx1REM4OFxcdURDOTAtXFx1REM5OV18XFx1RDgzOFtcXHVERDAwLVxcdUREMkNcXHVERDRFXFx1REVDMC1cXHVERUVCXXxcXHVEODNBW1xcdURDMDAtXFx1RENDNF18XFx1RDgzQltcXHVERTAwLVxcdURFMDNcXHVERTA1LVxcdURFMUZcXHVERTIxXFx1REUyMlxcdURFMjRcXHVERTI3XFx1REUyOS1cXHVERTMyXFx1REUzNC1cXHVERTM3XFx1REUzOVxcdURFM0JcXHVERTQyXFx1REU0N1xcdURFNDlcXHVERTRCXFx1REU0RC1cXHVERTRGXFx1REU1MVxcdURFNTJcXHVERTU0XFx1REU1N1xcdURFNTlcXHVERTVCXFx1REU1RFxcdURFNUZcXHVERTYxXFx1REU2MlxcdURFNjRcXHVERTY3LVxcdURFNkFcXHVERTZDLVxcdURFNzJcXHVERTc0LVxcdURFNzdcXHVERTc5LVxcdURFN0NcXHVERTdFXFx1REU4MC1cXHVERTg5XFx1REU4Qi1cXHVERTlCXFx1REVBMS1cXHVERUEzXFx1REVBNS1cXHVERUE5XFx1REVBQi1cXHVERUJCXXxcXHVEODY5W1xcdURDMDAtXFx1REVERFxcdURGMDAtXFx1REZGRl18XFx1RDg2RFtcXHVEQzAwLVxcdURGMzRcXHVERjQwLVxcdURGRkZdfFxcdUQ4NkVbXFx1REMwMC1cXHVEQzFEXFx1REMyMC1cXHVERkZGXXxcXHVEODczW1xcdURDMDAtXFx1REVBMVxcdURFQjAtXFx1REZGRl18XFx1RDg3QVtcXHVEQzAwLVxcdURGRTBdfFxcdUQ4N0VbXFx1REMwMC1cXHVERTFEXXxcXHVEODg0W1xcdURDMDAtXFx1REY0QV0nXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ0x0JyxcbiAgICAgICAgJ2FsaWFzJzogJ1RpdGxlY2FzZV9MZXR0ZXInLFxuICAgICAgICAnYm1wJzogJ1xcdTAxQzVcXHUwMUM4XFx1MDFDQlxcdTAxRjJcXHUxRjg4LVxcdTFGOEZcXHUxRjk4LVxcdTFGOUZcXHUxRkE4LVxcdTFGQUZcXHUxRkJDXFx1MUZDQ1xcdTFGRkMnXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ0x1JyxcbiAgICAgICAgJ2FsaWFzJzogJ1VwcGVyY2FzZV9MZXR0ZXInLFxuICAgICAgICAnYm1wJzogJ0EtWlxceEMwLVxceEQ2XFx4RDgtXFx4REVcXHUwMTAwXFx1MDEwMlxcdTAxMDRcXHUwMTA2XFx1MDEwOFxcdTAxMEFcXHUwMTBDXFx1MDEwRVxcdTAxMTBcXHUwMTEyXFx1MDExNFxcdTAxMTZcXHUwMTE4XFx1MDExQVxcdTAxMUNcXHUwMTFFXFx1MDEyMFxcdTAxMjJcXHUwMTI0XFx1MDEyNlxcdTAxMjhcXHUwMTJBXFx1MDEyQ1xcdTAxMkVcXHUwMTMwXFx1MDEzMlxcdTAxMzRcXHUwMTM2XFx1MDEzOVxcdTAxM0JcXHUwMTNEXFx1MDEzRlxcdTAxNDFcXHUwMTQzXFx1MDE0NVxcdTAxNDdcXHUwMTRBXFx1MDE0Q1xcdTAxNEVcXHUwMTUwXFx1MDE1MlxcdTAxNTRcXHUwMTU2XFx1MDE1OFxcdTAxNUFcXHUwMTVDXFx1MDE1RVxcdTAxNjBcXHUwMTYyXFx1MDE2NFxcdTAxNjZcXHUwMTY4XFx1MDE2QVxcdTAxNkNcXHUwMTZFXFx1MDE3MFxcdTAxNzJcXHUwMTc0XFx1MDE3NlxcdTAxNzhcXHUwMTc5XFx1MDE3QlxcdTAxN0RcXHUwMTgxXFx1MDE4MlxcdTAxODRcXHUwMTg2XFx1MDE4N1xcdTAxODktXFx1MDE4QlxcdTAxOEUtXFx1MDE5MVxcdTAxOTNcXHUwMTk0XFx1MDE5Ni1cXHUwMTk4XFx1MDE5Q1xcdTAxOURcXHUwMTlGXFx1MDFBMFxcdTAxQTJcXHUwMUE0XFx1MDFBNlxcdTAxQTdcXHUwMUE5XFx1MDFBQ1xcdTAxQUVcXHUwMUFGXFx1MDFCMS1cXHUwMUIzXFx1MDFCNVxcdTAxQjdcXHUwMUI4XFx1MDFCQ1xcdTAxQzRcXHUwMUM3XFx1MDFDQVxcdTAxQ0RcXHUwMUNGXFx1MDFEMVxcdTAxRDNcXHUwMUQ1XFx1MDFEN1xcdTAxRDlcXHUwMURCXFx1MDFERVxcdTAxRTBcXHUwMUUyXFx1MDFFNFxcdTAxRTZcXHUwMUU4XFx1MDFFQVxcdTAxRUNcXHUwMUVFXFx1MDFGMVxcdTAxRjRcXHUwMUY2LVxcdTAxRjhcXHUwMUZBXFx1MDFGQ1xcdTAxRkVcXHUwMjAwXFx1MDIwMlxcdTAyMDRcXHUwMjA2XFx1MDIwOFxcdTAyMEFcXHUwMjBDXFx1MDIwRVxcdTAyMTBcXHUwMjEyXFx1MDIxNFxcdTAyMTZcXHUwMjE4XFx1MDIxQVxcdTAyMUNcXHUwMjFFXFx1MDIyMFxcdTAyMjJcXHUwMjI0XFx1MDIyNlxcdTAyMjhcXHUwMjJBXFx1MDIyQ1xcdTAyMkVcXHUwMjMwXFx1MDIzMlxcdTAyM0FcXHUwMjNCXFx1MDIzRFxcdTAyM0VcXHUwMjQxXFx1MDI0My1cXHUwMjQ2XFx1MDI0OFxcdTAyNEFcXHUwMjRDXFx1MDI0RVxcdTAzNzBcXHUwMzcyXFx1MDM3NlxcdTAzN0ZcXHUwMzg2XFx1MDM4OC1cXHUwMzhBXFx1MDM4Q1xcdTAzOEVcXHUwMzhGXFx1MDM5MS1cXHUwM0ExXFx1MDNBMy1cXHUwM0FCXFx1MDNDRlxcdTAzRDItXFx1MDNENFxcdTAzRDhcXHUwM0RBXFx1MDNEQ1xcdTAzREVcXHUwM0UwXFx1MDNFMlxcdTAzRTRcXHUwM0U2XFx1MDNFOFxcdTAzRUFcXHUwM0VDXFx1MDNFRVxcdTAzRjRcXHUwM0Y3XFx1MDNGOVxcdTAzRkFcXHUwM0ZELVxcdTA0MkZcXHUwNDYwXFx1MDQ2MlxcdTA0NjRcXHUwNDY2XFx1MDQ2OFxcdTA0NkFcXHUwNDZDXFx1MDQ2RVxcdTA0NzBcXHUwNDcyXFx1MDQ3NFxcdTA0NzZcXHUwNDc4XFx1MDQ3QVxcdTA0N0NcXHUwNDdFXFx1MDQ4MFxcdTA0OEFcXHUwNDhDXFx1MDQ4RVxcdTA0OTBcXHUwNDkyXFx1MDQ5NFxcdTA0OTZcXHUwNDk4XFx1MDQ5QVxcdTA0OUNcXHUwNDlFXFx1MDRBMFxcdTA0QTJcXHUwNEE0XFx1MDRBNlxcdTA0QThcXHUwNEFBXFx1MDRBQ1xcdTA0QUVcXHUwNEIwXFx1MDRCMlxcdTA0QjRcXHUwNEI2XFx1MDRCOFxcdTA0QkFcXHUwNEJDXFx1MDRCRVxcdTA0QzBcXHUwNEMxXFx1MDRDM1xcdTA0QzVcXHUwNEM3XFx1MDRDOVxcdTA0Q0JcXHUwNENEXFx1MDREMFxcdTA0RDJcXHUwNEQ0XFx1MDRENlxcdTA0RDhcXHUwNERBXFx1MDREQ1xcdTA0REVcXHUwNEUwXFx1MDRFMlxcdTA0RTRcXHUwNEU2XFx1MDRFOFxcdTA0RUFcXHUwNEVDXFx1MDRFRVxcdTA0RjBcXHUwNEYyXFx1MDRGNFxcdTA0RjZcXHUwNEY4XFx1MDRGQVxcdTA0RkNcXHUwNEZFXFx1MDUwMFxcdTA1MDJcXHUwNTA0XFx1MDUwNlxcdTA1MDhcXHUwNTBBXFx1MDUwQ1xcdTA1MEVcXHUwNTEwXFx1MDUxMlxcdTA1MTRcXHUwNTE2XFx1MDUxOFxcdTA1MUFcXHUwNTFDXFx1MDUxRVxcdTA1MjBcXHUwNTIyXFx1MDUyNFxcdTA1MjZcXHUwNTI4XFx1MDUyQVxcdTA1MkNcXHUwNTJFXFx1MDUzMS1cXHUwNTU2XFx1MTBBMC1cXHUxMEM1XFx1MTBDN1xcdTEwQ0RcXHUxM0EwLVxcdTEzRjVcXHUxQzkwLVxcdTFDQkFcXHUxQ0JELVxcdTFDQkZcXHUxRTAwXFx1MUUwMlxcdTFFMDRcXHUxRTA2XFx1MUUwOFxcdTFFMEFcXHUxRTBDXFx1MUUwRVxcdTFFMTBcXHUxRTEyXFx1MUUxNFxcdTFFMTZcXHUxRTE4XFx1MUUxQVxcdTFFMUNcXHUxRTFFXFx1MUUyMFxcdTFFMjJcXHUxRTI0XFx1MUUyNlxcdTFFMjhcXHUxRTJBXFx1MUUyQ1xcdTFFMkVcXHUxRTMwXFx1MUUzMlxcdTFFMzRcXHUxRTM2XFx1MUUzOFxcdTFFM0FcXHUxRTNDXFx1MUUzRVxcdTFFNDBcXHUxRTQyXFx1MUU0NFxcdTFFNDZcXHUxRTQ4XFx1MUU0QVxcdTFFNENcXHUxRTRFXFx1MUU1MFxcdTFFNTJcXHUxRTU0XFx1MUU1NlxcdTFFNThcXHUxRTVBXFx1MUU1Q1xcdTFFNUVcXHUxRTYwXFx1MUU2MlxcdTFFNjRcXHUxRTY2XFx1MUU2OFxcdTFFNkFcXHUxRTZDXFx1MUU2RVxcdTFFNzBcXHUxRTcyXFx1MUU3NFxcdTFFNzZcXHUxRTc4XFx1MUU3QVxcdTFFN0NcXHUxRTdFXFx1MUU4MFxcdTFFODJcXHUxRTg0XFx1MUU4NlxcdTFFODhcXHUxRThBXFx1MUU4Q1xcdTFFOEVcXHUxRTkwXFx1MUU5MlxcdTFFOTRcXHUxRTlFXFx1MUVBMFxcdTFFQTJcXHUxRUE0XFx1MUVBNlxcdTFFQThcXHUxRUFBXFx1MUVBQ1xcdTFFQUVcXHUxRUIwXFx1MUVCMlxcdTFFQjRcXHUxRUI2XFx1MUVCOFxcdTFFQkFcXHUxRUJDXFx1MUVCRVxcdTFFQzBcXHUxRUMyXFx1MUVDNFxcdTFFQzZcXHUxRUM4XFx1MUVDQVxcdTFFQ0NcXHUxRUNFXFx1MUVEMFxcdTFFRDJcXHUxRUQ0XFx1MUVENlxcdTFFRDhcXHUxRURBXFx1MUVEQ1xcdTFFREVcXHUxRUUwXFx1MUVFMlxcdTFFRTRcXHUxRUU2XFx1MUVFOFxcdTFFRUFcXHUxRUVDXFx1MUVFRVxcdTFFRjBcXHUxRUYyXFx1MUVGNFxcdTFFRjZcXHUxRUY4XFx1MUVGQVxcdTFFRkNcXHUxRUZFXFx1MUYwOC1cXHUxRjBGXFx1MUYxOC1cXHUxRjFEXFx1MUYyOC1cXHUxRjJGXFx1MUYzOC1cXHUxRjNGXFx1MUY0OC1cXHUxRjREXFx1MUY1OVxcdTFGNUJcXHUxRjVEXFx1MUY1RlxcdTFGNjgtXFx1MUY2RlxcdTFGQjgtXFx1MUZCQlxcdTFGQzgtXFx1MUZDQlxcdTFGRDgtXFx1MUZEQlxcdTFGRTgtXFx1MUZFQ1xcdTFGRjgtXFx1MUZGQlxcdTIxMDJcXHUyMTA3XFx1MjEwQi1cXHUyMTBEXFx1MjExMC1cXHUyMTEyXFx1MjExNVxcdTIxMTktXFx1MjExRFxcdTIxMjRcXHUyMTI2XFx1MjEyOFxcdTIxMkEtXFx1MjEyRFxcdTIxMzAtXFx1MjEzM1xcdTIxM0VcXHUyMTNGXFx1MjE0NVxcdTIxODNcXHUyQzAwLVxcdTJDMkVcXHUyQzYwXFx1MkM2Mi1cXHUyQzY0XFx1MkM2N1xcdTJDNjlcXHUyQzZCXFx1MkM2RC1cXHUyQzcwXFx1MkM3MlxcdTJDNzVcXHUyQzdFLVxcdTJDODBcXHUyQzgyXFx1MkM4NFxcdTJDODZcXHUyQzg4XFx1MkM4QVxcdTJDOENcXHUyQzhFXFx1MkM5MFxcdTJDOTJcXHUyQzk0XFx1MkM5NlxcdTJDOThcXHUyQzlBXFx1MkM5Q1xcdTJDOUVcXHUyQ0EwXFx1MkNBMlxcdTJDQTRcXHUyQ0E2XFx1MkNBOFxcdTJDQUFcXHUyQ0FDXFx1MkNBRVxcdTJDQjBcXHUyQ0IyXFx1MkNCNFxcdTJDQjZcXHUyQ0I4XFx1MkNCQVxcdTJDQkNcXHUyQ0JFXFx1MkNDMFxcdTJDQzJcXHUyQ0M0XFx1MkNDNlxcdTJDQzhcXHUyQ0NBXFx1MkNDQ1xcdTJDQ0VcXHUyQ0QwXFx1MkNEMlxcdTJDRDRcXHUyQ0Q2XFx1MkNEOFxcdTJDREFcXHUyQ0RDXFx1MkNERVxcdTJDRTBcXHUyQ0UyXFx1MkNFQlxcdTJDRURcXHUyQ0YyXFx1QTY0MFxcdUE2NDJcXHVBNjQ0XFx1QTY0NlxcdUE2NDhcXHVBNjRBXFx1QTY0Q1xcdUE2NEVcXHVBNjUwXFx1QTY1MlxcdUE2NTRcXHVBNjU2XFx1QTY1OFxcdUE2NUFcXHVBNjVDXFx1QTY1RVxcdUE2NjBcXHVBNjYyXFx1QTY2NFxcdUE2NjZcXHVBNjY4XFx1QTY2QVxcdUE2NkNcXHVBNjgwXFx1QTY4MlxcdUE2ODRcXHVBNjg2XFx1QTY4OFxcdUE2OEFcXHVBNjhDXFx1QTY4RVxcdUE2OTBcXHVBNjkyXFx1QTY5NFxcdUE2OTZcXHVBNjk4XFx1QTY5QVxcdUE3MjJcXHVBNzI0XFx1QTcyNlxcdUE3MjhcXHVBNzJBXFx1QTcyQ1xcdUE3MkVcXHVBNzMyXFx1QTczNFxcdUE3MzZcXHVBNzM4XFx1QTczQVxcdUE3M0NcXHVBNzNFXFx1QTc0MFxcdUE3NDJcXHVBNzQ0XFx1QTc0NlxcdUE3NDhcXHVBNzRBXFx1QTc0Q1xcdUE3NEVcXHVBNzUwXFx1QTc1MlxcdUE3NTRcXHVBNzU2XFx1QTc1OFxcdUE3NUFcXHVBNzVDXFx1QTc1RVxcdUE3NjBcXHVBNzYyXFx1QTc2NFxcdUE3NjZcXHVBNzY4XFx1QTc2QVxcdUE3NkNcXHVBNzZFXFx1QTc3OVxcdUE3N0JcXHVBNzdEXFx1QTc3RVxcdUE3ODBcXHVBNzgyXFx1QTc4NFxcdUE3ODZcXHVBNzhCXFx1QTc4RFxcdUE3OTBcXHVBNzkyXFx1QTc5NlxcdUE3OThcXHVBNzlBXFx1QTc5Q1xcdUE3OUVcXHVBN0EwXFx1QTdBMlxcdUE3QTRcXHVBN0E2XFx1QTdBOFxcdUE3QUEtXFx1QTdBRVxcdUE3QjAtXFx1QTdCNFxcdUE3QjZcXHVBN0I4XFx1QTdCQVxcdUE3QkNcXHVBN0JFXFx1QTdDMlxcdUE3QzQtXFx1QTdDN1xcdUE3QzlcXHVBN0Y1XFx1RkYyMS1cXHVGRjNBJyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODAxW1xcdURDMDAtXFx1REMyN1xcdURDQjAtXFx1RENEM118XFx1RDgwM1tcXHVEQzgwLVxcdURDQjJdfFxcdUQ4MDZbXFx1RENBMC1cXHVEQ0JGXXxcXHVEODFCW1xcdURFNDAtXFx1REU1Rl18XFx1RDgzNVtcXHVEQzAwLVxcdURDMTlcXHVEQzM0LVxcdURDNERcXHVEQzY4LVxcdURDODFcXHVEQzlDXFx1REM5RVxcdURDOUZcXHVEQ0EyXFx1RENBNVxcdURDQTZcXHVEQ0E5LVxcdURDQUNcXHVEQ0FFLVxcdURDQjVcXHVEQ0QwLVxcdURDRTlcXHVERDA0XFx1REQwNVxcdUREMDctXFx1REQwQVxcdUREMEQtXFx1REQxNFxcdUREMTYtXFx1REQxQ1xcdUREMzhcXHVERDM5XFx1REQzQi1cXHVERDNFXFx1REQ0MC1cXHVERDQ0XFx1REQ0NlxcdURENEEtXFx1REQ1MFxcdURENkMtXFx1REQ4NVxcdUREQTAtXFx1RERCOVxcdURERDQtXFx1RERFRFxcdURFMDgtXFx1REUyMVxcdURFM0MtXFx1REU1NVxcdURFNzAtXFx1REU4OVxcdURFQTgtXFx1REVDMFxcdURFRTItXFx1REVGQVxcdURGMUMtXFx1REYzNFxcdURGNTYtXFx1REY2RVxcdURGOTAtXFx1REZBOFxcdURGQ0FdfFxcdUQ4M0FbXFx1REQwMC1cXHVERDIxXSdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnTScsXG4gICAgICAgICdhbGlhcyc6ICdNYXJrJyxcbiAgICAgICAgJ2JtcCc6ICdcXHUwMzAwLVxcdTAzNkZcXHUwNDgzLVxcdTA0ODlcXHUwNTkxLVxcdTA1QkRcXHUwNUJGXFx1MDVDMVxcdTA1QzJcXHUwNUM0XFx1MDVDNVxcdTA1QzdcXHUwNjEwLVxcdTA2MUFcXHUwNjRCLVxcdTA2NUZcXHUwNjcwXFx1MDZENi1cXHUwNkRDXFx1MDZERi1cXHUwNkU0XFx1MDZFN1xcdTA2RThcXHUwNkVBLVxcdTA2RURcXHUwNzExXFx1MDczMC1cXHUwNzRBXFx1MDdBNi1cXHUwN0IwXFx1MDdFQi1cXHUwN0YzXFx1MDdGRFxcdTA4MTYtXFx1MDgxOVxcdTA4MUItXFx1MDgyM1xcdTA4MjUtXFx1MDgyN1xcdTA4MjktXFx1MDgyRFxcdTA4NTktXFx1MDg1QlxcdTA4RDMtXFx1MDhFMVxcdTA4RTMtXFx1MDkwM1xcdTA5M0EtXFx1MDkzQ1xcdTA5M0UtXFx1MDk0RlxcdTA5NTEtXFx1MDk1N1xcdTA5NjJcXHUwOTYzXFx1MDk4MS1cXHUwOTgzXFx1MDlCQ1xcdTA5QkUtXFx1MDlDNFxcdTA5QzdcXHUwOUM4XFx1MDlDQi1cXHUwOUNEXFx1MDlEN1xcdTA5RTJcXHUwOUUzXFx1MDlGRVxcdTBBMDEtXFx1MEEwM1xcdTBBM0NcXHUwQTNFLVxcdTBBNDJcXHUwQTQ3XFx1MEE0OFxcdTBBNEItXFx1MEE0RFxcdTBBNTFcXHUwQTcwXFx1MEE3MVxcdTBBNzVcXHUwQTgxLVxcdTBBODNcXHUwQUJDXFx1MEFCRS1cXHUwQUM1XFx1MEFDNy1cXHUwQUM5XFx1MEFDQi1cXHUwQUNEXFx1MEFFMlxcdTBBRTNcXHUwQUZBLVxcdTBBRkZcXHUwQjAxLVxcdTBCMDNcXHUwQjNDXFx1MEIzRS1cXHUwQjQ0XFx1MEI0N1xcdTBCNDhcXHUwQjRCLVxcdTBCNERcXHUwQjU1LVxcdTBCNTdcXHUwQjYyXFx1MEI2M1xcdTBCODJcXHUwQkJFLVxcdTBCQzJcXHUwQkM2LVxcdTBCQzhcXHUwQkNBLVxcdTBCQ0RcXHUwQkQ3XFx1MEMwMC1cXHUwQzA0XFx1MEMzRS1cXHUwQzQ0XFx1MEM0Ni1cXHUwQzQ4XFx1MEM0QS1cXHUwQzREXFx1MEM1NVxcdTBDNTZcXHUwQzYyXFx1MEM2M1xcdTBDODEtXFx1MEM4M1xcdTBDQkNcXHUwQ0JFLVxcdTBDQzRcXHUwQ0M2LVxcdTBDQzhcXHUwQ0NBLVxcdTBDQ0RcXHUwQ0Q1XFx1MENENlxcdTBDRTJcXHUwQ0UzXFx1MEQwMC1cXHUwRDAzXFx1MEQzQlxcdTBEM0NcXHUwRDNFLVxcdTBENDRcXHUwRDQ2LVxcdTBENDhcXHUwRDRBLVxcdTBENERcXHUwRDU3XFx1MEQ2MlxcdTBENjNcXHUwRDgxLVxcdTBEODNcXHUwRENBXFx1MERDRi1cXHUwREQ0XFx1MERENlxcdTBERDgtXFx1MERERlxcdTBERjJcXHUwREYzXFx1MEUzMVxcdTBFMzQtXFx1MEUzQVxcdTBFNDctXFx1MEU0RVxcdTBFQjFcXHUwRUI0LVxcdTBFQkNcXHUwRUM4LVxcdTBFQ0RcXHUwRjE4XFx1MEYxOVxcdTBGMzVcXHUwRjM3XFx1MEYzOVxcdTBGM0VcXHUwRjNGXFx1MEY3MS1cXHUwRjg0XFx1MEY4NlxcdTBGODdcXHUwRjhELVxcdTBGOTdcXHUwRjk5LVxcdTBGQkNcXHUwRkM2XFx1MTAyQi1cXHUxMDNFXFx1MTA1Ni1cXHUxMDU5XFx1MTA1RS1cXHUxMDYwXFx1MTA2Mi1cXHUxMDY0XFx1MTA2Ny1cXHUxMDZEXFx1MTA3MS1cXHUxMDc0XFx1MTA4Mi1cXHUxMDhEXFx1MTA4RlxcdTEwOUEtXFx1MTA5RFxcdTEzNUQtXFx1MTM1RlxcdTE3MTItXFx1MTcxNFxcdTE3MzItXFx1MTczNFxcdTE3NTJcXHUxNzUzXFx1MTc3MlxcdTE3NzNcXHUxN0I0LVxcdTE3RDNcXHUxN0REXFx1MTgwQi1cXHUxODBEXFx1MTg4NVxcdTE4ODZcXHUxOEE5XFx1MTkyMC1cXHUxOTJCXFx1MTkzMC1cXHUxOTNCXFx1MUExNy1cXHUxQTFCXFx1MUE1NS1cXHUxQTVFXFx1MUE2MC1cXHUxQTdDXFx1MUE3RlxcdTFBQjAtXFx1MUFDMFxcdTFCMDAtXFx1MUIwNFxcdTFCMzQtXFx1MUI0NFxcdTFCNkItXFx1MUI3M1xcdTFCODAtXFx1MUI4MlxcdTFCQTEtXFx1MUJBRFxcdTFCRTYtXFx1MUJGM1xcdTFDMjQtXFx1MUMzN1xcdTFDRDAtXFx1MUNEMlxcdTFDRDQtXFx1MUNFOFxcdTFDRURcXHUxQ0Y0XFx1MUNGNy1cXHUxQ0Y5XFx1MURDMC1cXHUxREY5XFx1MURGQi1cXHUxREZGXFx1MjBEMC1cXHUyMEYwXFx1MkNFRi1cXHUyQ0YxXFx1MkQ3RlxcdTJERTAtXFx1MkRGRlxcdTMwMkEtXFx1MzAyRlxcdTMwOTlcXHUzMDlBXFx1QTY2Ri1cXHVBNjcyXFx1QTY3NC1cXHVBNjdEXFx1QTY5RVxcdUE2OUZcXHVBNkYwXFx1QTZGMVxcdUE4MDJcXHVBODA2XFx1QTgwQlxcdUE4MjMtXFx1QTgyN1xcdUE4MkNcXHVBODgwXFx1QTg4MVxcdUE4QjQtXFx1QThDNVxcdUE4RTAtXFx1QThGMVxcdUE4RkZcXHVBOTI2LVxcdUE5MkRcXHVBOTQ3LVxcdUE5NTNcXHVBOTgwLVxcdUE5ODNcXHVBOUIzLVxcdUE5QzBcXHVBOUU1XFx1QUEyOS1cXHVBQTM2XFx1QUE0M1xcdUFBNENcXHVBQTREXFx1QUE3Qi1cXHVBQTdEXFx1QUFCMFxcdUFBQjItXFx1QUFCNFxcdUFBQjdcXHVBQUI4XFx1QUFCRVxcdUFBQkZcXHVBQUMxXFx1QUFFQi1cXHVBQUVGXFx1QUFGNVxcdUFBRjZcXHVBQkUzLVxcdUFCRUFcXHVBQkVDXFx1QUJFRFxcdUZCMUVcXHVGRTAwLVxcdUZFMEZcXHVGRTIwLVxcdUZFMkYnLFxuICAgICAgICAnYXN0cmFsJzogJ1xcdUQ4MDBbXFx1RERGRFxcdURFRTBcXHVERjc2LVxcdURGN0FdfFxcdUQ4MDJbXFx1REUwMS1cXHVERTAzXFx1REUwNVxcdURFMDZcXHVERTBDLVxcdURFMEZcXHVERTM4LVxcdURFM0FcXHVERTNGXFx1REVFNVxcdURFRTZdfFxcdUQ4MDNbXFx1REQyNC1cXHVERDI3XFx1REVBQlxcdURFQUNcXHVERjQ2LVxcdURGNTBdfFxcdUQ4MDRbXFx1REMwMC1cXHVEQzAyXFx1REMzOC1cXHVEQzQ2XFx1REM3Ri1cXHVEQzgyXFx1RENCMC1cXHVEQ0JBXFx1REQwMC1cXHVERDAyXFx1REQyNy1cXHVERDM0XFx1REQ0NVxcdURENDZcXHVERDczXFx1REQ4MC1cXHVERDgyXFx1RERCMy1cXHVEREMwXFx1RERDOS1cXHVERENDXFx1RERDRVxcdUREQ0ZcXHVERTJDLVxcdURFMzdcXHVERTNFXFx1REVERi1cXHVERUVBXFx1REYwMC1cXHVERjAzXFx1REYzQlxcdURGM0NcXHVERjNFLVxcdURGNDRcXHVERjQ3XFx1REY0OFxcdURGNEItXFx1REY0RFxcdURGNTdcXHVERjYyXFx1REY2M1xcdURGNjYtXFx1REY2Q1xcdURGNzAtXFx1REY3NF18XFx1RDgwNVtcXHVEQzM1LVxcdURDNDZcXHVEQzVFXFx1RENCMC1cXHVEQ0MzXFx1RERBRi1cXHVEREI1XFx1RERCOC1cXHVEREMwXFx1REREQ1xcdURERERcXHVERTMwLVxcdURFNDBcXHVERUFCLVxcdURFQjdcXHVERjFELVxcdURGMkJdfFxcdUQ4MDZbXFx1REMyQy1cXHVEQzNBXFx1REQzMC1cXHVERDM1XFx1REQzN1xcdUREMzhcXHVERDNCLVxcdUREM0VcXHVERDQwXFx1REQ0MlxcdURENDNcXHVEREQxLVxcdURERDdcXHVERERBLVxcdURERTBcXHVEREU0XFx1REUwMS1cXHVERTBBXFx1REUzMy1cXHVERTM5XFx1REUzQi1cXHVERTNFXFx1REU0N1xcdURFNTEtXFx1REU1QlxcdURFOEEtXFx1REU5OV18XFx1RDgwN1tcXHVEQzJGLVxcdURDMzZcXHVEQzM4LVxcdURDM0ZcXHVEQzkyLVxcdURDQTdcXHVEQ0E5LVxcdURDQjZcXHVERDMxLVxcdUREMzZcXHVERDNBXFx1REQzQ1xcdUREM0RcXHVERDNGLVxcdURENDVcXHVERDQ3XFx1REQ4QS1cXHVERDhFXFx1REQ5MFxcdUREOTFcXHVERDkzLVxcdUREOTdcXHVERUYzLVxcdURFRjZdfFxcdUQ4MUFbXFx1REVGMC1cXHVERUY0XFx1REYzMC1cXHVERjM2XXxcXHVEODFCW1xcdURGNEZcXHVERjUxLVxcdURGODdcXHVERjhGLVxcdURGOTJcXHVERkU0XFx1REZGMFxcdURGRjFdfFxcdUQ4MkZbXFx1REM5RFxcdURDOUVdfFxcdUQ4MzRbXFx1REQ2NS1cXHVERDY5XFx1REQ2RC1cXHVERDcyXFx1REQ3Qi1cXHVERDgyXFx1REQ4NS1cXHVERDhCXFx1RERBQS1cXHVEREFEXFx1REU0Mi1cXHVERTQ0XXxcXHVEODM2W1xcdURFMDAtXFx1REUzNlxcdURFM0ItXFx1REU2Q1xcdURFNzVcXHVERTg0XFx1REU5Qi1cXHVERTlGXFx1REVBMS1cXHVERUFGXXxcXHVEODM4W1xcdURDMDAtXFx1REMwNlxcdURDMDgtXFx1REMxOFxcdURDMUItXFx1REMyMVxcdURDMjNcXHVEQzI0XFx1REMyNi1cXHVEQzJBXFx1REQzMC1cXHVERDM2XFx1REVFQy1cXHVERUVGXXxcXHVEODNBW1xcdURDRDAtXFx1RENENlxcdURENDQtXFx1REQ0QV18XFx1REI0MFtcXHVERDAwLVxcdURERUZdJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdNYycsXG4gICAgICAgICdhbGlhcyc6ICdTcGFjaW5nX01hcmsnLFxuICAgICAgICAnYm1wJzogJ1xcdTA5MDNcXHUwOTNCXFx1MDkzRS1cXHUwOTQwXFx1MDk0OS1cXHUwOTRDXFx1MDk0RVxcdTA5NEZcXHUwOTgyXFx1MDk4M1xcdTA5QkUtXFx1MDlDMFxcdTA5QzdcXHUwOUM4XFx1MDlDQlxcdTA5Q0NcXHUwOUQ3XFx1MEEwM1xcdTBBM0UtXFx1MEE0MFxcdTBBODNcXHUwQUJFLVxcdTBBQzBcXHUwQUM5XFx1MEFDQlxcdTBBQ0NcXHUwQjAyXFx1MEIwM1xcdTBCM0VcXHUwQjQwXFx1MEI0N1xcdTBCNDhcXHUwQjRCXFx1MEI0Q1xcdTBCNTdcXHUwQkJFXFx1MEJCRlxcdTBCQzFcXHUwQkMyXFx1MEJDNi1cXHUwQkM4XFx1MEJDQS1cXHUwQkNDXFx1MEJEN1xcdTBDMDEtXFx1MEMwM1xcdTBDNDEtXFx1MEM0NFxcdTBDODJcXHUwQzgzXFx1MENCRVxcdTBDQzAtXFx1MENDNFxcdTBDQzdcXHUwQ0M4XFx1MENDQVxcdTBDQ0JcXHUwQ0Q1XFx1MENENlxcdTBEMDJcXHUwRDAzXFx1MEQzRS1cXHUwRDQwXFx1MEQ0Ni1cXHUwRDQ4XFx1MEQ0QS1cXHUwRDRDXFx1MEQ1N1xcdTBEODJcXHUwRDgzXFx1MERDRi1cXHUwREQxXFx1MEREOC1cXHUwRERGXFx1MERGMlxcdTBERjNcXHUwRjNFXFx1MEYzRlxcdTBGN0ZcXHUxMDJCXFx1MTAyQ1xcdTEwMzFcXHUxMDM4XFx1MTAzQlxcdTEwM0NcXHUxMDU2XFx1MTA1N1xcdTEwNjItXFx1MTA2NFxcdTEwNjctXFx1MTA2RFxcdTEwODNcXHUxMDg0XFx1MTA4Ny1cXHUxMDhDXFx1MTA4RlxcdTEwOUEtXFx1MTA5Q1xcdTE3QjZcXHUxN0JFLVxcdTE3QzVcXHUxN0M3XFx1MTdDOFxcdTE5MjMtXFx1MTkyNlxcdTE5MjktXFx1MTkyQlxcdTE5MzBcXHUxOTMxXFx1MTkzMy1cXHUxOTM4XFx1MUExOVxcdTFBMUFcXHUxQTU1XFx1MUE1N1xcdTFBNjFcXHUxQTYzXFx1MUE2NFxcdTFBNkQtXFx1MUE3MlxcdTFCMDRcXHUxQjM1XFx1MUIzQlxcdTFCM0QtXFx1MUI0MVxcdTFCNDNcXHUxQjQ0XFx1MUI4MlxcdTFCQTFcXHUxQkE2XFx1MUJBN1xcdTFCQUFcXHUxQkU3XFx1MUJFQS1cXHUxQkVDXFx1MUJFRVxcdTFCRjJcXHUxQkYzXFx1MUMyNC1cXHUxQzJCXFx1MUMzNFxcdTFDMzVcXHUxQ0UxXFx1MUNGN1xcdTMwMkVcXHUzMDJGXFx1QTgyM1xcdUE4MjRcXHVBODI3XFx1QTg4MFxcdUE4ODFcXHVBOEI0LVxcdUE4QzNcXHVBOTUyXFx1QTk1M1xcdUE5ODNcXHVBOUI0XFx1QTlCNVxcdUE5QkFcXHVBOUJCXFx1QTlCRS1cXHVBOUMwXFx1QUEyRlxcdUFBMzBcXHVBQTMzXFx1QUEzNFxcdUFBNERcXHVBQTdCXFx1QUE3RFxcdUFBRUJcXHVBQUVFXFx1QUFFRlxcdUFBRjVcXHVBQkUzXFx1QUJFNFxcdUFCRTZcXHVBQkU3XFx1QUJFOVxcdUFCRUFcXHVBQkVDJyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODA0W1xcdURDMDBcXHVEQzAyXFx1REM4MlxcdURDQjAtXFx1RENCMlxcdURDQjdcXHVEQ0I4XFx1REQyQ1xcdURENDVcXHVERDQ2XFx1REQ4MlxcdUREQjMtXFx1RERCNVxcdUREQkZcXHVEREMwXFx1RERDRVxcdURFMkMtXFx1REUyRVxcdURFMzJcXHVERTMzXFx1REUzNVxcdURFRTAtXFx1REVFMlxcdURGMDJcXHVERjAzXFx1REYzRVxcdURGM0ZcXHVERjQxLVxcdURGNDRcXHVERjQ3XFx1REY0OFxcdURGNEItXFx1REY0RFxcdURGNTdcXHVERjYyXFx1REY2M118XFx1RDgwNVtcXHVEQzM1LVxcdURDMzdcXHVEQzQwXFx1REM0MVxcdURDNDVcXHVEQ0IwLVxcdURDQjJcXHVEQ0I5XFx1RENCQi1cXHVEQ0JFXFx1RENDMVxcdUREQUYtXFx1RERCMVxcdUREQjgtXFx1RERCQlxcdUREQkVcXHVERTMwLVxcdURFMzJcXHVERTNCXFx1REUzQ1xcdURFM0VcXHVERUFDXFx1REVBRVxcdURFQUZcXHVERUI2XFx1REYyMFxcdURGMjFcXHVERjI2XXxcXHVEODA2W1xcdURDMkMtXFx1REMyRVxcdURDMzhcXHVERDMwLVxcdUREMzVcXHVERDM3XFx1REQzOFxcdUREM0RcXHVERDQwXFx1REQ0MlxcdURERDEtXFx1REREM1xcdUREREMtXFx1RERERlxcdURERTRcXHVERTM5XFx1REU1N1xcdURFNThcXHVERTk3XXxcXHVEODA3W1xcdURDMkZcXHVEQzNFXFx1RENBOVxcdURDQjFcXHVEQ0I0XFx1REQ4QS1cXHVERDhFXFx1REQ5M1xcdUREOTRcXHVERDk2XFx1REVGNVxcdURFRjZdfFxcdUQ4MUJbXFx1REY1MS1cXHVERjg3XFx1REZGMFxcdURGRjFdfFxcdUQ4MzRbXFx1REQ2NVxcdURENjZcXHVERDZELVxcdURENzJdJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdNZScsXG4gICAgICAgICdhbGlhcyc6ICdFbmNsb3NpbmdfTWFyaycsXG4gICAgICAgICdibXAnOiAnXFx1MDQ4OFxcdTA0ODlcXHUxQUJFXFx1MjBERC1cXHUyMEUwXFx1MjBFMi1cXHUyMEU0XFx1QTY3MC1cXHVBNjcyJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdNbicsXG4gICAgICAgICdhbGlhcyc6ICdOb25zcGFjaW5nX01hcmsnLFxuICAgICAgICAnYm1wJzogJ1xcdTAzMDAtXFx1MDM2RlxcdTA0ODMtXFx1MDQ4N1xcdTA1OTEtXFx1MDVCRFxcdTA1QkZcXHUwNUMxXFx1MDVDMlxcdTA1QzRcXHUwNUM1XFx1MDVDN1xcdTA2MTAtXFx1MDYxQVxcdTA2NEItXFx1MDY1RlxcdTA2NzBcXHUwNkQ2LVxcdTA2RENcXHUwNkRGLVxcdTA2RTRcXHUwNkU3XFx1MDZFOFxcdTA2RUEtXFx1MDZFRFxcdTA3MTFcXHUwNzMwLVxcdTA3NEFcXHUwN0E2LVxcdTA3QjBcXHUwN0VCLVxcdTA3RjNcXHUwN0ZEXFx1MDgxNi1cXHUwODE5XFx1MDgxQi1cXHUwODIzXFx1MDgyNS1cXHUwODI3XFx1MDgyOS1cXHUwODJEXFx1MDg1OS1cXHUwODVCXFx1MDhEMy1cXHUwOEUxXFx1MDhFMy1cXHUwOTAyXFx1MDkzQVxcdTA5M0NcXHUwOTQxLVxcdTA5NDhcXHUwOTREXFx1MDk1MS1cXHUwOTU3XFx1MDk2MlxcdTA5NjNcXHUwOTgxXFx1MDlCQ1xcdTA5QzEtXFx1MDlDNFxcdTA5Q0RcXHUwOUUyXFx1MDlFM1xcdTA5RkVcXHUwQTAxXFx1MEEwMlxcdTBBM0NcXHUwQTQxXFx1MEE0MlxcdTBBNDdcXHUwQTQ4XFx1MEE0Qi1cXHUwQTREXFx1MEE1MVxcdTBBNzBcXHUwQTcxXFx1MEE3NVxcdTBBODFcXHUwQTgyXFx1MEFCQ1xcdTBBQzEtXFx1MEFDNVxcdTBBQzdcXHUwQUM4XFx1MEFDRFxcdTBBRTJcXHUwQUUzXFx1MEFGQS1cXHUwQUZGXFx1MEIwMVxcdTBCM0NcXHUwQjNGXFx1MEI0MS1cXHUwQjQ0XFx1MEI0RFxcdTBCNTVcXHUwQjU2XFx1MEI2MlxcdTBCNjNcXHUwQjgyXFx1MEJDMFxcdTBCQ0RcXHUwQzAwXFx1MEMwNFxcdTBDM0UtXFx1MEM0MFxcdTBDNDYtXFx1MEM0OFxcdTBDNEEtXFx1MEM0RFxcdTBDNTVcXHUwQzU2XFx1MEM2MlxcdTBDNjNcXHUwQzgxXFx1MENCQ1xcdTBDQkZcXHUwQ0M2XFx1MENDQ1xcdTBDQ0RcXHUwQ0UyXFx1MENFM1xcdTBEMDBcXHUwRDAxXFx1MEQzQlxcdTBEM0NcXHUwRDQxLVxcdTBENDRcXHUwRDREXFx1MEQ2MlxcdTBENjNcXHUwRDgxXFx1MERDQVxcdTBERDItXFx1MERENFxcdTBERDZcXHUwRTMxXFx1MEUzNC1cXHUwRTNBXFx1MEU0Ny1cXHUwRTRFXFx1MEVCMVxcdTBFQjQtXFx1MEVCQ1xcdTBFQzgtXFx1MEVDRFxcdTBGMThcXHUwRjE5XFx1MEYzNVxcdTBGMzdcXHUwRjM5XFx1MEY3MS1cXHUwRjdFXFx1MEY4MC1cXHUwRjg0XFx1MEY4NlxcdTBGODdcXHUwRjhELVxcdTBGOTdcXHUwRjk5LVxcdTBGQkNcXHUwRkM2XFx1MTAyRC1cXHUxMDMwXFx1MTAzMi1cXHUxMDM3XFx1MTAzOVxcdTEwM0FcXHUxMDNEXFx1MTAzRVxcdTEwNThcXHUxMDU5XFx1MTA1RS1cXHUxMDYwXFx1MTA3MS1cXHUxMDc0XFx1MTA4MlxcdTEwODVcXHUxMDg2XFx1MTA4RFxcdTEwOURcXHUxMzVELVxcdTEzNUZcXHUxNzEyLVxcdTE3MTRcXHUxNzMyLVxcdTE3MzRcXHUxNzUyXFx1MTc1M1xcdTE3NzJcXHUxNzczXFx1MTdCNFxcdTE3QjVcXHUxN0I3LVxcdTE3QkRcXHUxN0M2XFx1MTdDOS1cXHUxN0QzXFx1MTdERFxcdTE4MEItXFx1MTgwRFxcdTE4ODVcXHUxODg2XFx1MThBOVxcdTE5MjAtXFx1MTkyMlxcdTE5MjdcXHUxOTI4XFx1MTkzMlxcdTE5MzktXFx1MTkzQlxcdTFBMTdcXHUxQTE4XFx1MUExQlxcdTFBNTZcXHUxQTU4LVxcdTFBNUVcXHUxQTYwXFx1MUE2MlxcdTFBNjUtXFx1MUE2Q1xcdTFBNzMtXFx1MUE3Q1xcdTFBN0ZcXHUxQUIwLVxcdTFBQkRcXHUxQUJGXFx1MUFDMFxcdTFCMDAtXFx1MUIwM1xcdTFCMzRcXHUxQjM2LVxcdTFCM0FcXHUxQjNDXFx1MUI0MlxcdTFCNkItXFx1MUI3M1xcdTFCODBcXHUxQjgxXFx1MUJBMi1cXHUxQkE1XFx1MUJBOFxcdTFCQTlcXHUxQkFCLVxcdTFCQURcXHUxQkU2XFx1MUJFOFxcdTFCRTlcXHUxQkVEXFx1MUJFRi1cXHUxQkYxXFx1MUMyQy1cXHUxQzMzXFx1MUMzNlxcdTFDMzdcXHUxQ0QwLVxcdTFDRDJcXHUxQ0Q0LVxcdTFDRTBcXHUxQ0UyLVxcdTFDRThcXHUxQ0VEXFx1MUNGNFxcdTFDRjhcXHUxQ0Y5XFx1MURDMC1cXHUxREY5XFx1MURGQi1cXHUxREZGXFx1MjBEMC1cXHUyMERDXFx1MjBFMVxcdTIwRTUtXFx1MjBGMFxcdTJDRUYtXFx1MkNGMVxcdTJEN0ZcXHUyREUwLVxcdTJERkZcXHUzMDJBLVxcdTMwMkRcXHUzMDk5XFx1MzA5QVxcdUE2NkZcXHVBNjc0LVxcdUE2N0RcXHVBNjlFXFx1QTY5RlxcdUE2RjBcXHVBNkYxXFx1QTgwMlxcdUE4MDZcXHVBODBCXFx1QTgyNVxcdUE4MjZcXHVBODJDXFx1QThDNFxcdUE4QzVcXHVBOEUwLVxcdUE4RjFcXHVBOEZGXFx1QTkyNi1cXHVBOTJEXFx1QTk0Ny1cXHVBOTUxXFx1QTk4MC1cXHVBOTgyXFx1QTlCM1xcdUE5QjYtXFx1QTlCOVxcdUE5QkNcXHVBOUJEXFx1QTlFNVxcdUFBMjktXFx1QUEyRVxcdUFBMzFcXHVBQTMyXFx1QUEzNVxcdUFBMzZcXHVBQTQzXFx1QUE0Q1xcdUFBN0NcXHVBQUIwXFx1QUFCMi1cXHVBQUI0XFx1QUFCN1xcdUFBQjhcXHVBQUJFXFx1QUFCRlxcdUFBQzFcXHVBQUVDXFx1QUFFRFxcdUFBRjZcXHVBQkU1XFx1QUJFOFxcdUFCRURcXHVGQjFFXFx1RkUwMC1cXHVGRTBGXFx1RkUyMC1cXHVGRTJGJyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODAwW1xcdURERkRcXHVERUUwXFx1REY3Ni1cXHVERjdBXXxcXHVEODAyW1xcdURFMDEtXFx1REUwM1xcdURFMDVcXHVERTA2XFx1REUwQy1cXHVERTBGXFx1REUzOC1cXHVERTNBXFx1REUzRlxcdURFRTVcXHVERUU2XXxcXHVEODAzW1xcdUREMjQtXFx1REQyN1xcdURFQUJcXHVERUFDXFx1REY0Ni1cXHVERjUwXXxcXHVEODA0W1xcdURDMDFcXHVEQzM4LVxcdURDNDZcXHVEQzdGLVxcdURDODFcXHVEQ0IzLVxcdURDQjZcXHVEQ0I5XFx1RENCQVxcdUREMDAtXFx1REQwMlxcdUREMjctXFx1REQyQlxcdUREMkQtXFx1REQzNFxcdURENzNcXHVERDgwXFx1REQ4MVxcdUREQjYtXFx1RERCRVxcdUREQzktXFx1RERDQ1xcdUREQ0ZcXHVERTJGLVxcdURFMzFcXHVERTM0XFx1REUzNlxcdURFMzdcXHVERTNFXFx1REVERlxcdURFRTMtXFx1REVFQVxcdURGMDBcXHVERjAxXFx1REYzQlxcdURGM0NcXHVERjQwXFx1REY2Ni1cXHVERjZDXFx1REY3MC1cXHVERjc0XXxcXHVEODA1W1xcdURDMzgtXFx1REMzRlxcdURDNDItXFx1REM0NFxcdURDNDZcXHVEQzVFXFx1RENCMy1cXHVEQ0I4XFx1RENCQVxcdURDQkZcXHVEQ0MwXFx1RENDMlxcdURDQzNcXHVEREIyLVxcdUREQjVcXHVEREJDXFx1RERCRFxcdUREQkZcXHVEREMwXFx1REREQ1xcdURERERcXHVERTMzLVxcdURFM0FcXHVERTNEXFx1REUzRlxcdURFNDBcXHVERUFCXFx1REVBRFxcdURFQjAtXFx1REVCNVxcdURFQjdcXHVERjFELVxcdURGMUZcXHVERjIyLVxcdURGMjVcXHVERjI3LVxcdURGMkJdfFxcdUQ4MDZbXFx1REMyRi1cXHVEQzM3XFx1REMzOVxcdURDM0FcXHVERDNCXFx1REQzQ1xcdUREM0VcXHVERDQzXFx1RERENC1cXHVEREQ3XFx1REREQVxcdUREREJcXHVEREUwXFx1REUwMS1cXHVERTBBXFx1REUzMy1cXHVERTM4XFx1REUzQi1cXHVERTNFXFx1REU0N1xcdURFNTEtXFx1REU1NlxcdURFNTktXFx1REU1QlxcdURFOEEtXFx1REU5NlxcdURFOThcXHVERTk5XXxcXHVEODA3W1xcdURDMzAtXFx1REMzNlxcdURDMzgtXFx1REMzRFxcdURDM0ZcXHVEQzkyLVxcdURDQTdcXHVEQ0FBLVxcdURDQjBcXHVEQ0IyXFx1RENCM1xcdURDQjVcXHVEQ0I2XFx1REQzMS1cXHVERDM2XFx1REQzQVxcdUREM0NcXHVERDNEXFx1REQzRi1cXHVERDQ1XFx1REQ0N1xcdUREOTBcXHVERDkxXFx1REQ5NVxcdUREOTdcXHVERUYzXFx1REVGNF18XFx1RDgxQVtcXHVERUYwLVxcdURFRjRcXHVERjMwLVxcdURGMzZdfFxcdUQ4MUJbXFx1REY0RlxcdURGOEYtXFx1REY5MlxcdURGRTRdfFxcdUQ4MkZbXFx1REM5RFxcdURDOUVdfFxcdUQ4MzRbXFx1REQ2Ny1cXHVERDY5XFx1REQ3Qi1cXHVERDgyXFx1REQ4NS1cXHVERDhCXFx1RERBQS1cXHVEREFEXFx1REU0Mi1cXHVERTQ0XXxcXHVEODM2W1xcdURFMDAtXFx1REUzNlxcdURFM0ItXFx1REU2Q1xcdURFNzVcXHVERTg0XFx1REU5Qi1cXHVERTlGXFx1REVBMS1cXHVERUFGXXxcXHVEODM4W1xcdURDMDAtXFx1REMwNlxcdURDMDgtXFx1REMxOFxcdURDMUItXFx1REMyMVxcdURDMjNcXHVEQzI0XFx1REMyNi1cXHVEQzJBXFx1REQzMC1cXHVERDM2XFx1REVFQy1cXHVERUVGXXxcXHVEODNBW1xcdURDRDAtXFx1RENENlxcdURENDQtXFx1REQ0QV18XFx1REI0MFtcXHVERDAwLVxcdURERUZdJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdOJyxcbiAgICAgICAgJ2FsaWFzJzogJ051bWJlcicsXG4gICAgICAgICdibXAnOiAnMC05XFx4QjJcXHhCM1xceEI5XFx4QkMtXFx4QkVcXHUwNjYwLVxcdTA2NjlcXHUwNkYwLVxcdTA2RjlcXHUwN0MwLVxcdTA3QzlcXHUwOTY2LVxcdTA5NkZcXHUwOUU2LVxcdTA5RUZcXHUwOUY0LVxcdTA5RjlcXHUwQTY2LVxcdTBBNkZcXHUwQUU2LVxcdTBBRUZcXHUwQjY2LVxcdTBCNkZcXHUwQjcyLVxcdTBCNzdcXHUwQkU2LVxcdTBCRjJcXHUwQzY2LVxcdTBDNkZcXHUwQzc4LVxcdTBDN0VcXHUwQ0U2LVxcdTBDRUZcXHUwRDU4LVxcdTBENUVcXHUwRDY2LVxcdTBENzhcXHUwREU2LVxcdTBERUZcXHUwRTUwLVxcdTBFNTlcXHUwRUQwLVxcdTBFRDlcXHUwRjIwLVxcdTBGMzNcXHUxMDQwLVxcdTEwNDlcXHUxMDkwLVxcdTEwOTlcXHUxMzY5LVxcdTEzN0NcXHUxNkVFLVxcdTE2RjBcXHUxN0UwLVxcdTE3RTlcXHUxN0YwLVxcdTE3RjlcXHUxODEwLVxcdTE4MTlcXHUxOTQ2LVxcdTE5NEZcXHUxOUQwLVxcdTE5REFcXHUxQTgwLVxcdTFBODlcXHUxQTkwLVxcdTFBOTlcXHUxQjUwLVxcdTFCNTlcXHUxQkIwLVxcdTFCQjlcXHUxQzQwLVxcdTFDNDlcXHUxQzUwLVxcdTFDNTlcXHUyMDcwXFx1MjA3NC1cXHUyMDc5XFx1MjA4MC1cXHUyMDg5XFx1MjE1MC1cXHUyMTgyXFx1MjE4NS1cXHUyMTg5XFx1MjQ2MC1cXHUyNDlCXFx1MjRFQS1cXHUyNEZGXFx1Mjc3Ni1cXHUyNzkzXFx1MkNGRFxcdTMwMDdcXHUzMDIxLVxcdTMwMjlcXHUzMDM4LVxcdTMwM0FcXHUzMTkyLVxcdTMxOTVcXHUzMjIwLVxcdTMyMjlcXHUzMjQ4LVxcdTMyNEZcXHUzMjUxLVxcdTMyNUZcXHUzMjgwLVxcdTMyODlcXHUzMkIxLVxcdTMyQkZcXHVBNjIwLVxcdUE2MjlcXHVBNkU2LVxcdUE2RUZcXHVBODMwLVxcdUE4MzVcXHVBOEQwLVxcdUE4RDlcXHVBOTAwLVxcdUE5MDlcXHVBOUQwLVxcdUE5RDlcXHVBOUYwLVxcdUE5RjlcXHVBQTUwLVxcdUFBNTlcXHVBQkYwLVxcdUFCRjlcXHVGRjEwLVxcdUZGMTknLFxuICAgICAgICAnYXN0cmFsJzogJ1xcdUQ4MDBbXFx1REQwNy1cXHVERDMzXFx1REQ0MC1cXHVERDc4XFx1REQ4QVxcdUREOEJcXHVERUUxLVxcdURFRkJcXHVERjIwLVxcdURGMjNcXHVERjQxXFx1REY0QVxcdURGRDEtXFx1REZENV18XFx1RDgwMVtcXHVEQ0EwLVxcdURDQTldfFxcdUQ4MDJbXFx1REM1OC1cXHVEQzVGXFx1REM3OS1cXHVEQzdGXFx1RENBNy1cXHVEQ0FGXFx1RENGQi1cXHVEQ0ZGXFx1REQxNi1cXHVERDFCXFx1RERCQ1xcdUREQkRcXHVEREMwLVxcdUREQ0ZcXHVEREQyLVxcdURERkZcXHVERTQwLVxcdURFNDhcXHVERTdEXFx1REU3RVxcdURFOUQtXFx1REU5RlxcdURFRUItXFx1REVFRlxcdURGNTgtXFx1REY1RlxcdURGNzgtXFx1REY3RlxcdURGQTktXFx1REZBRl18XFx1RDgwM1tcXHVEQ0ZBLVxcdURDRkZcXHVERDMwLVxcdUREMzlcXHVERTYwLVxcdURFN0VcXHVERjFELVxcdURGMjZcXHVERjUxLVxcdURGNTRcXHVERkM1LVxcdURGQ0JdfFxcdUQ4MDRbXFx1REM1Mi1cXHVEQzZGXFx1RENGMC1cXHVEQ0Y5XFx1REQzNi1cXHVERDNGXFx1REREMC1cXHVEREQ5XFx1RERFMS1cXHVEREY0XFx1REVGMC1cXHVERUY5XXxcXHVEODA1W1xcdURDNTAtXFx1REM1OVxcdURDRDAtXFx1RENEOVxcdURFNTAtXFx1REU1OVxcdURFQzAtXFx1REVDOVxcdURGMzAtXFx1REYzQl18XFx1RDgwNltcXHVEQ0UwLVxcdURDRjJcXHVERDUwLVxcdURENTldfFxcdUQ4MDdbXFx1REM1MC1cXHVEQzZDXFx1REQ1MC1cXHVERDU5XFx1RERBMC1cXHVEREE5XFx1REZDMC1cXHVERkQ0XXxcXHVEODA5W1xcdURDMDAtXFx1REM2RV18XFx1RDgxQVtcXHVERTYwLVxcdURFNjlcXHVERjUwLVxcdURGNTlcXHVERjVCLVxcdURGNjFdfFxcdUQ4MUJbXFx1REU4MC1cXHVERTk2XXxcXHVEODM0W1xcdURFRTAtXFx1REVGM1xcdURGNjAtXFx1REY3OF18XFx1RDgzNVtcXHVERkNFLVxcdURGRkZdfFxcdUQ4MzhbXFx1REQ0MC1cXHVERDQ5XFx1REVGMC1cXHVERUY5XXxcXHVEODNBW1xcdURDQzctXFx1RENDRlxcdURENTAtXFx1REQ1OV18XFx1RDgzQltcXHVEQzcxLVxcdURDQUJcXHVEQ0FELVxcdURDQUZcXHVEQ0IxLVxcdURDQjRcXHVERDAxLVxcdUREMkRcXHVERDJGLVxcdUREM0RdfFxcdUQ4M0NbXFx1REQwMC1cXHVERDBDXXxcXHVEODNFW1xcdURGRjAtXFx1REZGOV0nXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ05kJyxcbiAgICAgICAgJ2FsaWFzJzogJ0RlY2ltYWxfTnVtYmVyJyxcbiAgICAgICAgJ2JtcCc6ICcwLTlcXHUwNjYwLVxcdTA2NjlcXHUwNkYwLVxcdTA2RjlcXHUwN0MwLVxcdTA3QzlcXHUwOTY2LVxcdTA5NkZcXHUwOUU2LVxcdTA5RUZcXHUwQTY2LVxcdTBBNkZcXHUwQUU2LVxcdTBBRUZcXHUwQjY2LVxcdTBCNkZcXHUwQkU2LVxcdTBCRUZcXHUwQzY2LVxcdTBDNkZcXHUwQ0U2LVxcdTBDRUZcXHUwRDY2LVxcdTBENkZcXHUwREU2LVxcdTBERUZcXHUwRTUwLVxcdTBFNTlcXHUwRUQwLVxcdTBFRDlcXHUwRjIwLVxcdTBGMjlcXHUxMDQwLVxcdTEwNDlcXHUxMDkwLVxcdTEwOTlcXHUxN0UwLVxcdTE3RTlcXHUxODEwLVxcdTE4MTlcXHUxOTQ2LVxcdTE5NEZcXHUxOUQwLVxcdTE5RDlcXHUxQTgwLVxcdTFBODlcXHUxQTkwLVxcdTFBOTlcXHUxQjUwLVxcdTFCNTlcXHUxQkIwLVxcdTFCQjlcXHUxQzQwLVxcdTFDNDlcXHUxQzUwLVxcdTFDNTlcXHVBNjIwLVxcdUE2MjlcXHVBOEQwLVxcdUE4RDlcXHVBOTAwLVxcdUE5MDlcXHVBOUQwLVxcdUE5RDlcXHVBOUYwLVxcdUE5RjlcXHVBQTUwLVxcdUFBNTlcXHVBQkYwLVxcdUFCRjlcXHVGRjEwLVxcdUZGMTknLFxuICAgICAgICAnYXN0cmFsJzogJ1xcdUQ4MDFbXFx1RENBMC1cXHVEQ0E5XXxcXHVEODAzW1xcdUREMzAtXFx1REQzOV18XFx1RDgwNFtcXHVEQzY2LVxcdURDNkZcXHVEQ0YwLVxcdURDRjlcXHVERDM2LVxcdUREM0ZcXHVEREQwLVxcdURERDlcXHVERUYwLVxcdURFRjldfFxcdUQ4MDVbXFx1REM1MC1cXHVEQzU5XFx1RENEMC1cXHVEQ0Q5XFx1REU1MC1cXHVERTU5XFx1REVDMC1cXHVERUM5XFx1REYzMC1cXHVERjM5XXxcXHVEODA2W1xcdURDRTAtXFx1RENFOVxcdURENTAtXFx1REQ1OV18XFx1RDgwN1tcXHVEQzUwLVxcdURDNTlcXHVERDUwLVxcdURENTlcXHVEREEwLVxcdUREQTldfFxcdUQ4MUFbXFx1REU2MC1cXHVERTY5XFx1REY1MC1cXHVERjU5XXxcXHVEODM1W1xcdURGQ0UtXFx1REZGRl18XFx1RDgzOFtcXHVERDQwLVxcdURENDlcXHVERUYwLVxcdURFRjldfFxcdUQ4M0FbXFx1REQ1MC1cXHVERDU5XXxcXHVEODNFW1xcdURGRjAtXFx1REZGOV0nXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ05sJyxcbiAgICAgICAgJ2FsaWFzJzogJ0xldHRlcl9OdW1iZXInLFxuICAgICAgICAnYm1wJzogJ1xcdTE2RUUtXFx1MTZGMFxcdTIxNjAtXFx1MjE4MlxcdTIxODUtXFx1MjE4OFxcdTMwMDdcXHUzMDIxLVxcdTMwMjlcXHUzMDM4LVxcdTMwM0FcXHVBNkU2LVxcdUE2RUYnLFxuICAgICAgICAnYXN0cmFsJzogJ1xcdUQ4MDBbXFx1REQ0MC1cXHVERDc0XFx1REY0MVxcdURGNEFcXHVERkQxLVxcdURGRDVdfFxcdUQ4MDlbXFx1REMwMC1cXHVEQzZFXSdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnTm8nLFxuICAgICAgICAnYWxpYXMnOiAnT3RoZXJfTnVtYmVyJyxcbiAgICAgICAgJ2JtcCc6ICdcXHhCMlxceEIzXFx4QjlcXHhCQy1cXHhCRVxcdTA5RjQtXFx1MDlGOVxcdTBCNzItXFx1MEI3N1xcdTBCRjAtXFx1MEJGMlxcdTBDNzgtXFx1MEM3RVxcdTBENTgtXFx1MEQ1RVxcdTBENzAtXFx1MEQ3OFxcdTBGMkEtXFx1MEYzM1xcdTEzNjktXFx1MTM3Q1xcdTE3RjAtXFx1MTdGOVxcdTE5REFcXHUyMDcwXFx1MjA3NC1cXHUyMDc5XFx1MjA4MC1cXHUyMDg5XFx1MjE1MC1cXHUyMTVGXFx1MjE4OVxcdTI0NjAtXFx1MjQ5QlxcdTI0RUEtXFx1MjRGRlxcdTI3NzYtXFx1Mjc5M1xcdTJDRkRcXHUzMTkyLVxcdTMxOTVcXHUzMjIwLVxcdTMyMjlcXHUzMjQ4LVxcdTMyNEZcXHUzMjUxLVxcdTMyNUZcXHUzMjgwLVxcdTMyODlcXHUzMkIxLVxcdTMyQkZcXHVBODMwLVxcdUE4MzUnLFxuICAgICAgICAnYXN0cmFsJzogJ1xcdUQ4MDBbXFx1REQwNy1cXHVERDMzXFx1REQ3NS1cXHVERDc4XFx1REQ4QVxcdUREOEJcXHVERUUxLVxcdURFRkJcXHVERjIwLVxcdURGMjNdfFxcdUQ4MDJbXFx1REM1OC1cXHVEQzVGXFx1REM3OS1cXHVEQzdGXFx1RENBNy1cXHVEQ0FGXFx1RENGQi1cXHVEQ0ZGXFx1REQxNi1cXHVERDFCXFx1RERCQ1xcdUREQkRcXHVEREMwLVxcdUREQ0ZcXHVEREQyLVxcdURERkZcXHVERTQwLVxcdURFNDhcXHVERTdEXFx1REU3RVxcdURFOUQtXFx1REU5RlxcdURFRUItXFx1REVFRlxcdURGNTgtXFx1REY1RlxcdURGNzgtXFx1REY3RlxcdURGQTktXFx1REZBRl18XFx1RDgwM1tcXHVEQ0ZBLVxcdURDRkZcXHVERTYwLVxcdURFN0VcXHVERjFELVxcdURGMjZcXHVERjUxLVxcdURGNTRcXHVERkM1LVxcdURGQ0JdfFxcdUQ4MDRbXFx1REM1Mi1cXHVEQzY1XFx1RERFMS1cXHVEREY0XXxcXHVEODA1W1xcdURGM0FcXHVERjNCXXxcXHVEODA2W1xcdURDRUEtXFx1RENGMl18XFx1RDgwN1tcXHVEQzVBLVxcdURDNkNcXHVERkMwLVxcdURGRDRdfFxcdUQ4MUFbXFx1REY1Qi1cXHVERjYxXXxcXHVEODFCW1xcdURFODAtXFx1REU5Nl18XFx1RDgzNFtcXHVERUUwLVxcdURFRjNcXHVERjYwLVxcdURGNzhdfFxcdUQ4M0FbXFx1RENDNy1cXHVEQ0NGXXxcXHVEODNCW1xcdURDNzEtXFx1RENBQlxcdURDQUQtXFx1RENBRlxcdURDQjEtXFx1RENCNFxcdUREMDEtXFx1REQyRFxcdUREMkYtXFx1REQzRF18XFx1RDgzQ1tcXHVERDAwLVxcdUREMENdJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdQJyxcbiAgICAgICAgJ2FsaWFzJzogJ1B1bmN0dWF0aW9uJyxcbiAgICAgICAgJ2JtcCc6ICchLSMlLVxcXFwqLC1cXFxcLzo7XFxcXD9AXFxcXFstXFxcXF1fXFxcXHtcXFxcfVxceEExXFx4QTdcXHhBQlxceEI2XFx4QjdcXHhCQlxceEJGXFx1MDM3RVxcdTAzODdcXHUwNTVBLVxcdTA1NUZcXHUwNTg5XFx1MDU4QVxcdTA1QkVcXHUwNUMwXFx1MDVDM1xcdTA1QzZcXHUwNUYzXFx1MDVGNFxcdTA2MDlcXHUwNjBBXFx1MDYwQ1xcdTA2MERcXHUwNjFCXFx1MDYxRVxcdTA2MUZcXHUwNjZBLVxcdTA2NkRcXHUwNkQ0XFx1MDcwMC1cXHUwNzBEXFx1MDdGNy1cXHUwN0Y5XFx1MDgzMC1cXHUwODNFXFx1MDg1RVxcdTA5NjRcXHUwOTY1XFx1MDk3MFxcdTA5RkRcXHUwQTc2XFx1MEFGMFxcdTBDNzdcXHUwQzg0XFx1MERGNFxcdTBFNEZcXHUwRTVBXFx1MEU1QlxcdTBGMDQtXFx1MEYxMlxcdTBGMTRcXHUwRjNBLVxcdTBGM0RcXHUwRjg1XFx1MEZEMC1cXHUwRkQ0XFx1MEZEOVxcdTBGREFcXHUxMDRBLVxcdTEwNEZcXHUxMEZCXFx1MTM2MC1cXHUxMzY4XFx1MTQwMFxcdTE2NkVcXHUxNjlCXFx1MTY5Q1xcdTE2RUItXFx1MTZFRFxcdTE3MzVcXHUxNzM2XFx1MTdENC1cXHUxN0Q2XFx1MTdEOC1cXHUxN0RBXFx1MTgwMC1cXHUxODBBXFx1MTk0NFxcdTE5NDVcXHUxQTFFXFx1MUExRlxcdTFBQTAtXFx1MUFBNlxcdTFBQTgtXFx1MUFBRFxcdTFCNUEtXFx1MUI2MFxcdTFCRkMtXFx1MUJGRlxcdTFDM0ItXFx1MUMzRlxcdTFDN0VcXHUxQzdGXFx1MUNDMC1cXHUxQ0M3XFx1MUNEM1xcdTIwMTAtXFx1MjAyN1xcdTIwMzAtXFx1MjA0M1xcdTIwNDUtXFx1MjA1MVxcdTIwNTMtXFx1MjA1RVxcdTIwN0RcXHUyMDdFXFx1MjA4RFxcdTIwOEVcXHUyMzA4LVxcdTIzMEJcXHUyMzI5XFx1MjMyQVxcdTI3NjgtXFx1Mjc3NVxcdTI3QzVcXHUyN0M2XFx1MjdFNi1cXHUyN0VGXFx1Mjk4My1cXHUyOTk4XFx1MjlEOC1cXHUyOURCXFx1MjlGQ1xcdTI5RkRcXHUyQ0Y5LVxcdTJDRkNcXHUyQ0ZFXFx1MkNGRlxcdTJENzBcXHUyRTAwLVxcdTJFMkVcXHUyRTMwLVxcdTJFNEZcXHUyRTUyXFx1MzAwMS1cXHUzMDAzXFx1MzAwOC1cXHUzMDExXFx1MzAxNC1cXHUzMDFGXFx1MzAzMFxcdTMwM0RcXHUzMEEwXFx1MzBGQlxcdUE0RkVcXHVBNEZGXFx1QTYwRC1cXHVBNjBGXFx1QTY3M1xcdUE2N0VcXHVBNkYyLVxcdUE2RjdcXHVBODc0LVxcdUE4NzdcXHVBOENFXFx1QThDRlxcdUE4RjgtXFx1QThGQVxcdUE4RkNcXHVBOTJFXFx1QTkyRlxcdUE5NUZcXHVBOUMxLVxcdUE5Q0RcXHVBOURFXFx1QTlERlxcdUFBNUMtXFx1QUE1RlxcdUFBREVcXHVBQURGXFx1QUFGMFxcdUFBRjFcXHVBQkVCXFx1RkQzRVxcdUZEM0ZcXHVGRTEwLVxcdUZFMTlcXHVGRTMwLVxcdUZFNTJcXHVGRTU0LVxcdUZFNjFcXHVGRTYzXFx1RkU2OFxcdUZFNkFcXHVGRTZCXFx1RkYwMS1cXHVGRjAzXFx1RkYwNS1cXHVGRjBBXFx1RkYwQy1cXHVGRjBGXFx1RkYxQVxcdUZGMUJcXHVGRjFGXFx1RkYyMFxcdUZGM0ItXFx1RkYzRFxcdUZGM0ZcXHVGRjVCXFx1RkY1RFxcdUZGNUYtXFx1RkY2NScsXG4gICAgICAgICdhc3RyYWwnOiAnXFx1RDgwMFtcXHVERDAwLVxcdUREMDJcXHVERjlGXFx1REZEMF18XFx1RDgwMVxcdURENkZ8XFx1RDgwMltcXHVEQzU3XFx1REQxRlxcdUREM0ZcXHVERTUwLVxcdURFNThcXHVERTdGXFx1REVGMC1cXHVERUY2XFx1REYzOS1cXHVERjNGXFx1REY5OS1cXHVERjlDXXxcXHVEODAzW1xcdURFQURcXHVERjU1LVxcdURGNTldfFxcdUQ4MDRbXFx1REM0Ny1cXHVEQzREXFx1RENCQlxcdURDQkNcXHVEQ0JFLVxcdURDQzFcXHVERDQwLVxcdURENDNcXHVERDc0XFx1REQ3NVxcdUREQzUtXFx1RERDOFxcdUREQ0RcXHVERERCXFx1RERERC1cXHVERERGXFx1REUzOC1cXHVERTNEXFx1REVBOV18XFx1RDgwNVtcXHVEQzRCLVxcdURDNEZcXHVEQzVBXFx1REM1QlxcdURDNURcXHVEQ0M2XFx1RERDMS1cXHVEREQ3XFx1REU0MS1cXHVERTQzXFx1REU2MC1cXHVERTZDXFx1REYzQy1cXHVERjNFXXxcXHVEODA2W1xcdURDM0JcXHVERDQ0LVxcdURENDZcXHVEREUyXFx1REUzRi1cXHVERTQ2XFx1REU5QS1cXHVERTlDXFx1REU5RS1cXHVERUEyXXxcXHVEODA3W1xcdURDNDEtXFx1REM0NVxcdURDNzBcXHVEQzcxXFx1REVGN1xcdURFRjhcXHVERkZGXXxcXHVEODA5W1xcdURDNzAtXFx1REM3NF18XFx1RDgxQVtcXHVERTZFXFx1REU2RlxcdURFRjVcXHVERjM3LVxcdURGM0JcXHVERjQ0XXxcXHVEODFCW1xcdURFOTctXFx1REU5QVxcdURGRTJdfFxcdUQ4MkZcXHVEQzlGfFxcdUQ4MzZbXFx1REU4Ny1cXHVERThCXXxcXHVEODNBW1xcdURENUVcXHVERDVGXSdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnUGMnLFxuICAgICAgICAnYWxpYXMnOiAnQ29ubmVjdG9yX1B1bmN0dWF0aW9uJyxcbiAgICAgICAgJ2JtcCc6ICdfXFx1MjAzRlxcdTIwNDBcXHUyMDU0XFx1RkUzM1xcdUZFMzRcXHVGRTRELVxcdUZFNEZcXHVGRjNGJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdQZCcsXG4gICAgICAgICdhbGlhcyc6ICdEYXNoX1B1bmN0dWF0aW9uJyxcbiAgICAgICAgJ2JtcCc6ICdcXFxcLVxcdTA1OEFcXHUwNUJFXFx1MTQwMFxcdTE4MDZcXHUyMDEwLVxcdTIwMTVcXHUyRTE3XFx1MkUxQVxcdTJFM0FcXHUyRTNCXFx1MkU0MFxcdTMwMUNcXHUzMDMwXFx1MzBBMFxcdUZFMzFcXHVGRTMyXFx1RkU1OFxcdUZFNjNcXHVGRjBEJyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODAzXFx1REVBRCdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnUGUnLFxuICAgICAgICAnYWxpYXMnOiAnQ2xvc2VfUHVuY3R1YXRpb24nLFxuICAgICAgICAnYm1wJzogJ1xcXFwpXFxcXF1cXFxcfVxcdTBGM0JcXHUwRjNEXFx1MTY5Q1xcdTIwNDZcXHUyMDdFXFx1MjA4RVxcdTIzMDlcXHUyMzBCXFx1MjMyQVxcdTI3NjlcXHUyNzZCXFx1Mjc2RFxcdTI3NkZcXHUyNzcxXFx1Mjc3M1xcdTI3NzVcXHUyN0M2XFx1MjdFN1xcdTI3RTlcXHUyN0VCXFx1MjdFRFxcdTI3RUZcXHUyOTg0XFx1Mjk4NlxcdTI5ODhcXHUyOThBXFx1Mjk4Q1xcdTI5OEVcXHUyOTkwXFx1Mjk5MlxcdTI5OTRcXHUyOTk2XFx1Mjk5OFxcdTI5RDlcXHUyOURCXFx1MjlGRFxcdTJFMjNcXHUyRTI1XFx1MkUyN1xcdTJFMjlcXHUzMDA5XFx1MzAwQlxcdTMwMERcXHUzMDBGXFx1MzAxMVxcdTMwMTVcXHUzMDE3XFx1MzAxOVxcdTMwMUJcXHUzMDFFXFx1MzAxRlxcdUZEM0VcXHVGRTE4XFx1RkUzNlxcdUZFMzhcXHVGRTNBXFx1RkUzQ1xcdUZFM0VcXHVGRTQwXFx1RkU0MlxcdUZFNDRcXHVGRTQ4XFx1RkU1QVxcdUZFNUNcXHVGRTVFXFx1RkYwOVxcdUZGM0RcXHVGRjVEXFx1RkY2MFxcdUZGNjMnXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ1BmJyxcbiAgICAgICAgJ2FsaWFzJzogJ0ZpbmFsX1B1bmN0dWF0aW9uJyxcbiAgICAgICAgJ2JtcCc6ICdcXHhCQlxcdTIwMTlcXHUyMDFEXFx1MjAzQVxcdTJFMDNcXHUyRTA1XFx1MkUwQVxcdTJFMERcXHUyRTFEXFx1MkUyMSdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnUGknLFxuICAgICAgICAnYWxpYXMnOiAnSW5pdGlhbF9QdW5jdHVhdGlvbicsXG4gICAgICAgICdibXAnOiAnXFx4QUJcXHUyMDE4XFx1MjAxQlxcdTIwMUNcXHUyMDFGXFx1MjAzOVxcdTJFMDJcXHUyRTA0XFx1MkUwOVxcdTJFMENcXHUyRTFDXFx1MkUyMCdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnUG8nLFxuICAgICAgICAnYWxpYXMnOiAnT3RoZXJfUHVuY3R1YXRpb24nLFxuICAgICAgICAnYm1wJzogJyEtIyUtXFwnXFxcXCosXFxcXC5cXFxcLzo7XFxcXD9AXFxcXFxceEExXFx4QTdcXHhCNlxceEI3XFx4QkZcXHUwMzdFXFx1MDM4N1xcdTA1NUEtXFx1MDU1RlxcdTA1ODlcXHUwNUMwXFx1MDVDM1xcdTA1QzZcXHUwNUYzXFx1MDVGNFxcdTA2MDlcXHUwNjBBXFx1MDYwQ1xcdTA2MERcXHUwNjFCXFx1MDYxRVxcdTA2MUZcXHUwNjZBLVxcdTA2NkRcXHUwNkQ0XFx1MDcwMC1cXHUwNzBEXFx1MDdGNy1cXHUwN0Y5XFx1MDgzMC1cXHUwODNFXFx1MDg1RVxcdTA5NjRcXHUwOTY1XFx1MDk3MFxcdTA5RkRcXHUwQTc2XFx1MEFGMFxcdTBDNzdcXHUwQzg0XFx1MERGNFxcdTBFNEZcXHUwRTVBXFx1MEU1QlxcdTBGMDQtXFx1MEYxMlxcdTBGMTRcXHUwRjg1XFx1MEZEMC1cXHUwRkQ0XFx1MEZEOVxcdTBGREFcXHUxMDRBLVxcdTEwNEZcXHUxMEZCXFx1MTM2MC1cXHUxMzY4XFx1MTY2RVxcdTE2RUItXFx1MTZFRFxcdTE3MzVcXHUxNzM2XFx1MTdENC1cXHUxN0Q2XFx1MTdEOC1cXHUxN0RBXFx1MTgwMC1cXHUxODA1XFx1MTgwNy1cXHUxODBBXFx1MTk0NFxcdTE5NDVcXHUxQTFFXFx1MUExRlxcdTFBQTAtXFx1MUFBNlxcdTFBQTgtXFx1MUFBRFxcdTFCNUEtXFx1MUI2MFxcdTFCRkMtXFx1MUJGRlxcdTFDM0ItXFx1MUMzRlxcdTFDN0VcXHUxQzdGXFx1MUNDMC1cXHUxQ0M3XFx1MUNEM1xcdTIwMTZcXHUyMDE3XFx1MjAyMC1cXHUyMDI3XFx1MjAzMC1cXHUyMDM4XFx1MjAzQi1cXHUyMDNFXFx1MjA0MS1cXHUyMDQzXFx1MjA0Ny1cXHUyMDUxXFx1MjA1M1xcdTIwNTUtXFx1MjA1RVxcdTJDRjktXFx1MkNGQ1xcdTJDRkVcXHUyQ0ZGXFx1MkQ3MFxcdTJFMDBcXHUyRTAxXFx1MkUwNi1cXHUyRTA4XFx1MkUwQlxcdTJFMEUtXFx1MkUxNlxcdTJFMThcXHUyRTE5XFx1MkUxQlxcdTJFMUVcXHUyRTFGXFx1MkUyQS1cXHUyRTJFXFx1MkUzMC1cXHUyRTM5XFx1MkUzQy1cXHUyRTNGXFx1MkU0MVxcdTJFNDMtXFx1MkU0RlxcdTJFNTJcXHUzMDAxLVxcdTMwMDNcXHUzMDNEXFx1MzBGQlxcdUE0RkVcXHVBNEZGXFx1QTYwRC1cXHVBNjBGXFx1QTY3M1xcdUE2N0VcXHVBNkYyLVxcdUE2RjdcXHVBODc0LVxcdUE4NzdcXHVBOENFXFx1QThDRlxcdUE4RjgtXFx1QThGQVxcdUE4RkNcXHVBOTJFXFx1QTkyRlxcdUE5NUZcXHVBOUMxLVxcdUE5Q0RcXHVBOURFXFx1QTlERlxcdUFBNUMtXFx1QUE1RlxcdUFBREVcXHVBQURGXFx1QUFGMFxcdUFBRjFcXHVBQkVCXFx1RkUxMC1cXHVGRTE2XFx1RkUxOVxcdUZFMzBcXHVGRTQ1XFx1RkU0NlxcdUZFNDktXFx1RkU0Q1xcdUZFNTAtXFx1RkU1MlxcdUZFNTQtXFx1RkU1N1xcdUZFNUYtXFx1RkU2MVxcdUZFNjhcXHVGRTZBXFx1RkU2QlxcdUZGMDEtXFx1RkYwM1xcdUZGMDUtXFx1RkYwN1xcdUZGMEFcXHVGRjBDXFx1RkYwRVxcdUZGMEZcXHVGRjFBXFx1RkYxQlxcdUZGMUZcXHVGRjIwXFx1RkYzQ1xcdUZGNjFcXHVGRjY0XFx1RkY2NScsXG4gICAgICAgICdhc3RyYWwnOiAnXFx1RDgwMFtcXHVERDAwLVxcdUREMDJcXHVERjlGXFx1REZEMF18XFx1RDgwMVxcdURENkZ8XFx1RDgwMltcXHVEQzU3XFx1REQxRlxcdUREM0ZcXHVERTUwLVxcdURFNThcXHVERTdGXFx1REVGMC1cXHVERUY2XFx1REYzOS1cXHVERjNGXFx1REY5OS1cXHVERjlDXXxcXHVEODAzW1xcdURGNTUtXFx1REY1OV18XFx1RDgwNFtcXHVEQzQ3LVxcdURDNERcXHVEQ0JCXFx1RENCQ1xcdURDQkUtXFx1RENDMVxcdURENDAtXFx1REQ0M1xcdURENzRcXHVERDc1XFx1RERDNS1cXHVEREM4XFx1RERDRFxcdUREREJcXHVERERELVxcdUREREZcXHVERTM4LVxcdURFM0RcXHVERUE5XXxcXHVEODA1W1xcdURDNEItXFx1REM0RlxcdURDNUFcXHVEQzVCXFx1REM1RFxcdURDQzZcXHVEREMxLVxcdURERDdcXHVERTQxLVxcdURFNDNcXHVERTYwLVxcdURFNkNcXHVERjNDLVxcdURGM0VdfFxcdUQ4MDZbXFx1REMzQlxcdURENDQtXFx1REQ0NlxcdURERTJcXHVERTNGLVxcdURFNDZcXHVERTlBLVxcdURFOUNcXHVERTlFLVxcdURFQTJdfFxcdUQ4MDdbXFx1REM0MS1cXHVEQzQ1XFx1REM3MFxcdURDNzFcXHVERUY3XFx1REVGOFxcdURGRkZdfFxcdUQ4MDlbXFx1REM3MC1cXHVEQzc0XXxcXHVEODFBW1xcdURFNkVcXHVERTZGXFx1REVGNVxcdURGMzctXFx1REYzQlxcdURGNDRdfFxcdUQ4MUJbXFx1REU5Ny1cXHVERTlBXFx1REZFMl18XFx1RDgyRlxcdURDOUZ8XFx1RDgzNltcXHVERTg3LVxcdURFOEJdfFxcdUQ4M0FbXFx1REQ1RVxcdURENUZdJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdQcycsXG4gICAgICAgICdhbGlhcyc6ICdPcGVuX1B1bmN0dWF0aW9uJyxcbiAgICAgICAgJ2JtcCc6ICdcXFxcKFxcXFxbXFxcXHtcXHUwRjNBXFx1MEYzQ1xcdTE2OUJcXHUyMDFBXFx1MjAxRVxcdTIwNDVcXHUyMDdEXFx1MjA4RFxcdTIzMDhcXHUyMzBBXFx1MjMyOVxcdTI3NjhcXHUyNzZBXFx1Mjc2Q1xcdTI3NkVcXHUyNzcwXFx1Mjc3MlxcdTI3NzRcXHUyN0M1XFx1MjdFNlxcdTI3RThcXHUyN0VBXFx1MjdFQ1xcdTI3RUVcXHUyOTgzXFx1Mjk4NVxcdTI5ODdcXHUyOTg5XFx1Mjk4QlxcdTI5OERcXHUyOThGXFx1Mjk5MVxcdTI5OTNcXHUyOTk1XFx1Mjk5N1xcdTI5RDhcXHUyOURBXFx1MjlGQ1xcdTJFMjJcXHUyRTI0XFx1MkUyNlxcdTJFMjhcXHUyRTQyXFx1MzAwOFxcdTMwMEFcXHUzMDBDXFx1MzAwRVxcdTMwMTBcXHUzMDE0XFx1MzAxNlxcdTMwMThcXHUzMDFBXFx1MzAxRFxcdUZEM0ZcXHVGRTE3XFx1RkUzNVxcdUZFMzdcXHVGRTM5XFx1RkUzQlxcdUZFM0RcXHVGRTNGXFx1RkU0MVxcdUZFNDNcXHVGRTQ3XFx1RkU1OVxcdUZFNUJcXHVGRTVEXFx1RkYwOFxcdUZGM0JcXHVGRjVCXFx1RkY1RlxcdUZGNjInXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ1MnLFxuICAgICAgICAnYWxpYXMnOiAnU3ltYm9sJyxcbiAgICAgICAgJ2JtcCc6ICdcXFxcJFxcXFwrPC0+XFxcXF5gXFxcXHx+XFx4QTItXFx4QTZcXHhBOFxceEE5XFx4QUNcXHhBRS1cXHhCMVxceEI0XFx4QjhcXHhEN1xceEY3XFx1MDJDMi1cXHUwMkM1XFx1MDJEMi1cXHUwMkRGXFx1MDJFNS1cXHUwMkVCXFx1MDJFRFxcdTAyRUYtXFx1MDJGRlxcdTAzNzVcXHUwMzg0XFx1MDM4NVxcdTAzRjZcXHUwNDgyXFx1MDU4RC1cXHUwNThGXFx1MDYwNi1cXHUwNjA4XFx1MDYwQlxcdTA2MEVcXHUwNjBGXFx1MDZERVxcdTA2RTlcXHUwNkZEXFx1MDZGRVxcdTA3RjZcXHUwN0ZFXFx1MDdGRlxcdTA5RjJcXHUwOUYzXFx1MDlGQVxcdTA5RkJcXHUwQUYxXFx1MEI3MFxcdTBCRjMtXFx1MEJGQVxcdTBDN0ZcXHUwRDRGXFx1MEQ3OVxcdTBFM0ZcXHUwRjAxLVxcdTBGMDNcXHUwRjEzXFx1MEYxNS1cXHUwRjE3XFx1MEYxQS1cXHUwRjFGXFx1MEYzNFxcdTBGMzZcXHUwRjM4XFx1MEZCRS1cXHUwRkM1XFx1MEZDNy1cXHUwRkNDXFx1MEZDRVxcdTBGQ0ZcXHUwRkQ1LVxcdTBGRDhcXHUxMDlFXFx1MTA5RlxcdTEzOTAtXFx1MTM5OVxcdTE2NkRcXHUxN0RCXFx1MTk0MFxcdTE5REUtXFx1MTlGRlxcdTFCNjEtXFx1MUI2QVxcdTFCNzQtXFx1MUI3Q1xcdTFGQkRcXHUxRkJGLVxcdTFGQzFcXHUxRkNELVxcdTFGQ0ZcXHUxRkRELVxcdTFGREZcXHUxRkVELVxcdTFGRUZcXHUxRkZEXFx1MUZGRVxcdTIwNDRcXHUyMDUyXFx1MjA3QS1cXHUyMDdDXFx1MjA4QS1cXHUyMDhDXFx1MjBBMC1cXHUyMEJGXFx1MjEwMFxcdTIxMDFcXHUyMTAzLVxcdTIxMDZcXHUyMTA4XFx1MjEwOVxcdTIxMTRcXHUyMTE2LVxcdTIxMThcXHUyMTFFLVxcdTIxMjNcXHUyMTI1XFx1MjEyN1xcdTIxMjlcXHUyMTJFXFx1MjEzQVxcdTIxM0JcXHUyMTQwLVxcdTIxNDRcXHUyMTRBLVxcdTIxNERcXHUyMTRGXFx1MjE4QVxcdTIxOEJcXHUyMTkwLVxcdTIzMDdcXHUyMzBDLVxcdTIzMjhcXHUyMzJCLVxcdTI0MjZcXHUyNDQwLVxcdTI0NEFcXHUyNDlDLVxcdTI0RTlcXHUyNTAwLVxcdTI3NjdcXHUyNzk0LVxcdTI3QzRcXHUyN0M3LVxcdTI3RTVcXHUyN0YwLVxcdTI5ODJcXHUyOTk5LVxcdTI5RDdcXHUyOURDLVxcdTI5RkJcXHUyOUZFLVxcdTJCNzNcXHUyQjc2LVxcdTJCOTVcXHUyQjk3LVxcdTJCRkZcXHUyQ0U1LVxcdTJDRUFcXHUyRTUwXFx1MkU1MVxcdTJFODAtXFx1MkU5OVxcdTJFOUItXFx1MkVGM1xcdTJGMDAtXFx1MkZENVxcdTJGRjAtXFx1MkZGQlxcdTMwMDRcXHUzMDEyXFx1MzAxM1xcdTMwMjBcXHUzMDM2XFx1MzAzN1xcdTMwM0VcXHUzMDNGXFx1MzA5QlxcdTMwOUNcXHUzMTkwXFx1MzE5MVxcdTMxOTYtXFx1MzE5RlxcdTMxQzAtXFx1MzFFM1xcdTMyMDAtXFx1MzIxRVxcdTMyMkEtXFx1MzI0N1xcdTMyNTBcXHUzMjYwLVxcdTMyN0ZcXHUzMjhBLVxcdTMyQjBcXHUzMkMwLVxcdTMzRkZcXHU0REMwLVxcdTRERkZcXHVBNDkwLVxcdUE0QzZcXHVBNzAwLVxcdUE3MTZcXHVBNzIwXFx1QTcyMVxcdUE3ODlcXHVBNzhBXFx1QTgyOC1cXHVBODJCXFx1QTgzNi1cXHVBODM5XFx1QUE3Ny1cXHVBQTc5XFx1QUI1QlxcdUFCNkFcXHVBQjZCXFx1RkIyOVxcdUZCQjItXFx1RkJDMVxcdUZERkNcXHVGREZEXFx1RkU2MlxcdUZFNjQtXFx1RkU2NlxcdUZFNjlcXHVGRjA0XFx1RkYwQlxcdUZGMUMtXFx1RkYxRVxcdUZGM0VcXHVGRjQwXFx1RkY1Q1xcdUZGNUVcXHVGRkUwLVxcdUZGRTZcXHVGRkU4LVxcdUZGRUVcXHVGRkZDXFx1RkZGRCcsXG4gICAgICAgICdhc3RyYWwnOiAnXFx1RDgwMFtcXHVERDM3LVxcdUREM0ZcXHVERDc5LVxcdUREODlcXHVERDhDLVxcdUREOEVcXHVERDkwLVxcdUREOUNcXHVEREEwXFx1REREMC1cXHVEREZDXXxcXHVEODAyW1xcdURDNzdcXHVEQzc4XFx1REVDOF18XFx1RDgwNVxcdURGM0Z8XFx1RDgwN1tcXHVERkQ1LVxcdURGRjFdfFxcdUQ4MUFbXFx1REYzQy1cXHVERjNGXFx1REY0NV18XFx1RDgyRlxcdURDOUN8XFx1RDgzNFtcXHVEQzAwLVxcdURDRjVcXHVERDAwLVxcdUREMjZcXHVERDI5LVxcdURENjRcXHVERDZBLVxcdURENkNcXHVERDgzXFx1REQ4NFxcdUREOEMtXFx1RERBOVxcdUREQUUtXFx1RERFOFxcdURFMDAtXFx1REU0MVxcdURFNDVcXHVERjAwLVxcdURGNTZdfFxcdUQ4MzVbXFx1REVDMVxcdURFREJcXHVERUZCXFx1REYxNVxcdURGMzVcXHVERjRGXFx1REY2RlxcdURGODlcXHVERkE5XFx1REZDM118XFx1RDgzNltcXHVEQzAwLVxcdURERkZcXHVERTM3LVxcdURFM0FcXHVERTZELVxcdURFNzRcXHVERTc2LVxcdURFODNcXHVERTg1XFx1REU4Nl18XFx1RDgzOFtcXHVERDRGXFx1REVGRl18XFx1RDgzQltcXHVEQ0FDXFx1RENCMFxcdUREMkVcXHVERUYwXFx1REVGMV18XFx1RDgzQ1tcXHVEQzAwLVxcdURDMkJcXHVEQzMwLVxcdURDOTNcXHVEQ0EwLVxcdURDQUVcXHVEQ0IxLVxcdURDQkZcXHVEQ0MxLVxcdURDQ0ZcXHVEQ0QxLVxcdURDRjVcXHVERDBELVxcdUREQURcXHVEREU2LVxcdURFMDJcXHVERTEwLVxcdURFM0JcXHVERTQwLVxcdURFNDhcXHVERTUwXFx1REU1MVxcdURFNjAtXFx1REU2NVxcdURGMDAtXFx1REZGRl18XFx1RDgzRFtcXHVEQzAwLVxcdURFRDdcXHVERUUwLVxcdURFRUNcXHVERUYwLVxcdURFRkNcXHVERjAwLVxcdURGNzNcXHVERjgwLVxcdURGRDhcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REMwMC1cXHVEQzBCXFx1REMxMC1cXHVEQzQ3XFx1REM1MC1cXHVEQzU5XFx1REM2MC1cXHVEQzg3XFx1REM5MC1cXHVEQ0FEXFx1RENCMFxcdURDQjFcXHVERDAwLVxcdURENzhcXHVERDdBLVxcdUREQ0JcXHVERENELVxcdURFNTNcXHVERTYwLVxcdURFNkRcXHVERTcwLVxcdURFNzRcXHVERTc4LVxcdURFN0FcXHVERTgwLVxcdURFODZcXHVERTkwLVxcdURFQThcXHVERUIwLVxcdURFQjZcXHVERUMwLVxcdURFQzJcXHVERUQwLVxcdURFRDZcXHVERjAwLVxcdURGOTJcXHVERjk0LVxcdURGQ0FdJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdTYycsXG4gICAgICAgICdhbGlhcyc6ICdDdXJyZW5jeV9TeW1ib2wnLFxuICAgICAgICAnYm1wJzogJ1xcXFwkXFx4QTItXFx4QTVcXHUwNThGXFx1MDYwQlxcdTA3RkVcXHUwN0ZGXFx1MDlGMlxcdTA5RjNcXHUwOUZCXFx1MEFGMVxcdTBCRjlcXHUwRTNGXFx1MTdEQlxcdTIwQTAtXFx1MjBCRlxcdUE4MzhcXHVGREZDXFx1RkU2OVxcdUZGMDRcXHVGRkUwXFx1RkZFMVxcdUZGRTVcXHVGRkU2JyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODA3W1xcdURGREQtXFx1REZFMF18XFx1RDgzOFxcdURFRkZ8XFx1RDgzQlxcdURDQjAnXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ1NrJyxcbiAgICAgICAgJ2FsaWFzJzogJ01vZGlmaWVyX1N5bWJvbCcsXG4gICAgICAgICdibXAnOiAnXFxcXF5gXFx4QThcXHhBRlxceEI0XFx4QjhcXHUwMkMyLVxcdTAyQzVcXHUwMkQyLVxcdTAyREZcXHUwMkU1LVxcdTAyRUJcXHUwMkVEXFx1MDJFRi1cXHUwMkZGXFx1MDM3NVxcdTAzODRcXHUwMzg1XFx1MUZCRFxcdTFGQkYtXFx1MUZDMVxcdTFGQ0QtXFx1MUZDRlxcdTFGREQtXFx1MUZERlxcdTFGRUQtXFx1MUZFRlxcdTFGRkRcXHUxRkZFXFx1MzA5QlxcdTMwOUNcXHVBNzAwLVxcdUE3MTZcXHVBNzIwXFx1QTcyMVxcdUE3ODlcXHVBNzhBXFx1QUI1QlxcdUFCNkFcXHVBQjZCXFx1RkJCMi1cXHVGQkMxXFx1RkYzRVxcdUZGNDBcXHVGRkUzJyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODNDW1xcdURGRkItXFx1REZGRl0nXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ1NtJyxcbiAgICAgICAgJ2FsaWFzJzogJ01hdGhfU3ltYm9sJyxcbiAgICAgICAgJ2JtcCc6ICdcXFxcKzwtPlxcXFx8flxceEFDXFx4QjFcXHhEN1xceEY3XFx1MDNGNlxcdTA2MDYtXFx1MDYwOFxcdTIwNDRcXHUyMDUyXFx1MjA3QS1cXHUyMDdDXFx1MjA4QS1cXHUyMDhDXFx1MjExOFxcdTIxNDAtXFx1MjE0NFxcdTIxNEJcXHUyMTkwLVxcdTIxOTRcXHUyMTlBXFx1MjE5QlxcdTIxQTBcXHUyMUEzXFx1MjFBNlxcdTIxQUVcXHUyMUNFXFx1MjFDRlxcdTIxRDJcXHUyMUQ0XFx1MjFGNC1cXHUyMkZGXFx1MjMyMFxcdTIzMjFcXHUyMzdDXFx1MjM5Qi1cXHUyM0IzXFx1MjNEQy1cXHUyM0UxXFx1MjVCN1xcdTI1QzFcXHUyNUY4LVxcdTI1RkZcXHUyNjZGXFx1MjdDMC1cXHUyN0M0XFx1MjdDNy1cXHUyN0U1XFx1MjdGMC1cXHUyN0ZGXFx1MjkwMC1cXHUyOTgyXFx1Mjk5OS1cXHUyOUQ3XFx1MjlEQy1cXHUyOUZCXFx1MjlGRS1cXHUyQUZGXFx1MkIzMC1cXHUyQjQ0XFx1MkI0Ny1cXHUyQjRDXFx1RkIyOVxcdUZFNjJcXHVGRTY0LVxcdUZFNjZcXHVGRjBCXFx1RkYxQy1cXHVGRjFFXFx1RkY1Q1xcdUZGNUVcXHVGRkUyXFx1RkZFOS1cXHVGRkVDJyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODM1W1xcdURFQzFcXHVERURCXFx1REVGQlxcdURGMTVcXHVERjM1XFx1REY0RlxcdURGNkZcXHVERjg5XFx1REZBOVxcdURGQzNdfFxcdUQ4M0JbXFx1REVGMFxcdURFRjFdJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdTbycsXG4gICAgICAgICdhbGlhcyc6ICdPdGhlcl9TeW1ib2wnLFxuICAgICAgICAnYm1wJzogJ1xceEE2XFx4QTlcXHhBRVxceEIwXFx1MDQ4MlxcdTA1OERcXHUwNThFXFx1MDYwRVxcdTA2MEZcXHUwNkRFXFx1MDZFOVxcdTA2RkRcXHUwNkZFXFx1MDdGNlxcdTA5RkFcXHUwQjcwXFx1MEJGMy1cXHUwQkY4XFx1MEJGQVxcdTBDN0ZcXHUwRDRGXFx1MEQ3OVxcdTBGMDEtXFx1MEYwM1xcdTBGMTNcXHUwRjE1LVxcdTBGMTdcXHUwRjFBLVxcdTBGMUZcXHUwRjM0XFx1MEYzNlxcdTBGMzhcXHUwRkJFLVxcdTBGQzVcXHUwRkM3LVxcdTBGQ0NcXHUwRkNFXFx1MEZDRlxcdTBGRDUtXFx1MEZEOFxcdTEwOUVcXHUxMDlGXFx1MTM5MC1cXHUxMzk5XFx1MTY2RFxcdTE5NDBcXHUxOURFLVxcdTE5RkZcXHUxQjYxLVxcdTFCNkFcXHUxQjc0LVxcdTFCN0NcXHUyMTAwXFx1MjEwMVxcdTIxMDMtXFx1MjEwNlxcdTIxMDhcXHUyMTA5XFx1MjExNFxcdTIxMTZcXHUyMTE3XFx1MjExRS1cXHUyMTIzXFx1MjEyNVxcdTIxMjdcXHUyMTI5XFx1MjEyRVxcdTIxM0FcXHUyMTNCXFx1MjE0QVxcdTIxNENcXHUyMTREXFx1MjE0RlxcdTIxOEFcXHUyMThCXFx1MjE5NS1cXHUyMTk5XFx1MjE5Qy1cXHUyMTlGXFx1MjFBMVxcdTIxQTJcXHUyMUE0XFx1MjFBNVxcdTIxQTctXFx1MjFBRFxcdTIxQUYtXFx1MjFDRFxcdTIxRDBcXHUyMUQxXFx1MjFEM1xcdTIxRDUtXFx1MjFGM1xcdTIzMDAtXFx1MjMwN1xcdTIzMEMtXFx1MjMxRlxcdTIzMjItXFx1MjMyOFxcdTIzMkItXFx1MjM3QlxcdTIzN0QtXFx1MjM5QVxcdTIzQjQtXFx1MjNEQlxcdTIzRTItXFx1MjQyNlxcdTI0NDAtXFx1MjQ0QVxcdTI0OUMtXFx1MjRFOVxcdTI1MDAtXFx1MjVCNlxcdTI1QjgtXFx1MjVDMFxcdTI1QzItXFx1MjVGN1xcdTI2MDAtXFx1MjY2RVxcdTI2NzAtXFx1Mjc2N1xcdTI3OTQtXFx1MjdCRlxcdTI4MDAtXFx1MjhGRlxcdTJCMDAtXFx1MkIyRlxcdTJCNDVcXHUyQjQ2XFx1MkI0RC1cXHUyQjczXFx1MkI3Ni1cXHUyQjk1XFx1MkI5Ny1cXHUyQkZGXFx1MkNFNS1cXHUyQ0VBXFx1MkU1MFxcdTJFNTFcXHUyRTgwLVxcdTJFOTlcXHUyRTlCLVxcdTJFRjNcXHUyRjAwLVxcdTJGRDVcXHUyRkYwLVxcdTJGRkJcXHUzMDA0XFx1MzAxMlxcdTMwMTNcXHUzMDIwXFx1MzAzNlxcdTMwMzdcXHUzMDNFXFx1MzAzRlxcdTMxOTBcXHUzMTkxXFx1MzE5Ni1cXHUzMTlGXFx1MzFDMC1cXHUzMUUzXFx1MzIwMC1cXHUzMjFFXFx1MzIyQS1cXHUzMjQ3XFx1MzI1MFxcdTMyNjAtXFx1MzI3RlxcdTMyOEEtXFx1MzJCMFxcdTMyQzAtXFx1MzNGRlxcdTREQzAtXFx1NERGRlxcdUE0OTAtXFx1QTRDNlxcdUE4MjgtXFx1QTgyQlxcdUE4MzZcXHVBODM3XFx1QTgzOVxcdUFBNzctXFx1QUE3OVxcdUZERkRcXHVGRkU0XFx1RkZFOFxcdUZGRURcXHVGRkVFXFx1RkZGQ1xcdUZGRkQnLFxuICAgICAgICAnYXN0cmFsJzogJ1xcdUQ4MDBbXFx1REQzNy1cXHVERDNGXFx1REQ3OS1cXHVERDg5XFx1REQ4Qy1cXHVERDhFXFx1REQ5MC1cXHVERDlDXFx1RERBMFxcdURERDAtXFx1RERGQ118XFx1RDgwMltcXHVEQzc3XFx1REM3OFxcdURFQzhdfFxcdUQ4MDVcXHVERjNGfFxcdUQ4MDdbXFx1REZENS1cXHVERkRDXFx1REZFMS1cXHVERkYxXXxcXHVEODFBW1xcdURGM0MtXFx1REYzRlxcdURGNDVdfFxcdUQ4MkZcXHVEQzlDfFxcdUQ4MzRbXFx1REMwMC1cXHVEQ0Y1XFx1REQwMC1cXHVERDI2XFx1REQyOS1cXHVERDY0XFx1REQ2QS1cXHVERDZDXFx1REQ4M1xcdUREODRcXHVERDhDLVxcdUREQTlcXHVEREFFLVxcdURERThcXHVERTAwLVxcdURFNDFcXHVERTQ1XFx1REYwMC1cXHVERjU2XXxcXHVEODM2W1xcdURDMDAtXFx1RERGRlxcdURFMzctXFx1REUzQVxcdURFNkQtXFx1REU3NFxcdURFNzYtXFx1REU4M1xcdURFODVcXHVERTg2XXxcXHVEODM4XFx1REQ0RnxcXHVEODNCW1xcdURDQUNcXHVERDJFXXxcXHVEODNDW1xcdURDMDAtXFx1REMyQlxcdURDMzAtXFx1REM5M1xcdURDQTAtXFx1RENBRVxcdURDQjEtXFx1RENCRlxcdURDQzEtXFx1RENDRlxcdURDRDEtXFx1RENGNVxcdUREMEQtXFx1RERBRFxcdURERTYtXFx1REUwMlxcdURFMTAtXFx1REUzQlxcdURFNDAtXFx1REU0OFxcdURFNTBcXHVERTUxXFx1REU2MC1cXHVERTY1XFx1REYwMC1cXHVERkZBXXxcXHVEODNEW1xcdURDMDAtXFx1REVEN1xcdURFRTAtXFx1REVFQ1xcdURFRjAtXFx1REVGQ1xcdURGMDAtXFx1REY3M1xcdURGODAtXFx1REZEOFxcdURGRTAtXFx1REZFQl18XFx1RDgzRVtcXHVEQzAwLVxcdURDMEJcXHVEQzEwLVxcdURDNDdcXHVEQzUwLVxcdURDNTlcXHVEQzYwLVxcdURDODdcXHVEQzkwLVxcdURDQURcXHVEQ0IwXFx1RENCMVxcdUREMDAtXFx1REQ3OFxcdUREN0EtXFx1RERDQlxcdUREQ0QtXFx1REU1M1xcdURFNjAtXFx1REU2RFxcdURFNzAtXFx1REU3NFxcdURFNzgtXFx1REU3QVxcdURFODAtXFx1REU4NlxcdURFOTAtXFx1REVBOFxcdURFQjAtXFx1REVCNlxcdURFQzAtXFx1REVDMlxcdURFRDAtXFx1REVENlxcdURGMDAtXFx1REY5MlxcdURGOTQtXFx1REZDQV0nXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ1onLFxuICAgICAgICAnYWxpYXMnOiAnU2VwYXJhdG9yJyxcbiAgICAgICAgJ2JtcCc6ICcgXFx4QTBcXHUxNjgwXFx1MjAwMC1cXHUyMDBBXFx1MjAyOFxcdTIwMjlcXHUyMDJGXFx1MjA1RlxcdTMwMDAnXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ1psJyxcbiAgICAgICAgJ2FsaWFzJzogJ0xpbmVfU2VwYXJhdG9yJyxcbiAgICAgICAgJ2JtcCc6ICdcXHUyMDI4J1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdacCcsXG4gICAgICAgICdhbGlhcyc6ICdQYXJhZ3JhcGhfU2VwYXJhdG9yJyxcbiAgICAgICAgJ2JtcCc6ICdcXHUyMDI5J1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdacycsXG4gICAgICAgICdhbGlhcyc6ICdTcGFjZV9TZXBhcmF0b3InLFxuICAgICAgICAnYm1wJzogJyBcXHhBMFxcdTE2ODBcXHUyMDAwLVxcdTIwMEFcXHUyMDJGXFx1MjA1RlxcdTMwMDAnXG4gICAgfVxuXTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5wYXJzZSA9IHZvaWQgMDtcbmZ1bmN0aW9uIGRlY29kZShzLCBzZXAgPSAnOycpIHtcbiAgICBzID0gcy5yZXBsYWNlKC9cXG4vZywgJycpO1xuICAgIGxldCBwb3MgPSAwO1xuICAgIGNvbnN0IHJlY29yZHMgPSBbJyddO1xuICAgIHdoaWxlIChwb3MgPCBzLmxlbmd0aCkge1xuICAgICAgICBzd2l0Y2ggKHNbcG9zXSkge1xuICAgICAgICAgICAgY2FzZSAnXFxcXCc6XG4gICAgICAgICAgICAgICAgcG9zKys7XG4gICAgICAgICAgICAgICAgcmVjb3Jkc1swXSArPSBzW3Bvc107XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIHNlcDpcbiAgICAgICAgICAgICAgICByZWNvcmRzLnVuc2hpZnQoJycpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZWNvcmRzWzBdICs9IHNbcG9zXTtcbiAgICAgICAgfVxuICAgICAgICBwb3MrKztcbiAgICB9XG4gICAgcmV0dXJuIHJlY29yZHMucmV2ZXJzZSgpLmZpbHRlcihyZWNvcmQgPT4gcmVjb3JkKTtcbn1cbmNvbnN0IHByZWZpeGVzID0ge1xuICAgIGZpbGVEaXJlY3Rvcnk6ICdqYWJyZWYtbWV0YTogZmlsZURpcmVjdG9yeTonLFxuICAgIGdyb3Vwc3ZlcnNpb246ICdqYWJyZWYtbWV0YTogZ3JvdXBzdmVyc2lvbjonLFxuICAgIGdyb3Vwc3RyZWU6ICdqYWJyZWYtbWV0YTogZ3JvdXBzdHJlZTonLFxuICAgIGdyb3VwaW5nOiAnamFicmVmLW1ldGE6IGdyb3VwaW5nOicsXG59O1xuLyoqXG4gKiBJbXBvcnQgdGhlIEphYlJlZiBncm91cHMgZnJvbSB0aGUgYEBzdHJpbmdgIGNvbW1lbnRzIGluIHdoaWNoIHRoZXkgd2VyZSBzdG9yZWQuIFlvdSB3b3VsZCB0eXBpY2FsbHkgcGFzcyB0aGUgY29tbWVudHMgcGFyc2VkIGJ5IFtbYmlidGV4LnBhcnNlXV0gaW4gaGVyZS5cbiAqXG4gKiBKYWJSZWYga25vd3Mgc2V2ZXJhbCBncm91cCB0eXBlcywgYW5kIHRoaXMgcGFyc2VyIHBhcnNlcyBtb3N0LCBidXQgbm90IGFsbCBvZiB0aGVtOlxuICpcbiAqICogaW5kZXBlbmRlbnQgZ3JvdXA6IHRoZSBrZXlzIGxpc3RlZCBpbiB0aGUgZ3JvdXAgYXJlIHRoZSBlbnRyaWVzIHRoYXQgYXJlIGNvbnNpZGVyZWQgdG8gYmVsb25nIHRvIGl0XG4gKiAqIGludGVyc2VjdGlvbjogdGhlIGtleXMgbGlzdGVkIGluIHRoZSBncm91cCBhcmUgY29uc2lkZXJlZCB0byBiZWxvbmcgdG8gdGhlIGdyb3VwIGlmIHRoZXkncmUgYWxzbyBpbiB0aGUgcGFyZW50IGdyb3VwXG4gKiAqIHVuaW9uOiB0aGUga2V5cyBsaXN0ZWQgaW4gdGhlIGdyb3VwIGFyZSBjb25zaWRlcmVkIHRvIGJlbG9uZyB0byB0aGUgZ3JvdXAsIGFuZCBhbHNvIHRoZSBrZXlzIHRoYXQgYXJlIGluIHRoZSBwYXJlbnQgZ3JvdXBcbiAqICogcXVlcnk6IG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBwYXJzZXJcbiAqL1xuZnVuY3Rpb24gcGFyc2UoY29tbWVudHMpIHtcbiAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICAgIHJvb3Q6IFtdLFxuICAgICAgICBncm91cHM6IHt9LFxuICAgICAgICBmaWxlRGlyZWN0b3J5OiAnJyxcbiAgICAgICAgdmVyc2lvbjogJycsXG4gICAgfTtcbiAgICBjb25zdCBsZXZlbHMgPSBbXTtcbiAgICBjb25zdCBkZWNvZGVkID0ge1xuICAgICAgICBmaWxlRGlyZWN0b3J5OiBudWxsLFxuICAgICAgICBncm91cHN2ZXJzaW9uOiBudWxsLFxuICAgICAgICBncm91cHN0cmVlOiBudWxsLFxuICAgICAgICBncm91cGluZzogbnVsbCxcbiAgICB9O1xuICAgIGZvciAoY29uc3QgY29tbWVudCBvZiBjb21tZW50cykge1xuICAgICAgICBmb3IgKGNvbnN0IFttZXRhLCBwcmVmaXhdIG9mIE9iamVjdC5lbnRyaWVzKHByZWZpeGVzKSkge1xuICAgICAgICAgICAgaWYgKGNvbW1lbnQuc3RhcnRzV2l0aChwcmVmaXgpKSB7XG4gICAgICAgICAgICAgICAgZGVjb2RlZFttZXRhXSA9IGRlY29kZShjb21tZW50LnN1YnN0cmluZyhwcmVmaXgubGVuZ3RoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVzdWx0LnZlcnNpb24gPSBkZWNvZGVkLmdyb3Vwc3ZlcnNpb24gJiYgZGVjb2RlZC5ncm91cHN2ZXJzaW9uWzBdO1xuICAgIHJlc3VsdC5maWxlRGlyZWN0b3J5ID0gZGVjb2RlZC5maWxlRGlyZWN0b3J5ICYmIGRlY29kZWQuZmlsZURpcmVjdG9yeVswXTtcbiAgICBmb3IgKGNvbnN0IHRyZWUgb2YgWydncm91cHN0cmVlJywgJ2dyb3VwaW5nJ10pIHtcbiAgICAgICAgaWYgKCFkZWNvZGVkW3RyZWVdKVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIGZvciAoY29uc3QgZW5jb2RlZCBvZiBkZWNvZGVkW3RyZWVdKSB7XG4gICAgICAgICAgICBjb25zdCBmaWVsZHMgPSBkZWNvZGUoZW5jb2RlZCk7XG4gICAgICAgICAgICBjb25zdCBsZXZlbF90eXBlX25hbWUgPSBkZWNvZGUoZmllbGRzLnNoaWZ0KCksICc6Jyk7XG4gICAgICAgICAgICBjb25zdCBtID0gL14oWzAtOV0rKSAoLispLy5leGVjKGxldmVsX3R5cGVfbmFtZVswXSk7XG4gICAgICAgICAgICBpZiAoIW0pXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjb25zdCBsZXZlbCA9IHBhcnNlSW50KG1bMV0pO1xuICAgICAgICAgICAgY29uc3QgdHlwZSA9IG1bMl07IC8vIHRlc3QgZm9yIFN0YXRpY0dyb3VwP1xuICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdBbGxFbnRyaWVzR3JvdXAnKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyByb290XG4gICAgICAgICAgICBjb25zdCBuYW1lID0gbGV2ZWxfdHlwZV9uYW1lWzFdO1xuICAgICAgICAgICAgY29uc3QgaW50ZXJzZWN0aW9uID0gZGVjb2RlKGZpZWxkcy5zaGlmdCgpKVswXTtcbiAgICAgICAgICAgIGNvbnN0IGtleXMgPSB0cmVlID09PSAnZ3JvdXBpbmcnID8gW10gOiBmaWVsZHMubWFwKGZpZWxkID0+IGRlY29kZShmaWVsZClbMF0pO1xuICAgICAgICAgICAgY29uc3QgZ3JvdXAgPSB7XG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICBlbnRyaWVzOiBrZXlzLFxuICAgICAgICAgICAgICAgIGdyb3VwczogW10sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVzdWx0Lmdyb3Vwc1tuYW1lXSA9IHJlc3VsdC5ncm91cHNbbmFtZV0gfHwgZ3JvdXA7XG4gICAgICAgICAgICBpZiAobGV2ZWxzLmxlbmd0aCA8IGxldmVsKSB7XG4gICAgICAgICAgICAgICAgbGV2ZWxzLnB1c2goZ3JvdXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgbGV2ZWxzW2xldmVsIC0gMV0gPSBncm91cDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsZXZlbCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5yb290LnB1c2goZ3JvdXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gbGV2ZWxzW2xldmVsIC0gMl07XG4gICAgICAgICAgICAgICAgc3dpdGNoIChpbnRlcnNlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnMCc6IC8vIGluZGVwZW5kZW50XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnMSc6IC8vIGludGVyc2VjdFxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAuZW50cmllcyA9IGdyb3VwLmVudHJpZXMuZmlsdGVyKGtleSA9PiBwYXJlbnQuZW50cmllcy5pbmNsdWRlcyhrZXkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICcyJzogLy8gdW5pb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmVudHJpZXMgPSBncm91cC5lbnRyaWVzLmNvbmNhdChwYXJlbnQuZW50cmllcy5maWx0ZXIoa2V5ID0+ICFncm91cC5lbnRyaWVzLmluY2x1ZGVzKGtleSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXZlbHNbbGV2ZWwgLSAyXS5ncm91cHMucHVzaChncm91cCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmV4cG9ydHMucGFyc2UgPSBwYXJzZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWphYnJlZi5qcy5tYXAiLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuamFicmVmID0gZXhwb3J0cy5jaHVua2VyID0gZXhwb3J0cy5hc3QgPSBleHBvcnRzLnBhcnNlID0gdm9pZCAwO1xuY29uc3QgYmlidGV4ID0gcmVxdWlyZShcIi4vZ3JhbW1hclwiKTtcbmNvbnN0IGNodW5rZXJfMSA9IHJlcXVpcmUoXCIuL2NodW5rZXJcIik7XG5jb25zdCB1bmljb2RlMmxhdGV4XzEgPSByZXF1aXJlKFwidW5pY29kZTJsYXRleFwiKTtcbmNsYXNzIFBhcnNlckVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKG1lc3NhZ2UsIG5vZGUpIHtcbiAgICAgICAgc3VwZXIobWVzc2FnZSk7IC8vICdFcnJvcicgYnJlYWtzIHByb3RvdHlwZSBjaGFpbiBoZXJlXG4gICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLCBuZXcudGFyZ2V0LnByb3RvdHlwZSk7IC8vIHJlc3RvcmUgcHJvdG90eXBlIGNoYWluXG4gICAgICAgIHRoaXMubmFtZSA9IHRoaXMuY29uc3RydWN0b3IubmFtZTtcbiAgICAgICAgdGhpcy5ub2RlID0gbm9kZTtcbiAgICB9XG59XG5jbGFzcyBUZVhFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcihtZXNzYWdlLCBub2RlLCB0ZXh0KSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpOyAvLyAnRXJyb3InIGJyZWFrcyBwcm90b3R5cGUgY2hhaW4gaGVyZVxuICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgbmV3LnRhcmdldC5wcm90b3R5cGUpOyAvLyByZXN0b3JlIHByb3RvdHlwZSBjaGFpblxuICAgICAgICB0aGlzLm5hbWUgPSB0aGlzLmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gICAgICAgIHRoaXMudGV4dCA9IHRleHQ7XG4gICAgfVxufVxuY29uc3QgY2hhckNhdGVnb3JpZXMgPSByZXF1aXJlKFwieHJlZ2V4cC90b29scy9vdXRwdXQvY2F0ZWdvcmllc1wiKTtcbmNvbnN0IGNoYXJDbGFzcyA9IHtcbiAgICBMdTogY2hhckNhdGVnb3JpZXMuZmlsdGVyKGNhdCA9PiBbJ1VwcGVyY2FzZV9MZXR0ZXInLCAnVGl0bGVjYXNlX0xldHRlciddLmluY2x1ZGVzKGNhdC5hbGlhcykpLm1hcChjYXQgPT4gY2F0LmJtcCkuam9pbignJyksXG4gICAgTGw6IGNoYXJDYXRlZ29yaWVzLmZpbmQoY2F0ID0+IGNhdC5hbGlhcyA9PT0gJ0xvd2VyY2FzZV9MZXR0ZXInKS5ibXAsXG4gICAgTG5vdEx1OiBjaGFyQ2F0ZWdvcmllcy5maWx0ZXIoY2F0ID0+IFsnTG93ZXJjYXNlX0xldHRlcicsICdNb2RpZmllcl9MZXR0ZXInLCAnT3RoZXJfTGV0dGVyJywgJ05vbnNwYWNpbmdfTWFyaycsICdTcGFjaW5nX01hcmsnLCAnRGVjaW1hbF9OdW1iZXInLCAnTGV0dGVyX051bWJlciddLmluY2x1ZGVzKGNhdC5hbGlhcykpLm1hcChjYXQgPT4gY2F0LmJtcCkuam9pbignJyksXG4gICAgUDogY2hhckNhdGVnb3JpZXMuZmluZChjYXQgPT4gY2F0LmFsaWFzID09PSAnUHVuY3R1YXRpb24nKS5ibXAsXG4gICAgTDogY2hhckNhdGVnb3JpZXMuZmluZChjYXQgPT4gY2F0LmFsaWFzID09PSAnTGV0dGVyJykuYm1wLFxuICAgIE46IGNoYXJDYXRlZ29yaWVzLmZpbHRlcihjYXQgPT4gWydEZWNpbWFsX051bWJlcicsICdMZXR0ZXJfTnVtYmVyJ10uaW5jbHVkZXMoY2F0LmFsaWFzKSkubWFwKGNhdCA9PiBjYXQuYm1wKS5qb2luKCcnKSxcbiAgICBBbHBoYU51bTogY2hhckNhdGVnb3JpZXMuZmlsdGVyKGNhdCA9PiBbJ0xldHRlcicsICdEZWNpbWFsX051bWJlcicsICdMZXR0ZXJfTnVtYmVyJ10uaW5jbHVkZXMoY2F0LmFsaWFzKSkubWFwKGNhdCA9PiBjYXQuYm1wKS5qb2luKCcnKSxcbiAgICBMQzogY2hhckNhdGVnb3JpZXMuZmluZChjYXQgPT4gY2F0LmFsaWFzID09PSAnQ2FzZWRfTGV0dGVyJykuYm1wLFxufTtcbmNvbnN0IG1hcmtlciA9IHtcbiAgICBhbmQ6ICdcXHUwMDAxJyxcbiAgICBjb21tYTogJ1xcdTAwMDInLFxuICAgIHNwYWNlOiAnXFx1MDAwMycsXG4gICAgbGl0ZXJhbDogJ1xcdTAwMDQnLFxuICAgIG1hcmt1cDogJ1xcdTAwMDUnLFxuICAgIHJlOiB7XG4gICAgICAgIGFuZDogLy4vLFxuICAgICAgICBjb21tYTogLy4vLFxuICAgICAgICBzcGFjZTogLy4vLFxuICAgICAgICBsaXRlcmFsOiAvLi8sXG4gICAgICAgIGxpdGVyYWxOYW1lOiAvLi8sXG4gICAgfSxcbiAgICBjbGVhbihzKSB7XG4gICAgICAgIHJldHVybiBzLnJlcGxhY2UobWFya2VyLnJlLnNwYWNlLCAnICcpLnJlcGxhY2UobWFya2VyLnJlLmNvbW1hLCAnLCAnKS5yZXBsYWNlKG1hcmtlci5yZS5saXRlcmFsLCAnJyk7XG4gICAgfSxcbn07XG5tYXJrZXIucmUgPSB7XG4gICAgYW5kOiBuZXcgUmVnRXhwKG1hcmtlci5hbmQsICdnJyksXG4gICAgY29tbWE6IG5ldyBSZWdFeHAobWFya2VyLmNvbW1hLCAnZycpLFxuICAgIHNwYWNlOiBuZXcgUmVnRXhwKG1hcmtlci5zcGFjZSwgJ2cnKSxcbiAgICBsaXRlcmFsOiBuZXcgUmVnRXhwKG1hcmtlci5saXRlcmFsLCAnZycpLFxuICAgIGxpdGVyYWxOYW1lOiBuZXcgUmVnRXhwKGBeJHttYXJrZXIubGl0ZXJhbH0oW14ke21hcmtlci5saXRlcmFsfV0qKSR7bWFya2VyLmxpdGVyYWx9JGApLFxufTtcbmNvbnN0IHByZXNlcnZlQ2FzZSA9IHtcbiAgICBsZWFkaW5nQ2FwOiBuZXcgUmVnRXhwKGBeWyR7Y2hhckNsYXNzLkx1fV1bJHtjaGFyQ2xhc3MuTG5vdEx1fV0rWyR7Y2hhckNsYXNzLlB9XT8kYCksXG4gICAgYWxsQ2FwczogbmV3IFJlZ0V4cChgXlske2NoYXJDbGFzcy5MdX0ke2NoYXJDbGFzcy5OfV17Mix9JGApLFxuICAgIGFsbExvd2VyOiBuZXcgUmVnRXhwKGBeWyR7Y2hhckNsYXNzLkxsfSR7Y2hhckNsYXNzLk59XXsyLH0kYCksXG4gICAgam9pbmVkOiBuZXcgUmVnRXhwKGBeWyR7Y2hhckNsYXNzLkx1fV1bJHtjaGFyQ2xhc3MuTG5vdEx1fV0qKFstK11bJHtjaGFyQ2xhc3MuTH0ke2NoYXJDbGFzcy5OfV0rKSpbJHtjaGFyQ2xhc3MuUH1dKiRgKSxcbiAgICBoYXNVcHBlcjogbmV3IFJlZ0V4cChgWyR7Y2hhckNsYXNzLkx1fV1gKSxcbiAgICBoYXNMb3dlcjogbmV3IFJlZ0V4cChgWyR7Y2hhckNsYXNzLkxsfV1gKSxcbiAgICBpc051bWJlcjogL15bMC05XSskLyxcbiAgICBoYXNBbHBoYTogbmV3IFJlZ0V4cChgWyR7Y2hhckNsYXNzLkx9XWApLFxuICAgIGhhc0FscGhhTnVtOiBuZXcgUmVnRXhwKGBbJHtjaGFyQ2xhc3MuQWxwaGFOdW19XWApLFxuICAgIG5vdEFscGhhTnVtOiBuZXcgUmVnRXhwKGBbXiR7Y2hhckNsYXNzLkFscGhhTnVtfV1gLCAnZycpLFxuICAgIHNlbnRlbmNlU3RhcnQ6IG5ldyBSZWdFeHAoYChefChbXFx1MjAxNDo/IS5dXFxcXHMrKSlbJHtjaGFyQ2xhc3MuTHV9XWAsICdnJyksXG4gICAgbWFya3VwOiAvPFxcLz9zcGFuW14+XSo+L2csXG4gICAgYWNyb255bTogbmV3IFJlZ0V4cChgLipcXFxcLiR7bWFya2VyLm1hcmt1cH0qWyR7Y2hhckNsYXNzLkx1fV0ke21hcmtlci5tYXJrdXB9KlxcXFwuJGApLFxuICAgIG5vdENhc2VTZW5zaXRpdmU6IG5ldyBSZWdFeHAoYFteJHtjaGFyQ2xhc3MuTEN9XWApLFxuICAgIGlzQ2FzZVNlbnNpdGl2ZTogbmV3IFJlZ0V4cChgWyR7Y2hhckNsYXNzLkxDfV1gKSxcbiAgICBxdW90ZWQ6IC8oXCJbXlwiXStcIil8KOKAnFte4oCcXSvigJwpL2csXG59O1xuY29uc3QgZmllbGRzID0ge1xuICAgIGNyZWF0b3I6IFtcbiAgICAgICAgJ2F1dGhvcicsXG4gICAgICAgICdib29rYXV0aG9yJyxcbiAgICAgICAgJ2NvbGxhYm9yYXRvcicsXG4gICAgICAgICdjb21tZW50YXRvcicsXG4gICAgICAgICdkaXJlY3RvcicsXG4gICAgICAgICdlZGl0b3InLFxuICAgICAgICAnZWRpdG9yYScsXG4gICAgICAgICdlZGl0b3JiJyxcbiAgICAgICAgJ2VkaXRvcnMnLFxuICAgICAgICAnaG9sZGVyJyxcbiAgICAgICAgJ3NjcmlwdHdyaXRlcicsXG4gICAgICAgICd0cmFuc2xhdG9yJyxcbiAgICBdLFxuICAgIHRpdGxlOiBbXG4gICAgICAgICd0aXRsZScsXG4gICAgICAgICdzZXJpZXMnLFxuICAgICAgICAnc2hvcnR0aXRsZScsXG4gICAgICAgICdib29rdGl0bGUnLFxuICAgICAgICAndHlwZScsXG4gICAgICAgICdvcmlndGl0bGUnLFxuICAgICAgICAnbWFpbnRpdGxlJyxcbiAgICAgICAgJ2V2ZW50dGl0bGUnLFxuICAgIF0sXG4gICAgdW5uZXN0OiBbXG4gICAgICAgICdwdWJsaXNoZXInLFxuICAgICAgICAnbG9jYXRpb24nLFxuICAgIF0sXG4gICAgdmVyYmF0aW06IFtcbiAgICAgICAgJ3VybCcsXG4gICAgICAgICdkb2knLFxuICAgICAgICAnZmlsZScsXG4gICAgICAgICdmaWxlcycsXG4gICAgICAgICdlcHJpbnQnLFxuICAgICAgICAndmVyYmEnLFxuICAgICAgICAndmVyYmInLFxuICAgICAgICAndmVyYmMnLFxuICAgICAgICAnZ3JvdXBzJyxcbiAgICBdLFxuICAgIGh0bWw6IFtcbiAgICAgICAgJ2Fubm90YXRpb24nLFxuICAgICAgICAnY29tbWVudCcsXG4gICAgICAgICdhbm5vdGUnLFxuICAgICAgICAncmV2aWV3JyxcbiAgICAgICAgJ25vdGVzJyxcbiAgICAgICAgJ25vdGUnLFxuICAgIF0sXG4gICAgdW5hYmJyZXY6IFtcbiAgICAgICAgJ2pvdXJuYWwnLFxuICAgICAgICAnam91cm5hbHRpdGxlJyxcbiAgICAgICAgJ2pvdXJuYWwtZnVsbCcsXG4gICAgXSxcbn07XG5jb25zdCBlbmdsaXNoID0gW1xuICAgICdhbWVyaWNhbicsXG4gICAgJ2JyaXRpc2gnLFxuICAgICdjYW5hZGlhbicsXG4gICAgJ2VuZ2xpc2gnLFxuICAgICdhdXN0cmFsaWFuJyxcbiAgICAnbmV3emVhbGFuZCcsXG4gICAgJ3VzZW5nbGlzaCcsXG4gICAgJ3VrZW5nbGlzaCcsXG4gICAgJ2VuJyxcbiAgICAnZW5nJyxcbiAgICAnZW4tYXUnLFxuICAgICdlbi1ieicsXG4gICAgJ2VuLWNhJyxcbiAgICAnZW4tY2InLFxuICAgICdlbi1nYicsXG4gICAgJ2VuLWllJyxcbiAgICAnZW4tam0nLFxuICAgICdlbi1ueicsXG4gICAgJ2VuLXBoJyxcbiAgICAnZW4tdHQnLFxuICAgICdlbi11cycsXG4gICAgJ2VuLXphJyxcbiAgICAnZW4tencnLFxuICAgICdhbmdsYWlzJyxcbl07XG5jbGFzcyBQYXJzZXIge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMgPSB7fSkge1xuICAgICAgICB0aGlzLmluX3ByZWFtYmxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMucHJlYW1ibGUgPSBbXTtcbiAgICAgICAgdGhpcy5sb2cgPSBmdW5jdGlvbiAoc3RyKSB7IH07IC8vIHRzbGludDpkaXNhYmxlLWxpbmUgdmFyaWFibGUtbmFtZSBvbmx5LWFycm93LWZ1bmN0aW9ucyBuby1lbXB0eVxuICAgICAgICBmb3IgKGNvbnN0IFtvcHRpb24sIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvcHRpb25zKSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgICAgICAgICAgZGVsZXRlIG9wdGlvbnNbb3B0aW9uXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5lcnJvckhhbmRsZXIgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgb25seS1hcnJvdy1mdW5jdGlvbnMgbm8tZW1wdHlcbiAgICAgICAgICAgIG9wdGlvbnMuZXJyb3JIYW5kbGVyID0gZnVuY3Rpb24gKGVycikgeyB9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG9wdGlvbnMuZXJyb3JIYW5kbGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBvbmx5LWFycm93LWZ1bmN0aW9uc1xuICAgICAgICAgICAgb3B0aW9ucy5lcnJvckhhbmRsZXIgPSBmdW5jdGlvbiAoZXJyKSB7IHRocm93IGVycjsgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMuc2VudGVuY2VDYXNlID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIG9wdGlvbnMuc2VudGVuY2VDYXNlID0gb3B0aW9ucy5zZW50ZW5jZUNhc2UgPyBlbmdsaXNoIDogW107XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBvcHRpb25zLnNlbnRlbmNlQ2FzZSA9IG9wdGlvbnMuc2VudGVuY2VDYXNlIHx8IGVuZ2xpc2g7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFvcHRpb25zLnN0cmluZ3MpXG4gICAgICAgICAgICBvcHRpb25zLnN0cmluZ3MgPSB7fTtcbiAgICAgICAgaWYgKCFvcHRpb25zLnVuYWJicmV2aWF0ZSlcbiAgICAgICAgICAgIG9wdGlvbnMudW5hYmJyZXZpYXRlID0ge307XG4gICAgICAgIGlmIChvcHRpb25zLnJhdykge1xuICAgICAgICAgICAgb3B0aW9ucy5zZW50ZW5jZUNhc2UgPSBmYWxzZTtcbiAgICAgICAgICAgIG9wdGlvbnMuY2FzZVByb3RlY3Rpb24gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHsgY2FzZVByb3RlY3Rpb246ICdhcy1uZWVkZWQnLCB2ZXJiYXRpbUZpZWxkczogWy9eY2l0ZXVsaWtlLWxpbmtvdXQtWzAtOV0rJC8sIC4uLmZpZWxkcy52ZXJiYXRpbV0sIHZlcmJhdGltQ29tbWFuZHM6IFsndXJsJywgJ2hyZWYnXSwgdW5uZXN0RmllbGRzOiBbLi4uZmllbGRzLnRpdGxlLCAuLi5maWVsZHMudW5uZXN0LCAuLi5maWVsZHMudmVyYmF0aW1dLCB1bm5lc3RNb2RlOiAndW53cmFwJywgaHRtbEZpZWxkczogZmllbGRzLmh0bWwsIGd1ZXNzQWxyZWFkeVNlbnRlbmNlQ2FzZWQ6IHRydWUsIG1hcmt1cDoge30gfSwgb3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IG1hcmt1cF9kZWZhdWx0cyA9IHtcbiAgICAgICAgICAgIGVucXVvdGU6IHsgb3BlbjogJ1xcdTIwMWMnLCBjbG9zZTogJ1xcdTIwMWQnIH0sXG4gICAgICAgICAgICBzdWI6IHsgb3BlbjogJzxzdWI+JywgY2xvc2U6ICc8L3N1Yj4nIH0sXG4gICAgICAgICAgICBzdXA6IHsgb3BlbjogJzxzdXA+JywgY2xvc2U6ICc8L3N1cD4nIH0sXG4gICAgICAgICAgICBib2xkOiB7IG9wZW46ICc8Yj4nLCBjbG9zZTogJzwvYj4nIH0sXG4gICAgICAgICAgICBpdGFsaWNzOiB7IG9wZW46ICc8aT4nLCBjbG9zZTogJzwvaT4nIH0sXG4gICAgICAgICAgICBzbWFsbENhcHM6IHsgb3BlbjogJzxzcGFuIHN0eWxlPVwiZm9udC12YXJpYW50OnNtYWxsLWNhcHM7XCI+JywgY2xvc2U6ICc8L3NwYW4+JyB9LFxuICAgICAgICAgICAgY2FzZVByb3RlY3Q6IHsgb3BlbjogJzxzcGFuIGNsYXNzPVwibm9jYXNlXCI+JywgY2xvc2U6ICc8L3NwYW4+JyB9LFxuICAgICAgICAgICAgcm9tYW46IHsgb3BlbjogJycsIGNsb3NlOiAnJyB9LFxuICAgICAgICAgICAgZml4ZWRXaWR0aDogeyBvcGVuOiAnJywgY2xvc2U6ICcnIH0sXG4gICAgICAgIH07XG4gICAgICAgIC8vIHBhdGNoIGluIGJlY2F1c2UgdGhlIG9wdGlvbnMgd2lsbCBsaWtlbHkgbm90IGhhdmUgZW5xdW90ZSBhbmQgY2FzZS1wcm90ZWN0XG4gICAgICAgIGZvciAoY29uc3QgW21hcmt1cCwgeyBvcGVuLCBjbG9zZSB9XSBvZiBPYmplY3QuZW50cmllcyhtYXJrdXBfZGVmYXVsdHMpKSB7XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMubWFya3VwW21hcmt1cF0gPSB0aGlzLm9wdGlvbnMubWFya3VwW21hcmt1cF0gfHwgeyBvcGVuLCBjbG9zZSB9O1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgaSBvZiBbMSwgMiwgMywgNF0pIHsgLy8gdHNsaW50OmRpc2FibGUtbGluZTpuby1tYWdpYy1udW1iZXJzXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMubWFya3VwW2BoJHtpfWBdID0gdGhpcy5vcHRpb25zLm1hcmt1cFtgaCR7aX1gXSB8fCB7IG9wZW46IGA8aCR7aX0+YCwgY2xvc2U6IGA8L2gke2l9PmAgfTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVucmVzb2x2ZWRTdHJpbmdzID0ge307XG4gICAgICAgIHRoaXMuZXJyb3JzID0gW107XG4gICAgICAgIHRoaXMuY29tbWVudHMgPSBbXTtcbiAgICAgICAgdGhpcy5lbnRyaWVzID0gW107XG4gICAgICAgIHRoaXMuc3RyaW5ncyA9IHt9O1xuICAgICAgICB0aGlzLm5ld2NvbW1hbmRzID0ge307XG4gICAgICAgIHRoaXMuZGVmYXVsdF9zdHJpbmdzID0ge1xuICAgICAgICAgICAgSkFOOiBbdGhpcy50ZXh0KCcwMScpXSxcbiAgICAgICAgICAgIEZFQjogW3RoaXMudGV4dCgnMDInKV0sXG4gICAgICAgICAgICBNQVI6IFt0aGlzLnRleHQoJzAzJyldLFxuICAgICAgICAgICAgQVBSOiBbdGhpcy50ZXh0KCcwNCcpXSxcbiAgICAgICAgICAgIE1BWTogW3RoaXMudGV4dCgnMDUnKV0sXG4gICAgICAgICAgICBKVU46IFt0aGlzLnRleHQoJzA2JyldLFxuICAgICAgICAgICAgSlVMOiBbdGhpcy50ZXh0KCcwNycpXSxcbiAgICAgICAgICAgIEFVRzogW3RoaXMudGV4dCgnMDgnKV0sXG4gICAgICAgICAgICBTRVA6IFt0aGlzLnRleHQoJzA5JyldLFxuICAgICAgICAgICAgT0NUOiBbdGhpcy50ZXh0KCcxMCcpXSxcbiAgICAgICAgICAgIE5PVjogW3RoaXMudGV4dCgnMTEnKV0sXG4gICAgICAgICAgICBERUM6IFt0aGlzLnRleHQoJzEyJyldLFxuICAgICAgICAgICAgQUNNQ1M6IFt0aGlzLnRleHQoJ0FDTSBDb21wdXRpbmcgU3VydmV5cycpXSxcbiAgICAgICAgICAgIEFDVEE6IFt0aGlzLnRleHQoJ0FjdGEgSW5mb3JtYXRpY2EnKV0sXG4gICAgICAgICAgICBDQUNNOiBbdGhpcy50ZXh0KCdDb21tdW5pY2F0aW9ucyBvZiB0aGUgQUNNJyldLFxuICAgICAgICAgICAgSUJNSlJEOiBbdGhpcy50ZXh0KCdJQk0gSm91cm5hbCBvZiBSZXNlYXJjaCBhbmQgRGV2ZWxvcG1lbnQnKV0sXG4gICAgICAgICAgICBJQk1TSjogW3RoaXMudGV4dCgnSUJNIFN5c3RlbXMgSm91cm5hbCcpXSxcbiAgICAgICAgICAgIElFRUVTRTogW3RoaXMudGV4dCgnSUVFRSBUcmFuc2FjdGlvbnMgb24gU29mdHdhcmUgRW5naW5lZXJpbmcnKV0sXG4gICAgICAgICAgICBJRUVFVEM6IFt0aGlzLnRleHQoJ0lFRUUgVHJhbnNhY3Rpb25zIG9uIENvbXB1dGVycycpXSxcbiAgICAgICAgICAgIElFRUVUQ0FEOiBbdGhpcy50ZXh0KCdJRUVFIFRyYW5zYWN0aW9ucyBvbiBDb21wdXRlci1BaWRlZCBEZXNpZ24gb2YgSW50ZWdyYXRlZCBDaXJjdWl0cycpXSxcbiAgICAgICAgICAgIElQTDogW3RoaXMudGV4dCgnSW5mb3JtYXRpb24gUHJvY2Vzc2luZyBMZXR0ZXJzJyldLFxuICAgICAgICAgICAgSkFDTTogW3RoaXMudGV4dCgnSm91cm5hbCBvZiB0aGUgQUNNJyldLFxuICAgICAgICAgICAgSkNTUzogW3RoaXMudGV4dCgnSm91cm5hbCBvZiBDb21wdXRlciBhbmQgU3lzdGVtIFNjaWVuY2VzJyldLFxuICAgICAgICAgICAgU0NQOiBbdGhpcy50ZXh0KCdTY2llbmNlIG9mIENvbXB1dGVyIFByb2dyYW1taW5nJyldLFxuICAgICAgICAgICAgU0lDT01QOiBbdGhpcy50ZXh0KCdTSUFNIEpvdXJuYWwgb24gQ29tcHV0aW5nJyldLFxuICAgICAgICAgICAgVE9DUzogW3RoaXMudGV4dCgnQUNNIFRyYW5zYWN0aW9ucyBvbiBDb21wdXRlciBTeXN0ZW1zJyldLFxuICAgICAgICAgICAgVE9EUzogW3RoaXMudGV4dCgnQUNNIFRyYW5zYWN0aW9ucyBvbiBEYXRhYmFzZSBTeXN0ZW1zJyldLFxuICAgICAgICAgICAgVE9HOiBbdGhpcy50ZXh0KCdBQ00gVHJhbnNhY3Rpb25zIG9uIEdyYXBoaWNzJyldLFxuICAgICAgICAgICAgVE9NUzogW3RoaXMudGV4dCgnQUNNIFRyYW5zYWN0aW9ucyBvbiBNYXRoZW1hdGljYWwgU29mdHdhcmUnKV0sXG4gICAgICAgICAgICBUT09JUzogW3RoaXMudGV4dCgnQUNNIFRyYW5zYWN0aW9ucyBvbiBPZmZpY2UgSW5mb3JtYXRpb24gU3lzdGVtcycpXSxcbiAgICAgICAgICAgIFRPUExBUzogW3RoaXMudGV4dCgnQUNNIFRyYW5zYWN0aW9ucyBvbiBQcm9ncmFtbWluZyBMYW5ndWFnZXMgYW5kIFN5c3RlbXMnKV0sXG4gICAgICAgICAgICBUQ1M6IFt0aGlzLnRleHQoJ1RoZW9yZXRpY2FsIENvbXB1dGVyIFNjaWVuY2UnKV0sXG4gICAgICAgIH07XG4gICAgfVxuICAgIGFzdChpbnB1dCwgY2xlYW4gPSB0cnVlKSB7XG4gICAgICAgIGNvbnN0IF9hc3QgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBjaHVuayBvZiBjaHVua2VyXzEucGFyc2UoaW5wdXQpKSB7XG4gICAgICAgICAgICBsZXQgY2h1bmtfYXN0ID0gYmlidGV4LnBhcnNlKGNodW5rLnRleHQsIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5vcHRpb25zKSwgeyBjb21iaW5pbmdEaWFjcml0aWNzOiB1bmljb2RlMmxhdGV4XzEuZGlhY3JpdGljcy5jb21tYW5kcyB9KSk7XG4gICAgICAgICAgICBpZiAoY2xlYW4pXG4gICAgICAgICAgICAgICAgY2h1bmtfYXN0ID0gdGhpcy5jbGVhbihjaHVua19hc3QpO1xuICAgICAgICAgICAgX2FzdC5wdXNoKGNodW5rX2FzdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIF9hc3Q7XG4gICAgfVxuICAgIHBhcnNlKGlucHV0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuYXN5bmMgPyB0aGlzLnBhcnNlQXN5bmMoaW5wdXQpIDogdGhpcy5wYXJzZVN5bmMoaW5wdXQpO1xuICAgIH1cbiAgICBwYXJzZVN5bmMoaW5wdXQpIHtcbiAgICAgICAgZm9yIChjb25zdCBjaHVuayBvZiBjaHVua2VyXzEucGFyc2UoaW5wdXQpKSB7XG4gICAgICAgICAgICB0aGlzLnBhcnNlQ2h1bmsoY2h1bmspO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnNlZCgpO1xuICAgIH1cbiAgICBhc3luYyBwYXJzZUFzeW5jKGlucHV0KSB7XG4gICAgICAgIGZvciAoY29uc3QgY2h1bmsgb2YgYXdhaXQgY2h1bmtlcl8xLnBhcnNlKGlucHV0LCB7IGFzeW5jOiB0cnVlIH0pKSB7XG4gICAgICAgICAgICB0aGlzLnBhcnNlQ2h1bmsoY2h1bmspO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnNlZCgpO1xuICAgIH1cbiAgICBwYXJzZWQoKSB7XG4gICAgICAgIHRoaXMuZmllbGQgPSBudWxsO1xuICAgICAgICBjb25zdCBzdHJpbmdzID0ge307XG4gICAgICAgIHRoaXMuY2xlYW5pbmcgPSB7IHR5cGU6ICdvdGhlcicgfTtcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5zdHJpbmdzKSkge1xuICAgICAgICAgICAgdGhpcy5maWVsZCA9IHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnQHN0cmluZycsXG4gICAgICAgICAgICAgICAgdGV4dDogJycsXG4gICAgICAgICAgICAgICAgbGV2ZWw6IDAsXG4gICAgICAgICAgICAgICAgcHJlc2VydmVSYW5nZXM6IG51bGwsXG4gICAgICAgICAgICAgICAgd29yZHM6IHtcbiAgICAgICAgICAgICAgICAgICAgdXBwZXI6IDAsXG4gICAgICAgICAgICAgICAgICAgIGxvd2VyOiAwLFxuICAgICAgICAgICAgICAgICAgICBvdGhlcjogMCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuY29udmVydCh0aGlzLmNsZWFuKHZhbHVlKSk7XG4gICAgICAgICAgICBzdHJpbmdzW2tleV0gPSB0aGlzLmZpZWxkLnRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGVycm9yczogdGhpcy5lcnJvcnMsXG4gICAgICAgICAgICBlbnRyaWVzOiB0aGlzLmVudHJpZXMsXG4gICAgICAgICAgICBjb21tZW50czogdGhpcy5jb21tZW50cyxcbiAgICAgICAgICAgIHN0cmluZ3MsXG4gICAgICAgICAgICBwcmVhbWJsZTogdGhpcy5wcmVhbWJsZSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcHJlc2VydmUoc3RhcnQsIGVuZCwgcmVhc29uKSB7XG4gICAgICAgIGlmICghdGhpcy5maWVsZC5wcmVzZXJ2ZVJhbmdlcylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKCFlbmQpIHtcbiAgICAgICAgICAgIHRoaXMuZmllbGQucHJlc2VydmVSYW5nZXMgPSBudWxsO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8qXG4gICAgICAgIHRoaXMuZmllbGQucHJlc2VydmVSYW5nZXMgPSB0aGlzLmZpZWxkLnByZXNlcnZlUmFuZ2VzLmZpbHRlcihyYW5nZSA9PiByYW5nZS5zdGFydCA8IHN0YXJ0IHx8IHJhbmdlLmVuZCA+IGVuZClcbiAgICAgICAgaWYgKHRoaXMuZmllbGQucHJlc2VydmVSYW5nZXMuZmluZChyYW5nZSA9PiByYW5nZS5zdGFydCA8PSBzdGFydCAmJiByYW5nZS5lbmQgPj0gZW5kKSkgcmV0dXJuXG4gICAgICAgICovXG4gICAgICAgIC8qXG4gICAgICAgIGlmICh0aGlzLmZpZWxkLnByZXNlcnZlUmFuZ2VzICYmIHRoaXMuZmllbGQucHJlc2VydmVSYW5nZXMubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3QgbGFzdCA9IHRoaXMuZmllbGQucHJlc2VydmVSYW5nZXNbdGhpcy5maWVsZC5wcmVzZXJ2ZVJhbmdlcy5sZW5ndGggLSAxXVxuICAgICAgICAgIGlmIChzdGFydCA8IGxhc3Quc3RhcnQpIHRocm93IG5ldyBFcnJvcihKU09OLnN0cmluZ2lmeSh7Li4ubGFzdCwgbmV3OiB7IHN0YXJ0LCBlbmQsIHJlYXNvbiB9LCB0ZXh0OiB0aGlzLmZpZWxkLnRleHR9KSlcbiAgICAgICAgfVxuICAgICAgICAqL1xuICAgICAgICB0aGlzLmZpZWxkLnByZXNlcnZlUmFuZ2VzLnB1c2goeyBzdGFydCwgZW5kLCByZWFzb24gfSk7XG4gICAgfVxuICAgIHBhcnNlQ2h1bmsoY2h1bmspIHtcbiAgICAgICAgdGhpcy5jaHVuayA9IGNodW5rLnRleHQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgYmliID0gYmlidGV4LnBhcnNlKGNodW5rLnRleHQsIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5vcHRpb25zKSwgeyBjb21iaW5pbmdEaWFjcml0aWNzOiB1bmljb2RlMmxhdGV4XzEuZGlhY3JpdGljcy5jb21tYW5kcyB9KSk7XG4gICAgICAgICAgICBpZiAoYmliLmtpbmQgIT09ICdCaWJsaW9ncmFwaHknKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0aGlzLnNob3coYmliKSk7XG4gICAgICAgICAgICBiaWIgPSB0aGlzLmNsZWFuKGJpYik7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGVudGl0eSBvZiBiaWIuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGVudGl0eS5raW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ0VudHJ5JzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnQnJhY2VkQ29tbWVudCc6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ0xpbmVDb21tZW50JzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnUHJlYW1ibGVFeHByZXNzaW9uJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udmVydChlbnRpdHkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ1N0cmluZ0RlY2xhcmF0aW9uJzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnTm9uRW50cnlUZXh0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBiaWI7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgaWYgKCFlcnIubG9jYXRpb24pXG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgdGhpcy5lcnJvcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTogZXJyLm1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgbGluZTogZXJyLmxvY2F0aW9uLnN0YXJ0LmxpbmUgKyBjaHVuay5vZmZzZXQubGluZSxcbiAgICAgICAgICAgICAgICBjb2x1bW46IGVyci5sb2NhdGlvbi5zdGFydC5jb2x1bW4sXG4gICAgICAgICAgICAgICAgc291cmNlOiB0aGlzLmNodW5rLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzaG93KG8pIHtcbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIHByZWZlci10ZW1wbGF0ZVxuICAgICAgICBsZXQgdGV4dCA9IEpTT04uc3RyaW5naWZ5KG8pO1xuICAgICAgICBpZiAodGhpcy5jaHVuaylcbiAgICAgICAgICAgIHRleHQgKz0gJ1xcbicgKyB0aGlzLmNodW5rLnRyaW0oKTtcbiAgICAgICAgcmV0dXJuIHRleHQ7XG4gICAgfVxuICAgIHRleHQodmFsdWUgPSAnJykge1xuICAgICAgICByZXR1cm4geyBraW5kOiAnVGV4dCcsIHZhbHVlLCBtb2RlOiAndGV4dCcgfTtcbiAgICB9XG4gICAgZXJyb3IoZXJyLCByZXR1cm52YWx1ZSkge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5lcnJvckhhbmRsZXIgPT09ICdmdW5jdGlvbicpXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMuZXJyb3JIYW5kbGVyKGVycik7XG4gICAgICAgIHJldHVybiByZXR1cm52YWx1ZTtcbiAgICB9XG4gICAgY29uZGVuc2Uobm9kZSkge1xuICAgICAgICAvLyBhcHBseSBjbGVhbmluZyB0byByZXN1bHRpbmcgY2hpbGRyZW5cbiAgICAgICAgbm9kZS52YWx1ZSA9IG5vZGUudmFsdWUubWFwKGNoaWxkID0+IHRoaXMuY2xlYW4oY2hpbGQpKTtcbiAgICAgICAgLy8gdW5wYWNrIHJlZHVuZGFudCBibG9ja3NcbiAgICAgICAgbm9kZS52YWx1ZSA9IG5vZGUudmFsdWUucmVkdWNlKChhY2MsIGNoaWxkLCBpKSA9PiB7XG4gICAgICAgICAgICBpZiAoY2hpbGQua2luZCA9PT0gJ0Jsb2NrJyAmJiAhY2hpbGQuY2FzZSAmJiBPYmplY3Qua2V5cyhjaGlsZC5tYXJrdXApLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGFjYyA9IGFjYy5jb25jYXQoY2hpbGQudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYWNjLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSwgW10pO1xuICAgICAgICAvLyBjb25kZW5zZSB0ZXh0IG5vZGVzIHRvIG1ha2Ugd2hvbGUgd29yZHMgZm9yIHNlbnRlbmNlIGNhc2luZ1xuICAgICAgICBub2RlLnZhbHVlID0gbm9kZS52YWx1ZS5yZWR1Y2UoKGFjYywgY2hpbGQsIGkpID0+IHtcbiAgICAgICAgICAgIGlmIChhY2MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgYWNjLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBsYXN0ID0gYWNjW2FjYy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIGNvbnN0IG5leHQgPSBub2RlLnZhbHVlW2kgKyAxXTtcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuY2FzZVByb3RlY3Rpb24gPT09ICdzdHJpY3QnICYmIHRoaXMub25seUNhc2VQcm90ZWN0ZWQobGFzdCkgJiYgY2hpbGQua2luZCA9PT0gJ1RleHQnICYmICFjaGlsZC52YWx1ZS5tYXRjaChwcmVzZXJ2ZUNhc2UuaXNDYXNlU2Vuc2l0aXZlKSAmJiB0aGlzLm9ubHlDYXNlUHJvdGVjdGVkKG5leHQpKSB7XG4gICAgICAgICAgICAgICAgbGFzdC52YWx1ZS5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgICAgICBkZWxldGUgbGFzdC5zb3VyY2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsYXN0LmtpbmQgPT09ICdCbG9jaycgJiYgY2hpbGQua2luZCA9PT0gJ0Jsb2NrJyAmJiBPYmplY3Qua2V5cyhsYXN0Lm1hcmt1cCkuc29ydCgpLmpvaW4oJy8nKSA9PT0gT2JqZWN0LmtleXMoY2hpbGQubWFya3VwKS5zb3J0KCkuam9pbignLycpKSB7XG4gICAgICAgICAgICAgICAgbGFzdC52YWx1ZSA9IGxhc3QudmFsdWUuY29uY2F0KGNoaWxkLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBkZWxldGUgbGFzdC5zb3VyY2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsYXN0LmtpbmQgPT09ICdUZXh0JyAmJiBjaGlsZC5raW5kID09PSAnVGV4dCcgJiYgbGFzdC5tb2RlID09PSBjaGlsZC5tb2RlKSB7XG4gICAgICAgICAgICAgICAgbGFzdC52YWx1ZSArPSBjaGlsZC52YWx1ZTtcbiAgICAgICAgICAgICAgICBkZWxldGUgbGFzdC5zb3VyY2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFjYy5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIFtdKTtcbiAgICB9XG4gICAgb25seUNhc2VQcm90ZWN0ZWQobm9kZSkge1xuICAgICAgICByZXR1cm4gKG5vZGUgPT09IG51bGwgfHwgbm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogbm9kZS5raW5kKSA9PT0gJ0Jsb2NrJyAmJiBub2RlLmNhc2UgPT09ICdwcm90ZWN0JyAmJiBPYmplY3Qua2V5cyhub2RlLm1hcmt1cCkuam9pbignLycpID09PSAnJztcbiAgICB9XG4gICAgYXJndW1lbnQobm9kZSwga2luZCkge1xuICAgICAgICBpZiAoIW5vZGUuYXJndW1lbnRzIHx8ICFub2RlLmFyZ3VtZW50cy5yZXF1aXJlZC5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm4gKGtpbmQgPT09ICdub25lJyk7XG4gICAgICAgIC8vIGV4cGVjdCAnbicgdGV4dCBhcmd1bWVudHNcbiAgICAgICAgaWYgKHR5cGVvZiBraW5kID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgaWYgKG5vZGUuYXJndW1lbnRzLnJlcXVpcmVkLmxlbmd0aCAhPT0ga2luZClcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm4gbm9kZS5hcmd1bWVudHMucmVxdWlyZWQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmV0dXJuIGZpcnN0IGFyZ3VtZW50IGlmIGl0J3MgdGhlIG9ubHkgb25lXG4gICAgICAgIGlmIChub2RlLmFyZ3VtZW50cy5yZXF1aXJlZC5sZW5ndGggIT09IDEpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIC8vIGxvb3NlIGNoZWNraW5nIGZvciB0ZXh0XG4gICAgICAgIGlmIChraW5kID09PSAndGV4dCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0ID0gbm9kZS5hcmd1bWVudHMucmVxdWlyZWRbMF07XG4gICAgICAgICAgICBpZiAoZmlyc3Qua2luZCA9PT0gJ0Jsb2NrJyAmJiBmaXJzdC52YWx1ZS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICBpZiAoZmlyc3QudmFsdWVbMF0ua2luZCA9PT0gJ1RleHQnKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlyc3QudmFsdWVbMF0udmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBmYWxsIGJhY2sgdG8gc3RyaWN0IGtpbmQgY2hlY2tcbiAgICAgICAgICAgIGtpbmQgPSAnVGV4dCc7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmV0dXJuIGZpcnN0IGFyZ3VtZW50IGlmIGl0J3MgdGhlIG9ubHkgb25lIGFuZCBpcyBvZiB0aGUgc3BlY2lmaWVkIGtpbmRcbiAgICAgICAgaWYgKG5vZGUuYXJndW1lbnRzLnJlcXVpcmVkLmxlbmd0aCAhPT0gMSB8fCBub2RlLmFyZ3VtZW50cy5yZXF1aXJlZFswXS5raW5kICE9PSBraW5kKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBzd2l0Y2ggKGtpbmQpIHtcbiAgICAgICAgICAgIGNhc2UgJ1RleHQnOlxuICAgICAgICAgICAgICAgIHJldHVybiBub2RlLmFyZ3VtZW50cy5yZXF1aXJlZFswXS52YWx1ZTtcbiAgICAgICAgICAgIGNhc2UgJ1JlZ3VsYXJDb21tYW5kJzpcbiAgICAgICAgICAgIGNhc2UgJ0Jsb2NrJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZS5hcmd1bWVudHMucmVxdWlyZWRbMF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjbGVhbihub2RlKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG5vZGUpKVxuICAgICAgICAgICAgcmV0dXJuIG5vZGUubWFwKGNoaWxkID0+IHRoaXMuY2xlYW4oY2hpbGQpKTtcbiAgICAgICAgZGVsZXRlIG5vZGUubG9jO1xuICAgICAgICBzd2l0Y2ggKG5vZGUua2luZCkge1xuICAgICAgICAgICAgY2FzZSAnSW5saW5lTWF0aCc6XG4gICAgICAgICAgICBjYXNlICdEaXNwbGF5TWF0aCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW5fYmxvY2sobm9kZSk7XG4gICAgICAgICAgICBjYXNlICdFbnZpcm9ubWVudCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW5fZW52aXJvbm1lbnQobm9kZSk7XG4gICAgICAgICAgICBjYXNlICdCbG9jayc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW5fYmxvY2sobm9kZSk7XG4gICAgICAgICAgICBjYXNlICdCaWJsaW9ncmFwaHknOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuX2JpYihub2RlKTtcbiAgICAgICAgICAgIGNhc2UgJ1JlZ3VsYXJDb21tYW5kJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbl9jb21tYW5kKG5vZGUpO1xuICAgICAgICAgICAgY2FzZSAnRGlhY3JpdGljQ29tbWFuZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW5fZGlhY3JpdGljKG5vZGUpO1xuICAgICAgICAgICAgY2FzZSAnRW50cnknOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuX2VudHJ5KG5vZGUpO1xuICAgICAgICAgICAgY2FzZSAnRmllbGQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMucmF3ID8gbm9kZSA6IHRoaXMuY2xlYW5fZmllbGQobm9kZSk7XG4gICAgICAgICAgICBjYXNlICdTdHJpbmdEZWNsYXJhdGlvbic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW5fc3RyaW5nZGVjbChub2RlKTtcbiAgICAgICAgICAgIGNhc2UgJ1N0cmluZ1JlZmVyZW5jZSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW5fc3RyaW5ncmVmKG5vZGUpO1xuICAgICAgICAgICAgY2FzZSAnU3Vic2NyaXB0Q29tbWFuZCc6XG4gICAgICAgICAgICBjYXNlICdTdXBlcnNjcmlwdENvbW1hbmQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuX3NjcmlwdChub2RlKTtcbiAgICAgICAgICAgIGNhc2UgJ1N5bWJvbENvbW1hbmQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuX3N5bWJvbChub2RlKTtcbiAgICAgICAgICAgIGNhc2UgJ1ByZWFtYmxlRXhwcmVzc2lvbic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW5fcHJlYW1ibGUobm9kZSk7XG4gICAgICAgICAgICBjYXNlICdOdW1iZXInOlxuICAgICAgICAgICAgY2FzZSAnVGV4dCc6XG4gICAgICAgICAgICBjYXNlICdCcmFjZWRDb21tZW50JzpcbiAgICAgICAgICAgIGNhc2UgJ0xpbmVDb21tZW50JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3IobmV3IFBhcnNlckVycm9yKGBubyBjbGVhbnVwIG1ldGhvZCBmb3IgJHt0aGlzLnNob3cobm9kZSl9YCwgbm9kZSksIHRoaXMudGV4dCgpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjbGVhbl9wcmVhbWJsZShub2RlKSB7XG4gICAgICAgIHRoaXMuaW5fcHJlYW1ibGUgPSB0cnVlO1xuICAgICAgICBjb25zdCBjbGVhbiA9IHRoaXMuY2xlYW4obm9kZS52YWx1ZSk7XG4gICAgICAgIHRoaXMuaW5fcHJlYW1ibGUgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGNsZWFuO1xuICAgIH1cbiAgICBjbGVhbl9iaWIobm9kZSkge1xuICAgICAgICBub2RlLmNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbi5maWx0ZXIoY2hpbGQgPT4gY2hpbGQua2luZCAhPT0gJ05vbkVudHJ5VGV4dCcpLm1hcChjaGlsZCA9PiB0aGlzLmNsZWFuKGNoaWxkKSk7XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgICBjbGVhbl9zdHJpbmdkZWNsKG5vZGUpIHtcbiAgICAgICAgdGhpcy5zdHJpbmdzW25vZGUubmFtZS50b1VwcGVyQ2FzZSgpXSA9IG5vZGUudmFsdWU7XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgICBjbGVhbl9zdHJpbmdyZWYobm9kZSkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBub2RlLm5hbWUudG9VcHBlckNhc2UoKTtcbiAgICAgICAgY29uc3QgX3N0cmluZyA9IHRoaXMuc3RyaW5nc1tuYW1lXVxuICAgICAgICAgICAgfHwgdGhpcy5vcHRpb25zLnN0cmluZ3NbbmFtZV1cbiAgICAgICAgICAgIHx8IHRoaXMuZGVmYXVsdF9zdHJpbmdzW25hbWVdXG4gICAgICAgICAgICB8fCAoZmllbGRzLnVuYWJicmV2LmluY2x1ZGVzKHRoaXMuY2xlYW5pbmcubmFtZSkgJiYgKChfYSA9IHRoaXMub3B0aW9ucy51bmFiYnJldmlhdGVbbmFtZV0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50ZXh0KSAmJiBbdGhpcy50ZXh0KHRoaXMub3B0aW9ucy51bmFiYnJldmlhdGVbbmFtZV0udGV4dCldKTtcbiAgICAgICAgaWYgKCFfc3RyaW5nKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMudW5yZXNvbHZlZFN0cmluZ3NbbmFtZV0pXG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvcnMucHVzaCh7IG1lc3NhZ2U6IGBVbnJlc29sdmVkIEBzdHJpbmcgcmVmZXJlbmNlICR7SlNPTi5zdHJpbmdpZnkobm9kZS5uYW1lKX1gIH0pO1xuICAgICAgICAgICAgdGhpcy51bnJlc29sdmVkU3RyaW5nc1tuYW1lXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW4oe1xuICAgICAgICAgICAga2luZDogJ0Jsb2NrJyxcbiAgICAgICAgICAgIC8vIGlmIHRoZSBzdHJpbmcgaXNuJ3QgZm91bmQsIGFkZCBpdCBhcy1pcyBidXQgZXhlbXB0IGl0IGZyb20gc2VudGVuY2UgY2FzaW5nXG4gICAgICAgICAgICBjYXNlOiBfc3RyaW5nID8gdW5kZWZpbmVkIDogJ3ByZXNlcnZlJyxcbiAgICAgICAgICAgIG1hcmt1cDoge30sXG4gICAgICAgICAgICB2YWx1ZTogX3N0cmluZyA/IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoX3N0cmluZykpIDogW3RoaXMudGV4dChub2RlLm5hbWUpXSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNsZWFuX2VudHJ5KG5vZGUpIHtcbiAgICAgICAgY29uc3Qgc2hvcnRqb3VybmFscyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIG5vZGUuZmllbGRzKSB7XG4gICAgICAgICAgICBpZiAoZmllbGRzLnVuYWJicmV2LmluY2x1ZGVzKGZpZWxkLm5hbWUpICYmIEFycmF5LmlzQXJyYXkoZmllbGQudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWJiciA9IGZpZWxkLnZhbHVlLm1hcCh2ID0+IHYuc291cmNlKS5qb2luKCcnKTtcbiAgICAgICAgICAgICAgICBjb25zdCBqb3VybmFsID0gdGhpcy5vcHRpb25zLnVuYWJicmV2aWF0ZVthYmJyXTtcbiAgICAgICAgICAgICAgICBpZiAoam91cm5hbCkge1xuICAgICAgICAgICAgICAgICAgICBzaG9ydGpvdXJuYWxzLnB1c2goT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGZpZWxkKSkpLCB7IG5hbWU6ICdzaG9ydGpvdXJuYWwnIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudmFsdWUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGpvdXJuYWwuYXN0KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG5vZGUuZmllbGRzID0gbm9kZS5maWVsZHMuY29uY2F0KHNob3J0am91cm5hbHMpLm1hcChjaGlsZCA9PiB0aGlzLmNsZWFuKGNoaWxkKSk7XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgICBzdGFydENsZWFuaW5nKG5hbWUpIHtcbiAgICAgICAgbmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKGZpZWxkcy50aXRsZS5pbmNsdWRlcyhuYW1lKSkge1xuICAgICAgICAgICAgdGhpcy5jbGVhbmluZyA9IHsgdHlwZTogJ3RpdGxlJywgbmFtZSB9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGZpZWxkcy5jcmVhdG9yLmluY2x1ZGVzKG5hbWUucmVwbGFjZSgvcyQvLCAnJykpKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFuaW5nID0geyB0eXBlOiAnY3JlYXRvcicsIG5hbWU6IG5hbWUucmVwbGFjZSgvcyQvLCAnJykgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYW5pbmcgPSB7IHR5cGU6ICdvdGhlcicsIG5hbWUgfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzdHJpcE5vQ2FzZShub2RlLCBzdHJpcCwgcHJlc2VydmUpIHtcbiAgICAgICAgc3dpdGNoIChub2RlLmtpbmQpIHtcbiAgICAgICAgICAgIGNhc2UgJ1JlZ3VsYXJDb21tYW5kJzpcbiAgICAgICAgICAgICAgICAvLyBhIGJpdCBjaGVhdHkgdG8gYXNzdW1lIHRoZXNlIHRvIGJlIG5vY2FzZWQsIGJ1dCBpdCdzIGp1c3QgbW9yZSBsaWtlbHkgdG8gYmUgd2hhdCBwZW9wbGUgd2FudFxuICAgICAgICAgICAgICAgIGlmIChbJ2Noc2YnLCAnYmlic3RyaW5nJywgJ2NpdGUnXS5pbmNsdWRlcyhub2RlLmNvbW1hbmQpKVxuICAgICAgICAgICAgICAgICAgICBzdHJpcCA9IHRydWU7XG4gICAgICAgICAgICAgICAgbm9kZS5hcmd1bWVudHMucmVxdWlyZWQubWFwKGFyZyA9PiB0aGlzLnN0cmlwTm9DYXNlKGFyZywgc3RyaXAsIHByZXNlcnZlKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdCbG9jayc6XG4gICAgICAgICAgICBjYXNlICdJbmxpbmVNYXRoJzpcbiAgICAgICAgICAgIGNhc2UgJ0Rpc3BsYXlNYXRoJzpcbiAgICAgICAgICAgICAgICBpZiAoc3RyaXAgJiYgbm9kZS5jYXNlID09PSAncHJvdGVjdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByZXNlcnZlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlLmNhc2UgPSAncHJlc2VydmUnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG5vZGUuY2FzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBub2RlLnZhbHVlLm1hcCh2ID0+IHRoaXMuc3RyaXBOb0Nhc2Uodiwgc3RyaXAgfHwgbm9kZS5jYXNlID09PSAncHJvdGVjdCcsIHByZXNlcnZlKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdGaWVsZCc6XG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobm9kZS52YWx1ZSkpXG4gICAgICAgICAgICAgICAgICAgIG5vZGUudmFsdWUubWFwKHYgPT4gdGhpcy5zdHJpcE5vQ2FzZSh2LCBzdHJpcCwgcHJlc2VydmUpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICBpc1ZlcmJhdGltRmllbGQobmFtZSkge1xuICAgICAgICByZXR1cm4gISF0aGlzLm9wdGlvbnMudmVyYmF0aW1GaWVsZHMuZmluZChwID0+ICh0eXBlb2YgcCA9PT0gJ3N0cmluZycpID8gbmFtZSA9PT0gcCA6IG5hbWUubWF0Y2gocCkpO1xuICAgIH1cbiAgICBjbGVhbl9maWVsZChub2RlKSB7XG4gICAgICAgIHRoaXMuc3RhcnRDbGVhbmluZyhub2RlLm5hbWUpO1xuICAgICAgICB0aGlzLnN0cmlwTm9DYXNlKG5vZGUsICF0aGlzLm9wdGlvbnMuY2FzZVByb3RlY3Rpb24gfHwgdGhpcy5pc1ZlcmJhdGltRmllbGQobm9kZS5uYW1lKSwgdGhpcy5vcHRpb25zLnNlbnRlbmNlQ2FzZS5sZW5ndGggPT09IDApO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShub2RlLnZhbHVlKSlcbiAgICAgICAgICAgIHRoaXMuY29uZGVuc2Uobm9kZSk7XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgICBjbGVhbl9zY3JpcHQobm9kZSkge1xuICAgICAgICBsZXQgbSwgdmFsdWUsIHNpbmdsZWNoYXI7XG4gICAgICAgIC8vIHJlY29nbml6ZSBjb21iaW5lZCBmb3JtcyBsaWtlIFxcXlxcY2lyY1xuICAgICAgICBpZiAoc2luZ2xlY2hhciA9IHVuaWNvZGUybGF0ZXhfMS5sYXRleFtub2RlLnNvdXJjZV0pXG4gICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KHNpbmdsZWNoYXIpO1xuICAgICAgICBpZiAoKG0gPSBub2RlLnNvdXJjZS5tYXRjaCgvXihbXFxeX10pKFtee31dKykkLykpICYmICgoc2luZ2xlY2hhciA9IHVuaWNvZGUybGF0ZXhfMS5sYXRleFtgJHttWzFdfSR7bVsyXX1gXSkgfHwgKHNpbmdsZWNoYXIgPSB1bmljb2RlMmxhdGV4XzEubGF0ZXhbYCR7bVsxXX17JHttWzJdfX1gXSkpKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dChzaW5nbGVjaGFyKTtcbiAgICAgICAgaWYgKChtID0gbm9kZS5zb3VyY2UubWF0Y2goL14oW1xcXl9dKVxceyhbXnt9XSspXFx9JC8pKSAmJiAoKHNpbmdsZWNoYXIgPSB1bmljb2RlMmxhdGV4XzEubGF0ZXhbYCR7bVsxXX0ke21bMl19YF0pIHx8IChzaW5nbGVjaGFyID0gdW5pY29kZTJsYXRleF8xLmxhdGV4W2Ake21bMV19eyR7bVsyXX19YF0pKSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQoc2luZ2xlY2hhcik7XG4gICAgICAgIGNvbnN0IGNtZCA9IG5vZGUua2luZCA9PT0gJ1N1cGVyc2NyaXB0Q29tbWFuZCcgPyAnXicgOiAnXyc7XG4gICAgICAgIGlmICh0eXBlb2Ygbm9kZS52YWx1ZSA9PT0gJ3N0cmluZycgJiYgKHNpbmdsZWNoYXIgPSB1bmljb2RlMmxhdGV4XzEubGF0ZXhbYCR7Y21kfSR7bm9kZS52YWx1ZX1gXSB8fCB1bmljb2RlMmxhdGV4XzEubGF0ZXhbYCR7Y21kfXske25vZGUudmFsdWV9fWBdKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dChzaW5nbGVjaGFyKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIG5vZGUudmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IFt0aGlzLnRleHQobm9kZS52YWx1ZSldO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFBcnJheS5pc0FycmF5KG5vZGUudmFsdWUpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IFtub2RlLnZhbHVlXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhbHVlID0gbm9kZS52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBtb2RlID0gbm9kZS5raW5kID09PSAnU3VwZXJzY3JpcHRDb21tYW5kJyA/ICdzdXAnIDogJ3N1Yic7XG4gICAgICAgIHJldHVybiB0aGlzLmNsZWFuKHtcbiAgICAgICAgICAgIGtpbmQ6ICdCbG9jaycsXG4gICAgICAgICAgICBtYXJrdXA6IHsgW21vZGVdOiB0cnVlIH0sXG4gICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNsZWFuX2Vudmlyb25tZW50KG5vZGUpIHtcbiAgICAgICAgdGhpcy5jb25kZW5zZShub2RlKTtcbiAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuICAgIG5lZWRzUHJvdGVjdGlvbih3b3JkKSB7XG4gICAgICAgIHJldHVybiAhd29yZC5tYXRjaChwcmVzZXJ2ZUNhc2UuaGFzVXBwZXIpICYmIHdvcmQubWF0Y2gocHJlc2VydmVDYXNlLmhhc0xvd2VyKTtcbiAgICB9XG4gICAgY2xlYW5fYmxvY2sobm9kZSkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHRoaXMuY29uZGVuc2Uobm9kZSk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuY2FzZVByb3RlY3Rpb24gIT09ICdzdHJpY3QnICYmICgoX2EgPSB0aGlzLmNsZWFuaW5nKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudHlwZSkgPT09ICd0aXRsZScgJiYgbm9kZS5jYXNlID09PSAncHJvdGVjdCcpIHtcbiAgICAgICAgICAgIC8vIHRlc3Qgd2hldGhlciB3ZSBjYW4gZ2V0IGF3YXkgd2l0aCBza2lwcGluZyBjYXNlIHByb3RlY3Rpb24gYmVjYXVzZSBpdCBjb250YWlucyBhbGwgd29yZHMgdGhhdCB3aWxsIGJlIHByZXNlcnZlZCBhbnl3YXkgd2hlbiBjb252ZXJ0aW5nIGJhY2sgdG8gVGl0bGUgQ2FzZVxuICAgICAgICAgICAgbGV0IHByZXNlcnZlID0gdHJ1ZTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygbm9kZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmIChjaGlsZC5raW5kID09PSAnVGV4dCcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBjaGlsZC52YWx1ZS50cmltKCk7XG4gICAgICAgICAgICAgICAgICAgIHByZXNlcnZlID0gIXZhbHVlLm1hdGNoKHByZXNlcnZlQ2FzZS5pc0Nhc2VTZW5zaXRpdmUpIHx8ICF2YWx1ZS5zcGxpdCgvXFxzKy8pLmZpbmQod29yZCA9PiB0aGlzLm5lZWRzUHJvdGVjdGlvbih3b3JkKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwcmVzZXJ2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXByZXNlcnZlKVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwcmVzZXJ2ZSlcbiAgICAgICAgICAgICAgICBub2RlLmNhc2UgPSAncHJlc2VydmUnO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLmtpbmQgPT09ICdCbG9jaycpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW21hcmt1cCwgb25dIG9mIE9iamVjdC5lbnRyaWVzKG5vZGUubWFya3VwKSkge1xuICAgICAgICAgICAgICAgIGlmICghb24pXG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBub2RlLm1hcmt1cFttYXJrdXBdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgICBjbGVhbl9kaWFjcml0aWMobm9kZSkge1xuICAgICAgICBjb25zdCBjaGFyID0gbm9kZS5kb3RsZXNzID8gYFxcXFwke25vZGUuY2hhcmFjdGVyfWAgOiBub2RlLmNoYXJhY3RlcjtcbiAgICAgICAgbGV0IHVuaWNvZGUgPSB1bmljb2RlMmxhdGV4XzEubGF0ZXhbYFxcXFwke25vZGUubWFya317JHtjaGFyfX1gXVxuICAgICAgICAgICAgfHwgdW5pY29kZTJsYXRleF8xLmxhdGV4W2BcXFxcJHtub2RlLm1hcmt9JHtjaGFyfWBdXG4gICAgICAgICAgICB8fCB1bmljb2RlMmxhdGV4XzEubGF0ZXhbYHtcXFxcJHtub2RlLm1hcmt9ICR7Y2hhcn19YF1cbiAgICAgICAgICAgIHx8IHVuaWNvZGUybGF0ZXhfMS5sYXRleFtge1xcXFwke25vZGUubWFya30ke2NoYXJ9fWBdXG4gICAgICAgICAgICB8fCB1bmljb2RlMmxhdGV4XzEubGF0ZXhbYFxcXFwke25vZGUubWFya30gJHtjaGFyfWBdO1xuICAgICAgICBpZiAoIXVuaWNvZGUgJiYgIW5vZGUuZG90bGVzcyAmJiBub2RlLmNoYXJhY3Rlci5sZW5ndGggPT09IDEgJiYgdW5pY29kZTJsYXRleF8xLmRpYWNyaXRpY3MudG91bmljb2RlW25vZGUubWFya10pXG4gICAgICAgICAgICB1bmljb2RlID0gbm9kZS5jaGFyYWN0ZXIgKyB1bmljb2RlMmxhdGV4XzEuZGlhY3JpdGljcy50b3VuaWNvZGVbbm9kZS5tYXJrXTtcbiAgICAgICAgaWYgKCF1bmljb2RlICYmICF0aGlzLmluX3ByZWFtYmxlKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3IobmV3IFRlWEVycm9yKGBVbmhhbmRsZWQgXFxcXCR7bm9kZS5tYXJrfXske2NoYXJ9fWAsIG5vZGUsIHRoaXMuY2h1bmspLCB0aGlzLnRleHQoKSk7XG4gICAgICAgIHJldHVybiB0aGlzLnRleHQodW5pY29kZSk7XG4gICAgfVxuICAgIGNsZWFuX3N5bWJvbChub2RlKSB7XG4gICAgICAgIGlmIChub2RlLmNvbW1hbmQgPT09ICdcXFxcJylcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQoJ1xcbicpO1xuICAgICAgICByZXR1cm4gdGhpcy50ZXh0KHVuaWNvZGUybGF0ZXhfMS5sYXRleFtgXFxcXCR7bm9kZS5jb21tYW5kfWBdIHx8IG5vZGUuY29tbWFuZCk7XG4gICAgfVxuICAgIGZpcnN0X3RleHRfYmxvY2sobm9kZSkge1xuICAgICAgICBpZiAoIW5vZGUpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgaWYgKG5vZGUua2luZCA9PT0gJ0Jsb2NrJykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBub2RlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChjaGlsZC5raW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ1RleHQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkLnZhbHVlID8gbm9kZSA6IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ0Jsb2NrJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZSA9IHRoaXMuZmlyc3RfdGV4dF9ibG9jayhjaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNsZWFuX2NvbW1hbmQobm9kZSkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGxldCBhcmcsIHVuaWNvZGU7XG4gICAgICAgIGlmICh1bmljb2RlID0gdW5pY29kZTJsYXRleF8xLmxhdGV4W25vZGUuc291cmNlXSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQodW5pY29kZSk7XG4gICAgICAgIHN3aXRjaCAobm9kZS5jb21tYW5kKSB7XG4gICAgICAgICAgICBjYXNlICduZXdjb21tYW5kJzpcbiAgICAgICAgICAgICAgICBpZiAoKChfYSA9IG5vZGUuYXJndW1lbnRzKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucmVxdWlyZWQubGVuZ3RoKSA9PT0gMlxuICAgICAgICAgICAgICAgICAgICAmJiBub2RlLmFyZ3VtZW50cy5yZXF1aXJlZFswXS5raW5kID09PSAnQmxvY2snXG4gICAgICAgICAgICAgICAgICAgICYmIG5vZGUuYXJndW1lbnRzLnJlcXVpcmVkWzBdLnZhbHVlLmxlbmd0aCA9PT0gMVxuICAgICAgICAgICAgICAgICAgICAmJiBub2RlLmFyZ3VtZW50cy5yZXF1aXJlZFswXS52YWx1ZVswXS5raW5kID09PSAnUmVndWxhckNvbW1hbmQnXG4gICAgICAgICAgICAgICAgICAgICYmIG5vZGUuYXJndW1lbnRzLnJlcXVpcmVkWzFdLmtpbmQgPT09ICdCbG9jaycpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXdjb21tYW5kc1tub2RlLmFyZ3VtZW50cy5yZXF1aXJlZFswXS52YWx1ZVswXS5jb21tYW5kXSA9IG5vZGUuYXJndW1lbnRzLnJlcXVpcmVkWzFdLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCduZXdjb21tYW5kPycsIEpTT04uc3RyaW5naWZ5KG5vZGUsIG51bGwsIDIpKVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaXRlbSc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsga2luZDogJ01hcmt1cCcsIHZhbHVlOiAnPGxpPicsIHNvdXJjZTogbm9kZS5zb3VyY2UgfTtcbiAgICAgICAgICAgIGNhc2UgJ2ZyYWMnOlxuICAgICAgICAgICAgICAgIGlmIChhcmcgPSB0aGlzLmFyZ3VtZW50KG5vZGUsIDIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhcmdbMF0ua2luZCA9PT0gJ1RleHQnICYmIGFyZ1sxXS5raW5kID09PSAnVGV4dCcgJiYgKHVuaWNvZGUgPSB1bmljb2RlMmxhdGV4XzEubGF0ZXhbYFxcXFxmcmFjeyR7YXJnWzBdLnZhbHVlfX17JHthcmdbMV0udmFsdWV9fWBdKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQodW5pY29kZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6ICdCbG9jaycsXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlOiAncHJvdGVjdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJrdXA6IHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGtpbmQ6ICdCbG9jaycsIG1hcmt1cDogeyBzdXA6IHRydWUgfSwgdmFsdWU6IFthcmdbMF1dIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0KCdcXHUyMDQ0JyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBraW5kOiAnQmxvY2snLCBtYXJrdXA6IHsgc3ViOiB0cnVlIH0sIHZhbHVlOiBbYXJnWzFdXSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgLy8gaWdub3JlXG4gICAgICAgICAgICBjYXNlICd2c3BhY2UnOlxuICAgICAgICAgICAgY2FzZSAndnBoYW50b20nOlxuICAgICAgICAgICAgY2FzZSAncGF0aCc6XG4gICAgICAgICAgICBjYXNlICdhZnRlcmdyb3VwJzpcbiAgICAgICAgICAgIGNhc2UgJ2lnbm9yZXNwYWNlcyc6XG4gICAgICAgICAgICBjYXNlICdyZWxheCc6XG4gICAgICAgICAgICBjYXNlICdub29wc29ydCc6XG4gICAgICAgICAgICBjYXNlICdpZmRlZmluZWQnOlxuICAgICAgICAgICAgY2FzZSAnRGVjbGFyZVByZWZDaGFycyc6XG4gICAgICAgICAgICBjYXNlICdlbHNlJzpcbiAgICAgICAgICAgIGNhc2UgJ2ZpJzpcbiAgICAgICAgICAgIGNhc2UgJ21ha2VhdGxldHRlcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dCgpO1xuICAgICAgICAgICAgY2FzZSAnRWxzZXZpZXJHbHlwaCc6XG4gICAgICAgICAgICAgICAgaWYgKGFyZyA9IHRoaXMuYXJndW1lbnQobm9kZSwgJ1RleHQnKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodW5pY29kZSA9IHVuaWNvZGUybGF0ZXhfMS5sYXRleFtgXFxcXCR7bm9kZS5jb21tYW5kfXske2FyZ319YF0pXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KHVuaWNvZGUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoYXJnLCAxNikpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjaHNmJzpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hcmd1bWVudChub2RlLCAnbm9uZScpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KCk7XG4gICAgICAgICAgICAgICAgaWYgKGFyZyA9IHRoaXMuYXJndW1lbnQobm9kZSwgJ0Jsb2NrJykpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuKGFyZyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdiaWJzdHJpbmcnOlxuICAgICAgICAgICAgICAgIGlmIChhcmcgPSB0aGlzLmFyZ3VtZW50KG5vZGUsICdCbG9jaycpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbihhcmcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY2l0ZSc6XG4gICAgICAgICAgICAgICAgaWYgKGFyZyA9IHRoaXMuYXJndW1lbnQobm9kZSwgJ0Jsb2NrJykpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuKGFyZyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd0ZXh0c3VwZXJzY3JpcHQnOlxuICAgICAgICAgICAgY2FzZSAnc3AnOlxuICAgICAgICAgICAgICAgIGlmICgoYXJnID0gdGhpcy5hcmd1bWVudChub2RlLCAnVGV4dCcpKSAmJiAodW5pY29kZSA9IHVuaWNvZGUybGF0ZXhfMS5sYXRleFtgXnske2FyZ319YF0pKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KHVuaWNvZGUpO1xuICAgICAgICAgICAgICAgIGlmIChhcmcgPSB0aGlzLmFyZ3VtZW50KG5vZGUsICdCbG9jaycpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbihhcmcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndGV4dHN1YnNjcmlwdCc6XG4gICAgICAgICAgICBjYXNlICdzYic6XG4gICAgICAgICAgICAgICAgaWYgKChhcmcgPSB0aGlzLmFyZ3VtZW50KG5vZGUsICdUZXh0JykpICYmICh1bmljb2RlID0gdW5pY29kZTJsYXRleF8xLmxhdGV4W2BfeyR7YXJnfX1gXSkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQodW5pY29kZSk7XG4gICAgICAgICAgICAgICAgaWYgKGFyZyA9IHRoaXMuYXJndW1lbnQobm9kZSwgJ0Jsb2NrJykpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuKGFyZyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd0ZXh0c2MnOlxuICAgICAgICAgICAgICAgIGlmIChhcmcgPSB0aGlzLmFyZ3VtZW50KG5vZGUsICdCbG9jaycpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbihhcmcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZW5xdW90ZSc6XG4gICAgICAgICAgICBjYXNlICdta2JpYnF1b3RlJzpcbiAgICAgICAgICAgICAgICBpZiAoYXJnID0gdGhpcy5hcmd1bWVudChub2RlLCAnQmxvY2snKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW4oYXJnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3RleHRiZic6XG4gICAgICAgICAgICBjYXNlICdta2JpYmJvbGQnOlxuICAgICAgICAgICAgICAgIGlmIChhcmcgPSB0aGlzLmFyZ3VtZW50KG5vZGUsICdCbG9jaycpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbihhcmcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2VjdGlvbic6XG4gICAgICAgICAgICBjYXNlICdzdWJzZWN0aW9uJzpcbiAgICAgICAgICAgIGNhc2UgJ3N1YnN1YnNlY3Rpb24nOlxuICAgICAgICAgICAgY2FzZSAnc3Vic3Vic3Vic2VjdGlvbic6XG4gICAgICAgICAgICAgICAgaWYgKGFyZyA9IHRoaXMuYXJndW1lbnQobm9kZSwgJ0Jsb2NrJykpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuKGFyZyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdta2JpYml0YWxpYyc6XG4gICAgICAgICAgICBjYXNlICdta2JpYmVtcGgnOlxuICAgICAgICAgICAgY2FzZSAndGV4dGl0JzpcbiAgICAgICAgICAgIGNhc2UgJ2VtcGgnOlxuICAgICAgICAgICAgICAgIGlmIChhcmcgPSB0aGlzLmFyZ3VtZW50KG5vZGUsICdCbG9jaycpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbihhcmcpO1xuICAgICAgICAgICAgICAgIGlmIChhcmcgPSB0aGlzLmFyZ3VtZW50KG5vZGUsICdUZXh0JykpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuKHsga2luZDogJ0Jsb2NrJywgbWFya3VwOiB7IGl0YWxpY3M6IHRydWUgfSwgdmFsdWU6IFt0aGlzLnRleHQoYXJnKV0gfSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdiaWJjeXInOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFyZ3VtZW50KG5vZGUsICdub25lJykpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQoKTtcbiAgICAgICAgICAgICAgICBpZiAoYXJnID0gdGhpcy5hcmd1bWVudChub2RlLCAnQmxvY2snKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW4oYXJnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2hzcGFjZSc6XG4gICAgICAgICAgICBjYXNlICdtYXRocm0nOlxuICAgICAgICAgICAgY2FzZSAndGV4dHJtJzpcbiAgICAgICAgICAgIGNhc2UgJ29jaXJjJzpcbiAgICAgICAgICAgIGNhc2UgJ21ib3gnOlxuICAgICAgICAgICAgICAgIGlmIChhcmcgPSB0aGlzLmFyZ3VtZW50KG5vZGUsICd0ZXh0JykpIHtcbiAgICAgICAgICAgICAgICAgICAgdW5pY29kZSA9IHVuaWNvZGUybGF0ZXhfMS5sYXRleFtgXFxcXCR7bm9kZS5jb21tYW5kfXske2FyZ319YF07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQodW5pY29kZSB8fCAobm9kZS5jb21tYW5kID09PSAnaHNwYWNlJyA/ICcgJyA6IGFyZykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICghbm9kZS5hcmd1bWVudHMucmVxdWlyZWQubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoYXJnID0gdGhpcy5hcmd1bWVudChub2RlLCAnQmxvY2snKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbihhcmcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIC8vIGp1c3QgdGFrZSB0aGUgVVJMPyBOb3QgdGhlIGxhYmVsP1xuICAgICAgICAgICAgY2FzZSAnaHJlZic6XG4gICAgICAgICAgICAgICAgaWYgKGFyZyA9IHRoaXMuYXJndW1lbnQobm9kZSwgMikpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuKGFyZ1swXSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd1cmwnOlxuICAgICAgICAgICAgICAgIGlmIChhcmcgPSB0aGlzLmFyZ3VtZW50KG5vZGUsICdUZXh0JykpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQoYXJnKTtcbiAgICAgICAgICAgICAgICBpZiAoYXJnID0gdGhpcy5hcmd1bWVudChub2RlLCAnQmxvY2snKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW4oYXJnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3NsJzpcbiAgICAgICAgICAgIGNhc2UgJ2VtJzpcbiAgICAgICAgICAgIGNhc2UgJ2l0JzpcbiAgICAgICAgICAgIGNhc2UgJ2l0c2hhcGUnOlxuICAgICAgICAgICAgY2FzZSAnYmYnOlxuICAgICAgICAgICAgY2FzZSAnYmZzZXJpZXMnOlxuICAgICAgICAgICAgY2FzZSAnc2MnOlxuICAgICAgICAgICAgY2FzZSAnc2NzaGFwZSc6XG4gICAgICAgICAgICBjYXNlICd0dCc6XG4gICAgICAgICAgICBjYXNlICdybSc6XG4gICAgICAgICAgICBjYXNlICdzZic6XG4gICAgICAgICAgICBjYXNlICd2ZXJiJzpcbiAgICAgICAgICAgICAgICAvLyBoYW5kbGVkIGluIHRoZSBncmFtbWFyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dCgpO1xuICAgICAgICAgICAgLy8gd291bGRuJ3Qga25vdyB3aGF0IHRvIGRvIHdpdGggdGhlc2VcbiAgICAgICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQoKTtcbiAgICAgICAgICAgIGNhc2UgJ3Bhcic6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dCgnXFxuXFxuJyk7XG4gICAgICAgICAgICBjYXNlICdjeXInOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFyZ3VtZW50KG5vZGUsICdub25lJykpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3BvbGhrJzpcbiAgICAgICAgICAgICAgICBpZiAodW5pY29kZSA9IHRoaXMuYXJndW1lbnQobm9kZSwgJ3RleHQnKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodW5pY29kZS5sZW5ndGggPT09IDEpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KHVuaWNvZGUgKyAnXFx1MDMyOCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hcmd1bWVudChub2RlLCAnbm9uZScpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KCdcXHUwMzI4Jyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGlmIChub2RlLmtpbmQgPT09ICdSZWd1bGFyQ29tbWFuZCcgJiYgdGhpcy5uZXdjb21tYW5kc1tub2RlLmNvbW1hbmRdKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6ICdCbG9jaycsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJrdXA6IHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5uZXdjb21tYW5kc1tub2RlLmNvbW1hbmRdKSksXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodW5pY29kZTJsYXRleF8xLmRpYWNyaXRpY3MudG91bmljb2RlW25vZGUuY29tbWFuZF0pIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5hcmd1bWVudHMucmVxdWlyZWQgPSB0aGlzLmNsZWFuKG5vZGUuYXJndW1lbnRzLnJlcXVpcmVkKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGJsb2NrO1xuICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS5hcmd1bWVudHMucmVxdWlyZWQubGVuZ3RoID09PSAxICYmIG5vZGUuYXJndW1lbnRzLnJlcXVpcmVkWzBdLmtpbmQgPT09ICdUZXh0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm8gaWRlYSB3aHkgSSBjYW4ndCBqdXN0IHN0cmFpZ2h0IHJldHVybiB0aGlzIGJ1dCB0eXBlc2NyaXB0IGp1c3Qgd29uJ3Qgc2h1dCB1cFxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2sgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZDogJ0Jsb2NrJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrdXA6IHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBbe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZDogJ0RpYWNyaXRpY0NvbW1hbmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyazogbm9kZS5jb21tYW5kLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyOiBub2RlLmFyZ3VtZW50cy5yZXF1aXJlZFswXS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdGxlc3M6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jOiBub2RlLmFyZ3VtZW50cy5yZXF1aXJlZFswXS5sb2MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6IG5vZGUuYXJndW1lbnRzLnJlcXVpcmVkWzBdLnNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW4oYmxvY2spO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGJsb2NrID0gdGhpcy5maXJzdF90ZXh0X2Jsb2NrKG5vZGUuYXJndW1lbnRzLnJlcXVpcmVkWzBdKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpeGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBibG9jay52YWx1ZSA9IGJsb2NrLnZhbHVlLnJlZHVjZSgodmFsdWUsIGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaXhlZCAmJiBjaGlsZC5raW5kID09PSAnVGV4dCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5wdXNoKHsga2luZDogJ0RpYWNyaXRpY0NvbW1hbmQnLCBtYXJrOiBub2RlLmNvbW1hbmQsIGNoYXJhY3RlcjogY2hpbGQudmFsdWVbMF0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLnB1c2goT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBjaGlsZCksIHsgdmFsdWU6IGNoaWxkLnZhbHVlLnN1YnN0cmluZygxKSB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW4oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6ICdCbG9jaycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya3VwOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbm9kZS5hcmd1bWVudHMucmVxdWlyZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG92ZXJsaW5lIHdpdGhvdXQgYXJndW1lbnRzIGRvZXNuJ3Qgc2VlbSB0byByZW5kZXIgaW4gTGFUZVhcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLmNvbW1hbmQgPT09ICdvdmVybGluZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dCgnICcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW4oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6ICdCbG9jaycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya3VwOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogW3RoaXMudGV4dCgnICcgKyB1bmljb2RlMmxhdGV4XzEuZGlhY3JpdGljcy50b3VuaWNvZGVbbm9kZS5jb21tYW5kXSldLmNvbmNhdChub2RlLmFyZ3VtZW50cy5yZXF1aXJlZCksXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodW5pY29kZSA9IHVuaWNvZGUybGF0ZXhfMS5sYXRleFtub2RlLnNvdXJjZV0gfHwgdW5pY29kZTJsYXRleF8xLmxhdGV4W2Ake25vZGUuc291cmNlfXt9YF0pXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQodW5pY29kZSk7XG4gICAgICAgICAgICAgICAgaWYgKCh1bmljb2RlID0gdW5pY29kZTJsYXRleF8xLmxhdGV4W2BcXFxcJHtub2RlLmNvbW1hbmR9YF0gfHwgdW5pY29kZTJsYXRleF8xLmxhdGV4W2BcXFxcJHtub2RlLmNvbW1hbmR9e31gXSkgJiYgdGhpcy5hcmd1bWVudChub2RlLCAnbm9uZScpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KHVuaWNvZGUpO1xuICAgICAgICAgICAgICAgIGlmICgoYXJnID0gdGhpcy5hcmd1bWVudChub2RlLCAnVGV4dCcpKSAmJiAodW5pY29kZSA9IHVuaWNvZGUybGF0ZXhfMS5sYXRleFtgXFxcXCR7bm9kZS5jb21tYW5kfXske2FyZ319YF0pKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KHVuaWNvZGUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmluX3ByZWFtYmxlKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dChub2RlLnNvdXJjZSk7XG4gICAgICAgIHJldHVybiB0aGlzLmVycm9yKG5ldyBUZVhFcnJvcihgVW5oYW5kbGVkIGNvbW1hbmQ6ICR7bm9kZS5jb21tYW5kfWAgKyB0aGlzLnNob3cobm9kZSksIG5vZGUsIHRoaXMuY2h1bmspLCB0aGlzLnRleHQoKSk7XG4gICAgfVxuICAgIHByZXNlcnZlQ2FzZSh3b3JkKSB7XG4gICAgICAgIC8vIHdvcmQgPSB3b3JkLnJlcGxhY2UobmV3IFJlZ0V4cChgXCJbJHt0aGlzLm1hcmt1cC5lbnF1b3RlLm9wZW59JHt0aGlzLm1hcmt1cC5lbnF1b3RlLmNsb3NlfTooKV1gLCAnZycpLCAnJylcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgaWYgKCF3b3JkLnRyaW0oKSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKCF3b3JkLm1hdGNoKHByZXNlcnZlQ2FzZS5oYXNBbHBoYU51bSkpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgd29yZCA9IHdvcmQucmVwbGFjZSgvW1xcL+KAmSfigJ06KCldL2csICcnKTtcbiAgICAgICAgaWYgKHdvcmQgPT09ICdJJylcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBpZiAod29yZC5sZW5ndGggPT09IDEpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICh3b3JkLnJlcGxhY2UocHJlc2VydmVDYXNlLm5vdENhc2VTZW5zaXRpdmUpID09PSAnJylcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgLy8gd29yZCA9IHdvcmQucmVwbGFjZShwcmVzZXJ2ZUNhc2Uubm90QWxwaGFOdW0sICcnKVxuICAgICAgICAvLyBzaW1wbGUgY2FwIGF0IHN0YXJ0IG9mIGZpZWxkXG4gICAgICAgIGlmICh3b3JkLm1hdGNoKHByZXNlcnZlQ2FzZS5sZWFkaW5nQ2FwKSAmJiAoKF9iID0gKF9hID0gdGhpcy5maWVsZCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRleHQpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5sZW5ndGgpID09PSAwKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAod29yZC5tYXRjaChwcmVzZXJ2ZUNhc2UuYWxsQ2FwcykpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKHdvcmQubGVuZ3RoID4gMSAmJiB3b3JkLm1hdGNoKHByZXNlcnZlQ2FzZS5qb2luZWQpKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAod29yZC5tYXRjaChwcmVzZXJ2ZUNhc2UuaGFzVXBwZXIpKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGlmICh3b3JkLm1hdGNoKHByZXNlcnZlQ2FzZS5pc051bWJlcikpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb252ZXJ0KG5vZGUpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobm9kZSkpXG4gICAgICAgICAgICByZXR1cm4gbm9kZS5tYXAoY2hpbGQgPT4gdGhpcy5jb252ZXJ0KGNoaWxkKSk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmF3ICYmIHRoaXMuZmllbGQpXG4gICAgICAgICAgICBub2RlID0gdGhpcy50ZXh0KG5vZGUuc291cmNlKTtcbiAgICAgICAgc3dpdGNoIChub2RlLmtpbmQpIHtcbiAgICAgICAgICAgIGNhc2UgJ01hcmt1cCc6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZmllbGQpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmllbGQudGV4dCArPSBub2RlLnZhbHVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQnJhY2VkQ29tbWVudCc6XG4gICAgICAgICAgICBjYXNlICdMaW5lQ29tbWVudCc6XG4gICAgICAgICAgICAgICAgdGhpcy5jb21tZW50cy5wdXNoKG5vZGUudmFsdWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnRW50cnknOlxuICAgICAgICAgICAgICAgIHRoaXMuY29udmVydF9lbnRyeShub2RlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ051bWJlcic6XG4gICAgICAgICAgICAgICAgdGhpcy5jb252ZXJ0X251bWJlcihub2RlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1RleHQnOlxuICAgICAgICAgICAgICAgIHRoaXMuY29udmVydF90ZXh0KG5vZGUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQmxvY2snOlxuICAgICAgICAgICAgY2FzZSAnSW5saW5lTWF0aCc6XG4gICAgICAgICAgICBjYXNlICdEaXNwbGF5TWF0aCc6XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLmZpZWxkID8gdGhpcy5maWVsZC50ZXh0Lmxlbmd0aCA6IG51bGw7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJlc2VydmUgPSB0eXBlb2Ygc3RhcnQgPT09ICdudW1iZXInICYmIHRoaXMuZmllbGQucHJlc2VydmVSYW5nZXM7XG4gICAgICAgICAgICAgICAgdGhpcy5jb252ZXJ0X2Jsb2NrKG5vZGUpO1xuICAgICAgICAgICAgICAgIGlmIChwcmVzZXJ2ZSAmJiAobm9kZS5jYXNlIHx8IG5vZGUua2luZC5lbmRzV2l0aCgnTWF0aCcpKSlcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmVzZXJ2ZShzdGFydCwgdGhpcy5maWVsZC50ZXh0Lmxlbmd0aCk7IC8vICwgYGNvbnZlcnQtYmxvY2s6IGNhc2U9JHtub2RlLmNhc2V9LCBtYXRoPSR7bm9kZS5raW5kLmVuZHNXaXRoKCdNYXRoJyl9YClcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0Vudmlyb25tZW50JzpcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnZlcnRfZW52aXJvbm1lbnQobm9kZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdQcmVhbWJsZUV4cHJlc3Npb24nOlxuICAgICAgICAgICAgICAgIHRoaXMucHJlYW1ibGUucHVzaChub2RlLnZhbHVlLm1hcChwcmVhbWJsZSA9PiBwcmVhbWJsZS5zb3VyY2UpLmpvaW4oJ1xcblxcbicpKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0Rpc3BsYXlNYXRoJzpcbiAgICAgICAgICAgIGNhc2UgJ0lubGluZU1hdGgnOlxuICAgICAgICAgICAgY2FzZSAnU3RyaW5nRGVjbGFyYXRpb24nOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvcihuZXcgUGFyc2VyRXJyb3IoYG5vIGNvbnZlcnRlciBmb3IgJHtub2RlLmtpbmR9OiAke3RoaXMuc2hvdyhub2RlKX1gLCBub2RlKSwgdW5kZWZpbmVkKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzcGxpdE9uY2Uocywgc2VwLCBmcm9tRW5kID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3Qgc3BsaXQgPSBmcm9tRW5kID8gcy5sYXN0SW5kZXhPZihzZXApIDogcy5pbmRleE9mKHNlcCk7XG4gICAgICAgIHJldHVybiAoc3BsaXQgPCAwKSA/IFtzLCAnJ10gOiBbcy5zdWJzdHIoMCwgc3BsaXQpLCBzLnN1YnN0cihzcGxpdCArIDEpXTtcbiAgICB9XG4gICAgcGFyc2VOYW1lKG5hbWUpIHtcbiAgICAgICAgbGV0IHBhcnNlZCA9IG51bGw7XG4gICAgICAgIGNvbnN0IHBhcnRzID0gbmFtZS5zcGxpdChtYXJrZXIuY29tbWEpO1xuICAgICAgICBpZiAocGFydHMubGVuZ3RoICYmICFwYXJ0cy5maW5kKHAgPT4gIXAubWF0Y2goL15bYS16XSsoLWkpPz0vaSkpKSB7IC8vIGV4dGVuZGVkIG5hbWUgZm9ybWF0XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHBhcnQgb2YgcGFydHMpIHtcbiAgICAgICAgICAgICAgICBwYXJzZWQgPSBwYXJzZWQgfHwge307XG4gICAgICAgICAgICAgICAgY29uc3QgW2F0dHIsIHZhbHVlXSA9IHRoaXMuc3BsaXRPbmNlKHBhcnQucmVwbGFjZShtYXJrZXIucmUuc3BhY2UsICcnKSwgJz0nKS5tYXAodiA9PiB2LnRyaW0oKSk7XG4gICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBwYXJzZWQgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3dpdGNoIChhdHRyLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZmFtaWx5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZC5sYXN0TmFtZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2dpdmVuLWknOlxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkLmluaXRpYWwgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdnaXZlbic6XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWQuZmlyc3ROYW1lID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAncHJlZml4JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZC5wcmVmaXggPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdzdWZmaXgnOlxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkLnN1ZmZpeCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3VzZXByZWZpeCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWQudXNlcHJlZml4ID0gdmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2p1bmlvcmNvbW1hJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZC51c2VwcmVmaXggPSB2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZSc7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZFthdHRyLnRvTG93ZXJDYXNlKCldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcHJlZml4ID0gLyguKz8pXFxzKyh2ZXJlfHZvbnx2YW4gZGVufHZhbiBkZXJ8dmFufGRlfGRlbHxkZWxsYXxkZXJ8ZGl8ZGF8cGlldHJvfHZhbmRlbnxkdXxzdC58c3R8bGF8bG98dGVyfGJpbnxpYm58dGV8dGVufG9wfGJlbnxhbClcXHMrKC4rKS87XG4gICAgICAgIGxldCBtO1xuICAgICAgICBzd2l0Y2ggKHBhcnNlZCA/IDAgOiBwYXJ0cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAvLyBhbHJlYWR5IHBhcnNlZFxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAxOiAvLyBuYW1lIHdpdGhvdXQgY29tbWFzXG4gICAgICAgICAgICAgICAgLy8gbGl0ZXJhbFxuICAgICAgICAgICAgICAgIGlmIChtYXJrZXIucmUubGl0ZXJhbE5hbWUudGVzdChwYXJ0c1swXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkID0geyBsaXRlcmFsOiBwYXJ0c1swXSB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChtID0gcGFydHNbMF0ucmVwbGFjZShtYXJrZXIucmUuc3BhY2UsICcgJykubWF0Y2gocHJlZml4KSkgeyAvLyBzcGxpdCBvbiBwcmVmaXhcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3ROYW1lOiBtWzFdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4OiBtWzJdLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdE5hbWU6IG1bM10sXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyB0b3AtbGV2ZWwgXCJmaXJzdG5hbWUgbGFzdG5hbWVcIlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBbZmlyc3ROYW1lLCBsYXN0TmFtZV0gPSB0aGlzLnNwbGl0T25jZShwYXJ0c1swXSwgbWFya2VyLnNwYWNlLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3ROYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWQgPSB7IGZpcnN0TmFtZSwgbGFzdE5hbWUgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZCA9IHsgbGFzdE5hbWU6IGZpcnN0TmFtZSB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAyOiAvLyBsYXN0bmFtZSwgZmlyc3RuYW1lXG4gICAgICAgICAgICAgICAgcGFyc2VkID0ge1xuICAgICAgICAgICAgICAgICAgICBsYXN0TmFtZTogcGFydHNbMF0sXG4gICAgICAgICAgICAgICAgICAgIGZpcnN0TmFtZTogcGFydHNbMV0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6IC8vIGxhc3RuYW1lLCBzdWZmaXgsIGZpcnN0bmFtZVxuICAgICAgICAgICAgICAgIHBhcnNlZCA9IHtcbiAgICAgICAgICAgICAgICAgICAgbGFzdE5hbWU6IHBhcnRzWzBdLFxuICAgICAgICAgICAgICAgICAgICBzdWZmaXg6IHBhcnRzWzFdLFxuICAgICAgICAgICAgICAgICAgICBmaXJzdE5hbWU6IHBhcnRzLnNsaWNlKDIpLmpvaW4obWFya2VyLmNvbW1hKSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHBhcnNlZCkpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdiAhPT0gJ3N0cmluZycpXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBwYXJzZWRba10gPSBtYXJrZXIuY2xlYW4odikudHJpbSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXJzZWQ7XG4gICAgfVxuICAgIGNvbnZlcnRfZW50cnkobm9kZSkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHRoaXMuZW50cnkgPSB7XG4gICAgICAgICAgICBrZXk6IG5vZGUuaWQsXG4gICAgICAgICAgICB0eXBlOiBub2RlLnR5cGUsXG4gICAgICAgICAgICBmaWVsZHM6IHt9LFxuICAgICAgICAgICAgY3JlYXRvcnM6IHt9LFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmVudHJpZXMucHVzaCh0aGlzLmVudHJ5KTtcbiAgICAgICAgLy8gb3JkZXIgdGhlc2UgZmlyc3QgZm9yIGxhbmd1YWdlLWRlcGVuZGVudCBzZW50ZW5jZSBjYXNpbmdcbiAgICAgICAgY29uc3Qgb3JkZXIgPSBbJ2xhbmdpZCcsICdoeXBoZW5hdGlvbicsICdsYW5ndWFnZSddO1xuICAgICAgICBub2RlLmZpZWxkcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpYSA9IG9yZGVyLmluZGV4T2YoYS5uYW1lKTtcbiAgICAgICAgICAgIGNvbnN0IGliID0gb3JkZXIuaW5kZXhPZihiLm5hbWUpO1xuICAgICAgICAgICAgaWYgKGlhID09PSAtMSAmJiBpYiA9PT0gLTEpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSk7IC8vIGRvZXNuJ3QgbWF0dGVyIHJlYWxseVxuICAgICAgICAgICAgaWYgKGlhID09PSAtMSlcbiAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgIGlmIChpYiA9PT0gLTEpXG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgcmV0dXJuIGlhIC0gaWI7XG4gICAgICAgIH0pO1xuICAgICAgICBsZXQgc2VudGVuY2VDYXNlID0gISF0aGlzLm9wdGlvbnMuc2VudGVuY2VDYXNlLmxlbmd0aDsgLy8gaWYgc2VudGVuY2VDYXNlIGlzIGVtcHR5LCBubyBzZW50ZW5jZSBjYXNpbmdcbiAgICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBub2RlLmZpZWxkcykge1xuICAgICAgICAgICAgaWYgKGZpZWxkLmtpbmQgIT09ICdGaWVsZCcpXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3IobmV3IFBhcnNlckVycm9yKGBFeHBlY3RlZCBGaWVsZCwgZ290ICR7ZmllbGQua2luZH1gLCBub2RlKSwgdW5kZWZpbmVkKTtcbiAgICAgICAgICAgIHRoaXMuc3RhcnRDbGVhbmluZyhmaWVsZC5uYW1lKTtcbiAgICAgICAgICAgIC8qXG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhdyAmJiB0aGlzLmZpZWxkVHlwZSAhPT0gJ2NyZWF0b3InKSB7XG4gICAgICAgICAgICAgIHRoaXMuZW50cnkuZmllbGRzW2ZpZWxkLm5hbWVdID0gWyBmaWVsZC52YWx1ZS5tYXAodiA9PiB2LnNvdXJjZSkuam9pbignJykgXVxuICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRoaXMuZmllbGQgPSB7XG4gICAgICAgICAgICAgICAgbmFtZTogZmllbGQubmFtZSxcbiAgICAgICAgICAgICAgICB0ZXh0OiAnJyxcbiAgICAgICAgICAgICAgICBsZXZlbDogMCxcbiAgICAgICAgICAgICAgICB3b3Jkczoge1xuICAgICAgICAgICAgICAgICAgICB1cHBlcjogMCxcbiAgICAgICAgICAgICAgICAgICAgbG93ZXI6IDAsXG4gICAgICAgICAgICAgICAgICAgIG90aGVyOiAwLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcHJlc2VydmVSYW5nZXM6IChzZW50ZW5jZUNhc2UgJiYgZmllbGRzLnRpdGxlLmluY2x1ZGVzKGZpZWxkLm5hbWUpKSA/IFtdIDogbnVsbCxcbiAgICAgICAgICAgICAgICBodG1sOiB0aGlzLm9wdGlvbnMuaHRtbEZpZWxkcy5pbmNsdWRlcyhmaWVsZC5uYW1lKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLmVudHJ5LmZpZWxkc1t0aGlzLmZpZWxkLm5hbWVdID0gdGhpcy5lbnRyeS5maWVsZHNbdGhpcy5maWVsZC5uYW1lXSB8fCBbXTtcbiAgICAgICAgICAgIC8vIHNwZWNpYWwgY2FzZSBmb3IgJ3RpdGxlID0gMjAyMCdcbiAgICAgICAgICAgIGlmIChmaWVsZC52YWx1ZS5raW5kID09PSAnTnVtYmVyJykge1xuICAgICAgICAgICAgICAgIHRoaXMuZW50cnkuZmllbGRzW3RoaXMuZmllbGQubmFtZV0ucHVzaChmaWVsZC52YWx1ZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5maWVsZCA9IG51bGw7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNvbnZlcnQoZmllbGQudmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5maWVsZC50ZXh0ID0gdGhpcy5maWVsZC50ZXh0LnRyaW0oKTtcbiAgICAgICAgICAgIHRoaXMuZmllbGQudGV4dCA9IHRoaXMuZmllbGQudGV4dC5yZXBsYWNlKC88XFwvKFthLXpdKT48XFwxPi9nLCAnJyk7XG4gICAgICAgICAgICB0aGlzLmZpZWxkLnRleHQgPSB0aGlzLmZpZWxkLnRleHQucmVwbGFjZSgvPChbYS16XSk+KFxccyopPFxcL1xcMT4vZywgJyQxJyk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZmllbGQudGV4dClcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIC8vIGRpc2FibGUgc2VudGVuY2VDYXNpbmcgaWYgbm90IGFuIGVuZ2xpc2hcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5maWVsZC5uYW1lKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnbGFuZ2lkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdoeXBoZW5hdGlvbic6XG4gICAgICAgICAgICAgICAgICAgIHNlbnRlbmNlQ2FzZSA9IHNlbnRlbmNlQ2FzZSAmJiB0aGlzLm9wdGlvbnMuc2VudGVuY2VDYXNlLmluY2x1ZGVzKHRoaXMuZmllbGQudGV4dC50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnbGFuZ3VhZ2UnOlxuICAgICAgICAgICAgICAgICAgICBzZW50ZW5jZUNhc2UgPSBzZW50ZW5jZUNhc2UgJiYgISEodGhpcy5maWVsZC50ZXh0LnRvTG93ZXJDYXNlKCkudHJpbSgpLnNwbGl0KC9cXHMqLFxccyovKS5maW5kKGxhbmcgPT4gdGhpcy5vcHRpb25zLnNlbnRlbmNlQ2FzZS5pbmNsdWRlcyhsYW5nKSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFwiZ3JvdXBzXCIgaXMgYSBqYWJyZWYgMy44KyBtb25zdHJvc2l0eVxuICAgICAgICAgICAgaWYgKHRoaXMuZmllbGQubmFtZS5tYXRjaCgvXihrZXl3b3Jkcz98Z3JvdXBzKSQvKSkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IHRleHQgb2YgdGhpcy5maWVsZC50ZXh0LnNwbGl0KG1hcmtlci5jb21tYSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dCA9IHRleHQudHJpbSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGV4dClcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZW50cnkuZmllbGRzW3RoaXMuZmllbGQubmFtZV0ucHVzaCh0ZXh0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmNsZWFuaW5nLnR5cGUgPT09ICdjcmVhdG9yJykge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5lbnRyeS5jcmVhdG9yc1t0aGlzLmZpZWxkLm5hbWVdKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVudHJ5LmNyZWF0b3JzW3RoaXMuZmllbGQubmFtZV0gPSBbXTtcbiAgICAgICAgICAgICAgICAvLyB7TS4gSGFsbGUsIEouIEJyZXNuYW4sIGFuZCBHLiBNaWxsZXJ9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZmllbGQudGV4dC5pbmNsdWRlcyhgJHttYXJrZXIuY29tbWF9JHttYXJrZXIuYW5kfWApKSB7IC8vXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmllbGQudGV4dCA9IHRoaXMuZmllbGQudGV4dC5yZXBsYWNlKG5ldyBSZWdFeHAoYCR7bWFya2VyLmNvbW1hfSR7bWFya2VyLmFuZH1gLCAnZycpLCBtYXJrZXIuYW5kKS5yZXBsYWNlKG5ldyBSZWdFeHAobWFya2VyLmNvbW1hKSwgbWFya2VyLmFuZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY3JlYXRvciBvZiB0aGlzLmZpZWxkLnRleHQuc3BsaXQobWFya2VyLmFuZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbnRyeS5maWVsZHNbdGhpcy5maWVsZC5uYW1lXS5wdXNoKG1hcmtlci5jbGVhbihjcmVhdG9yKSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW50cnkuY3JlYXRvcnNbdGhpcy5maWVsZC5uYW1lXS5wdXNoKHRoaXMucGFyc2VOYW1lKGNyZWF0b3IpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChmaWVsZHMudW5hYmJyZXYuaW5jbHVkZXMoZmllbGQubmFtZSkpIHsgLy8gZG9lc24ndCBnZXQgc2VudGVuY2UgY2FzaW5nIGFueWhvdyBUT0RPOiBib29rdGl0bGUgZG9lcyFcbiAgICAgICAgICAgICAgICB0aGlzLmVudHJ5LmZpZWxkc1t0aGlzLmZpZWxkLm5hbWVdLnB1c2goKCgoX2EgPSB0aGlzLm9wdGlvbnMudW5hYmJyZXZpYXRlW3RoaXMuZmllbGQudGV4dF0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50ZXh0KSB8fCB0aGlzLmZpZWxkLnRleHQpLm5vcm1hbGl6ZSgnTkZDJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZmllbGQucHJlc2VydmVSYW5nZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5ndWVzc0FscmVhZHlTZW50ZW5jZUNhc2VkICYmIE1hdGgubWF4KHRoaXMuZmllbGQud29yZHMudXBwZXIsIHRoaXMuZmllbGQud29yZHMubG93ZXIpID4gKHRoaXMuZmllbGQud29yZHMub3RoZXIgKyBNYXRoLm1pbih0aGlzLmZpZWxkLndvcmRzLnVwcGVyLCB0aGlzLmZpZWxkLndvcmRzLmxvd2VyKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJlc2VydmUobnVsbCwgbnVsbCk7IC8vICwgJ21vc3RseSBzZW50ZW5jZSBjYXNlZCBhbHJlYWR5JylcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHR4dCA9IHRoaXMuZmllbGQudGV4dC5yZXBsYWNlKHByZXNlcnZlQ2FzZS5tYXJrdXAsIG1hcmt1cCA9PiBtYXJrZXIubWFya3VwLnJlcGVhdChtYXJrdXAubGVuZ3RoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWF0Y2g7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVzZXJ2ZUNhc2Uuc2VudGVuY2VTdGFydC5sYXN0SW5kZXggPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKChtYXRjaCA9IHByZXNlcnZlQ2FzZS5zZW50ZW5jZVN0YXJ0LmV4ZWModHh0KSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBleGNsdWRlIHN0dWZmIGxpa2UgXCJVLlMuIFRheGVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2guaW5kZXggPiAyICYmIHR4dC5zdWJzdHIoMCwgbWF0Y2guaW5kZXggKyAxKS5tYXRjaChwcmVzZXJ2ZUNhc2UuYWNyb255bSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJlc2VydmUobWF0Y2guaW5kZXgsIG1hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RoKTsgLy8gLCBgc2VudGVuY2VTdGFydDogJHttYXRjaFswXX0gYXQgJHttYXRjaC5pbmRleH0uLiR7bWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGh9YClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXNlcnZlQ2FzZS5xdW90ZWQubGFzdEluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgobWF0Y2ggPSBwcmVzZXJ2ZUNhc2UucXVvdGVkLmV4ZWModGhpcy5maWVsZC50ZXh0KSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXNlcnZlKG1hdGNoLmluZGV4LCBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCk7IC8vICwgJ3F1b3RlZCcpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5lbnRyeS5maWVsZHNbdGhpcy5maWVsZC5uYW1lXS5wdXNoKHRoaXMuY29udmVydFRvU2VudGVuY2VDYXNlKHRoaXMuZmllbGQudGV4dCkubm9ybWFsaXplKCdORkMnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWVsZCA9IG51bGw7XG4gICAgfVxuICAgIGNvbnZlcnRUb1NlbnRlbmNlQ2FzZSh0ZXh0KSB7XG4gICAgICAgIGlmICghdGhpcy5maWVsZC5wcmVzZXJ2ZVJhbmdlcylcbiAgICAgICAgICAgIHJldHVybiB0ZXh0O1xuICAgICAgICAvLyBhbHdheXMga2VlcCB0aGUgbGVhZGluZyBjaGFyLCBidXQgc2tpcCBtYXJrdXBcbiAgICAgICAgY29uc3QgbGVhZCA9IHRleHQubWF0Y2goL14oPFtePl0rPikqLi8pO1xuICAgICAgICBpZiAobGVhZCkge1xuICAgICAgICAgICAgdGhpcy5wcmVzZXJ2ZShsZWFkWzBdLmxlbmd0aCAtIDEsIGxlYWRbMF0ubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHJlc2VydmUoMCwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHNlbnRlbmNlQ2FzZWQgPSB0ZXh0LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvKChbXFw/IV1cXHMqfF4pKFtcXCdcXFwiwqHCv+KAnOKAmOKAnsKrXFxzXSspP1teXFxzXSkvZywgeCA9PiB4LnRvVXBwZXJDYXNlKCkpO1xuICAgICAgICBmb3IgKGNvbnN0IHsgc3RhcnQsIGVuZCB9IG9mIHRoaXMuZmllbGQucHJlc2VydmVSYW5nZXMpIHtcbiAgICAgICAgICAgIHNlbnRlbmNlQ2FzZWQgPSBzZW50ZW5jZUNhc2VkLnN1YnN0cmluZygwLCBzdGFydCkgKyB0ZXh0LnN1YnN0cmluZyhzdGFydCwgZW5kKSArIHNlbnRlbmNlQ2FzZWQuc3Vic3RyaW5nKGVuZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRleHQgIT09IHNlbnRlbmNlQ2FzZWQpXG4gICAgICAgICAgICB0aGlzLmVudHJ5LnNlbnRlbmNlQ2FzZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gc2VudGVuY2VDYXNlZDtcbiAgICB9XG4gICAgY29udmVydF9udW1iZXIobm9kZSkge1xuICAgICAgICB0aGlzLmZpZWxkLnRleHQgKz0gYCR7bm9kZS52YWx1ZX1gO1xuICAgIH1cbiAgICBjb252ZXJ0X3RleHQobm9kZSkge1xuICAgICAgICBpZiAobm9kZS5tb2RlID09PSAndmVyYmF0aW0nKSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkLnRleHQgKz0gbm9kZS52YWx1ZS50cmltKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gaGV1cmlzdGljIHRvIGRldGVjdCBwcmUtc2VudGVuY2VjYXNlZCB0ZXh0XG4gICAgICAgIGZvciAoY29uc3Qgd29yZCBvZiBub2RlLnZhbHVlLnNwbGl0KC9cXGIvKSkge1xuICAgICAgICAgICAgaWYgKHdvcmQubWF0Y2gocHJlc2VydmVDYXNlLmFsbExvd2VyKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmllbGQud29yZHMubG93ZXIrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHdvcmQubWF0Y2gocHJlc2VydmVDYXNlLmFsbENhcHMpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWVsZC53b3Jkcy51cHBlcisrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAod29yZC5tYXRjaChwcmVzZXJ2ZUNhc2UuaGFzQWxwaGEpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWVsZC53b3Jkcy5vdGhlcisrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmZpZWxkLmxldmVsID09PSAwICYmIHRoaXMuY2xlYW5pbmcudHlwZSA9PT0gJ2NyZWF0b3InKSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkLnRleHQgKz0gbm9kZS52YWx1ZS5yZXBsYWNlKC9cXHMrYW5kXFxzKy9pZywgbWFya2VyLmFuZCkucmVwbGFjZSgvXFxzKixcXHMqL2csIG1hcmtlci5jb21tYSkucmVwbGFjZSgvXFxzKy9nLCBtYXJrZXIuc3BhY2UpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmZpZWxkLmxldmVsID09PSAwICYmIHRoaXMuZmllbGQubmFtZS5tYXRjaCgvXihrZXl3b3Jkcz98Z3JvdXBzKSQvKSkge1xuICAgICAgICAgICAgdGhpcy5maWVsZC50ZXh0ICs9IG5vZGUudmFsdWUucmVwbGFjZSgvXFxzKls7LF1cXHMqL2csIG1hcmtlci5jb21tYSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZmllbGQuaHRtbCkge1xuICAgICAgICAgICAgdGhpcy5maWVsZC50ZXh0ICs9IG5vZGUudmFsdWUucmVwbGFjZSgvJi9nLCAnJmFtcDsnKS5yZXBsYWNlKC88L2csICcmbHQ7JykucmVwbGFjZSgvPi9nLCAnJmd0OycpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMuZmllbGQucHJlc2VydmVSYW5nZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHdvcmRzID0gbm9kZS52YWx1ZS5zcGxpdCgvKFxccyspLyk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHdvcmQgb2Ygd29yZHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydCA9IHRoaXMuZmllbGQudGV4dC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgdGhpcy5maWVsZC50ZXh0ICs9IHdvcmQ7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucHJlc2VydmVDYXNlKHdvcmQpKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXNlcnZlKHN0YXJ0LCB0aGlzLmZpZWxkLnRleHQubGVuZ3RoKTsgLy8gLCBgd29yZDogJHtKU09OLnN0cmluZ2lmeSh3b3JkKX1gKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5maWVsZC50ZXh0ICs9IG5vZGUudmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29udmVydF9lbnZpcm9ubWVudChub2RlKSB7XG4gICAgICAgIHRoaXMuZmllbGQudGV4dCArPSB7IGVudW1lcmF0ZTogJzxvbD4nLCBpdGVtaXplOiAnPHVsPicgfVtub2RlLmVudl07XG4gICAgICAgIHRoaXMuY29udmVydF9ibG9jayhPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIG5vZGUpLCB7IGtpbmQ6ICdCbG9jaycsIG1hcmt1cDoge30gfSkpO1xuICAgICAgICB0aGlzLmZpZWxkLnRleHQgKz0geyBlbnVtZXJhdGU6ICc8L29sPicsIGl0ZW1pemU6ICc8L3VsPicgfVtub2RlLmVudl07XG4gICAgfVxuICAgIGNvbnZlcnRfYmxvY2sobm9kZSkge1xuICAgICAgICBjb25zdCBzdGFydCA9IHRoaXMuZmllbGQudGV4dC5sZW5ndGg7XG4gICAgICAgIGxldCBwcmVmaXggPSAnJztcbiAgICAgICAgbGV0IHBvc3RmaXggPSAnJztcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5jYXNlUHJvdGVjdGlvbiAhPT0gJ3N0cmljdCcgJiYgdGhpcy5jbGVhbmluZy50eXBlID09PSAnb3RoZXInKVxuICAgICAgICAgICAgZGVsZXRlIG5vZGUuY2FzZTtcbiAgICAgICAgaWYgKHRoaXMuY2xlYW5pbmcudHlwZSA9PT0gJ2NyZWF0b3InICYmIG5vZGUuY2FzZSA9PT0gJ3Byb3RlY3QnKSB7XG4gICAgICAgICAgICBwcmVmaXggKz0gbWFya2VyLmxpdGVyYWw7XG4gICAgICAgICAgICBwb3N0Zml4ID0gbWFya2VyLmxpdGVyYWwgKyBwb3N0Zml4O1xuICAgICAgICAgICAgZGVsZXRlIG5vZGUuY2FzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5jYXNlID09PSAncHJvdGVjdCcpIHtcbiAgICAgICAgICAgIHByZWZpeCArPSB0aGlzLm9wdGlvbnMubWFya3VwLmNhc2VQcm90ZWN0Lm9wZW47XG4gICAgICAgICAgICBwb3N0Zml4ID0gdGhpcy5vcHRpb25zLm1hcmt1cC5jYXNlUHJvdGVjdC5jbG9zZSArIHBvc3RmaXg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUua2luZCA9PT0gJ0Jsb2NrJykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBtYXJrdXAgb2YgT2JqZWN0LmtleXMobm9kZS5tYXJrdXApKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMubWFya3VwW21hcmt1cF0pXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yKG5ldyBQYXJzZXJFcnJvcihgbWFya3VwOiAke21hcmt1cH1gLCBub2RlKSwgdW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICBwcmVmaXggKz0gdGhpcy5vcHRpb25zLm1hcmt1cFttYXJrdXBdLm9wZW47XG4gICAgICAgICAgICAgICAgcG9zdGZpeCA9IHRoaXMub3B0aW9ucy5tYXJrdXBbbWFya3VwXS5jbG9zZSArIHBvc3RmaXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZW5kID0ge1xuICAgICAgICAgICAgd2l0aG91dFByZWZpeDogdGhpcy5maWVsZC50ZXh0Lmxlbmd0aCxcbiAgICAgICAgICAgIHdpdGhQcmVmaXg6IHRoaXMuZmllbGQudGV4dC5sZW5ndGggKyBwcmVmaXgubGVuZ3RoLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmZpZWxkLnRleHQgKz0gcHJlZml4O1xuICAgICAgICB0aGlzLmZpZWxkLmxldmVsKys7XG4gICAgICAgIHRoaXMuY29udmVydChub2RlLnZhbHVlKTtcbiAgICAgICAgdGhpcy5maWVsZC5sZXZlbC0tO1xuICAgICAgICBjb25zdCBhZGRlZCA9IHRoaXMuZmllbGQudGV4dC5zdWJzdHJpbmcoZW5kLndpdGhQcmVmaXgpO1xuICAgICAgICBjb25zdCBhZGRlZF90ZXh0ID0gYWRkZWQucmVwbGFjZSgvPFxcLz9bXj5dKz4vZywgJycpO1xuICAgICAgICBjb25zdCBuZWVkc1Byb3RlY3Rpb24gPSBhZGRlZF90ZXh0ICYmICgodGhpcy5vcHRpb25zLmNhc2VQcm90ZWN0aW9uID09PSAnc3RyaWN0JyAmJiBhZGRlZF90ZXh0Lm1hdGNoKHByZXNlcnZlQ2FzZS5pc0Nhc2VTZW5zaXRpdmUpKVxuICAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICAodGhpcy5vcHRpb25zLmNhc2VQcm90ZWN0aW9uID09PSAnYXMtbmVlZGVkJyAmJiBhZGRlZF90ZXh0LnNwbGl0KC9cXHMrLykuZmluZCh3b3JkID0+IHRoaXMubmVlZHNQcm90ZWN0aW9uKHdvcmQpKSkpO1xuICAgICAgICBpZiAoIWFkZGVkKSB7IC8vIG5vdGhpbmcgd2FzIGFkZGVkLCBzbyByZW1vdmUgcHJlZml4XG4gICAgICAgICAgICB0aGlzLmZpZWxkLnRleHQgPSB0aGlzLmZpZWxkLnRleHQuc3Vic3RyaW5nKDAsIGVuZC53aXRob3V0UHJlZml4KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmZpZWxkLnByZXNlcnZlUmFuZ2VzICYmIHByZWZpeCA9PT0gdGhpcy5vcHRpb25zLm1hcmt1cC5jYXNlUHJvdGVjdC5vcGVuICYmICFuZWVkc1Byb3RlY3Rpb24pIHtcbiAgICAgICAgICAgIC8vIHNvbWV0aGluZyB3YXMgYWRkZWQgdGhhdCBkaWRuJ3QgYWN0dWFsbHkgbmVlZCBjYXNlIHByb3RlY3Rpb25cbiAgICAgICAgICAgIHRoaXMuZmllbGQudGV4dCA9IHRoaXMuZmllbGQudGV4dC5zdWJzdHJpbmcoMCwgZW5kLndpdGhvdXRQcmVmaXgpICsgYWRkZWQ7XG4gICAgICAgICAgICB0aGlzLmZpZWxkLnByZXNlcnZlUmFuZ2VzID0gdGhpcy5maWVsZC5wcmVzZXJ2ZVJhbmdlcy5maWx0ZXIocmFuZ2UgPT4gcmFuZ2Uuc3RhcnQgPCBlbmQud2l0aG91dFByZWZpeCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkLnRleHQgKz0gcG9zdGZpeDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpZWxkLnRleHQgPSB0aGlzLmZpZWxkLnRleHQucmVwbGFjZSgvPChzdXB8c3ViKT4oW148Pl0rKTxcXC9cXDE+JC9pLCAobSwgbW9kZSwgY2hhcnMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNtZCA9IG1vZGUgPT09ICdzdXAnID8gJ14nIDogJ18nO1xuICAgICAgICAgICAgbGV0IHNjcmlwdCA9ICcnO1xuICAgICAgICAgICAgZm9yIChjb25zdCBjaGFyIG9mIGNoYXJzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdW5pY29kZSA9IHVuaWNvZGUybGF0ZXhfMS5sYXRleFtgJHtjbWR9JHtjaGFyfWBdIHx8IHVuaWNvZGUybGF0ZXhfMS5sYXRleFtgJHtjbWR9eyR7Y2hhcn19YF07XG4gICAgICAgICAgICAgICAgc2NyaXB0ICs9IHVuaWNvZGUgPyB1bmljb2RlIDogYDwke21vZGV9PiR7Y2hhcn08LyR7bW9kZX0+YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNjcmlwdCA9IHNjcmlwdC5yZXBsYWNlKG5ldyBSZWdFeHAoYDwvJHttb2RlfT48JHttb2RlfT5gLCAnZycpLCAnJyk7XG4gICAgICAgICAgICByZXR1cm4gc2NyaXB0Lmxlbmd0aCA8IG0ubGVuZ3RoID8gc2NyaXB0IDogbTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChub2RlLmNhc2UgJiYgdGhpcy5maWVsZC5wcmVzZXJ2ZVJhbmdlcylcbiAgICAgICAgICAgIHRoaXMucHJlc2VydmUoc3RhcnQsIHRoaXMuZmllbGQudGV4dC5sZW5ndGgpOyAvLyAsICdpbiBjb252ZXJ0LWJsb2NrICcgKyBub2RlLnNvdXJjZSB8fCAnPHNvdXJjZT4nKVxuICAgIH1cbn1cbi8qKlxuICogcGFyc2UgYmlidGV4LiBUaGlzIHdpbGwgdHJ5IHRvIGNvbnZlcnQgVGVYIGNvbW1hbmRzIGludG8gdW5pY29kZSBlcXVpdmFsZW50cywgYW5kIGFwcGx5IGBAc3RyaW5nYCBleHBhbnNpb25cbiAqL1xuZnVuY3Rpb24gcGFyc2UoaW5wdXQsIG9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IHBhcnNlciA9IG5ldyBQYXJzZXIob3B0aW9ucyk7XG4gICAgcmV0dXJuIHBhcnNlci5wYXJzZShpbnB1dCk7XG59XG5leHBvcnRzLnBhcnNlID0gcGFyc2U7XG5mdW5jdGlvbiBhc3QoaW5wdXQsIG9wdGlvbnMgPSB7fSwgY2xlYW4gPSB0cnVlKSB7XG4gICAgY29uc3QgcGFyc2VyID0gbmV3IFBhcnNlcihvcHRpb25zKTtcbiAgICByZXR1cm4gcGFyc2VyLmFzdChpbnB1dCwgY2xlYW4pO1xufVxuZXhwb3J0cy5hc3QgPSBhc3Q7XG52YXIgY2h1bmtlcl8yID0gcmVxdWlyZShcIi4vY2h1bmtlclwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImNodW5rZXJcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNodW5rZXJfMi5wYXJzZTsgfSB9KTtcbnZhciBqYWJyZWZfMSA9IHJlcXVpcmUoXCIuL2phYnJlZlwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImphYnJlZlwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gamFicmVmXzEucGFyc2U7IH0gfSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCJpbXBvcnQgKiBhcyBCaWJUZVhQYXJzZXIgZnJvbSAnQHJldG9ycXVlcmUvYmlidGV4LXBhcnNlcic7XG5pbXBvcnQgeyBFbnRyeSBhcyBFbnRyeURhdGFCaWJMYVRlWCB9IGZyb20gJ0ByZXRvcnF1ZXJlL2JpYnRleC1wYXJzZXInO1xuLy8gQWxzbyBtYWtlIEVudHJ5RGF0YUJpYkxhVGVYIGF2YWlsYWJsZSB0byBvdGhlciBtb2R1bGVzXG5leHBvcnQgeyBFbnRyeSBhcyBFbnRyeURhdGFCaWJMYVRlWCB9IGZyb20gJ0ByZXRvcnF1ZXJlL2JpYnRleC1wYXJzZXInO1xuXG4vLyBUcmljazogYWxsb3cgc3RyaW5nIGluZGV4aW5nIG9udG8gb2JqZWN0IHByb3BlcnRpZXNcbmV4cG9ydCBpbnRlcmZhY2UgSUluZGV4YWJsZSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuY29uc3QgZGF0YWJhc2VUeXBlcyA9IFsnY3NsLWpzb24nLCAnYmlibGF0ZXgnXSBhcyBjb25zdDtcbmV4cG9ydCB0eXBlIERhdGFiYXNlVHlwZSA9IHR5cGVvZiBkYXRhYmFzZVR5cGVzW251bWJlcl07XG5cbmV4cG9ydCBjb25zdCBURU1QTEFURV9WQVJJQUJMRVMgPSB7XG4gIGNpdGVrZXk6ICdVbmlxdWUgY2l0ZWtleScsXG4gIGFic3RyYWN0OiAnJyxcbiAgYXV0aG9yU3RyaW5nOiAnQ29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgYXV0aG9yIG5hbWVzJyxcbiAgY29udGFpbmVyVGl0bGU6XG4gICAgJ1RpdGxlIG9mIHRoZSBjb250YWluZXIgaG9sZGluZyB0aGUgcmVmZXJlbmNlIChlLmcuIGJvb2sgdGl0bGUgZm9yIGEgYm9vayBjaGFwdGVyLCBvciB0aGUgam91cm5hbCB0aXRsZSBmb3IgYSBqb3VybmFsIGFydGljbGUpJyxcbiAgRE9JOiAnJyxcbiAgZXByaW50OiAnJyxcbiAgZXByaW50dHlwZTogJycsXG4gIGV2ZW50UGxhY2U6ICdMb2NhdGlvbiBvZiBldmVudCcsXG4gIG5vdGU6ICcnLFxuICBwYWdlOiAnUGFnZSBvciBwYWdlIHJhbmdlJyxcbiAgcHVibGlzaGVyOiAnJyxcbiAgcHVibGlzaGVyUGxhY2U6ICdMb2NhdGlvbiBvZiBwdWJsaXNoZXInLFxuICB0aXRsZTogJycsXG4gIHRpdGxlU2hvcnQ6ICcnLFxuICBVUkw6ICcnLFxuICB5ZWFyOiAnUHVibGljYXRpb24geWVhcicsXG4gIHpvdGVyb1NlbGVjdFVSSTogJ1VSSSB0byBvcGVuIHRoZSByZWZlcmVuY2UgaW4gWm90ZXJvJyxcbn07XG5cbmV4cG9ydCBjbGFzcyBMaWJyYXJ5IHtcbiAgY29uc3RydWN0b3IocHVibGljIGVudHJpZXM6IHsgW2NpdGVrZXk6IHN0cmluZ106IEVudHJ5IH0pIHt9XG5cbiAgZ2V0IHNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5lbnRyaWVzKS5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogRm9yIHRoZSBnaXZlbiBjaXRla2V5LCBmaW5kIHRoZSBjb3JyZXNwb25kaW5nIGBFbnRyeWAgYW5kIHJldHVybiBhXG4gICAqIGNvbGxlY3Rpb24gb2YgdGVtcGxhdGUgdmFyaWFibGUgYXNzaWdubWVudHMuXG4gICAqL1xuICBnZXRUZW1wbGF0ZVZhcmlhYmxlc0ZvckNpdGVrZXkoY2l0ZWtleTogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgY29uc3QgZW50cnk6IEVudHJ5ID0gdGhpcy5lbnRyaWVzW2NpdGVrZXldO1xuICAgIGNvbnN0IHNob3J0Y3V0cyA9IHtcbiAgICAgIGNpdGVrZXk6IGNpdGVrZXksXG5cbiAgICAgIGFic3RyYWN0OiBlbnRyeS5hYnN0cmFjdCxcbiAgICAgIGF1dGhvclN0cmluZzogZW50cnkuYXV0aG9yU3RyaW5nLFxuICAgICAgY29udGFpbmVyVGl0bGU6IGVudHJ5LmNvbnRhaW5lclRpdGxlLFxuICAgICAgRE9JOiBlbnRyeS5ET0ksXG4gICAgICBlcHJpbnQ6IGVudHJ5LmVwcmludCxcbiAgICAgIGVwcmludHR5cGU6IGVudHJ5LmVwcmludHR5cGUsXG4gICAgICBldmVudFBsYWNlOiBlbnRyeS5ldmVudFBsYWNlLFxuICAgICAgbm90ZTogZW50cnkubm90ZSxcbiAgICAgIHBhZ2U6IGVudHJ5LnBhZ2UsXG4gICAgICBwdWJsaXNoZXI6IGVudHJ5LnB1Ymxpc2hlcixcbiAgICAgIHB1Ymxpc2hlclBsYWNlOiBlbnRyeS5wdWJsaXNoZXJQbGFjZSxcbiAgICAgIHRpdGxlOiBlbnRyeS50aXRsZSxcbiAgICAgIHRpdGxlU2hvcnQ6IGVudHJ5LnRpdGxlU2hvcnQsXG4gICAgICBVUkw6IGVudHJ5LlVSTCxcbiAgICAgIHllYXI6IGVudHJ5LnllYXI/LnRvU3RyaW5nKCksXG4gICAgICB6b3Rlcm9TZWxlY3RVUkk6IGVudHJ5LnpvdGVyb1NlbGVjdFVSSSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHsgZW50cnk6IGVudHJ5LnRvSlNPTigpLCAuLi5zaG9ydGN1dHMgfTtcbiAgfVxufVxuXG4vKipcbiAqIExvYWQgcmVmZXJlbmNlIGVudHJpZXMgZnJvbSB0aGUgZ2l2ZW4gcmF3IGRhdGFiYXNlIGRhdGEuXG4gKlxuICogUmV0dXJucyBhIGxpc3Qgb2YgYEVudHJ5RGF0YWAsIHdoaWNoIHNob3VsZCBiZSB3cmFwcGVkIHdpdGggdGhlIHJlbGV2YW50XG4gKiBhZGFwdGVyIGFuZCB1c2VkIHRvIGluc3RhbnRpYXRlIGEgYExpYnJhcnlgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZEVudHJpZXMoXG4gIGRhdGFiYXNlUmF3OiBzdHJpbmcsXG4gIGRhdGFiYXNlVHlwZTogRGF0YWJhc2VUeXBlLFxuKTogRW50cnlEYXRhW10ge1xuICBsZXQgbGlicmFyeUFycmF5OiBFbnRyeURhdGFbXTtcblxuICBpZiAoZGF0YWJhc2VUeXBlID09ICdjc2wtanNvbicpIHtcbiAgICBsaWJyYXJ5QXJyYXkgPSBKU09OLnBhcnNlKGRhdGFiYXNlUmF3KTtcbiAgfSBlbHNlIGlmIChkYXRhYmFzZVR5cGUgPT0gJ2JpYmxhdGV4Jykge1xuICAgIGNvbnN0IG9wdGlvbnM6IEJpYlRlWFBhcnNlci5QYXJzZXJPcHRpb25zID0ge1xuICAgICAgZXJyb3JIYW5kbGVyOiAoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAnQ2l0YXRpb24gcGx1Z2luOiBub24tZmF0YWwgZXJyb3IgbG9hZGluZyBCaWJMYVRlWCBlbnRyeTonLFxuICAgICAgICAgIGVycixcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IHBhcnNlZCA9IEJpYlRlWFBhcnNlci5wYXJzZShcbiAgICAgIGRhdGFiYXNlUmF3LFxuICAgICAgb3B0aW9ucyxcbiAgICApIGFzIEJpYlRlWFBhcnNlci5CaWJsaW9ncmFwaHk7XG5cbiAgICBwYXJzZWQuZXJyb3JzLmZvckVhY2goKGVycm9yKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBgQ2l0YXRpb24gcGx1Z2luOiBmYXRhbCBlcnJvciBsb2FkaW5nIEJpYkxhVGVYIGVudHJ5YCArXG4gICAgICAgICAgYCAobGluZSAke2Vycm9yLmxpbmV9LCBjb2x1bW4gJHtlcnJvci5jb2x1bW59KTpgLFxuICAgICAgICBlcnJvci5tZXNzYWdlLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGxpYnJhcnlBcnJheSA9IHBhcnNlZC5lbnRyaWVzO1xuICB9XG5cbiAgcmV0dXJuIGxpYnJhcnlBcnJheTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRob3Ige1xuICBnaXZlbj86IHN0cmluZztcbiAgZmFtaWx5Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFuIGBFbnRyeWAgcmVwcmVzZW50cyBhIHNpbmdsZSByZWZlcmVuY2UgaW4gYSByZWZlcmVuY2UgZGF0YWJhc2UuXG4gKiBFYWNoIGVudHJ5IGhhcyBhIHVuaXF1ZSBpZGVudGlmaWVyLCBrbm93biBpbiBtb3N0IHJlZmVyZW5jZSBtYW5hZ2VycyBhcyBpdHNcbiAqIFwiY2l0ZWtleS5cIlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRW50cnkge1xuICAvKipcbiAgICogVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBlbnRyeSAoYWxzbyB0aGUgY2l0ZWtleSkuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgaWQ6IHN0cmluZztcblxuICBwdWJsaWMgYWJzdHJhY3QgdHlwZTogc3RyaW5nO1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBhYnN0cmFjdD86IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IGF1dGhvcj86IEF1dGhvcltdO1xuXG4gIC8qKlxuICAgKiBBIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGF1dGhvcnMsIGVhY2ggb2YgdGhlIGZvcm1hdCBgPGZpcnN0bmFtZT4gPGxhc3RuYW1lPmAuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgYXV0aG9yU3RyaW5nPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY29udGFpbmVyIGZvciB0aGlzIHJlZmVyZW5jZSAtLSBpbiB0aGUgY2FzZSBvZiBhIGJvb2tcbiAgICogY2hhcHRlciByZWZlcmVuY2UsIHRoZSBuYW1lIG9mIHRoZSBib29rOyBpbiB0aGUgY2FzZSBvZiBhIGpvdXJuYWwgYXJ0aWNsZSxcbiAgICogdGhlIG5hbWUgb2YgdGhlIGpvdXJuYWwuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgY29udGFpbmVyVGl0bGU/OiBzdHJpbmc7XG5cbiAgcHVibGljIGFic3RyYWN0IERPST86IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IGZpbGVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBkYXRlIG9mIGlzc3VlLiBNYW55IHJlZmVyZW5jZXMgZG8gbm90IGNvbnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgbW9udGhcbiAgICogYW5kIGRheSBvZiBpc3N1ZTsgaW4gdGhpcyBjYXNlLCB0aGUgYGlzc3VlZERhdGVgIHdpbGwgY29udGFpbiBkdW1teSBtaW5pbXVtXG4gICAqIHZhbHVlcyBmb3IgdGhvc2UgZWxlbWVudHMuIChBIHJlZmVyZW5jZSB3aGljaCBpcyBvbmx5IGVuY29kZWQgYXMgYmVpbmdcbiAgICogaXNzdWVkIGluIDIwMDEgaXMgcmVwcmVzZW50ZWQgaGVyZSB3aXRoIGEgZGF0ZSAyMDAxLTAxLTAxIDAwOjAwOjAwIFVUQy4pXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgaXNzdWVkRGF0ZT86IERhdGU7XG5cbiAgLyoqXG4gICAqIFBhZ2Ugb3IgcGFnZSByYW5nZSBvZiB0aGUgcmVmZXJlbmNlLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHBhZ2U/OiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCB0aXRsZT86IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IHRpdGxlU2hvcnQ/OiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCBVUkw/OiBzdHJpbmc7XG5cbiAgcHVibGljIGFic3RyYWN0IGV2ZW50UGxhY2U/OiBzdHJpbmc7XG5cbiAgcHVibGljIGFic3RyYWN0IHB1Ymxpc2hlcj86IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IHB1Ymxpc2hlclBsYWNlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCaWJMYVRlWC1zcGVjaWZpYyBwcm9wZXJ0aWVzXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZXByaW50Pzogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgZXByaW50dHlwZT86IHN0cmluZztcblxuICBwcm90ZWN0ZWQgX3llYXI/OiBzdHJpbmc7XG4gIHB1YmxpYyBnZXQgeWVhcigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl95ZWFyXG4gICAgICA/IHBhcnNlSW50KHRoaXMuX3llYXIpXG4gICAgICA6IHRoaXMuaXNzdWVkRGF0ZT8uZ2V0VVRDRnVsbFllYXIoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfbm90ZT86IHN0cmluZ1tdO1xuXG4gIHB1YmxpYyBnZXQgbm90ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9ub3RlXG4gICAgICA/Lm1hcCgoZWwpID0+IGVsLnJlcGxhY2UoLyh6b3Rlcm86XFwvXFwvLispL2csICdbTGlua10oJDEpJykpXG4gICAgICAuam9pbignXFxuXFxuJyk7XG4gIH1cblxuICAvKipcbiAgICogQSBVUkkgd2hpY2ggd2lsbCBvcGVuIHRoZSByZWxldmFudCBlbnRyeSBpbiB0aGUgWm90ZXJvIGNsaWVudC5cbiAgICovXG4gIHB1YmxpYyBnZXQgem90ZXJvU2VsZWN0VVJJKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGB6b3Rlcm86Ly9zZWxlY3QvaXRlbXMvQCR7dGhpcy5pZH1gO1xuICB9XG5cbiAgdG9KU09OKCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICBjb25zdCBqc29uT2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMpO1xuXG4gICAgLy8gYWRkIGdldHRlciB2YWx1ZXNcbiAgICBjb25zdCBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKTtcbiAgICBPYmplY3QuZW50cmllcyhPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhwcm90bykpXG4gICAgICAuZmlsdGVyKChbLCBkZXNjcmlwdG9yXSkgPT4gdHlwZW9mIGRlc2NyaXB0b3IuZ2V0ID09ICdmdW5jdGlvbicpXG4gICAgICAuZm9yRWFjaCgoW2tleSwgZGVzY3JpcHRvcl0pID0+IHtcbiAgICAgICAgaWYgKGRlc2NyaXB0b3IgJiYga2V5WzBdICE9PSAnXycpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgdmFsID0gKHRoaXMgYXMgSUluZGV4YWJsZSlba2V5XTtcbiAgICAgICAgICAgIGpzb25PYmpba2V5XSA9IHZhbDtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICByZXR1cm4ganNvbk9iajtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBFbnRyeURhdGEgPSBFbnRyeURhdGFDU0wgfCBFbnRyeURhdGFCaWJMYVRlWDtcblxuZXhwb3J0IGludGVyZmFjZSBFbnRyeURhdGFDU0wge1xuICBpZDogc3RyaW5nO1xuICB0eXBlOiBzdHJpbmc7XG5cbiAgYWJzdHJhY3Q/OiBzdHJpbmc7XG4gIGF1dGhvcj86IEF1dGhvcltdO1xuICAnY29udGFpbmVyLXRpdGxlJz86IHN0cmluZztcbiAgRE9JPzogc3RyaW5nO1xuICAnZXZlbnQtcGxhY2UnPzogc3RyaW5nO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBpc3N1ZWQ/OiB7ICdkYXRlLXBhcnRzJzogW2FueVtdXSB9O1xuICBwYWdlPzogc3RyaW5nO1xuICBwdWJsaXNoZXI/OiBzdHJpbmc7XG4gICdwdWJsaXNoZXItcGxhY2UnPzogc3RyaW5nO1xuICB0aXRsZT86IHN0cmluZztcbiAgJ3RpdGxlLXNob3J0Jz86IHN0cmluZztcbiAgVVJMPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgRW50cnlDU0xBZGFwdGVyIGV4dGVuZHMgRW50cnkge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGE6IEVudHJ5RGF0YUNTTCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBlcHJpbnQ6IHN0cmluZyA9IG51bGw7XG4gIGVwcmludHR5cGU6IHN0cmluZyA9IG51bGw7XG4gIGZpbGVzOiBzdHJpbmdbXSA9IG51bGw7XG5cbiAgZ2V0IGlkKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGEuaWQ7XG4gIH1cbiAgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS50eXBlO1xuICB9XG5cbiAgZ2V0IGFic3RyYWN0KCkge1xuICAgIHJldHVybiB0aGlzLmRhdGEuYWJzdHJhY3Q7XG4gIH1cbiAgZ2V0IGF1dGhvcigpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmF1dGhvcjtcbiAgfVxuXG4gIGdldCBhdXRob3JTdHJpbmcoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5hdXRob3JcbiAgICAgID8gdGhpcy5kYXRhLmF1dGhvci5tYXAoKGEpID0+IGAke2EuZ2l2ZW59ICR7YS5mYW1pbHl9YCkuam9pbignLCAnKVxuICAgICAgOiBudWxsO1xuICB9XG5cbiAgZ2V0IGNvbnRhaW5lclRpdGxlKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGFbJ2NvbnRhaW5lci10aXRsZSddO1xuICB9XG5cbiAgZ2V0IERPSSgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLkRPSTtcbiAgfVxuXG4gIGdldCBldmVudFBsYWNlKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGFbJ2V2ZW50LXBsYWNlJ107XG4gIH1cblxuICBnZXQgaXNzdWVkRGF0ZSgpIHtcbiAgICBpZiAoXG4gICAgICAhKFxuICAgICAgICB0aGlzLmRhdGEuaXNzdWVkICYmXG4gICAgICAgIHRoaXMuZGF0YS5pc3N1ZWRbJ2RhdGUtcGFydHMnXSAmJlxuICAgICAgICB0aGlzLmRhdGEuaXNzdWVkWydkYXRlLXBhcnRzJ11bMF0ubGVuZ3RoID4gMFxuICAgICAgKVxuICAgIClcbiAgICAgIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgW3llYXIsIG1vbnRoLCBkYXldID0gdGhpcy5kYXRhLmlzc3VlZFsnZGF0ZS1wYXJ0cyddWzBdO1xuICAgIHJldHVybiBuZXcgRGF0ZShEYXRlLlVUQyh5ZWFyLCAobW9udGggfHwgMSkgLSAxLCBkYXkgfHwgMSkpO1xuICB9XG5cbiAgZ2V0IHBhZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5wYWdlO1xuICB9XG5cbiAgZ2V0IHB1Ymxpc2hlcigpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLnB1Ymxpc2hlcjtcbiAgfVxuXG4gIGdldCBwdWJsaXNoZXJQbGFjZSgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhWydwdWJsaXNoZXItcGxhY2UnXTtcbiAgfVxuXG4gIGdldCB0aXRsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLnRpdGxlO1xuICB9XG5cbiAgZ2V0IHRpdGxlU2hvcnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVsndGl0bGUtc2hvcnQnXTtcbiAgfVxuXG4gIGdldCBVUkwoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5VUkw7XG4gIH1cbn1cblxuY29uc3QgQklCTEFURVhfUFJPUEVSVFlfTUFQUElORzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgYWJzdHJhY3Q6ICdhYnN0cmFjdCcsXG4gIGJvb2t0aXRsZTogJ19jb250YWluZXJUaXRsZScsXG4gIGRhdGU6ICdpc3N1ZWQnLFxuICBkb2k6ICdET0knLFxuICBlcHJpbnQ6ICdlcHJpbnQnLFxuICBlcHJpbnR0eXBlOiAnZXByaW50dHlwZScsXG4gIGV2ZW50dGl0bGU6ICdldmVudCcsXG4gIGpvdXJuYWw6ICdfY29udGFpbmVyVGl0bGUnLFxuICBqb3VybmFsdGl0bGU6ICdfY29udGFpbmVyVGl0bGUnLFxuICBsb2NhdGlvbjogJ3B1Ymxpc2hlclBsYWNlJyxcbiAgcGFnZXM6ICdwYWdlJyxcbiAgc2hvcnRqb3VybmFsOiAnY29udGFpbmVyVGl0bGVTaG9ydCcsXG4gIHRpdGxlOiAndGl0bGUnLFxuICBzaG9ydHRpdGxlOiAndGl0bGVTaG9ydCcsXG4gIHVybDogJ1VSTCcsXG4gIHZlbnVlOiAnZXZlbnRQbGFjZScsXG4gIHllYXI6ICdfeWVhcicsXG4gIHB1Ymxpc2hlcjogJ3B1Ymxpc2hlcicsXG4gIG5vdGU6ICdfbm90ZScsXG59O1xuXG4vLyBCaWJMYVRlWCBwYXJzZXIgcmV0dXJucyBhcnJheXMgb2YgcHJvcGVydHkgdmFsdWVzIChhbGxvd2luZyBmb3IgcmVwZWF0ZWRcbi8vIHByb3BlcnR5IGVudHJpZXMpLiBGb3IgdGhlIGZvbGxvd2luZyBmaWVsZHMsIGp1c3QgYmxpbmRseSB0YWtlIHRoZSBmaXJzdC5cbmNvbnN0IEJJQkxBVEVYX1BST1BFUlRZX1RBS0VfRklSU1Q6IHN0cmluZ1tdID0gW1xuICAnYWJzdHJhY3QnLFxuICAnYm9va3RpdGxlJyxcbiAgJ19jb250YWluZXJUaXRsZScsXG4gICdkYXRlJyxcbiAgJ2RvaScsXG4gICdlcHJpbnQnLFxuICAnZXByaW50dHlwZScsXG4gICdldmVudHRpdGxlJyxcbiAgJ2pvdXJuYWx0aXRsZScsXG4gICdsb2NhdGlvbicsXG4gICdwYWdlcycsXG4gICdzaG9ydGpvdXJuYWwnLFxuICAndGl0bGUnLFxuICAnc2hvcnR0aXRsZScsXG4gICd1cmwnLFxuICAndmVudWUnLFxuICAnX3llYXInLFxuICAncHVibGlzaGVyJyxcbl07XG5cbmV4cG9ydCBjbGFzcyBFbnRyeUJpYkxhVGVYQWRhcHRlciBleHRlbmRzIEVudHJ5IHtcbiAgYWJzdHJhY3Q/OiBzdHJpbmc7XG4gIF9jb250YWluZXJUaXRsZT86IHN0cmluZztcbiAgY29udGFpbmVyVGl0bGVTaG9ydD86IHN0cmluZztcbiAgRE9JPzogc3RyaW5nO1xuICBlcHJpbnQ/OiBzdHJpbmc7XG4gIGVwcmludHR5cGU/OiBzdHJpbmc7XG4gIGV2ZW50Pzogc3RyaW5nO1xuICBldmVudFBsYWNlPzogc3RyaW5nO1xuICBpc3N1ZWQ/OiBzdHJpbmc7XG4gIHBhZ2U/OiBzdHJpbmc7XG4gIHB1Ymxpc2hlcj86IHN0cmluZztcbiAgcHVibGlzaGVyUGxhY2U/OiBzdHJpbmc7XG4gIHRpdGxlPzogc3RyaW5nO1xuICB0aXRsZVNob3J0Pzogc3RyaW5nO1xuICBVUkw/OiBzdHJpbmc7XG4gIF95ZWFyPzogc3RyaW5nO1xuICBfbm90ZT86IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0YTogRW50cnlEYXRhQmliTGFUZVgpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgT2JqZWN0LmVudHJpZXMoQklCTEFURVhfUFJPUEVSVFlfTUFQUElORykuZm9yRWFjaChcbiAgICAgIChtYXA6IFtzdHJpbmcsIHN0cmluZ10pID0+IHtcbiAgICAgICAgY29uc3QgW3NyYywgdGd0XSA9IG1hcDtcbiAgICAgICAgaWYgKHNyYyBpbiB0aGlzLmRhdGEuZmllbGRzKSB7XG4gICAgICAgICAgbGV0IHZhbCA9IHRoaXMuZGF0YS5maWVsZHNbc3JjXTtcbiAgICAgICAgICBpZiAoQklCTEFURVhfUFJPUEVSVFlfVEFLRV9GSVJTVC5pbmNsdWRlcyhzcmMpKSB7XG4gICAgICAgICAgICB2YWwgPSAodmFsIGFzIGFueVtdKVswXTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAodGhpcyBhcyBJSW5kZXhhYmxlKVt0Z3RdID0gdmFsO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBnZXQgaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5rZXk7XG4gIH1cbiAgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS50eXBlO1xuICB9XG5cbiAgZ2V0IGZpbGVzKCk6IHN0cmluZ1tdIHtcbiAgICAvLyBGb3Igc29tZSByZWFzb24gdGhlIGJpYnRleCBwYXJzZXIgZG9lc24ndCByZWxpYWJseSBwYXJzZSBmaWxlIGxpc3QgdG9cbiAgICAvLyBhcnJheSA7IHNvIHdlJ2xsIGRvIGl0IG1hbnVhbGx5IC8gcmVkdW5kYW50bHlcbiAgICBsZXQgcmV0OiBzdHJpbmdbXSA9IFtdO1xuICAgIGlmICh0aGlzLmRhdGEuZmllbGRzLmZpbGUpIHtcbiAgICAgIHJldCA9IHJldC5jb25jYXQodGhpcy5kYXRhLmZpZWxkcy5maWxlLmZsYXRNYXAoKHgpID0+IHguc3BsaXQoJzsnKSkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5kYXRhLmZpZWxkcy5maWxlcykge1xuICAgICAgcmV0ID0gcmV0LmNvbmNhdCh0aGlzLmRhdGEuZmllbGRzLmZpbGVzLmZsYXRNYXAoKHgpID0+IHguc3BsaXQoJzsnKSkpO1xuICAgIH1cblxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBnZXQgYXV0aG9yU3RyaW5nKCkge1xuICAgIGlmICh0aGlzLmRhdGEuY3JlYXRvcnMuYXV0aG9yKSB7XG4gICAgICBjb25zdCBuYW1lcyA9IHRoaXMuZGF0YS5jcmVhdG9ycy5hdXRob3IubWFwKChuYW1lKSA9PiB7XG4gICAgICAgIGlmIChuYW1lLmxpdGVyYWwpIHJldHVybiBuYW1lLmxpdGVyYWw7XG4gICAgICAgIGNvbnN0IHBhcnRzID0gW25hbWUuZmlyc3ROYW1lLCBuYW1lLnByZWZpeCwgbmFtZS5sYXN0TmFtZSwgbmFtZS5zdWZmaXhdO1xuICAgICAgICAvLyBEcm9wIGFueSBudWxsIHBhcnRzIGFuZCBqb2luXG4gICAgICAgIHJldHVybiBwYXJ0cy5maWx0ZXIoKHgpID0+IHgpLmpvaW4oJyAnKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG5hbWVzLmpvaW4oJywgJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmRhdGEuZmllbGRzLmF1dGhvcj8uam9pbignLCAnKTtcbiAgICB9XG4gIH1cblxuICBnZXQgY29udGFpbmVyVGl0bGUoKSB7XG4gICAgaWYgKHRoaXMuX2NvbnRhaW5lclRpdGxlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fY29udGFpbmVyVGl0bGU7XG4gICAgfSBlbHNlIGlmICh0aGlzLmRhdGEuZmllbGRzLmVwcmludCkge1xuICAgICAgY29uc3QgcHJlZml4ID0gdGhpcy5kYXRhLmZpZWxkcy5lcHJpbnR0eXBlXG4gICAgICAgID8gYCR7dGhpcy5kYXRhLmZpZWxkcy5lcHJpbnR0eXBlfTpgXG4gICAgICAgIDogJyc7XG4gICAgICBjb25zdCBzdWZmaXggPSB0aGlzLmRhdGEuZmllbGRzLnByaW1hcnljbGFzc1xuICAgICAgICA/IGAgWyR7dGhpcy5kYXRhLmZpZWxkcy5wcmltYXJ5Y2xhc3N9XWBcbiAgICAgICAgOiAnJztcbiAgICAgIHJldHVybiBgJHtwcmVmaXh9JHt0aGlzLmRhdGEuZmllbGRzLmVwcmludH0ke3N1ZmZpeH1gO1xuICAgIH1cbiAgfVxuXG4gIGdldCBpc3N1ZWREYXRlKCkge1xuICAgIHJldHVybiB0aGlzLmlzc3VlZCA/IG5ldyBEYXRlKHRoaXMuaXNzdWVkKSA6IG51bGw7XG4gIH1cblxuICBnZXQgYXV0aG9yKCk6IEF1dGhvcltdIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmNyZWF0b3JzLmF1dGhvcj8ubWFwKChhKSA9PiAoe1xuICAgICAgZ2l2ZW46IGEuZmlyc3ROYW1lLFxuICAgICAgZmFtaWx5OiBhLmxhc3ROYW1lLFxuICAgIH0pKTtcbiAgfVxufVxuIiwiaW1wb3J0IHJlZ2lzdGVyUHJvbWlzZVdvcmtlciBmcm9tICdwcm9taXNlLXdvcmtlci9yZWdpc3Rlcic7XG5cbmltcG9ydCB7IERhdGFiYXNlVHlwZSwgRW50cnlEYXRhLCBsb2FkRW50cmllcyB9IGZyb20gJy4vdHlwZXMnO1xuXG5yZWdpc3RlclByb21pc2VXb3JrZXIoXG4gIChtc2c6IHsgZGF0YWJhc2VSYXc6IHN0cmluZzsgZGF0YWJhc2VUeXBlOiBEYXRhYmFzZVR5cGUgfSk6IEVudHJ5RGF0YVtdID0+IHtcbiAgICByZXR1cm4gbG9hZEVudHJpZXMobXNnLmRhdGFiYXNlUmF3LCBtc2cuZGF0YWJhc2VUeXBlKTtcbiAgfSxcbik7XG4iXSwibmFtZXMiOlsiY2hhckNhdGVnb3JpZXMiLCJjaHVua2VyXzEiLCJiaWJ0ZXgiLCJ1bmljb2RlMmxhdGV4XzEiLCJqYWJyZWZfMSIsIkJpYlRlWFBhcnNlci5wYXJzZSIsInJlZ2lzdGVyUHJvbWlzZVdvcmtlciJdLCJtYXBwaW5ncyI6Ijs7O0VBRUEsU0FBUyxTQUFTLEVBQUUsR0FBRyxFQUFFO0VBQ3pCO0VBQ0EsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLEtBQUssT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLE9BQU8sR0FBRyxLQUFLLFVBQVUsQ0FBQyxJQUFJLE9BQU8sR0FBRyxDQUFDLElBQUksS0FBSyxVQUFVO0VBQzFHLENBQUM7QUFDRDtFQUNBLFNBQVMscUJBQXFCLEVBQUUsUUFBUSxFQUFFO0VBQzFDLEVBQUUsU0FBUyxtQkFBbUIsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7RUFDN0QsSUFBSSxTQUFTLFdBQVcsRUFBRSxHQUFHLEVBQUU7RUFDL0I7RUFDQSxNQUFNLElBQUksT0FBTyxJQUFJLENBQUMsV0FBVyxLQUFLLFVBQVUsRUFBRTtFQUNsRCxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBQztFQUNuQyxPQUFPLE1BQU07RUFDYixRQUFRLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFDO0VBQzdCLE9BQU87RUFDUCxLQUFLO0VBQ0wsSUFBSSxJQUFJLEtBQUssRUFBRTtFQUNmO0VBQ0EsTUFBTSxJQUFJLE9BQU8sT0FBTyxLQUFLLFdBQVcsSUFBSSxPQUFPLElBQUksT0FBTyxFQUFFO0VBQ2hFO0VBQ0E7RUFDQTtFQUNBLFFBQVEsT0FBTyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsRUFBRSxL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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUN4RixJQUFJLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztFQUNoRSxJQUFJLFFBQVEsRUFBRSxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztFQUNqRSxJQUFJLE1BQU0sRUFBRSxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUMxSCxJQUFJLFFBQVEsRUFBRSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQzdDLElBQUksUUFBUSxFQUFFLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDN0MsSUFBSSxRQUFRLEVBQUUsVUFBVTtFQUN4QixJQUFJLFFBQVEsRUFBRSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQzVDLElBQUksV0FBVyxFQUFFLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDdEQsSUFBSSxXQUFXLEVBQUUsSUFBSSxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUM7RUFDNUQsSUFBSSxhQUFhLEVBQUUsSUFBSSxNQUFNLENBQUMsQ0FBQyx1QkFBdUIsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQztFQUM3RSxJQUFJLE1BQU0sRUFBRSxpQkFBaUI7RUFDN0IsSUFBSSxPQUFPLEVBQUUsSUFBSSxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztFQUN2RixJQUFJLGdCQUFnQixFQUFFLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDdEQsSUFBSSxlQUFlLEVBQUUsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUNwRCxJQUFJLE1BQU0sRUFBRSxzQkFBc0I7RUFDbEMsQ0FBQyxDQUFDO0VBQ0YsTUFBTSxNQUFNLEdBQUc7RUFDZixJQUFJLE9BQU8sRUFBRTtFQUNiLFFBQVEsUUFBUTtFQUNoQixRQUFRLFlBQVk7RUFDcEIsUUFBUSxjQUFjO0VBQ3RCLFFBQVEsYUFBYTtFQUNyQixRQUFRLFVBQVU7RUFDbEIsUUFBUSxRQUFRO0VBQ2hCLFFBQVEsU0FBUztFQUNqQixRQUFRLFNBQVM7RUFDakIsUUFBUSxTQUFTO0VBQ2pCLFFBQVEsUUFBUTtFQUNoQixRQUFRLGNBQWM7RUFDdEIsUUFBUSxZQUFZO0VBQ3BCLEtBQUs7RUFDTCxJQUFJLEtBQUssRUFBRTtFQUNYLFFBQVEsT0FBTztFQUNmLFFBQVEsUUFBUTtFQUNoQixRQUFRLFlBQVk7RUFDcEIsUUFBUSxXQUFXO0VBQ25CLFFBQVEsTUFBTTtFQUNkLFFBQVEsV0FBVztFQUNuQixRQUFRLFdBQVc7RUFDbkIsUUFBUSxZQUFZO0VBQ3BCLEtBQUs7RUFDTCxJQUFJLE1BQU0sRUFBRTtFQUNaLFFBQVEsV0FBVztFQUNuQixRQUFRLFVBQVU7RUFDbEIsS0FBSztFQUNMLElBQUksUUFBUSxFQUFFO0VBQ2QsUUFBUSxLQUFLO0VBQ2IsUUFBUSxLQUFLO0VBQ2IsUUFBUSxNQUFNO0VBQ2QsUUFBUSxPQUFPO0VBQ2YsUUFBUSxRQUFRO0VBQ2hCLFFBQVEsT0FBTztFQUNmLFFBQVEsT0FBTztFQUNmLFFBQVEsT0FBTztFQUNmLFFBQVEsUUFBUTtFQUNoQixLQUFLO0VBQ0wsSUFBSSxJQUFJLEVBQUU7RUFDVixRQUFRLFlBQVk7RUFDcEIsUUFBUSxTQUFTO0VBQ2pCLFFBQVEsUUFBUTtFQUNoQixRQUFRLFFBQVE7RUFDaEIsUUFBUSxPQUFPO0VBQ2YsUUFBUSxNQUFNO0VBQ2QsS0FBSztFQUNMLElBQUksUUFBUSxFQUFFO0VBQ2QsUUFBUSxTQUFTO0VBQ2pCLFFBQVEsY0FBYztFQUN0QixRQUFRLGNBQWM7RUFDdEIsS0FBSztFQUNMLENBQUMsQ0FBQztFQUNGLE1BQU0sT0FBTyxHQUFHO0VBQ2hCLElBQUksVUFBVTtFQUNkLElBQUksU0FBUztFQUNiLElBQUksVUFBVTtFQUNkLElBQUksU0FBUztFQUNiLElBQUksWUFBWTtFQUNoQixJQUFJLFlBQVk7RUFDaEIsSUFBSSxXQUFXO0VBQ2YsSUFBSSxXQUFXO0VBQ2YsSUFBSSxJQUFJO0VBQ1IsSUFBSSxLQUFLO0VBQ1QsSUFBSSxPQUFPO0VBQ1gsSUFBSSxPQUFPO0VBQ1gsSUFBSSxPQUFPO0VBQ1gsSUFBSSxPQUFPO0VBQ1gsSUFBSSxPQUFPO0VBQ1gsSUFBSSxPQUFPO0VBQ1gsSUFBSSxPQUFPO0VBQ1gsSUFBSSxPQUFPO0VBQ1gsSUFBSSxPQUFPO0VBQ1gsSUFBSSxPQUFPO0VBQ1gsSUFBSSxPQUFPO0VBQ1gsSUFBSSxPQUFPO0VBQ1gsSUFBSSxPQUFPO0VBQ1gsSUFBSSxTQUFTO0VBQ2IsQ0FBQyxDQUFDO0VBQ0YsTUFBTSxNQUFNLENBQUM7RUFDYixJQUFJLFdBQVcsQ0FBQyxPQUFPLEdBQUcsRUFBRSxFQUFFO0VBQzlCLFFBQVEsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7RUFDakMsUUFBUSxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztFQUMzQixRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsVUFBVSxHQUFHLEVBQUUsR0FBRyxDQUFDO0VBQ3RDLFFBQVEsS0FBSyxNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7RUFDL0QsWUFBWSxJQUFJLE9BQU8sS0FBSyxLQUFLLFdBQVc7RUFDNUMsZ0JBQWdCLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0VBQ3ZDLFNBQVM7RUFDVCxRQUFRLElBQUksT0FBTyxDQUFDLFlBQVksS0FBSyxLQUFLLEVBQUU7RUFDNUM7RUFDQSxZQUFZLE9BQU8sQ0FBQyxZQUFZLEdBQUcsVUFBVSxHQUFHLEVBQUUsR0FBRyxDQUFDO0VBQ3RELFNBQVM7RUFDVCxhQUFhLElBQUksT0FBTyxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUU7RUFDckQ7RUFDQSxZQUFZLE9BQU8sQ0FBQyxZQUFZLEdBQUcsVUFBVSxHQUFHLEVBQUUsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7RUFDakUsU0FBUztFQUNULFFBQVEsSUFBSSxPQUFPLE9BQU8sQ0FBQyxZQUFZLEtBQUssU0FBUyxFQUFFO0VBQ3ZELFlBQVksT0FBTyxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxHQUFHLE9BQU8sR0FBRyxFQUFFLENBQUM7RUFDdkUsU0FBUztFQUNULGFBQWE7RUFDYixZQUFZLE9BQU8sQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksSUFBSSxPQUFPLENBQUM7RUFDbkUsU0FBUztFQUNULFFBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPO0VBQzVCLFlBQVksT0FBTyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7RUFDakMsUUFBUSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVk7RUFDakMsWUFBWSxPQUFPLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztFQUN0QyxRQUFRLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtFQUN6QixZQUFZLE9BQU8sQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO0VBQ3pDLFlBQVksT0FBTyxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7RUFDM0MsU0FBUztFQUNULFFBQVEsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsQ0FBQyw0QkFBNEIsRUFBRSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsRUFBRSxZQUFZLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUseUJBQXlCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztFQUN6VixRQUFRLE1BQU0sZUFBZSxHQUFHO0VBQ2hDLFlBQVksT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO0VBQ3hELFlBQVksR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO0VBQ25ELFlBQVksR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO0VBQ25ELFlBQVksSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0VBQ2hELFlBQVksT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0VBQ25ELFlBQVksU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLHlDQUF5QyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7RUFDNUYsWUFBWSxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtFQUM1RSxZQUFZLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtFQUMxQyxZQUFZLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtFQUMvQyxTQUFTLENBQUM7RUFDVjtFQUNBLFFBQVEsS0FBSyxNQUFNLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsRUFBRTtFQUNqRixZQUFZLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO0VBQ3pGLFNBQVM7RUFDVCxRQUFRLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtFQUN0QyxZQUFZLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztFQUNsSCxTQUFTO0VBQ1QsUUFBUSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO0VBQ3BDLFFBQVEsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7RUFDekIsUUFBUSxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztFQUMzQixRQUFRLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0VBQzFCLFFBQVEsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7RUFDMUIsUUFBUSxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztFQUM5QixRQUFRLElBQUksQ0FBQyxlQUFlLEdBQUc7RUFDL0IsWUFBWSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0VBQ2xDLFlBQVksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztFQUNsQyxZQUFZLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7RUFDbEMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0VBQ2xDLFlBQVksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztFQUNsQyxZQUFZLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7RUFDbEMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0VBQ2xDLFlBQVksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztFQUNsQyxZQUFZLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7RUFDbEMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0VBQ2xDLFlBQVksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztFQUNsQyxZQUFZLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7RUFDbEMsWUFBWSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7RUFDdkQsWUFBWSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7RUFDakQsWUFBWSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUM7RUFDMUQsWUFBWSxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHlDQUF5QyxDQUFDLENBQUM7RUFDMUUsWUFBWSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7RUFDckQsWUFBWSxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDJDQUEyQyxDQUFDLENBQUM7RUFDNUUsWUFBWSxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLENBQUM7RUFDakUsWUFBWSxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1FQUFtRSxDQUFDLENBQUM7RUFDdEcsWUFBWSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLENBQUM7RUFDOUQsWUFBWSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7RUFDbkQsWUFBWSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHlDQUF5QyxDQUFDLENBQUM7RUFDeEUsWUFBWSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7RUFDL0QsWUFBWSxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUM7RUFDNUQsWUFBWSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHNDQUFzQyxDQUFDLENBQUM7RUFDckUsWUFBWSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHNDQUFzQyxDQUFDLENBQUM7RUFDckUsWUFBWSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLENBQUM7RUFDNUQsWUFBWSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDJDQUEyQyxDQUFDLENBQUM7RUFDMUUsWUFBWSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdEQUFnRCxDQUFDLENBQUM7RUFDaEYsWUFBWSxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHVEQUF1RCxDQUFDLENBQUM7RUFDeEYsWUFBWSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLENBQUM7RUFDNUQsU0FBUyxDQUFDO0VBQ1YsS0FBSztFQUNMLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLEdBQUcsSUFBSSxFQUFFO0VBQzdCLFFBQVEsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO0VBQ3hCLFFBQVEsS0FBSyxNQUFNLEtBQUssSUFBSUMsT0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtFQUNwRCxZQUFZLElBQUksU0FBUyxHQUFHQyxPQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxtQkFBbUIsRUFBRUMsYUFBZSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7RUFDbkssWUFBWSxJQUFJLEtBQUs7RUFDckIsZ0JBQWdCLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0VBQ2xELFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztFQUNqQyxTQUFTO0VBQ1QsUUFBUSxPQUFPLElBQUksQ0FBQztFQUNwQixLQUFLO0VBQ0wsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFO0VBQ2pCLFFBQVEsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7RUFDbkYsS0FBSztFQUNMLElBQUksU0FBUyxDQUFDLEtBQUssRUFBRTtFQUNyQixRQUFRLEtBQUssTUFBTSxLQUFLLElBQUlGLE9BQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7RUFDcEQsWUFBWSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0VBQ25DLFNBQVM7RUFDVCxRQUFRLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0VBQzdCLEtBQUs7RUFDTCxJQUFJLE1BQU0sVUFBVSxDQUFDLEtBQUssRUFBRTtFQUM1QixRQUFRLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTUEsT0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtFQUMzRSxZQUFZLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7RUFDbkMsU0FBUztFQUNULFFBQVEsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7RUFDN0IsS0FBSztFQUNMLElBQUksTUFBTSxHQUFHO0VBQ2IsUUFBUSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztFQUMxQixRQUFRLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQztFQUMzQixRQUFRLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7RUFDMUMsUUFBUSxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7RUFDakUsWUFBWSxJQUFJLENBQUMsS0FBSyxHQUFHO0VBQ3pCLGdCQUFnQixJQUFJLEVBQUUsU0FBUztFQUMvQixnQkFBZ0IsSUFBSSxFQUFFLEVBQUU7RUFDeEIsZ0JBQWdCLEtBQUssRUFBRSxDQUFDO0VBQ3hCLGdCQUFnQixjQUFjLEVBQUUsSUFBSTtFQUNwQyxnQkFBZ0IsS0FBSyxFQUFFO0VBQ3ZCLG9CQUFvQixLQUFLLEVBQUUsQ0FBQztFQUM1QixvQkFBb0IsS0FBSyxFQUFFLENBQUM7RUFDNUIsb0JBQW9CLEtBQUssRUFBRSxDQUFDO0VBQzVCLGlCQUFpQjtFQUNqQixhQUFhLENBQUM7RUFDZCxZQUFZLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0VBQzVDLFlBQVksT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO0VBQzNDLFNBQVM7RUFDVCxRQUFRLE9BQU87RUFDZixZQUFZLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtFQUMvQixZQUFZLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztFQUNqQyxZQUFZLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtFQUNuQyxZQUFZLE9BQU87RUFDbkIsWUFBWSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7RUFDbkMsU0FBUyxDQUFDO0VBQ1YsS0FBSztFQUNMLElBQUksUUFBUSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFO0VBQ2pDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYztFQUN0QyxZQUFZLE9BQU87RUFDbkIsUUFBUSxJQUFJLENBQUMsR0FBRyxFQUFFO0VBQ2xCLFlBQVksSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO0VBQzdDLFlBQVksT0FBTztFQUNuQixTQUFTO0VBQ1Q7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztFQUMvRCxLQUFLO0VBQ0wsSUFBSSxVQUFVLENBQUMsS0FBSyxFQUFFO0VBQ3RCLFFBQVEsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO0VBQ2hDLFFBQVEsSUFBSTtFQUNaLFlBQVksSUFBSSxHQUFHLEdBQUdDLE9BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLG1CQUFtQixFQUFFQyxhQUFlLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztFQUM3SixZQUFZLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxjQUFjO0VBQzNDLGdCQUFnQixNQUFNLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztFQUNoRCxZQUFZLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0VBQ2xDLFlBQVksS0FBSyxNQUFNLE1BQU0sSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFO0VBQy9DLGdCQUFnQixRQUFRLE1BQU0sQ0FBQyxJQUFJO0VBQ25DLG9CQUFvQixLQUFLLE9BQU8sQ0FBQztFQUNqQyxvQkFBb0IsS0FBSyxlQUFlLENBQUM7RUFDekMsb0JBQW9CLEtBQUssYUFBYSxDQUFDO0VBQ3ZDLG9CQUFvQixLQUFLLG9CQUFvQjtFQUM3Qyx3QkFBd0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztFQUM3Qyx3QkFBd0IsTUFBTTtFQUM5QixvQkFBb0IsS0FBSyxtQkFBbUIsQ0FBQztFQUM3QyxvQkFBb0IsS0FBSyxjQUFjO0VBQ3ZDLHdCQUF3QixNQUFNO0VBQzlCLGlCQUFpQjtFQUNqQixhQUFhO0VBQ2IsWUFBWSxPQUFPLEdBQUcsQ0FBQztFQUN2QixTQUFTO0VBQ1QsUUFBUSxPQUFPLEdBQUcsRUFBRTtFQUNwQixZQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUTtFQUM3QixnQkFBZ0IsTUFBTSxHQUFHLENBQUM7RUFDMUIsWUFBWSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztFQUM3QixnQkFBZ0IsT0FBTyxFQUFFLEdBQUcsQ0FBQyxPQUFPO0VBQ3BDLGdCQUFnQixJQUFJLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSTtFQUNqRSxnQkFBZ0IsTUFBTSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU07RUFDakQsZ0JBQWdCLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSztFQUNsQyxhQUFhLENBQUMsQ0FBQztFQUNmLFlBQVksT0FBTyxJQUFJLENBQUM7RUFDeEIsU0FBUztFQUNULEtBQUs7RUFDTCxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUU7RUFDWjtFQUNBLFFBQVEsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUNyQyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUs7RUFDdEIsWUFBWSxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7RUFDN0MsUUFBUSxPQUFPLElBQUksQ0FBQztFQUNwQixLQUFLO0VBQ0wsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsRUFBRTtFQUNyQixRQUFRLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7RUFDckQsS0FBSztFQUNMLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRSxXQUFXLEVBQUU7RUFDNUIsUUFBUSxJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEtBQUssVUFBVTtFQUMzRCxZQUFZLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0VBQzNDLFFBQVEsT0FBTyxXQUFXLENBQUM7RUFDM0IsS0FBSztFQUNMLElBQUksUUFBUSxDQUFDLElBQUksRUFBRTtFQUNuQjtFQUNBLFFBQVEsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0VBQ2hFO0VBQ0EsUUFBUSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEtBQUs7RUFDMUQsWUFBWSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO0VBQ2pHLGdCQUFnQixHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7RUFDOUMsYUFBYTtFQUNiLGlCQUFpQjtFQUNqQixnQkFBZ0IsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztFQUNoQyxhQUFhO0VBQ2IsWUFBWSxPQUFPLEdBQUcsQ0FBQztFQUN2QixTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7RUFDZjtFQUNBLFFBQVEsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxLQUFLO0VBQzFELFlBQVksSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtFQUNsQyxnQkFBZ0IsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztFQUNoQyxnQkFBZ0IsT0FBTyxHQUFHLENBQUM7RUFDM0IsYUFBYTtFQUNiLFlBQVksTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7RUFDN0MsWUFBWSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztFQUMzQyxZQUFZLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUU7RUFDdk0sZ0JBQWdCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0VBQ3ZDLGdCQUFnQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7RUFDbkMsZ0JBQWdCLE9BQU8sR0FBRyxDQUFDO0VBQzNCLGFBQWE7RUFDYixZQUFZLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtFQUM3SixnQkFBZ0IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7RUFDNUQsZ0JBQWdCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztFQUNuQyxnQkFBZ0IsT0FBTyxHQUFHLENBQUM7RUFDM0IsYUFBYTtFQUNiLFlBQVksSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxJQUFJLEVBQUU7RUFDM0YsZ0JBQWdCLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQztFQUMxQyxnQkFBZ0IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0VBQ25DLGdCQUFnQixPQUFPLEdBQUcsQ0FBQztFQUMzQixhQUFhO0VBQ2IsWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0VBQzVCLFlBQVksT0FBTyxHQUFHLENBQUM7RUFDdkIsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0VBQ2YsS0FBSztFQUNMLElBQUksaUJBQWlCLENBQUMsSUFBSSxFQUFFO0VBQzVCLFFBQVEsT0FBTyxDQUFDLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7RUFDM0osS0FBSztFQUNMLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7RUFDekIsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU07RUFDOUQsWUFBWSxRQUFRLElBQUksS0FBSyxNQUFNLEVBQUU7RUFDckM7RUFDQSxRQUFRLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO0VBQ3RDLFlBQVksSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssSUFBSTtFQUN2RCxnQkFBZ0IsT0FBTyxLQUFLLENBQUM7RUFDN0IsWUFBWSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO0VBQzNDLFNBQVM7RUFDVDtFQUNBLFFBQVEsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQztFQUNoRCxZQUFZLE9BQU8sS0FBSyxDQUFDO0VBQ3pCO0VBQ0EsUUFBUSxJQUFJLElBQUksS0FBSyxNQUFNLEVBQUU7RUFDN0IsWUFBWSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUNyRCxZQUFZLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO0VBQ3BFLGdCQUFnQixJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU07RUFDbEQsb0JBQW9CLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7RUFDaEQsYUFBYTtFQUNiO0VBQ0EsWUFBWSxJQUFJLEdBQUcsTUFBTSxDQUFDO0VBQzFCLFNBQVM7RUFDVDtFQUNBLFFBQVEsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJO0VBQzVGLFlBQVksT0FBTyxLQUFLLENBQUM7RUFDekIsUUFBUSxRQUFRLElBQUk7RUFDcEIsWUFBWSxLQUFLLE1BQU07RUFDdkIsZ0JBQWdCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0VBQ3hELFlBQVksS0FBSyxnQkFBZ0IsQ0FBQztFQUNsQyxZQUFZLEtBQUssT0FBTztFQUN4QixnQkFBZ0IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUNsRCxTQUFTO0VBQ1QsUUFBUSxPQUFPLEtBQUssQ0FBQztFQUNyQixLQUFLO0VBQ0wsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFO0VBQ2hCLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztFQUMvQixZQUFZLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0VBQ3hELFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0VBQ3hCLFFBQVEsUUFBUSxJQUFJLENBQUMsSUFBSTtFQUN6QixZQUFZLEtBQUssWUFBWSxDQUFDO0VBQzlCLFlBQVksS0FBSyxhQUFhO0VBQzlCLGdCQUFnQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7RUFDOUMsWUFBWSxLQUFLLGFBQWE7RUFDOUIsZ0JBQWdCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0VBQ3BELFlBQVksS0FBSyxPQUFPO0VBQ3hCLGdCQUFnQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7RUFDOUMsWUFBWSxLQUFLLGNBQWM7RUFDL0IsZ0JBQWdCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztFQUM1QyxZQUFZLEtBQUssZ0JBQWdCO0VBQ2pDLGdCQUFnQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7RUFDaEQsWUFBWSxLQUFLLGtCQUFrQjtFQUNuQyxnQkFBZ0IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0VBQ2xELFlBQVksS0FBSyxPQUFPO0VBQ3hCLGdCQUFnQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7RUFDOUMsWUFBWSxLQUFLLE9BQU87RUFDeEIsZ0JBQWdCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7RUFDeEUsWUFBWSxLQUFLLG1CQUFtQjtFQUNwQyxnQkFBZ0IsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7RUFDbkQsWUFBWSxLQUFLLGlCQUFpQjtFQUNsQyxnQkFBZ0IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0VBQ2xELFlBQVksS0FBSyxrQkFBa0IsQ0FBQztFQUNwQyxZQUFZLEtBQUssb0JBQW9CO0VBQ3JDLGdCQUFnQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7RUFDL0MsWUFBWSxLQUFLLGVBQWU7RUFDaEMsZ0JBQWdCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztFQUMvQyxZQUFZLEtBQUssb0JBQW9CO0VBQ3JDLGdCQUFnQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7RUFDakQsWUFBWSxLQUFLLFFBQVEsQ0FBQztFQUMxQixZQUFZLEtBQUssTUFBTSxDQUFDO0VBQ3hCLFlBQVksS0FBSyxlQUFlLENBQUM7RUFDakMsWUFBWSxLQUFLLGFBQWE7RUFDOUIsZ0JBQWdCLE9BQU8sSUFBSSxDQUFDO0VBQzVCLFlBQVk7RUFDWixnQkFBZ0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksV0FBVyxDQUFDLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7RUFDbEgsU0FBUztFQUNULEtBQUs7RUFDTCxJQUFJLGNBQWMsQ0FBQyxJQUFJLEVBQUU7RUFDekIsUUFBUSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztFQUNoQyxRQUFRLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0VBQzdDLFFBQVEsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7RUFDakMsUUFBUSxPQUFPLEtBQUssQ0FBQztFQUNyQixLQUFLO0VBQ0wsSUFBSSxTQUFTLENBQUMsSUFBSSxFQUFFO0VBQ3BCLFFBQVEsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztFQUNySCxRQUFRLE9BQU8sSUFBSSxDQUFDO0VBQ3BCLEtBQUs7RUFDTCxJQUFJLGdCQUFnQixDQUFDLElBQUksRUFBRTtFQUMzQixRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7RUFDM0QsUUFBUSxPQUFPLElBQUksQ0FBQztFQUNwQixLQUFLO0VBQ0wsSUFBSSxlQUFlLENBQUMsSUFBSSxFQUFFO0VBQzFCLFFBQVEsSUFBSSxFQUFFLENBQUM7RUFDZixRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7RUFDN0MsUUFBUSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztFQUMxQyxlQUFlLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztFQUN6QyxlQUFlLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDO0VBQ3pDLGdCQUFnQixNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFLEtBQUssS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDNU0sUUFBUSxJQUFJLENBQUMsT0FBTyxFQUFFO0VBQ3RCLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUM7RUFDN0MsZ0JBQWdCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsNkJBQTZCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztFQUMzRyxZQUFZLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7RUFDaEQsU0FBUztFQUNULFFBQVEsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0VBQzFCLFlBQVksSUFBSSxFQUFFLE9BQU87RUFDekI7RUFDQSxZQUFZLElBQUksRUFBRSxPQUFPLEdBQUcsU0FBUyxHQUFHLFVBQVU7RUFDbEQsWUFBWSxNQUFNLEVBQUUsRUFBRTtFQUN0QixZQUFZLEtBQUssRUFBRSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztFQUN6RixTQUFTLENBQUMsQ0FBQztFQUNYLEtBQUs7RUFDTCxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUU7RUFDdEIsUUFBUSxNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUM7RUFDakMsUUFBUSxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7RUFDekMsWUFBWSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtFQUNwRixnQkFBZ0IsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7RUFDckUsZ0JBQWdCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0VBQ2hFLGdCQUFnQixJQUFJLE9BQU8sRUFBRTtFQUM3QixvQkFBb0IsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDO0VBQ3RJLG9CQUFvQixLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztFQUMxRSxpQkFBaUI7RUFDakIsYUFBYTtFQUNiLFNBQVM7RUFDVCxRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7RUFDeEYsUUFBUSxPQUFPLElBQUksQ0FBQztFQUNwQixLQUFLO0VBQ0wsSUFBSSxhQUFhLENBQUMsSUFBSSxFQUFFO0VBQ3hCLFFBQVEsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztFQUNsQyxRQUFRLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7RUFDekMsWUFBWSxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztFQUNwRCxTQUFTO0VBQ1QsYUFBYSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUU7RUFDbEUsWUFBWSxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztFQUM5RSxTQUFTO0VBQ1QsYUFBYTtFQUNiLFlBQVksSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7RUFDcEQsU0FBUztFQUNULEtBQUs7RUFDTCxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtFQUN2QyxRQUFRLFFBQVEsSUFBSSxDQUFDLElBQUk7RUFDekIsWUFBWSxLQUFLLGdCQUFnQjtFQUNqQztFQUNBLGdCQUFnQixJQUFJLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztFQUN4RSxvQkFBb0IsS0FBSyxHQUFHLElBQUksQ0FBQztFQUNqQyxnQkFBZ0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztFQUMzRixnQkFBZ0IsTUFBTTtFQUN0QixZQUFZLEtBQUssT0FBTyxDQUFDO0VBQ3pCLFlBQVksS0FBSyxZQUFZLENBQUM7RUFDOUIsWUFBWSxLQUFLLGFBQWE7RUFDOUIsZ0JBQWdCLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO0VBQ3RELG9CQUFvQixJQUFJLFFBQVEsRUFBRTtFQUNsQyx3QkFBd0IsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7RUFDL0MscUJBQXFCO0VBQ3JCLHlCQUF5QjtFQUN6Qix3QkFBd0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0VBQ3pDLHFCQUFxQjtFQUNyQixpQkFBaUI7RUFDakIsZ0JBQWdCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztFQUNyRyxnQkFBZ0IsTUFBTTtFQUN0QixZQUFZLEtBQUssT0FBTztFQUN4QixnQkFBZ0IsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7RUFDN0Msb0JBQW9CLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztFQUM5RSxnQkFBZ0IsTUFBTTtFQUN0QixTQUFTO0VBQ1QsS0FBSztFQUNMLElBQUksZUFBZSxDQUFDLElBQUksRUFBRTtFQUMxQixRQUFRLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksSUFBSSxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDN0csS0FBSztFQUNMLElBQUksV0FBVyxDQUFDLElBQUksRUFBRTtFQUN0QixRQUFRLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0VBQ3RDLFFBQVEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUM7RUFDeEksUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztFQUNyQyxZQUFZLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7RUFDaEMsUUFBUSxPQUFPLElBQUksQ0FBQztFQUNwQixLQUFLO0VBQ0wsSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFO0VBQ3ZCLFFBQVEsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQztFQUNqQztFQUNBLFFBQVEsSUFBSSxVQUFVLEdBQUdBLGFBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztFQUMzRCxZQUFZLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztFQUN6QyxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBR0EsYUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLFVBQVUsR0FBR0EsYUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQ2hMLFlBQVksT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0VBQ3pDLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHQSxhQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sVUFBVSxHQUFHQSxhQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDcEwsWUFBWSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7RUFDekMsUUFBUSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxLQUFLLG9CQUFvQixHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7RUFDbkUsUUFBUSxJQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxRQUFRLEtBQUssVUFBVSxHQUFHQSxhQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJQSxhQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0VBQzdKLFlBQVksT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0VBQ3pDLFNBQVM7RUFDVCxRQUFRLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLFFBQVEsRUFBRTtFQUM1QyxZQUFZLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7RUFDNUMsU0FBUztFQUNULGFBQWEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO0VBQzdDLFlBQVksS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0VBQ2pDLFNBQVM7RUFDVCxhQUFhO0VBQ2IsWUFBWSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztFQUMvQixTQUFTO0VBQ1QsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxLQUFLLG9CQUFvQixHQUFHLEtBQUssR0FBRyxLQUFLLENBQUM7RUFDeEUsUUFBUSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7RUFDMUIsWUFBWSxJQUFJLEVBQUUsT0FBTztFQUN6QixZQUFZLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxHQUFHLElBQUksRUFBRTtFQUNwQyxZQUFZLEtBQUs7RUFDakIsU0FBUyxDQUFDLENBQUM7RUFDWCxLQUFLO0VBQ0wsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLEVBQUU7RUFDNUIsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0VBQzVCLFFBQVEsT0FBTyxJQUFJLENBQUM7RUFDcEIsS0FBSztFQUNMLElBQUksZUFBZSxDQUFDLElBQUksRUFBRTtFQUMxQixRQUFRLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztFQUN2RixLQUFLO0VBQ0wsSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFO0VBQ3RCLFFBQVEsSUFBSSxFQUFFLENBQUM7RUFDZixRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7RUFDNUIsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLE1BQU0sSUFBSSxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxNQUFNLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRTtFQUNwSztFQUNBLFlBQVksSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDO0VBQ2hDLFlBQVksS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO0VBQzVDLGdCQUFnQixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO0VBQzNDLG9CQUFvQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0VBQ3JELG9CQUFvQixRQUFRLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7RUFDMUksaUJBQWlCO0VBQ2pCLHFCQUFxQjtFQUNyQixvQkFBb0IsUUFBUSxHQUFHLEtBQUssQ0FBQztFQUNyQyxpQkFBaUI7RUFDakIsZ0JBQWdCLElBQUksQ0FBQyxRQUFRO0VBQzdCLG9CQUFvQixNQUFNO0VBQzFCLGFBQWE7RUFDYixZQUFZLElBQUksUUFBUTtFQUN4QixnQkFBZ0IsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7RUFDdkMsU0FBUztFQUNULFFBQVEsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtFQUNuQyxZQUFZLEtBQUssTUFBTSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtFQUNwRSxnQkFBZ0IsSUFBSSxDQUFDLEVBQUU7RUFDdkIsb0JBQW9CLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztFQUMvQyxhQUFhO0VBQ2IsU0FBUztFQUNULFFBQVEsT0FBTyxJQUFJLENBQUM7RUFDcEIsS0FBSztFQUNMLElBQUksZUFBZSxDQUFDLElBQUksRUFBRTtFQUMxQixRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztFQUMzRSxRQUFRLElBQUksT0FBTyxHQUFHQSxhQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUN0RSxlQUFlQSxhQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0VBQzdELGVBQWVBLGFBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQ2hFLGVBQWVBLGFBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUMvRCxlQUFlQSxhQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUMvRCxRQUFRLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSUEsYUFBZSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztFQUN2SCxZQUFZLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHQSxhQUFlLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7RUFDdkYsUUFBUSxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVc7RUFDekMsWUFBWSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7RUFDaEgsUUFBUSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7RUFDbEMsS0FBSztFQUNMLElBQUksWUFBWSxDQUFDLElBQUksRUFBRTtFQUN2QixRQUFRLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJO0VBQ2pDLFlBQVksT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0VBQ25DLFFBQVEsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDQSxhQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0VBQ3JGLEtBQUs7RUFDTCxJQUFJLGdCQUFnQixDQUFDLElBQUksRUFBRTtFQUMzQixRQUFRLElBQUksQ0FBQyxJQUFJO0VBQ2pCLFlBQVksT0FBTyxJQUFJLENBQUM7RUFDeEIsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFO0VBQ25DLFlBQVksS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO0VBQzVDLGdCQUFnQixRQUFRLEtBQUssQ0FBQyxJQUFJO0VBQ2xDLG9CQUFvQixLQUFLLE1BQU07RUFDL0Isd0JBQXdCLE9BQU8sS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO0VBQ3pELG9CQUFvQixLQUFLLE9BQU87RUFDaEMsd0JBQXdCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztFQUN2RSx3QkFBd0IsSUFBSSxTQUFTO0VBQ3JDLDRCQUE0QixPQUFPLFNBQVMsQ0FBQztFQUM3Qyx3QkFBd0IsTUFBTTtFQUM5QixvQkFBb0I7RUFDcEIsd0JBQXdCLE9BQU8sSUFBSSxDQUFDO0VBQ3BDLGlCQUFpQjtFQUNqQixhQUFhO0VBQ2IsU0FBUztFQUNULGFBQWE7RUFDYixZQUFZLE9BQU8sSUFBSSxDQUFDO0VBQ3hCLFNBQVM7RUFDVCxLQUFLO0VBQ0wsSUFBSSxhQUFhLENBQUMsSUFBSSxFQUFFO0VBQ3hCLFFBQVEsSUFBSSxFQUFFLENBQUM7RUFDZixRQUFRLElBQUksR0FBRyxFQUFFLE9BQU8sQ0FBQztFQUN6QixRQUFRLElBQUksT0FBTyxHQUFHQSxhQUFlLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7RUFDeEQsWUFBWSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7RUFDdEMsUUFBUSxRQUFRLElBQUksQ0FBQyxPQUFPO0VBQzVCLFlBQVksS0FBSyxZQUFZO0VBQzdCLGdCQUFnQixJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxNQUFNLENBQUM7RUFDekcsdUJBQXVCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxPQUFPO0VBQ2xFLHVCQUF1QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7RUFDcEUsdUJBQXVCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssZ0JBQWdCO0VBQ3BGLHVCQUF1QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFO0VBQ3BFLG9CQUFvQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7RUFDckgsb0JBQW9CLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0VBQ3ZDLGlCQUFpQjtFQUNqQjtFQUNBLGdCQUFnQixNQUFNO0VBQ3RCLFlBQVksS0FBSyxNQUFNO0VBQ3ZCLGdCQUFnQixPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7RUFDOUUsWUFBWSxLQUFLLE1BQU07RUFDdkIsZ0JBQWdCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFO0VBQ2xELG9CQUFvQixJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxLQUFLLE9BQU8sR0FBR0EsYUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDekosd0JBQXdCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztFQUNsRCxvQkFBb0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0VBQ3RDLHdCQUF3QixJQUFJLEVBQUUsT0FBTztFQUNyQyx3QkFBd0IsSUFBSSxFQUFFLFNBQVM7RUFDdkMsd0JBQXdCLE1BQU0sRUFBRSxFQUFFO0VBQ2xDLHdCQUF3QixLQUFLLEVBQUU7RUFDL0IsNEJBQTRCLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7RUFDckYsNEJBQTRCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0VBQy9DLDRCQUE0QixFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0VBQ3JGLHlCQUF5QjtFQUN6QixxQkFBcUIsQ0FBQyxDQUFDO0VBQ3ZCLGlCQUFpQjtFQUNqQixnQkFBZ0IsTUFBTTtFQUN0QjtFQUNBLFlBQVksS0FBSyxRQUFRLENBQUM7RUFDMUIsWUFBWSxLQUFLLFVBQVUsQ0FBQztFQUM1QixZQUFZLEtBQUssTUFBTSxDQUFDO0VBQ3hCLFlBQVksS0FBSyxZQUFZLENBQUM7RUFDOUIsWUFBWSxLQUFLLGNBQWMsQ0FBQztFQUNoQyxZQUFZLEtBQUssT0FBTyxDQUFDO0VBQ3pCLFlBQVksS0FBSyxVQUFVLENBQUM7RUFDNUIsWUFBWSxLQUFLLFdBQVcsQ0FBQztFQUM3QixZQUFZLEtBQUssa0JBQWtCLENBQUM7RUFDcEMsWUFBWSxLQUFLLE1BQU0sQ0FBQztFQUN4QixZQUFZLEtBQUssSUFBSSxDQUFDO0VBQ3RCLFlBQVksS0FBSyxjQUFjO0VBQy9CLGdCQUFnQixPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztFQUNuQyxZQUFZLEtBQUssZUFBZTtFQUNoQyxnQkFBZ0IsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUU7RUFDdkQsb0JBQW9CLElBQUksT0FBTyxHQUFHQSxhQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUNwRix3QkFBd0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0VBQ2xELG9CQUFvQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUM3RSxpQkFBaUI7RUFDakIsZ0JBQWdCLE1BQU07RUFDdEIsWUFBWSxLQUFLLE1BQU07RUFDdkIsZ0JBQWdCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO0VBQy9DLG9CQUFvQixPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztFQUN2QyxnQkFBZ0IsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO0VBQ3RELG9CQUFvQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDM0MsZ0JBQWdCLE1BQU07RUFDdEIsWUFBWSxLQUFLLFdBQVc7RUFDNUIsZ0JBQWdCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQztFQUN0RCxvQkFBb0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0VBQzNDLGdCQUFnQixNQUFNO0VBQ3RCLFlBQVksS0FBSyxNQUFNO0VBQ3ZCLGdCQUFnQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7RUFDdEQsb0JBQW9CLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUMzQyxnQkFBZ0IsTUFBTTtFQUN0QixZQUFZLEtBQUssaUJBQWlCLENBQUM7RUFDbkMsWUFBWSxLQUFLLElBQUk7RUFDckIsZ0JBQWdCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHQSxhQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQ3pHLG9CQUFvQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7RUFDOUMsZ0JBQWdCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQztFQUN0RCxvQkFBb0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0VBQzNDLGdCQUFnQixNQUFNO0VBQ3RCLFlBQVksS0FBSyxlQUFlLENBQUM7RUFDakMsWUFBWSxLQUFLLElBQUk7RUFDckIsZ0JBQWdCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHQSxhQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQ3pHLG9CQUFvQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7RUFDOUMsZ0JBQWdCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQztFQUN0RCxvQkFBb0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0VBQzNDLGdCQUFnQixNQUFNO0VBQ3RCLFlBQVksS0FBSyxRQUFRO0VBQ3pCLGdCQUFnQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7RUFDdEQsb0JBQW9CLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUMzQyxnQkFBZ0IsTUFBTTtFQUN0QixZQUFZLEtBQUssU0FBUyxDQUFDO0VBQzNCLFlBQVksS0FBSyxZQUFZO0VBQzdCLGdCQUFnQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7RUFDdEQsb0JBQW9CLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUMzQyxnQkFBZ0IsTUFBTTtFQUN0QixZQUFZLEtBQUssUUFBUSxDQUFDO0VBQzFCLFlBQVksS0FBSyxXQUFXO0VBQzVCLGdCQUFnQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7RUFDdEQsb0JBQW9CLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUMzQyxnQkFBZ0IsTUFBTTtFQUN0QixZQUFZLEtBQUssU0FBUyxDQUFDO0VBQzNCLFlBQVksS0FBSyxZQUFZLENBQUM7RUFDOUIsWUFBWSxLQUFLLGVBQWUsQ0FBQztFQUNqQyxZQUFZLEtBQUssa0JBQWtCO0VBQ25DLGdCQUFnQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7RUFDdEQsb0JBQW9CLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUMzQyxnQkFBZ0IsTUFBTTtFQUN0QixZQUFZLEtBQUssYUFBYSxDQUFDO0VBQy9CLFlBQVksS0FBSyxXQUFXLENBQUM7RUFDN0IsWUFBWSxLQUFLLFFBQVEsQ0FBQztFQUMxQixZQUFZLEtBQUssTUFBTTtFQUN2QixnQkFBZ0IsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO0VBQ3RELG9CQUFvQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDM0MsZ0JBQWdCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztFQUNyRCxvQkFBb0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztFQUM3RyxnQkFBZ0IsTUFBTTtFQUN0QixZQUFZLEtBQUssUUFBUTtFQUN6QixnQkFBZ0IsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7RUFDL0Msb0JBQW9CLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0VBQ3ZDLGdCQUFnQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7RUFDdEQsb0JBQW9CLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUMzQyxnQkFBZ0IsTUFBTTtFQUN0QixZQUFZLEtBQUssUUFBUSxDQUFDO0VBQzFCLFlBQVksS0FBSyxRQUFRLENBQUM7RUFDMUIsWUFBWSxLQUFLLFFBQVEsQ0FBQztFQUMxQixZQUFZLEtBQUssT0FBTyxDQUFDO0VBQ3pCLFlBQVksS0FBSyxNQUFNO0VBQ3ZCLGdCQUFnQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsRUFBRTtFQUN2RCxvQkFBb0IsT0FBTyxHQUFHQSxhQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQ2pGLG9CQUFvQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxPQUFPLEtBQUssUUFBUSxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0VBQ3pGLGlCQUFpQjtFQUNqQixxQkFBcUIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtFQUMxRCxvQkFBb0IsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7RUFDdkMsaUJBQWlCO0VBQ2pCLHFCQUFxQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsRUFBRTtFQUM3RCxvQkFBb0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0VBQzNDLGlCQUFpQjtFQUNqQixnQkFBZ0IsTUFBTTtFQUN0QjtFQUNBLFlBQVksS0FBSyxNQUFNO0VBQ3ZCLGdCQUFnQixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7RUFDaEQsb0JBQW9CLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUM5QyxnQkFBZ0IsTUFBTTtFQUN0QixZQUFZLEtBQUssS0FBSztFQUN0QixnQkFBZ0IsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO0VBQ3JELG9CQUFvQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDMUMsZ0JBQWdCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQztFQUN0RCxvQkFBb0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0VBQzNDLGdCQUFnQixNQUFNO0VBQ3RCLFlBQVksS0FBSyxJQUFJLENBQUM7RUFDdEIsWUFBWSxLQUFLLElBQUksQ0FBQztFQUN0QixZQUFZLEtBQUssSUFBSSxDQUFDO0VBQ3RCLFlBQVksS0FBSyxTQUFTLENBQUM7RUFDM0IsWUFBWSxLQUFLLElBQUksQ0FBQztFQUN0QixZQUFZLEtBQUssVUFBVSxDQUFDO0VBQzVCLFlBQVksS0FBSyxJQUFJLENBQUM7RUFDdEIsWUFBWSxLQUFLLFNBQVMsQ0FBQztFQUMzQixZQUFZLEtBQUssSUFBSSxDQUFDO0VBQ3RCLFlBQVksS0FBSyxJQUFJLENBQUM7RUFDdEIsWUFBWSxLQUFLLElBQUksQ0FBQztFQUN0QixZQUFZLEtBQUssTUFBTTtFQUN2QjtFQUNBLGdCQUFnQixPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztFQUNuQztFQUNBLFlBQVksS0FBSyxNQUFNLENBQUM7RUFDeEIsWUFBWSxLQUFLLE9BQU87RUFDeEIsZ0JBQWdCLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0VBQ25DLFlBQVksS0FBSyxLQUFLO0VBQ3RCLGdCQUFnQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7RUFDekMsWUFBWSxLQUFLLEtBQUs7RUFDdEIsZ0JBQWdCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO0VBQy9DLG9CQUFvQixPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztFQUN2QyxnQkFBZ0IsTUFBTTtFQUN0QixZQUFZLEtBQUssT0FBTztFQUN4QixnQkFBZ0IsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUU7RUFDM0Qsb0JBQW9CLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDO0VBQzVDLHdCQUF3QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxDQUFDO0VBQzdELGlCQUFpQjtFQUNqQixnQkFBZ0IsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7RUFDL0Msb0JBQW9CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztFQUMvQyxnQkFBZ0IsTUFBTTtFQUN0QixZQUFZO0VBQ1osZ0JBQWdCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtFQUN0RixvQkFBb0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0VBQ3RDLHdCQUF3QixJQUFJLEVBQUUsT0FBTztFQUNyQyx3QkFBd0IsTUFBTSxFQUFFLEVBQUU7RUFDbEMsd0JBQXdCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztFQUN6RixxQkFBcUIsQ0FBQyxDQUFDO0VBQ3ZCLGlCQUFpQjtFQUNqQixnQkFBZ0IsSUFBSUEsYUFBZSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO0VBQ3hFLG9CQUFvQixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7RUFDbEYsb0JBQW9CLElBQUksS0FBSyxDQUFDO0VBQzlCLG9CQUFvQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTtFQUM1RztFQUNBLHdCQUF3QixLQUFLLEdBQUc7RUFDaEMsNEJBQTRCLElBQUksRUFBRSxPQUFPO0VBQ3pDLDRCQUE0QixNQUFNLEVBQUUsRUFBRTtFQUN0Qyw0QkFBNEIsS0FBSyxFQUFFLENBQUM7RUFDcEMsb0NBQW9DLElBQUksRUFBRSxrQkFBa0I7RUFDNUQsb0NBQW9DLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTztFQUN0RCxvQ0FBb0MsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUs7RUFDL0Usb0NBQW9DLE9BQU8sRUFBRSxLQUFLO0VBQ2xELG9DQUFvQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRztFQUN2RSxvQ0FBb0MsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU07RUFDN0UsaUNBQWlDLENBQUM7RUFDbEMseUJBQXlCLENBQUM7RUFDMUIsd0JBQXdCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztFQUNqRCxxQkFBcUI7RUFDckIseUJBQXlCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0VBQ3hGLHdCQUF3QixJQUFJLEtBQUssR0FBRyxLQUFLLENBQUM7RUFDMUMsd0JBQXdCLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxLQUFLO0VBQzNFLDRCQUE0QixJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO0VBQ2pFLGdDQUFnQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0VBQzdDLGdDQUFnQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztFQUN4SCxnQ0FBZ0MsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0VBQ3pILDZCQUE2QjtFQUM3QixpQ0FBaUM7RUFDakMsZ0NBQWdDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7RUFDbEQsNkJBQTZCO0VBQzdCLDRCQUE0QixPQUFPLEtBQUssQ0FBQztFQUN6Qyx5QkFBeUIsRUFBRSxFQUFFLENBQUMsQ0FBQztFQUMvQix3QkFBd0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0VBQzFDLDRCQUE0QixJQUFJLEVBQUUsT0FBTztFQUN6Qyw0QkFBNEIsTUFBTSxFQUFFLEVBQUU7RUFDdEMsNEJBQTRCLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVE7RUFDMUQseUJBQXlCLENBQUMsQ0FBQztFQUMzQixxQkFBcUI7RUFDckIseUJBQXlCO0VBQ3pCO0VBQ0Esd0JBQXdCLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxVQUFVO0VBQ3ZELDRCQUE0QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDbEQsd0JBQXdCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztFQUMxQyw0QkFBNEIsSUFBSSxFQUFFLE9BQU87RUFDekMsNEJBQTRCLE1BQU0sRUFBRSxFQUFFO0VBQ3RDLDRCQUE0QixLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBR0EsYUFBZSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7RUFDeEkseUJBQXlCLENBQUMsQ0FBQztFQUMzQixxQkFBcUI7RUFDckIsaUJBQWlCO0VBQ2pCLGdCQUFnQixJQUFJLE9BQU8sR0FBR0EsYUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUlBLGFBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7RUFDN0csb0JBQW9CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztFQUM5QyxnQkFBZ0IsSUFBSSxDQUFDLE9BQU8sR0FBR0EsYUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJQSxhQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7RUFDekosb0JBQW9CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztFQUM5QyxnQkFBZ0IsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUdBLGFBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDekgsb0JBQW9CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztFQUM5QyxnQkFBZ0IsTUFBTTtFQUN0QixTQUFTO0VBQ1QsUUFBUSxJQUFJLElBQUksQ0FBQyxXQUFXO0VBQzVCLFlBQVksT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztFQUMxQyxRQUFRLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLFFBQVEsQ0FBQyxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztFQUMvSCxLQUFLO0VBQ0wsSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFO0VBQ3ZCO0VBQ0EsUUFBUSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7RUFDbkIsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtFQUN4QixZQUFZLE9BQU8sS0FBSyxDQUFDO0VBQ3pCLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQztFQUNqRCxZQUFZLE9BQU8sSUFBSSxDQUFDO0VBQ3hCLFFBQVEsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0VBQy9DLFFBQVEsSUFBSSxJQUFJLEtBQUssR0FBRztFQUN4QixZQUFZLE9BQU8sSUFBSSxDQUFDO0VBQ3hCLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUM7RUFDN0IsWUFBWSxPQUFPLEtBQUssQ0FBQztFQUN6QixRQUFRLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFO0VBQzlELFlBQVksT0FBTyxLQUFLLENBQUM7RUFDekI7RUFDQTtFQUNBLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLE1BQU0sSUFBSSxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFLEtBQUssS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sTUFBTSxDQUFDO0VBQy9LLFlBQVksT0FBTyxLQUFLLENBQUM7RUFDekIsUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQztFQUM1QyxZQUFZLE9BQU8sSUFBSSxDQUFDO0VBQ3hCLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7RUFDOUQsWUFBWSxPQUFPLEtBQUssQ0FBQztFQUN6QixRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO0VBQzdDLFlBQVksT0FBTyxJQUFJLENBQUM7RUFDeEIsUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztFQUM3QyxZQUFZLE9BQU8sSUFBSSxDQUFDO0VBQ3hCLFFBQVEsT0FBTyxLQUFLLENBQUM7RUFDckIsS0FBSztFQUNMLElBQUksT0FBTyxDQUFDLElBQUksRUFBRTtFQUNsQixRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7RUFDL0IsWUFBWSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztFQUMxRCxRQUFRLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUs7RUFDMUMsWUFBWSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7RUFDMUMsUUFBUSxRQUFRLElBQUksQ0FBQyxJQUFJO0VBQ3pCLFlBQVksS0FBSyxRQUFRO0VBQ3pCLGdCQUFnQixJQUFJLElBQUksQ0FBQyxLQUFLO0VBQzlCLG9CQUFvQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDO0VBQ2xELGdCQUFnQixNQUFNO0VBQ3RCLFlBQVksS0FBSyxlQUFlLENBQUM7RUFDakMsWUFBWSxLQUFLLGFBQWE7RUFDOUIsZ0JBQWdCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztFQUMvQyxnQkFBZ0IsTUFBTTtFQUN0QixZQUFZLEtBQUssT0FBTztFQUN4QixnQkFBZ0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztFQUN6QyxnQkFBZ0IsTUFBTTtFQUN0QixZQUFZLEtBQUssUUFBUTtFQUN6QixnQkFBZ0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztFQUMxQyxnQkFBZ0IsTUFBTTtFQUN0QixZQUFZLEtBQUssTUFBTTtFQUN2QixnQkFBZ0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztFQUN4QyxnQkFBZ0IsTUFBTTtFQUN0QixZQUFZLEtBQUssT0FBTyxDQUFDO0VBQ3pCLFlBQVksS0FBSyxZQUFZLENBQUM7RUFDOUIsWUFBWSxLQUFLLGFBQWE7RUFDOUIsZ0JBQWdCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztFQUN6RSxnQkFBZ0IsTUFBTSxRQUFRLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO0VBQ3hGLGdCQUFnQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0VBQ3pDLGdCQUFnQixJQUFJLFFBQVEsS0FBSyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0VBQ3pFLG9CQUFvQixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztFQUNqRSxnQkFBZ0IsTUFBTTtFQUN0QixZQUFZLEtBQUssYUFBYTtFQUM5QixnQkFBZ0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO0VBQy9DLGdCQUFnQixNQUFNO0VBQ3RCLFlBQVksS0FBSyxvQkFBb0I7RUFDckMsZ0JBQWdCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7RUFDN0YsZ0JBQWdCLE1BQU07RUFDdEIsWUFBWSxLQUFLLGFBQWEsQ0FBQztFQUMvQixZQUFZLEtBQUssWUFBWSxDQUFDO0VBQzlCLFlBQVksS0FBSyxtQkFBbUI7RUFDcEMsZ0JBQWdCLE1BQU07RUFDdEIsWUFBWTtFQUNaLGdCQUFnQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxXQUFXLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztFQUN6SCxTQUFTO0VBQ1QsS0FBSztFQUNMLElBQUksU0FBUyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsT0FBTyxHQUFHLEtBQUssRUFBRTtFQUN2QyxRQUFRLE1BQU0sS0FBSyxHQUFHLE9BQU8sR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDcEUsUUFBUSxPQUFPLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDakYsS0FBSztFQUNMLElBQUksU0FBUyxDQUFDLElBQUksRUFBRTtFQUNwQixRQUFRLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQztFQUMxQixRQUFRLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0VBQy9DLFFBQVEsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsRUFBRTtFQUMxRSxZQUFZLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO0VBQ3RDLGdCQUFnQixNQUFNLEdBQUcsTUFBTSxJQUFJLEVBQUUsQ0FBQztFQUN0QyxnQkFBZ0IsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztFQUNoSCxnQkFBZ0IsSUFBSSxDQUFDLEtBQUssRUFBRTtFQUM1QixvQkFBb0IsTUFBTSxHQUFHLElBQUksQ0FBQztFQUNsQyxvQkFBb0IsTUFBTTtFQUMxQixpQkFBaUI7RUFDakIsZ0JBQWdCLFFBQVEsSUFBSSxDQUFDLFdBQVcsRUFBRTtFQUMxQyxvQkFBb0IsS0FBSyxRQUFRO0VBQ2pDLHdCQUF3QixNQUFNLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztFQUNoRCx3QkFBd0IsTUFBTTtFQUM5QixvQkFBb0IsS0FBSyxTQUFTO0VBQ2xDLHdCQUF3QixNQUFNLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztFQUMvQyx3QkFBd0IsTUFBTTtFQUM5QixvQkFBb0IsS0FBSyxPQUFPO0VBQ2hDLHdCQUF3QixNQUFNLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztFQUNqRCx3QkFBd0IsTUFBTTtFQUM5QixvQkFBb0IsS0FBSyxRQUFRO0VBQ2pDLHdCQUF3QixNQUFNLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztFQUM5Qyx3QkFBd0IsTUFBTTtFQUM5QixvQkFBb0IsS0FBSyxRQUFRO0VBQ2pDLHdCQUF3QixNQUFNLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztFQUM5Qyx3QkFBd0IsTUFBTTtFQUM5QixvQkFBb0IsS0FBSyxXQUFXO0VBQ3BDLHdCQUF3QixNQUFNLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxNQUFNLENBQUM7RUFDMUUsd0JBQXdCLE1BQU07RUFDOUIsb0JBQW9CLEtBQUssYUFBYTtFQUN0Qyx3QkFBd0IsTUFBTSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssTUFBTSxDQUFDO0VBQzFFLHdCQUF3QixNQUFNO0VBQzlCLG9CQUFvQjtFQUNwQix3QkFBd0IsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztFQUMzRCx3QkFBd0IsTUFBTTtFQUM5QixpQkFBaUI7RUFDakIsYUFBYTtFQUNiLFNBQVM7RUFDVCxRQUFRLE1BQU0sTUFBTSxHQUFHLGlJQUFpSSxDQUFDO0VBQ3pKLFFBQVEsSUFBSSxDQUFDLENBQUM7RUFDZCxRQUFRLFFBQVEsTUFBTSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTTtFQUN6QyxZQUFZLEtBQUssQ0FBQztFQUNsQjtFQUNBLGdCQUFnQixNQUFNO0VBQ3RCLFlBQVksS0FBSyxDQUFDO0VBQ2xCO0VBQ0EsZ0JBQWdCLElBQUksTUFBTSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0VBQzFELG9CQUFvQixNQUFNLEdBQUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7RUFDbkQsaUJBQWlCO0VBQ2pCLHFCQUFxQixJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRTtFQUNuRixvQkFBb0IsTUFBTSxHQUFHO0VBQzdCLHdCQUF3QixTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUN2Qyx3QkFBd0IsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDcEMsd0JBQXdCLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQ3RDLHFCQUFxQixDQUFDO0VBQ3RCLGlCQUFpQjtFQUNqQixxQkFBcUI7RUFDckI7RUFDQSxvQkFBb0IsTUFBTSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0VBQy9GLG9CQUFvQixJQUFJLFFBQVEsRUFBRTtFQUNsQyx3QkFBd0IsTUFBTSxHQUFHLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxDQUFDO0VBQ3pELHFCQUFxQjtFQUNyQix5QkFBeUI7RUFDekIsd0JBQXdCLE1BQU0sR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsQ0FBQztFQUN6RCxxQkFBcUI7RUFDckIsaUJBQWlCO0VBQ2pCLGdCQUFnQixNQUFNO0VBQ3RCLFlBQVksS0FBSyxDQUFDO0VBQ2xCLGdCQUFnQixNQUFNLEdBQUc7RUFDekIsb0JBQW9CLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0VBQ3RDLG9CQUFvQixTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztFQUN2QyxpQkFBaUIsQ0FBQztFQUNsQixnQkFBZ0IsTUFBTTtFQUN0QixZQUFZO0VBQ1osZ0JBQWdCLE1BQU0sR0FBRztFQUN6QixvQkFBb0IsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7RUFDdEMsb0JBQW9CLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0VBQ3BDLG9CQUFvQixTQUFTLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztFQUNoRSxpQkFBaUIsQ0FBQztFQUNsQixTQUFTO0VBQ1QsUUFBUSxLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtFQUNyRCxZQUFZLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUTtFQUNyQyxnQkFBZ0IsU0FBUztFQUN6QixZQUFZLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0VBQy9DLFNBQVM7RUFDVCxRQUFRLE9BQU8sTUFBTSxDQUFDO0VBQ3RCLEtBQUs7RUFDTCxJQUFJLGFBQWEsQ0FBQyxJQUFJLEVBQUU7RUFDeEIsUUFBUSxJQUFJLEVBQUUsQ0FBQztFQUNmLFFBQVEsSUFBSSxDQUFDLEtBQUssR0FBRztFQUNyQixZQUFZLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRTtFQUN4QixZQUFZLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtFQUMzQixZQUFZLE1BQU0sRUFBRSxFQUFFO0VBQ3RCLFlBQVksUUFBUSxFQUFFLEVBQUU7RUFDeEIsU0FBUyxDQUFDO0VBQ1YsUUFBUSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7RUFDdEM7RUFDQSxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztFQUM1RCxRQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSztFQUNuQyxZQUFZLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0VBQzdDLFlBQVksTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7RUFDN0MsWUFBWSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0VBQ3RDLGdCQUFnQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztFQUNwRCxZQUFZLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztFQUN6QixnQkFBZ0IsT0FBTyxDQUFDLENBQUM7RUFDekIsWUFBWSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7RUFDekIsZ0JBQWdCLE9BQU8sQ0FBQyxDQUFDLENBQUM7RUFDMUIsWUFBWSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUM7RUFDM0IsU0FBUyxDQUFDLENBQUM7RUFDWCxRQUFRLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7RUFDOUQsUUFBUSxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7RUFDekMsWUFBWSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssT0FBTztFQUN0QyxnQkFBZ0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksV0FBVyxDQUFDLENBQUMsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7RUFDekcsWUFBWSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztFQUMzQztFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxZQUFZLElBQUksQ0FBQyxLQUFLLEdBQUc7RUFDekIsZ0JBQWdCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtFQUNoQyxnQkFBZ0IsSUFBSSxFQUFFLEVBQUU7RUFDeEIsZ0JBQWdCLEtBQUssRUFBRSxDQUFDO0VBQ3hCLGdCQUFnQixLQUFLLEVBQUU7RUFDdkIsb0JBQW9CLEtBQUssRUFBRSxDQUFDO0VBQzVCLG9CQUFvQixLQUFLLEVBQUUsQ0FBQztFQUM1QixvQkFBb0IsS0FBSyxFQUFFLENBQUM7RUFDNUIsaUJBQWlCO0VBQ2pCLGdCQUFnQixjQUFjLEVBQUUsQ0FBQyxZQUFZLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJO0VBQy9GLGdCQUFnQixJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7RUFDbEUsYUFBYSxDQUFDO0VBQ2QsWUFBWSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0VBQzFGO0VBQ0EsWUFBWSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtFQUMvQyxnQkFBZ0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztFQUMzRSxnQkFBZ0IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7RUFDbEMsZ0JBQWdCLFNBQVM7RUFDekIsYUFBYTtFQUNiLFlBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7RUFDdEMsWUFBWSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztFQUNyRCxZQUFZLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQztFQUM5RSxZQUFZLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsQ0FBQztFQUNyRixZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUk7RUFDaEMsZ0JBQWdCLFNBQVM7RUFDekI7RUFDQSxZQUFZLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJO0VBQ25DLGdCQUFnQixLQUFLLFFBQVEsQ0FBQztFQUM5QixnQkFBZ0IsS0FBSyxhQUFhO0VBQ2xDLG9CQUFvQixZQUFZLEdBQUcsWUFBWSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0VBQ3JILG9CQUFvQixNQUFNO0VBQzFCLGdCQUFnQixLQUFLLFVBQVU7RUFDL0Isb0JBQW9CLFlBQVksR0FBRyxZQUFZLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDcEssb0JBQW9CLE1BQU07RUFDMUIsYUFBYTtFQUNiO0VBQ0EsWUFBWSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFO0VBQy9ELGdCQUFnQixLQUFLLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7RUFDdEUsb0JBQW9CLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7RUFDdkMsb0JBQW9CLElBQUksSUFBSTtFQUM1Qix3QkFBd0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7RUFDdEUsaUJBQWlCO0VBQ2pCLGFBQWE7RUFDYixpQkFBaUIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7RUFDdkQsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztFQUN6RCxvQkFBb0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7RUFDOUQ7RUFDQSxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO0VBQzlFLG9CQUFvQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDekssaUJBQWlCO0VBQ2pCLGdCQUFnQixLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUU7RUFDekUsb0JBQW9CLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztFQUNuRixvQkFBb0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0VBQ3ZGLGlCQUFpQjtFQUNqQixhQUFhO0VBQ2IsaUJBQWlCLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO0VBQzNELGdCQUFnQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7RUFDaE0sYUFBYTtFQUNiLGlCQUFpQjtFQUNqQixnQkFBZ0IsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRTtFQUMvQyxvQkFBb0IsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLHlCQUF5QixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO0VBQ2xOLHdCQUF3QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztFQUNsRCxxQkFBcUI7RUFDckIseUJBQXlCO0VBQ3pCLHdCQUF3QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7RUFDaEksd0JBQXdCLElBQUksS0FBSyxDQUFDO0VBQ2xDLHdCQUF3QixZQUFZLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7RUFDakUsd0JBQXdCLFFBQVEsS0FBSyxHQUFHLFlBQVksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHO0VBQy9FO0VBQ0EsNEJBQTRCLElBQUksS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQztFQUM3RyxnQ0FBZ0MsU0FBUztFQUN6Qyw0QkFBNEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0VBQ3RGLHlCQUF5QjtFQUN6Qix3QkFBd0IsWUFBWSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0VBQzFELHdCQUF3QixRQUFRLEtBQUssR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHO0VBQ3BGLDRCQUE0QixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7RUFDdEYseUJBQXlCO0VBQ3pCLHFCQUFxQjtFQUNyQixpQkFBaUI7RUFDakIsZ0JBQWdCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0VBQ3RILGFBQWE7RUFDYixTQUFTO0VBQ1QsUUFBUSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztFQUMxQixLQUFLO0VBQ0wsSUFBSSxxQkFBcUIsQ0FBQyxJQUFJLEVBQUU7RUFDaEMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjO0VBQ3RDLFlBQVksT0FBTyxJQUFJLENBQUM7RUFDeEI7RUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7RUFDaEQsUUFBUSxJQUFJLElBQUksRUFBRTtFQUNsQixZQUFZLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0VBQzlELFNBQVM7RUFDVCxhQUFhO0VBQ2IsWUFBWSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztFQUNoQyxTQUFTO0VBQ1QsUUFBUSxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLHdDQUF3QyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztFQUN2SCxRQUFRLEtBQUssTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRTtFQUNoRSxZQUFZLGFBQWEsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0VBQzFILFNBQVM7RUFDVCxRQUFRLElBQUksSUFBSSxLQUFLLGFBQWE7RUFDbEMsWUFBWSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7RUFDNUMsUUFBUSxPQUFPLGFBQWEsQ0FBQztFQUM3QixLQUFLO0VBQ0wsSUFBSSxjQUFjLENBQUMsSUFBSSxFQUFFO0VBQ3pCLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0VBQzNDLEtBQUs7RUFDTCxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUU7RUFDdkIsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFO0VBQ3RDLFlBQVksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztFQUNqRCxZQUFZLE9BQU87RUFDbkIsU0FBUztFQUNUO0VBQ0EsUUFBUSxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO0VBQ25ELFlBQVksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRTtFQUNuRCxnQkFBZ0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7RUFDekMsYUFBYTtFQUNiLGlCQUFpQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFO0VBQ3ZELGdCQUFnQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztFQUN6QyxhQUFhO0VBQ2IsaUJBQWlCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUU7RUFDeEQsZ0JBQWdCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0VBQ3pDLGFBQWE7RUFDYixTQUFTO0VBQ1QsUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7RUFDeEUsWUFBWSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0VBQzdJLFlBQVksT0FBTztFQUNuQixTQUFTO0VBQ1QsUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsRUFBRTtFQUNyRixZQUFZLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7RUFDL0UsWUFBWSxPQUFPO0VBQ25CLFNBQVM7RUFDVCxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUU7RUFDN0IsWUFBWSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0VBQzdHLFNBQVM7RUFDVCxhQUFhLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUU7RUFDNUMsWUFBWSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztFQUNwRCxZQUFZLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO0VBQ3RDLGdCQUFnQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7RUFDckQsZ0JBQWdCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQztFQUN4QyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztFQUMzQyxvQkFBb0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7RUFDakUsYUFBYTtFQUNiLFNBQVM7RUFDVCxhQUFhO0VBQ2IsWUFBWSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDO0VBQzFDLFNBQVM7RUFDVCxLQUFLO0VBQ0wsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLEVBQUU7RUFDOUIsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUM1RSxRQUFRLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztFQUNsRyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0VBQzlFLEtBQUs7RUFDTCxJQUFJLGFBQWEsQ0FBQyxJQUFJLEVBQUU7RUFDeEIsUUFBUSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7RUFDN0MsUUFBUSxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7RUFDeEIsUUFBUSxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7RUFDekIsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxPQUFPO0VBQ3RGLFlBQVksT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0VBQzdCLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7RUFDekUsWUFBWSxNQUFNLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQztFQUNyQyxZQUFZLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztFQUMvQyxZQUFZLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztFQUM3QixTQUFTO0VBQ1QsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO0VBQ3JDLFlBQVksTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7RUFDM0QsWUFBWSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUM7RUFDdEUsU0FBUztFQUNULFFBQVEsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtFQUNuQyxZQUFZLEtBQUssTUFBTSxNQUFNLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7RUFDM0QsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7RUFDaEQsb0JBQW9CLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLFdBQVcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0VBQzdGLGdCQUFnQixNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDO0VBQzNELGdCQUFnQixPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQztFQUN0RSxhQUFhO0VBQ2IsU0FBUztFQUNULFFBQVEsTUFBTSxHQUFHLEdBQUc7RUFDcEIsWUFBWSxhQUFhLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTTtFQUNqRCxZQUFZLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU07RUFDOUQsU0FBUyxDQUFDO0VBQ1YsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxNQUFNLENBQUM7RUFDbEMsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0VBQzNCLFFBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7RUFDakMsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0VBQzNCLFFBQVEsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztFQUNoRSxRQUFRLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0VBQzVELFFBQVEsTUFBTSxlQUFlLEdBQUcsVUFBVSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEtBQUssUUFBUSxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQztFQUMxSTtFQUNBLGlCQUFpQixJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsS0FBSyxXQUFXLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDbkksUUFBUSxJQUFJLENBQUMsS0FBSyxFQUFFO0VBQ3BCLFlBQVksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7RUFDOUUsU0FBUztFQUNULGFBQWEsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsSUFBSSxNQUFNLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtFQUNuSDtFQUNBLFlBQVksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLEdBQUcsS0FBSyxDQUFDO0VBQ3RGLFlBQVksSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztFQUNuSCxTQUFTO0VBQ1QsYUFBYTtFQUNiLFlBQVksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDO0VBQ3ZDLFNBQVM7RUFDVCxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyw2QkFBNkIsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxLQUFLO0VBQ3JHLFlBQVksTUFBTSxHQUFHLEdBQUcsSUFBSSxLQUFLLEtBQUssR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO0VBQ25ELFlBQVksSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0VBQzVCLFlBQVksS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7RUFDdEMsZ0JBQWdCLE1BQU0sT0FBTyxHQUFHQSxhQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUlBLGFBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDbkgsZ0JBQWdCLE1BQU0sSUFBSSxPQUFPLEdBQUcsT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDM0UsYUFBYTtFQUNiLFlBQVksTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7RUFDaEYsWUFBWSxPQUFPLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0VBQ3pELFNBQVMsQ0FBQyxDQUFDO0VBQ1gsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjO0VBQ2xELFlBQVksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7RUFDekQsS0FBSztFQUNMLENBQUM7RUFDRDtFQUNBO0VBQ0E7RUFDQSxTQUFTLEtBQUssQ0FBQyxLQUFLLEVBQUUsT0FBTyxHQUFHLEVBQUUsRUFBRTtFQUNwQyxJQUFJLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0VBQ3ZDLElBQUksT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0VBQy9CLENBQUM7RUFDRCxhQUFhLEdBQUcsS0FBSyxDQUFDO0VBQ3RCLFNBQVMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLEdBQUcsRUFBRSxFQUFFLEtBQUssR0FBRyxJQUFJLEVBQUU7RUFDaEQsSUFBSSxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztFQUN2QyxJQUFJLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7RUFDcEMsQ0FBQztFQUNELFdBQVcsR0FBRyxHQUFHLENBQUM7RUFDbEIsSUFBSSxTQUFTLEdBQUdGLE9BQW9CLENBQUM7RUFDckMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLE9BQU8sU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzNFO0VBQ25DLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxPQUFPRyxNQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7Ozs7RUNqekM1RztNQUNFLGlCQUFtQixPQUFxQztVQUFyQyxZQUFPLEdBQVAsT0FBTyxDQUE4QjtPQUFJO01BRTVELHNCQUFJLHlCQUFJO2VBQVI7Y0FDRSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQztXQUN6Qzs7O1NBQUE7Ozs7O01BTUQsZ0RBQThCLEdBQTlCLFVBQStCLE9BQWU7O1VBQzVDLElBQU0sS0FBSyxHQUFVLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7VUFDM0MsSUFBTSxTQUFTLEdBQUc7Y0FDaEIsT0FBTyxFQUFFLE9BQU87Y0FFaEIsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO2NBQ3hCLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtjQUNoQyxjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWM7Y0FDcEMsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHO2NBQ2QsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO2NBQ3BCLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtjQUM1QixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7Y0FDNUIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO2NBQ2hCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtjQUNoQixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7Y0FDMUIsY0FBYyxFQUFFLEtBQUssQ0FBQyxjQUFjO2NBQ3BDLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztjQUNsQixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7Y0FDNUIsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHO2NBQ2QsSUFBSSxRQUFFLEtBQUssQ0FBQyxJQUFJLDBDQUFFLFFBQVEsRUFBRTtjQUM1QixlQUFlLEVBQUUsS0FBSyxDQUFDLGVBQWU7V0FDdkMsQ0FBQztVQUVGLGtCQUFTLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUssU0FBUyxFQUFHO09BQ2hEO01BQ0gsY0FBQztFQUFELENBQUMsSUFBQTtFQUVEOzs7Ozs7V0FNZ0IsV0FBVyxDQUN6QixXQUFtQixFQUNuQixZQUEwQjtNQUUxQixJQUFJLFlBQXlCLENBQUM7TUFFOUIsSUFBSSxZQUFZLElBQUksVUFBVSxFQUFFO1VBQzlCLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO09BQ3hDO1dBQU0sSUFBSSxZQUFZLElBQUksVUFBVSxFQUFFO1VBQ3JDLElBQU0sT0FBTyxHQUErQjtjQUMxQyxZQUFZLEVBQUUsVUFBQyxHQUFHO2tCQUNoQixPQUFPLENBQUMsSUFBSSxDQUNWLDBEQUEwRCxFQUMxRCxHQUFHLENBQ0osQ0FBQztlQUNIO1dBQ0YsQ0FBQztVQUVGLElBQU0sTUFBTSxHQUFHQyxrQkFBa0IsQ0FDL0IsV0FBVyxFQUNYLE9BQU8sQ0FDcUIsQ0FBQztVQUUvQixNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFDLEtBQUs7Y0FDMUIsT0FBTyxDQUFDLEtBQUssQ0FDWCxxREFBcUQ7bUJBQ25ELFlBQVUsS0FBSyxDQUFDLElBQUksaUJBQVksS0FBSyxDQUFDLE1BQU0sT0FBSSxDQUFBLEVBQ2xELEtBQUssQ0FBQyxPQUFPLENBQ2QsQ0FBQztXQUNILENBQUMsQ0FBQztVQUVILFlBQVksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO09BQy9CO01BRUQsT0FBTyxZQUFZLENBQUM7RUFDdEIsQ0FBQztFQU9EOzs7OztFQUtBO01BQUE7T0ErRkM7TUF6Q0Msc0JBQVcsdUJBQUk7ZUFBZjs7Y0FDRSxPQUFPLElBQUksQ0FBQyxLQUFLO29CQUNiLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDOzBCQUNwQixJQUFJLENBQUMsVUFBVSwwQ0FBRSxjQUFjLEVBQUUsQ0FBQztXQUN2Qzs7O1NBQUE7TUFJRCxzQkFBVyx1QkFBSTtlQUFmOztjQUNFLGFBQU8sSUFBSSxDQUFDLEtBQUssMENBQ2IsR0FBRyxDQUFDLFVBQUMsRUFBRSxJQUFLLE9BQUEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxZQUFZLENBQUMsR0FBQSxFQUN6RCxJQUFJLENBQUMsTUFBTSxFQUFFO1dBQ2pCOzs7U0FBQTtNQUtELHNCQUFXLGtDQUFlOzs7O2VBQTFCO2NBQ0UsT0FBTyw0QkFBMEIsSUFBSSxDQUFDLEVBQUksQ0FBQztXQUM1Qzs7O1NBQUE7TUFFRCxzQkFBTSxHQUFOO1VBQUEsaUJBbUJDO1VBbEJDLElBQU0sT0FBTyxHQUE0QixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQzs7VUFHakUsSUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztVQUMxQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztlQUNwRCxNQUFNLENBQUMsVUFBQyxFQUFjO2tCQUFYLFVBQVUsUUFBQTtjQUFNLE9BQUEsT0FBTyxVQUFVLENBQUMsR0FBRyxJQUFJLFVBQVU7V0FBQSxDQUFDO2VBQy9ELE9BQU8sQ0FBQyxVQUFDLEVBQWlCO2tCQUFoQixHQUFHLFFBQUEsRUFBRSxVQUFVLFFBQUE7Y0FDeEIsSUFBSSxVQUFVLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtrQkFDaEMsSUFBSTtzQkFDRixJQUFNLEdBQUcsR0FBSSxLQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDO3NCQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO21CQUNwQjtrQkFBQyxPQUFPLEtBQUssRUFBRTtzQkFDZCxPQUFPO21CQUNSO2VBQ0Y7V0FDRixDQUFDLENBQUM7VUFFTCxPQUFPLE9BQU8sQ0FBQztPQUNoQjtNQUNILFlBQUM7RUFBRCxDQUFDLElBQUE7RUF1QkQ7TUFBcUMsbUNBQUs7TUFDeEMseUJBQW9CLElBQWtCO1VBQXRDLFlBQ0UsaUJBQU8sU0FDUjtVQUZtQixVQUFJLEdBQUosSUFBSSxDQUFjO1VBSXRDLFlBQU0sR0FBVyxJQUFJLENBQUM7VUFDdEIsZ0JBQVUsR0FBVyxJQUFJLENBQUM7VUFDMUIsV0FBSyxHQUFhLElBQUksQ0FBQzs7T0FKdEI7TUFNRCxzQkFBSSwrQkFBRTtlQUFOO2NBQ0UsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztXQUNyQjs7O1NBQUE7TUFDRCxzQkFBSSxpQ0FBSTtlQUFSO2NBQ0UsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztXQUN2Qjs7O1NBQUE7TUFFRCxzQkFBSSxxQ0FBUTtlQUFaO2NBQ0UsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztXQUMzQjs7O1NBQUE7TUFDRCxzQkFBSSxtQ0FBTTtlQUFWO2NBQ0UsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztXQUN6Qjs7O1NBQUE7TUFFRCxzQkFBSSx5Q0FBWTtlQUFoQjtjQUNFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO29CQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBQyxDQUFDLElBQUssT0FBRyxDQUFDLENBQUMsS0FBSyxTQUFJLENBQUMsQ0FBQyxNQUFRLEdBQUEsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7b0JBQ2hFLElBQUksQ0FBQztXQUNWOzs7U0FBQTtNQUVELHNCQUFJLDJDQUFjO2VBQWxCO2NBQ0UsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7V0FDckM7OztTQUFBO01BRUQsc0JBQUksZ0NBQUc7ZUFBUDtjQUNFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7V0FDdEI7OztTQUFBO01BRUQsc0JBQUksdUNBQVU7ZUFBZDtjQUNFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztXQUNqQzs7O1NBQUE7TUFFRCxzQkFBSSx1Q0FBVTtlQUFkO2NBQ0UsSUFDRSxFQUNFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtrQkFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO2tCQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUM3QztrQkFFRCxPQUFPLElBQUksQ0FBQztjQUVSLElBQUEsS0FBcUIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQXJELElBQUksUUFBQSxFQUFFLEtBQUssUUFBQSxFQUFFLEdBQUcsUUFBcUMsQ0FBQztjQUM3RCxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7V0FDN0Q7OztTQUFBO01BRUQsc0JBQUksaUNBQUk7ZUFBUjtjQUNFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7V0FDdkI7OztTQUFBO01BRUQsc0JBQUksc0NBQVM7ZUFBYjtjQUNFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7V0FDNUI7OztTQUFBO01BRUQsc0JBQUksMkNBQWM7ZUFBbEI7Y0FDRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztXQUNyQzs7O1NBQUE7TUFFRCxzQkFBSSxrQ0FBSztlQUFUO2NBQ0UsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztXQUN4Qjs7O1NBQUE7TUFFRCxzQkFBSSx1Q0FBVTtlQUFkO2NBQ0UsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1dBQ2pDOzs7U0FBQTtNQUVELHNCQUFJLGdDQUFHO2VBQVA7Y0FDRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1dBQ3RCOzs7U0FBQTtNQUNILHNCQUFDO0VBQUQsQ0E5RUEsQ0FBcUMsS0FBSyxHQThFekM7RUFFRCxJQUFNLHlCQUF5QixHQUEyQjtNQUN4RCxRQUFRLEVBQUUsVUFBVTtNQUNwQixTQUFTLEVBQUUsaUJBQWlCO01BQzVCLElBQUksRUFBRSxRQUFRO01BQ2QsR0FBRyxFQUFFLEtBQUs7TUFDVixNQUFNLEVBQUUsUUFBUTtNQUNoQixVQUFVLEVBQUUsWUFBWTtNQUN4QixVQUFVLEVBQUUsT0FBTztNQUNuQixPQUFPLEVBQUUsaUJBQWlCO01BQzFCLFlBQVksRUFBRSxpQkFBaUI7TUFDL0IsUUFBUSxFQUFFLGdCQUFnQjtNQUMxQixLQUFLLEVBQUUsTUFBTTtNQUNiLFlBQVksRUFBRSxxQkFBcUI7TUFDbkMsS0FBSyxFQUFFLE9BQU87TUFDZCxVQUFVLEVBQUUsWUFBWTtNQUN4QixHQUFHLEVBQUUsS0FBSztNQUNWLEtBQUssRUFBRSxZQUFZO01BQ25CLElBQUksRUFBRSxPQUFPO01BQ2IsU0FBUyxFQUFFLFdBQVc7TUFDdEIsSUFBSSxFQUFFLE9BQU87R0FDZCxDQUFDO0VBRUY7RUFDQTtFQUNBLElBQU0sNEJBQTRCLEdBQWE7TUFDN0MsVUFBVTtNQUNWLFdBQVc7TUFDWCxpQkFBaUI7TUFDakIsTUFBTTtNQUNOLEtBQUs7TUFDTCxRQUFRO01BQ1IsWUFBWTtNQUNaLFlBQVk7TUFDWixjQUFjO01BQ2QsVUFBVTtNQUNWLE9BQU87TUFDUCxjQUFjO01BQ2QsT0FBTztNQUNQLFlBQVk7TUFDWixLQUFLO01BQ0wsT0FBTztNQUNQLE9BQU87TUFDUCxXQUFXO0dBQ1osQ0FBQztFQUVGO01BQTBDLHdDQUFLO01BbUI3Qyw4QkFBb0IsSUFBdUI7VUFBM0MsWUFDRSxpQkFBTyxTQWVSO1VBaEJtQixVQUFJLEdBQUosSUFBSSxDQUFtQjtVQUd6QyxNQUFNLENBQUMsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBQUMsT0FBTyxDQUMvQyxVQUFDLEdBQXFCO2NBQ2IsSUFBQSxHQUFHLEdBQVMsR0FBRyxHQUFaLEVBQUUsR0FBRyxHQUFJLEdBQUcsR0FBUCxDQUFRO2NBQ3ZCLElBQUksR0FBRyxJQUFJLEtBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO2tCQUMzQixJQUFJLEdBQUcsR0FBRyxLQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztrQkFDaEMsSUFBSSw0QkFBNEIsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7c0JBQzlDLEdBQUcsR0FBSSxHQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7bUJBQ3pCO2tCQUVBLEtBQW1CLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO2VBQ2pDO1dBQ0YsQ0FDRixDQUFDOztPQUNIO01BRUQsc0JBQUksb0NBQUU7ZUFBTjtjQUNFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7V0FDdEI7OztTQUFBO01BQ0Qsc0JBQUksc0NBQUk7ZUFBUjtjQUNFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7V0FDdkI7OztTQUFBO01BRUQsc0JBQUksdUNBQUs7ZUFBVDs7O2NBR0UsSUFBSSxHQUFHLEdBQWEsRUFBRSxDQUFDO2NBQ3ZCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFO2tCQUN6QixHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQUMsQ0FBQyxJQUFLLE9BQUEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBQSxDQUFDLENBQUMsQ0FBQztlQUN0RTtjQUNELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO2tCQUMxQixHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQUMsQ0FBQyxJQUFLLE9BQUEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBQSxDQUFDLENBQUMsQ0FBQztlQUN2RTtjQUVELE9BQU8sR0FBRyxDQUFDO1dBQ1o7OztTQUFBO01BRUQsc0JBQUksOENBQVk7ZUFBaEI7O2NBQ0UsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7a0JBQzdCLElBQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBQyxJQUFJO3NCQUMvQyxJQUFJLElBQUksQ0FBQyxPQUFPOzBCQUFFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztzQkFDdEMsSUFBTSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7O3NCQUV4RSxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBQyxDQUFDLElBQUssT0FBQSxDQUFDLEdBQUEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzttQkFDekMsQ0FBQyxDQUFDO2tCQUNILE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztlQUN6QjttQkFBTTtrQkFDTCxhQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sMENBQUUsSUFBSSxDQUFDLElBQUksRUFBRTtlQUM1QztXQUNGOzs7U0FBQTtNQUVELHNCQUFJLGdEQUFjO2VBQWxCO2NBQ0UsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO2tCQUN4QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7ZUFDN0I7bUJBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7a0JBQ2xDLElBQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVU7d0JBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsTUFBRzt3QkFDakMsRUFBRSxDQUFDO2tCQUNQLElBQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVk7d0JBQ3hDLE9BQUssSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxNQUFHO3dCQUNyQyxFQUFFLENBQUM7a0JBQ1AsT0FBTyxLQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsTUFBUSxDQUFDO2VBQ3ZEO1dBQ0Y7OztTQUFBO01BRUQsc0JBQUksNENBQVU7ZUFBZDtjQUNFLE9BQU8sSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO1dBQ25EOzs7U0FBQTtNQUVELHNCQUFJLHdDQUFNO2VBQVY7O2NBQ0UsYUFBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLDBDQUFFLEdBQUcsQ0FBQyxVQUFDLENBQUMsSUFBSyxRQUFDO2tCQUM1QyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVM7a0JBQ2xCLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUTtlQUNuQixJQUFDLEVBQUU7V0FDTDs7O1NBQUE7TUFDSCwyQkFBQztFQUFELENBaEdBLENBQTBDLEtBQUs7O0FDN1cvQ0MsVUFBcUIsQ0FDbkIsVUFBQyxHQUF3RDtNQUN2RCxPQUFPLFdBQVcsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztFQUN4RCxDQUFDLENBQ0Y7Ozs7OzsifQ=='); +/* eslint-enable */ + +var CitationPlugin = /** @class */ (function (_super) { + __extends(CitationPlugin, _super); + function CitationPlugin() { + var _this = _super !== null && _super.apply(this, arguments) || this; + // Template compilation options + _this.templateSettings = { + noEscape: true, + }; + _this.loadWorker = new WorkerManager(new WorkerFactory(), { + blockingChannel: true, + }); + _this.events = new CitationEvents(); + _this.loadErrorNotifier = new Notifier('Unable to load citations. Please update Citations plugin settings.'); + _this.literatureNoteErrorNotifier = new Notifier('Unable to access literature note. Please check that the literature note folder exists, or update the Citations plugin settings.'); + return _this; + } + Object.defineProperty(CitationPlugin.prototype, "editor", { + get: function () { + var view = this.app.workspace.activeLeaf.view; + if (!(view instanceof obsidian.MarkdownView)) + return null; + var sourceView = view.sourceMode; + return sourceView.cmEditor; + }, + enumerable: false, + configurable: true + }); + CitationPlugin.prototype.loadSettings = function () { + return __awaiter(this, void 0, void 0, function () { + var loadedSettings, toLoad; + var _this = this; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + this.settings = new CitationsPluginSettings(); + return [4 /*yield*/, this.loadData()]; + case 1: + loadedSettings = _a.sent(); + if (!loadedSettings) + return [2 /*return*/]; + toLoad = [ + 'citationExportPath', + 'citationExportFormat', + 'literatureNoteTitleTemplate', + 'literatureNoteFolder', + 'literatureNoteContentTemplate', + 'markdownCitationTemplate', + 'alternativeMarkdownCitationTemplate', + ]; + toLoad.forEach(function (setting) { + if (setting in loadedSettings) { + _this.settings[setting] = loadedSettings[setting]; + } + }); + return [2 /*return*/]; + } + }); + }); + }; + CitationPlugin.prototype.saveSettings = function () { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, this.saveData(this.settings)]; + case 1: + _a.sent(); + return [2 /*return*/]; + } + }); + }); + }; + CitationPlugin.prototype.onload = function () { + var _this = this; + this.loadSettings().then(function () { return _this.init(); }); + }; + CitationPlugin.prototype.init = function () { + return __awaiter(this, void 0, void 0, function () { + var watchOptions; + var _this = this; + return __generator(this, function (_a) { + if (this.settings.citationExportPath) { + // Load library for the first time + this.loadLibrary(); + // Set up a watcher to refresh whenever the export is updated + try { + watchOptions = { + awaitWriteFinish: { + stabilityThreshold: 500, + }, + }; + watch_1(this.resolveLibraryPath(this.settings.citationExportPath), watchOptions) + .on('change', function () { + _this.loadLibrary(); + }); + } + catch (_b) { + this.loadErrorNotifier.show(); + } + } + this.addCommand({ + id: 'open-literature-note', + name: 'Open literature note', + hotkeys: [{ modifiers: ['Ctrl', 'Shift'], key: 'o' }], + callback: function () { + var modal = new OpenNoteModal(_this.app, _this); + modal.open(); + }, + }); + this.addCommand({ + id: 'update-bib-data', + name: 'Refresh citation database', + hotkeys: [{ modifiers: ['Ctrl', 'Shift'], key: 'r' }], + callback: function () { + _this.loadLibrary(); + }, + }); + this.addCommand({ + id: 'insert-citation', + name: 'Insert literature note link', + hotkeys: [{ modifiers: ['Ctrl', 'Shift'], key: 'e' }], + callback: function () { + var modal = new InsertNoteLinkModal(_this.app, _this); + modal.open(); + }, + }); + this.addCommand({ + id: 'insert-literature-note-content', + name: 'Insert literature note content in the current pane', + callback: function () { + var modal = new InsertNoteContentModal(_this.app, _this); + modal.open(); + }, + }); + this.addCommand({ + id: 'insert-markdown-citation', + name: 'Insert Markdown citation', + callback: function () { + var modal = new InsertCitationModal(_this.app, _this); + modal.open(); + }, + }); + this.addSettingTab(new CitationSettingTab(this.app, this)); + return [2 /*return*/]; + }); + }); + }; + /** + * Resolve a provided library path, allowing for relative paths rooted at + * the vault directory. + */ + CitationPlugin.prototype.resolveLibraryPath = function (rawPath) { + var vaultRoot = this.app.vault.adapter instanceof obsidian.FileSystemAdapter + ? this.app.vault.adapter.getBasePath() + : '/'; + return sysPath.resolve(vaultRoot, rawPath); + }; + CitationPlugin.prototype.loadLibrary = function () { + return __awaiter(this, void 0, void 0, function () { + var filePath; + var _this = this; + return __generator(this, function (_a) { + console.debug('Citation plugin: Reloading library'); + if (this.settings.citationExportPath) { + filePath = this.resolveLibraryPath(this.settings.citationExportPath); + // Unload current library. + this.events.trigger('library-load-start'); + this.library = null; + return [2 /*return*/, obsidian.FileSystemAdapter.readLocalFile(filePath) + .then(function (buffer) { + // If there is a remaining error message, hide it + _this.loadErrorNotifier.hide(); + // Decode file as UTF-8. + var dataView = new DataView(buffer); + var decoder = new TextDecoder('utf8'); + var value = decoder.decode(dataView); + return _this.loadWorker.post({ + databaseRaw: value, + databaseType: _this.settings.citationExportFormat, + }); + }) + .then(function (entries) { + var adapter; + var idKey; + switch (_this.settings.citationExportFormat) { + case 'biblatex': + adapter = EntryBibLaTeXAdapter; + idKey = 'key'; + break; + case 'csl-json': + adapter = EntryCSLAdapter; + idKey = 'id'; + break; + } + _this.library = new Library(Object.fromEntries(entries.map(function (e) { return [e[idKey], new adapter(e)]; }))); + console.debug("Citation plugin: successfully loaded library with " + _this.library.size + " entries."); + _this.events.trigger('library-load-complete'); + return _this.library; + }) + .catch(function (e) { + if (e instanceof WorkerManagerBlocked) { + // Silently catch WorkerManager error, which will be thrown if the + // library is already being loaded + return; + } + console.error(e); + _this.loadErrorNotifier.show(); + return null; + })]; + } + else { + console.warn('Citations plugin: citation export path is not set. Please update plugin settings.'); + } + return [2 /*return*/]; + }); + }); + }; + Object.defineProperty(CitationPlugin.prototype, "isLibraryLoading", { + /** + * Returns true iff the library is currently being loaded on the worker thread. + */ + get: function () { + return this.loadWorker.blocked; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(CitationPlugin.prototype, "literatureNoteTitleTemplate", { + get: function () { + return lib.compile(this.settings.literatureNoteTitleTemplate, this.templateSettings); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(CitationPlugin.prototype, "literatureNoteContentTemplate", { + get: function () { + return lib.compile(this.settings.literatureNoteContentTemplate, this.templateSettings); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(CitationPlugin.prototype, "markdownCitationTemplate", { + get: function () { + return lib.compile(this.settings.markdownCitationTemplate, this.templateSettings); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(CitationPlugin.prototype, "alternativeMarkdownCitationTemplate", { + get: function () { + return lib.compile(this.settings.alternativeMarkdownCitationTemplate, this.templateSettings); + }, + enumerable: false, + configurable: true + }); + CitationPlugin.prototype.getTitleForCitekey = function (citekey) { + var unsafeTitle = this.literatureNoteTitleTemplate(this.library.getTemplateVariablesForCitekey(citekey)); + return unsafeTitle.replace(DISALLOWED_FILENAME_CHARACTERS_RE, '_'); + }; + CitationPlugin.prototype.getPathForCitekey = function (citekey) { + var title = this.getTitleForCitekey(citekey); + // TODO escape note title + return sysPath.join(this.settings.literatureNoteFolder, title + ".md"); + }; + CitationPlugin.prototype.getInitialContentForCitekey = function (citekey) { + return this.literatureNoteContentTemplate(this.library.getTemplateVariablesForCitekey(citekey)); + }; + CitationPlugin.prototype.getMarkdownCitationForCitekey = function (citekey) { + return this.markdownCitationTemplate(this.library.getTemplateVariablesForCitekey(citekey)); + }; + CitationPlugin.prototype.getAlternativeMarkdownCitationForCitekey = function (citekey) { + return this.alternativeMarkdownCitationTemplate(this.library.getTemplateVariablesForCitekey(citekey)); + }; + /** + * Run a case-insensitive search for the literature note file corresponding to + * the given citekey. If no corresponding file is found, create one. + */ + CitationPlugin.prototype.getOrCreateLiteratureNoteFile = function (citekey) { + return __awaiter(this, void 0, void 0, function () { + var path, normalizedPath, file, matches, exc_1; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + path = this.getPathForCitekey(citekey); + normalizedPath = obsidian.normalizePath(path); + file = this.app.vault.getAbstractFileByPath(normalizedPath); + if (!(file == null)) return [3 /*break*/, 4]; + matches = this.app.vault + .getMarkdownFiles() + .filter(function (f) { return f.path.toLowerCase() == normalizedPath.toLowerCase(); }); + if (!(matches.length > 0)) return [3 /*break*/, 1]; + file = matches[0]; + return [3 /*break*/, 4]; + case 1: + _a.trys.push([1, 3, , 4]); + return [4 /*yield*/, this.app.vault.create(path, this.getInitialContentForCitekey(citekey))]; + case 2: + file = _a.sent(); + return [3 /*break*/, 4]; + case 3: + exc_1 = _a.sent(); + this.literatureNoteErrorNotifier.show(); + throw exc_1; + case 4: return [2 /*return*/, file]; + } + }); + }); + }; + CitationPlugin.prototype.openLiteratureNote = function (citekey, newPane) { + return __awaiter(this, void 0, void 0, function () { + var _this = this; + return __generator(this, function (_a) { + this.getOrCreateLiteratureNoteFile(citekey) + .then(function (file) { + _this.app.workspace.getLeaf(newPane).openFile(file); + }) + .catch(console.error); + return [2 /*return*/]; + }); + }); + }; + CitationPlugin.prototype.insertLiteratureNoteLink = function (citekey) { + return __awaiter(this, void 0, void 0, function () { + var _this = this; + return __generator(this, function (_a) { + this.getOrCreateLiteratureNoteFile(citekey) + .then(function (file) { + var useMarkdown = _this.app.vault.getConfig('useMarkdownLinks'); + var title = _this.getTitleForCitekey(citekey); + var linkText; + if (useMarkdown) { + var uri = encodeURI(_this.app.metadataCache.fileToLinktext(file, '', false)); + linkText = "[" + title + "](" + uri + ")"; + } + else { + linkText = "[[" + title + "]]"; + } + _this.editor.replaceSelection(linkText); + }) + .catch(console.error); + return [2 /*return*/]; + }); + }); + }; + /** + * Format literature note content for a given reference and insert in the + * currently active pane. + */ + CitationPlugin.prototype.insertLiteratureNoteContent = function (citekey) { + return __awaiter(this, void 0, void 0, function () { + var content; + return __generator(this, function (_a) { + content = this.getInitialContentForCitekey(citekey); + this.editor.replaceRange(content, this.editor.getCursor()); + return [2 /*return*/]; + }); + }); + }; + CitationPlugin.prototype.insertMarkdownCitation = function (citekey, alternative) { + if (alternative === void 0) { alternative = false; } + return __awaiter(this, void 0, void 0, function () { + var func, citation; + return __generator(this, function (_a) { + func = alternative + ? this.getAlternativeMarkdownCitationForCitekey + : this.getMarkdownCitationForCitekey; + citation = func.bind(this)(citekey); + this.editor.replaceRange(citation, this.editor.getCursor()); + return [2 /*return*/]; + }); + }); + }; + return CitationPlugin; +}(obsidian.Plugin)); + +module.exports = CitationPlugin; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsIm5vZGVfbW9kdWxlcy9waWNvbWF0Y2gvbGliL2NvbnN0YW50cy5qcyIsIm5vZGVfbW9kdWxlcy9waWNvbWF0Y2gvbGliL3V0aWxzLmpzIiwibm9kZV9tb2R1bGVzL3BpY29tYXRjaC9saWIvc2Nhbi5qcyIsIm5vZGVfbW9kdWxlcy9waWNvbWF0Y2gvbGliL3BhcnNlLmpzIiwibm9kZV9tb2R1bGVzL3BpY29tYXRjaC9saWIvcGljb21hdGNoLmpzIiwibm9kZV9tb2R1bGVzL3BpY29tYXRjaC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFkZGlycC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9ub3JtYWxpemUtcGF0aC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9hbnltYXRjaC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9pcy1leHRnbG9iL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2lzLWdsb2IvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZ2xvYi1wYXJlbnQvaW5kZXguanMiLCJub2RlX21vZHVsZXMvYnJhY2VzL2xpYi91dGlscy5qcyIsIm5vZGVfbW9kdWxlcy9icmFjZXMvbGliL3N0cmluZ2lmeS5qcyIsIm5vZGVfbW9kdWxlcy9pcy1udW1iZXIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvdG8tcmVnZXgtcmFuZ2UvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZmlsbC1yYW5nZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9icmFjZXMvbGliL2NvbXBpbGUuanMiLCJub2RlX21vZHVsZXMvYnJhY2VzL2xpYi9leHBhbmQuanMiLCJub2RlX21vZHVsZXMvYnJhY2VzL2xpYi9jb25zdGFudHMuanMiLCJub2RlX21vZHVsZXMvYnJhY2VzL2xpYi9wYXJzZS5qcyIsIm5vZGVfbW9kdWxlcy9icmFjZXMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvYmluYXJ5LWV4dGVuc2lvbnMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvaXMtYmluYXJ5LXBhdGgvaW5kZXguanMiLCJub2RlX21vZHVsZXMvY2hva2lkYXIvbGliL2NvbnN0YW50cy5qcyIsIm5vZGVfbW9kdWxlcy9jaG9raWRhci9saWIvbm9kZWZzLWhhbmRsZXIuanMiLCJub2RlX21vZHVsZXMvY2hva2lkYXIvbGliL2ZzZXZlbnRzLWhhbmRsZXIuanMiLCJub2RlX21vZHVsZXMvY2hva2lkYXIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL3V0aWxzLmpzIiwibm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9leGNlcHRpb24uanMiLCJub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2hlbHBlcnMvYmxvY2staGVscGVyLW1pc3NpbmcuanMiLCJub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2hlbHBlcnMvZWFjaC5qcyIsIm5vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvaGVscGVycy9oZWxwZXItbWlzc2luZy5qcyIsIm5vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvaGVscGVycy9pZi5qcyIsIm5vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvaGVscGVycy9sb2cuanMiLCJub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2hlbHBlcnMvbG9va3VwLmpzIiwibm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9oZWxwZXJzL3dpdGguanMiLCJub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2hlbHBlcnMuanMiLCJub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2RlY29yYXRvcnMvaW5saW5lLmpzIiwibm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9kZWNvcmF0b3JzLmpzIiwibm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9sb2dnZXIuanMiLCJub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2ludGVybmFsL2NyZWF0ZS1uZXctbG9va3VwLW9iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvaW50ZXJuYWwvcHJvdG8tYWNjZXNzLmpzIiwibm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9iYXNlLmpzIiwibm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9zYWZlLXN0cmluZy5qcyIsIm5vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvaW50ZXJuYWwvd3JhcEhlbHBlci5qcyIsIm5vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvcnVudGltZS5qcyIsIm5vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvbm8tY29uZmxpY3QuanMiLCJub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzLnJ1bnRpbWUuanMiLCJub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2NvbXBpbGVyL2FzdC5qcyIsIm5vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvY29tcGlsZXIvcGFyc2VyLmpzIiwibm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9jb21waWxlci92aXNpdG9yLmpzIiwibm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9jb21waWxlci93aGl0ZXNwYWNlLWNvbnRyb2wuanMiLCJub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2NvbXBpbGVyL2hlbHBlcnMuanMiLCJub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2NvbXBpbGVyL2Jhc2UuanMiLCJub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2NvbXBpbGVyL2NvbXBpbGVyLmpzIiwibm9kZV9tb2R1bGVzL3NvdXJjZS1tYXAvbGliL2Jhc2U2NC5qcyIsIm5vZGVfbW9kdWxlcy9zb3VyY2UtbWFwL2xpYi9iYXNlNjQtdmxxLmpzIiwibm9kZV9tb2R1bGVzL3NvdXJjZS1tYXAvbGliL3V0aWwuanMiLCJub2RlX21vZHVsZXMvc291cmNlLW1hcC9saWIvYXJyYXktc2V0LmpzIiwibm9kZV9tb2R1bGVzL3NvdXJjZS1tYXAvbGliL21hcHBpbmctbGlzdC5qcyIsIm5vZGVfbW9kdWxlcy9zb3VyY2UtbWFwL2xpYi9zb3VyY2UtbWFwLWdlbmVyYXRvci5qcyIsIm5vZGVfbW9kdWxlcy9zb3VyY2UtbWFwL2xpYi9iaW5hcnktc2VhcmNoLmpzIiwibm9kZV9tb2R1bGVzL3NvdXJjZS1tYXAvbGliL3F1aWNrLXNvcnQuanMiLCJub2RlX21vZHVsZXMvc291cmNlLW1hcC9saWIvc291cmNlLW1hcC1jb25zdW1lci5qcyIsIm5vZGVfbW9kdWxlcy9zb3VyY2UtbWFwL2xpYi9zb3VyY2Utbm9kZS5qcyIsIm5vZGVfbW9kdWxlcy9zb3VyY2UtbWFwL3NvdXJjZS1tYXAuanMiLCJub2RlX21vZHVsZXMvaGFuZGxlYmFycy9kaXN0L2Nqcy9oYW5kbGViYXJzL2NvbXBpbGVyL2NvZGUtZ2VuLmpzIiwibm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy9jb21waWxlci9qYXZhc2NyaXB0LWNvbXBpbGVyLmpzIiwibm9kZV9tb2R1bGVzL2hhbmRsZWJhcnMvZGlzdC9janMvaGFuZGxlYmFycy5qcyIsIm5vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2Rpc3QvY2pzL2hhbmRsZWJhcnMvY29tcGlsZXIvcHJpbnRlci5qcyIsIm5vZGVfbW9kdWxlcy9oYW5kbGViYXJzL2xpYi9pbmRleC5qcyIsInNyYy9ldmVudHMudHMiLCJzcmMvbW9kYWxzLnRzIiwibm9kZV9tb2R1bGVzL0ByZXRvcnF1ZXJlL2JpYnRleC1wYXJzZXIvZ3JhbW1hci5qcyIsIm5vZGVfbW9kdWxlcy9AcmV0b3JxdWVyZS9iaWJ0ZXgtcGFyc2VyL2NodW5rZXIuanMiLCJub2RlX21vZHVsZXMvdW5pY29kZTJsYXRleC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy94cmVnZXhwL3Rvb2xzL291dHB1dC9jYXRlZ29yaWVzLmpzIiwibm9kZV9tb2R1bGVzL0ByZXRvcnF1ZXJlL2JpYnRleC1wYXJzZXIvamFicmVmLmpzIiwibm9kZV9tb2R1bGVzL0ByZXRvcnF1ZXJlL2JpYnRleC1wYXJzZXIvaW5kZXguanMiLCJzcmMvdHlwZXMudHMiLCJzcmMvc2V0dGluZ3MudHMiLCJub2RlX21vZHVsZXMvcHJvbWlzZS13b3JrZXIvaW5kZXguanMiLCJzcmMvb2JzaWRpYW4tZXh0ZW5zaW9ucy50cyIsInNyYy91dGlsLnRzIiwic3JjL21haW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyohICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UgKi9cclxuXHJcbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cclxuICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2Fzc2lnbiA9IGZ1bmN0aW9uKCkge1xyXG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcclxuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XHJcbiAgICB2YXIgdCA9IHt9O1xyXG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXHJcbiAgICAgICAgdFtwXSA9IHNbcF07XHJcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXHJcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcclxuICAgICAgICB9XHJcbiAgICByZXR1cm4gdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcclxuICAgIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xyXG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcclxuICAgIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3BhcmFtKHBhcmFtSW5kZXgsIGRlY29yYXRvcikge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIGtleSkgeyBkZWNvcmF0b3IodGFyZ2V0LCBrZXksIHBhcmFtSW5kZXgpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcclxuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XHJcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xyXG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcclxuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xyXG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XHJcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxyXG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fY3JlYXRlQmluZGluZyA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcclxuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfSk7XHJcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgb1trMl0gPSBtW2tdO1xyXG59KTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgbykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBwKSkgX19jcmVhdGVCaW5kaW5nKG8sIG0sIHApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xyXG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcclxuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3JlYWQobywgbikge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xyXG4gICAgaWYgKCFtKSByZXR1cm4gbztcclxuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWQoKSB7XHJcbiAgICBmb3IgKHZhciBhciA9IFtdLCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcclxuICAgICAgICBhciA9IGFyLmNvbmNhdChfX3JlYWQoYXJndW1lbnRzW2ldKSk7XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5cygpIHtcclxuICAgIGZvciAodmFyIHMgPSAwLCBpID0gMCwgaWwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgaWw7IGkrKykgcyArPSBhcmd1bWVudHNbaV0ubGVuZ3RoO1xyXG4gICAgZm9yICh2YXIgciA9IEFycmF5KHMpLCBrID0gMCwgaSA9IDA7IGkgPCBpbDsgaSsrKVxyXG4gICAgICAgIGZvciAodmFyIGEgPSBhcmd1bWVudHNbaV0sIGogPSAwLCBqbCA9IGEubGVuZ3RoOyBqIDwgamw7IGorKywgaysrKVxyXG4gICAgICAgICAgICByW2tdID0gYVtqXTtcclxuICAgIHJldHVybiByO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXQodikge1xyXG4gICAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBfX2F3YWl0ID8gKHRoaXMudiA9IHYsIHRoaXMpIDogbmV3IF9fYXdhaXQodik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jR2VuZXJhdG9yKHRoaXNBcmcsIF9hcmd1bWVudHMsIGdlbmVyYXRvcikge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBnID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pLCBpLCBxID0gW107XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaWYgKGdbbl0pIGlbbl0gPSBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKGEsIGIpIHsgcS5wdXNoKFtuLCB2LCBhLCBiXSkgPiAxIHx8IHJlc3VtZShuLCB2KTsgfSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHJlc3VtZShuLCB2KSB7IHRyeSB7IHN0ZXAoZ1tuXSh2KSk7IH0gY2F0Y2ggKGUpIHsgc2V0dGxlKHFbMF1bM10sIGUpOyB9IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAocikgeyByLnZhbHVlIGluc3RhbmNlb2YgX19hd2FpdCA/IFByb21pc2UucmVzb2x2ZShyLnZhbHVlLnYpLnRoZW4oZnVsZmlsbCwgcmVqZWN0KSA6IHNldHRsZShxWzBdWzJdLCByKTsgfVxyXG4gICAgZnVuY3Rpb24gZnVsZmlsbCh2YWx1ZSkgeyByZXN1bWUoXCJuZXh0XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gcmVqZWN0KHZhbHVlKSB7IHJlc3VtZShcInRocm93XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKGYsIHYpIHsgaWYgKGYodiksIHEuc2hpZnQoKSwgcS5sZW5ndGgpIHJlc3VtZShxWzBdWzBdLCBxWzBdWzFdKTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0RlbGVnYXRvcihvKSB7XHJcbiAgICB2YXIgaSwgcDtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiwgZnVuY3Rpb24gKGUpIHsgdGhyb3cgZTsgfSksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaVtuXSA9IG9bbl0gPyBmdW5jdGlvbiAodikgeyByZXR1cm4gKHAgPSAhcCkgPyB7IHZhbHVlOiBfX2F3YWl0KG9bbl0odikpLCBkb25lOiBuID09PSBcInJldHVyblwiIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xyXG4gICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcclxuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XHJcbiAgICByZXR1cm4gY29va2VkO1xyXG59O1xyXG5cclxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xyXG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIG9bXCJkZWZhdWx0XCJdID0gdjtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XHJcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xyXG4gICAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGspO1xyXG4gICAgX19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCwgbW9kKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEdldChyZWNlaXZlciwgcHJpdmF0ZU1hcCkge1xyXG4gICAgaWYgKCFwcml2YXRlTWFwLmhhcyhyZWNlaXZlcikpIHtcclxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiYXR0ZW1wdGVkIHRvIGdldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZVwiKTtcclxuICAgIH1cclxuICAgIHJldHVybiBwcml2YXRlTWFwLmdldChyZWNlaXZlcik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHJlY2VpdmVyLCBwcml2YXRlTWFwLCB2YWx1ZSkge1xyXG4gICAgaWYgKCFwcml2YXRlTWFwLmhhcyhyZWNlaXZlcikpIHtcclxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiYXR0ZW1wdGVkIHRvIHNldCBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZVwiKTtcclxuICAgIH1cclxuICAgIHByaXZhdGVNYXAuc2V0KHJlY2VpdmVyLCB2YWx1ZSk7XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbn1cclxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuY29uc3QgV0lOX1NMQVNIID0gJ1xcXFxcXFxcLyc7XG5jb25zdCBXSU5fTk9fU0xBU0ggPSBgW14ke1dJTl9TTEFTSH1dYDtcblxuLyoqXG4gKiBQb3NpeCBnbG9iIHJlZ2V4XG4gKi9cblxuY29uc3QgRE9UX0xJVEVSQUwgPSAnXFxcXC4nO1xuY29uc3QgUExVU19MSVRFUkFMID0gJ1xcXFwrJztcbmNvbnN0IFFNQVJLX0xJVEVSQUwgPSAnXFxcXD8nO1xuY29uc3QgU0xBU0hfTElURVJBTCA9ICdcXFxcLyc7XG5jb25zdCBPTkVfQ0hBUiA9ICcoPz0uKSc7XG5jb25zdCBRTUFSSyA9ICdbXi9dJztcbmNvbnN0IEVORF9BTkNIT1IgPSBgKD86JHtTTEFTSF9MSVRFUkFMfXwkKWA7XG5jb25zdCBTVEFSVF9BTkNIT1IgPSBgKD86Xnwke1NMQVNIX0xJVEVSQUx9KWA7XG5jb25zdCBET1RTX1NMQVNIID0gYCR7RE9UX0xJVEVSQUx9ezEsMn0ke0VORF9BTkNIT1J9YDtcbmNvbnN0IE5PX0RPVCA9IGAoPyEke0RPVF9MSVRFUkFMfSlgO1xuY29uc3QgTk9fRE9UUyA9IGAoPyEke1NUQVJUX0FOQ0hPUn0ke0RPVFNfU0xBU0h9KWA7XG5jb25zdCBOT19ET1RfU0xBU0ggPSBgKD8hJHtET1RfTElURVJBTH17MCwxfSR7RU5EX0FOQ0hPUn0pYDtcbmNvbnN0IE5PX0RPVFNfU0xBU0ggPSBgKD8hJHtET1RTX1NMQVNIfSlgO1xuY29uc3QgUU1BUktfTk9fRE9UID0gYFteLiR7U0xBU0hfTElURVJBTH1dYDtcbmNvbnN0IFNUQVIgPSBgJHtRTUFSS30qP2A7XG5cbmNvbnN0IFBPU0lYX0NIQVJTID0ge1xuICBET1RfTElURVJBTCxcbiAgUExVU19MSVRFUkFMLFxuICBRTUFSS19MSVRFUkFMLFxuICBTTEFTSF9MSVRFUkFMLFxuICBPTkVfQ0hBUixcbiAgUU1BUkssXG4gIEVORF9BTkNIT1IsXG4gIERPVFNfU0xBU0gsXG4gIE5PX0RPVCxcbiAgTk9fRE9UUyxcbiAgTk9fRE9UX1NMQVNILFxuICBOT19ET1RTX1NMQVNILFxuICBRTUFSS19OT19ET1QsXG4gIFNUQVIsXG4gIFNUQVJUX0FOQ0hPUlxufTtcblxuLyoqXG4gKiBXaW5kb3dzIGdsb2IgcmVnZXhcbiAqL1xuXG5jb25zdCBXSU5ET1dTX0NIQVJTID0ge1xuICAuLi5QT1NJWF9DSEFSUyxcblxuICBTTEFTSF9MSVRFUkFMOiBgWyR7V0lOX1NMQVNIfV1gLFxuICBRTUFSSzogV0lOX05PX1NMQVNILFxuICBTVEFSOiBgJHtXSU5fTk9fU0xBU0h9Kj9gLFxuICBET1RTX1NMQVNIOiBgJHtET1RfTElURVJBTH17MSwyfSg/Olske1dJTl9TTEFTSH1dfCQpYCxcbiAgTk9fRE9UOiBgKD8hJHtET1RfTElURVJBTH0pYCxcbiAgTk9fRE9UUzogYCg/ISg/Ol58WyR7V0lOX1NMQVNIfV0pJHtET1RfTElURVJBTH17MSwyfSg/Olske1dJTl9TTEFTSH1dfCQpKWAsXG4gIE5PX0RPVF9TTEFTSDogYCg/ISR7RE9UX0xJVEVSQUx9ezAsMX0oPzpbJHtXSU5fU0xBU0h9XXwkKSlgLFxuICBOT19ET1RTX1NMQVNIOiBgKD8hJHtET1RfTElURVJBTH17MSwyfSg/Olske1dJTl9TTEFTSH1dfCQpKWAsXG4gIFFNQVJLX05PX0RPVDogYFteLiR7V0lOX1NMQVNIfV1gLFxuICBTVEFSVF9BTkNIT1I6IGAoPzpefFske1dJTl9TTEFTSH1dKWAsXG4gIEVORF9BTkNIT1I6IGAoPzpbJHtXSU5fU0xBU0h9XXwkKWBcbn07XG5cbi8qKlxuICogUE9TSVggQnJhY2tldCBSZWdleFxuICovXG5cbmNvbnN0IFBPU0lYX1JFR0VYX1NPVVJDRSA9IHtcbiAgYWxudW06ICdhLXpBLVowLTknLFxuICBhbHBoYTogJ2EtekEtWicsXG4gIGFzY2lpOiAnXFxcXHgwMC1cXFxceDdGJyxcbiAgYmxhbms6ICcgXFxcXHQnLFxuICBjbnRybDogJ1xcXFx4MDAtXFxcXHgxRlxcXFx4N0YnLFxuICBkaWdpdDogJzAtOScsXG4gIGdyYXBoOiAnXFxcXHgyMS1cXFxceDdFJyxcbiAgbG93ZXI6ICdhLXonLFxuICBwcmludDogJ1xcXFx4MjAtXFxcXHg3RSAnLFxuICBwdW5jdDogJ1xcXFwtIVwiIyQlJlxcJygpXFxcXCorLC4vOjs8PT4/QFtcXFxcXV5fYHt8fX4nLFxuICBzcGFjZTogJyBcXFxcdFxcXFxyXFxcXG5cXFxcdlxcXFxmJyxcbiAgdXBwZXI6ICdBLVonLFxuICB3b3JkOiAnQS1aYS16MC05XycsXG4gIHhkaWdpdDogJ0EtRmEtZjAtOSdcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBNQVhfTEVOR1RIOiAxMDI0ICogNjQsXG4gIFBPU0lYX1JFR0VYX1NPVVJDRSxcblxuICAvLyByZWd1bGFyIGV4cHJlc3Npb25zXG4gIFJFR0VYX0JBQ0tTTEFTSDogL1xcXFwoPyFbKis/XiR7fSh8KVtcXF1dKS9nLFxuICBSRUdFWF9OT05fU1BFQ0lBTF9DSEFSUzogL15bXkAhW1xcXS4sJCorP157fSgpfFxcXFwvXSsvLFxuICBSRUdFWF9TUEVDSUFMX0NIQVJTOiAvWy0qKz8uXiR7fSh8KVtcXF1dLyxcbiAgUkVHRVhfU1BFQ0lBTF9DSEFSU19CQUNLUkVGOiAvKFxcXFw/KSgoXFxXKShcXDMqKSkvZyxcbiAgUkVHRVhfU1BFQ0lBTF9DSEFSU19HTE9CQUw6IC8oWy0qKz8uXiR7fSh8KVtcXF1dKS9nLFxuICBSRUdFWF9SRU1PVkVfQkFDS1NMQVNIOiAvKD86XFxbLio/W15cXFxcXVxcXXxcXFxcKD89LikpL2csXG5cbiAgLy8gUmVwbGFjZSBnbG9icyB3aXRoIGVxdWl2YWxlbnQgcGF0dGVybnMgdG8gcmVkdWNlIHBhcnNpbmcgdGltZS5cbiAgUkVQTEFDRU1FTlRTOiB7XG4gICAgJyoqKic6ICcqJyxcbiAgICAnKiovKionOiAnKionLFxuICAgICcqKi8qKi8qKic6ICcqKidcbiAgfSxcblxuICAvLyBEaWdpdHNcbiAgQ0hBUl8wOiA0OCwgLyogMCAqL1xuICBDSEFSXzk6IDU3LCAvKiA5ICovXG5cbiAgLy8gQWxwaGFiZXQgY2hhcnMuXG4gIENIQVJfVVBQRVJDQVNFX0E6IDY1LCAvKiBBICovXG4gIENIQVJfTE9XRVJDQVNFX0E6IDk3LCAvKiBhICovXG4gIENIQVJfVVBQRVJDQVNFX1o6IDkwLCAvKiBaICovXG4gIENIQVJfTE9XRVJDQVNFX1o6IDEyMiwgLyogeiAqL1xuXG4gIENIQVJfTEVGVF9QQVJFTlRIRVNFUzogNDAsIC8qICggKi9cbiAgQ0hBUl9SSUdIVF9QQVJFTlRIRVNFUzogNDEsIC8qICkgKi9cblxuICBDSEFSX0FTVEVSSVNLOiA0MiwgLyogKiAqL1xuXG4gIC8vIE5vbi1hbHBoYWJldGljIGNoYXJzLlxuICBDSEFSX0FNUEVSU0FORDogMzgsIC8qICYgKi9cbiAgQ0hBUl9BVDogNjQsIC8qIEAgKi9cbiAgQ0hBUl9CQUNLV0FSRF9TTEFTSDogOTIsIC8qIFxcICovXG4gIENIQVJfQ0FSUklBR0VfUkVUVVJOOiAxMywgLyogXFxyICovXG4gIENIQVJfQ0lSQ1VNRkxFWF9BQ0NFTlQ6IDk0LCAvKiBeICovXG4gIENIQVJfQ09MT046IDU4LCAvKiA6ICovXG4gIENIQVJfQ09NTUE6IDQ0LCAvKiAsICovXG4gIENIQVJfRE9UOiA0NiwgLyogLiAqL1xuICBDSEFSX0RPVUJMRV9RVU9URTogMzQsIC8qIFwiICovXG4gIENIQVJfRVFVQUw6IDYxLCAvKiA9ICovXG4gIENIQVJfRVhDTEFNQVRJT05fTUFSSzogMzMsIC8qICEgKi9cbiAgQ0hBUl9GT1JNX0ZFRUQ6IDEyLCAvKiBcXGYgKi9cbiAgQ0hBUl9GT1JXQVJEX1NMQVNIOiA0NywgLyogLyAqL1xuICBDSEFSX0dSQVZFX0FDQ0VOVDogOTYsIC8qIGAgKi9cbiAgQ0hBUl9IQVNIOiAzNSwgLyogIyAqL1xuICBDSEFSX0hZUEhFTl9NSU5VUzogNDUsIC8qIC0gKi9cbiAgQ0hBUl9MRUZUX0FOR0xFX0JSQUNLRVQ6IDYwLCAvKiA8ICovXG4gIENIQVJfTEVGVF9DVVJMWV9CUkFDRTogMTIzLCAvKiB7ICovXG4gIENIQVJfTEVGVF9TUVVBUkVfQlJBQ0tFVDogOTEsIC8qIFsgKi9cbiAgQ0hBUl9MSU5FX0ZFRUQ6IDEwLCAvKiBcXG4gKi9cbiAgQ0hBUl9OT19CUkVBS19TUEFDRTogMTYwLCAvKiBcXHUwMEEwICovXG4gIENIQVJfUEVSQ0VOVDogMzcsIC8qICUgKi9cbiAgQ0hBUl9QTFVTOiA0MywgLyogKyAqL1xuICBDSEFSX1FVRVNUSU9OX01BUks6IDYzLCAvKiA/ICovXG4gIENIQVJfUklHSFRfQU5HTEVfQlJBQ0tFVDogNjIsIC8qID4gKi9cbiAgQ0hBUl9SSUdIVF9DVVJMWV9CUkFDRTogMTI1LCAvKiB9ICovXG4gIENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVQ6IDkzLCAvKiBdICovXG4gIENIQVJfU0VNSUNPTE9OOiA1OSwgLyogOyAqL1xuICBDSEFSX1NJTkdMRV9RVU9URTogMzksIC8qICcgKi9cbiAgQ0hBUl9TUEFDRTogMzIsIC8qICAgKi9cbiAgQ0hBUl9UQUI6IDksIC8qIFxcdCAqL1xuICBDSEFSX1VOREVSU0NPUkU6IDk1LCAvKiBfICovXG4gIENIQVJfVkVSVElDQUxfTElORTogMTI0LCAvKiB8ICovXG4gIENIQVJfWkVST19XSURUSF9OT0JSRUFLX1NQQUNFOiA2NTI3OSwgLyogXFx1RkVGRiAqL1xuXG4gIFNFUDogcGF0aC5zZXAsXG5cbiAgLyoqXG4gICAqIENyZWF0ZSBFWFRHTE9CX0NIQVJTXG4gICAqL1xuXG4gIGV4dGdsb2JDaGFycyhjaGFycykge1xuICAgIHJldHVybiB7XG4gICAgICAnISc6IHsgdHlwZTogJ25lZ2F0ZScsIG9wZW46ICcoPzooPyEoPzonLCBjbG9zZTogYCkpJHtjaGFycy5TVEFSfSlgIH0sXG4gICAgICAnPyc6IHsgdHlwZTogJ3FtYXJrJywgb3BlbjogJyg/OicsIGNsb3NlOiAnKT8nIH0sXG4gICAgICAnKyc6IHsgdHlwZTogJ3BsdXMnLCBvcGVuOiAnKD86JywgY2xvc2U6ICcpKycgfSxcbiAgICAgICcqJzogeyB0eXBlOiAnc3RhcicsIG9wZW46ICcoPzonLCBjbG9zZTogJykqJyB9LFxuICAgICAgJ0AnOiB7IHR5cGU6ICdhdCcsIG9wZW46ICcoPzonLCBjbG9zZTogJyknIH1cbiAgICB9O1xuICB9LFxuXG4gIC8qKlxuICAgKiBDcmVhdGUgR0xPQl9DSEFSU1xuICAgKi9cblxuICBnbG9iQ2hhcnMod2luMzIpIHtcbiAgICByZXR1cm4gd2luMzIgPT09IHRydWUgPyBXSU5ET1dTX0NIQVJTIDogUE9TSVhfQ0hBUlM7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5jb25zdCB3aW4zMiA9IHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMic7XG5jb25zdCB7XG4gIFJFR0VYX0JBQ0tTTEFTSCxcbiAgUkVHRVhfUkVNT1ZFX0JBQ0tTTEFTSCxcbiAgUkVHRVhfU1BFQ0lBTF9DSEFSUyxcbiAgUkVHRVhfU1BFQ0lBTF9DSEFSU19HTE9CQUxcbn0gPSByZXF1aXJlKCcuL2NvbnN0YW50cycpO1xuXG5leHBvcnRzLmlzT2JqZWN0ID0gdmFsID0+IHZhbCAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWwpO1xuZXhwb3J0cy5oYXNSZWdleENoYXJzID0gc3RyID0+IFJFR0VYX1NQRUNJQUxfQ0hBUlMudGVzdChzdHIpO1xuZXhwb3J0cy5pc1JlZ2V4Q2hhciA9IHN0ciA9PiBzdHIubGVuZ3RoID09PSAxICYmIGV4cG9ydHMuaGFzUmVnZXhDaGFycyhzdHIpO1xuZXhwb3J0cy5lc2NhcGVSZWdleCA9IHN0ciA9PiBzdHIucmVwbGFjZShSRUdFWF9TUEVDSUFMX0NIQVJTX0dMT0JBTCwgJ1xcXFwkMScpO1xuZXhwb3J0cy50b1Bvc2l4U2xhc2hlcyA9IHN0ciA9PiBzdHIucmVwbGFjZShSRUdFWF9CQUNLU0xBU0gsICcvJyk7XG5cbmV4cG9ydHMucmVtb3ZlQmFja3NsYXNoZXMgPSBzdHIgPT4ge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoUkVHRVhfUkVNT1ZFX0JBQ0tTTEFTSCwgbWF0Y2ggPT4ge1xuICAgIHJldHVybiBtYXRjaCA9PT0gJ1xcXFwnID8gJycgOiBtYXRjaDtcbiAgfSk7XG59O1xuXG5leHBvcnRzLnN1cHBvcnRzTG9va2JlaGluZHMgPSAoKSA9PiB7XG4gIGNvbnN0IHNlZ3MgPSBwcm9jZXNzLnZlcnNpb24uc2xpY2UoMSkuc3BsaXQoJy4nKS5tYXAoTnVtYmVyKTtcbiAgaWYgKHNlZ3MubGVuZ3RoID09PSAzICYmIHNlZ3NbMF0gPj0gOSB8fCAoc2Vnc1swXSA9PT0gOCAmJiBzZWdzWzFdID49IDEwKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydHMuaXNXaW5kb3dzID0gb3B0aW9ucyA9PiB7XG4gIGlmIChvcHRpb25zICYmIHR5cGVvZiBvcHRpb25zLndpbmRvd3MgPT09ICdib29sZWFuJykge1xuICAgIHJldHVybiBvcHRpb25zLndpbmRvd3M7XG4gIH1cbiAgcmV0dXJuIHdpbjMyID09PSB0cnVlIHx8IHBhdGguc2VwID09PSAnXFxcXCc7XG59O1xuXG5leHBvcnRzLmVzY2FwZUxhc3QgPSAoaW5wdXQsIGNoYXIsIGxhc3RJZHgpID0+IHtcbiAgY29uc3QgaWR4ID0gaW5wdXQubGFzdEluZGV4T2YoY2hhciwgbGFzdElkeCk7XG4gIGlmIChpZHggPT09IC0xKSByZXR1cm4gaW5wdXQ7XG4gIGlmIChpbnB1dFtpZHggLSAxXSA9PT0gJ1xcXFwnKSByZXR1cm4gZXhwb3J0cy5lc2NhcGVMYXN0KGlucHV0LCBjaGFyLCBpZHggLSAxKTtcbiAgcmV0dXJuIGAke2lucHV0LnNsaWNlKDAsIGlkeCl9XFxcXCR7aW5wdXQuc2xpY2UoaWR4KX1gO1xufTtcblxuZXhwb3J0cy5yZW1vdmVQcmVmaXggPSAoaW5wdXQsIHN0YXRlID0ge30pID0+IHtcbiAgbGV0IG91dHB1dCA9IGlucHV0O1xuICBpZiAob3V0cHV0LnN0YXJ0c1dpdGgoJy4vJykpIHtcbiAgICBvdXRwdXQgPSBvdXRwdXQuc2xpY2UoMik7XG4gICAgc3RhdGUucHJlZml4ID0gJy4vJztcbiAgfVxuICByZXR1cm4gb3V0cHV0O1xufTtcblxuZXhwb3J0cy53cmFwT3V0cHV0ID0gKGlucHV0LCBzdGF0ZSA9IHt9LCBvcHRpb25zID0ge30pID0+IHtcbiAgY29uc3QgcHJlcGVuZCA9IG9wdGlvbnMuY29udGFpbnMgPyAnJyA6ICdeJztcbiAgY29uc3QgYXBwZW5kID0gb3B0aW9ucy5jb250YWlucyA/ICcnIDogJyQnO1xuXG4gIGxldCBvdXRwdXQgPSBgJHtwcmVwZW5kfSg/OiR7aW5wdXR9KSR7YXBwZW5kfWA7XG4gIGlmIChzdGF0ZS5uZWdhdGVkID09PSB0cnVlKSB7XG4gICAgb3V0cHV0ID0gYCg/Ol4oPyEke291dHB1dH0pLiokKWA7XG4gIH1cbiAgcmV0dXJuIG91dHB1dDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xuY29uc3Qge1xuICBDSEFSX0FTVEVSSVNLLCAgICAgICAgICAgICAvKiAqICovXG4gIENIQVJfQVQsICAgICAgICAgICAgICAgICAgIC8qIEAgKi9cbiAgQ0hBUl9CQUNLV0FSRF9TTEFTSCwgICAgICAgLyogXFwgKi9cbiAgQ0hBUl9DT01NQSwgICAgICAgICAgICAgICAgLyogLCAqL1xuICBDSEFSX0RPVCwgICAgICAgICAgICAgICAgICAvKiAuICovXG4gIENIQVJfRVhDTEFNQVRJT05fTUFSSywgICAgIC8qICEgKi9cbiAgQ0hBUl9GT1JXQVJEX1NMQVNILCAgICAgICAgLyogLyAqL1xuICBDSEFSX0xFRlRfQ1VSTFlfQlJBQ0UsICAgICAvKiB7ICovXG4gIENIQVJfTEVGVF9QQVJFTlRIRVNFUywgICAgIC8qICggKi9cbiAgQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VULCAgLyogWyAqL1xuICBDSEFSX1BMVVMsICAgICAgICAgICAgICAgICAvKiArICovXG4gIENIQVJfUVVFU1RJT05fTUFSSywgICAgICAgIC8qID8gKi9cbiAgQ0hBUl9SSUdIVF9DVVJMWV9CUkFDRSwgICAgLyogfSAqL1xuICBDSEFSX1JJR0hUX1BBUkVOVEhFU0VTLCAgICAvKiApICovXG4gIENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVQgIC8qIF0gKi9cbn0gPSByZXF1aXJlKCcuL2NvbnN0YW50cycpO1xuXG5jb25zdCBpc1BhdGhTZXBhcmF0b3IgPSBjb2RlID0+IHtcbiAgcmV0dXJuIGNvZGUgPT09IENIQVJfRk9SV0FSRF9TTEFTSCB8fCBjb2RlID09PSBDSEFSX0JBQ0tXQVJEX1NMQVNIO1xufTtcblxuY29uc3QgZGVwdGggPSB0b2tlbiA9PiB7XG4gIGlmICh0b2tlbi5pc1ByZWZpeCAhPT0gdHJ1ZSkge1xuICAgIHRva2VuLmRlcHRoID0gdG9rZW4uaXNHbG9ic3RhciA/IEluZmluaXR5IDogMTtcbiAgfVxufTtcblxuLyoqXG4gKiBRdWlja2x5IHNjYW5zIGEgZ2xvYiBwYXR0ZXJuIGFuZCByZXR1cm5zIGFuIG9iamVjdCB3aXRoIGEgaGFuZGZ1bCBvZlxuICogdXNlZnVsIHByb3BlcnRpZXMsIGxpa2UgYGlzR2xvYmAsIGBwYXRoYCAodGhlIGxlYWRpbmcgbm9uLWdsb2IsIGlmIGl0IGV4aXN0cyksXG4gKiBgZ2xvYmAgKHRoZSBhY3R1YWwgcGF0dGVybiksIGFuZCBgbmVnYXRlZGAgKHRydWUgaWYgdGhlIHBhdGggc3RhcnRzIHdpdGggYCFgKS5cbiAqXG4gKiBgYGBqc1xuICogY29uc3QgcG0gPSByZXF1aXJlKCdwaWNvbWF0Y2gnKTtcbiAqIGNvbnNvbGUubG9nKHBtLnNjYW4oJ2Zvby9iYXIvKi5qcycpKTtcbiAqIHsgaXNHbG9iOiB0cnVlLCBpbnB1dDogJ2Zvby9iYXIvKi5qcycsIGJhc2U6ICdmb28vYmFyJywgZ2xvYjogJyouanMnIH1cbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd9IGBzdHJgXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgXG4gKiBAcmV0dXJuIHtPYmplY3R9IFJldHVybnMgYW4gb2JqZWN0IHdpdGggdG9rZW5zIGFuZCByZWdleCBzb3VyY2Ugc3RyaW5nLlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5jb25zdCBzY2FuID0gKGlucHV0LCBvcHRpb25zKSA9PiB7XG4gIGNvbnN0IG9wdHMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIGNvbnN0IGxlbmd0aCA9IGlucHV0Lmxlbmd0aCAtIDE7XG4gIGNvbnN0IHNjYW5Ub0VuZCA9IG9wdHMucGFydHMgPT09IHRydWUgfHwgb3B0cy5zY2FuVG9FbmQgPT09IHRydWU7XG4gIGNvbnN0IHNsYXNoZXMgPSBbXTtcbiAgY29uc3QgdG9rZW5zID0gW107XG4gIGNvbnN0IHBhcnRzID0gW107XG5cbiAgbGV0IHN0ciA9IGlucHV0O1xuICBsZXQgaW5kZXggPSAtMTtcbiAgbGV0IHN0YXJ0ID0gMDtcbiAgbGV0IGxhc3RJbmRleCA9IDA7XG4gIGxldCBpc0JyYWNlID0gZmFsc2U7XG4gIGxldCBpc0JyYWNrZXQgPSBmYWxzZTtcbiAgbGV0IGlzR2xvYiA9IGZhbHNlO1xuICBsZXQgaXNFeHRnbG9iID0gZmFsc2U7XG4gIGxldCBpc0dsb2JzdGFyID0gZmFsc2U7XG4gIGxldCBicmFjZUVzY2FwZWQgPSBmYWxzZTtcbiAgbGV0IGJhY2tzbGFzaGVzID0gZmFsc2U7XG4gIGxldCBuZWdhdGVkID0gZmFsc2U7XG4gIGxldCBmaW5pc2hlZCA9IGZhbHNlO1xuICBsZXQgYnJhY2VzID0gMDtcbiAgbGV0IHByZXY7XG4gIGxldCBjb2RlO1xuICBsZXQgdG9rZW4gPSB7IHZhbHVlOiAnJywgZGVwdGg6IDAsIGlzR2xvYjogZmFsc2UgfTtcblxuICBjb25zdCBlb3MgPSAoKSA9PiBpbmRleCA+PSBsZW5ndGg7XG4gIGNvbnN0IHBlZWsgPSAoKSA9PiBzdHIuY2hhckNvZGVBdChpbmRleCArIDEpO1xuICBjb25zdCBhZHZhbmNlID0gKCkgPT4ge1xuICAgIHByZXYgPSBjb2RlO1xuICAgIHJldHVybiBzdHIuY2hhckNvZGVBdCgrK2luZGV4KTtcbiAgfTtcblxuICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICBjb2RlID0gYWR2YW5jZSgpO1xuICAgIGxldCBuZXh0O1xuXG4gICAgaWYgKGNvZGUgPT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIHtcbiAgICAgIGJhY2tzbGFzaGVzID0gdG9rZW4uYmFja3NsYXNoZXMgPSB0cnVlO1xuICAgICAgY29kZSA9IGFkdmFuY2UoKTtcblxuICAgICAgaWYgKGNvZGUgPT09IENIQVJfTEVGVF9DVVJMWV9CUkFDRSkge1xuICAgICAgICBicmFjZUVzY2FwZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGJyYWNlRXNjYXBlZCA9PT0gdHJ1ZSB8fCBjb2RlID09PSBDSEFSX0xFRlRfQ1VSTFlfQlJBQ0UpIHtcbiAgICAgIGJyYWNlcysrO1xuXG4gICAgICB3aGlsZSAoZW9zKCkgIT09IHRydWUgJiYgKGNvZGUgPSBhZHZhbmNlKCkpKSB7XG4gICAgICAgIGlmIChjb2RlID09PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSB7XG4gICAgICAgICAgYmFja3NsYXNoZXMgPSB0b2tlbi5iYWNrc2xhc2hlcyA9IHRydWU7XG4gICAgICAgICAgYWR2YW5jZSgpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvZGUgPT09IENIQVJfTEVGVF9DVVJMWV9CUkFDRSkge1xuICAgICAgICAgIGJyYWNlcysrO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJyYWNlRXNjYXBlZCAhPT0gdHJ1ZSAmJiBjb2RlID09PSBDSEFSX0RPVCAmJiAoY29kZSA9IGFkdmFuY2UoKSkgPT09IENIQVJfRE9UKSB7XG4gICAgICAgICAgaXNCcmFjZSA9IHRva2VuLmlzQnJhY2UgPSB0cnVlO1xuICAgICAgICAgIGlzR2xvYiA9IHRva2VuLmlzR2xvYiA9IHRydWU7XG4gICAgICAgICAgZmluaXNoZWQgPSB0cnVlO1xuXG4gICAgICAgICAgaWYgKHNjYW5Ub0VuZCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYnJhY2VFc2NhcGVkICE9PSB0cnVlICYmIGNvZGUgPT09IENIQVJfQ09NTUEpIHtcbiAgICAgICAgICBpc0JyYWNlID0gdG9rZW4uaXNCcmFjZSA9IHRydWU7XG4gICAgICAgICAgaXNHbG9iID0gdG9rZW4uaXNHbG9iID0gdHJ1ZTtcbiAgICAgICAgICBmaW5pc2hlZCA9IHRydWU7XG5cbiAgICAgICAgICBpZiAoc2NhblRvRW5kID09PSB0cnVlKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb2RlID09PSBDSEFSX1JJR0hUX0NVUkxZX0JSQUNFKSB7XG4gICAgICAgICAgYnJhY2VzLS07XG5cbiAgICAgICAgICBpZiAoYnJhY2VzID09PSAwKSB7XG4gICAgICAgICAgICBicmFjZUVzY2FwZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlzQnJhY2UgPSB0b2tlbi5pc0JyYWNlID0gdHJ1ZTtcbiAgICAgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoc2NhblRvRW5kID09PSB0cnVlKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoY29kZSA9PT0gQ0hBUl9GT1JXQVJEX1NMQVNIKSB7XG4gICAgICBzbGFzaGVzLnB1c2goaW5kZXgpO1xuICAgICAgdG9rZW5zLnB1c2godG9rZW4pO1xuICAgICAgdG9rZW4gPSB7IHZhbHVlOiAnJywgZGVwdGg6IDAsIGlzR2xvYjogZmFsc2UgfTtcblxuICAgICAgaWYgKGZpbmlzaGVkID09PSB0cnVlKSBjb250aW51ZTtcbiAgICAgIGlmIChwcmV2ID09PSBDSEFSX0RPVCAmJiBpbmRleCA9PT0gKHN0YXJ0ICsgMSkpIHtcbiAgICAgICAgc3RhcnQgKz0gMjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGxhc3RJbmRleCA9IGluZGV4ICsgMTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChvcHRzLm5vZXh0ICE9PSB0cnVlKSB7XG4gICAgICBjb25zdCBpc0V4dGdsb2JDaGFyID0gY29kZSA9PT0gQ0hBUl9QTFVTXG4gICAgICAgIHx8IGNvZGUgPT09IENIQVJfQVRcbiAgICAgICAgfHwgY29kZSA9PT0gQ0hBUl9BU1RFUklTS1xuICAgICAgICB8fCBjb2RlID09PSBDSEFSX1FVRVNUSU9OX01BUktcbiAgICAgICAgfHwgY29kZSA9PT0gQ0hBUl9FWENMQU1BVElPTl9NQVJLO1xuXG4gICAgICBpZiAoaXNFeHRnbG9iQ2hhciA9PT0gdHJ1ZSAmJiBwZWVrKCkgPT09IENIQVJfTEVGVF9QQVJFTlRIRVNFUykge1xuICAgICAgICBpc0dsb2IgPSB0b2tlbi5pc0dsb2IgPSB0cnVlO1xuICAgICAgICBpc0V4dGdsb2IgPSB0b2tlbi5pc0V4dGdsb2IgPSB0cnVlO1xuICAgICAgICBmaW5pc2hlZCA9IHRydWU7XG5cbiAgICAgICAgaWYgKHNjYW5Ub0VuZCA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHdoaWxlIChlb3MoKSAhPT0gdHJ1ZSAmJiAoY29kZSA9IGFkdmFuY2UoKSkpIHtcbiAgICAgICAgICAgIGlmIChjb2RlID09PSBDSEFSX0JBQ0tXQVJEX1NMQVNIKSB7XG4gICAgICAgICAgICAgIGJhY2tzbGFzaGVzID0gdG9rZW4uYmFja3NsYXNoZXMgPSB0cnVlO1xuICAgICAgICAgICAgICBjb2RlID0gYWR2YW5jZSgpO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGNvZGUgPT09IENIQVJfUklHSFRfUEFSRU5USEVTRVMpIHtcbiAgICAgICAgICAgICAgaXNHbG9iID0gdG9rZW4uaXNHbG9iID0gdHJ1ZTtcbiAgICAgICAgICAgICAgZmluaXNoZWQgPSB0cnVlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPT09IENIQVJfQVNURVJJU0spIHtcbiAgICAgIGlmIChwcmV2ID09PSBDSEFSX0FTVEVSSVNLKSBpc0dsb2JzdGFyID0gdG9rZW4uaXNHbG9ic3RhciA9IHRydWU7XG4gICAgICBpc0dsb2IgPSB0b2tlbi5pc0dsb2IgPSB0cnVlO1xuICAgICAgZmluaXNoZWQgPSB0cnVlO1xuXG4gICAgICBpZiAoc2NhblRvRW5kID09PSB0cnVlKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPT09IENIQVJfUVVFU1RJT05fTUFSSykge1xuICAgICAgaXNHbG9iID0gdG9rZW4uaXNHbG9iID0gdHJ1ZTtcbiAgICAgIGZpbmlzaGVkID0gdHJ1ZTtcblxuICAgICAgaWYgKHNjYW5Ub0VuZCA9PT0gdHJ1ZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChjb2RlID09PSBDSEFSX0xFRlRfU1FVQVJFX0JSQUNLRVQpIHtcbiAgICAgIHdoaWxlIChlb3MoKSAhPT0gdHJ1ZSAmJiAobmV4dCA9IGFkdmFuY2UoKSkpIHtcbiAgICAgICAgaWYgKG5leHQgPT09IENIQVJfQkFDS1dBUkRfU0xBU0gpIHtcbiAgICAgICAgICBiYWNrc2xhc2hlcyA9IHRva2VuLmJhY2tzbGFzaGVzID0gdHJ1ZTtcbiAgICAgICAgICBhZHZhbmNlKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV4dCA9PT0gQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVCkge1xuICAgICAgICAgIGlzQnJhY2tldCA9IHRva2VuLmlzQnJhY2tldCA9IHRydWU7XG4gICAgICAgICAgaXNHbG9iID0gdG9rZW4uaXNHbG9iID0gdHJ1ZTtcbiAgICAgICAgICBmaW5pc2hlZCA9IHRydWU7XG5cbiAgICAgICAgICBpZiAoc2NhblRvRW5kID09PSB0cnVlKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3B0cy5ub25lZ2F0ZSAhPT0gdHJ1ZSAmJiBjb2RlID09PSBDSEFSX0VYQ0xBTUFUSU9OX01BUksgJiYgaW5kZXggPT09IHN0YXJ0KSB7XG4gICAgICBuZWdhdGVkID0gdG9rZW4ubmVnYXRlZCA9IHRydWU7XG4gICAgICBzdGFydCsrO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKG9wdHMubm9wYXJlbiAhPT0gdHJ1ZSAmJiBjb2RlID09PSBDSEFSX0xFRlRfUEFSRU5USEVTRVMpIHtcbiAgICAgIGlzR2xvYiA9IHRva2VuLmlzR2xvYiA9IHRydWU7XG5cbiAgICAgIGlmIChzY2FuVG9FbmQgPT09IHRydWUpIHtcbiAgICAgICAgd2hpbGUgKGVvcygpICE9PSB0cnVlICYmIChjb2RlID0gYWR2YW5jZSgpKSkge1xuICAgICAgICAgIGlmIChjb2RlID09PSBDSEFSX0xFRlRfUEFSRU5USEVTRVMpIHtcbiAgICAgICAgICAgIGJhY2tzbGFzaGVzID0gdG9rZW4uYmFja3NsYXNoZXMgPSB0cnVlO1xuICAgICAgICAgICAgY29kZSA9IGFkdmFuY2UoKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjb2RlID09PSBDSEFSX1JJR0hUX1BBUkVOVEhFU0VTKSB7XG4gICAgICAgICAgICBmaW5pc2hlZCA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoaXNHbG9iID09PSB0cnVlKSB7XG4gICAgICBmaW5pc2hlZCA9IHRydWU7XG5cbiAgICAgIGlmIChzY2FuVG9FbmQgPT09IHRydWUpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRzLm5vZXh0ID09PSB0cnVlKSB7XG4gICAgaXNFeHRnbG9iID0gZmFsc2U7XG4gICAgaXNHbG9iID0gZmFsc2U7XG4gIH1cblxuICBsZXQgYmFzZSA9IHN0cjtcbiAgbGV0IHByZWZpeCA9ICcnO1xuICBsZXQgZ2xvYiA9ICcnO1xuXG4gIGlmIChzdGFydCA+IDApIHtcbiAgICBwcmVmaXggPSBzdHIuc2xpY2UoMCwgc3RhcnQpO1xuICAgIHN0ciA9IHN0ci5zbGljZShzdGFydCk7XG4gICAgbGFzdEluZGV4IC09IHN0YXJ0O1xuICB9XG5cbiAgaWYgKGJhc2UgJiYgaXNHbG9iID09PSB0cnVlICYmIGxhc3RJbmRleCA+IDApIHtcbiAgICBiYXNlID0gc3RyLnNsaWNlKDAsIGxhc3RJbmRleCk7XG4gICAgZ2xvYiA9IHN0ci5zbGljZShsYXN0SW5kZXgpO1xuICB9IGVsc2UgaWYgKGlzR2xvYiA9PT0gdHJ1ZSkge1xuICAgIGJhc2UgPSAnJztcbiAgICBnbG9iID0gc3RyO1xuICB9IGVsc2Uge1xuICAgIGJhc2UgPSBzdHI7XG4gIH1cblxuICBpZiAoYmFzZSAmJiBiYXNlICE9PSAnJyAmJiBiYXNlICE9PSAnLycgJiYgYmFzZSAhPT0gc3RyKSB7XG4gICAgaWYgKGlzUGF0aFNlcGFyYXRvcihiYXNlLmNoYXJDb2RlQXQoYmFzZS5sZW5ndGggLSAxKSkpIHtcbiAgICAgIGJhc2UgPSBiYXNlLnNsaWNlKDAsIC0xKTtcbiAgICB9XG4gIH1cblxuICBpZiAob3B0cy51bmVzY2FwZSA9PT0gdHJ1ZSkge1xuICAgIGlmIChnbG9iKSBnbG9iID0gdXRpbHMucmVtb3ZlQmFja3NsYXNoZXMoZ2xvYik7XG5cbiAgICBpZiAoYmFzZSAmJiBiYWNrc2xhc2hlcyA9PT0gdHJ1ZSkge1xuICAgICAgYmFzZSA9IHV0aWxzLnJlbW92ZUJhY2tzbGFzaGVzKGJhc2UpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHN0YXRlID0ge1xuICAgIHByZWZpeCxcbiAgICBpbnB1dCxcbiAgICBzdGFydCxcbiAgICBiYXNlLFxuICAgIGdsb2IsXG4gICAgaXNCcmFjZSxcbiAgICBpc0JyYWNrZXQsXG4gICAgaXNHbG9iLFxuICAgIGlzRXh0Z2xvYixcbiAgICBpc0dsb2JzdGFyLFxuICAgIG5lZ2F0ZWRcbiAgfTtcblxuICBpZiAob3B0cy50b2tlbnMgPT09IHRydWUpIHtcbiAgICBzdGF0ZS5tYXhEZXB0aCA9IDA7XG4gICAgaWYgKCFpc1BhdGhTZXBhcmF0b3IoY29kZSkpIHtcbiAgICAgIHRva2Vucy5wdXNoKHRva2VuKTtcbiAgICB9XG4gICAgc3RhdGUudG9rZW5zID0gdG9rZW5zO1xuICB9XG5cbiAgaWYgKG9wdHMucGFydHMgPT09IHRydWUgfHwgb3B0cy50b2tlbnMgPT09IHRydWUpIHtcbiAgICBsZXQgcHJldkluZGV4O1xuXG4gICAgZm9yIChsZXQgaWR4ID0gMDsgaWR4IDwgc2xhc2hlcy5sZW5ndGg7IGlkeCsrKSB7XG4gICAgICBjb25zdCBuID0gcHJldkluZGV4ID8gcHJldkluZGV4ICsgMSA6IHN0YXJ0O1xuICAgICAgY29uc3QgaSA9IHNsYXNoZXNbaWR4XTtcbiAgICAgIGNvbnN0IHZhbHVlID0gaW5wdXQuc2xpY2UobiwgaSk7XG4gICAgICBpZiAob3B0cy50b2tlbnMpIHtcbiAgICAgICAgaWYgKGlkeCA9PT0gMCAmJiBzdGFydCAhPT0gMCkge1xuICAgICAgICAgIHRva2Vuc1tpZHhdLmlzUHJlZml4ID0gdHJ1ZTtcbiAgICAgICAgICB0b2tlbnNbaWR4XS52YWx1ZSA9IHByZWZpeDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0b2tlbnNbaWR4XS52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGRlcHRoKHRva2Vuc1tpZHhdKTtcbiAgICAgICAgc3RhdGUubWF4RGVwdGggKz0gdG9rZW5zW2lkeF0uZGVwdGg7XG4gICAgICB9XG4gICAgICBpZiAoaWR4ICE9PSAwIHx8IHZhbHVlICE9PSAnJykge1xuICAgICAgICBwYXJ0cy5wdXNoKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHByZXZJbmRleCA9IGk7XG4gICAgfVxuXG4gICAgaWYgKHByZXZJbmRleCAmJiBwcmV2SW5kZXggKyAxIDwgaW5wdXQubGVuZ3RoKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGlucHV0LnNsaWNlKHByZXZJbmRleCArIDEpO1xuICAgICAgcGFydHMucHVzaCh2YWx1ZSk7XG5cbiAgICAgIGlmIChvcHRzLnRva2Vucykge1xuICAgICAgICB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIGRlcHRoKHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV0pO1xuICAgICAgICBzdGF0ZS5tYXhEZXB0aCArPSB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdLmRlcHRoO1xuICAgICAgfVxuICAgIH1cblxuICAgIHN0YXRlLnNsYXNoZXMgPSBzbGFzaGVzO1xuICAgIHN0YXRlLnBhcnRzID0gcGFydHM7XG4gIH1cblxuICByZXR1cm4gc3RhdGU7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNjYW47XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbnN0YW50cyA9IHJlcXVpcmUoJy4vY29uc3RhbnRzJyk7XG5jb25zdCB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcblxuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCB7XG4gIE1BWF9MRU5HVEgsXG4gIFBPU0lYX1JFR0VYX1NPVVJDRSxcbiAgUkVHRVhfTk9OX1NQRUNJQUxfQ0hBUlMsXG4gIFJFR0VYX1NQRUNJQUxfQ0hBUlNfQkFDS1JFRixcbiAgUkVQTEFDRU1FTlRTXG59ID0gY29uc3RhbnRzO1xuXG4vKipcbiAqIEhlbHBlcnNcbiAqL1xuXG5jb25zdCBleHBhbmRSYW5nZSA9IChhcmdzLCBvcHRpb25zKSA9PiB7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5leHBhbmRSYW5nZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBvcHRpb25zLmV4cGFuZFJhbmdlKC4uLmFyZ3MsIG9wdGlvbnMpO1xuICB9XG5cbiAgYXJncy5zb3J0KCk7XG4gIGNvbnN0IHZhbHVlID0gYFske2FyZ3Muam9pbignLScpfV1gO1xuXG4gIHRyeSB7XG4gICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldyAqL1xuICAgIG5ldyBSZWdFeHAodmFsdWUpO1xuICB9IGNhdGNoIChleCkge1xuICAgIHJldHVybiBhcmdzLm1hcCh2ID0+IHV0aWxzLmVzY2FwZVJlZ2V4KHYpKS5qb2luKCcuLicpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgdGhlIG1lc3NhZ2UgZm9yIGEgc3ludGF4IGVycm9yXG4gKi9cblxuY29uc3Qgc3ludGF4RXJyb3IgPSAodHlwZSwgY2hhcikgPT4ge1xuICByZXR1cm4gYE1pc3NpbmcgJHt0eXBlfTogXCIke2NoYXJ9XCIgLSB1c2UgXCJcXFxcXFxcXCR7Y2hhcn1cIiB0byBtYXRjaCBsaXRlcmFsIGNoYXJhY3RlcnNgO1xufTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgZ2l2ZW4gaW5wdXQgc3RyaW5nLlxuICogQHBhcmFtIHtTdHJpbmd9IGlucHV0XG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICogQHJldHVybiB7T2JqZWN0fVxuICovXG5cbmNvbnN0IHBhcnNlID0gKGlucHV0LCBvcHRpb25zKSA9PiB7XG4gIGlmICh0eXBlb2YgaW5wdXQgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgYSBzdHJpbmcnKTtcbiAgfVxuXG4gIGlucHV0ID0gUkVQTEFDRU1FTlRTW2lucHV0XSB8fCBpbnB1dDtcblxuICBjb25zdCBvcHRzID0geyAuLi5vcHRpb25zIH07XG4gIGNvbnN0IG1heCA9IHR5cGVvZiBvcHRzLm1heExlbmd0aCA9PT0gJ251bWJlcicgPyBNYXRoLm1pbihNQVhfTEVOR1RILCBvcHRzLm1heExlbmd0aCkgOiBNQVhfTEVOR1RIO1xuXG4gIGxldCBsZW4gPSBpbnB1dC5sZW5ndGg7XG4gIGlmIChsZW4gPiBtYXgpIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYElucHV0IGxlbmd0aDogJHtsZW59LCBleGNlZWRzIG1heGltdW0gYWxsb3dlZCBsZW5ndGg6ICR7bWF4fWApO1xuICB9XG5cbiAgY29uc3QgYm9zID0geyB0eXBlOiAnYm9zJywgdmFsdWU6ICcnLCBvdXRwdXQ6IG9wdHMucHJlcGVuZCB8fCAnJyB9O1xuICBjb25zdCB0b2tlbnMgPSBbYm9zXTtcblxuICBjb25zdCBjYXB0dXJlID0gb3B0cy5jYXB0dXJlID8gJycgOiAnPzonO1xuICBjb25zdCB3aW4zMiA9IHV0aWxzLmlzV2luZG93cyhvcHRpb25zKTtcblxuICAvLyBjcmVhdGUgY29uc3RhbnRzIGJhc2VkIG9uIHBsYXRmb3JtLCBmb3Igd2luZG93cyBvciBwb3NpeFxuICBjb25zdCBQTEFURk9STV9DSEFSUyA9IGNvbnN0YW50cy5nbG9iQ2hhcnMod2luMzIpO1xuICBjb25zdCBFWFRHTE9CX0NIQVJTID0gY29uc3RhbnRzLmV4dGdsb2JDaGFycyhQTEFURk9STV9DSEFSUyk7XG5cbiAgY29uc3Qge1xuICAgIERPVF9MSVRFUkFMLFxuICAgIFBMVVNfTElURVJBTCxcbiAgICBTTEFTSF9MSVRFUkFMLFxuICAgIE9ORV9DSEFSLFxuICAgIERPVFNfU0xBU0gsXG4gICAgTk9fRE9ULFxuICAgIE5PX0RPVF9TTEFTSCxcbiAgICBOT19ET1RTX1NMQVNILFxuICAgIFFNQVJLLFxuICAgIFFNQVJLX05PX0RPVCxcbiAgICBTVEFSLFxuICAgIFNUQVJUX0FOQ0hPUlxuICB9ID0gUExBVEZPUk1fQ0hBUlM7XG5cbiAgY29uc3QgZ2xvYnN0YXIgPSAob3B0cykgPT4ge1xuICAgIHJldHVybiBgKCR7Y2FwdHVyZX0oPzooPyEke1NUQVJUX0FOQ0hPUn0ke29wdHMuZG90ID8gRE9UU19TTEFTSCA6IERPVF9MSVRFUkFMfSkuKSo/KWA7XG4gIH07XG5cbiAgY29uc3Qgbm9kb3QgPSBvcHRzLmRvdCA/ICcnIDogTk9fRE9UO1xuICBjb25zdCBxbWFya05vRG90ID0gb3B0cy5kb3QgPyBRTUFSSyA6IFFNQVJLX05PX0RPVDtcbiAgbGV0IHN0YXIgPSBvcHRzLmJhc2ggPT09IHRydWUgPyBnbG9ic3RhcihvcHRzKSA6IFNUQVI7XG5cbiAgaWYgKG9wdHMuY2FwdHVyZSkge1xuICAgIHN0YXIgPSBgKCR7c3Rhcn0pYDtcbiAgfVxuXG4gIC8vIG1pbmltYXRjaCBvcHRpb25zIHN1cHBvcnRcbiAgaWYgKHR5cGVvZiBvcHRzLm5vZXh0ID09PSAnYm9vbGVhbicpIHtcbiAgICBvcHRzLm5vZXh0Z2xvYiA9IG9wdHMubm9leHQ7XG4gIH1cblxuICBjb25zdCBzdGF0ZSA9IHtcbiAgICBpbnB1dCxcbiAgICBpbmRleDogLTEsXG4gICAgc3RhcnQ6IDAsXG4gICAgZG90OiBvcHRzLmRvdCA9PT0gdHJ1ZSxcbiAgICBjb25zdW1lZDogJycsXG4gICAgb3V0cHV0OiAnJyxcbiAgICBwcmVmaXg6ICcnLFxuICAgIGJhY2t0cmFjazogZmFsc2UsXG4gICAgbmVnYXRlZDogZmFsc2UsXG4gICAgYnJhY2tldHM6IDAsXG4gICAgYnJhY2VzOiAwLFxuICAgIHBhcmVuczogMCxcbiAgICBxdW90ZXM6IDAsXG4gICAgZ2xvYnN0YXI6IGZhbHNlLFxuICAgIHRva2Vuc1xuICB9O1xuXG4gIGlucHV0ID0gdXRpbHMucmVtb3ZlUHJlZml4KGlucHV0LCBzdGF0ZSk7XG4gIGxlbiA9IGlucHV0Lmxlbmd0aDtcblxuICBjb25zdCBleHRnbG9icyA9IFtdO1xuICBjb25zdCBicmFjZXMgPSBbXTtcbiAgY29uc3Qgc3RhY2sgPSBbXTtcbiAgbGV0IHByZXYgPSBib3M7XG4gIGxldCB2YWx1ZTtcblxuICAvKipcbiAgICogVG9rZW5pemluZyBoZWxwZXJzXG4gICAqL1xuXG4gIGNvbnN0IGVvcyA9ICgpID0+IHN0YXRlLmluZGV4ID09PSBsZW4gLSAxO1xuICBjb25zdCBwZWVrID0gc3RhdGUucGVlayA9IChuID0gMSkgPT4gaW5wdXRbc3RhdGUuaW5kZXggKyBuXTtcbiAgY29uc3QgYWR2YW5jZSA9IHN0YXRlLmFkdmFuY2UgPSAoKSA9PiBpbnB1dFsrK3N0YXRlLmluZGV4XTtcbiAgY29uc3QgcmVtYWluaW5nID0gKCkgPT4gaW5wdXQuc2xpY2Uoc3RhdGUuaW5kZXggKyAxKTtcbiAgY29uc3QgY29uc3VtZSA9ICh2YWx1ZSA9ICcnLCBudW0gPSAwKSA9PiB7XG4gICAgc3RhdGUuY29uc3VtZWQgKz0gdmFsdWU7XG4gICAgc3RhdGUuaW5kZXggKz0gbnVtO1xuICB9O1xuICBjb25zdCBhcHBlbmQgPSB0b2tlbiA9PiB7XG4gICAgc3RhdGUub3V0cHV0ICs9IHRva2VuLm91dHB1dCAhPSBudWxsID8gdG9rZW4ub3V0cHV0IDogdG9rZW4udmFsdWU7XG4gICAgY29uc3VtZSh0b2tlbi52YWx1ZSk7XG4gIH07XG5cbiAgY29uc3QgbmVnYXRlID0gKCkgPT4ge1xuICAgIGxldCBjb3VudCA9IDE7XG5cbiAgICB3aGlsZSAocGVlaygpID09PSAnIScgJiYgKHBlZWsoMikgIT09ICcoJyB8fCBwZWVrKDMpID09PSAnPycpKSB7XG4gICAgICBhZHZhbmNlKCk7XG4gICAgICBzdGF0ZS5zdGFydCsrO1xuICAgICAgY291bnQrKztcbiAgICB9XG5cbiAgICBpZiAoY291bnQgJSAyID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgc3RhdGUubmVnYXRlZCA9IHRydWU7XG4gICAgc3RhdGUuc3RhcnQrKztcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcblxuICBjb25zdCBpbmNyZW1lbnQgPSB0eXBlID0+IHtcbiAgICBzdGF0ZVt0eXBlXSsrO1xuICAgIHN0YWNrLnB1c2godHlwZSk7XG4gIH07XG5cbiAgY29uc3QgZGVjcmVtZW50ID0gdHlwZSA9PiB7XG4gICAgc3RhdGVbdHlwZV0tLTtcbiAgICBzdGFjay5wb3AoKTtcbiAgfTtcblxuICAvKipcbiAgICogUHVzaCB0b2tlbnMgb250byB0aGUgdG9rZW5zIGFycmF5LiBUaGlzIGhlbHBlciBzcGVlZHMgdXBcbiAgICogdG9rZW5pemluZyBieSAxKSBoZWxwaW5nIHVzIGF2b2lkIGJhY2t0cmFja2luZyBhcyBtdWNoIGFzIHBvc3NpYmxlLFxuICAgKiBhbmQgMikgaGVscGluZyB1cyBhdm9pZCBjcmVhdGluZyBleHRyYSB0b2tlbnMgd2hlbiBjb25zZWN1dGl2ZVxuICAgKiBjaGFyYWN0ZXJzIGFyZSBwbGFpbiB0ZXh0LiBUaGlzIGltcHJvdmVzIHBlcmZvcm1hbmNlIGFuZCBzaW1wbGlmaWVzXG4gICAqIGxvb2tiZWhpbmRzLlxuICAgKi9cblxuICBjb25zdCBwdXNoID0gdG9rID0+IHtcbiAgICBpZiAocHJldi50eXBlID09PSAnZ2xvYnN0YXInKSB7XG4gICAgICBjb25zdCBpc0JyYWNlID0gc3RhdGUuYnJhY2VzID4gMCAmJiAodG9rLnR5cGUgPT09ICdjb21tYScgfHwgdG9rLnR5cGUgPT09ICdicmFjZScpO1xuICAgICAgY29uc3QgaXNFeHRnbG9iID0gdG9rLmV4dGdsb2IgPT09IHRydWUgfHwgKGV4dGdsb2JzLmxlbmd0aCAmJiAodG9rLnR5cGUgPT09ICdwaXBlJyB8fCB0b2sudHlwZSA9PT0gJ3BhcmVuJykpO1xuXG4gICAgICBpZiAodG9rLnR5cGUgIT09ICdzbGFzaCcgJiYgdG9rLnR5cGUgIT09ICdwYXJlbicgJiYgIWlzQnJhY2UgJiYgIWlzRXh0Z2xvYikge1xuICAgICAgICBzdGF0ZS5vdXRwdXQgPSBzdGF0ZS5vdXRwdXQuc2xpY2UoMCwgLXByZXYub3V0cHV0Lmxlbmd0aCk7XG4gICAgICAgIHByZXYudHlwZSA9ICdzdGFyJztcbiAgICAgICAgcHJldi52YWx1ZSA9ICcqJztcbiAgICAgICAgcHJldi5vdXRwdXQgPSBzdGFyO1xuICAgICAgICBzdGF0ZS5vdXRwdXQgKz0gcHJldi5vdXRwdXQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGV4dGdsb2JzLmxlbmd0aCAmJiB0b2sudHlwZSAhPT0gJ3BhcmVuJyAmJiAhRVhUR0xPQl9DSEFSU1t0b2sudmFsdWVdKSB7XG4gICAgICBleHRnbG9ic1tleHRnbG9icy5sZW5ndGggLSAxXS5pbm5lciArPSB0b2sudmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHRvay52YWx1ZSB8fCB0b2sub3V0cHV0KSBhcHBlbmQodG9rKTtcbiAgICBpZiAocHJldiAmJiBwcmV2LnR5cGUgPT09ICd0ZXh0JyAmJiB0b2sudHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICBwcmV2LnZhbHVlICs9IHRvay52YWx1ZTtcbiAgICAgIHByZXYub3V0cHV0ID0gKHByZXYub3V0cHV0IHx8ICcnKSArIHRvay52YWx1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0b2sucHJldiA9IHByZXY7XG4gICAgdG9rZW5zLnB1c2godG9rKTtcbiAgICBwcmV2ID0gdG9rO1xuICB9O1xuXG4gIGNvbnN0IGV4dGdsb2JPcGVuID0gKHR5cGUsIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgdG9rZW4gPSB7IC4uLkVYVEdMT0JfQ0hBUlNbdmFsdWVdLCBjb25kaXRpb25zOiAxLCBpbm5lcjogJycgfTtcblxuICAgIHRva2VuLnByZXYgPSBwcmV2O1xuICAgIHRva2VuLnBhcmVucyA9IHN0YXRlLnBhcmVucztcbiAgICB0b2tlbi5vdXRwdXQgPSBzdGF0ZS5vdXRwdXQ7XG4gICAgY29uc3Qgb3V0cHV0ID0gKG9wdHMuY2FwdHVyZSA/ICcoJyA6ICcnKSArIHRva2VuLm9wZW47XG5cbiAgICBpbmNyZW1lbnQoJ3BhcmVucycpO1xuICAgIHB1c2goeyB0eXBlLCB2YWx1ZSwgb3V0cHV0OiBzdGF0ZS5vdXRwdXQgPyAnJyA6IE9ORV9DSEFSIH0pO1xuICAgIHB1c2goeyB0eXBlOiAncGFyZW4nLCBleHRnbG9iOiB0cnVlLCB2YWx1ZTogYWR2YW5jZSgpLCBvdXRwdXQgfSk7XG4gICAgZXh0Z2xvYnMucHVzaCh0b2tlbik7XG4gIH07XG5cbiAgY29uc3QgZXh0Z2xvYkNsb3NlID0gdG9rZW4gPT4ge1xuICAgIGxldCBvdXRwdXQgPSB0b2tlbi5jbG9zZSArIChvcHRzLmNhcHR1cmUgPyAnKScgOiAnJyk7XG5cbiAgICBpZiAodG9rZW4udHlwZSA9PT0gJ25lZ2F0ZScpIHtcbiAgICAgIGxldCBleHRnbG9iU3RhciA9IHN0YXI7XG5cbiAgICAgIGlmICh0b2tlbi5pbm5lciAmJiB0b2tlbi5pbm5lci5sZW5ndGggPiAxICYmIHRva2VuLmlubmVyLmluY2x1ZGVzKCcvJykpIHtcbiAgICAgICAgZXh0Z2xvYlN0YXIgPSBnbG9ic3RhcihvcHRzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGV4dGdsb2JTdGFyICE9PSBzdGFyIHx8IGVvcygpIHx8IC9eXFwpKyQvLnRlc3QocmVtYWluaW5nKCkpKSB7XG4gICAgICAgIG91dHB1dCA9IHRva2VuLmNsb3NlID0gYCkkKSkke2V4dGdsb2JTdGFyfWA7XG4gICAgICB9XG5cbiAgICAgIGlmICh0b2tlbi5wcmV2LnR5cGUgPT09ICdib3MnICYmIGVvcygpKSB7XG4gICAgICAgIHN0YXRlLm5lZ2F0ZWRFeHRnbG9iID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwdXNoKHsgdHlwZTogJ3BhcmVuJywgZXh0Z2xvYjogdHJ1ZSwgdmFsdWUsIG91dHB1dCB9KTtcbiAgICBkZWNyZW1lbnQoJ3BhcmVucycpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBGYXN0IHBhdGhzXG4gICAqL1xuXG4gIGlmIChvcHRzLmZhc3RwYXRocyAhPT0gZmFsc2UgJiYgIS8oXlsqIV18Wy8oKVtcXF17fVwiXSkvLnRlc3QoaW5wdXQpKSB7XG4gICAgbGV0IGJhY2tzbGFzaGVzID0gZmFsc2U7XG5cbiAgICBsZXQgb3V0cHV0ID0gaW5wdXQucmVwbGFjZShSRUdFWF9TUEVDSUFMX0NIQVJTX0JBQ0tSRUYsIChtLCBlc2MsIGNoYXJzLCBmaXJzdCwgcmVzdCwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChmaXJzdCA9PT0gJ1xcXFwnKSB7XG4gICAgICAgIGJhY2tzbGFzaGVzID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgICB9XG5cbiAgICAgIGlmIChmaXJzdCA9PT0gJz8nKSB7XG4gICAgICAgIGlmIChlc2MpIHtcbiAgICAgICAgICByZXR1cm4gZXNjICsgZmlyc3QgKyAocmVzdCA/IFFNQVJLLnJlcGVhdChyZXN0Lmxlbmd0aCkgOiAnJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIHFtYXJrTm9Eb3QgKyAocmVzdCA/IFFNQVJLLnJlcGVhdChyZXN0Lmxlbmd0aCkgOiAnJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFFNQVJLLnJlcGVhdChjaGFycy5sZW5ndGgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZmlyc3QgPT09ICcuJykge1xuICAgICAgICByZXR1cm4gRE9UX0xJVEVSQUwucmVwZWF0KGNoYXJzLmxlbmd0aCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChmaXJzdCA9PT0gJyonKSB7XG4gICAgICAgIGlmIChlc2MpIHtcbiAgICAgICAgICByZXR1cm4gZXNjICsgZmlyc3QgKyAocmVzdCA/IHN0YXIgOiAnJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0YXI7XG4gICAgICB9XG4gICAgICByZXR1cm4gZXNjID8gbSA6IGBcXFxcJHttfWA7XG4gICAgfSk7XG5cbiAgICBpZiAoYmFja3NsYXNoZXMgPT09IHRydWUpIHtcbiAgICAgIGlmIChvcHRzLnVuZXNjYXBlID09PSB0cnVlKSB7XG4gICAgICAgIG91dHB1dCA9IG91dHB1dC5yZXBsYWNlKC9cXFxcL2csICcnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dHB1dCA9IG91dHB1dC5yZXBsYWNlKC9cXFxcKy9nLCBtID0+IHtcbiAgICAgICAgICByZXR1cm4gbS5sZW5ndGggJSAyID09PSAwID8gJ1xcXFxcXFxcJyA6IChtID8gJ1xcXFwnIDogJycpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3V0cHV0ID09PSBpbnB1dCAmJiBvcHRzLmNvbnRhaW5zID09PSB0cnVlKSB7XG4gICAgICBzdGF0ZS5vdXRwdXQgPSBpbnB1dDtcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9XG5cbiAgICBzdGF0ZS5vdXRwdXQgPSB1dGlscy53cmFwT3V0cHV0KG91dHB1dCwgc3RhdGUsIG9wdGlvbnMpO1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2tlbml6ZSBpbnB1dCB1bnRpbCB3ZSByZWFjaCBlbmQtb2Ytc3RyaW5nXG4gICAqL1xuXG4gIHdoaWxlICghZW9zKCkpIHtcbiAgICB2YWx1ZSA9IGFkdmFuY2UoKTtcblxuICAgIGlmICh2YWx1ZSA9PT0gJ1xcdTAwMDAnKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFc2NhcGVkIGNoYXJhY3RlcnNcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gJ1xcXFwnKSB7XG4gICAgICBjb25zdCBuZXh0ID0gcGVlaygpO1xuXG4gICAgICBpZiAobmV4dCA9PT0gJy8nICYmIG9wdHMuYmFzaCAhPT0gdHJ1ZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG5leHQgPT09ICcuJyB8fCBuZXh0ID09PSAnOycpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICghbmV4dCkge1xuICAgICAgICB2YWx1ZSArPSAnXFxcXCc7XG4gICAgICAgIHB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLy8gY29sbGFwc2Ugc2xhc2hlcyB0byByZWR1Y2UgcG90ZW50aWFsIGZvciBleHBsb2l0c1xuICAgICAgY29uc3QgbWF0Y2ggPSAvXlxcXFwrLy5leGVjKHJlbWFpbmluZygpKTtcbiAgICAgIGxldCBzbGFzaGVzID0gMDtcblxuICAgICAgaWYgKG1hdGNoICYmIG1hdGNoWzBdLmxlbmd0aCA+IDIpIHtcbiAgICAgICAgc2xhc2hlcyA9IG1hdGNoWzBdLmxlbmd0aDtcbiAgICAgICAgc3RhdGUuaW5kZXggKz0gc2xhc2hlcztcbiAgICAgICAgaWYgKHNsYXNoZXMgJSAyICE9PSAwKSB7XG4gICAgICAgICAgdmFsdWUgKz0gJ1xcXFwnO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRzLnVuZXNjYXBlID09PSB0cnVlKSB7XG4gICAgICAgIHZhbHVlID0gYWR2YW5jZSgpIHx8ICcnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsdWUgKz0gYWR2YW5jZSgpIHx8ICcnO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGUuYnJhY2tldHMgPT09IDApIHtcbiAgICAgICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWUgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElmIHdlJ3JlIGluc2lkZSBhIHJlZ2V4IGNoYXJhY3RlciBjbGFzcywgY29udGludWVcbiAgICAgKiB1bnRpbCB3ZSByZWFjaCB0aGUgY2xvc2luZyBicmFja2V0LlxuICAgICAqL1xuXG4gICAgaWYgKHN0YXRlLmJyYWNrZXRzID4gMCAmJiAodmFsdWUgIT09ICddJyB8fCBwcmV2LnZhbHVlID09PSAnWycgfHwgcHJldi52YWx1ZSA9PT0gJ1teJykpIHtcbiAgICAgIGlmIChvcHRzLnBvc2l4ICE9PSBmYWxzZSAmJiB2YWx1ZSA9PT0gJzonKSB7XG4gICAgICAgIGNvbnN0IGlubmVyID0gcHJldi52YWx1ZS5zbGljZSgxKTtcbiAgICAgICAgaWYgKGlubmVyLmluY2x1ZGVzKCdbJykpIHtcbiAgICAgICAgICBwcmV2LnBvc2l4ID0gdHJ1ZTtcblxuICAgICAgICAgIGlmIChpbm5lci5pbmNsdWRlcygnOicpKSB7XG4gICAgICAgICAgICBjb25zdCBpZHggPSBwcmV2LnZhbHVlLmxhc3RJbmRleE9mKCdbJyk7XG4gICAgICAgICAgICBjb25zdCBwcmUgPSBwcmV2LnZhbHVlLnNsaWNlKDAsIGlkeCk7XG4gICAgICAgICAgICBjb25zdCByZXN0ID0gcHJldi52YWx1ZS5zbGljZShpZHggKyAyKTtcbiAgICAgICAgICAgIGNvbnN0IHBvc2l4ID0gUE9TSVhfUkVHRVhfU09VUkNFW3Jlc3RdO1xuICAgICAgICAgICAgaWYgKHBvc2l4KSB7XG4gICAgICAgICAgICAgIHByZXYudmFsdWUgPSBwcmUgKyBwb3NpeDtcbiAgICAgICAgICAgICAgc3RhdGUuYmFja3RyYWNrID0gdHJ1ZTtcbiAgICAgICAgICAgICAgYWR2YW5jZSgpO1xuXG4gICAgICAgICAgICAgIGlmICghYm9zLm91dHB1dCAmJiB0b2tlbnMuaW5kZXhPZihwcmV2KSA9PT0gMSkge1xuICAgICAgICAgICAgICAgIGJvcy5vdXRwdXQgPSBPTkVfQ0hBUjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCh2YWx1ZSA9PT0gJ1snICYmIHBlZWsoKSAhPT0gJzonKSB8fCAodmFsdWUgPT09ICctJyAmJiBwZWVrKCkgPT09ICddJykpIHtcbiAgICAgICAgdmFsdWUgPSBgXFxcXCR7dmFsdWV9YDtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbHVlID09PSAnXScgJiYgKHByZXYudmFsdWUgPT09ICdbJyB8fCBwcmV2LnZhbHVlID09PSAnW14nKSkge1xuICAgICAgICB2YWx1ZSA9IGBcXFxcJHt2YWx1ZX1gO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0cy5wb3NpeCA9PT0gdHJ1ZSAmJiB2YWx1ZSA9PT0gJyEnICYmIHByZXYudmFsdWUgPT09ICdbJykge1xuICAgICAgICB2YWx1ZSA9ICdeJztcbiAgICAgIH1cblxuICAgICAgcHJldi52YWx1ZSArPSB2YWx1ZTtcbiAgICAgIGFwcGVuZCh7IHZhbHVlIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSWYgd2UncmUgaW5zaWRlIGEgcXVvdGVkIHN0cmluZywgY29udGludWVcbiAgICAgKiB1bnRpbCB3ZSByZWFjaCB0aGUgY2xvc2luZyBkb3VibGUgcXVvdGUuXG4gICAgICovXG5cbiAgICBpZiAoc3RhdGUucXVvdGVzID09PSAxICYmIHZhbHVlICE9PSAnXCInKSB7XG4gICAgICB2YWx1ZSA9IHV0aWxzLmVzY2FwZVJlZ2V4KHZhbHVlKTtcbiAgICAgIHByZXYudmFsdWUgKz0gdmFsdWU7XG4gICAgICBhcHBlbmQoeyB2YWx1ZSB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERvdWJsZSBxdW90ZXNcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gJ1wiJykge1xuICAgICAgc3RhdGUucXVvdGVzID0gc3RhdGUucXVvdGVzID09PSAxID8gMCA6IDE7XG4gICAgICBpZiAob3B0cy5rZWVwUXVvdGVzID09PSB0cnVlKSB7XG4gICAgICAgIHB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlIH0pO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFyZW50aGVzZXNcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gJygnKSB7XG4gICAgICBpbmNyZW1lbnQoJ3BhcmVucycpO1xuICAgICAgcHVzaCh7IHR5cGU6ICdwYXJlbicsIHZhbHVlIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlID09PSAnKScpIHtcbiAgICAgIGlmIChzdGF0ZS5wYXJlbnMgPT09IDAgJiYgb3B0cy5zdHJpY3RCcmFja2V0cyA9PT0gdHJ1ZSkge1xuICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3Ioc3ludGF4RXJyb3IoJ29wZW5pbmcnLCAnKCcpKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZXh0Z2xvYiA9IGV4dGdsb2JzW2V4dGdsb2JzLmxlbmd0aCAtIDFdO1xuICAgICAgaWYgKGV4dGdsb2IgJiYgc3RhdGUucGFyZW5zID09PSBleHRnbG9iLnBhcmVucyArIDEpIHtcbiAgICAgICAgZXh0Z2xvYkNsb3NlKGV4dGdsb2JzLnBvcCgpKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHB1c2goeyB0eXBlOiAncGFyZW4nLCB2YWx1ZSwgb3V0cHV0OiBzdGF0ZS5wYXJlbnMgPyAnKScgOiAnXFxcXCknIH0pO1xuICAgICAgZGVjcmVtZW50KCdwYXJlbnMnKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNxdWFyZSBicmFja2V0c1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSAnWycpIHtcbiAgICAgIGlmIChvcHRzLm5vYnJhY2tldCA9PT0gdHJ1ZSB8fCAhcmVtYWluaW5nKCkuaW5jbHVkZXMoJ10nKSkge1xuICAgICAgICBpZiAob3B0cy5ub2JyYWNrZXQgIT09IHRydWUgJiYgb3B0cy5zdHJpY3RCcmFja2V0cyA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihzeW50YXhFcnJvcignY2xvc2luZycsICddJykpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFsdWUgPSBgXFxcXCR7dmFsdWV9YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluY3JlbWVudCgnYnJhY2tldHMnKTtcbiAgICAgIH1cblxuICAgICAgcHVzaCh7IHR5cGU6ICdicmFja2V0JywgdmFsdWUgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09ICddJykge1xuICAgICAgaWYgKG9wdHMubm9icmFja2V0ID09PSB0cnVlIHx8IChwcmV2ICYmIHByZXYudHlwZSA9PT0gJ2JyYWNrZXQnICYmIHByZXYudmFsdWUubGVuZ3RoID09PSAxKSkge1xuICAgICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZSwgb3V0cHV0OiBgXFxcXCR7dmFsdWV9YCB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0ZS5icmFja2V0cyA9PT0gMCkge1xuICAgICAgICBpZiAob3B0cy5zdHJpY3RCcmFja2V0cyA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihzeW50YXhFcnJvcignb3BlbmluZycsICdbJykpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWUsIG91dHB1dDogYFxcXFwke3ZhbHVlfWAgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBkZWNyZW1lbnQoJ2JyYWNrZXRzJyk7XG5cbiAgICAgIGNvbnN0IHByZXZWYWx1ZSA9IHByZXYudmFsdWUuc2xpY2UoMSk7XG4gICAgICBpZiAocHJldi5wb3NpeCAhPT0gdHJ1ZSAmJiBwcmV2VmFsdWVbMF0gPT09ICdeJyAmJiAhcHJldlZhbHVlLmluY2x1ZGVzKCcvJykpIHtcbiAgICAgICAgdmFsdWUgPSBgLyR7dmFsdWV9YDtcbiAgICAgIH1cblxuICAgICAgcHJldi52YWx1ZSArPSB2YWx1ZTtcbiAgICAgIGFwcGVuZCh7IHZhbHVlIH0pO1xuXG4gICAgICAvLyB3aGVuIGxpdGVyYWwgYnJhY2tldHMgYXJlIGV4cGxpY2l0bHkgZGlzYWJsZWRcbiAgICAgIC8vIGFzc3VtZSB3ZSBzaG91bGQgbWF0Y2ggd2l0aCBhIHJlZ2V4IGNoYXJhY3RlciBjbGFzc1xuICAgICAgaWYgKG9wdHMubGl0ZXJhbEJyYWNrZXRzID09PSBmYWxzZSB8fCB1dGlscy5oYXNSZWdleENoYXJzKHByZXZWYWx1ZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVzY2FwZWQgPSB1dGlscy5lc2NhcGVSZWdleChwcmV2LnZhbHVlKTtcbiAgICAgIHN0YXRlLm91dHB1dCA9IHN0YXRlLm91dHB1dC5zbGljZSgwLCAtcHJldi52YWx1ZS5sZW5ndGgpO1xuXG4gICAgICAvLyB3aGVuIGxpdGVyYWwgYnJhY2tldHMgYXJlIGV4cGxpY2l0bHkgZW5hYmxlZFxuICAgICAgLy8gYXNzdW1lIHdlIHNob3VsZCBlc2NhcGUgdGhlIGJyYWNrZXRzIHRvIG1hdGNoIGxpdGVyYWwgY2hhcmFjdGVyc1xuICAgICAgaWYgKG9wdHMubGl0ZXJhbEJyYWNrZXRzID09PSB0cnVlKSB7XG4gICAgICAgIHN0YXRlLm91dHB1dCArPSBlc2NhcGVkO1xuICAgICAgICBwcmV2LnZhbHVlID0gZXNjYXBlZDtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIHdoZW4gdGhlIHVzZXIgc3BlY2lmaWVzIG5vdGhpbmcsIHRyeSB0byBtYXRjaCBib3RoXG4gICAgICBwcmV2LnZhbHVlID0gYCgke2NhcHR1cmV9JHtlc2NhcGVkfXwke3ByZXYudmFsdWV9KWA7XG4gICAgICBzdGF0ZS5vdXRwdXQgKz0gcHJldi52YWx1ZTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEJyYWNlc1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSAneycgJiYgb3B0cy5ub2JyYWNlICE9PSB0cnVlKSB7XG4gICAgICBpbmNyZW1lbnQoJ2JyYWNlcycpO1xuXG4gICAgICBjb25zdCBvcGVuID0ge1xuICAgICAgICB0eXBlOiAnYnJhY2UnLFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgb3V0cHV0OiAnKCcsXG4gICAgICAgIG91dHB1dEluZGV4OiBzdGF0ZS5vdXRwdXQubGVuZ3RoLFxuICAgICAgICB0b2tlbnNJbmRleDogc3RhdGUudG9rZW5zLmxlbmd0aFxuICAgICAgfTtcblxuICAgICAgYnJhY2VzLnB1c2gob3Blbik7XG4gICAgICBwdXNoKG9wZW4pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlID09PSAnfScpIHtcbiAgICAgIGNvbnN0IGJyYWNlID0gYnJhY2VzW2JyYWNlcy5sZW5ndGggLSAxXTtcblxuICAgICAgaWYgKG9wdHMubm9icmFjZSA9PT0gdHJ1ZSB8fCAhYnJhY2UpIHtcbiAgICAgICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWUsIG91dHB1dDogdmFsdWUgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBsZXQgb3V0cHV0ID0gJyknO1xuXG4gICAgICBpZiAoYnJhY2UuZG90cyA9PT0gdHJ1ZSkge1xuICAgICAgICBjb25zdCBhcnIgPSB0b2tlbnMuc2xpY2UoKTtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBpID0gYXJyLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgdG9rZW5zLnBvcCgpO1xuICAgICAgICAgIGlmIChhcnJbaV0udHlwZSA9PT0gJ2JyYWNlJykge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChhcnJbaV0udHlwZSAhPT0gJ2RvdHMnKSB7XG4gICAgICAgICAgICByYW5nZS51bnNoaWZ0KGFycltpXS52YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgb3V0cHV0ID0gZXhwYW5kUmFuZ2UocmFuZ2UsIG9wdHMpO1xuICAgICAgICBzdGF0ZS5iYWNrdHJhY2sgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoYnJhY2UuY29tbWEgIT09IHRydWUgJiYgYnJhY2UuZG90cyAhPT0gdHJ1ZSkge1xuICAgICAgICBjb25zdCBvdXQgPSBzdGF0ZS5vdXRwdXQuc2xpY2UoMCwgYnJhY2Uub3V0cHV0SW5kZXgpO1xuICAgICAgICBjb25zdCB0b2tzID0gc3RhdGUudG9rZW5zLnNsaWNlKGJyYWNlLnRva2Vuc0luZGV4KTtcbiAgICAgICAgYnJhY2UudmFsdWUgPSBicmFjZS5vdXRwdXQgPSAnXFxcXHsnO1xuICAgICAgICB2YWx1ZSA9IG91dHB1dCA9ICdcXFxcfSc7XG4gICAgICAgIHN0YXRlLm91dHB1dCA9IG91dDtcbiAgICAgICAgZm9yIChjb25zdCB0IG9mIHRva3MpIHtcbiAgICAgICAgICBzdGF0ZS5vdXRwdXQgKz0gKHQub3V0cHV0IHx8IHQudmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHB1c2goeyB0eXBlOiAnYnJhY2UnLCB2YWx1ZSwgb3V0cHV0IH0pO1xuICAgICAgZGVjcmVtZW50KCdicmFjZXMnKTtcbiAgICAgIGJyYWNlcy5wb3AoKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBpcGVzXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09ICd8Jykge1xuICAgICAgaWYgKGV4dGdsb2JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZXh0Z2xvYnNbZXh0Z2xvYnMubGVuZ3RoIC0gMV0uY29uZGl0aW9ucysrO1xuICAgICAgfVxuICAgICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWUgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21tYXNcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gJywnKSB7XG4gICAgICBsZXQgb3V0cHV0ID0gdmFsdWU7XG5cbiAgICAgIGNvbnN0IGJyYWNlID0gYnJhY2VzW2JyYWNlcy5sZW5ndGggLSAxXTtcbiAgICAgIGlmIChicmFjZSAmJiBzdGFja1tzdGFjay5sZW5ndGggLSAxXSA9PT0gJ2JyYWNlcycpIHtcbiAgICAgICAgYnJhY2UuY29tbWEgPSB0cnVlO1xuICAgICAgICBvdXRwdXQgPSAnfCc7XG4gICAgICB9XG5cbiAgICAgIHB1c2goeyB0eXBlOiAnY29tbWEnLCB2YWx1ZSwgb3V0cHV0IH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2xhc2hlc1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSAnLycpIHtcbiAgICAgIC8vIGlmIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGdsb2IgaXMgXCIuL1wiLCBhZHZhbmNlIHRoZSBzdGFydFxuICAgICAgLy8gdG8gdGhlIGN1cnJlbnQgaW5kZXgsIGFuZCBkb24ndCBhZGQgdGhlIFwiLi9cIiBjaGFyYWN0ZXJzXG4gICAgICAvLyB0byB0aGUgc3RhdGUuIFRoaXMgZ3JlYXRseSBzaW1wbGlmaWVzIGxvb2tiZWhpbmRzIHdoZW5cbiAgICAgIC8vIGNoZWNraW5nIGZvciBCT1MgY2hhcmFjdGVycyBsaWtlIFwiIVwiIGFuZCBcIi5cIiAobm90IFwiLi9cIilcbiAgICAgIGlmIChwcmV2LnR5cGUgPT09ICdkb3QnICYmIHN0YXRlLmluZGV4ID09PSBzdGF0ZS5zdGFydCArIDEpIHtcbiAgICAgICAgc3RhdGUuc3RhcnQgPSBzdGF0ZS5pbmRleCArIDE7XG4gICAgICAgIHN0YXRlLmNvbnN1bWVkID0gJyc7XG4gICAgICAgIHN0YXRlLm91dHB1dCA9ICcnO1xuICAgICAgICB0b2tlbnMucG9wKCk7XG4gICAgICAgIHByZXYgPSBib3M7IC8vIHJlc2V0IFwicHJldlwiIHRvIHRoZSBmaXJzdCB0b2tlblxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgcHVzaCh7IHR5cGU6ICdzbGFzaCcsIHZhbHVlLCBvdXRwdXQ6IFNMQVNIX0xJVEVSQUwgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEb3RzXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09ICcuJykge1xuICAgICAgaWYgKHN0YXRlLmJyYWNlcyA+IDAgJiYgcHJldi50eXBlID09PSAnZG90Jykge1xuICAgICAgICBpZiAocHJldi52YWx1ZSA9PT0gJy4nKSBwcmV2Lm91dHB1dCA9IERPVF9MSVRFUkFMO1xuICAgICAgICBjb25zdCBicmFjZSA9IGJyYWNlc1ticmFjZXMubGVuZ3RoIC0gMV07XG4gICAgICAgIHByZXYudHlwZSA9ICdkb3RzJztcbiAgICAgICAgcHJldi5vdXRwdXQgKz0gdmFsdWU7XG4gICAgICAgIHByZXYudmFsdWUgKz0gdmFsdWU7XG4gICAgICAgIGJyYWNlLmRvdHMgPSB0cnVlO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKChzdGF0ZS5icmFjZXMgKyBzdGF0ZS5wYXJlbnMpID09PSAwICYmIHByZXYudHlwZSAhPT0gJ2JvcycgJiYgcHJldi50eXBlICE9PSAnc2xhc2gnKSB7XG4gICAgICAgIHB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlLCBvdXRwdXQ6IERPVF9MSVRFUkFMIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgcHVzaCh7IHR5cGU6ICdkb3QnLCB2YWx1ZSwgb3V0cHV0OiBET1RfTElURVJBTCB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFF1ZXN0aW9uIG1hcmtzXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09ICc/Jykge1xuICAgICAgY29uc3QgaXNHcm91cCA9IHByZXYgJiYgcHJldi52YWx1ZSA9PT0gJygnO1xuICAgICAgaWYgKCFpc0dyb3VwICYmIG9wdHMubm9leHRnbG9iICE9PSB0cnVlICYmIHBlZWsoKSA9PT0gJygnICYmIHBlZWsoMikgIT09ICc/Jykge1xuICAgICAgICBleHRnbG9iT3BlbigncW1hcmsnLCB2YWx1ZSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJldiAmJiBwcmV2LnR5cGUgPT09ICdwYXJlbicpIHtcbiAgICAgICAgY29uc3QgbmV4dCA9IHBlZWsoKTtcbiAgICAgICAgbGV0IG91dHB1dCA9IHZhbHVlO1xuXG4gICAgICAgIGlmIChuZXh0ID09PSAnPCcgJiYgIXV0aWxzLnN1cHBvcnRzTG9va2JlaGluZHMoKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTm9kZS5qcyB2MTAgb3IgaGlnaGVyIGlzIHJlcXVpcmVkIGZvciByZWdleCBsb29rYmVoaW5kcycpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKChwcmV2LnZhbHVlID09PSAnKCcgJiYgIS9bIT08Ol0vLnRlc3QobmV4dCkpIHx8IChuZXh0ID09PSAnPCcgJiYgIS88KFshPV18XFx3Kz4pLy50ZXN0KHJlbWFpbmluZygpKSkpIHtcbiAgICAgICAgICBvdXRwdXQgPSBgXFxcXCR7dmFsdWV9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlLCBvdXRwdXQgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0cy5kb3QgIT09IHRydWUgJiYgKHByZXYudHlwZSA9PT0gJ3NsYXNoJyB8fCBwcmV2LnR5cGUgPT09ICdib3MnKSkge1xuICAgICAgICBwdXNoKHsgdHlwZTogJ3FtYXJrJywgdmFsdWUsIG91dHB1dDogUU1BUktfTk9fRE9UIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgcHVzaCh7IHR5cGU6ICdxbWFyaycsIHZhbHVlLCBvdXRwdXQ6IFFNQVJLIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXhjbGFtYXRpb25cbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gJyEnKSB7XG4gICAgICBpZiAob3B0cy5ub2V4dGdsb2IgIT09IHRydWUgJiYgcGVlaygpID09PSAnKCcpIHtcbiAgICAgICAgaWYgKHBlZWsoMikgIT09ICc/JyB8fCAhL1shPTw6XS8udGVzdChwZWVrKDMpKSkge1xuICAgICAgICAgIGV4dGdsb2JPcGVuKCduZWdhdGUnLCB2YWx1ZSk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG9wdHMubm9uZWdhdGUgIT09IHRydWUgJiYgc3RhdGUuaW5kZXggPT09IDApIHtcbiAgICAgICAgbmVnYXRlKCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBsdXNcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gJysnKSB7XG4gICAgICBpZiAob3B0cy5ub2V4dGdsb2IgIT09IHRydWUgJiYgcGVlaygpID09PSAnKCcgJiYgcGVlaygyKSAhPT0gJz8nKSB7XG4gICAgICAgIGV4dGdsb2JPcGVuKCdwbHVzJywgdmFsdWUpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKChwcmV2ICYmIHByZXYudmFsdWUgPT09ICcoJykgfHwgb3B0cy5yZWdleCA9PT0gZmFsc2UpIHtcbiAgICAgICAgcHVzaCh7IHR5cGU6ICdwbHVzJywgdmFsdWUsIG91dHB1dDogUExVU19MSVRFUkFMIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKChwcmV2ICYmIChwcmV2LnR5cGUgPT09ICdicmFja2V0JyB8fCBwcmV2LnR5cGUgPT09ICdwYXJlbicgfHwgcHJldi50eXBlID09PSAnYnJhY2UnKSkgfHwgc3RhdGUucGFyZW5zID4gMCkge1xuICAgICAgICBwdXNoKHsgdHlwZTogJ3BsdXMnLCB2YWx1ZSB9KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHB1c2goeyB0eXBlOiAncGx1cycsIHZhbHVlOiBQTFVTX0xJVEVSQUwgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQbGFpbiB0ZXh0XG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09ICdAJykge1xuICAgICAgaWYgKG9wdHMubm9leHRnbG9iICE9PSB0cnVlICYmIHBlZWsoKSA9PT0gJygnICYmIHBlZWsoMikgIT09ICc/Jykge1xuICAgICAgICBwdXNoKHsgdHlwZTogJ2F0JywgZXh0Z2xvYjogdHJ1ZSwgdmFsdWUsIG91dHB1dDogJycgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZSB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBsYWluIHRleHRcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSAhPT0gJyonKSB7XG4gICAgICBpZiAodmFsdWUgPT09ICckJyB8fCB2YWx1ZSA9PT0gJ14nKSB7XG4gICAgICAgIHZhbHVlID0gYFxcXFwke3ZhbHVlfWA7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1hdGNoID0gUkVHRVhfTk9OX1NQRUNJQUxfQ0hBUlMuZXhlYyhyZW1haW5pbmcoKSk7XG4gICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgdmFsdWUgKz0gbWF0Y2hbMF07XG4gICAgICAgIHN0YXRlLmluZGV4ICs9IG1hdGNoWzBdLmxlbmd0aDtcbiAgICAgIH1cblxuICAgICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWUgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTdGFyc1xuICAgICAqL1xuXG4gICAgaWYgKHByZXYgJiYgKHByZXYudHlwZSA9PT0gJ2dsb2JzdGFyJyB8fCBwcmV2LnN0YXIgPT09IHRydWUpKSB7XG4gICAgICBwcmV2LnR5cGUgPSAnc3Rhcic7XG4gICAgICBwcmV2LnN0YXIgPSB0cnVlO1xuICAgICAgcHJldi52YWx1ZSArPSB2YWx1ZTtcbiAgICAgIHByZXYub3V0cHV0ID0gc3RhcjtcbiAgICAgIHN0YXRlLmJhY2t0cmFjayA9IHRydWU7XG4gICAgICBzdGF0ZS5nbG9ic3RhciA9IHRydWU7XG4gICAgICBjb25zdW1lKHZhbHVlKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGxldCByZXN0ID0gcmVtYWluaW5nKCk7XG4gICAgaWYgKG9wdHMubm9leHRnbG9iICE9PSB0cnVlICYmIC9eXFwoW14/XS8udGVzdChyZXN0KSkge1xuICAgICAgZXh0Z2xvYk9wZW4oJ3N0YXInLCB2YWx1ZSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAocHJldi50eXBlID09PSAnc3RhcicpIHtcbiAgICAgIGlmIChvcHRzLm5vZ2xvYnN0YXIgPT09IHRydWUpIHtcbiAgICAgICAgY29uc3VtZSh2YWx1ZSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwcmlvciA9IHByZXYucHJldjtcbiAgICAgIGNvbnN0IGJlZm9yZSA9IHByaW9yLnByZXY7XG4gICAgICBjb25zdCBpc1N0YXJ0ID0gcHJpb3IudHlwZSA9PT0gJ3NsYXNoJyB8fCBwcmlvci50eXBlID09PSAnYm9zJztcbiAgICAgIGNvbnN0IGFmdGVyU3RhciA9IGJlZm9yZSAmJiAoYmVmb3JlLnR5cGUgPT09ICdzdGFyJyB8fCBiZWZvcmUudHlwZSA9PT0gJ2dsb2JzdGFyJyk7XG5cbiAgICAgIGlmIChvcHRzLmJhc2ggPT09IHRydWUgJiYgKCFpc1N0YXJ0IHx8IChyZXN0WzBdICYmIHJlc3RbMF0gIT09ICcvJykpKSB7XG4gICAgICAgIHB1c2goeyB0eXBlOiAnc3RhcicsIHZhbHVlLCBvdXRwdXQ6ICcnIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgaXNCcmFjZSA9IHN0YXRlLmJyYWNlcyA+IDAgJiYgKHByaW9yLnR5cGUgPT09ICdjb21tYScgfHwgcHJpb3IudHlwZSA9PT0gJ2JyYWNlJyk7XG4gICAgICBjb25zdCBpc0V4dGdsb2IgPSBleHRnbG9icy5sZW5ndGggJiYgKHByaW9yLnR5cGUgPT09ICdwaXBlJyB8fCBwcmlvci50eXBlID09PSAncGFyZW4nKTtcbiAgICAgIGlmICghaXNTdGFydCAmJiBwcmlvci50eXBlICE9PSAncGFyZW4nICYmICFpc0JyYWNlICYmICFpc0V4dGdsb2IpIHtcbiAgICAgICAgcHVzaCh7IHR5cGU6ICdzdGFyJywgdmFsdWUsIG91dHB1dDogJycgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBzdHJpcCBjb25zZWN1dGl2ZSBgLyoqL2BcbiAgICAgIHdoaWxlIChyZXN0LnNsaWNlKDAsIDMpID09PSAnLyoqJykge1xuICAgICAgICBjb25zdCBhZnRlciA9IGlucHV0W3N0YXRlLmluZGV4ICsgNF07XG4gICAgICAgIGlmIChhZnRlciAmJiBhZnRlciAhPT0gJy8nKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdCA9IHJlc3Quc2xpY2UoMyk7XG4gICAgICAgIGNvbnN1bWUoJy8qKicsIDMpO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJpb3IudHlwZSA9PT0gJ2JvcycgJiYgZW9zKCkpIHtcbiAgICAgICAgcHJldi50eXBlID0gJ2dsb2JzdGFyJztcbiAgICAgICAgcHJldi52YWx1ZSArPSB2YWx1ZTtcbiAgICAgICAgcHJldi5vdXRwdXQgPSBnbG9ic3RhcihvcHRzKTtcbiAgICAgICAgc3RhdGUub3V0cHV0ID0gcHJldi5vdXRwdXQ7XG4gICAgICAgIHN0YXRlLmdsb2JzdGFyID0gdHJ1ZTtcbiAgICAgICAgY29uc3VtZSh2YWx1ZSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJpb3IudHlwZSA9PT0gJ3NsYXNoJyAmJiBwcmlvci5wcmV2LnR5cGUgIT09ICdib3MnICYmICFhZnRlclN0YXIgJiYgZW9zKCkpIHtcbiAgICAgICAgc3RhdGUub3V0cHV0ID0gc3RhdGUub3V0cHV0LnNsaWNlKDAsIC0ocHJpb3Iub3V0cHV0ICsgcHJldi5vdXRwdXQpLmxlbmd0aCk7XG4gICAgICAgIHByaW9yLm91dHB1dCA9IGAoPzoke3ByaW9yLm91dHB1dH1gO1xuXG4gICAgICAgIHByZXYudHlwZSA9ICdnbG9ic3Rhcic7XG4gICAgICAgIHByZXYub3V0cHV0ID0gZ2xvYnN0YXIob3B0cykgKyAob3B0cy5zdHJpY3RTbGFzaGVzID8gJyknIDogJ3wkKScpO1xuICAgICAgICBwcmV2LnZhbHVlICs9IHZhbHVlO1xuICAgICAgICBzdGF0ZS5nbG9ic3RhciA9IHRydWU7XG4gICAgICAgIHN0YXRlLm91dHB1dCArPSBwcmlvci5vdXRwdXQgKyBwcmV2Lm91dHB1dDtcbiAgICAgICAgY29uc3VtZSh2YWx1ZSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJpb3IudHlwZSA9PT0gJ3NsYXNoJyAmJiBwcmlvci5wcmV2LnR5cGUgIT09ICdib3MnICYmIHJlc3RbMF0gPT09ICcvJykge1xuICAgICAgICBjb25zdCBlbmQgPSByZXN0WzFdICE9PSB2b2lkIDAgPyAnfCQnIDogJyc7XG5cbiAgICAgICAgc3RhdGUub3V0cHV0ID0gc3RhdGUub3V0cHV0LnNsaWNlKDAsIC0ocHJpb3Iub3V0cHV0ICsgcHJldi5vdXRwdXQpLmxlbmd0aCk7XG4gICAgICAgIHByaW9yLm91dHB1dCA9IGAoPzoke3ByaW9yLm91dHB1dH1gO1xuXG4gICAgICAgIHByZXYudHlwZSA9ICdnbG9ic3Rhcic7XG4gICAgICAgIHByZXYub3V0cHV0ID0gYCR7Z2xvYnN0YXIob3B0cyl9JHtTTEFTSF9MSVRFUkFMfXwke1NMQVNIX0xJVEVSQUx9JHtlbmR9KWA7XG4gICAgICAgIHByZXYudmFsdWUgKz0gdmFsdWU7XG5cbiAgICAgICAgc3RhdGUub3V0cHV0ICs9IHByaW9yLm91dHB1dCArIHByZXYub3V0cHV0O1xuICAgICAgICBzdGF0ZS5nbG9ic3RhciA9IHRydWU7XG5cbiAgICAgICAgY29uc3VtZSh2YWx1ZSArIGFkdmFuY2UoKSk7XG5cbiAgICAgICAgcHVzaCh7IHR5cGU6ICdzbGFzaCcsIHZhbHVlOiAnLycsIG91dHB1dDogJycgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJpb3IudHlwZSA9PT0gJ2JvcycgJiYgcmVzdFswXSA9PT0gJy8nKSB7XG4gICAgICAgIHByZXYudHlwZSA9ICdnbG9ic3Rhcic7XG4gICAgICAgIHByZXYudmFsdWUgKz0gdmFsdWU7XG4gICAgICAgIHByZXYub3V0cHV0ID0gYCg/Ol58JHtTTEFTSF9MSVRFUkFMfXwke2dsb2JzdGFyKG9wdHMpfSR7U0xBU0hfTElURVJBTH0pYDtcbiAgICAgICAgc3RhdGUub3V0cHV0ID0gcHJldi5vdXRwdXQ7XG4gICAgICAgIHN0YXRlLmdsb2JzdGFyID0gdHJ1ZTtcbiAgICAgICAgY29uc3VtZSh2YWx1ZSArIGFkdmFuY2UoKSk7XG4gICAgICAgIHB1c2goeyB0eXBlOiAnc2xhc2gnLCB2YWx1ZTogJy8nLCBvdXRwdXQ6ICcnIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLy8gcmVtb3ZlIHNpbmdsZSBzdGFyIGZyb20gb3V0cHV0XG4gICAgICBzdGF0ZS5vdXRwdXQgPSBzdGF0ZS5vdXRwdXQuc2xpY2UoMCwgLXByZXYub3V0cHV0Lmxlbmd0aCk7XG5cbiAgICAgIC8vIHJlc2V0IHByZXZpb3VzIHRva2VuIHRvIGdsb2JzdGFyXG4gICAgICBwcmV2LnR5cGUgPSAnZ2xvYnN0YXInO1xuICAgICAgcHJldi5vdXRwdXQgPSBnbG9ic3RhcihvcHRzKTtcbiAgICAgIHByZXYudmFsdWUgKz0gdmFsdWU7XG5cbiAgICAgIC8vIHJlc2V0IG91dHB1dCB3aXRoIGdsb2JzdGFyXG4gICAgICBzdGF0ZS5vdXRwdXQgKz0gcHJldi5vdXRwdXQ7XG4gICAgICBzdGF0ZS5nbG9ic3RhciA9IHRydWU7XG4gICAgICBjb25zdW1lKHZhbHVlKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHRva2VuID0geyB0eXBlOiAnc3RhcicsIHZhbHVlLCBvdXRwdXQ6IHN0YXIgfTtcblxuICAgIGlmIChvcHRzLmJhc2ggPT09IHRydWUpIHtcbiAgICAgIHRva2VuLm91dHB1dCA9ICcuKj8nO1xuICAgICAgaWYgKHByZXYudHlwZSA9PT0gJ2JvcycgfHwgcHJldi50eXBlID09PSAnc2xhc2gnKSB7XG4gICAgICAgIHRva2VuLm91dHB1dCA9IG5vZG90ICsgdG9rZW4ub3V0cHV0O1xuICAgICAgfVxuICAgICAgcHVzaCh0b2tlbik7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAocHJldiAmJiAocHJldi50eXBlID09PSAnYnJhY2tldCcgfHwgcHJldi50eXBlID09PSAncGFyZW4nKSAmJiBvcHRzLnJlZ2V4ID09PSB0cnVlKSB7XG4gICAgICB0b2tlbi5vdXRwdXQgPSB2YWx1ZTtcbiAgICAgIHB1c2godG9rZW4pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKHN0YXRlLmluZGV4ID09PSBzdGF0ZS5zdGFydCB8fCBwcmV2LnR5cGUgPT09ICdzbGFzaCcgfHwgcHJldi50eXBlID09PSAnZG90Jykge1xuICAgICAgaWYgKHByZXYudHlwZSA9PT0gJ2RvdCcpIHtcbiAgICAgICAgc3RhdGUub3V0cHV0ICs9IE5PX0RPVF9TTEFTSDtcbiAgICAgICAgcHJldi5vdXRwdXQgKz0gTk9fRE9UX1NMQVNIO1xuXG4gICAgICB9IGVsc2UgaWYgKG9wdHMuZG90ID09PSB0cnVlKSB7XG4gICAgICAgIHN0YXRlLm91dHB1dCArPSBOT19ET1RTX1NMQVNIO1xuICAgICAgICBwcmV2Lm91dHB1dCArPSBOT19ET1RTX1NMQVNIO1xuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGF0ZS5vdXRwdXQgKz0gbm9kb3Q7XG4gICAgICAgIHByZXYub3V0cHV0ICs9IG5vZG90O1xuICAgICAgfVxuXG4gICAgICBpZiAocGVlaygpICE9PSAnKicpIHtcbiAgICAgICAgc3RhdGUub3V0cHV0ICs9IE9ORV9DSEFSO1xuICAgICAgICBwcmV2Lm91dHB1dCArPSBPTkVfQ0hBUjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwdXNoKHRva2VuKTtcbiAgfVxuXG4gIHdoaWxlIChzdGF0ZS5icmFja2V0cyA+IDApIHtcbiAgICBpZiAob3B0cy5zdHJpY3RCcmFja2V0cyA9PT0gdHJ1ZSkgdGhyb3cgbmV3IFN5bnRheEVycm9yKHN5bnRheEVycm9yKCdjbG9zaW5nJywgJ10nKSk7XG4gICAgc3RhdGUub3V0cHV0ID0gdXRpbHMuZXNjYXBlTGFzdChzdGF0ZS5vdXRwdXQsICdbJyk7XG4gICAgZGVjcmVtZW50KCdicmFja2V0cycpO1xuICB9XG5cbiAgd2hpbGUgKHN0YXRlLnBhcmVucyA+IDApIHtcbiAgICBpZiAob3B0cy5zdHJpY3RCcmFja2V0cyA9PT0gdHJ1ZSkgdGhyb3cgbmV3IFN5bnRheEVycm9yKHN5bnRheEVycm9yKCdjbG9zaW5nJywgJyknKSk7XG4gICAgc3RhdGUub3V0cHV0ID0gdXRpbHMuZXNjYXBlTGFzdChzdGF0ZS5vdXRwdXQsICcoJyk7XG4gICAgZGVjcmVtZW50KCdwYXJlbnMnKTtcbiAgfVxuXG4gIHdoaWxlIChzdGF0ZS5icmFjZXMgPiAwKSB7XG4gICAgaWYgKG9wdHMuc3RyaWN0QnJhY2tldHMgPT09IHRydWUpIHRocm93IG5ldyBTeW50YXhFcnJvcihzeW50YXhFcnJvcignY2xvc2luZycsICd9JykpO1xuICAgIHN0YXRlLm91dHB1dCA9IHV0aWxzLmVzY2FwZUxhc3Qoc3RhdGUub3V0cHV0LCAneycpO1xuICAgIGRlY3JlbWVudCgnYnJhY2VzJyk7XG4gIH1cblxuICBpZiAob3B0cy5zdHJpY3RTbGFzaGVzICE9PSB0cnVlICYmIChwcmV2LnR5cGUgPT09ICdzdGFyJyB8fCBwcmV2LnR5cGUgPT09ICdicmFja2V0JykpIHtcbiAgICBwdXNoKHsgdHlwZTogJ21heWJlX3NsYXNoJywgdmFsdWU6ICcnLCBvdXRwdXQ6IGAke1NMQVNIX0xJVEVSQUx9P2AgfSk7XG4gIH1cblxuICAvLyByZWJ1aWxkIHRoZSBvdXRwdXQgaWYgd2UgaGFkIHRvIGJhY2t0cmFjayBhdCBhbnkgcG9pbnRcbiAgaWYgKHN0YXRlLmJhY2t0cmFjayA9PT0gdHJ1ZSkge1xuICAgIHN0YXRlLm91dHB1dCA9ICcnO1xuXG4gICAgZm9yIChjb25zdCB0b2tlbiBvZiBzdGF0ZS50b2tlbnMpIHtcbiAgICAgIHN0YXRlLm91dHB1dCArPSB0b2tlbi5vdXRwdXQgIT0gbnVsbCA/IHRva2VuLm91dHB1dCA6IHRva2VuLnZhbHVlO1xuXG4gICAgICBpZiAodG9rZW4uc3VmZml4KSB7XG4gICAgICAgIHN0YXRlLm91dHB1dCArPSB0b2tlbi5zdWZmaXg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlO1xufTtcblxuLyoqXG4gKiBGYXN0IHBhdGhzIGZvciBjcmVhdGluZyByZWd1bGFyIGV4cHJlc3Npb25zIGZvciBjb21tb24gZ2xvYiBwYXR0ZXJucy5cbiAqIFRoaXMgY2FuIHNpZ25pZmljYW50bHkgc3BlZWQgdXAgcHJvY2Vzc2luZyBhbmQgaGFzIHZlcnkgbGl0dGxlIGRvd25zaWRlXG4gKiBpbXBhY3Qgd2hlbiBub25lIG9mIHRoZSBmYXN0IHBhdGhzIG1hdGNoLlxuICovXG5cbnBhcnNlLmZhc3RwYXRocyA9IChpbnB1dCwgb3B0aW9ucykgPT4ge1xuICBjb25zdCBvcHRzID0geyAuLi5vcHRpb25zIH07XG4gIGNvbnN0IG1heCA9IHR5cGVvZiBvcHRzLm1heExlbmd0aCA9PT0gJ251bWJlcicgPyBNYXRoLm1pbihNQVhfTEVOR1RILCBvcHRzLm1heExlbmd0aCkgOiBNQVhfTEVOR1RIO1xuICBjb25zdCBsZW4gPSBpbnB1dC5sZW5ndGg7XG4gIGlmIChsZW4gPiBtYXgpIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYElucHV0IGxlbmd0aDogJHtsZW59LCBleGNlZWRzIG1heGltdW0gYWxsb3dlZCBsZW5ndGg6ICR7bWF4fWApO1xuICB9XG5cbiAgaW5wdXQgPSBSRVBMQUNFTUVOVFNbaW5wdXRdIHx8IGlucHV0O1xuICBjb25zdCB3aW4zMiA9IHV0aWxzLmlzV2luZG93cyhvcHRpb25zKTtcblxuICAvLyBjcmVhdGUgY29uc3RhbnRzIGJhc2VkIG9uIHBsYXRmb3JtLCBmb3Igd2luZG93cyBvciBwb3NpeFxuICBjb25zdCB7XG4gICAgRE9UX0xJVEVSQUwsXG4gICAgU0xBU0hfTElURVJBTCxcbiAgICBPTkVfQ0hBUixcbiAgICBET1RTX1NMQVNILFxuICAgIE5PX0RPVCxcbiAgICBOT19ET1RTLFxuICAgIE5PX0RPVFNfU0xBU0gsXG4gICAgU1RBUixcbiAgICBTVEFSVF9BTkNIT1JcbiAgfSA9IGNvbnN0YW50cy5nbG9iQ2hhcnMod2luMzIpO1xuXG4gIGNvbnN0IG5vZG90ID0gb3B0cy5kb3QgPyBOT19ET1RTIDogTk9fRE9UO1xuICBjb25zdCBzbGFzaERvdCA9IG9wdHMuZG90ID8gTk9fRE9UU19TTEFTSCA6IE5PX0RPVDtcbiAgY29uc3QgY2FwdHVyZSA9IG9wdHMuY2FwdHVyZSA/ICcnIDogJz86JztcbiAgY29uc3Qgc3RhdGUgPSB7IG5lZ2F0ZWQ6IGZhbHNlLCBwcmVmaXg6ICcnIH07XG4gIGxldCBzdGFyID0gb3B0cy5iYXNoID09PSB0cnVlID8gJy4qPycgOiBTVEFSO1xuXG4gIGlmIChvcHRzLmNhcHR1cmUpIHtcbiAgICBzdGFyID0gYCgke3N0YXJ9KWA7XG4gIH1cblxuICBjb25zdCBnbG9ic3RhciA9IChvcHRzKSA9PiB7XG4gICAgaWYgKG9wdHMubm9nbG9ic3RhciA9PT0gdHJ1ZSkgcmV0dXJuIHN0YXI7XG4gICAgcmV0dXJuIGAoJHtjYXB0dXJlfSg/Oig/ISR7U1RBUlRfQU5DSE9SfSR7b3B0cy5kb3QgPyBET1RTX1NMQVNIIDogRE9UX0xJVEVSQUx9KS4pKj8pYDtcbiAgfTtcblxuICBjb25zdCBjcmVhdGUgPSBzdHIgPT4ge1xuICAgIHN3aXRjaCAoc3RyKSB7XG4gICAgICBjYXNlICcqJzpcbiAgICAgICAgcmV0dXJuIGAke25vZG90fSR7T05FX0NIQVJ9JHtzdGFyfWA7XG5cbiAgICAgIGNhc2UgJy4qJzpcbiAgICAgICAgcmV0dXJuIGAke0RPVF9MSVRFUkFMfSR7T05FX0NIQVJ9JHtzdGFyfWA7XG5cbiAgICAgIGNhc2UgJyouKic6XG4gICAgICAgIHJldHVybiBgJHtub2RvdH0ke3N0YXJ9JHtET1RfTElURVJBTH0ke09ORV9DSEFSfSR7c3Rhcn1gO1xuXG4gICAgICBjYXNlICcqLyonOlxuICAgICAgICByZXR1cm4gYCR7bm9kb3R9JHtzdGFyfSR7U0xBU0hfTElURVJBTH0ke09ORV9DSEFSfSR7c2xhc2hEb3R9JHtzdGFyfWA7XG5cbiAgICAgIGNhc2UgJyoqJzpcbiAgICAgICAgcmV0dXJuIG5vZG90ICsgZ2xvYnN0YXIob3B0cyk7XG5cbiAgICAgIGNhc2UgJyoqLyonOlxuICAgICAgICByZXR1cm4gYCg/OiR7bm9kb3R9JHtnbG9ic3RhcihvcHRzKX0ke1NMQVNIX0xJVEVSQUx9KT8ke3NsYXNoRG90fSR7T05FX0NIQVJ9JHtzdGFyfWA7XG5cbiAgICAgIGNhc2UgJyoqLyouKic6XG4gICAgICAgIHJldHVybiBgKD86JHtub2RvdH0ke2dsb2JzdGFyKG9wdHMpfSR7U0xBU0hfTElURVJBTH0pPyR7c2xhc2hEb3R9JHtzdGFyfSR7RE9UX0xJVEVSQUx9JHtPTkVfQ0hBUn0ke3N0YXJ9YDtcblxuICAgICAgY2FzZSAnKiovLionOlxuICAgICAgICByZXR1cm4gYCg/OiR7bm9kb3R9JHtnbG9ic3RhcihvcHRzKX0ke1NMQVNIX0xJVEVSQUx9KT8ke0RPVF9MSVRFUkFMfSR7T05FX0NIQVJ9JHtzdGFyfWA7XG5cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSAvXiguKj8pXFwuKFxcdyspJC8uZXhlYyhzdHIpO1xuICAgICAgICBpZiAoIW1hdGNoKSByZXR1cm47XG5cbiAgICAgICAgY29uc3Qgc291cmNlID0gY3JlYXRlKG1hdGNoWzFdKTtcbiAgICAgICAgaWYgKCFzb3VyY2UpIHJldHVybjtcblxuICAgICAgICByZXR1cm4gc291cmNlICsgRE9UX0xJVEVSQUwgKyBtYXRjaFsyXTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgb3V0cHV0ID0gdXRpbHMucmVtb3ZlUHJlZml4KGlucHV0LCBzdGF0ZSk7XG4gIGxldCBzb3VyY2UgPSBjcmVhdGUob3V0cHV0KTtcblxuICBpZiAoc291cmNlICYmIG9wdHMuc3RyaWN0U2xhc2hlcyAhPT0gdHJ1ZSkge1xuICAgIHNvdXJjZSArPSBgJHtTTEFTSF9MSVRFUkFMfT9gO1xuICB9XG5cbiAgcmV0dXJuIHNvdXJjZTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyc2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5jb25zdCBzY2FuID0gcmVxdWlyZSgnLi9zY2FuJyk7XG5jb25zdCBwYXJzZSA9IHJlcXVpcmUoJy4vcGFyc2UnKTtcbmNvbnN0IHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xuY29uc3QgY29uc3RhbnRzID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKTtcbmNvbnN0IGlzT2JqZWN0ID0gdmFsID0+IHZhbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWwpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBtYXRjaGVyIGZ1bmN0aW9uIGZyb20gb25lIG9yIG1vcmUgZ2xvYiBwYXR0ZXJucy4gVGhlXG4gKiByZXR1cm5lZCBmdW5jdGlvbiB0YWtlcyBhIHN0cmluZyB0byBtYXRjaCBhcyBpdHMgZmlyc3QgYXJndW1lbnQsXG4gKiBhbmQgcmV0dXJucyB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgYSBtYXRjaC4gVGhlIHJldHVybmVkIG1hdGNoZXJcbiAqIGZ1bmN0aW9uIGFsc28gdGFrZXMgYSBib29sZWFuIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQgdGhhdCwgd2hlbiB0cnVlLFxuICogcmV0dXJucyBhbiBvYmplY3Qgd2l0aCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBwaWNvbWF0Y2ggPSByZXF1aXJlKCdwaWNvbWF0Y2gnKTtcbiAqIC8vIHBpY29tYXRjaChnbG9iWywgb3B0aW9uc10pO1xuICpcbiAqIGNvbnN0IGlzTWF0Y2ggPSBwaWNvbWF0Y2goJyouISgqYSknKTtcbiAqIGNvbnNvbGUubG9nKGlzTWF0Y2goJ2EuYScpKTsgLy89PiBmYWxzZVxuICogY29uc29sZS5sb2coaXNNYXRjaCgnYS5iJykpOyAvLz0+IHRydWVcbiAqIGBgYFxuICogQG5hbWUgcGljb21hdGNoXG4gKiBAcGFyYW0ge1N0cmluZ3xBcnJheX0gYGdsb2JzYCBPbmUgb3IgbW9yZSBnbG9iIHBhdHRlcm5zLlxuICogQHBhcmFtIHtPYmplY3Q9fSBgb3B0aW9uc2BcbiAqIEByZXR1cm4ge0Z1bmN0aW9uPX0gUmV0dXJucyBhIG1hdGNoZXIgZnVuY3Rpb24uXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmNvbnN0IHBpY29tYXRjaCA9IChnbG9iLCBvcHRpb25zLCByZXR1cm5TdGF0ZSA9IGZhbHNlKSA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGdsb2IpKSB7XG4gICAgY29uc3QgZm5zID0gZ2xvYi5tYXAoaW5wdXQgPT4gcGljb21hdGNoKGlucHV0LCBvcHRpb25zLCByZXR1cm5TdGF0ZSkpO1xuICAgIGNvbnN0IGFycmF5TWF0Y2hlciA9IHN0ciA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGlzTWF0Y2ggb2YgZm5zKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gaXNNYXRjaChzdHIpO1xuICAgICAgICBpZiAoc3RhdGUpIHJldHVybiBzdGF0ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIHJldHVybiBhcnJheU1hdGNoZXI7XG4gIH1cblxuICBjb25zdCBpc1N0YXRlID0gaXNPYmplY3QoZ2xvYikgJiYgZ2xvYi50b2tlbnMgJiYgZ2xvYi5pbnB1dDtcblxuICBpZiAoZ2xvYiA9PT0gJycgfHwgKHR5cGVvZiBnbG9iICE9PSAnc3RyaW5nJyAmJiAhaXNTdGF0ZSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBwYXR0ZXJuIHRvIGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICB9XG5cbiAgY29uc3Qgb3B0cyA9IG9wdGlvbnMgfHwge307XG4gIGNvbnN0IHBvc2l4ID0gdXRpbHMuaXNXaW5kb3dzKG9wdGlvbnMpO1xuICBjb25zdCByZWdleCA9IGlzU3RhdGVcbiAgICA/IHBpY29tYXRjaC5jb21waWxlUmUoZ2xvYiwgb3B0aW9ucylcbiAgICA6IHBpY29tYXRjaC5tYWtlUmUoZ2xvYiwgb3B0aW9ucywgZmFsc2UsIHRydWUpO1xuXG4gIGNvbnN0IHN0YXRlID0gcmVnZXguc3RhdGU7XG4gIGRlbGV0ZSByZWdleC5zdGF0ZTtcblxuICBsZXQgaXNJZ25vcmVkID0gKCkgPT4gZmFsc2U7XG4gIGlmIChvcHRzLmlnbm9yZSkge1xuICAgIGNvbnN0IGlnbm9yZU9wdHMgPSB7IC4uLm9wdGlvbnMsIGlnbm9yZTogbnVsbCwgb25NYXRjaDogbnVsbCwgb25SZXN1bHQ6IG51bGwgfTtcbiAgICBpc0lnbm9yZWQgPSBwaWNvbWF0Y2gob3B0cy5pZ25vcmUsIGlnbm9yZU9wdHMsIHJldHVyblN0YXRlKTtcbiAgfVxuXG4gIGNvbnN0IG1hdGNoZXIgPSAoaW5wdXQsIHJldHVybk9iamVjdCA9IGZhbHNlKSA9PiB7XG4gICAgY29uc3QgeyBpc01hdGNoLCBtYXRjaCwgb3V0cHV0IH0gPSBwaWNvbWF0Y2gudGVzdChpbnB1dCwgcmVnZXgsIG9wdGlvbnMsIHsgZ2xvYiwgcG9zaXggfSk7XG4gICAgY29uc3QgcmVzdWx0ID0geyBnbG9iLCBzdGF0ZSwgcmVnZXgsIHBvc2l4LCBpbnB1dCwgb3V0cHV0LCBtYXRjaCwgaXNNYXRjaCB9O1xuXG4gICAgaWYgKHR5cGVvZiBvcHRzLm9uUmVzdWx0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBvcHRzLm9uUmVzdWx0KHJlc3VsdCk7XG4gICAgfVxuXG4gICAgaWYgKGlzTWF0Y2ggPT09IGZhbHNlKSB7XG4gICAgICByZXN1bHQuaXNNYXRjaCA9IGZhbHNlO1xuICAgICAgcmV0dXJuIHJldHVybk9iamVjdCA/IHJlc3VsdCA6IGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChpc0lnbm9yZWQoaW5wdXQpKSB7XG4gICAgICBpZiAodHlwZW9mIG9wdHMub25JZ25vcmUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgb3B0cy5vbklnbm9yZShyZXN1bHQpO1xuICAgICAgfVxuICAgICAgcmVzdWx0LmlzTWF0Y2ggPSBmYWxzZTtcbiAgICAgIHJldHVybiByZXR1cm5PYmplY3QgPyByZXN1bHQgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9wdHMub25NYXRjaCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgb3B0cy5vbk1hdGNoKHJlc3VsdCk7XG4gICAgfVxuICAgIHJldHVybiByZXR1cm5PYmplY3QgPyByZXN1bHQgOiB0cnVlO1xuICB9O1xuXG4gIGlmIChyZXR1cm5TdGF0ZSkge1xuICAgIG1hdGNoZXIuc3RhdGUgPSBzdGF0ZTtcbiAgfVxuXG4gIHJldHVybiBtYXRjaGVyO1xufTtcblxuLyoqXG4gKiBUZXN0IGBpbnB1dGAgd2l0aCB0aGUgZ2l2ZW4gYHJlZ2V4YC4gVGhpcyBpcyB1c2VkIGJ5IHRoZSBtYWluXG4gKiBgcGljb21hdGNoKClgIGZ1bmN0aW9uIHRvIHRlc3QgdGhlIGlucHV0IHN0cmluZy5cbiAqXG4gKiBgYGBqc1xuICogY29uc3QgcGljb21hdGNoID0gcmVxdWlyZSgncGljb21hdGNoJyk7XG4gKiAvLyBwaWNvbWF0Y2gudGVzdChpbnB1dCwgcmVnZXhbLCBvcHRpb25zXSk7XG4gKlxuICogY29uc29sZS5sb2cocGljb21hdGNoLnRlc3QoJ2Zvby9iYXInLCAvXig/OihbXi9dKj8pXFwvKFteL10qPykpJC8pKTtcbiAqIC8vIHsgaXNNYXRjaDogdHJ1ZSwgbWF0Y2g6IFsgJ2Zvby8nLCAnZm9vJywgJ2JhcicgXSwgb3V0cHV0OiAnZm9vL2JhcicgfVxuICogYGBgXG4gKiBAcGFyYW0ge1N0cmluZ30gYGlucHV0YCBTdHJpbmcgdG8gdGVzdC5cbiAqIEBwYXJhbSB7UmVnRXhwfSBgcmVnZXhgXG4gKiBAcmV0dXJuIHtPYmplY3R9IFJldHVybnMgYW4gb2JqZWN0IHdpdGggbWF0Y2hpbmcgaW5mby5cbiAqIEBhcGkgcHVibGljXG4gKi9cblxucGljb21hdGNoLnRlc3QgPSAoaW5wdXQsIHJlZ2V4LCBvcHRpb25zLCB7IGdsb2IsIHBvc2l4IH0gPSB7fSkgPT4ge1xuICBpZiAodHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGlucHV0IHRvIGJlIGEgc3RyaW5nJyk7XG4gIH1cblxuICBpZiAoaW5wdXQgPT09ICcnKSB7XG4gICAgcmV0dXJuIHsgaXNNYXRjaDogZmFsc2UsIG91dHB1dDogJycgfTtcbiAgfVxuXG4gIGNvbnN0IG9wdHMgPSBvcHRpb25zIHx8IHt9O1xuICBjb25zdCBmb3JtYXQgPSBvcHRzLmZvcm1hdCB8fCAocG9zaXggPyB1dGlscy50b1Bvc2l4U2xhc2hlcyA6IG51bGwpO1xuICBsZXQgbWF0Y2ggPSBpbnB1dCA9PT0gZ2xvYjtcbiAgbGV0IG91dHB1dCA9IChtYXRjaCAmJiBmb3JtYXQpID8gZm9ybWF0KGlucHV0KSA6IGlucHV0O1xuXG4gIGlmIChtYXRjaCA9PT0gZmFsc2UpIHtcbiAgICBvdXRwdXQgPSBmb3JtYXQgPyBmb3JtYXQoaW5wdXQpIDogaW5wdXQ7XG4gICAgbWF0Y2ggPSBvdXRwdXQgPT09IGdsb2I7XG4gIH1cblxuICBpZiAobWF0Y2ggPT09IGZhbHNlIHx8IG9wdHMuY2FwdHVyZSA9PT0gdHJ1ZSkge1xuICAgIGlmIChvcHRzLm1hdGNoQmFzZSA9PT0gdHJ1ZSB8fCBvcHRzLmJhc2VuYW1lID09PSB0cnVlKSB7XG4gICAgICBtYXRjaCA9IHBpY29tYXRjaC5tYXRjaEJhc2UoaW5wdXQsIHJlZ2V4LCBvcHRpb25zLCBwb3NpeCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1hdGNoID0gcmVnZXguZXhlYyhvdXRwdXQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7IGlzTWF0Y2g6IEJvb2xlYW4obWF0Y2gpLCBtYXRjaCwgb3V0cHV0IH07XG59O1xuXG4vKipcbiAqIE1hdGNoIHRoZSBiYXNlbmFtZSBvZiBhIGZpbGVwYXRoLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBwaWNvbWF0Y2ggPSByZXF1aXJlKCdwaWNvbWF0Y2gnKTtcbiAqIC8vIHBpY29tYXRjaC5tYXRjaEJhc2UoaW5wdXQsIGdsb2JbLCBvcHRpb25zXSk7XG4gKiBjb25zb2xlLmxvZyhwaWNvbWF0Y2gubWF0Y2hCYXNlKCdmb28vYmFyLmpzJywgJyouanMnKTsgLy8gdHJ1ZVxuICogYGBgXG4gKiBAcGFyYW0ge1N0cmluZ30gYGlucHV0YCBTdHJpbmcgdG8gdGVzdC5cbiAqIEBwYXJhbSB7UmVnRXhwfFN0cmluZ30gYGdsb2JgIEdsb2IgcGF0dGVybiBvciByZWdleCBjcmVhdGVkIGJ5IFsubWFrZVJlXSgjbWFrZVJlKS5cbiAqIEByZXR1cm4ge0Jvb2xlYW59XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbnBpY29tYXRjaC5tYXRjaEJhc2UgPSAoaW5wdXQsIGdsb2IsIG9wdGlvbnMsIHBvc2l4ID0gdXRpbHMuaXNXaW5kb3dzKG9wdGlvbnMpKSA9PiB7XG4gIGNvbnN0IHJlZ2V4ID0gZ2xvYiBpbnN0YW5jZW9mIFJlZ0V4cCA/IGdsb2IgOiBwaWNvbWF0Y2gubWFrZVJlKGdsb2IsIG9wdGlvbnMpO1xuICByZXR1cm4gcmVnZXgudGVzdChwYXRoLmJhc2VuYW1lKGlucHV0KSk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiAqKmFueSoqIG9mIHRoZSBnaXZlbiBnbG9iIGBwYXR0ZXJuc2AgbWF0Y2ggdGhlIHNwZWNpZmllZCBgc3RyaW5nYC5cbiAqXG4gKiBgYGBqc1xuICogY29uc3QgcGljb21hdGNoID0gcmVxdWlyZSgncGljb21hdGNoJyk7XG4gKiAvLyBwaWNvbWF0Y2guaXNNYXRjaChzdHJpbmcsIHBhdHRlcm5zWywgb3B0aW9uc10pO1xuICpcbiAqIGNvbnNvbGUubG9nKHBpY29tYXRjaC5pc01hdGNoKCdhLmEnLCBbJ2IuKicsICcqLmEnXSkpOyAvLz0+IHRydWVcbiAqIGNvbnNvbGUubG9nKHBpY29tYXRjaC5pc01hdGNoKCdhLmEnLCAnYi4qJykpOyAvLz0+IGZhbHNlXG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfEFycmF5fSBzdHIgVGhlIHN0cmluZyB0byB0ZXN0LlxuICogQHBhcmFtIHtTdHJpbmd8QXJyYXl9IHBhdHRlcm5zIE9uZSBvciBtb3JlIGdsb2IgcGF0dGVybnMgdG8gdXNlIGZvciBtYXRjaGluZy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gU2VlIGF2YWlsYWJsZSBbb3B0aW9uc10oI29wdGlvbnMpLlxuICogQHJldHVybiB7Qm9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIGFueSBwYXR0ZXJucyBtYXRjaCBgc3RyYFxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5waWNvbWF0Y2guaXNNYXRjaCA9IChzdHIsIHBhdHRlcm5zLCBvcHRpb25zKSA9PiBwaWNvbWF0Y2gocGF0dGVybnMsIG9wdGlvbnMpKHN0cik7XG5cbi8qKlxuICogUGFyc2UgYSBnbG9iIHBhdHRlcm4gdG8gY3JlYXRlIHRoZSBzb3VyY2Ugc3RyaW5nIGZvciBhIHJlZ3VsYXJcbiAqIGV4cHJlc3Npb24uXG4gKlxuICogYGBganNcbiAqIGNvbnN0IHBpY29tYXRjaCA9IHJlcXVpcmUoJ3BpY29tYXRjaCcpO1xuICogY29uc3QgcmVzdWx0ID0gcGljb21hdGNoLnBhcnNlKHBhdHRlcm5bLCBvcHRpb25zXSk7XG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfSBgcGF0dGVybmBcbiAqIEBwYXJhbSB7T2JqZWN0fSBgb3B0aW9uc2BcbiAqIEByZXR1cm4ge09iamVjdH0gUmV0dXJucyBhbiBvYmplY3Qgd2l0aCB1c2VmdWwgcHJvcGVydGllcyBhbmQgb3V0cHV0IHRvIGJlIHVzZWQgYXMgYSByZWdleCBzb3VyY2Ugc3RyaW5nLlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5waWNvbWF0Y2gucGFyc2UgPSAocGF0dGVybiwgb3B0aW9ucykgPT4ge1xuICBpZiAoQXJyYXkuaXNBcnJheShwYXR0ZXJuKSkgcmV0dXJuIHBhdHRlcm4ubWFwKHAgPT4gcGljb21hdGNoLnBhcnNlKHAsIG9wdGlvbnMpKTtcbiAgcmV0dXJuIHBhcnNlKHBhdHRlcm4sIHsgLi4ub3B0aW9ucywgZmFzdHBhdGhzOiBmYWxzZSB9KTtcbn07XG5cbi8qKlxuICogU2NhbiBhIGdsb2IgcGF0dGVybiB0byBzZXBhcmF0ZSB0aGUgcGF0dGVybiBpbnRvIHNlZ21lbnRzLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBwaWNvbWF0Y2ggPSByZXF1aXJlKCdwaWNvbWF0Y2gnKTtcbiAqIC8vIHBpY29tYXRjaC5zY2FuKGlucHV0Wywgb3B0aW9uc10pO1xuICpcbiAqIGNvbnN0IHJlc3VsdCA9IHBpY29tYXRjaC5zY2FuKCchLi9mb28vKi5qcycpO1xuICogY29uc29sZS5sb2cocmVzdWx0KTtcbiAqIHsgcHJlZml4OiAnIS4vJyxcbiAqICAgaW5wdXQ6ICchLi9mb28vKi5qcycsXG4gKiAgIHN0YXJ0OiAzLFxuICogICBiYXNlOiAnZm9vJyxcbiAqICAgZ2xvYjogJyouanMnLFxuICogICBpc0JyYWNlOiBmYWxzZSxcbiAqICAgaXNCcmFja2V0OiBmYWxzZSxcbiAqICAgaXNHbG9iOiB0cnVlLFxuICogICBpc0V4dGdsb2I6IGZhbHNlLFxuICogICBpc0dsb2JzdGFyOiBmYWxzZSxcbiAqICAgbmVnYXRlZDogdHJ1ZSB9XG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfSBgaW5wdXRgIEdsb2IgcGF0dGVybiB0byBzY2FuLlxuICogQHBhcmFtIHtPYmplY3R9IGBvcHRpb25zYFxuICogQHJldHVybiB7T2JqZWN0fSBSZXR1cm5zIGFuIG9iamVjdCB3aXRoXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbnBpY29tYXRjaC5zY2FuID0gKGlucHV0LCBvcHRpb25zKSA9PiBzY2FuKGlucHV0LCBvcHRpb25zKTtcblxuLyoqXG4gKiBDcmVhdGUgYSByZWd1bGFyIGV4cHJlc3Npb24gZnJvbSBhIHBhcnNlZCBnbG9iIHBhdHRlcm4uXG4gKlxuICogYGBganNcbiAqIGNvbnN0IHBpY29tYXRjaCA9IHJlcXVpcmUoJ3BpY29tYXRjaCcpO1xuICogY29uc3Qgc3RhdGUgPSBwaWNvbWF0Y2gucGFyc2UoJyouanMnKTtcbiAqIC8vIHBpY29tYXRjaC5jb21waWxlUmUoc3RhdGVbLCBvcHRpb25zXSk7XG4gKlxuICogY29uc29sZS5sb2cocGljb21hdGNoLmNvbXBpbGVSZShzdGF0ZSkpO1xuICogLy89PiAvXig/Oig/IVxcLikoPz0uKVteL10qP1xcLmpzKSQvXG4gKiBgYGBcbiAqIEBwYXJhbSB7U3RyaW5nfSBgc3RhdGVgIFRoZSBvYmplY3QgcmV0dXJuZWQgZnJvbSB0aGUgYC5wYXJzZWAgbWV0aG9kLlxuICogQHBhcmFtIHtPYmplY3R9IGBvcHRpb25zYFxuICogQHJldHVybiB7UmVnRXhwfSBSZXR1cm5zIGEgcmVnZXggY3JlYXRlZCBmcm9tIHRoZSBnaXZlbiBwYXR0ZXJuLlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5waWNvbWF0Y2guY29tcGlsZVJlID0gKHBhcnNlZCwgb3B0aW9ucywgcmV0dXJuT3V0cHV0ID0gZmFsc2UsIHJldHVyblN0YXRlID0gZmFsc2UpID0+IHtcbiAgaWYgKHJldHVybk91dHB1dCA9PT0gdHJ1ZSkge1xuICAgIHJldHVybiBwYXJzZWQub3V0cHV0O1xuICB9XG5cbiAgY29uc3Qgb3B0cyA9IG9wdGlvbnMgfHwge307XG4gIGNvbnN0IHByZXBlbmQgPSBvcHRzLmNvbnRhaW5zID8gJycgOiAnXic7XG4gIGNvbnN0IGFwcGVuZCA9IG9wdHMuY29udGFpbnMgPyAnJyA6ICckJztcblxuICBsZXQgc291cmNlID0gYCR7cHJlcGVuZH0oPzoke3BhcnNlZC5vdXRwdXR9KSR7YXBwZW5kfWA7XG4gIGlmIChwYXJzZWQgJiYgcGFyc2VkLm5lZ2F0ZWQgPT09IHRydWUpIHtcbiAgICBzb3VyY2UgPSBgXig/ISR7c291cmNlfSkuKiRgO1xuICB9XG5cbiAgY29uc3QgcmVnZXggPSBwaWNvbWF0Y2gudG9SZWdleChzb3VyY2UsIG9wdGlvbnMpO1xuICBpZiAocmV0dXJuU3RhdGUgPT09IHRydWUpIHtcbiAgICByZWdleC5zdGF0ZSA9IHBhcnNlZDtcbiAgfVxuXG4gIHJldHVybiByZWdleDtcbn07XG5cbnBpY29tYXRjaC5tYWtlUmUgPSAoaW5wdXQsIG9wdGlvbnMsIHJldHVybk91dHB1dCA9IGZhbHNlLCByZXR1cm5TdGF0ZSA9IGZhbHNlKSA9PiB7XG4gIGlmICghaW5wdXQgfHwgdHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICB9XG5cbiAgY29uc3Qgb3B0cyA9IG9wdGlvbnMgfHwge307XG4gIGxldCBwYXJzZWQgPSB7IG5lZ2F0ZWQ6IGZhbHNlLCBmYXN0cGF0aHM6IHRydWUgfTtcbiAgbGV0IHByZWZpeCA9ICcnO1xuICBsZXQgb3V0cHV0O1xuXG4gIGlmIChpbnB1dC5zdGFydHNXaXRoKCcuLycpKSB7XG4gICAgaW5wdXQgPSBpbnB1dC5zbGljZSgyKTtcbiAgICBwcmVmaXggPSBwYXJzZWQucHJlZml4ID0gJy4vJztcbiAgfVxuXG4gIGlmIChvcHRzLmZhc3RwYXRocyAhPT0gZmFsc2UgJiYgKGlucHV0WzBdID09PSAnLicgfHwgaW5wdXRbMF0gPT09ICcqJykpIHtcbiAgICBvdXRwdXQgPSBwYXJzZS5mYXN0cGF0aHMoaW5wdXQsIG9wdGlvbnMpO1xuICB9XG5cbiAgaWYgKG91dHB1dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcGFyc2VkID0gcGFyc2UoaW5wdXQsIG9wdGlvbnMpO1xuICAgIHBhcnNlZC5wcmVmaXggPSBwcmVmaXggKyAocGFyc2VkLnByZWZpeCB8fCAnJyk7XG4gIH0gZWxzZSB7XG4gICAgcGFyc2VkLm91dHB1dCA9IG91dHB1dDtcbiAgfVxuXG4gIHJldHVybiBwaWNvbWF0Y2guY29tcGlsZVJlKHBhcnNlZCwgb3B0aW9ucywgcmV0dXJuT3V0cHV0LCByZXR1cm5TdGF0ZSk7XG59O1xuXG4vKipcbiAqIENyZWF0ZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBmcm9tIHRoZSBnaXZlbiByZWdleCBzb3VyY2Ugc3RyaW5nLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBwaWNvbWF0Y2ggPSByZXF1aXJlKCdwaWNvbWF0Y2gnKTtcbiAqIC8vIHBpY29tYXRjaC50b1JlZ2V4KHNvdXJjZVssIG9wdGlvbnNdKTtcbiAqXG4gKiBjb25zdCB7IG91dHB1dCB9ID0gcGljb21hdGNoLnBhcnNlKCcqLmpzJyk7XG4gKiBjb25zb2xlLmxvZyhwaWNvbWF0Y2gudG9SZWdleChvdXRwdXQpKTtcbiAqIC8vPT4gL14oPzooPyFcXC4pKD89LilbXi9dKj9cXC5qcykkL1xuICogYGBgXG4gKiBAcGFyYW0ge1N0cmluZ30gYHNvdXJjZWAgUmVndWxhciBleHByZXNzaW9uIHNvdXJjZSBzdHJpbmcuXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgXG4gKiBAcmV0dXJuIHtSZWdFeHB9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbnBpY29tYXRjaC50b1JlZ2V4ID0gKHNvdXJjZSwgb3B0aW9ucykgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IG9wdHMgPSBvcHRpb25zIHx8IHt9O1xuICAgIHJldHVybiBuZXcgUmVnRXhwKHNvdXJjZSwgb3B0cy5mbGFncyB8fCAob3B0cy5ub2Nhc2UgPyAnaScgOiAnJykpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmRlYnVnID09PSB0cnVlKSB0aHJvdyBlcnI7XG4gICAgcmV0dXJuIC8kXi87XG4gIH1cbn07XG5cbi8qKlxuICogUGljb21hdGNoIGNvbnN0YW50cy5cbiAqIEByZXR1cm4ge09iamVjdH1cbiAqL1xuXG5waWNvbWF0Y2guY29uc3RhbnRzID0gY29uc3RhbnRzO1xuXG4vKipcbiAqIEV4cG9zZSBcInBpY29tYXRjaFwiXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBwaWNvbWF0Y2g7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvcGljb21hdGNoJyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKTtcbmNvbnN0IHsgUmVhZGFibGUgfSA9IHJlcXVpcmUoJ3N0cmVhbScpO1xuY29uc3Qgc3lzUGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcbmNvbnN0IHsgcHJvbWlzaWZ5IH0gPSByZXF1aXJlKCd1dGlsJyk7XG5jb25zdCBwaWNvbWF0Y2ggPSByZXF1aXJlKCdwaWNvbWF0Y2gnKTtcblxuY29uc3QgcmVhZGRpciA9IHByb21pc2lmeShmcy5yZWFkZGlyKTtcbmNvbnN0IHN0YXQgPSBwcm9taXNpZnkoZnMuc3RhdCk7XG5jb25zdCBsc3RhdCA9IHByb21pc2lmeShmcy5sc3RhdCk7XG5jb25zdCByZWFscGF0aCA9IHByb21pc2lmeShmcy5yZWFscGF0aCk7XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gRW50cnlJbmZvXG4gKiBAcHJvcGVydHkge1N0cmluZ30gcGF0aFxuICogQHByb3BlcnR5IHtTdHJpbmd9IGZ1bGxQYXRoXG4gKiBAcHJvcGVydHkge2ZzLlN0YXRzPX0gc3RhdHNcbiAqIEBwcm9wZXJ0eSB7ZnMuRGlyZW50PX0gZGlyZW50XG4gKiBAcHJvcGVydHkge1N0cmluZ30gYmFzZW5hbWVcbiAqL1xuXG5jb25zdCBCQU5HID0gJyEnO1xuY29uc3QgTk9STUFMX0ZMT1dfRVJST1JTID0gbmV3IFNldChbJ0VOT0VOVCcsICdFUEVSTScsICdFQUNDRVMnLCAnRUxPT1AnXSk7XG5jb25zdCBGSUxFX1RZUEUgPSAnZmlsZXMnO1xuY29uc3QgRElSX1RZUEUgPSAnZGlyZWN0b3JpZXMnO1xuY29uc3QgRklMRV9ESVJfVFlQRSA9ICdmaWxlc19kaXJlY3Rvcmllcyc7XG5jb25zdCBFVkVSWVRISU5HX1RZUEUgPSAnYWxsJztcbmNvbnN0IEFMTF9UWVBFUyA9IFtGSUxFX1RZUEUsIERJUl9UWVBFLCBGSUxFX0RJUl9UWVBFLCBFVkVSWVRISU5HX1RZUEVdO1xuXG5jb25zdCBpc05vcm1hbEZsb3dFcnJvciA9IGVycm9yID0+IE5PUk1BTF9GTE9XX0VSUk9SUy5oYXMoZXJyb3IuY29kZSk7XG5cbmNvbnN0IG5vcm1hbGl6ZUZpbHRlciA9IGZpbHRlciA9PiB7XG4gIGlmIChmaWx0ZXIgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICBpZiAodHlwZW9mIGZpbHRlciA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIGZpbHRlcjtcblxuICBpZiAodHlwZW9mIGZpbHRlciA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBnbG9iID0gcGljb21hdGNoKGZpbHRlci50cmltKCkpO1xuICAgIHJldHVybiBlbnRyeSA9PiBnbG9iKGVudHJ5LmJhc2VuYW1lKTtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KGZpbHRlcikpIHtcbiAgICBjb25zdCBwb3NpdGl2ZSA9IFtdO1xuICAgIGNvbnN0IG5lZ2F0aXZlID0gW107XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGZpbHRlcikge1xuICAgICAgY29uc3QgdHJpbW1lZCA9IGl0ZW0udHJpbSgpO1xuICAgICAgaWYgKHRyaW1tZWQuY2hhckF0KDApID09PSBCQU5HKSB7XG4gICAgICAgIG5lZ2F0aXZlLnB1c2gocGljb21hdGNoKHRyaW1tZWQuc2xpY2UoMSkpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBvc2l0aXZlLnB1c2gocGljb21hdGNoKHRyaW1tZWQpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobmVnYXRpdmUubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKHBvc2l0aXZlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIGVudHJ5ID0+XG4gICAgICAgICAgcG9zaXRpdmUuc29tZShmID0+IGYoZW50cnkuYmFzZW5hbWUpKSAmJiAhbmVnYXRpdmUuc29tZShmID0+IGYoZW50cnkuYmFzZW5hbWUpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBlbnRyeSA9PiAhbmVnYXRpdmUuc29tZShmID0+IGYoZW50cnkuYmFzZW5hbWUpKTtcbiAgICB9XG4gICAgcmV0dXJuIGVudHJ5ID0+IHBvc2l0aXZlLnNvbWUoZiA9PiBmKGVudHJ5LmJhc2VuYW1lKSk7XG4gIH1cbn07XG5cbmNsYXNzIFJlYWRkaXJwU3RyZWFtIGV4dGVuZHMgUmVhZGFibGUge1xuICBzdGF0aWMgZ2V0IGRlZmF1bHRPcHRpb25zKCkge1xuICAgIHJldHVybiB7XG4gICAgICByb290OiAnLicsXG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuICAgICAgZmlsZUZpbHRlcjogKHBhdGgpID0+IHRydWUsXG4gICAgICBkaXJlY3RvcnlGaWx0ZXI6IChwYXRoKSA9PiB0cnVlLFxuICAgICAgLyogZXNsaW50LWVuYWJsZSBuby11bnVzZWQtdmFycyAqL1xuICAgICAgdHlwZTogRklMRV9UWVBFLFxuICAgICAgbHN0YXQ6IGZhbHNlLFxuICAgICAgZGVwdGg6IDIxNDc0ODM2NDgsXG4gICAgICBhbHdheXNTdGF0OiBmYWxzZVxuICAgIH07XG4gIH1cblxuICBjb25zdHJ1Y3RvcihvcHRpb25zID0ge30pIHtcbiAgICBzdXBlcih7XG4gICAgICBvYmplY3RNb2RlOiB0cnVlLFxuICAgICAgYXV0b0Rlc3Ryb3k6IHRydWUsXG4gICAgICBoaWdoV2F0ZXJNYXJrOiBvcHRpb25zLmhpZ2hXYXRlck1hcmsgfHwgNDA5NlxuICAgIH0pO1xuICAgIGNvbnN0IG9wdHMgPSB7IC4uLlJlYWRkaXJwU3RyZWFtLmRlZmF1bHRPcHRpb25zLCAuLi5vcHRpb25zIH07XG4gICAgY29uc3QgeyByb290LCB0eXBlIH0gPSBvcHRzO1xuXG4gICAgdGhpcy5fZmlsZUZpbHRlciA9IG5vcm1hbGl6ZUZpbHRlcihvcHRzLmZpbGVGaWx0ZXIpO1xuICAgIHRoaXMuX2RpcmVjdG9yeUZpbHRlciA9IG5vcm1hbGl6ZUZpbHRlcihvcHRzLmRpcmVjdG9yeUZpbHRlcik7XG5cbiAgICBjb25zdCBzdGF0TWV0aG9kID0gb3B0cy5sc3RhdCA/IGxzdGF0IDogc3RhdDtcbiAgICAvLyBVc2UgYmlnaW50IHN0YXRzIGlmIGl0J3Mgd2luZG93cyBhbmQgc3RhdCgpIHN1cHBvcnRzIG9wdGlvbnMgKG5vZGUgMTArKS5cbiAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyAmJiBzdGF0Lmxlbmd0aCA9PT0gMykge1xuICAgICAgdGhpcy5fc3RhdCA9IHBhdGggPT4gc3RhdE1ldGhvZChwYXRoLCB7IGJpZ2ludDogdHJ1ZSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fc3RhdCA9IHN0YXRNZXRob2Q7XG4gICAgfVxuXG4gICAgdGhpcy5fbWF4RGVwdGggPSBvcHRzLmRlcHRoO1xuICAgIHRoaXMuX3dhbnRzRGlyID0gW0RJUl9UWVBFLCBGSUxFX0RJUl9UWVBFLCBFVkVSWVRISU5HX1RZUEVdLmluY2x1ZGVzKHR5cGUpO1xuICAgIHRoaXMuX3dhbnRzRmlsZSA9IFtGSUxFX1RZUEUsIEZJTEVfRElSX1RZUEUsIEVWRVJZVEhJTkdfVFlQRV0uaW5jbHVkZXModHlwZSk7XG4gICAgdGhpcy5fd2FudHNFdmVyeXRoaW5nID0gdHlwZSA9PT0gRVZFUllUSElOR19UWVBFO1xuICAgIHRoaXMuX3Jvb3QgPSBzeXNQYXRoLnJlc29sdmUocm9vdCk7XG4gICAgdGhpcy5faXNEaXJlbnQgPSAoJ0RpcmVudCcgaW4gZnMpICYmICFvcHRzLmFsd2F5c1N0YXQ7XG4gICAgdGhpcy5fc3RhdHNQcm9wID0gdGhpcy5faXNEaXJlbnQgPyAnZGlyZW50JyA6ICdzdGF0cyc7XG4gICAgdGhpcy5fcmRPcHRpb25zID0geyBlbmNvZGluZzogJ3V0ZjgnLCB3aXRoRmlsZVR5cGVzOiB0aGlzLl9pc0RpcmVudCB9O1xuXG4gICAgLy8gTGF1bmNoIHN0cmVhbSB3aXRoIG9uZSBwYXJlbnQsIHRoZSByb290IGRpci5cbiAgICB0aGlzLnBhcmVudHMgPSBbdGhpcy5fZXhwbG9yZURpcihyb290LCAxKV07XG4gICAgdGhpcy5yZWFkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5wYXJlbnQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBhc3luYyBfcmVhZChiYXRjaCkge1xuICAgIGlmICh0aGlzLnJlYWRpbmcpIHJldHVybjtcbiAgICB0aGlzLnJlYWRpbmcgPSB0cnVlO1xuXG4gICAgdHJ5IHtcbiAgICAgIHdoaWxlICghdGhpcy5kZXN0cm95ZWQgJiYgYmF0Y2ggPiAwKSB7XG4gICAgICAgIGNvbnN0IHsgcGF0aCwgZGVwdGgsIGZpbGVzID0gW10gfSA9IHRoaXMucGFyZW50IHx8IHt9O1xuXG4gICAgICAgIGlmIChmaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3Qgc2xpY2UgPSBmaWxlcy5zcGxpY2UoMCwgYmF0Y2gpLm1hcChkaXJlbnQgPT4gdGhpcy5fZm9ybWF0RW50cnkoZGlyZW50LCBwYXRoKSk7XG4gICAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBhd2FpdCBQcm9taXNlLmFsbChzbGljZSkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRlc3Ryb3llZCkgcmV0dXJuO1xuXG4gICAgICAgICAgICBjb25zdCBlbnRyeVR5cGUgPSBhd2FpdCB0aGlzLl9nZXRFbnRyeVR5cGUoZW50cnkpO1xuICAgICAgICAgICAgaWYgKGVudHJ5VHlwZSA9PT0gJ2RpcmVjdG9yeScgJiYgdGhpcy5fZGlyZWN0b3J5RmlsdGVyKGVudHJ5KSkge1xuICAgICAgICAgICAgICBpZiAoZGVwdGggPD0gdGhpcy5fbWF4RGVwdGgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBhcmVudHMucHVzaCh0aGlzLl9leHBsb3JlRGlyKGVudHJ5LmZ1bGxQYXRoLCBkZXB0aCArIDEpKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICh0aGlzLl93YW50c0Rpcikge1xuICAgICAgICAgICAgICAgIHRoaXMucHVzaChlbnRyeSk7XG4gICAgICAgICAgICAgICAgYmF0Y2gtLTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICgoZW50cnlUeXBlID09PSAnZmlsZScgfHwgdGhpcy5faW5jbHVkZUFzRmlsZShlbnRyeSkpICYmIHRoaXMuX2ZpbGVGaWx0ZXIoZW50cnkpKSB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLl93YW50c0ZpbGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnB1c2goZW50cnkpO1xuICAgICAgICAgICAgICAgIGJhdGNoLS07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5wYXJlbnRzLnBvcCgpO1xuICAgICAgICAgIGlmICghcGFyZW50KSB7XG4gICAgICAgICAgICB0aGlzLnB1c2gobnVsbCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5wYXJlbnQgPSBhd2FpdCBwYXJlbnQ7XG4gICAgICAgICAgaWYgKHRoaXMuZGVzdHJveWVkKSByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5kZXN0cm95KGVycm9yKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5yZWFkaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgX2V4cGxvcmVEaXIocGF0aCwgZGVwdGgpIHtcbiAgICBsZXQgZmlsZXM7XG4gICAgdHJ5IHtcbiAgICAgIGZpbGVzID0gYXdhaXQgcmVhZGRpcihwYXRoLCB0aGlzLl9yZE9wdGlvbnMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLl9vbkVycm9yKGVycm9yKTtcbiAgICB9XG4gICAgcmV0dXJuIHtmaWxlcywgZGVwdGgsIHBhdGh9O1xuICB9XG5cbiAgYXN5bmMgX2Zvcm1hdEVudHJ5KGRpcmVudCwgcGF0aCkge1xuICAgIGxldCBlbnRyeTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYmFzZW5hbWUgPSB0aGlzLl9pc0RpcmVudCA/IGRpcmVudC5uYW1lIDogZGlyZW50O1xuICAgICAgY29uc3QgZnVsbFBhdGggPSBzeXNQYXRoLnJlc29sdmUoc3lzUGF0aC5qb2luKHBhdGgsIGJhc2VuYW1lKSk7XG4gICAgICBlbnRyeSA9IHtwYXRoOiBzeXNQYXRoLnJlbGF0aXZlKHRoaXMuX3Jvb3QsIGZ1bGxQYXRoKSwgZnVsbFBhdGgsIGJhc2VuYW1lfTtcbiAgICAgIGVudHJ5W3RoaXMuX3N0YXRzUHJvcF0gPSB0aGlzLl9pc0RpcmVudCA/IGRpcmVudCA6IGF3YWl0IHRoaXMuX3N0YXQoZnVsbFBhdGgpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5fb25FcnJvcihlcnIpO1xuICAgIH1cbiAgICByZXR1cm4gZW50cnk7XG4gIH1cblxuICBfb25FcnJvcihlcnIpIHtcbiAgICBpZiAoaXNOb3JtYWxGbG93RXJyb3IoZXJyKSAmJiAhdGhpcy5kZXN0cm95ZWQpIHtcbiAgICAgIHRoaXMuZW1pdCgnd2FybicsIGVycik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVzdHJveShlcnIpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIF9nZXRFbnRyeVR5cGUoZW50cnkpIHtcbiAgICAvLyBlbnRyeSBtYXkgYmUgdW5kZWZpbmVkLCBiZWNhdXNlIGEgd2FybmluZyBvciBhbiBlcnJvciB3ZXJlIGVtaXR0ZWRcbiAgICAvLyBhbmQgdGhlIHN0YXRzUHJvcCBpcyB1bmRlZmluZWRcbiAgICBjb25zdCBzdGF0cyA9IGVudHJ5ICYmIGVudHJ5W3RoaXMuX3N0YXRzUHJvcF07XG4gICAgaWYgKCFzdGF0cykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoc3RhdHMuaXNGaWxlKCkpIHtcbiAgICAgIHJldHVybiAnZmlsZSc7XG4gICAgfVxuICAgIGlmIChzdGF0cy5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICByZXR1cm4gJ2RpcmVjdG9yeSc7XG4gICAgfVxuICAgIGlmIChzdGF0cyAmJiBzdGF0cy5pc1N5bWJvbGljTGluaygpKSB7XG4gICAgICBjb25zdCBmdWxsID0gZW50cnkuZnVsbFBhdGg7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBlbnRyeVJlYWxQYXRoID0gYXdhaXQgcmVhbHBhdGgoZnVsbCk7XG4gICAgICAgIGNvbnN0IGVudHJ5UmVhbFBhdGhTdGF0cyA9IGF3YWl0IGxzdGF0KGVudHJ5UmVhbFBhdGgpO1xuICAgICAgICBpZiAoZW50cnlSZWFsUGF0aFN0YXRzLmlzRmlsZSgpKSB7XG4gICAgICAgICAgcmV0dXJuICdmaWxlJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW50cnlSZWFsUGF0aFN0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgICBjb25zdCBsZW4gPSBlbnRyeVJlYWxQYXRoLmxlbmd0aDtcbiAgICAgICAgICBpZiAoZnVsbC5zdGFydHNXaXRoKGVudHJ5UmVhbFBhdGgpICYmIGZ1bGwuc3Vic3RyKGxlbiwgMSkgPT09IHN5c1BhdGguc2VwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fb25FcnJvcihuZXcgRXJyb3IoXG4gICAgICAgICAgICAgIGBDaXJjdWxhciBzeW1saW5rIGRldGVjdGVkOiBcIiR7ZnVsbH1cIiBwb2ludHMgdG8gXCIke2VudHJ5UmVhbFBhdGh9XCJgXG4gICAgICAgICAgICApKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuICdkaXJlY3RvcnknO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aGlzLl9vbkVycm9yKGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBfaW5jbHVkZUFzRmlsZShlbnRyeSkge1xuICAgIGNvbnN0IHN0YXRzID0gZW50cnkgJiYgZW50cnlbdGhpcy5fc3RhdHNQcm9wXTtcblxuICAgIHJldHVybiBzdGF0cyAmJiB0aGlzLl93YW50c0V2ZXJ5dGhpbmcgJiYgIXN0YXRzLmlzRGlyZWN0b3J5KCk7XG4gIH1cbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBSZWFkZGlycEFyZ3VtZW50c1xuICogQHByb3BlcnR5IHtGdW5jdGlvbj19IGZpbGVGaWx0ZXJcbiAqIEBwcm9wZXJ0eSB7RnVuY3Rpb249fSBkaXJlY3RvcnlGaWx0ZXJcbiAqIEBwcm9wZXJ0eSB7U3RyaW5nPX0gdHlwZVxuICogQHByb3BlcnR5IHtOdW1iZXI9fSBkZXB0aFxuICogQHByb3BlcnR5IHtTdHJpbmc9fSByb290XG4gKiBAcHJvcGVydHkge0Jvb2xlYW49fSBsc3RhdFxuICogQHByb3BlcnR5IHtCb29sZWFuPX0gYmlnaW50XG4gKi9cblxuLyoqXG4gKiBNYWluIGZ1bmN0aW9uIHdoaWNoIGVuZHMgdXAgY2FsbGluZyByZWFkZGlyUmVjIGFuZCByZWFkcyBhbGwgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGluIGdpdmVuIHJvb3QgcmVjdXJzaXZlbHkuXG4gKiBAcGFyYW0ge1N0cmluZ30gcm9vdCBSb290IGRpcmVjdG9yeVxuICogQHBhcmFtIHtSZWFkZGlycEFyZ3VtZW50cz19IG9wdGlvbnMgT3B0aW9ucyB0byBzcGVjaWZ5IHJvb3QgKHN0YXJ0IGRpcmVjdG9yeSksIGZpbHRlcnMgYW5kIHJlY3Vyc2lvbiBkZXB0aFxuICovXG5jb25zdCByZWFkZGlycCA9IChyb290LCBvcHRpb25zID0ge30pID0+IHtcbiAgbGV0IHR5cGUgPSBvcHRpb25zLmVudHJ5VHlwZSB8fCBvcHRpb25zLnR5cGU7XG4gIGlmICh0eXBlID09PSAnYm90aCcpIHR5cGUgPSBGSUxFX0RJUl9UWVBFOyAvLyBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eVxuICBpZiAodHlwZSkgb3B0aW9ucy50eXBlID0gdHlwZTtcbiAgaWYgKCFyb290KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdyZWFkZGlycDogcm9vdCBhcmd1bWVudCBpcyByZXF1aXJlZC4gVXNhZ2U6IHJlYWRkaXJwKHJvb3QsIG9wdGlvbnMpJyk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHJvb3QgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncmVhZGRpcnA6IHJvb3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZy4gVXNhZ2U6IHJlYWRkaXJwKHJvb3QsIG9wdGlvbnMpJyk7XG4gIH0gZWxzZSBpZiAodHlwZSAmJiAhQUxMX1RZUEVTLmluY2x1ZGVzKHR5cGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGByZWFkZGlycDogSW52YWxpZCB0eXBlIHBhc3NlZC4gVXNlIG9uZSBvZiAke0FMTF9UWVBFUy5qb2luKCcsICcpfWApO1xuICB9XG5cbiAgb3B0aW9ucy5yb290ID0gcm9vdDtcbiAgcmV0dXJuIG5ldyBSZWFkZGlycFN0cmVhbShvcHRpb25zKTtcbn07XG5cbmNvbnN0IHJlYWRkaXJwUHJvbWlzZSA9IChyb290LCBvcHRpb25zID0ge30pID0+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBmaWxlcyA9IFtdO1xuICAgIHJlYWRkaXJwKHJvb3QsIG9wdGlvbnMpXG4gICAgICAub24oJ2RhdGEnLCBlbnRyeSA9PiBmaWxlcy5wdXNoKGVudHJ5KSlcbiAgICAgIC5vbignZW5kJywgKCkgPT4gcmVzb2x2ZShmaWxlcykpXG4gICAgICAub24oJ2Vycm9yJywgZXJyb3IgPT4gcmVqZWN0KGVycm9yKSk7XG4gIH0pO1xufTtcblxucmVhZGRpcnAucHJvbWlzZSA9IHJlYWRkaXJwUHJvbWlzZTtcbnJlYWRkaXJwLlJlYWRkaXJwU3RyZWFtID0gUmVhZGRpcnBTdHJlYW07XG5yZWFkZGlycC5kZWZhdWx0ID0gcmVhZGRpcnA7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVhZGRpcnA7XG4iLCIvKiFcbiAqIG5vcm1hbGl6ZS1wYXRoIDxodHRwczovL2dpdGh1Yi5jb20vam9uc2NobGlua2VydC9ub3JtYWxpemUtcGF0aD5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCwgSm9uIFNjaGxpbmtlcnQuXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihwYXRoLCBzdHJpcFRyYWlsaW5nKSB7XG4gIGlmICh0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdleHBlY3RlZCBwYXRoIHRvIGJlIGEgc3RyaW5nJyk7XG4gIH1cblxuICBpZiAocGF0aCA9PT0gJ1xcXFwnIHx8IHBhdGggPT09ICcvJykgcmV0dXJuICcvJztcblxuICB2YXIgbGVuID0gcGF0aC5sZW5ndGg7XG4gIGlmIChsZW4gPD0gMSkgcmV0dXJuIHBhdGg7XG5cbiAgLy8gZW5zdXJlIHRoYXQgd2luMzIgbmFtZXNwYWNlcyBoYXMgdHdvIGxlYWRpbmcgc2xhc2hlcywgc28gdGhhdCB0aGUgcGF0aCBpc1xuICAvLyBoYW5kbGVkIHByb3Blcmx5IGJ5IHRoZSB3aW4zMiB2ZXJzaW9uIG9mIHBhdGgucGFyc2UoKSBhZnRlciBiZWluZyBub3JtYWxpemVkXG4gIC8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2FhMzY1MjQ3KHY9dnMuODUpLmFzcHgjbmFtZXNwYWNlc1xuICB2YXIgcHJlZml4ID0gJyc7XG4gIGlmIChsZW4gPiA0ICYmIHBhdGhbM10gPT09ICdcXFxcJykge1xuICAgIHZhciBjaCA9IHBhdGhbMl07XG4gICAgaWYgKChjaCA9PT0gJz8nIHx8IGNoID09PSAnLicpICYmIHBhdGguc2xpY2UoMCwgMikgPT09ICdcXFxcXFxcXCcpIHtcbiAgICAgIHBhdGggPSBwYXRoLnNsaWNlKDIpO1xuICAgICAgcHJlZml4ID0gJy8vJztcbiAgICB9XG4gIH1cblxuICB2YXIgc2VncyA9IHBhdGguc3BsaXQoL1svXFxcXF0rLyk7XG4gIGlmIChzdHJpcFRyYWlsaW5nICE9PSBmYWxzZSAmJiBzZWdzW3NlZ3MubGVuZ3RoIC0gMV0gPT09ICcnKSB7XG4gICAgc2Vncy5wb3AoKTtcbiAgfVxuICByZXR1cm4gcHJlZml4ICsgc2Vncy5qb2luKCcvJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5cbmNvbnN0IHBpY29tYXRjaCA9IHJlcXVpcmUoJ3BpY29tYXRjaCcpO1xuY29uc3Qgbm9ybWFsaXplUGF0aCA9IHJlcXVpcmUoJ25vcm1hbGl6ZS1wYXRoJyk7XG5cbi8qKlxuICogQHR5cGVkZWYgeyh0ZXN0U3RyaW5nOiBzdHJpbmcpID0+IGJvb2xlYW59IEFueW1hdGNoRm5cbiAqIEB0eXBlZGVmIHtzdHJpbmd8UmVnRXhwfEFueW1hdGNoRm59IEFueW1hdGNoUGF0dGVyblxuICogQHR5cGVkZWYge0FueW1hdGNoUGF0dGVybnxBbnltYXRjaFBhdHRlcm5bXX0gQW55bWF0Y2hNYXRjaGVyXG4gKi9cbmNvbnN0IEJBTkcgPSAnISc7XG5jb25zdCBERUZBVUxUX09QVElPTlMgPSB7cmV0dXJuSW5kZXg6IGZhbHNlfTtcbmNvbnN0IGFycmlmeSA9IChpdGVtKSA9PiBBcnJheS5pc0FycmF5KGl0ZW0pID8gaXRlbSA6IFtpdGVtXTtcblxuLyoqXG4gKiBAcGFyYW0ge0FueW1hdGNoUGF0dGVybn0gbWF0Y2hlclxuICogQHBhcmFtIHtvYmplY3R9IG9wdGlvbnNcbiAqIEByZXR1cm5zIHtBbnltYXRjaEZufVxuICovXG5jb25zdCBjcmVhdGVQYXR0ZXJuID0gKG1hdGNoZXIsIG9wdGlvbnMpID0+IHtcbiAgaWYgKHR5cGVvZiBtYXRjaGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIG1hdGNoZXI7XG4gIH1cbiAgaWYgKHR5cGVvZiBtYXRjaGVyID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGdsb2IgPSBwaWNvbWF0Y2gobWF0Y2hlciwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIChzdHJpbmcpID0+IG1hdGNoZXIgPT09IHN0cmluZyB8fCBnbG9iKHN0cmluZyk7XG4gIH1cbiAgaWYgKG1hdGNoZXIgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICByZXR1cm4gKHN0cmluZykgPT4gbWF0Y2hlci50ZXN0KHN0cmluZyk7XG4gIH1cbiAgcmV0dXJuIChzdHJpbmcpID0+IGZhbHNlO1xufTtcblxuLyoqXG4gKiBAcGFyYW0ge0FycmF5PEZ1bmN0aW9uPn0gcGF0dGVybnNcbiAqIEBwYXJhbSB7QXJyYXk8RnVuY3Rpb24+fSBuZWdQYXR0ZXJuc1xuICogQHBhcmFtIHtTdHJpbmd8QXJyYXl9IGFyZ3NcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gcmV0dXJuSW5kZXhcbiAqIEByZXR1cm5zIHtib29sZWFufG51bWJlcn1cbiAqL1xuY29uc3QgbWF0Y2hQYXR0ZXJucyA9IChwYXR0ZXJucywgbmVnUGF0dGVybnMsIGFyZ3MsIHJldHVybkluZGV4KSA9PiB7XG4gIGNvbnN0IGlzTGlzdCA9IEFycmF5LmlzQXJyYXkoYXJncyk7XG4gIGNvbnN0IF9wYXRoID0gaXNMaXN0ID8gYXJnc1swXSA6IGFyZ3M7XG4gIGlmICghaXNMaXN0ICYmIHR5cGVvZiBfcGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdhbnltYXRjaDogc2Vjb25kIGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmc6IGdvdCAnICtcbiAgICAgIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChfcGF0aCkpXG4gIH1cbiAgY29uc3QgcGF0aCA9IG5vcm1hbGl6ZVBhdGgoX3BhdGgpO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBuZWdQYXR0ZXJucy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICBjb25zdCBuZ2xvYiA9IG5lZ1BhdHRlcm5zW2luZGV4XTtcbiAgICBpZiAobmdsb2IocGF0aCkpIHtcbiAgICAgIHJldHVybiByZXR1cm5JbmRleCA/IC0xIDogZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgYXBwbGllZCA9IGlzTGlzdCAmJiBbcGF0aF0uY29uY2F0KGFyZ3Muc2xpY2UoMSkpO1xuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgcGF0dGVybnMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgY29uc3QgcGF0dGVybiA9IHBhdHRlcm5zW2luZGV4XTtcbiAgICBpZiAoaXNMaXN0ID8gcGF0dGVybiguLi5hcHBsaWVkKSA6IHBhdHRlcm4ocGF0aCkpIHtcbiAgICAgIHJldHVybiByZXR1cm5JbmRleCA/IGluZGV4IDogdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV0dXJuSW5kZXggPyAtMSA6IGZhbHNlO1xufTtcblxuLyoqXG4gKiBAcGFyYW0ge0FueW1hdGNoTWF0Y2hlcn0gbWF0Y2hlcnNcbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSB0ZXN0U3RyaW5nXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0aW9uc1xuICogQHJldHVybnMge2Jvb2xlYW58bnVtYmVyfEZ1bmN0aW9ufVxuICovXG5jb25zdCBhbnltYXRjaCA9IChtYXRjaGVycywgdGVzdFN0cmluZywgb3B0aW9ucyA9IERFRkFVTFRfT1BUSU9OUykgPT4ge1xuICBpZiAobWF0Y2hlcnMgPT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2FueW1hdGNoOiBzcGVjaWZ5IGZpcnN0IGFyZ3VtZW50Jyk7XG4gIH1cbiAgY29uc3Qgb3B0cyA9IHR5cGVvZiBvcHRpb25zID09PSAnYm9vbGVhbicgPyB7cmV0dXJuSW5kZXg6IG9wdGlvbnN9IDogb3B0aW9ucztcbiAgY29uc3QgcmV0dXJuSW5kZXggPSBvcHRzLnJldHVybkluZGV4IHx8IGZhbHNlO1xuXG4gIC8vIEVhcmx5IGNhY2hlIGZvciBtYXRjaGVycy5cbiAgY29uc3QgbXRjaGVycyA9IGFycmlmeShtYXRjaGVycyk7XG4gIGNvbnN0IG5lZ2F0ZWRHbG9icyA9IG10Y2hlcnNcbiAgICAuZmlsdGVyKGl0ZW0gPT4gdHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnICYmIGl0ZW0uY2hhckF0KDApID09PSBCQU5HKVxuICAgIC5tYXAoaXRlbSA9PiBpdGVtLnNsaWNlKDEpKVxuICAgIC5tYXAoaXRlbSA9PiBwaWNvbWF0Y2goaXRlbSwgb3B0cykpO1xuICBjb25zdCBwYXR0ZXJucyA9IG10Y2hlcnMubWFwKG1hdGNoZXIgPT4gY3JlYXRlUGF0dGVybihtYXRjaGVyLCBvcHRzKSk7XG5cbiAgaWYgKHRlc3RTdHJpbmcgPT0gbnVsbCkge1xuICAgIHJldHVybiAodGVzdFN0cmluZywgcmkgPSBmYWxzZSkgPT4ge1xuICAgICAgY29uc3QgcmV0dXJuSW5kZXggPSB0eXBlb2YgcmkgPT09ICdib29sZWFuJyA/IHJpIDogZmFsc2U7XG4gICAgICByZXR1cm4gbWF0Y2hQYXR0ZXJucyhwYXR0ZXJucywgbmVnYXRlZEdsb2JzLCB0ZXN0U3RyaW5nLCByZXR1cm5JbmRleCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1hdGNoUGF0dGVybnMocGF0dGVybnMsIG5lZ2F0ZWRHbG9icywgdGVzdFN0cmluZywgcmV0dXJuSW5kZXgpO1xufTtcblxuYW55bWF0Y2guZGVmYXVsdCA9IGFueW1hdGNoO1xubW9kdWxlLmV4cG9ydHMgPSBhbnltYXRjaDtcbiIsIi8qIVxuICogaXMtZXh0Z2xvYiA8aHR0cHM6Ly9naXRodWIuY29tL2pvbnNjaGxpbmtlcnQvaXMtZXh0Z2xvYj5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiwgSm9uIFNjaGxpbmtlcnQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0V4dGdsb2Ioc3RyKSB7XG4gIGlmICh0eXBlb2Ygc3RyICE9PSAnc3RyaW5nJyB8fCBzdHIgPT09ICcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIG1hdGNoO1xuICB3aGlsZSAoKG1hdGNoID0gLyhcXFxcKS58KFtAPyErKl1cXCguKlxcKSkvZy5leGVjKHN0cikpKSB7XG4gICAgaWYgKG1hdGNoWzJdKSByZXR1cm4gdHJ1ZTtcbiAgICBzdHIgPSBzdHIuc2xpY2UobWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGgpO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcbiIsIi8qIVxuICogaXMtZ2xvYiA8aHR0cHM6Ly9naXRodWIuY29tL2pvbnNjaGxpbmtlcnQvaXMtZ2xvYj5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNywgSm9uIFNjaGxpbmtlcnQuXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuXG4gKi9cblxudmFyIGlzRXh0Z2xvYiA9IHJlcXVpcmUoJ2lzLWV4dGdsb2InKTtcbnZhciBjaGFycyA9IHsgJ3snOiAnfScsICcoJzogJyknLCAnWyc6ICddJ307XG52YXIgc3RyaWN0UmVnZXggPSAvXFxcXCguKXwoXiF8XFwqfFtcXF0uKyldXFw/fFxcW1teXFxcXFxcXV0rXFxdfFxce1teXFxcXH1dK1xcfXxcXChcXD9bOiE9XVteXFxcXCldK1xcKXxcXChbXnxdK1xcfFteXFxcXCldK1xcKSkvO1xudmFyIHJlbGF4ZWRSZWdleCA9IC9cXFxcKC4pfCheIXxbKj97fSgpW1xcXV18XFwoXFw/KS87XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNHbG9iKHN0ciwgb3B0aW9ucykge1xuICBpZiAodHlwZW9mIHN0ciAhPT0gJ3N0cmluZycgfHwgc3RyID09PSAnJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChpc0V4dGdsb2Ioc3RyKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgdmFyIHJlZ2V4ID0gc3RyaWN0UmVnZXg7XG4gIHZhciBtYXRjaDtcblxuICAvLyBvcHRpb25hbGx5IHJlbGF4IHJlZ2V4XG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuc3RyaWN0ID09PSBmYWxzZSkge1xuICAgIHJlZ2V4ID0gcmVsYXhlZFJlZ2V4O1xuICB9XG5cbiAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4LmV4ZWMoc3RyKSkpIHtcbiAgICBpZiAobWF0Y2hbMl0pIHJldHVybiB0cnVlO1xuICAgIHZhciBpZHggPSBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aDtcblxuICAgIC8vIGlmIGFuIG9wZW4gYnJhY2tldC9icmFjZS9wYXJlbiBpcyBlc2NhcGVkLFxuICAgIC8vIHNldCB0aGUgaW5kZXggdG8gdGhlIG5leHQgY2xvc2luZyBjaGFyYWN0ZXJcbiAgICB2YXIgb3BlbiA9IG1hdGNoWzFdO1xuICAgIHZhciBjbG9zZSA9IG9wZW4gPyBjaGFyc1tvcGVuXSA6IG51bGw7XG4gICAgaWYgKG9wZW4gJiYgY2xvc2UpIHtcbiAgICAgIHZhciBuID0gc3RyLmluZGV4T2YoY2xvc2UsIGlkeCk7XG4gICAgICBpZiAobiAhPT0gLTEpIHtcbiAgICAgICAgaWR4ID0gbiArIDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3RyID0gc3RyLnNsaWNlKGlkeCk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGlzR2xvYiA9IHJlcXVpcmUoJ2lzLWdsb2InKTtcbnZhciBwYXRoUG9zaXhEaXJuYW1lID0gcmVxdWlyZSgncGF0aCcpLnBvc2l4LmRpcm5hbWU7XG52YXIgaXNXaW4zMiA9IHJlcXVpcmUoJ29zJykucGxhdGZvcm0oKSA9PT0gJ3dpbjMyJztcblxudmFyIHNsYXNoID0gJy8nO1xudmFyIGJhY2tzbGFzaCA9IC9cXFxcL2c7XG52YXIgZW5jbG9zdXJlID0gL1tcXHtcXFtdLipbXFwvXSouKltcXH1cXF1dJC87XG52YXIgZ2xvYmJ5ID0gLyhefFteXFxcXF0pKFtcXHtcXFtdfFxcKFteXFwpXSskKS87XG52YXIgZXNjYXBlZCA9IC9cXFxcKFtcXCFcXCpcXD9cXHxcXFtcXF1cXChcXClcXHtcXH1dKS9nO1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmZsaXBCYWNrc2xhc2hlcz10cnVlXVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdsb2JQYXJlbnQoc3RyLCBvcHRzKSB7XG4gIHZhciBvcHRpb25zID0gT2JqZWN0LmFzc2lnbih7IGZsaXBCYWNrc2xhc2hlczogdHJ1ZSB9LCBvcHRzKTtcblxuICAvLyBmbGlwIHdpbmRvd3MgcGF0aCBzZXBhcmF0b3JzXG4gIGlmIChvcHRpb25zLmZsaXBCYWNrc2xhc2hlcyAmJiBpc1dpbjMyICYmIHN0ci5pbmRleE9mKHNsYXNoKSA8IDApIHtcbiAgICBzdHIgPSBzdHIucmVwbGFjZShiYWNrc2xhc2gsIHNsYXNoKTtcbiAgfVxuXG4gIC8vIHNwZWNpYWwgY2FzZSBmb3Igc3RyaW5ncyBlbmRpbmcgaW4gZW5jbG9zdXJlIGNvbnRhaW5pbmcgcGF0aCBzZXBhcmF0b3JcbiAgaWYgKGVuY2xvc3VyZS50ZXN0KHN0cikpIHtcbiAgICBzdHIgKz0gc2xhc2g7XG4gIH1cblxuICAvLyBwcmVzZXJ2ZXMgZnVsbCBwYXRoIGluIGNhc2Ugb2YgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3JcbiAgc3RyICs9ICdhJztcblxuICAvLyByZW1vdmUgcGF0aCBwYXJ0cyB0aGF0IGFyZSBnbG9iYnlcbiAgZG8ge1xuICAgIHN0ciA9IHBhdGhQb3NpeERpcm5hbWUoc3RyKTtcbiAgfSB3aGlsZSAoaXNHbG9iKHN0cikgfHwgZ2xvYmJ5LnRlc3Qoc3RyKSk7XG5cbiAgLy8gcmVtb3ZlIGVzY2FwZSBjaGFycyBhbmQgcmV0dXJuIHJlc3VsdFxuICByZXR1cm4gc3RyLnJlcGxhY2UoZXNjYXBlZCwgJyQxJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLmlzSW50ZWdlciA9IG51bSA9PiB7XG4gIGlmICh0eXBlb2YgbnVtID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBOdW1iZXIuaXNJbnRlZ2VyKG51bSk7XG4gIH1cbiAgaWYgKHR5cGVvZiBudW0gPT09ICdzdHJpbmcnICYmIG51bS50cmltKCkgIT09ICcnKSB7XG4gICAgcmV0dXJuIE51bWJlci5pc0ludGVnZXIoTnVtYmVyKG51bSkpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogRmluZCBhIG5vZGUgb2YgdGhlIGdpdmVuIHR5cGVcbiAqL1xuXG5leHBvcnRzLmZpbmQgPSAobm9kZSwgdHlwZSkgPT4gbm9kZS5ub2Rlcy5maW5kKG5vZGUgPT4gbm9kZS50eXBlID09PSB0eXBlKTtcblxuLyoqXG4gKiBGaW5kIGEgbm9kZSBvZiB0aGUgZ2l2ZW4gdHlwZVxuICovXG5cbmV4cG9ydHMuZXhjZWVkc0xpbWl0ID0gKG1pbiwgbWF4LCBzdGVwID0gMSwgbGltaXQpID0+IHtcbiAgaWYgKGxpbWl0ID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlO1xuICBpZiAoIWV4cG9ydHMuaXNJbnRlZ2VyKG1pbikgfHwgIWV4cG9ydHMuaXNJbnRlZ2VyKG1heCkpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuICgoTnVtYmVyKG1heCkgLSBOdW1iZXIobWluKSkgLyBOdW1iZXIoc3RlcCkpID49IGxpbWl0O1xufTtcblxuLyoqXG4gKiBFc2NhcGUgdGhlIGdpdmVuIG5vZGUgd2l0aCAnXFxcXCcgYmVmb3JlIG5vZGUudmFsdWVcbiAqL1xuXG5leHBvcnRzLmVzY2FwZU5vZGUgPSAoYmxvY2ssIG4gPSAwLCB0eXBlKSA9PiB7XG4gIGxldCBub2RlID0gYmxvY2subm9kZXNbbl07XG4gIGlmICghbm9kZSkgcmV0dXJuO1xuXG4gIGlmICgodHlwZSAmJiBub2RlLnR5cGUgPT09IHR5cGUpIHx8IG5vZGUudHlwZSA9PT0gJ29wZW4nIHx8IG5vZGUudHlwZSA9PT0gJ2Nsb3NlJykge1xuICAgIGlmIChub2RlLmVzY2FwZWQgIT09IHRydWUpIHtcbiAgICAgIG5vZGUudmFsdWUgPSAnXFxcXCcgKyBub2RlLnZhbHVlO1xuICAgICAgbm9kZS5lc2NhcGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBicmFjZSBub2RlIHNob3VsZCBiZSBlbmNsb3NlZCBpbiBsaXRlcmFsIGJyYWNlc1xuICovXG5cbmV4cG9ydHMuZW5jbG9zZUJyYWNlID0gbm9kZSA9PiB7XG4gIGlmIChub2RlLnR5cGUgIT09ICdicmFjZScpIHJldHVybiBmYWxzZTtcbiAgaWYgKChub2RlLmNvbW1hcyA+PiAwICsgbm9kZS5yYW5nZXMgPj4gMCkgPT09IDApIHtcbiAgICBub2RlLmludmFsaWQgPSB0cnVlO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIGEgYnJhY2Ugbm9kZSBpcyBpbnZhbGlkLlxuICovXG5cbmV4cG9ydHMuaXNJbnZhbGlkQnJhY2UgPSBibG9jayA9PiB7XG4gIGlmIChibG9jay50eXBlICE9PSAnYnJhY2UnKSByZXR1cm4gZmFsc2U7XG4gIGlmIChibG9jay5pbnZhbGlkID09PSB0cnVlIHx8IGJsb2NrLmRvbGxhcikgcmV0dXJuIHRydWU7XG4gIGlmICgoYmxvY2suY29tbWFzID4+IDAgKyBibG9jay5yYW5nZXMgPj4gMCkgPT09IDApIHtcbiAgICBibG9jay5pbnZhbGlkID0gdHJ1ZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAoYmxvY2sub3BlbiAhPT0gdHJ1ZSB8fCBibG9jay5jbG9zZSAhPT0gdHJ1ZSkge1xuICAgIGJsb2NrLmludmFsaWQgPSB0cnVlO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIGEgbm9kZSBpcyBhbiBvcGVuIG9yIGNsb3NlIG5vZGVcbiAqL1xuXG5leHBvcnRzLmlzT3Blbk9yQ2xvc2UgPSBub2RlID0+IHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gJ29wZW4nIHx8IG5vZGUudHlwZSA9PT0gJ2Nsb3NlJykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBub2RlLm9wZW4gPT09IHRydWUgfHwgbm9kZS5jbG9zZSA9PT0gdHJ1ZTtcbn07XG5cbi8qKlxuICogUmVkdWNlIGFuIGFycmF5IG9mIHRleHQgbm9kZXMuXG4gKi9cblxuZXhwb3J0cy5yZWR1Y2UgPSBub2RlcyA9PiBub2Rlcy5yZWR1Y2UoKGFjYywgbm9kZSkgPT4ge1xuICBpZiAobm9kZS50eXBlID09PSAndGV4dCcpIGFjYy5wdXNoKG5vZGUudmFsdWUpO1xuICBpZiAobm9kZS50eXBlID09PSAncmFuZ2UnKSBub2RlLnR5cGUgPSAndGV4dCc7XG4gIHJldHVybiBhY2M7XG59LCBbXSk7XG5cbi8qKlxuICogRmxhdHRlbiBhbiBhcnJheVxuICovXG5cbmV4cG9ydHMuZmxhdHRlbiA9ICguLi5hcmdzKSA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IFtdO1xuICBjb25zdCBmbGF0ID0gYXJyID0+IHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGVsZSA9IGFycltpXTtcbiAgICAgIEFycmF5LmlzQXJyYXkoZWxlKSA/IGZsYXQoZWxlLCByZXN1bHQpIDogZWxlICE9PSB2b2lkIDAgJiYgcmVzdWx0LnB1c2goZWxlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbiAgZmxhdChhcmdzKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IChhc3QsIG9wdGlvbnMgPSB7fSkgPT4ge1xuICBsZXQgc3RyaW5naWZ5ID0gKG5vZGUsIHBhcmVudCA9IHt9KSA9PiB7XG4gICAgbGV0IGludmFsaWRCbG9jayA9IG9wdGlvbnMuZXNjYXBlSW52YWxpZCAmJiB1dGlscy5pc0ludmFsaWRCcmFjZShwYXJlbnQpO1xuICAgIGxldCBpbnZhbGlkTm9kZSA9IG5vZGUuaW52YWxpZCA9PT0gdHJ1ZSAmJiBvcHRpb25zLmVzY2FwZUludmFsaWQgPT09IHRydWU7XG4gICAgbGV0IG91dHB1dCA9ICcnO1xuXG4gICAgaWYgKG5vZGUudmFsdWUpIHtcbiAgICAgIGlmICgoaW52YWxpZEJsb2NrIHx8IGludmFsaWROb2RlKSAmJiB1dGlscy5pc09wZW5PckNsb3NlKG5vZGUpKSB7XG4gICAgICAgIHJldHVybiAnXFxcXCcgKyBub2RlLnZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5vZGUudmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUudmFsdWUpIHtcbiAgICAgIHJldHVybiBub2RlLnZhbHVlO1xuICAgIH1cblxuICAgIGlmIChub2RlLm5vZGVzKSB7XG4gICAgICBmb3IgKGxldCBjaGlsZCBvZiBub2RlLm5vZGVzKSB7XG4gICAgICAgIG91dHB1dCArPSBzdHJpbmdpZnkoY2hpbGQpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0O1xuICB9O1xuXG4gIHJldHVybiBzdHJpbmdpZnkoYXN0KTtcbn07XG5cbiIsIi8qIVxuICogaXMtbnVtYmVyIDxodHRwczovL2dpdGh1Yi5jb20vam9uc2NobGlua2VydC9pcy1udW1iZXI+XG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE0LXByZXNlbnQsIEpvbiBTY2hsaW5rZXJ0LlxuICogUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihudW0pIHtcbiAgaWYgKHR5cGVvZiBudW0gPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIG51bSAtIG51bSA9PT0gMDtcbiAgfVxuICBpZiAodHlwZW9mIG51bSA9PT0gJ3N0cmluZycgJiYgbnVtLnRyaW0oKSAhPT0gJycpIHtcbiAgICByZXR1cm4gTnVtYmVyLmlzRmluaXRlID8gTnVtYmVyLmlzRmluaXRlKCtudW0pIDogaXNGaW5pdGUoK251bSk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufTtcbiIsIi8qIVxuICogdG8tcmVnZXgtcmFuZ2UgPGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb21hdGNoL3RvLXJlZ2V4LXJhbmdlPlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxNS1wcmVzZW50LCBKb24gU2NobGlua2VydC5cbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbmNvbnN0IGlzTnVtYmVyID0gcmVxdWlyZSgnaXMtbnVtYmVyJyk7XG5cbmNvbnN0IHRvUmVnZXhSYW5nZSA9IChtaW4sIG1heCwgb3B0aW9ucykgPT4ge1xuICBpZiAoaXNOdW1iZXIobWluKSA9PT0gZmFsc2UpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd0b1JlZ2V4UmFuZ2U6IGV4cGVjdGVkIHRoZSBmaXJzdCBhcmd1bWVudCB0byBiZSBhIG51bWJlcicpO1xuICB9XG5cbiAgaWYgKG1heCA9PT0gdm9pZCAwIHx8IG1pbiA9PT0gbWF4KSB7XG4gICAgcmV0dXJuIFN0cmluZyhtaW4pO1xuICB9XG5cbiAgaWYgKGlzTnVtYmVyKG1heCkgPT09IGZhbHNlKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndG9SZWdleFJhbmdlOiBleHBlY3RlZCB0aGUgc2Vjb25kIGFyZ3VtZW50IHRvIGJlIGEgbnVtYmVyLicpO1xuICB9XG5cbiAgbGV0IG9wdHMgPSB7IHJlbGF4WmVyb3M6IHRydWUsIC4uLm9wdGlvbnMgfTtcbiAgaWYgKHR5cGVvZiBvcHRzLnN0cmljdFplcm9zID09PSAnYm9vbGVhbicpIHtcbiAgICBvcHRzLnJlbGF4WmVyb3MgPSBvcHRzLnN0cmljdFplcm9zID09PSBmYWxzZTtcbiAgfVxuXG4gIGxldCByZWxheCA9IFN0cmluZyhvcHRzLnJlbGF4WmVyb3MpO1xuICBsZXQgc2hvcnRoYW5kID0gU3RyaW5nKG9wdHMuc2hvcnRoYW5kKTtcbiAgbGV0IGNhcHR1cmUgPSBTdHJpbmcob3B0cy5jYXB0dXJlKTtcbiAgbGV0IHdyYXAgPSBTdHJpbmcob3B0cy53cmFwKTtcbiAgbGV0IGNhY2hlS2V5ID0gbWluICsgJzonICsgbWF4ICsgJz0nICsgcmVsYXggKyBzaG9ydGhhbmQgKyBjYXB0dXJlICsgd3JhcDtcblxuICBpZiAodG9SZWdleFJhbmdlLmNhY2hlLmhhc093blByb3BlcnR5KGNhY2hlS2V5KSkge1xuICAgIHJldHVybiB0b1JlZ2V4UmFuZ2UuY2FjaGVbY2FjaGVLZXldLnJlc3VsdDtcbiAgfVxuXG4gIGxldCBhID0gTWF0aC5taW4obWluLCBtYXgpO1xuICBsZXQgYiA9IE1hdGgubWF4KG1pbiwgbWF4KTtcblxuICBpZiAoTWF0aC5hYnMoYSAtIGIpID09PSAxKSB7XG4gICAgbGV0IHJlc3VsdCA9IG1pbiArICd8JyArIG1heDtcbiAgICBpZiAob3B0cy5jYXB0dXJlKSB7XG4gICAgICByZXR1cm4gYCgke3Jlc3VsdH0pYDtcbiAgICB9XG4gICAgaWYgKG9wdHMud3JhcCA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIHJldHVybiBgKD86JHtyZXN1bHR9KWA7XG4gIH1cblxuICBsZXQgaXNQYWRkZWQgPSBoYXNQYWRkaW5nKG1pbikgfHwgaGFzUGFkZGluZyhtYXgpO1xuICBsZXQgc3RhdGUgPSB7IG1pbiwgbWF4LCBhLCBiIH07XG4gIGxldCBwb3NpdGl2ZXMgPSBbXTtcbiAgbGV0IG5lZ2F0aXZlcyA9IFtdO1xuXG4gIGlmIChpc1BhZGRlZCkge1xuICAgIHN0YXRlLmlzUGFkZGVkID0gaXNQYWRkZWQ7XG4gICAgc3RhdGUubWF4TGVuID0gU3RyaW5nKHN0YXRlLm1heCkubGVuZ3RoO1xuICB9XG5cbiAgaWYgKGEgPCAwKSB7XG4gICAgbGV0IG5ld01pbiA9IGIgPCAwID8gTWF0aC5hYnMoYikgOiAxO1xuICAgIG5lZ2F0aXZlcyA9IHNwbGl0VG9QYXR0ZXJucyhuZXdNaW4sIE1hdGguYWJzKGEpLCBzdGF0ZSwgb3B0cyk7XG4gICAgYSA9IHN0YXRlLmEgPSAwO1xuICB9XG5cbiAgaWYgKGIgPj0gMCkge1xuICAgIHBvc2l0aXZlcyA9IHNwbGl0VG9QYXR0ZXJucyhhLCBiLCBzdGF0ZSwgb3B0cyk7XG4gIH1cblxuICBzdGF0ZS5uZWdhdGl2ZXMgPSBuZWdhdGl2ZXM7XG4gIHN0YXRlLnBvc2l0aXZlcyA9IHBvc2l0aXZlcztcbiAgc3RhdGUucmVzdWx0ID0gY29sbGF0ZVBhdHRlcm5zKG5lZ2F0aXZlcywgcG9zaXRpdmVzLCBvcHRzKTtcblxuICBpZiAob3B0cy5jYXB0dXJlID09PSB0cnVlKSB7XG4gICAgc3RhdGUucmVzdWx0ID0gYCgke3N0YXRlLnJlc3VsdH0pYDtcbiAgfSBlbHNlIGlmIChvcHRzLndyYXAgIT09IGZhbHNlICYmIChwb3NpdGl2ZXMubGVuZ3RoICsgbmVnYXRpdmVzLmxlbmd0aCkgPiAxKSB7XG4gICAgc3RhdGUucmVzdWx0ID0gYCg/OiR7c3RhdGUucmVzdWx0fSlgO1xuICB9XG5cbiAgdG9SZWdleFJhbmdlLmNhY2hlW2NhY2hlS2V5XSA9IHN0YXRlO1xuICByZXR1cm4gc3RhdGUucmVzdWx0O1xufTtcblxuZnVuY3Rpb24gY29sbGF0ZVBhdHRlcm5zKG5lZywgcG9zLCBvcHRpb25zKSB7XG4gIGxldCBvbmx5TmVnYXRpdmUgPSBmaWx0ZXJQYXR0ZXJucyhuZWcsIHBvcywgJy0nLCBmYWxzZSwgb3B0aW9ucykgfHwgW107XG4gIGxldCBvbmx5UG9zaXRpdmUgPSBmaWx0ZXJQYXR0ZXJucyhwb3MsIG5lZywgJycsIGZhbHNlLCBvcHRpb25zKSB8fCBbXTtcbiAgbGV0IGludGVyc2VjdGVkID0gZmlsdGVyUGF0dGVybnMobmVnLCBwb3MsICctPycsIHRydWUsIG9wdGlvbnMpIHx8IFtdO1xuICBsZXQgc3VicGF0dGVybnMgPSBvbmx5TmVnYXRpdmUuY29uY2F0KGludGVyc2VjdGVkKS5jb25jYXQob25seVBvc2l0aXZlKTtcbiAgcmV0dXJuIHN1YnBhdHRlcm5zLmpvaW4oJ3wnKTtcbn1cblxuZnVuY3Rpb24gc3BsaXRUb1JhbmdlcyhtaW4sIG1heCkge1xuICBsZXQgbmluZXMgPSAxO1xuICBsZXQgemVyb3MgPSAxO1xuXG4gIGxldCBzdG9wID0gY291bnROaW5lcyhtaW4sIG5pbmVzKTtcbiAgbGV0IHN0b3BzID0gbmV3IFNldChbbWF4XSk7XG5cbiAgd2hpbGUgKG1pbiA8PSBzdG9wICYmIHN0b3AgPD0gbWF4KSB7XG4gICAgc3RvcHMuYWRkKHN0b3ApO1xuICAgIG5pbmVzICs9IDE7XG4gICAgc3RvcCA9IGNvdW50TmluZXMobWluLCBuaW5lcyk7XG4gIH1cblxuICBzdG9wID0gY291bnRaZXJvcyhtYXggKyAxLCB6ZXJvcykgLSAxO1xuXG4gIHdoaWxlIChtaW4gPCBzdG9wICYmIHN0b3AgPD0gbWF4KSB7XG4gICAgc3RvcHMuYWRkKHN0b3ApO1xuICAgIHplcm9zICs9IDE7XG4gICAgc3RvcCA9IGNvdW50WmVyb3MobWF4ICsgMSwgemVyb3MpIC0gMTtcbiAgfVxuXG4gIHN0b3BzID0gWy4uLnN0b3BzXTtcbiAgc3RvcHMuc29ydChjb21wYXJlKTtcbiAgcmV0dXJuIHN0b3BzO1xufVxuXG4vKipcbiAqIENvbnZlcnQgYSByYW5nZSB0byBhIHJlZ2V4IHBhdHRlcm5cbiAqIEBwYXJhbSB7TnVtYmVyfSBgc3RhcnRgXG4gKiBAcGFyYW0ge051bWJlcn0gYHN0b3BgXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cblxuZnVuY3Rpb24gcmFuZ2VUb1BhdHRlcm4oc3RhcnQsIHN0b3AsIG9wdGlvbnMpIHtcbiAgaWYgKHN0YXJ0ID09PSBzdG9wKSB7XG4gICAgcmV0dXJuIHsgcGF0dGVybjogc3RhcnQsIGNvdW50OiBbXSwgZGlnaXRzOiAwIH07XG4gIH1cblxuICBsZXQgemlwcGVkID0gemlwKHN0YXJ0LCBzdG9wKTtcbiAgbGV0IGRpZ2l0cyA9IHppcHBlZC5sZW5ndGg7XG4gIGxldCBwYXR0ZXJuID0gJyc7XG4gIGxldCBjb3VudCA9IDA7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaWdpdHM7IGkrKykge1xuICAgIGxldCBbc3RhcnREaWdpdCwgc3RvcERpZ2l0XSA9IHppcHBlZFtpXTtcblxuICAgIGlmIChzdGFydERpZ2l0ID09PSBzdG9wRGlnaXQpIHtcbiAgICAgIHBhdHRlcm4gKz0gc3RhcnREaWdpdDtcblxuICAgIH0gZWxzZSBpZiAoc3RhcnREaWdpdCAhPT0gJzAnIHx8IHN0b3BEaWdpdCAhPT0gJzknKSB7XG4gICAgICBwYXR0ZXJuICs9IHRvQ2hhcmFjdGVyQ2xhc3Moc3RhcnREaWdpdCwgc3RvcERpZ2l0LCBvcHRpb25zKTtcblxuICAgIH0gZWxzZSB7XG4gICAgICBjb3VudCsrO1xuICAgIH1cbiAgfVxuXG4gIGlmIChjb3VudCkge1xuICAgIHBhdHRlcm4gKz0gb3B0aW9ucy5zaG9ydGhhbmQgPT09IHRydWUgPyAnXFxcXGQnIDogJ1swLTldJztcbiAgfVxuXG4gIHJldHVybiB7IHBhdHRlcm4sIGNvdW50OiBbY291bnRdLCBkaWdpdHMgfTtcbn1cblxuZnVuY3Rpb24gc3BsaXRUb1BhdHRlcm5zKG1pbiwgbWF4LCB0b2ssIG9wdGlvbnMpIHtcbiAgbGV0IHJhbmdlcyA9IHNwbGl0VG9SYW5nZXMobWluLCBtYXgpO1xuICBsZXQgdG9rZW5zID0gW107XG4gIGxldCBzdGFydCA9IG1pbjtcbiAgbGV0IHByZXY7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCByYW5nZXMubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgbWF4ID0gcmFuZ2VzW2ldO1xuICAgIGxldCBvYmogPSByYW5nZVRvUGF0dGVybihTdHJpbmcoc3RhcnQpLCBTdHJpbmcobWF4KSwgb3B0aW9ucyk7XG4gICAgbGV0IHplcm9zID0gJyc7XG5cbiAgICBpZiAoIXRvay5pc1BhZGRlZCAmJiBwcmV2ICYmIHByZXYucGF0dGVybiA9PT0gb2JqLnBhdHRlcm4pIHtcbiAgICAgIGlmIChwcmV2LmNvdW50Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgcHJldi5jb3VudC5wb3AoKTtcbiAgICAgIH1cblxuICAgICAgcHJldi5jb3VudC5wdXNoKG9iai5jb3VudFswXSk7XG4gICAgICBwcmV2LnN0cmluZyA9IHByZXYucGF0dGVybiArIHRvUXVhbnRpZmllcihwcmV2LmNvdW50KTtcbiAgICAgIHN0YXJ0ID0gbWF4ICsgMTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICh0b2suaXNQYWRkZWQpIHtcbiAgICAgIHplcm9zID0gcGFkWmVyb3MobWF4LCB0b2ssIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIG9iai5zdHJpbmcgPSB6ZXJvcyArIG9iai5wYXR0ZXJuICsgdG9RdWFudGlmaWVyKG9iai5jb3VudCk7XG4gICAgdG9rZW5zLnB1c2gob2JqKTtcbiAgICBzdGFydCA9IG1heCArIDE7XG4gICAgcHJldiA9IG9iajtcbiAgfVxuXG4gIHJldHVybiB0b2tlbnM7XG59XG5cbmZ1bmN0aW9uIGZpbHRlclBhdHRlcm5zKGFyciwgY29tcGFyaXNvbiwgcHJlZml4LCBpbnRlcnNlY3Rpb24sIG9wdGlvbnMpIHtcbiAgbGV0IHJlc3VsdCA9IFtdO1xuXG4gIGZvciAobGV0IGVsZSBvZiBhcnIpIHtcbiAgICBsZXQgeyBzdHJpbmcgfSA9IGVsZTtcblxuICAgIC8vIG9ubHkgcHVzaCBpZiBfYm90aF8gYXJlIG5lZ2F0aXZlLi4uXG4gICAgaWYgKCFpbnRlcnNlY3Rpb24gJiYgIWNvbnRhaW5zKGNvbXBhcmlzb24sICdzdHJpbmcnLCBzdHJpbmcpKSB7XG4gICAgICByZXN1bHQucHVzaChwcmVmaXggKyBzdHJpbmcpO1xuICAgIH1cblxuICAgIC8vIG9yIF9ib3RoXyBhcmUgcG9zaXRpdmVcbiAgICBpZiAoaW50ZXJzZWN0aW9uICYmIGNvbnRhaW5zKGNvbXBhcmlzb24sICdzdHJpbmcnLCBzdHJpbmcpKSB7XG4gICAgICByZXN1bHQucHVzaChwcmVmaXggKyBzdHJpbmcpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIFppcCBzdHJpbmdzXG4gKi9cblxuZnVuY3Rpb24gemlwKGEsIGIpIHtcbiAgbGV0IGFyciA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIGFyci5wdXNoKFthW2ldLCBiW2ldXSk7XG4gIHJldHVybiBhcnI7XG59XG5cbmZ1bmN0aW9uIGNvbXBhcmUoYSwgYikge1xuICByZXR1cm4gYSA+IGIgPyAxIDogYiA+IGEgPyAtMSA6IDA7XG59XG5cbmZ1bmN0aW9uIGNvbnRhaW5zKGFyciwga2V5LCB2YWwpIHtcbiAgcmV0dXJuIGFyci5zb21lKGVsZSA9PiBlbGVba2V5XSA9PT0gdmFsKTtcbn1cblxuZnVuY3Rpb24gY291bnROaW5lcyhtaW4sIGxlbikge1xuICByZXR1cm4gTnVtYmVyKFN0cmluZyhtaW4pLnNsaWNlKDAsIC1sZW4pICsgJzknLnJlcGVhdChsZW4pKTtcbn1cblxuZnVuY3Rpb24gY291bnRaZXJvcyhpbnRlZ2VyLCB6ZXJvcykge1xuICByZXR1cm4gaW50ZWdlciAtIChpbnRlZ2VyICUgTWF0aC5wb3coMTAsIHplcm9zKSk7XG59XG5cbmZ1bmN0aW9uIHRvUXVhbnRpZmllcihkaWdpdHMpIHtcbiAgbGV0IFtzdGFydCA9IDAsIHN0b3AgPSAnJ10gPSBkaWdpdHM7XG4gIGlmIChzdG9wIHx8IHN0YXJ0ID4gMSkge1xuICAgIHJldHVybiBgeyR7c3RhcnQgKyAoc3RvcCA/ICcsJyArIHN0b3AgOiAnJyl9fWA7XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG5mdW5jdGlvbiB0b0NoYXJhY3RlckNsYXNzKGEsIGIsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIGBbJHthfSR7KGIgLSBhID09PSAxKSA/ICcnIDogJy0nfSR7Yn1dYDtcbn1cblxuZnVuY3Rpb24gaGFzUGFkZGluZyhzdHIpIHtcbiAgcmV0dXJuIC9eLT8oMCspXFxkLy50ZXN0KHN0cik7XG59XG5cbmZ1bmN0aW9uIHBhZFplcm9zKHZhbHVlLCB0b2ssIG9wdGlvbnMpIHtcbiAgaWYgKCF0b2suaXNQYWRkZWQpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBsZXQgZGlmZiA9IE1hdGguYWJzKHRvay5tYXhMZW4gLSBTdHJpbmcodmFsdWUpLmxlbmd0aCk7XG4gIGxldCByZWxheCA9IG9wdGlvbnMucmVsYXhaZXJvcyAhPT0gZmFsc2U7XG5cbiAgc3dpdGNoIChkaWZmKSB7XG4gICAgY2FzZSAwOlxuICAgICAgcmV0dXJuICcnO1xuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiByZWxheCA/ICcwPycgOiAnMCc7XG4gICAgY2FzZSAyOlxuICAgICAgcmV0dXJuIHJlbGF4ID8gJzB7MCwyfScgOiAnMDAnO1xuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHJldHVybiByZWxheCA/IGAwezAsJHtkaWZmfX1gIDogYDB7JHtkaWZmfX1gO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIENhY2hlXG4gKi9cblxudG9SZWdleFJhbmdlLmNhY2hlID0ge307XG50b1JlZ2V4UmFuZ2UuY2xlYXJDYWNoZSA9ICgpID0+ICh0b1JlZ2V4UmFuZ2UuY2FjaGUgPSB7fSk7XG5cbi8qKlxuICogRXhwb3NlIGB0b1JlZ2V4UmFuZ2VgXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSB0b1JlZ2V4UmFuZ2U7XG4iLCIvKiFcbiAqIGZpbGwtcmFuZ2UgPGh0dHBzOi8vZ2l0aHViLmNvbS9qb25zY2hsaW5rZXJ0L2ZpbGwtcmFuZ2U+XG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDE0LXByZXNlbnQsIEpvbiBTY2hsaW5rZXJ0LlxuICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuY29uc3QgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcbmNvbnN0IHRvUmVnZXhSYW5nZSA9IHJlcXVpcmUoJ3RvLXJlZ2V4LXJhbmdlJyk7XG5cbmNvbnN0IGlzT2JqZWN0ID0gdmFsID0+IHZhbCAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWwpO1xuXG5jb25zdCB0cmFuc2Zvcm0gPSB0b051bWJlciA9PiB7XG4gIHJldHVybiB2YWx1ZSA9PiB0b051bWJlciA9PT0gdHJ1ZSA/IE51bWJlcih2YWx1ZSkgOiBTdHJpbmcodmFsdWUpO1xufTtcblxuY29uc3QgaXNWYWxpZFZhbHVlID0gdmFsdWUgPT4ge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyB8fCAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZSAhPT0gJycpO1xufTtcblxuY29uc3QgaXNOdW1iZXIgPSBudW0gPT4gTnVtYmVyLmlzSW50ZWdlcigrbnVtKTtcblxuY29uc3QgemVyb3MgPSBpbnB1dCA9PiB7XG4gIGxldCB2YWx1ZSA9IGAke2lucHV0fWA7XG4gIGxldCBpbmRleCA9IC0xO1xuICBpZiAodmFsdWVbMF0gPT09ICctJykgdmFsdWUgPSB2YWx1ZS5zbGljZSgxKTtcbiAgaWYgKHZhbHVlID09PSAnMCcpIHJldHVybiBmYWxzZTtcbiAgd2hpbGUgKHZhbHVlWysraW5kZXhdID09PSAnMCcpO1xuICByZXR1cm4gaW5kZXggPiAwO1xufTtcblxuY29uc3Qgc3RyaW5naWZ5ID0gKHN0YXJ0LCBlbmQsIG9wdGlvbnMpID0+IHtcbiAgaWYgKHR5cGVvZiBzdGFydCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGVuZCA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gb3B0aW9ucy5zdHJpbmdpZnkgPT09IHRydWU7XG59O1xuXG5jb25zdCBwYWQgPSAoaW5wdXQsIG1heExlbmd0aCwgdG9OdW1iZXIpID0+IHtcbiAgaWYgKG1heExlbmd0aCA+IDApIHtcbiAgICBsZXQgZGFzaCA9IGlucHV0WzBdID09PSAnLScgPyAnLScgOiAnJztcbiAgICBpZiAoZGFzaCkgaW5wdXQgPSBpbnB1dC5zbGljZSgxKTtcbiAgICBpbnB1dCA9IChkYXNoICsgaW5wdXQucGFkU3RhcnQoZGFzaCA/IG1heExlbmd0aCAtIDEgOiBtYXhMZW5ndGgsICcwJykpO1xuICB9XG4gIGlmICh0b051bWJlciA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gU3RyaW5nKGlucHV0KTtcbiAgfVxuICByZXR1cm4gaW5wdXQ7XG59O1xuXG5jb25zdCB0b01heExlbiA9IChpbnB1dCwgbWF4TGVuZ3RoKSA9PiB7XG4gIGxldCBuZWdhdGl2ZSA9IGlucHV0WzBdID09PSAnLScgPyAnLScgOiAnJztcbiAgaWYgKG5lZ2F0aXZlKSB7XG4gICAgaW5wdXQgPSBpbnB1dC5zbGljZSgxKTtcbiAgICBtYXhMZW5ndGgtLTtcbiAgfVxuICB3aGlsZSAoaW5wdXQubGVuZ3RoIDwgbWF4TGVuZ3RoKSBpbnB1dCA9ICcwJyArIGlucHV0O1xuICByZXR1cm4gbmVnYXRpdmUgPyAoJy0nICsgaW5wdXQpIDogaW5wdXQ7XG59O1xuXG5jb25zdCB0b1NlcXVlbmNlID0gKHBhcnRzLCBvcHRpb25zKSA9PiB7XG4gIHBhcnRzLm5lZ2F0aXZlcy5zb3J0KChhLCBiKSA9PiBhIDwgYiA/IC0xIDogYSA+IGIgPyAxIDogMCk7XG4gIHBhcnRzLnBvc2l0aXZlcy5zb3J0KChhLCBiKSA9PiBhIDwgYiA/IC0xIDogYSA+IGIgPyAxIDogMCk7XG5cbiAgbGV0IHByZWZpeCA9IG9wdGlvbnMuY2FwdHVyZSA/ICcnIDogJz86JztcbiAgbGV0IHBvc2l0aXZlcyA9ICcnO1xuICBsZXQgbmVnYXRpdmVzID0gJyc7XG4gIGxldCByZXN1bHQ7XG5cbiAgaWYgKHBhcnRzLnBvc2l0aXZlcy5sZW5ndGgpIHtcbiAgICBwb3NpdGl2ZXMgPSBwYXJ0cy5wb3NpdGl2ZXMuam9pbignfCcpO1xuICB9XG5cbiAgaWYgKHBhcnRzLm5lZ2F0aXZlcy5sZW5ndGgpIHtcbiAgICBuZWdhdGl2ZXMgPSBgLSgke3ByZWZpeH0ke3BhcnRzLm5lZ2F0aXZlcy5qb2luKCd8Jyl9KWA7XG4gIH1cblxuICBpZiAocG9zaXRpdmVzICYmIG5lZ2F0aXZlcykge1xuICAgIHJlc3VsdCA9IGAke3Bvc2l0aXZlc318JHtuZWdhdGl2ZXN9YDtcbiAgfSBlbHNlIHtcbiAgICByZXN1bHQgPSBwb3NpdGl2ZXMgfHwgbmVnYXRpdmVzO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMud3JhcCkge1xuICAgIHJldHVybiBgKCR7cHJlZml4fSR7cmVzdWx0fSlgO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmNvbnN0IHRvUmFuZ2UgPSAoYSwgYiwgaXNOdW1iZXJzLCBvcHRpb25zKSA9PiB7XG4gIGlmIChpc051bWJlcnMpIHtcbiAgICByZXR1cm4gdG9SZWdleFJhbmdlKGEsIGIsIHsgd3JhcDogZmFsc2UsIC4uLm9wdGlvbnMgfSk7XG4gIH1cblxuICBsZXQgc3RhcnQgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGEpO1xuICBpZiAoYSA9PT0gYikgcmV0dXJuIHN0YXJ0O1xuXG4gIGxldCBzdG9wID0gU3RyaW5nLmZyb21DaGFyQ29kZShiKTtcbiAgcmV0dXJuIGBbJHtzdGFydH0tJHtzdG9wfV1gO1xufTtcblxuY29uc3QgdG9SZWdleCA9IChzdGFydCwgZW5kLCBvcHRpb25zKSA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KHN0YXJ0KSkge1xuICAgIGxldCB3cmFwID0gb3B0aW9ucy53cmFwID09PSB0cnVlO1xuICAgIGxldCBwcmVmaXggPSBvcHRpb25zLmNhcHR1cmUgPyAnJyA6ICc/Oic7XG4gICAgcmV0dXJuIHdyYXAgPyBgKCR7cHJlZml4fSR7c3RhcnQuam9pbignfCcpfSlgIDogc3RhcnQuam9pbignfCcpO1xuICB9XG4gIHJldHVybiB0b1JlZ2V4UmFuZ2Uoc3RhcnQsIGVuZCwgb3B0aW9ucyk7XG59O1xuXG5jb25zdCByYW5nZUVycm9yID0gKC4uLmFyZ3MpID0+IHtcbiAgcmV0dXJuIG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHJhbmdlIGFyZ3VtZW50czogJyArIHV0aWwuaW5zcGVjdCguLi5hcmdzKSk7XG59O1xuXG5jb25zdCBpbnZhbGlkUmFuZ2UgPSAoc3RhcnQsIGVuZCwgb3B0aW9ucykgPT4ge1xuICBpZiAob3B0aW9ucy5zdHJpY3RSYW5nZXMgPT09IHRydWUpIHRocm93IHJhbmdlRXJyb3IoW3N0YXJ0LCBlbmRdKTtcbiAgcmV0dXJuIFtdO1xufTtcblxuY29uc3QgaW52YWxpZFN0ZXAgPSAoc3RlcCwgb3B0aW9ucykgPT4ge1xuICBpZiAob3B0aW9ucy5zdHJpY3RSYW5nZXMgPT09IHRydWUpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBFeHBlY3RlZCBzdGVwIFwiJHtzdGVwfVwiIHRvIGJlIGEgbnVtYmVyYCk7XG4gIH1cbiAgcmV0dXJuIFtdO1xufTtcblxuY29uc3QgZmlsbE51bWJlcnMgPSAoc3RhcnQsIGVuZCwgc3RlcCA9IDEsIG9wdGlvbnMgPSB7fSkgPT4ge1xuICBsZXQgYSA9IE51bWJlcihzdGFydCk7XG4gIGxldCBiID0gTnVtYmVyKGVuZCk7XG5cbiAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKGEpIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKGIpKSB7XG4gICAgaWYgKG9wdGlvbnMuc3RyaWN0UmFuZ2VzID09PSB0cnVlKSB0aHJvdyByYW5nZUVycm9yKFtzdGFydCwgZW5kXSk7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLy8gZml4IG5lZ2F0aXZlIHplcm9cbiAgaWYgKGEgPT09IDApIGEgPSAwO1xuICBpZiAoYiA9PT0gMCkgYiA9IDA7XG5cbiAgbGV0IGRlc2NlbmRpbmcgPSBhID4gYjtcbiAgbGV0IHN0YXJ0U3RyaW5nID0gU3RyaW5nKHN0YXJ0KTtcbiAgbGV0IGVuZFN0cmluZyA9IFN0cmluZyhlbmQpO1xuICBsZXQgc3RlcFN0cmluZyA9IFN0cmluZyhzdGVwKTtcbiAgc3RlcCA9IE1hdGgubWF4KE1hdGguYWJzKHN0ZXApLCAxKTtcblxuICBsZXQgcGFkZGVkID0gemVyb3Moc3RhcnRTdHJpbmcpIHx8IHplcm9zKGVuZFN0cmluZykgfHwgemVyb3Moc3RlcFN0cmluZyk7XG4gIGxldCBtYXhMZW4gPSBwYWRkZWQgPyBNYXRoLm1heChzdGFydFN0cmluZy5sZW5ndGgsIGVuZFN0cmluZy5sZW5ndGgsIHN0ZXBTdHJpbmcubGVuZ3RoKSA6IDA7XG4gIGxldCB0b051bWJlciA9IHBhZGRlZCA9PT0gZmFsc2UgJiYgc3RyaW5naWZ5KHN0YXJ0LCBlbmQsIG9wdGlvbnMpID09PSBmYWxzZTtcbiAgbGV0IGZvcm1hdCA9IG9wdGlvbnMudHJhbnNmb3JtIHx8IHRyYW5zZm9ybSh0b051bWJlcik7XG5cbiAgaWYgKG9wdGlvbnMudG9SZWdleCAmJiBzdGVwID09PSAxKSB7XG4gICAgcmV0dXJuIHRvUmFuZ2UodG9NYXhMZW4oc3RhcnQsIG1heExlbiksIHRvTWF4TGVuKGVuZCwgbWF4TGVuKSwgdHJ1ZSwgb3B0aW9ucyk7XG4gIH1cblxuICBsZXQgcGFydHMgPSB7IG5lZ2F0aXZlczogW10sIHBvc2l0aXZlczogW10gfTtcbiAgbGV0IHB1c2ggPSBudW0gPT4gcGFydHNbbnVtIDwgMCA/ICduZWdhdGl2ZXMnIDogJ3Bvc2l0aXZlcyddLnB1c2goTWF0aC5hYnMobnVtKSk7XG4gIGxldCByYW5nZSA9IFtdO1xuICBsZXQgaW5kZXggPSAwO1xuXG4gIHdoaWxlIChkZXNjZW5kaW5nID8gYSA+PSBiIDogYSA8PSBiKSB7XG4gICAgaWYgKG9wdGlvbnMudG9SZWdleCA9PT0gdHJ1ZSAmJiBzdGVwID4gMSkge1xuICAgICAgcHVzaChhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmFuZ2UucHVzaChwYWQoZm9ybWF0KGEsIGluZGV4KSwgbWF4TGVuLCB0b051bWJlcikpO1xuICAgIH1cbiAgICBhID0gZGVzY2VuZGluZyA/IGEgLSBzdGVwIDogYSArIHN0ZXA7XG4gICAgaW5kZXgrKztcbiAgfVxuXG4gIGlmIChvcHRpb25zLnRvUmVnZXggPT09IHRydWUpIHtcbiAgICByZXR1cm4gc3RlcCA+IDFcbiAgICAgID8gdG9TZXF1ZW5jZShwYXJ0cywgb3B0aW9ucylcbiAgICAgIDogdG9SZWdleChyYW5nZSwgbnVsbCwgeyB3cmFwOiBmYWxzZSwgLi4ub3B0aW9ucyB9KTtcbiAgfVxuXG4gIHJldHVybiByYW5nZTtcbn07XG5cbmNvbnN0IGZpbGxMZXR0ZXJzID0gKHN0YXJ0LCBlbmQsIHN0ZXAgPSAxLCBvcHRpb25zID0ge30pID0+IHtcbiAgaWYgKCghaXNOdW1iZXIoc3RhcnQpICYmIHN0YXJ0Lmxlbmd0aCA+IDEpIHx8ICghaXNOdW1iZXIoZW5kKSAmJiBlbmQubGVuZ3RoID4gMSkpIHtcbiAgICByZXR1cm4gaW52YWxpZFJhbmdlKHN0YXJ0LCBlbmQsIG9wdGlvbnMpO1xuICB9XG5cblxuICBsZXQgZm9ybWF0ID0gb3B0aW9ucy50cmFuc2Zvcm0gfHwgKHZhbCA9PiBTdHJpbmcuZnJvbUNoYXJDb2RlKHZhbCkpO1xuICBsZXQgYSA9IGAke3N0YXJ0fWAuY2hhckNvZGVBdCgwKTtcbiAgbGV0IGIgPSBgJHtlbmR9YC5jaGFyQ29kZUF0KDApO1xuXG4gIGxldCBkZXNjZW5kaW5nID0gYSA+IGI7XG4gIGxldCBtaW4gPSBNYXRoLm1pbihhLCBiKTtcbiAgbGV0IG1heCA9IE1hdGgubWF4KGEsIGIpO1xuXG4gIGlmIChvcHRpb25zLnRvUmVnZXggJiYgc3RlcCA9PT0gMSkge1xuICAgIHJldHVybiB0b1JhbmdlKG1pbiwgbWF4LCBmYWxzZSwgb3B0aW9ucyk7XG4gIH1cblxuICBsZXQgcmFuZ2UgPSBbXTtcbiAgbGV0IGluZGV4ID0gMDtcblxuICB3aGlsZSAoZGVzY2VuZGluZyA/IGEgPj0gYiA6IGEgPD0gYikge1xuICAgIHJhbmdlLnB1c2goZm9ybWF0KGEsIGluZGV4KSk7XG4gICAgYSA9IGRlc2NlbmRpbmcgPyBhIC0gc3RlcCA6IGEgKyBzdGVwO1xuICAgIGluZGV4Kys7XG4gIH1cblxuICBpZiAob3B0aW9ucy50b1JlZ2V4ID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIHRvUmVnZXgocmFuZ2UsIG51bGwsIHsgd3JhcDogZmFsc2UsIG9wdGlvbnMgfSk7XG4gIH1cblxuICByZXR1cm4gcmFuZ2U7XG59O1xuXG5jb25zdCBmaWxsID0gKHN0YXJ0LCBlbmQsIHN0ZXAsIG9wdGlvbnMgPSB7fSkgPT4ge1xuICBpZiAoZW5kID09IG51bGwgJiYgaXNWYWxpZFZhbHVlKHN0YXJ0KSkge1xuICAgIHJldHVybiBbc3RhcnRdO1xuICB9XG5cbiAgaWYgKCFpc1ZhbGlkVmFsdWUoc3RhcnQpIHx8ICFpc1ZhbGlkVmFsdWUoZW5kKSkge1xuICAgIHJldHVybiBpbnZhbGlkUmFuZ2Uoc3RhcnQsIGVuZCwgb3B0aW9ucyk7XG4gIH1cblxuICBpZiAodHlwZW9mIHN0ZXAgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gZmlsbChzdGFydCwgZW5kLCAxLCB7IHRyYW5zZm9ybTogc3RlcCB9KTtcbiAgfVxuXG4gIGlmIChpc09iamVjdChzdGVwKSkge1xuICAgIHJldHVybiBmaWxsKHN0YXJ0LCBlbmQsIDAsIHN0ZXApO1xuICB9XG5cbiAgbGV0IG9wdHMgPSB7IC4uLm9wdGlvbnMgfTtcbiAgaWYgKG9wdHMuY2FwdHVyZSA9PT0gdHJ1ZSkgb3B0cy53cmFwID0gdHJ1ZTtcbiAgc3RlcCA9IHN0ZXAgfHwgb3B0cy5zdGVwIHx8IDE7XG5cbiAgaWYgKCFpc051bWJlcihzdGVwKSkge1xuICAgIGlmIChzdGVwICE9IG51bGwgJiYgIWlzT2JqZWN0KHN0ZXApKSByZXR1cm4gaW52YWxpZFN0ZXAoc3RlcCwgb3B0cyk7XG4gICAgcmV0dXJuIGZpbGwoc3RhcnQsIGVuZCwgMSwgc3RlcCk7XG4gIH1cblxuICBpZiAoaXNOdW1iZXIoc3RhcnQpICYmIGlzTnVtYmVyKGVuZCkpIHtcbiAgICByZXR1cm4gZmlsbE51bWJlcnMoc3RhcnQsIGVuZCwgc3RlcCwgb3B0cyk7XG4gIH1cblxuICByZXR1cm4gZmlsbExldHRlcnMoc3RhcnQsIGVuZCwgTWF0aC5tYXgoTWF0aC5hYnMoc3RlcCksIDEpLCBvcHRzKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZmlsbDtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgZmlsbCA9IHJlcXVpcmUoJ2ZpbGwtcmFuZ2UnKTtcbmNvbnN0IHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xuXG5jb25zdCBjb21waWxlID0gKGFzdCwgb3B0aW9ucyA9IHt9KSA9PiB7XG4gIGxldCB3YWxrID0gKG5vZGUsIHBhcmVudCA9IHt9KSA9PiB7XG4gICAgbGV0IGludmFsaWRCbG9jayA9IHV0aWxzLmlzSW52YWxpZEJyYWNlKHBhcmVudCk7XG4gICAgbGV0IGludmFsaWROb2RlID0gbm9kZS5pbnZhbGlkID09PSB0cnVlICYmIG9wdGlvbnMuZXNjYXBlSW52YWxpZCA9PT0gdHJ1ZTtcbiAgICBsZXQgaW52YWxpZCA9IGludmFsaWRCbG9jayA9PT0gdHJ1ZSB8fCBpbnZhbGlkTm9kZSA9PT0gdHJ1ZTtcbiAgICBsZXQgcHJlZml4ID0gb3B0aW9ucy5lc2NhcGVJbnZhbGlkID09PSB0cnVlID8gJ1xcXFwnIDogJyc7XG4gICAgbGV0IG91dHB1dCA9ICcnO1xuXG4gICAgaWYgKG5vZGUuaXNPcGVuID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gcHJlZml4ICsgbm9kZS52YWx1ZTtcbiAgICB9XG4gICAgaWYgKG5vZGUuaXNDbG9zZSA9PT0gdHJ1ZSkge1xuICAgICAgcmV0dXJuIHByZWZpeCArIG5vZGUudmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gJ29wZW4nKSB7XG4gICAgICByZXR1cm4gaW52YWxpZCA/IChwcmVmaXggKyBub2RlLnZhbHVlKSA6ICcoJztcbiAgICB9XG5cbiAgICBpZiAobm9kZS50eXBlID09PSAnY2xvc2UnKSB7XG4gICAgICByZXR1cm4gaW52YWxpZCA/IChwcmVmaXggKyBub2RlLnZhbHVlKSA6ICcpJztcbiAgICB9XG5cbiAgICBpZiAobm9kZS50eXBlID09PSAnY29tbWEnKSB7XG4gICAgICByZXR1cm4gbm9kZS5wcmV2LnR5cGUgPT09ICdjb21tYScgPyAnJyA6IChpbnZhbGlkID8gbm9kZS52YWx1ZSA6ICd8Jyk7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUudmFsdWUpIHtcbiAgICAgIHJldHVybiBub2RlLnZhbHVlO1xuICAgIH1cblxuICAgIGlmIChub2RlLm5vZGVzICYmIG5vZGUucmFuZ2VzID4gMCkge1xuICAgICAgbGV0IGFyZ3MgPSB1dGlscy5yZWR1Y2Uobm9kZS5ub2Rlcyk7XG4gICAgICBsZXQgcmFuZ2UgPSBmaWxsKC4uLmFyZ3MsIHsgLi4ub3B0aW9ucywgd3JhcDogZmFsc2UsIHRvUmVnZXg6IHRydWUgfSk7XG5cbiAgICAgIGlmIChyYW5nZS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgcmV0dXJuIGFyZ3MubGVuZ3RoID4gMSAmJiByYW5nZS5sZW5ndGggPiAxID8gYCgke3JhbmdlfSlgIDogcmFuZ2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5vZGUubm9kZXMpIHtcbiAgICAgIGZvciAobGV0IGNoaWxkIG9mIG5vZGUubm9kZXMpIHtcbiAgICAgICAgb3V0cHV0ICs9IHdhbGsoY2hpbGQsIG5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0O1xuICB9O1xuXG4gIHJldHVybiB3YWxrKGFzdCk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbXBpbGU7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGZpbGwgPSByZXF1aXJlKCdmaWxsLXJhbmdlJyk7XG5jb25zdCBzdHJpbmdpZnkgPSByZXF1aXJlKCcuL3N0cmluZ2lmeScpO1xuY29uc3QgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG5cbmNvbnN0IGFwcGVuZCA9IChxdWV1ZSA9ICcnLCBzdGFzaCA9ICcnLCBlbmNsb3NlID0gZmFsc2UpID0+IHtcbiAgbGV0IHJlc3VsdCA9IFtdO1xuXG4gIHF1ZXVlID0gW10uY29uY2F0KHF1ZXVlKTtcbiAgc3Rhc2ggPSBbXS5jb25jYXQoc3Rhc2gpO1xuXG4gIGlmICghc3Rhc2gubGVuZ3RoKSByZXR1cm4gcXVldWU7XG4gIGlmICghcXVldWUubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGVuY2xvc2UgPyB1dGlscy5mbGF0dGVuKHN0YXNoKS5tYXAoZWxlID0+IGB7JHtlbGV9fWApIDogc3Rhc2g7XG4gIH1cblxuICBmb3IgKGxldCBpdGVtIG9mIHF1ZXVlKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbSkpIHtcbiAgICAgIGZvciAobGV0IHZhbHVlIG9mIGl0ZW0pIHtcbiAgICAgICAgcmVzdWx0LnB1c2goYXBwZW5kKHZhbHVlLCBzdGFzaCwgZW5jbG9zZSkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGxldCBlbGUgb2Ygc3Rhc2gpIHtcbiAgICAgICAgaWYgKGVuY2xvc2UgPT09IHRydWUgJiYgdHlwZW9mIGVsZSA9PT0gJ3N0cmluZycpIGVsZSA9IGB7JHtlbGV9fWA7XG4gICAgICAgIHJlc3VsdC5wdXNoKEFycmF5LmlzQXJyYXkoZWxlKSA/IGFwcGVuZChpdGVtLCBlbGUsIGVuY2xvc2UpIDogKGl0ZW0gKyBlbGUpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHV0aWxzLmZsYXR0ZW4ocmVzdWx0KTtcbn07XG5cbmNvbnN0IGV4cGFuZCA9IChhc3QsIG9wdGlvbnMgPSB7fSkgPT4ge1xuICBsZXQgcmFuZ2VMaW1pdCA9IG9wdGlvbnMucmFuZ2VMaW1pdCA9PT0gdm9pZCAwID8gMTAwMCA6IG9wdGlvbnMucmFuZ2VMaW1pdDtcblxuICBsZXQgd2FsayA9IChub2RlLCBwYXJlbnQgPSB7fSkgPT4ge1xuICAgIG5vZGUucXVldWUgPSBbXTtcblxuICAgIGxldCBwID0gcGFyZW50O1xuICAgIGxldCBxID0gcGFyZW50LnF1ZXVlO1xuXG4gICAgd2hpbGUgKHAudHlwZSAhPT0gJ2JyYWNlJyAmJiBwLnR5cGUgIT09ICdyb290JyAmJiBwLnBhcmVudCkge1xuICAgICAgcCA9IHAucGFyZW50O1xuICAgICAgcSA9IHAucXVldWU7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUuaW52YWxpZCB8fCBub2RlLmRvbGxhcikge1xuICAgICAgcS5wdXNoKGFwcGVuZChxLnBvcCgpLCBzdHJpbmdpZnkobm9kZSwgb3B0aW9ucykpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobm9kZS50eXBlID09PSAnYnJhY2UnICYmIG5vZGUuaW52YWxpZCAhPT0gdHJ1ZSAmJiBub2RlLm5vZGVzLmxlbmd0aCA9PT0gMikge1xuICAgICAgcS5wdXNoKGFwcGVuZChxLnBvcCgpLCBbJ3t9J10pKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobm9kZS5ub2RlcyAmJiBub2RlLnJhbmdlcyA+IDApIHtcbiAgICAgIGxldCBhcmdzID0gdXRpbHMucmVkdWNlKG5vZGUubm9kZXMpO1xuXG4gICAgICBpZiAodXRpbHMuZXhjZWVkc0xpbWl0KC4uLmFyZ3MsIG9wdGlvbnMuc3RlcCwgcmFuZ2VMaW1pdCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2V4cGFuZGVkIGFycmF5IGxlbmd0aCBleGNlZWRzIHJhbmdlIGxpbWl0LiBVc2Ugb3B0aW9ucy5yYW5nZUxpbWl0IHRvIGluY3JlYXNlIG9yIGRpc2FibGUgdGhlIGxpbWl0LicpO1xuICAgICAgfVxuXG4gICAgICBsZXQgcmFuZ2UgPSBmaWxsKC4uLmFyZ3MsIG9wdGlvbnMpO1xuICAgICAgaWYgKHJhbmdlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByYW5nZSA9IHN0cmluZ2lmeShub2RlLCBvcHRpb25zKTtcbiAgICAgIH1cblxuICAgICAgcS5wdXNoKGFwcGVuZChxLnBvcCgpLCByYW5nZSkpO1xuICAgICAgbm9kZS5ub2RlcyA9IFtdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBlbmNsb3NlID0gdXRpbHMuZW5jbG9zZUJyYWNlKG5vZGUpO1xuICAgIGxldCBxdWV1ZSA9IG5vZGUucXVldWU7XG4gICAgbGV0IGJsb2NrID0gbm9kZTtcblxuICAgIHdoaWxlIChibG9jay50eXBlICE9PSAnYnJhY2UnICYmIGJsb2NrLnR5cGUgIT09ICdyb290JyAmJiBibG9jay5wYXJlbnQpIHtcbiAgICAgIGJsb2NrID0gYmxvY2sucGFyZW50O1xuICAgICAgcXVldWUgPSBibG9jay5xdWV1ZTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUubm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBjaGlsZCA9IG5vZGUubm9kZXNbaV07XG5cbiAgICAgIGlmIChjaGlsZC50eXBlID09PSAnY29tbWEnICYmIG5vZGUudHlwZSA9PT0gJ2JyYWNlJykge1xuICAgICAgICBpZiAoaSA9PT0gMSkgcXVldWUucHVzaCgnJyk7XG4gICAgICAgIHF1ZXVlLnB1c2goJycpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoaWxkLnR5cGUgPT09ICdjbG9zZScpIHtcbiAgICAgICAgcS5wdXNoKGFwcGVuZChxLnBvcCgpLCBxdWV1ZSwgZW5jbG9zZSkpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoaWxkLnZhbHVlICYmIGNoaWxkLnR5cGUgIT09ICdvcGVuJykge1xuICAgICAgICBxdWV1ZS5wdXNoKGFwcGVuZChxdWV1ZS5wb3AoKSwgY2hpbGQudmFsdWUpKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGlsZC5ub2Rlcykge1xuICAgICAgICB3YWxrKGNoaWxkLCBub2RlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcXVldWU7XG4gIH07XG5cbiAgcmV0dXJuIHV0aWxzLmZsYXR0ZW4od2Fsayhhc3QpKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZXhwYW5kO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgTUFYX0xFTkdUSDogMTAyNCAqIDY0LFxuXG4gIC8vIERpZ2l0c1xuICBDSEFSXzA6ICcwJywgLyogMCAqL1xuICBDSEFSXzk6ICc5JywgLyogOSAqL1xuXG4gIC8vIEFscGhhYmV0IGNoYXJzLlxuICBDSEFSX1VQUEVSQ0FTRV9BOiAnQScsIC8qIEEgKi9cbiAgQ0hBUl9MT1dFUkNBU0VfQTogJ2EnLCAvKiBhICovXG4gIENIQVJfVVBQRVJDQVNFX1o6ICdaJywgLyogWiAqL1xuICBDSEFSX0xPV0VSQ0FTRV9aOiAneicsIC8qIHogKi9cblxuICBDSEFSX0xFRlRfUEFSRU5USEVTRVM6ICcoJywgLyogKCAqL1xuICBDSEFSX1JJR0hUX1BBUkVOVEhFU0VTOiAnKScsIC8qICkgKi9cblxuICBDSEFSX0FTVEVSSVNLOiAnKicsIC8qICogKi9cblxuICAvLyBOb24tYWxwaGFiZXRpYyBjaGFycy5cbiAgQ0hBUl9BTVBFUlNBTkQ6ICcmJywgLyogJiAqL1xuICBDSEFSX0FUOiAnQCcsIC8qIEAgKi9cbiAgQ0hBUl9CQUNLU0xBU0g6ICdcXFxcJywgLyogXFwgKi9cbiAgQ0hBUl9CQUNLVElDSzogJ2AnLCAvKiBgICovXG4gIENIQVJfQ0FSUklBR0VfUkVUVVJOOiAnXFxyJywgLyogXFxyICovXG4gIENIQVJfQ0lSQ1VNRkxFWF9BQ0NFTlQ6ICdeJywgLyogXiAqL1xuICBDSEFSX0NPTE9OOiAnOicsIC8qIDogKi9cbiAgQ0hBUl9DT01NQTogJywnLCAvKiAsICovXG4gIENIQVJfRE9MTEFSOiAnJCcsIC8qIC4gKi9cbiAgQ0hBUl9ET1Q6ICcuJywgLyogLiAqL1xuICBDSEFSX0RPVUJMRV9RVU9URTogJ1wiJywgLyogXCIgKi9cbiAgQ0hBUl9FUVVBTDogJz0nLCAvKiA9ICovXG4gIENIQVJfRVhDTEFNQVRJT05fTUFSSzogJyEnLCAvKiAhICovXG4gIENIQVJfRk9STV9GRUVEOiAnXFxmJywgLyogXFxmICovXG4gIENIQVJfRk9SV0FSRF9TTEFTSDogJy8nLCAvKiAvICovXG4gIENIQVJfSEFTSDogJyMnLCAvKiAjICovXG4gIENIQVJfSFlQSEVOX01JTlVTOiAnLScsIC8qIC0gKi9cbiAgQ0hBUl9MRUZUX0FOR0xFX0JSQUNLRVQ6ICc8JywgLyogPCAqL1xuICBDSEFSX0xFRlRfQ1VSTFlfQlJBQ0U6ICd7JywgLyogeyAqL1xuICBDSEFSX0xFRlRfU1FVQVJFX0JSQUNLRVQ6ICdbJywgLyogWyAqL1xuICBDSEFSX0xJTkVfRkVFRDogJ1xcbicsIC8qIFxcbiAqL1xuICBDSEFSX05PX0JSRUFLX1NQQUNFOiAnXFx1MDBBMCcsIC8qIFxcdTAwQTAgKi9cbiAgQ0hBUl9QRVJDRU5UOiAnJScsIC8qICUgKi9cbiAgQ0hBUl9QTFVTOiAnKycsIC8qICsgKi9cbiAgQ0hBUl9RVUVTVElPTl9NQVJLOiAnPycsIC8qID8gKi9cbiAgQ0hBUl9SSUdIVF9BTkdMRV9CUkFDS0VUOiAnPicsIC8qID4gKi9cbiAgQ0hBUl9SSUdIVF9DVVJMWV9CUkFDRTogJ30nLCAvKiB9ICovXG4gIENIQVJfUklHSFRfU1FVQVJFX0JSQUNLRVQ6ICddJywgLyogXSAqL1xuICBDSEFSX1NFTUlDT0xPTjogJzsnLCAvKiA7ICovXG4gIENIQVJfU0lOR0xFX1FVT1RFOiAnXFwnJywgLyogJyAqL1xuICBDSEFSX1NQQUNFOiAnICcsIC8qICAgKi9cbiAgQ0hBUl9UQUI6ICdcXHQnLCAvKiBcXHQgKi9cbiAgQ0hBUl9VTkRFUlNDT1JFOiAnXycsIC8qIF8gKi9cbiAgQ0hBUl9WRVJUSUNBTF9MSU5FOiAnfCcsIC8qIHwgKi9cbiAgQ0hBUl9aRVJPX1dJRFRIX05PQlJFQUtfU1BBQ0U6ICdcXHVGRUZGJyAvKiBcXHVGRUZGICovXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBzdHJpbmdpZnkgPSByZXF1aXJlKCcuL3N0cmluZ2lmeScpO1xuXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IHtcbiAgTUFYX0xFTkdUSCxcbiAgQ0hBUl9CQUNLU0xBU0gsIC8qIFxcICovXG4gIENIQVJfQkFDS1RJQ0ssIC8qIGAgKi9cbiAgQ0hBUl9DT01NQSwgLyogLCAqL1xuICBDSEFSX0RPVCwgLyogLiAqL1xuICBDSEFSX0xFRlRfUEFSRU5USEVTRVMsIC8qICggKi9cbiAgQ0hBUl9SSUdIVF9QQVJFTlRIRVNFUywgLyogKSAqL1xuICBDSEFSX0xFRlRfQ1VSTFlfQlJBQ0UsIC8qIHsgKi9cbiAgQ0hBUl9SSUdIVF9DVVJMWV9CUkFDRSwgLyogfSAqL1xuICBDSEFSX0xFRlRfU1FVQVJFX0JSQUNLRVQsIC8qIFsgKi9cbiAgQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVCwgLyogXSAqL1xuICBDSEFSX0RPVUJMRV9RVU9URSwgLyogXCIgKi9cbiAgQ0hBUl9TSU5HTEVfUVVPVEUsIC8qICcgKi9cbiAgQ0hBUl9OT19CUkVBS19TUEFDRSxcbiAgQ0hBUl9aRVJPX1dJRFRIX05PQlJFQUtfU1BBQ0Vcbn0gPSByZXF1aXJlKCcuL2NvbnN0YW50cycpO1xuXG4vKipcbiAqIHBhcnNlXG4gKi9cblxuY29uc3QgcGFyc2UgPSAoaW5wdXQsIG9wdGlvbnMgPSB7fSkgPT4ge1xuICBpZiAodHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGEgc3RyaW5nJyk7XG4gIH1cblxuICBsZXQgb3B0cyA9IG9wdGlvbnMgfHwge307XG4gIGxldCBtYXggPSB0eXBlb2Ygb3B0cy5tYXhMZW5ndGggPT09ICdudW1iZXInID8gTWF0aC5taW4oTUFYX0xFTkdUSCwgb3B0cy5tYXhMZW5ndGgpIDogTUFYX0xFTkdUSDtcbiAgaWYgKGlucHV0Lmxlbmd0aCA+IG1heCkge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgSW5wdXQgbGVuZ3RoICgke2lucHV0Lmxlbmd0aH0pLCBleGNlZWRzIG1heCBjaGFyYWN0ZXJzICgke21heH0pYCk7XG4gIH1cblxuICBsZXQgYXN0ID0geyB0eXBlOiAncm9vdCcsIGlucHV0LCBub2RlczogW10gfTtcbiAgbGV0IHN0YWNrID0gW2FzdF07XG4gIGxldCBibG9jayA9IGFzdDtcbiAgbGV0IHByZXYgPSBhc3Q7XG4gIGxldCBicmFja2V0cyA9IDA7XG4gIGxldCBsZW5ndGggPSBpbnB1dC5sZW5ndGg7XG4gIGxldCBpbmRleCA9IDA7XG4gIGxldCBkZXB0aCA9IDA7XG4gIGxldCB2YWx1ZTtcbiAgbGV0IG1lbW8gPSB7fTtcblxuICAvKipcbiAgICogSGVscGVyc1xuICAgKi9cblxuICBjb25zdCBhZHZhbmNlID0gKCkgPT4gaW5wdXRbaW5kZXgrK107XG4gIGNvbnN0IHB1c2ggPSBub2RlID0+IHtcbiAgICBpZiAobm9kZS50eXBlID09PSAndGV4dCcgJiYgcHJldi50eXBlID09PSAnZG90Jykge1xuICAgICAgcHJldi50eXBlID0gJ3RleHQnO1xuICAgIH1cblxuICAgIGlmIChwcmV2ICYmIHByZXYudHlwZSA9PT0gJ3RleHQnICYmIG5vZGUudHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICBwcmV2LnZhbHVlICs9IG5vZGUudmFsdWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYmxvY2subm9kZXMucHVzaChub2RlKTtcbiAgICBub2RlLnBhcmVudCA9IGJsb2NrO1xuICAgIG5vZGUucHJldiA9IHByZXY7XG4gICAgcHJldiA9IG5vZGU7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH07XG5cbiAgcHVzaCh7IHR5cGU6ICdib3MnIH0pO1xuXG4gIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgIGJsb2NrID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07XG4gICAgdmFsdWUgPSBhZHZhbmNlKCk7XG5cbiAgICAvKipcbiAgICAgKiBJbnZhbGlkIGNoYXJzXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09IENIQVJfWkVST19XSURUSF9OT0JSRUFLX1NQQUNFIHx8IHZhbHVlID09PSBDSEFSX05PX0JSRUFLX1NQQUNFKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFc2NhcGVkIGNoYXJzXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09IENIQVJfQkFDS1NMQVNIKSB7XG4gICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZTogKG9wdGlvbnMua2VlcEVzY2FwaW5nID8gdmFsdWUgOiAnJykgKyBhZHZhbmNlKCkgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSaWdodCBzcXVhcmUgYnJhY2tldCAobGl0ZXJhbCk6ICddJ1xuICAgICAqL1xuXG4gICAgaWYgKHZhbHVlID09PSBDSEFSX1JJR0hUX1NRVUFSRV9CUkFDS0VUKSB7XG4gICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZTogJ1xcXFwnICsgdmFsdWUgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMZWZ0IHNxdWFyZSBicmFja2V0OiAnWydcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VUKSB7XG4gICAgICBicmFja2V0cysrO1xuXG4gICAgICBsZXQgY2xvc2VkID0gdHJ1ZTtcbiAgICAgIGxldCBuZXh0O1xuXG4gICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGggJiYgKG5leHQgPSBhZHZhbmNlKCkpKSB7XG4gICAgICAgIHZhbHVlICs9IG5leHQ7XG5cbiAgICAgICAgaWYgKG5leHQgPT09IENIQVJfTEVGVF9TUVVBUkVfQlJBQ0tFVCkge1xuICAgICAgICAgIGJyYWNrZXRzKys7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV4dCA9PT0gQ0hBUl9CQUNLU0xBU0gpIHtcbiAgICAgICAgICB2YWx1ZSArPSBhZHZhbmNlKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobmV4dCA9PT0gQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVCkge1xuICAgICAgICAgIGJyYWNrZXRzLS07XG5cbiAgICAgICAgICBpZiAoYnJhY2tldHMgPT09IDApIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZSB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhcmVudGhlc2VzXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09IENIQVJfTEVGVF9QQVJFTlRIRVNFUykge1xuICAgICAgYmxvY2sgPSBwdXNoKHsgdHlwZTogJ3BhcmVuJywgbm9kZXM6IFtdIH0pO1xuICAgICAgc3RhY2sucHVzaChibG9jayk7XG4gICAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZSB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSA9PT0gQ0hBUl9SSUdIVF9QQVJFTlRIRVNFUykge1xuICAgICAgaWYgKGJsb2NrLnR5cGUgIT09ICdwYXJlbicpIHtcbiAgICAgICAgcHVzaCh7IHR5cGU6ICd0ZXh0JywgdmFsdWUgfSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgYmxvY2sgPSBzdGFjay5wb3AoKTtcbiAgICAgIHB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlIH0pO1xuICAgICAgYmxvY2sgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFF1b3RlczogJ3xcInxgXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09IENIQVJfRE9VQkxFX1FVT1RFIHx8IHZhbHVlID09PSBDSEFSX1NJTkdMRV9RVU9URSB8fCB2YWx1ZSA9PT0gQ0hBUl9CQUNLVElDSykge1xuICAgICAgbGV0IG9wZW4gPSB2YWx1ZTtcbiAgICAgIGxldCBuZXh0O1xuXG4gICAgICBpZiAob3B0aW9ucy5rZWVwUXVvdGVzICE9PSB0cnVlKSB7XG4gICAgICAgIHZhbHVlID0gJyc7XG4gICAgICB9XG5cbiAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCAmJiAobmV4dCA9IGFkdmFuY2UoKSkpIHtcbiAgICAgICAgaWYgKG5leHQgPT09IENIQVJfQkFDS1NMQVNIKSB7XG4gICAgICAgICAgdmFsdWUgKz0gbmV4dCArIGFkdmFuY2UoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXh0ID09PSBvcGVuKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbnMua2VlcFF1b3RlcyA9PT0gdHJ1ZSkgdmFsdWUgKz0gbmV4dDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHZhbHVlICs9IG5leHQ7XG4gICAgICB9XG5cbiAgICAgIHB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTGVmdCBjdXJseSBicmFjZTogJ3snXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09IENIQVJfTEVGVF9DVVJMWV9CUkFDRSkge1xuICAgICAgZGVwdGgrKztcblxuICAgICAgbGV0IGRvbGxhciA9IHByZXYudmFsdWUgJiYgcHJldi52YWx1ZS5zbGljZSgtMSkgPT09ICckJyB8fCBibG9jay5kb2xsYXIgPT09IHRydWU7XG4gICAgICBsZXQgYnJhY2UgPSB7XG4gICAgICAgIHR5cGU6ICdicmFjZScsXG4gICAgICAgIG9wZW46IHRydWUsXG4gICAgICAgIGNsb3NlOiBmYWxzZSxcbiAgICAgICAgZG9sbGFyLFxuICAgICAgICBkZXB0aCxcbiAgICAgICAgY29tbWFzOiAwLFxuICAgICAgICByYW5nZXM6IDAsXG4gICAgICAgIG5vZGVzOiBbXVxuICAgICAgfTtcblxuICAgICAgYmxvY2sgPSBwdXNoKGJyYWNlKTtcbiAgICAgIHN0YWNrLnB1c2goYmxvY2spO1xuICAgICAgcHVzaCh7IHR5cGU6ICdvcGVuJywgdmFsdWUgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSaWdodCBjdXJseSBicmFjZTogJ30nXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09IENIQVJfUklHSFRfQ1VSTFlfQlJBQ0UpIHtcbiAgICAgIGlmIChibG9jay50eXBlICE9PSAnYnJhY2UnKSB7XG4gICAgICAgIHB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgbGV0IHR5cGUgPSAnY2xvc2UnO1xuICAgICAgYmxvY2sgPSBzdGFjay5wb3AoKTtcbiAgICAgIGJsb2NrLmNsb3NlID0gdHJ1ZTtcblxuICAgICAgcHVzaCh7IHR5cGUsIHZhbHVlIH0pO1xuICAgICAgZGVwdGgtLTtcblxuICAgICAgYmxvY2sgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbW1hOiAnLCdcbiAgICAgKi9cblxuICAgIGlmICh2YWx1ZSA9PT0gQ0hBUl9DT01NQSAmJiBkZXB0aCA+IDApIHtcbiAgICAgIGlmIChibG9jay5yYW5nZXMgPiAwKSB7XG4gICAgICAgIGJsb2NrLnJhbmdlcyA9IDA7XG4gICAgICAgIGxldCBvcGVuID0gYmxvY2subm9kZXMuc2hpZnQoKTtcbiAgICAgICAgYmxvY2subm9kZXMgPSBbb3BlbiwgeyB0eXBlOiAndGV4dCcsIHZhbHVlOiBzdHJpbmdpZnkoYmxvY2spIH1dO1xuICAgICAgfVxuXG4gICAgICBwdXNoKHsgdHlwZTogJ2NvbW1hJywgdmFsdWUgfSk7XG4gICAgICBibG9jay5jb21tYXMrKztcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERvdDogJy4nXG4gICAgICovXG5cbiAgICBpZiAodmFsdWUgPT09IENIQVJfRE9UICYmIGRlcHRoID4gMCAmJiBibG9jay5jb21tYXMgPT09IDApIHtcbiAgICAgIGxldCBzaWJsaW5ncyA9IGJsb2NrLm5vZGVzO1xuXG4gICAgICBpZiAoZGVwdGggPT09IDAgfHwgc2libGluZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHB1c2goeyB0eXBlOiAndGV4dCcsIHZhbHVlIH0pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByZXYudHlwZSA9PT0gJ2RvdCcpIHtcbiAgICAgICAgYmxvY2sucmFuZ2UgPSBbXTtcbiAgICAgICAgcHJldi52YWx1ZSArPSB2YWx1ZTtcbiAgICAgICAgcHJldi50eXBlID0gJ3JhbmdlJztcblxuICAgICAgICBpZiAoYmxvY2subm9kZXMubGVuZ3RoICE9PSAzICYmIGJsb2NrLm5vZGVzLmxlbmd0aCAhPT0gNSkge1xuICAgICAgICAgIGJsb2NrLmludmFsaWQgPSB0cnVlO1xuICAgICAgICAgIGJsb2NrLnJhbmdlcyA9IDA7XG4gICAgICAgICAgcHJldi50eXBlID0gJ3RleHQnO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgYmxvY2sucmFuZ2VzKys7XG4gICAgICAgIGJsb2NrLmFyZ3MgPSBbXTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcmV2LnR5cGUgPT09ICdyYW5nZScpIHtcbiAgICAgICAgc2libGluZ3MucG9wKCk7XG5cbiAgICAgICAgbGV0IGJlZm9yZSA9IHNpYmxpbmdzW3NpYmxpbmdzLmxlbmd0aCAtIDFdO1xuICAgICAgICBiZWZvcmUudmFsdWUgKz0gcHJldi52YWx1ZSArIHZhbHVlO1xuICAgICAgICBwcmV2ID0gYmVmb3JlO1xuICAgICAgICBibG9jay5yYW5nZXMtLTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHB1c2goeyB0eXBlOiAnZG90JywgdmFsdWUgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUZXh0XG4gICAgICovXG5cbiAgICBwdXNoKHsgdHlwZTogJ3RleHQnLCB2YWx1ZSB9KTtcbiAgfVxuXG4gIC8vIE1hcmsgaW1iYWxhbmNlZCBicmFjZXMgYW5kIGJyYWNrZXRzIGFzIGludmFsaWRcbiAgZG8ge1xuICAgIGJsb2NrID0gc3RhY2sucG9wKCk7XG5cbiAgICBpZiAoYmxvY2sudHlwZSAhPT0gJ3Jvb3QnKSB7XG4gICAgICBibG9jay5ub2Rlcy5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgICBpZiAoIW5vZGUubm9kZXMpIHtcbiAgICAgICAgICBpZiAobm9kZS50eXBlID09PSAnb3BlbicpIG5vZGUuaXNPcGVuID0gdHJ1ZTtcbiAgICAgICAgICBpZiAobm9kZS50eXBlID09PSAnY2xvc2UnKSBub2RlLmlzQ2xvc2UgPSB0cnVlO1xuICAgICAgICAgIGlmICghbm9kZS5ub2Rlcykgbm9kZS50eXBlID0gJ3RleHQnO1xuICAgICAgICAgIG5vZGUuaW52YWxpZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICAvLyBnZXQgdGhlIGxvY2F0aW9uIG9mIHRoZSBibG9jayBvbiBwYXJlbnQubm9kZXMgKGJsb2NrJ3Mgc2libGluZ3MpXG4gICAgICBsZXQgcGFyZW50ID0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07XG4gICAgICBsZXQgaW5kZXggPSBwYXJlbnQubm9kZXMuaW5kZXhPZihibG9jayk7XG4gICAgICAvLyByZXBsYWNlIHRoZSAoaW52YWxpZCkgYmxvY2sgd2l0aCBpdCdzIG5vZGVzXG4gICAgICBwYXJlbnQubm9kZXMuc3BsaWNlKGluZGV4LCAxLCAuLi5ibG9jay5ub2Rlcyk7XG4gICAgfVxuICB9IHdoaWxlIChzdGFjay5sZW5ndGggPiAwKTtcblxuICBwdXNoKHsgdHlwZTogJ2VvcycgfSk7XG4gIHJldHVybiBhc3Q7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcnNlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBzdHJpbmdpZnkgPSByZXF1aXJlKCcuL2xpYi9zdHJpbmdpZnknKTtcbmNvbnN0IGNvbXBpbGUgPSByZXF1aXJlKCcuL2xpYi9jb21waWxlJyk7XG5jb25zdCBleHBhbmQgPSByZXF1aXJlKCcuL2xpYi9leHBhbmQnKTtcbmNvbnN0IHBhcnNlID0gcmVxdWlyZSgnLi9saWIvcGFyc2UnKTtcblxuLyoqXG4gKiBFeHBhbmQgdGhlIGdpdmVuIHBhdHRlcm4gb3IgY3JlYXRlIGEgcmVnZXgtY29tcGF0aWJsZSBzdHJpbmcuXG4gKlxuICogYGBganNcbiAqIGNvbnN0IGJyYWNlcyA9IHJlcXVpcmUoJ2JyYWNlcycpO1xuICogY29uc29sZS5sb2coYnJhY2VzKCd7YSxiLGN9JywgeyBjb21waWxlOiB0cnVlIH0pKTsgLy89PiBbJyhhfGJ8YyknXVxuICogY29uc29sZS5sb2coYnJhY2VzKCd7YSxiLGN9JykpOyAvLz0+IFsnYScsICdiJywgJ2MnXVxuICogYGBgXG4gKiBAcGFyYW0ge1N0cmluZ30gYHN0cmBcbiAqIEBwYXJhbSB7T2JqZWN0fSBgb3B0aW9uc2BcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBhcGkgcHVibGljXG4gKi9cblxuY29uc3QgYnJhY2VzID0gKGlucHV0LCBvcHRpb25zID0ge30pID0+IHtcbiAgbGV0IG91dHB1dCA9IFtdO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KGlucHV0KSkge1xuICAgIGZvciAobGV0IHBhdHRlcm4gb2YgaW5wdXQpIHtcbiAgICAgIGxldCByZXN1bHQgPSBicmFjZXMuY3JlYXRlKHBhdHRlcm4sIG9wdGlvbnMpO1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSkge1xuICAgICAgICBvdXRwdXQucHVzaCguLi5yZXN1bHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3V0cHV0LnB1c2gocmVzdWx0KTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgb3V0cHV0ID0gW10uY29uY2F0KGJyYWNlcy5jcmVhdGUoaW5wdXQsIG9wdGlvbnMpKTtcbiAgfVxuXG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMuZXhwYW5kID09PSB0cnVlICYmIG9wdGlvbnMubm9kdXBlcyA9PT0gdHJ1ZSkge1xuICAgIG91dHB1dCA9IFsuLi5uZXcgU2V0KG91dHB1dCldO1xuICB9XG4gIHJldHVybiBvdXRwdXQ7XG59O1xuXG4vKipcbiAqIFBhcnNlIHRoZSBnaXZlbiBgc3RyYCB3aXRoIHRoZSBnaXZlbiBgb3B0aW9uc2AuXG4gKlxuICogYGBganNcbiAqIC8vIGJyYWNlcy5wYXJzZShwYXR0ZXJuLCBbLCBvcHRpb25zXSk7XG4gKiBjb25zdCBhc3QgPSBicmFjZXMucGFyc2UoJ2Eve2IsY30vZCcpO1xuICogY29uc29sZS5sb2coYXN0KTtcbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd9IHBhdHRlcm4gQnJhY2UgcGF0dGVybiB0byBwYXJzZVxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAqIEByZXR1cm4ge09iamVjdH0gUmV0dXJucyBhbiBBU1RcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuYnJhY2VzLnBhcnNlID0gKGlucHV0LCBvcHRpb25zID0ge30pID0+IHBhcnNlKGlucHV0LCBvcHRpb25zKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgYnJhY2VzIHN0cmluZyBmcm9tIGFuIEFTVCwgb3IgYW4gQVNUIG5vZGUuXG4gKlxuICogYGBganNcbiAqIGNvbnN0IGJyYWNlcyA9IHJlcXVpcmUoJ2JyYWNlcycpO1xuICogbGV0IGFzdCA9IGJyYWNlcy5wYXJzZSgnZm9vL3thLGJ9L2JhcicpO1xuICogY29uc29sZS5sb2coc3RyaW5naWZ5KGFzdC5ub2Rlc1syXSkpOyAvLz0+ICd7YSxifSdcbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd9IGBpbnB1dGAgQnJhY2UgcGF0dGVybiBvciBBU1QuXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgXG4gKiBAcmV0dXJuIHtBcnJheX0gUmV0dXJucyBhbiBhcnJheSBvZiBleHBhbmRlZCB2YWx1ZXMuXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmJyYWNlcy5zdHJpbmdpZnkgPSAoaW5wdXQsIG9wdGlvbnMgPSB7fSkgPT4ge1xuICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBzdHJpbmdpZnkoYnJhY2VzLnBhcnNlKGlucHV0LCBvcHRpb25zKSwgb3B0aW9ucyk7XG4gIH1cbiAgcmV0dXJuIHN0cmluZ2lmeShpbnB1dCwgb3B0aW9ucyk7XG59O1xuXG4vKipcbiAqIENvbXBpbGVzIGEgYnJhY2UgcGF0dGVybiBpbnRvIGEgcmVnZXgtY29tcGF0aWJsZSwgb3B0aW1pemVkIHN0cmluZy5cbiAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSB0aGUgbWFpbiBbYnJhY2VzXSgjYnJhY2VzKSBmdW5jdGlvbiBieSBkZWZhdWx0LlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBicmFjZXMgPSByZXF1aXJlKCdicmFjZXMnKTtcbiAqIGNvbnNvbGUubG9nKGJyYWNlcy5jb21waWxlKCdhL3tiLGN9L2QnKSk7XG4gKiAvLz0+IFsnYS8oYnxjKS9kJ11cbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd9IGBpbnB1dGAgQnJhY2UgcGF0dGVybiBvciBBU1QuXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgXG4gKiBAcmV0dXJuIHtBcnJheX0gUmV0dXJucyBhbiBhcnJheSBvZiBleHBhbmRlZCB2YWx1ZXMuXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmJyYWNlcy5jb21waWxlID0gKGlucHV0LCBvcHRpb25zID0ge30pID0+IHtcbiAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICBpbnB1dCA9IGJyYWNlcy5wYXJzZShpbnB1dCwgb3B0aW9ucyk7XG4gIH1cbiAgcmV0dXJuIGNvbXBpbGUoaW5wdXQsIG9wdGlvbnMpO1xufTtcblxuLyoqXG4gKiBFeHBhbmRzIGEgYnJhY2UgcGF0dGVybiBpbnRvIGFuIGFycmF5LiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgYnkgdGhlXG4gKiBtYWluIFticmFjZXNdKCNicmFjZXMpIGZ1bmN0aW9uIHdoZW4gYG9wdGlvbnMuZXhwYW5kYCBpcyB0cnVlLiBCZWZvcmVcbiAqIHVzaW5nIHRoaXMgbWV0aG9kIGl0J3MgcmVjb21tZW5kZWQgdGhhdCB5b3UgcmVhZCB0aGUgW3BlcmZvcm1hbmNlIG5vdGVzXSgjcGVyZm9ybWFuY2UpKVxuICogYW5kIGFkdmFudGFnZXMgb2YgdXNpbmcgWy5jb21waWxlXSgjY29tcGlsZSkgaW5zdGVhZC5cbiAqXG4gKiBgYGBqc1xuICogY29uc3QgYnJhY2VzID0gcmVxdWlyZSgnYnJhY2VzJyk7XG4gKiBjb25zb2xlLmxvZyhicmFjZXMuZXhwYW5kKCdhL3tiLGN9L2QnKSk7XG4gKiAvLz0+IFsnYS9iL2QnLCAnYS9jL2QnXTtcbiAqIGBgYFxuICogQHBhcmFtIHtTdHJpbmd9IGBwYXR0ZXJuYCBCcmFjZSBwYXR0ZXJuXG4gKiBAcGFyYW0ge09iamVjdH0gYG9wdGlvbnNgXG4gKiBAcmV0dXJuIHtBcnJheX0gUmV0dXJucyBhbiBhcnJheSBvZiBleHBhbmRlZCB2YWx1ZXMuXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmJyYWNlcy5leHBhbmQgPSAoaW5wdXQsIG9wdGlvbnMgPSB7fSkgPT4ge1xuICBpZiAodHlwZW9mIGlucHV0ID09PSAnc3RyaW5nJykge1xuICAgIGlucHV0ID0gYnJhY2VzLnBhcnNlKGlucHV0LCBvcHRpb25zKTtcbiAgfVxuXG4gIGxldCByZXN1bHQgPSBleHBhbmQoaW5wdXQsIG9wdGlvbnMpO1xuXG4gIC8vIGZpbHRlciBvdXQgZW1wdHkgc3RyaW5ncyBpZiBzcGVjaWZpZWRcbiAgaWYgKG9wdGlvbnMubm9lbXB0eSA9PT0gdHJ1ZSkge1xuICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoQm9vbGVhbik7XG4gIH1cblxuICAvLyBmaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgaWYgc3BlY2lmaWVkXG4gIGlmIChvcHRpb25zLm5vZHVwZXMgPT09IHRydWUpIHtcbiAgICByZXN1bHQgPSBbLi4ubmV3IFNldChyZXN1bHQpXTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKipcbiAqIFByb2Nlc3NlcyBhIGJyYWNlIHBhdHRlcm4gYW5kIHJldHVybnMgZWl0aGVyIGFuIGV4cGFuZGVkIGFycmF5XG4gKiAoaWYgYG9wdGlvbnMuZXhwYW5kYCBpcyB0cnVlKSwgYSBoaWdobHkgb3B0aW1pemVkIHJlZ2V4LWNvbXBhdGlibGUgc3RyaW5nLlxuICogVGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IHRoZSBtYWluIFticmFjZXNdKCNicmFjZXMpIGZ1bmN0aW9uLlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBicmFjZXMgPSByZXF1aXJlKCdicmFjZXMnKTtcbiAqIGNvbnNvbGUubG9nKGJyYWNlcy5jcmVhdGUoJ3VzZXItezIwMC4uMzAwfS9wcm9qZWN0LXthLGIsY30tezEuLjEwfScpKVxuICogLy89PiAndXNlci0oMjBbMC05XXwyWzEtOV1bMC05XXwzMDApL3Byb2plY3QtKGF8YnxjKS0oWzEtOV18MTApJ1xuICogYGBgXG4gKiBAcGFyYW0ge1N0cmluZ30gYHBhdHRlcm5gIEJyYWNlIHBhdHRlcm5cbiAqIEBwYXJhbSB7T2JqZWN0fSBgb3B0aW9uc2BcbiAqIEByZXR1cm4ge0FycmF5fSBSZXR1cm5zIGFuIGFycmF5IG9mIGV4cGFuZGVkIHZhbHVlcy5cbiAqIEBhcGkgcHVibGljXG4gKi9cblxuYnJhY2VzLmNyZWF0ZSA9IChpbnB1dCwgb3B0aW9ucyA9IHt9KSA9PiB7XG4gIGlmIChpbnB1dCA9PT0gJycgfHwgaW5wdXQubGVuZ3RoIDwgMykge1xuICAgIHJldHVybiBbaW5wdXRdO1xuICB9XG5cbiByZXR1cm4gb3B0aW9ucy5leHBhbmQgIT09IHRydWVcbiAgICA/IGJyYWNlcy5jb21waWxlKGlucHV0LCBvcHRpb25zKVxuICAgIDogYnJhY2VzLmV4cGFuZChpbnB1dCwgb3B0aW9ucyk7XG59O1xuXG4vKipcbiAqIEV4cG9zZSBcImJyYWNlc1wiXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBicmFjZXM7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vYmluYXJ5LWV4dGVuc2lvbnMuanNvbicpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcbmNvbnN0IGJpbmFyeUV4dGVuc2lvbnMgPSByZXF1aXJlKCdiaW5hcnktZXh0ZW5zaW9ucycpO1xuXG5jb25zdCBleHRlbnNpb25zID0gbmV3IFNldChiaW5hcnlFeHRlbnNpb25zKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmaWxlUGF0aCA9PiBleHRlbnNpb25zLmhhcyhwYXRoLmV4dG5hbWUoZmlsZVBhdGgpLnNsaWNlKDEpLnRvTG93ZXJDYXNlKCkpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCB7c2VwfSA9IHJlcXVpcmUoJ3BhdGgnKTtcbmNvbnN0IHtwbGF0Zm9ybX0gPSBwcm9jZXNzO1xuXG5leHBvcnRzLkVWX0FMTCA9ICdhbGwnO1xuZXhwb3J0cy5FVl9SRUFEWSA9ICdyZWFkeSc7XG5leHBvcnRzLkVWX0FERCA9ICdhZGQnO1xuZXhwb3J0cy5FVl9DSEFOR0UgPSAnY2hhbmdlJztcbmV4cG9ydHMuRVZfQUREX0RJUiA9ICdhZGREaXInO1xuZXhwb3J0cy5FVl9VTkxJTksgPSAndW5saW5rJztcbmV4cG9ydHMuRVZfVU5MSU5LX0RJUiA9ICd1bmxpbmtEaXInO1xuZXhwb3J0cy5FVl9SQVcgPSAncmF3JztcbmV4cG9ydHMuRVZfRVJST1IgPSAnZXJyb3InO1xuXG5leHBvcnRzLlNUUl9EQVRBID0gJ2RhdGEnO1xuZXhwb3J0cy5TVFJfRU5EID0gJ2VuZCc7XG5leHBvcnRzLlNUUl9DTE9TRSA9ICdjbG9zZSc7XG5cbmV4cG9ydHMuRlNFVkVOVF9DUkVBVEVEID0gJ2NyZWF0ZWQnO1xuZXhwb3J0cy5GU0VWRU5UX01PRElGSUVEID0gJ21vZGlmaWVkJztcbmV4cG9ydHMuRlNFVkVOVF9ERUxFVEVEID0gJ2RlbGV0ZWQnO1xuZXhwb3J0cy5GU0VWRU5UX01PVkVEID0gJ21vdmVkJztcbmV4cG9ydHMuRlNFVkVOVF9DTE9ORUQgPSAnY2xvbmVkJztcbmV4cG9ydHMuRlNFVkVOVF9VTktOT1dOID0gJ3Vua25vd24nO1xuZXhwb3J0cy5GU0VWRU5UX1RZUEVfRklMRSA9ICdmaWxlJztcbmV4cG9ydHMuRlNFVkVOVF9UWVBFX0RJUkVDVE9SWSA9ICdkaXJlY3RvcnknO1xuZXhwb3J0cy5GU0VWRU5UX1RZUEVfU1lNTElOSyA9ICdzeW1saW5rJztcblxuZXhwb3J0cy5LRVlfTElTVEVORVJTID0gJ2xpc3RlbmVycyc7XG5leHBvcnRzLktFWV9FUlIgPSAnZXJySGFuZGxlcnMnO1xuZXhwb3J0cy5LRVlfUkFXID0gJ3Jhd0VtaXR0ZXJzJztcbmV4cG9ydHMuSEFORExFUl9LRVlTID0gW2V4cG9ydHMuS0VZX0xJU1RFTkVSUywgZXhwb3J0cy5LRVlfRVJSLCBleHBvcnRzLktFWV9SQVddO1xuXG5leHBvcnRzLkRPVF9TTEFTSCA9IGAuJHtzZXB9YDtcblxuZXhwb3J0cy5CQUNLX1NMQVNIX1JFID0gL1xcXFwvZztcbmV4cG9ydHMuRE9VQkxFX1NMQVNIX1JFID0gL1xcL1xcLy87XG5leHBvcnRzLlNMQVNIX09SX0JBQ0tfU0xBU0hfUkUgPSAvWy9cXFxcXS87XG5leHBvcnRzLkRPVF9SRSA9IC9cXC4uKlxcLihzd1tweF0pJHx+JHxcXC5zdWJsLipcXC50bXAvO1xuZXhwb3J0cy5SRVBMQUNFUl9SRSA9IC9eXFwuWy9cXFxcXS87XG5cbmV4cG9ydHMuU0xBU0ggPSAnLyc7XG5leHBvcnRzLlNMQVNIX1NMQVNIID0gJy8vJztcbmV4cG9ydHMuQlJBQ0VfU1RBUlQgPSAneyc7XG5leHBvcnRzLkJBTkcgPSAnISc7XG5leHBvcnRzLk9ORV9ET1QgPSAnLic7XG5leHBvcnRzLlRXT19ET1RTID0gJy4uJztcbmV4cG9ydHMuU1RBUiA9ICcqJztcbmV4cG9ydHMuR0xPQlNUQVIgPSAnKionO1xuZXhwb3J0cy5ST09UX0dMT0JTVEFSID0gJy8qKi8qJztcbmV4cG9ydHMuU0xBU0hfR0xPQlNUQVIgPSAnLyoqJztcbmV4cG9ydHMuRElSX1NVRkZJWCA9ICdEaXInO1xuZXhwb3J0cy5BTllNQVRDSF9PUFRTID0ge2RvdDogdHJ1ZX07XG5leHBvcnRzLlNUUklOR19UWVBFID0gJ3N0cmluZyc7XG5leHBvcnRzLkZVTkNUSU9OX1RZUEUgPSAnZnVuY3Rpb24nO1xuZXhwb3J0cy5FTVBUWV9TVFIgPSAnJztcbmV4cG9ydHMuRU1QVFlfRk4gPSAoKSA9PiB7fTtcbmV4cG9ydHMuSURFTlRJVFlfRk4gPSB2YWwgPT4gdmFsO1xuXG5leHBvcnRzLmlzV2luZG93cyA9IHBsYXRmb3JtID09PSAnd2luMzInO1xuZXhwb3J0cy5pc01hY29zID0gcGxhdGZvcm0gPT09ICdkYXJ3aW4nO1xuZXhwb3J0cy5pc0xpbnV4ID0gcGxhdGZvcm0gPT09ICdsaW51eCc7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKTtcbmNvbnN0IHN5c1BhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5jb25zdCB7IHByb21pc2lmeSB9ID0gcmVxdWlyZSgndXRpbCcpO1xuY29uc3QgaXNCaW5hcnlQYXRoID0gcmVxdWlyZSgnaXMtYmluYXJ5LXBhdGgnKTtcbmNvbnN0IHtcbiAgaXNXaW5kb3dzLFxuICBpc0xpbnV4LFxuICBFTVBUWV9GTixcbiAgRU1QVFlfU1RSLFxuICBLRVlfTElTVEVORVJTLFxuICBLRVlfRVJSLFxuICBLRVlfUkFXLFxuICBIQU5ETEVSX0tFWVMsXG4gIEVWX0NIQU5HRSxcbiAgRVZfQURELFxuICBFVl9BRERfRElSLFxuICBFVl9FUlJPUixcbiAgU1RSX0RBVEEsXG4gIFNUUl9FTkQsXG4gIEJSQUNFX1NUQVJULFxuICBTVEFSXG59ID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKTtcblxuY29uc3QgVEhST1RUTEVfTU9ERV9XQVRDSCA9ICd3YXRjaCc7XG5cbmNvbnN0IG9wZW4gPSBwcm9taXNpZnkoZnMub3Blbik7XG5jb25zdCBzdGF0ID0gcHJvbWlzaWZ5KGZzLnN0YXQpO1xuY29uc3QgbHN0YXQgPSBwcm9taXNpZnkoZnMubHN0YXQpO1xuY29uc3QgY2xvc2UgPSBwcm9taXNpZnkoZnMuY2xvc2UpO1xuY29uc3QgZnNyZWFscGF0aCA9IHByb21pc2lmeShmcy5yZWFscGF0aCk7XG5cbmNvbnN0IHN0YXRNZXRob2RzID0geyBsc3RhdCwgc3RhdCB9O1xuXG4vLyBUT0RPOiBlbWl0IGVycm9ycyBwcm9wZXJseS4gRXhhbXBsZTogRU1GSUxFIG9uIE1hY29zLlxuY29uc3QgZm9yZWFjaCA9ICh2YWwsIGZuKSA9PiB7XG4gIGlmICh2YWwgaW5zdGFuY2VvZiBTZXQpIHtcbiAgICB2YWwuZm9yRWFjaChmbik7XG4gIH0gZWxzZSB7XG4gICAgZm4odmFsKTtcbiAgfVxufTtcblxuY29uc3QgYWRkQW5kQ29udmVydCA9IChtYWluLCBwcm9wLCBpdGVtKSA9PiB7XG4gIGxldCBjb250YWluZXIgPSBtYWluW3Byb3BdO1xuICBpZiAoIShjb250YWluZXIgaW5zdGFuY2VvZiBTZXQpKSB7XG4gICAgbWFpbltwcm9wXSA9IGNvbnRhaW5lciA9IG5ldyBTZXQoW2NvbnRhaW5lcl0pO1xuICB9XG4gIGNvbnRhaW5lci5hZGQoaXRlbSk7XG59O1xuXG5jb25zdCBjbGVhckl0ZW0gPSBjb250ID0+IGtleSA9PiB7XG4gIGNvbnN0IHNldCA9IGNvbnRba2V5XTtcbiAgaWYgKHNldCBpbnN0YW5jZW9mIFNldCkge1xuICAgIHNldC5jbGVhcigpO1xuICB9IGVsc2Uge1xuICAgIGRlbGV0ZSBjb250W2tleV07XG4gIH1cbn07XG5cbmNvbnN0IGRlbEZyb21TZXQgPSAobWFpbiwgcHJvcCwgaXRlbSkgPT4ge1xuICBjb25zdCBjb250YWluZXIgPSBtYWluW3Byb3BdO1xuICBpZiAoY29udGFpbmVyIGluc3RhbmNlb2YgU2V0KSB7XG4gICAgY29udGFpbmVyLmRlbGV0ZShpdGVtKTtcbiAgfSBlbHNlIGlmIChjb250YWluZXIgPT09IGl0ZW0pIHtcbiAgICBkZWxldGUgbWFpbltwcm9wXTtcbiAgfVxufTtcblxuY29uc3QgaXNFbXB0eVNldCA9ICh2YWwpID0+IHZhbCBpbnN0YW5jZW9mIFNldCA/IHZhbC5zaXplID09PSAwIDogIXZhbDtcblxuLyoqXG4gKiBAdHlwZWRlZiB7U3RyaW5nfSBQYXRoXG4gKi9cblxuLy8gZnNfd2F0Y2ggaGVscGVyc1xuXG4vLyBvYmplY3QgdG8gaG9sZCBwZXItcHJvY2VzcyBmc193YXRjaCBpbnN0YW5jZXNcbi8vIChtYXkgYmUgc2hhcmVkIGFjcm9zcyBjaG9raWRhciBGU1dhdGNoZXIgaW5zdGFuY2VzKVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEZzV2F0Y2hDb250YWluZXJcbiAqIEBwcm9wZXJ0eSB7U2V0fSBsaXN0ZW5lcnNcbiAqIEBwcm9wZXJ0eSB7U2V0fSBlcnJIYW5kbGVyc1xuICogQHByb3BlcnR5IHtTZXR9IHJhd0VtaXR0ZXJzXG4gKiBAcHJvcGVydHkge2ZzLkZTV2F0Y2hlcj19IHdhdGNoZXJcbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbj19IHdhdGNoZXJVbnVzYWJsZVxuICovXG5cbi8qKlxuICogQHR5cGUge01hcDxTdHJpbmcsRnNXYXRjaENvbnRhaW5lcj59XG4gKi9cbmNvbnN0IEZzV2F0Y2hJbnN0YW5jZXMgPSBuZXcgTWFwKCk7XG5cbi8qKlxuICogSW5zdGFudGlhdGVzIHRoZSBmc193YXRjaCBpbnRlcmZhY2VcbiAqIEBwYXJhbSB7U3RyaW5nfSBwYXRoIHRvIGJlIHdhdGNoZWRcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIHRvIGJlIHBhc3NlZCB0byBmc193YXRjaFxuICogQHBhcmFtIHtGdW5jdGlvbn0gbGlzdGVuZXIgbWFpbiBldmVudCBoYW5kbGVyXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcnJIYW5kbGVyIGVtaXRzIGluZm8gYWJvdXQgZXJyb3JzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlbWl0UmF3IGVtaXRzIHJhdyBldmVudCBkYXRhXG4gKiBAcmV0dXJucyB7ZnMuRlNXYXRjaGVyfSBuZXcgZnNldmVudHMgaW5zdGFuY2VcbiAqL1xuZnVuY3Rpb24gY3JlYXRlRnNXYXRjaEluc3RhbmNlKHBhdGgsIG9wdGlvbnMsIGxpc3RlbmVyLCBlcnJIYW5kbGVyLCBlbWl0UmF3KSB7XG4gIGNvbnN0IGhhbmRsZUV2ZW50ID0gKHJhd0V2ZW50LCBldlBhdGgpID0+IHtcbiAgICBsaXN0ZW5lcihwYXRoKTtcbiAgICBlbWl0UmF3KHJhd0V2ZW50LCBldlBhdGgsIHt3YXRjaGVkUGF0aDogcGF0aH0pO1xuXG4gICAgLy8gZW1pdCBiYXNlZCBvbiBldmVudHMgb2NjdXJyaW5nIGZvciBmaWxlcyBmcm9tIGEgZGlyZWN0b3J5J3Mgd2F0Y2hlciBpblxuICAgIC8vIGNhc2UgdGhlIGZpbGUncyB3YXRjaGVyIG1pc3NlcyBpdCAoYW5kIHJlbHkgb24gdGhyb3R0bGluZyB0byBkZS1kdXBlKVxuICAgIGlmIChldlBhdGggJiYgcGF0aCAhPT0gZXZQYXRoKSB7XG4gICAgICBmc1dhdGNoQnJvYWRjYXN0KFxuICAgICAgICBzeXNQYXRoLnJlc29sdmUocGF0aCwgZXZQYXRoKSwgS0VZX0xJU1RFTkVSUywgc3lzUGF0aC5qb2luKHBhdGgsIGV2UGF0aClcbiAgICAgICk7XG4gICAgfVxuICB9O1xuICB0cnkge1xuICAgIHJldHVybiBmcy53YXRjaChwYXRoLCBvcHRpb25zLCBoYW5kbGVFdmVudCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgZXJySGFuZGxlcihlcnJvcik7XG4gIH1cbn1cblxuLyoqXG4gKiBIZWxwZXIgZm9yIHBhc3NpbmcgZnNfd2F0Y2ggZXZlbnQgZGF0YSB0byBhIGNvbGxlY3Rpb24gb2YgbGlzdGVuZXJzXG4gKiBAcGFyYW0ge1BhdGh9IGZ1bGxQYXRoIGFic29sdXRlIHBhdGggYm91bmQgdG8gZnNfd2F0Y2ggaW5zdGFuY2VcbiAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlIGxpc3RlbmVyIHR5cGVcbiAqIEBwYXJhbSB7Kj19IHZhbDEgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byBsaXN0ZW5lcnNcbiAqIEBwYXJhbSB7Kj19IHZhbDJcbiAqIEBwYXJhbSB7Kj19IHZhbDNcbiAqL1xuY29uc3QgZnNXYXRjaEJyb2FkY2FzdCA9IChmdWxsUGF0aCwgdHlwZSwgdmFsMSwgdmFsMiwgdmFsMykgPT4ge1xuICBjb25zdCBjb250ID0gRnNXYXRjaEluc3RhbmNlcy5nZXQoZnVsbFBhdGgpO1xuICBpZiAoIWNvbnQpIHJldHVybjtcbiAgZm9yZWFjaChjb250W3R5cGVdLCAobGlzdGVuZXIpID0+IHtcbiAgICBsaXN0ZW5lcih2YWwxLCB2YWwyLCB2YWwzKTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIEluc3RhbnRpYXRlcyB0aGUgZnNfd2F0Y2ggaW50ZXJmYWNlIG9yIGJpbmRzIGxpc3RlbmVyc1xuICogdG8gYW4gZXhpc3Rpbmcgb25lIGNvdmVyaW5nIHRoZSBzYW1lIGZpbGUgc3lzdGVtIGVudHJ5XG4gKiBAcGFyYW0ge1N0cmluZ30gcGF0aFxuICogQHBhcmFtIHtTdHJpbmd9IGZ1bGxQYXRoIGFic29sdXRlIHBhdGhcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIHRvIGJlIHBhc3NlZCB0byBmc193YXRjaFxuICogQHBhcmFtIHtPYmplY3R9IGhhbmRsZXJzIGNvbnRhaW5lciBmb3IgZXZlbnQgbGlzdGVuZXIgZnVuY3Rpb25zXG4gKi9cbmNvbnN0IHNldEZzV2F0Y2hMaXN0ZW5lciA9IChwYXRoLCBmdWxsUGF0aCwgb3B0aW9ucywgaGFuZGxlcnMpID0+IHtcbiAgY29uc3Qge2xpc3RlbmVyLCBlcnJIYW5kbGVyLCByYXdFbWl0dGVyfSA9IGhhbmRsZXJzO1xuICBsZXQgY29udCA9IEZzV2F0Y2hJbnN0YW5jZXMuZ2V0KGZ1bGxQYXRoKTtcblxuICAvKiogQHR5cGUge2ZzLkZTV2F0Y2hlcj19ICovXG4gIGxldCB3YXRjaGVyO1xuICBpZiAoIW9wdGlvbnMucGVyc2lzdGVudCkge1xuICAgIHdhdGNoZXIgPSBjcmVhdGVGc1dhdGNoSW5zdGFuY2UoXG4gICAgICBwYXRoLCBvcHRpb25zLCBsaXN0ZW5lciwgZXJySGFuZGxlciwgcmF3RW1pdHRlclxuICAgICk7XG4gICAgcmV0dXJuIHdhdGNoZXIuY2xvc2UuYmluZCh3YXRjaGVyKTtcbiAgfVxuICBpZiAoY29udCkge1xuICAgIGFkZEFuZENvbnZlcnQoY29udCwgS0VZX0xJU1RFTkVSUywgbGlzdGVuZXIpO1xuICAgIGFkZEFuZENvbnZlcnQoY29udCwgS0VZX0VSUiwgZXJySGFuZGxlcik7XG4gICAgYWRkQW5kQ29udmVydChjb250LCBLRVlfUkFXLCByYXdFbWl0dGVyKTtcbiAgfSBlbHNlIHtcbiAgICB3YXRjaGVyID0gY3JlYXRlRnNXYXRjaEluc3RhbmNlKFxuICAgICAgcGF0aCxcbiAgICAgIG9wdGlvbnMsXG4gICAgICBmc1dhdGNoQnJvYWRjYXN0LmJpbmQobnVsbCwgZnVsbFBhdGgsIEtFWV9MSVNURU5FUlMpLFxuICAgICAgZXJySGFuZGxlciwgLy8gbm8gbmVlZCB0byB1c2UgYnJvYWRjYXN0IGhlcmVcbiAgICAgIGZzV2F0Y2hCcm9hZGNhc3QuYmluZChudWxsLCBmdWxsUGF0aCwgS0VZX1JBVylcbiAgICApO1xuICAgIGlmICghd2F0Y2hlcikgcmV0dXJuO1xuICAgIHdhdGNoZXIub24oRVZfRVJST1IsIGFzeW5jIChlcnJvcikgPT4ge1xuICAgICAgY29uc3QgYnJvYWRjYXN0RXJyID0gZnNXYXRjaEJyb2FkY2FzdC5iaW5kKG51bGwsIGZ1bGxQYXRoLCBLRVlfRVJSKTtcbiAgICAgIGNvbnQud2F0Y2hlclVudXNhYmxlID0gdHJ1ZTsgLy8gZG9jdW1lbnRlZCBzaW5jZSBOb2RlIDEwLjQuMVxuICAgICAgLy8gV29ya2Fyb3VuZCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL2pveWVudC9ub2RlL2lzc3Vlcy80MzM3XG4gICAgICBpZiAoaXNXaW5kb3dzICYmIGVycm9yLmNvZGUgPT09ICdFUEVSTScpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBmZCA9IGF3YWl0IG9wZW4ocGF0aCwgJ3InKTtcbiAgICAgICAgICBhd2FpdCBjbG9zZShmZCk7XG4gICAgICAgICAgYnJvYWRjYXN0RXJyKGVycm9yKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7fVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJvYWRjYXN0RXJyKGVycm9yKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb250ID0ge1xuICAgICAgbGlzdGVuZXJzOiBsaXN0ZW5lcixcbiAgICAgIGVyckhhbmRsZXJzOiBlcnJIYW5kbGVyLFxuICAgICAgcmF3RW1pdHRlcnM6IHJhd0VtaXR0ZXIsXG4gICAgICB3YXRjaGVyXG4gICAgfTtcbiAgICBGc1dhdGNoSW5zdGFuY2VzLnNldChmdWxsUGF0aCwgY29udCk7XG4gIH1cbiAgLy8gY29uc3QgaW5kZXggPSBjb250Lmxpc3RlbmVycy5pbmRleE9mKGxpc3RlbmVyKTtcblxuICAvLyByZW1vdmVzIHRoaXMgaW5zdGFuY2UncyBsaXN0ZW5lcnMgYW5kIGNsb3NlcyB0aGUgdW5kZXJseWluZyBmc193YXRjaFxuICAvLyBpbnN0YW5jZSBpZiB0aGVyZSBhcmUgbm8gbW9yZSBsaXN0ZW5lcnMgbGVmdFxuICByZXR1cm4gKCkgPT4ge1xuICAgIGRlbEZyb21TZXQoY29udCwgS0VZX0xJU1RFTkVSUywgbGlzdGVuZXIpO1xuICAgIGRlbEZyb21TZXQoY29udCwgS0VZX0VSUiwgZXJySGFuZGxlcik7XG4gICAgZGVsRnJvbVNldChjb250LCBLRVlfUkFXLCByYXdFbWl0dGVyKTtcbiAgICBpZiAoaXNFbXB0eVNldChjb250Lmxpc3RlbmVycykpIHtcbiAgICAgIC8vIENoZWNrIHRvIHByb3RlY3QgYWdhaW5zdCBpc3N1ZSBnaC03MzAuXG4gICAgICAvLyBpZiAoY29udC53YXRjaGVyVW51c2FibGUpIHtcbiAgICAgIGNvbnQud2F0Y2hlci5jbG9zZSgpO1xuICAgICAgLy8gfVxuICAgICAgRnNXYXRjaEluc3RhbmNlcy5kZWxldGUoZnVsbFBhdGgpO1xuICAgICAgSEFORExFUl9LRVlTLmZvckVhY2goY2xlYXJJdGVtKGNvbnQpKTtcbiAgICAgIGNvbnQud2F0Y2hlciA9IHVuZGVmaW5lZDtcbiAgICAgIE9iamVjdC5mcmVlemUoY29udCk7XG4gICAgfVxuICB9O1xufTtcblxuLy8gZnNfd2F0Y2hGaWxlIGhlbHBlcnNcblxuLy8gb2JqZWN0IHRvIGhvbGQgcGVyLXByb2Nlc3MgZnNfd2F0Y2hGaWxlIGluc3RhbmNlc1xuLy8gKG1heSBiZSBzaGFyZWQgYWNyb3NzIGNob2tpZGFyIEZTV2F0Y2hlciBpbnN0YW5jZXMpXG5jb25zdCBGc1dhdGNoRmlsZUluc3RhbmNlcyA9IG5ldyBNYXAoKTtcblxuLyoqXG4gKiBJbnN0YW50aWF0ZXMgdGhlIGZzX3dhdGNoRmlsZSBpbnRlcmZhY2Ugb3IgYmluZHMgbGlzdGVuZXJzXG4gKiB0byBhbiBleGlzdGluZyBvbmUgY292ZXJpbmcgdGhlIHNhbWUgZmlsZSBzeXN0ZW0gZW50cnlcbiAqIEBwYXJhbSB7U3RyaW5nfSBwYXRoIHRvIGJlIHdhdGNoZWRcbiAqIEBwYXJhbSB7U3RyaW5nfSBmdWxsUGF0aCBhYnNvbHV0ZSBwYXRoXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyBvcHRpb25zIHRvIGJlIHBhc3NlZCB0byBmc193YXRjaEZpbGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBoYW5kbGVycyBjb250YWluZXIgZm9yIGV2ZW50IGxpc3RlbmVyIGZ1bmN0aW9uc1xuICogQHJldHVybnMge0Z1bmN0aW9ufSBjbG9zZXJcbiAqL1xuY29uc3Qgc2V0RnNXYXRjaEZpbGVMaXN0ZW5lciA9IChwYXRoLCBmdWxsUGF0aCwgb3B0aW9ucywgaGFuZGxlcnMpID0+IHtcbiAgY29uc3Qge2xpc3RlbmVyLCByYXdFbWl0dGVyfSA9IGhhbmRsZXJzO1xuICBsZXQgY29udCA9IEZzV2F0Y2hGaWxlSW5zdGFuY2VzLmdldChmdWxsUGF0aCk7XG5cbiAgLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMsIHByZWZlci1kZXN0cnVjdHVyaW5nICovXG4gIGxldCBsaXN0ZW5lcnMgPSBuZXcgU2V0KCk7XG4gIGxldCByYXdFbWl0dGVycyA9IG5ldyBTZXQoKTtcblxuICBjb25zdCBjb3B0cyA9IGNvbnQgJiYgY29udC5vcHRpb25zO1xuICBpZiAoY29wdHMgJiYgKGNvcHRzLnBlcnNpc3RlbnQgPCBvcHRpb25zLnBlcnNpc3RlbnQgfHwgY29wdHMuaW50ZXJ2YWwgPiBvcHRpb25zLmludGVydmFsKSkge1xuICAgIC8vIFwiVXBncmFkZVwiIHRoZSB3YXRjaGVyIHRvIHBlcnNpc3RlbmNlIG9yIGEgcXVpY2tlciBpbnRlcnZhbC5cbiAgICAvLyBUaGlzIGNyZWF0ZXMgc29tZSB1bmxpa2VseSBlZGdlIGNhc2UgaXNzdWVzIGlmIHRoZSB1c2VyIG1peGVzXG4gICAgLy8gc2V0dGluZ3MgaW4gYSB2ZXJ5IHdlaXJkIHdheSwgYnV0IHNvbHZpbmcgZm9yIHRob3NlIGNhc2VzXG4gICAgLy8gZG9lc24ndCBzZWVtIHdvcnRod2hpbGUgZm9yIHRoZSBhZGRlZCBjb21wbGV4aXR5LlxuICAgIGxpc3RlbmVycyA9IGNvbnQubGlzdGVuZXJzO1xuICAgIHJhd0VtaXR0ZXJzID0gY29udC5yYXdFbWl0dGVycztcbiAgICBmcy51bndhdGNoRmlsZShmdWxsUGF0aCk7XG4gICAgY29udCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLXZhcnMsIHByZWZlci1kZXN0cnVjdHVyaW5nICovXG5cbiAgaWYgKGNvbnQpIHtcbiAgICBhZGRBbmRDb252ZXJ0KGNvbnQsIEtFWV9MSVNURU5FUlMsIGxpc3RlbmVyKTtcbiAgICBhZGRBbmRDb252ZXJ0KGNvbnQsIEtFWV9SQVcsIHJhd0VtaXR0ZXIpO1xuICB9IGVsc2Uge1xuICAgIC8vIFRPRE9cbiAgICAvLyBsaXN0ZW5lcnMuYWRkKGxpc3RlbmVyKTtcbiAgICAvLyByYXdFbWl0dGVycy5hZGQocmF3RW1pdHRlcik7XG4gICAgY29udCA9IHtcbiAgICAgIGxpc3RlbmVyczogbGlzdGVuZXIsXG4gICAgICByYXdFbWl0dGVyczogcmF3RW1pdHRlcixcbiAgICAgIG9wdGlvbnMsXG4gICAgICB3YXRjaGVyOiBmcy53YXRjaEZpbGUoZnVsbFBhdGgsIG9wdGlvbnMsIChjdXJyLCBwcmV2KSA9PiB7XG4gICAgICAgIGZvcmVhY2goY29udC5yYXdFbWl0dGVycywgKHJhd0VtaXR0ZXIpID0+IHtcbiAgICAgICAgICByYXdFbWl0dGVyKEVWX0NIQU5HRSwgZnVsbFBhdGgsIHtjdXJyLCBwcmV2fSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBjdXJybXRpbWUgPSBjdXJyLm10aW1lTXM7XG4gICAgICAgIGlmIChjdXJyLnNpemUgIT09IHByZXYuc2l6ZSB8fCBjdXJybXRpbWUgPiBwcmV2Lm10aW1lTXMgfHwgY3Vycm10aW1lID09PSAwKSB7XG4gICAgICAgICAgZm9yZWFjaChjb250Lmxpc3RlbmVycywgKGxpc3RlbmVyKSA9PiBsaXN0ZW5lcihwYXRoLCBjdXJyKSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfTtcbiAgICBGc1dhdGNoRmlsZUluc3RhbmNlcy5zZXQoZnVsbFBhdGgsIGNvbnQpO1xuICB9XG4gIC8vIGNvbnN0IGluZGV4ID0gY29udC5saXN0ZW5lcnMuaW5kZXhPZihsaXN0ZW5lcik7XG5cbiAgLy8gUmVtb3ZlcyB0aGlzIGluc3RhbmNlJ3MgbGlzdGVuZXJzIGFuZCBjbG9zZXMgdGhlIHVuZGVybHlpbmcgZnNfd2F0Y2hGaWxlXG4gIC8vIGluc3RhbmNlIGlmIHRoZXJlIGFyZSBubyBtb3JlIGxpc3RlbmVycyBsZWZ0LlxuICByZXR1cm4gKCkgPT4ge1xuICAgIGRlbEZyb21TZXQoY29udCwgS0VZX0xJU1RFTkVSUywgbGlzdGVuZXIpO1xuICAgIGRlbEZyb21TZXQoY29udCwgS0VZX1JBVywgcmF3RW1pdHRlcik7XG4gICAgaWYgKGlzRW1wdHlTZXQoY29udC5saXN0ZW5lcnMpKSB7XG4gICAgICBGc1dhdGNoRmlsZUluc3RhbmNlcy5kZWxldGUoZnVsbFBhdGgpO1xuICAgICAgZnMudW53YXRjaEZpbGUoZnVsbFBhdGgpO1xuICAgICAgY29udC5vcHRpb25zID0gY29udC53YXRjaGVyID0gdW5kZWZpbmVkO1xuICAgICAgT2JqZWN0LmZyZWV6ZShjb250KTtcbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIEBtaXhpblxuICovXG5jbGFzcyBOb2RlRnNIYW5kbGVyIHtcblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydChcIi4uL2luZGV4XCIpLkZTV2F0Y2hlcn0gZnNXXG4gKi9cbmNvbnN0cnVjdG9yKGZzVykge1xuICB0aGlzLmZzdyA9IGZzVztcbiAgdGhpcy5fYm91bmRIYW5kbGVFcnJvciA9IChlcnJvcikgPT4gZnNXLl9oYW5kbGVFcnJvcihlcnJvcik7XG59XG5cbi8qKlxuICogV2F0Y2ggZmlsZSBmb3IgY2hhbmdlcyB3aXRoIGZzX3dhdGNoRmlsZSBvciBmc193YXRjaC5cbiAqIEBwYXJhbSB7U3RyaW5nfSBwYXRoIHRvIGZpbGUgb3IgZGlyXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBsaXN0ZW5lciBvbiBmcyBjaGFuZ2VcbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gY2xvc2VyIGZvciB0aGUgd2F0Y2hlciBpbnN0YW5jZVxuICovXG5fd2F0Y2hXaXRoTm9kZUZzKHBhdGgsIGxpc3RlbmVyKSB7XG4gIGNvbnN0IG9wdHMgPSB0aGlzLmZzdy5vcHRpb25zO1xuICBjb25zdCBkaXJlY3RvcnkgPSBzeXNQYXRoLmRpcm5hbWUocGF0aCk7XG4gIGNvbnN0IGJhc2VuYW1lID0gc3lzUGF0aC5iYXNlbmFtZShwYXRoKTtcbiAgY29uc3QgcGFyZW50ID0gdGhpcy5mc3cuX2dldFdhdGNoZWREaXIoZGlyZWN0b3J5KTtcbiAgcGFyZW50LmFkZChiYXNlbmFtZSk7XG4gIGNvbnN0IGFic29sdXRlUGF0aCA9IHN5c1BhdGgucmVzb2x2ZShwYXRoKTtcbiAgY29uc3Qgb3B0aW9ucyA9IHtwZXJzaXN0ZW50OiBvcHRzLnBlcnNpc3RlbnR9O1xuICBpZiAoIWxpc3RlbmVyKSBsaXN0ZW5lciA9IEVNUFRZX0ZOO1xuXG4gIGxldCBjbG9zZXI7XG4gIGlmIChvcHRzLnVzZVBvbGxpbmcpIHtcbiAgICBvcHRpb25zLmludGVydmFsID0gb3B0cy5lbmFibGVCaW5hcnlJbnRlcnZhbCAmJiBpc0JpbmFyeVBhdGgoYmFzZW5hbWUpID9cbiAgICAgIG9wdHMuYmluYXJ5SW50ZXJ2YWwgOiBvcHRzLmludGVydmFsO1xuICAgIGNsb3NlciA9IHNldEZzV2F0Y2hGaWxlTGlzdGVuZXIocGF0aCwgYWJzb2x1dGVQYXRoLCBvcHRpb25zLCB7XG4gICAgICBsaXN0ZW5lcixcbiAgICAgIHJhd0VtaXR0ZXI6IHRoaXMuZnN3Ll9lbWl0UmF3XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgY2xvc2VyID0gc2V0RnNXYXRjaExpc3RlbmVyKHBhdGgsIGFic29sdXRlUGF0aCwgb3B0aW9ucywge1xuICAgICAgbGlzdGVuZXIsXG4gICAgICBlcnJIYW5kbGVyOiB0aGlzLl9ib3VuZEhhbmRsZUVycm9yLFxuICAgICAgcmF3RW1pdHRlcjogdGhpcy5mc3cuX2VtaXRSYXdcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gY2xvc2VyO1xufVxuXG4vKipcbiAqIFdhdGNoIGEgZmlsZSBhbmQgZW1pdCBhZGQgZXZlbnQgaWYgd2FycmFudGVkLlxuICogQHBhcmFtIHtQYXRofSBmaWxlIFBhdGhcbiAqIEBwYXJhbSB7ZnMuU3RhdHN9IHN0YXRzIHJlc3VsdCBvZiBmc19zdGF0XG4gKiBAcGFyYW0ge0Jvb2xlYW59IGluaXRpYWxBZGQgd2FzIHRoZSBmaWxlIGFkZGVkIGF0IHdhdGNoIGluc3RhbnRpYXRpb24/XG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IGNsb3NlciBmb3IgdGhlIHdhdGNoZXIgaW5zdGFuY2VcbiAqL1xuX2hhbmRsZUZpbGUoZmlsZSwgc3RhdHMsIGluaXRpYWxBZGQpIHtcbiAgaWYgKHRoaXMuZnN3LmNsb3NlZCkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBkaXJuYW1lID0gc3lzUGF0aC5kaXJuYW1lKGZpbGUpO1xuICBjb25zdCBiYXNlbmFtZSA9IHN5c1BhdGguYmFzZW5hbWUoZmlsZSk7XG4gIGNvbnN0IHBhcmVudCA9IHRoaXMuZnN3Ll9nZXRXYXRjaGVkRGlyKGRpcm5hbWUpO1xuICAvLyBzdGF0cyBpcyBhbHdheXMgcHJlc2VudFxuICBsZXQgcHJldlN0YXRzID0gc3RhdHM7XG5cbiAgLy8gaWYgdGhlIGZpbGUgaXMgYWxyZWFkeSBiZWluZyB3YXRjaGVkLCBkbyBub3RoaW5nXG4gIGlmIChwYXJlbnQuaGFzKGJhc2VuYW1lKSkgcmV0dXJuO1xuXG4gIGNvbnN0IGxpc3RlbmVyID0gYXN5bmMgKHBhdGgsIG5ld1N0YXRzKSA9PiB7XG4gICAgaWYgKCF0aGlzLmZzdy5fdGhyb3R0bGUoVEhST1RUTEVfTU9ERV9XQVRDSCwgZmlsZSwgNSkpIHJldHVybjtcbiAgICBpZiAoIW5ld1N0YXRzIHx8IG5ld1N0YXRzLm10aW1lTXMgPT09IDApIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IG5ld1N0YXRzID0gYXdhaXQgc3RhdChmaWxlKTtcbiAgICAgICAgaWYgKHRoaXMuZnN3LmNsb3NlZCkgcmV0dXJuO1xuICAgICAgICAvLyBDaGVjayB0aGF0IGNoYW5nZSBldmVudCB3YXMgbm90IGZpcmVkIGJlY2F1c2Ugb2YgY2hhbmdlZCBvbmx5IGFjY2Vzc1RpbWUuXG4gICAgICAgIGNvbnN0IGF0ID0gbmV3U3RhdHMuYXRpbWVNcztcbiAgICAgICAgY29uc3QgbXQgPSBuZXdTdGF0cy5tdGltZU1zO1xuICAgICAgICBpZiAoIWF0IHx8IGF0IDw9IG10IHx8IG10ICE9PSBwcmV2U3RhdHMubXRpbWVNcykge1xuICAgICAgICAgIHRoaXMuZnN3Ll9lbWl0KEVWX0NIQU5HRSwgZmlsZSwgbmV3U3RhdHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0xpbnV4ICYmIHByZXZTdGF0cy5pbm8gIT09IG5ld1N0YXRzLmlubykge1xuICAgICAgICAgIHRoaXMuZnN3Ll9jbG9zZUZpbGUocGF0aClcbiAgICAgICAgICBwcmV2U3RhdHMgPSBuZXdTdGF0cztcbiAgICAgICAgICB0aGlzLmZzdy5fYWRkUGF0aENsb3NlcihwYXRoLCB0aGlzLl93YXRjaFdpdGhOb2RlRnMoZmlsZSwgbGlzdGVuZXIpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcmV2U3RhdHMgPSBuZXdTdGF0cztcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gRml4IGlzc3VlcyB3aGVyZSBtdGltZSBpcyBudWxsIGJ1dCBmaWxlIGlzIHN0aWxsIHByZXNlbnRcbiAgICAgICAgdGhpcy5mc3cuX3JlbW92ZShkaXJuYW1lLCBiYXNlbmFtZSk7XG4gICAgICB9XG4gICAgICAvLyBhZGQgaXMgYWJvdXQgdG8gYmUgZW1pdHRlZCBpZiBmaWxlIG5vdCBhbHJlYWR5IHRyYWNrZWQgaW4gcGFyZW50XG4gICAgfSBlbHNlIGlmIChwYXJlbnQuaGFzKGJhc2VuYW1lKSkge1xuICAgICAgLy8gQ2hlY2sgdGhhdCBjaGFuZ2UgZXZlbnQgd2FzIG5vdCBmaXJlZCBiZWNhdXNlIG9mIGNoYW5nZWQgb25seSBhY2Nlc3NUaW1lLlxuICAgICAgY29uc3QgYXQgPSBuZXdTdGF0cy5hdGltZU1zO1xuICAgICAgY29uc3QgbXQgPSBuZXdTdGF0cy5tdGltZU1zO1xuICAgICAgaWYgKCFhdCB8fCBhdCA8PSBtdCB8fCBtdCAhPT0gcHJldlN0YXRzLm10aW1lTXMpIHtcbiAgICAgICAgdGhpcy5mc3cuX2VtaXQoRVZfQ0hBTkdFLCBmaWxlLCBuZXdTdGF0cyk7XG4gICAgICB9XG4gICAgICBwcmV2U3RhdHMgPSBuZXdTdGF0cztcbiAgICB9XG4gIH1cbiAgLy8ga2ljayBvZmYgdGhlIHdhdGNoZXJcbiAgY29uc3QgY2xvc2VyID0gdGhpcy5fd2F0Y2hXaXRoTm9kZUZzKGZpbGUsIGxpc3RlbmVyKTtcblxuICAvLyBlbWl0IGFuIGFkZCBldmVudCBpZiB3ZSdyZSBzdXBwb3NlZCB0b1xuICBpZiAoIShpbml0aWFsQWRkICYmIHRoaXMuZnN3Lm9wdGlvbnMuaWdub3JlSW5pdGlhbCkgJiYgdGhpcy5mc3cuX2lzbnRJZ25vcmVkKGZpbGUpKSB7XG4gICAgaWYgKCF0aGlzLmZzdy5fdGhyb3R0bGUoRVZfQURELCBmaWxlLCAwKSkgcmV0dXJuO1xuICAgIHRoaXMuZnN3Ll9lbWl0KEVWX0FERCwgZmlsZSwgc3RhdHMpO1xuICB9XG5cbiAgcmV0dXJuIGNsb3Nlcjtcbn1cblxuLyoqXG4gKiBIYW5kbGUgc3ltbGlua3MgZW5jb3VudGVyZWQgd2hpbGUgcmVhZGluZyBhIGRpci5cbiAqIEBwYXJhbSB7T2JqZWN0fSBlbnRyeSByZXR1cm5lZCBieSByZWFkZGlycFxuICogQHBhcmFtIHtTdHJpbmd9IGRpcmVjdG9yeSBwYXRoIG9mIGRpciBiZWluZyByZWFkXG4gKiBAcGFyYW0ge1N0cmluZ30gcGF0aCBvZiB0aGlzIGl0ZW1cbiAqIEBwYXJhbSB7U3RyaW5nfSBpdGVtIGJhc2VuYW1lIG9mIHRoaXMgaXRlbVxuICogQHJldHVybnMge1Byb21pc2U8Qm9vbGVhbj59IHRydWUgaWYgbm8gbW9yZSBwcm9jZXNzaW5nIGlzIG5lZWRlZCBmb3IgdGhpcyBlbnRyeS5cbiAqL1xuYXN5bmMgX2hhbmRsZVN5bWxpbmsoZW50cnksIGRpcmVjdG9yeSwgcGF0aCwgaXRlbSkge1xuICBpZiAodGhpcy5mc3cuY2xvc2VkKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGZ1bGwgPSBlbnRyeS5mdWxsUGF0aDtcbiAgY29uc3QgZGlyID0gdGhpcy5mc3cuX2dldFdhdGNoZWREaXIoZGlyZWN0b3J5KTtcblxuICBpZiAoIXRoaXMuZnN3Lm9wdGlvbnMuZm9sbG93U3ltbGlua3MpIHtcbiAgICAvLyB3YXRjaCBzeW1saW5rIGRpcmVjdGx5IChkb24ndCBmb2xsb3cpIGFuZCBkZXRlY3QgY2hhbmdlc1xuICAgIHRoaXMuZnN3Ll9pbmNyUmVhZHlDb3VudCgpO1xuICAgIGNvbnN0IGxpbmtQYXRoID0gYXdhaXQgZnNyZWFscGF0aChwYXRoKTtcbiAgICBpZiAodGhpcy5mc3cuY2xvc2VkKSByZXR1cm47XG4gICAgaWYgKGRpci5oYXMoaXRlbSkpIHtcbiAgICAgIGlmICh0aGlzLmZzdy5fc3ltbGlua1BhdGhzLmdldChmdWxsKSAhPT0gbGlua1BhdGgpIHtcbiAgICAgICAgdGhpcy5mc3cuX3N5bWxpbmtQYXRocy5zZXQoZnVsbCwgbGlua1BhdGgpO1xuICAgICAgICB0aGlzLmZzdy5fZW1pdChFVl9DSEFOR0UsIHBhdGgsIGVudHJ5LnN0YXRzKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZGlyLmFkZChpdGVtKTtcbiAgICAgIHRoaXMuZnN3Ll9zeW1saW5rUGF0aHMuc2V0KGZ1bGwsIGxpbmtQYXRoKTtcbiAgICAgIHRoaXMuZnN3Ll9lbWl0KEVWX0FERCwgcGF0aCwgZW50cnkuc3RhdHMpO1xuICAgIH1cbiAgICB0aGlzLmZzdy5fZW1pdFJlYWR5KCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBkb24ndCBmb2xsb3cgdGhlIHNhbWUgc3ltbGluayBtb3JlIHRoYW4gb25jZVxuICBpZiAodGhpcy5mc3cuX3N5bWxpbmtQYXRocy5oYXMoZnVsbCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHRoaXMuZnN3Ll9zeW1saW5rUGF0aHMuc2V0KGZ1bGwsIHRydWUpO1xufVxuXG5faGFuZGxlUmVhZChkaXJlY3RvcnksIGluaXRpYWxBZGQsIHdoLCB0YXJnZXQsIGRpciwgZGVwdGgsIHRocm90dGxlcikge1xuICAvLyBOb3JtYWxpemUgdGhlIGRpcmVjdG9yeSBuYW1lIG9uIFdpbmRvd3NcbiAgZGlyZWN0b3J5ID0gc3lzUGF0aC5qb2luKGRpcmVjdG9yeSwgRU1QVFlfU1RSKTtcblxuICBpZiAoIXdoLmhhc0dsb2IpIHtcbiAgICB0aHJvdHRsZXIgPSB0aGlzLmZzdy5fdGhyb3R0bGUoJ3JlYWRkaXInLCBkaXJlY3RvcnksIDEwMDApO1xuICAgIGlmICghdGhyb3R0bGVyKSByZXR1cm47XG4gIH1cblxuICBjb25zdCBwcmV2aW91cyA9IHRoaXMuZnN3Ll9nZXRXYXRjaGVkRGlyKHdoLnBhdGgpO1xuICBjb25zdCBjdXJyZW50ID0gbmV3IFNldCgpO1xuXG4gIGxldCBzdHJlYW0gPSB0aGlzLmZzdy5fcmVhZGRpcnAoZGlyZWN0b3J5LCB7XG4gICAgZmlsZUZpbHRlcjogZW50cnkgPT4gd2guZmlsdGVyUGF0aChlbnRyeSksXG4gICAgZGlyZWN0b3J5RmlsdGVyOiBlbnRyeSA9PiB3aC5maWx0ZXJEaXIoZW50cnkpLFxuICAgIGRlcHRoOiAwXG4gIH0pLm9uKFNUUl9EQVRBLCBhc3luYyAoZW50cnkpID0+IHtcbiAgICBpZiAodGhpcy5mc3cuY2xvc2VkKSB7XG4gICAgICBzdHJlYW0gPSB1bmRlZmluZWQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGl0ZW0gPSBlbnRyeS5wYXRoO1xuICAgIGxldCBwYXRoID0gc3lzUGF0aC5qb2luKGRpcmVjdG9yeSwgaXRlbSk7XG4gICAgY3VycmVudC5hZGQoaXRlbSk7XG5cbiAgICBpZiAoZW50cnkuc3RhdHMuaXNTeW1ib2xpY0xpbmsoKSAmJiBhd2FpdCB0aGlzLl9oYW5kbGVTeW1saW5rKGVudHJ5LCBkaXJlY3RvcnksIHBhdGgsIGl0ZW0pKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZnN3LmNsb3NlZCkge1xuICAgICAgc3RyZWFtID0gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBGaWxlcyB0aGF0IHByZXNlbnQgaW4gY3VycmVudCBkaXJlY3Rvcnkgc25hcHNob3RcbiAgICAvLyBidXQgYWJzZW50IGluIHByZXZpb3VzIGFyZSBhZGRlZCB0byB3YXRjaCBsaXN0IGFuZFxuICAgIC8vIGVtaXQgYGFkZGAgZXZlbnQuXG4gICAgaWYgKGl0ZW0gPT09IHRhcmdldCB8fCAhdGFyZ2V0ICYmICFwcmV2aW91cy5oYXMoaXRlbSkpIHtcbiAgICAgIHRoaXMuZnN3Ll9pbmNyUmVhZHlDb3VudCgpO1xuXG4gICAgICAvLyBlbnN1cmUgcmVsYXRpdmVuZXNzIG9mIHBhdGggaXMgcHJlc2VydmVkIGluIGNhc2Ugb2Ygd2F0Y2hlciByZXVzZVxuICAgICAgcGF0aCA9IHN5c1BhdGguam9pbihkaXIsIHN5c1BhdGgucmVsYXRpdmUoZGlyLCBwYXRoKSk7XG5cbiAgICAgIHRoaXMuX2FkZFRvTm9kZUZzKHBhdGgsIGluaXRpYWxBZGQsIHdoLCBkZXB0aCArIDEpO1xuICAgIH1cbiAgfSkub24oRVZfRVJST1IsIHRoaXMuX2JvdW5kSGFuZGxlRXJyb3IpO1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+XG4gICAgc3RyZWFtLm9uY2UoU1RSX0VORCwgKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZnN3LmNsb3NlZCkge1xuICAgICAgICBzdHJlYW0gPSB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHdhc1Rocm90dGxlZCA9IHRocm90dGxlciA/IHRocm90dGxlci5jbGVhcigpIDogZmFsc2U7XG5cbiAgICAgIHJlc29sdmUoKTtcblxuICAgICAgLy8gRmlsZXMgdGhhdCBhYnNlbnQgaW4gY3VycmVudCBkaXJlY3Rvcnkgc25hcHNob3RcbiAgICAgIC8vIGJ1dCBwcmVzZW50IGluIHByZXZpb3VzIGVtaXQgYHJlbW92ZWAgZXZlbnRcbiAgICAgIC8vIGFuZCBhcmUgcmVtb3ZlZCBmcm9tIEB3YXRjaGVkW2RpcmVjdG9yeV0uXG4gICAgICBwcmV2aW91cy5nZXRDaGlsZHJlbigpLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgICAgICByZXR1cm4gaXRlbSAhPT0gZGlyZWN0b3J5ICYmXG4gICAgICAgICAgIWN1cnJlbnQuaGFzKGl0ZW0pICYmXG4gICAgICAgICAgLy8gaW4gY2FzZSBvZiBpbnRlcnNlY3RpbmcgZ2xvYnM7XG4gICAgICAgICAgLy8gYSBwYXRoIG1heSBoYXZlIGJlZW4gZmlsdGVyZWQgb3V0IG9mIHRoaXMgcmVhZGRpciwgYnV0XG4gICAgICAgICAgLy8gc2hvdWxkbid0IGJlIHJlbW92ZWQgYmVjYXVzZSBpdCBtYXRjaGVzIGEgZGlmZmVyZW50IGdsb2JcbiAgICAgICAgICAoIXdoLmhhc0dsb2IgfHwgd2guZmlsdGVyUGF0aCh7XG4gICAgICAgICAgICBmdWxsUGF0aDogc3lzUGF0aC5yZXNvbHZlKGRpcmVjdG9yeSwgaXRlbSlcbiAgICAgICAgICB9KSk7XG4gICAgICB9KS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIHRoaXMuZnN3Ll9yZW1vdmUoZGlyZWN0b3J5LCBpdGVtKTtcbiAgICAgIH0pO1xuXG4gICAgICBzdHJlYW0gPSB1bmRlZmluZWQ7XG5cbiAgICAgIC8vIG9uZSBtb3JlIHRpbWUgZm9yIGFueSBtaXNzZWQgaW4gY2FzZSBjaGFuZ2VzIGNhbWUgaW4gZXh0cmVtZWx5IHF1aWNrbHlcbiAgICAgIGlmICh3YXNUaHJvdHRsZWQpIHRoaXMuX2hhbmRsZVJlYWQoZGlyZWN0b3J5LCBmYWxzZSwgd2gsIHRhcmdldCwgZGlyLCBkZXB0aCwgdGhyb3R0bGVyKTtcbiAgICB9KVxuICApO1xufVxuXG4vKipcbiAqIFJlYWQgZGlyZWN0b3J5IHRvIGFkZCAvIHJlbW92ZSBmaWxlcyBmcm9tIGBAd2F0Y2hlZGAgbGlzdCBhbmQgcmUtcmVhZCBpdCBvbiBjaGFuZ2UuXG4gKiBAcGFyYW0ge1N0cmluZ30gZGlyIGZzIHBhdGhcbiAqIEBwYXJhbSB7ZnMuU3RhdHN9IHN0YXRzXG4gKiBAcGFyYW0ge0Jvb2xlYW59IGluaXRpYWxBZGRcbiAqIEBwYXJhbSB7TnVtYmVyfSBkZXB0aCByZWxhdGl2ZSB0byB1c2VyLXN1cHBsaWVkIHBhdGhcbiAqIEBwYXJhbSB7U3RyaW5nfSB0YXJnZXQgY2hpbGQgcGF0aCB0YXJnZXRlZCBmb3Igd2F0Y2hcbiAqIEBwYXJhbSB7T2JqZWN0fSB3aCBDb21tb24gd2F0Y2ggaGVscGVycyBmb3IgdGhpcyBwYXRoXG4gKiBAcGFyYW0ge1N0cmluZ30gcmVhbHBhdGhcbiAqIEByZXR1cm5zIHtQcm9taXNlPEZ1bmN0aW9uPn0gY2xvc2VyIGZvciB0aGUgd2F0Y2hlciBpbnN0YW5jZS5cbiAqL1xuYXN5bmMgX2hhbmRsZURpcihkaXIsIHN0YXRzLCBpbml0aWFsQWRkLCBkZXB0aCwgdGFyZ2V0LCB3aCwgcmVhbHBhdGgpIHtcbiAgY29uc3QgcGFyZW50RGlyID0gdGhpcy5mc3cuX2dldFdhdGNoZWREaXIoc3lzUGF0aC5kaXJuYW1lKGRpcikpO1xuICBjb25zdCB0cmFja2VkID0gcGFyZW50RGlyLmhhcyhzeXNQYXRoLmJhc2VuYW1lKGRpcikpO1xuICBpZiAoIShpbml0aWFsQWRkICYmIHRoaXMuZnN3Lm9wdGlvbnMuaWdub3JlSW5pdGlhbCkgJiYgIXRhcmdldCAmJiAhdHJhY2tlZCkge1xuICAgIGlmICghd2guaGFzR2xvYiB8fCB3aC5nbG9iRmlsdGVyKGRpcikpIHRoaXMuZnN3Ll9lbWl0KEVWX0FERF9ESVIsIGRpciwgc3RhdHMpO1xuICB9XG5cbiAgLy8gZW5zdXJlIGRpciBpcyB0cmFja2VkIChoYXJtbGVzcyBpZiByZWR1bmRhbnQpXG4gIHBhcmVudERpci5hZGQoc3lzUGF0aC5iYXNlbmFtZShkaXIpKTtcbiAgdGhpcy5mc3cuX2dldFdhdGNoZWREaXIoZGlyKTtcbiAgbGV0IHRocm90dGxlcjtcbiAgbGV0IGNsb3NlcjtcblxuICBjb25zdCBvRGVwdGggPSB0aGlzLmZzdy5vcHRpb25zLmRlcHRoO1xuICBpZiAoKG9EZXB0aCA9PSBudWxsIHx8IGRlcHRoIDw9IG9EZXB0aCkgJiYgIXRoaXMuZnN3Ll9zeW1saW5rUGF0aHMuaGFzKHJlYWxwYXRoKSkge1xuICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICBhd2FpdCB0aGlzLl9oYW5kbGVSZWFkKGRpciwgaW5pdGlhbEFkZCwgd2gsIHRhcmdldCwgZGlyLCBkZXB0aCwgdGhyb3R0bGVyKTtcbiAgICAgIGlmICh0aGlzLmZzdy5jbG9zZWQpIHJldHVybjtcbiAgICB9XG5cbiAgICBjbG9zZXIgPSB0aGlzLl93YXRjaFdpdGhOb2RlRnMoZGlyLCAoZGlyUGF0aCwgc3RhdHMpID0+IHtcbiAgICAgIC8vIGlmIGN1cnJlbnQgZGlyZWN0b3J5IGlzIHJlbW92ZWQsIGRvIG5vdGhpbmdcbiAgICAgIGlmIChzdGF0cyAmJiBzdGF0cy5tdGltZU1zID09PSAwKSByZXR1cm47XG5cbiAgICAgIHRoaXMuX2hhbmRsZVJlYWQoZGlyUGF0aCwgZmFsc2UsIHdoLCB0YXJnZXQsIGRpciwgZGVwdGgsIHRocm90dGxlcik7XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGNsb3Nlcjtcbn1cblxuLyoqXG4gKiBIYW5kbGUgYWRkZWQgZmlsZSwgZGlyZWN0b3J5LCBvciBnbG9iIHBhdHRlcm4uXG4gKiBEZWxlZ2F0ZXMgY2FsbCB0byBfaGFuZGxlRmlsZSAvIF9oYW5kbGVEaXIgYWZ0ZXIgY2hlY2tzLlxuICogQHBhcmFtIHtTdHJpbmd9IHBhdGggdG8gZmlsZSBvciBpclxuICogQHBhcmFtIHtCb29sZWFufSBpbml0aWFsQWRkIHdhcyB0aGUgZmlsZSBhZGRlZCBhdCB3YXRjaCBpbnN0YW50aWF0aW9uP1xuICogQHBhcmFtIHtPYmplY3R9IHByaW9yV2ggZGVwdGggcmVsYXRpdmUgdG8gdXNlci1zdXBwbGllZCBwYXRoXG4gKiBAcGFyYW0ge051bWJlcn0gZGVwdGggQ2hpbGQgcGF0aCBhY3R1YWxseSB0YXJnZXRlZCBmb3Igd2F0Y2hcbiAqIEBwYXJhbSB7U3RyaW5nPX0gdGFyZ2V0IENoaWxkIHBhdGggYWN0dWFsbHkgdGFyZ2V0ZWQgZm9yIHdhdGNoXG4gKiBAcmV0dXJucyB7UHJvbWlzZX1cbiAqL1xuYXN5bmMgX2FkZFRvTm9kZUZzKHBhdGgsIGluaXRpYWxBZGQsIHByaW9yV2gsIGRlcHRoLCB0YXJnZXQpIHtcbiAgY29uc3QgcmVhZHkgPSB0aGlzLmZzdy5fZW1pdFJlYWR5O1xuICBpZiAodGhpcy5mc3cuX2lzSWdub3JlZChwYXRoKSB8fCB0aGlzLmZzdy5jbG9zZWQpIHtcbiAgICByZWFkeSgpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHdoID0gdGhpcy5mc3cuX2dldFdhdGNoSGVscGVycyhwYXRoLCBkZXB0aCk7XG4gIGlmICghd2guaGFzR2xvYiAmJiBwcmlvcldoKSB7XG4gICAgd2guaGFzR2xvYiA9IHByaW9yV2guaGFzR2xvYjtcbiAgICB3aC5nbG9iRmlsdGVyID0gcHJpb3JXaC5nbG9iRmlsdGVyO1xuICAgIHdoLmZpbHRlclBhdGggPSBlbnRyeSA9PiBwcmlvcldoLmZpbHRlclBhdGgoZW50cnkpO1xuICAgIHdoLmZpbHRlckRpciA9IGVudHJ5ID0+IHByaW9yV2guZmlsdGVyRGlyKGVudHJ5KTtcbiAgfVxuXG4gIC8vIGV2YWx1YXRlIHdoYXQgaXMgYXQgdGhlIHBhdGggd2UncmUgYmVpbmcgYXNrZWQgdG8gd2F0Y2hcbiAgdHJ5IHtcbiAgICBjb25zdCBzdGF0cyA9IGF3YWl0IHN0YXRNZXRob2RzW3doLnN0YXRNZXRob2RdKHdoLndhdGNoUGF0aCk7XG4gICAgaWYgKHRoaXMuZnN3LmNsb3NlZCkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmZzdy5faXNJZ25vcmVkKHdoLndhdGNoUGF0aCwgc3RhdHMpKSB7XG4gICAgICByZWFkeSgpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGZvbGxvdyA9IHRoaXMuZnN3Lm9wdGlvbnMuZm9sbG93U3ltbGlua3MgJiYgIXBhdGguaW5jbHVkZXMoU1RBUikgJiYgIXBhdGguaW5jbHVkZXMoQlJBQ0VfU1RBUlQpO1xuICAgIGxldCBjbG9zZXI7XG4gICAgaWYgKHN0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgIGNvbnN0IHRhcmdldFBhdGggPSBmb2xsb3cgPyBhd2FpdCBmc3JlYWxwYXRoKHBhdGgpIDogcGF0aDtcbiAgICAgIGlmICh0aGlzLmZzdy5jbG9zZWQpIHJldHVybjtcbiAgICAgIGNsb3NlciA9IGF3YWl0IHRoaXMuX2hhbmRsZURpcih3aC53YXRjaFBhdGgsIHN0YXRzLCBpbml0aWFsQWRkLCBkZXB0aCwgdGFyZ2V0LCB3aCwgdGFyZ2V0UGF0aCk7XG4gICAgICBpZiAodGhpcy5mc3cuY2xvc2VkKSByZXR1cm47XG4gICAgICAvLyBwcmVzZXJ2ZSB0aGlzIHN5bWxpbmsncyB0YXJnZXQgcGF0aFxuICAgICAgaWYgKHBhdGggIT09IHRhcmdldFBhdGggJiYgdGFyZ2V0UGF0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuZnN3Ll9zeW1saW5rUGF0aHMuc2V0KHRhcmdldFBhdGgsIHRydWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoc3RhdHMuaXNTeW1ib2xpY0xpbmsoKSkge1xuICAgICAgY29uc3QgdGFyZ2V0UGF0aCA9IGZvbGxvdyA/IGF3YWl0IGZzcmVhbHBhdGgocGF0aCkgOiBwYXRoO1xuICAgICAgaWYgKHRoaXMuZnN3LmNsb3NlZCkgcmV0dXJuO1xuICAgICAgY29uc3QgcGFyZW50ID0gc3lzUGF0aC5kaXJuYW1lKHdoLndhdGNoUGF0aCk7XG4gICAgICB0aGlzLmZzdy5fZ2V0V2F0Y2hlZERpcihwYXJlbnQpLmFkZCh3aC53YXRjaFBhdGgpO1xuICAgICAgdGhpcy5mc3cuX2VtaXQoRVZfQURELCB3aC53YXRjaFBhdGgsIHN0YXRzKTtcbiAgICAgIGNsb3NlciA9IGF3YWl0IHRoaXMuX2hhbmRsZURpcihwYXJlbnQsIHN0YXRzLCBpbml0aWFsQWRkLCBkZXB0aCwgcGF0aCwgd2gsIHRhcmdldFBhdGgpO1xuICAgICAgaWYgKHRoaXMuZnN3LmNsb3NlZCkgcmV0dXJuO1xuXG4gICAgICAvLyBwcmVzZXJ2ZSB0aGlzIHN5bWxpbmsncyB0YXJnZXQgcGF0aFxuICAgICAgaWYgKHRhcmdldFBhdGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmZzdy5fc3ltbGlua1BhdGhzLnNldChzeXNQYXRoLnJlc29sdmUocGF0aCksIHRhcmdldFBhdGgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjbG9zZXIgPSB0aGlzLl9oYW5kbGVGaWxlKHdoLndhdGNoUGF0aCwgc3RhdHMsIGluaXRpYWxBZGQpO1xuICAgIH1cbiAgICByZWFkeSgpO1xuXG4gICAgdGhpcy5mc3cuX2FkZFBhdGhDbG9zZXIocGF0aCwgY2xvc2VyKTtcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAodGhpcy5mc3cuX2hhbmRsZUVycm9yKGVycm9yKSkge1xuICAgICAgcmVhZHkoKTtcbiAgICAgIHJldHVybiBwYXRoO1xuICAgIH1cbiAgfVxufVxuXG59XG5cbm1vZHVsZS5leHBvcnRzID0gTm9kZUZzSGFuZGxlcjtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgZnMgPSByZXF1aXJlKCdmcycpO1xuY29uc3Qgc3lzUGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcbmNvbnN0IHsgcHJvbWlzaWZ5IH0gPSByZXF1aXJlKCd1dGlsJyk7XG5cbmxldCBmc2V2ZW50cztcbnRyeSB7XG4gIGZzZXZlbnRzID0gcmVxdWlyZSgnZnNldmVudHMnKTtcbn0gY2F0Y2ggKGVycm9yKSB7XG4gIGlmIChwcm9jZXNzLmVudi5DSE9LSURBUl9QUklOVF9GU0VWRU5UU19SRVFVSVJFX0VSUk9SKSBjb25zb2xlLmVycm9yKGVycm9yKTtcbn1cblxuaWYgKGZzZXZlbnRzKSB7XG4gIC8vIFRPRE86IHJlYWwgY2hlY2tcbiAgY29uc3QgbXRjaCA9IHByb2Nlc3MudmVyc2lvbi5tYXRjaCgvdihcXGQrKVxcLihcXGQrKS8pO1xuICBpZiAobXRjaCAmJiBtdGNoWzFdICYmIG10Y2hbMl0pIHtcbiAgICBjb25zdCBtYWogPSBOdW1iZXIucGFyc2VJbnQobXRjaFsxXSwgMTApO1xuICAgIGNvbnN0IG1pbiA9IE51bWJlci5wYXJzZUludChtdGNoWzJdLCAxMCk7XG4gICAgaWYgKG1haiA9PT0gOCAmJiBtaW4gPCAxNikge1xuICAgICAgZnNldmVudHMgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IHtcbiAgRVZfQURELFxuICBFVl9DSEFOR0UsXG4gIEVWX0FERF9ESVIsXG4gIEVWX1VOTElOSyxcbiAgRVZfRVJST1IsXG4gIFNUUl9EQVRBLFxuICBTVFJfRU5ELFxuICBGU0VWRU5UX0NSRUFURUQsXG4gIEZTRVZFTlRfTU9ESUZJRUQsXG4gIEZTRVZFTlRfREVMRVRFRCxcbiAgRlNFVkVOVF9NT1ZFRCxcbiAgLy8gRlNFVkVOVF9DTE9ORUQsXG4gIEZTRVZFTlRfVU5LTk9XTixcbiAgRlNFVkVOVF9UWVBFX0ZJTEUsXG4gIEZTRVZFTlRfVFlQRV9ESVJFQ1RPUlksXG4gIEZTRVZFTlRfVFlQRV9TWU1MSU5LLFxuXG4gIFJPT1RfR0xPQlNUQVIsXG4gIERJUl9TVUZGSVgsXG4gIERPVF9TTEFTSCxcbiAgRlVOQ1RJT05fVFlQRSxcbiAgRU1QVFlfRk4sXG4gIElERU5USVRZX0ZOXG59ID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKTtcblxuY29uc3QgRGVwdGggPSAodmFsdWUpID0+IGlzTmFOKHZhbHVlKSA/IHt9IDoge2RlcHRoOiB2YWx1ZX07XG5cbmNvbnN0IHN0YXQgPSBwcm9taXNpZnkoZnMuc3RhdCk7XG5jb25zdCBsc3RhdCA9IHByb21pc2lmeShmcy5sc3RhdCk7XG5jb25zdCByZWFscGF0aCA9IHByb21pc2lmeShmcy5yZWFscGF0aCk7XG5cbmNvbnN0IHN0YXRNZXRob2RzID0geyBzdGF0LCBsc3RhdCB9O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtTdHJpbmd9IFBhdGhcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEZzRXZlbnRzV2F0Y2hDb250YWluZXJcbiAqIEBwcm9wZXJ0eSB7U2V0PEZ1bmN0aW9uPn0gbGlzdGVuZXJzXG4gKiBAcHJvcGVydHkge0Z1bmN0aW9ufSByYXdFbWl0dGVyXG4gKiBAcHJvcGVydHkge3tzdG9wOiBGdW5jdGlvbn19IHdhdGNoZXJcbiAqL1xuXG4vLyBmc2V2ZW50cyBpbnN0YW5jZSBoZWxwZXIgZnVuY3Rpb25zXG4vKipcbiAqIE9iamVjdCB0byBob2xkIHBlci1wcm9jZXNzIGZzZXZlbnRzIGluc3RhbmNlcyAobWF5IGJlIHNoYXJlZCBhY3Jvc3MgY2hva2lkYXIgRlNXYXRjaGVyIGluc3RhbmNlcylcbiAqIEB0eXBlIHtNYXA8UGF0aCxGc0V2ZW50c1dhdGNoQ29udGFpbmVyPn1cbiAqL1xuY29uc3QgRlNFdmVudHNXYXRjaGVycyA9IG5ldyBNYXAoKTtcblxuLy8gVGhyZXNob2xkIG9mIGR1cGxpY2F0ZSBwYXRoIHByZWZpeGVzIGF0IHdoaWNoIHRvIHN0YXJ0XG4vLyBjb25zb2xpZGF0aW5nIGdvaW5nIGZvcndhcmRcbmNvbnN0IGNvbnNvbGlkYXRlVGhyZXNoaG9sZCA9IDEwO1xuXG5jb25zdCB3cm9uZ0V2ZW50RmxhZ3MgPSBuZXcgU2V0KFtcbiAgNjk4ODgsIDcwNDAwLCA3MTQyNCwgNzI3MDQsIDczNDcyLCAxMzEzMjgsIDEzMTg0MCwgMjYyOTEyXG5dKTtcblxuLyoqXG4gKiBJbnN0YW50aWF0ZXMgdGhlIGZzZXZlbnRzIGludGVyZmFjZVxuICogQHBhcmFtIHtQYXRofSBwYXRoIHBhdGggdG8gYmUgd2F0Y2hlZFxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgY2FsbGVkIHdoZW4gZnNldmVudHMgaXMgYm91bmQgYW5kIHJlYWR5XG4gKiBAcmV0dXJucyB7e3N0b3A6IEZ1bmN0aW9ufX0gbmV3IGZzZXZlbnRzIGluc3RhbmNlXG4gKi9cbmNvbnN0IGNyZWF0ZUZTRXZlbnRzSW5zdGFuY2UgPSAocGF0aCwgY2FsbGJhY2spID0+IHtcbiAgY29uc3Qgc3RvcCA9IGZzZXZlbnRzLndhdGNoKHBhdGgsIGNhbGxiYWNrKTtcbiAgcmV0dXJuIHtzdG9wfTtcbn07XG5cbi8qKlxuICogSW5zdGFudGlhdGVzIHRoZSBmc2V2ZW50cyBpbnRlcmZhY2Ugb3IgYmluZHMgbGlzdGVuZXJzIHRvIGFuIGV4aXN0aW5nIG9uZSBjb3ZlcmluZ1xuICogdGhlIHNhbWUgZmlsZSB0cmVlLlxuICogQHBhcmFtIHtQYXRofSBwYXRoICAgICAgICAgICAtIHRvIGJlIHdhdGNoZWRcbiAqIEBwYXJhbSB7UGF0aH0gcmVhbFBhdGggICAgICAgLSByZWFsIHBhdGggZm9yIHN5bWxpbmtzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBsaXN0ZW5lciAgIC0gY2FsbGVkIHdoZW4gZnNldmVudHMgZW1pdHMgZXZlbnRzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSByYXdFbWl0dGVyIC0gcGFzc2VzIGRhdGEgdG8gbGlzdGVuZXJzIG9mIHRoZSAncmF3JyBldmVudFxuICogQHJldHVybnMge0Z1bmN0aW9ufSBjbG9zZXJcbiAqL1xuZnVuY3Rpb24gc2V0RlNFdmVudHNMaXN0ZW5lcihwYXRoLCByZWFsUGF0aCwgbGlzdGVuZXIsIHJhd0VtaXR0ZXIpIHtcbiAgbGV0IHdhdGNoUGF0aCA9IHN5c1BhdGguZXh0bmFtZShwYXRoKSA/IHN5c1BhdGguZGlybmFtZShwYXRoKSA6IHBhdGg7XG4gIGNvbnN0IHBhcmVudFBhdGggPSBzeXNQYXRoLmRpcm5hbWUod2F0Y2hQYXRoKTtcbiAgbGV0IGNvbnQgPSBGU0V2ZW50c1dhdGNoZXJzLmdldCh3YXRjaFBhdGgpO1xuXG4gIC8vIElmIHdlJ3ZlIGFjY3VtdWxhdGVkIGEgc3Vic3RhbnRpYWwgbnVtYmVyIG9mIHBhdGhzIHRoYXRcbiAgLy8gY291bGQgaGF2ZSBiZWVuIGNvbnNvbGlkYXRlZCBieSB3YXRjaGluZyBvbmUgZGlyZWN0b3J5XG4gIC8vIGFib3ZlIHRoZSBjdXJyZW50IG9uZSwgY3JlYXRlIGEgd2F0Y2hlciBvbiB0aGUgcGFyZW50XG4gIC8vIHBhdGggaW5zdGVhZCwgc28gdGhhdCB3ZSBkbyBjb25zb2xpZGF0ZSBnb2luZyBmb3J3YXJkLlxuICBpZiAoY291bGRDb25zb2xpZGF0ZShwYXJlbnRQYXRoKSkge1xuICAgIHdhdGNoUGF0aCA9IHBhcmVudFBhdGg7XG4gIH1cblxuICBjb25zdCByZXNvbHZlZFBhdGggPSBzeXNQYXRoLnJlc29sdmUocGF0aCk7XG4gIGNvbnN0IGhhc1N5bWxpbmsgPSByZXNvbHZlZFBhdGggIT09IHJlYWxQYXRoO1xuXG4gIGNvbnN0IGZpbHRlcmVkTGlzdGVuZXIgPSAoZnVsbFBhdGgsIGZsYWdzLCBpbmZvKSA9PiB7XG4gICAgaWYgKGhhc1N5bWxpbmspIGZ1bGxQYXRoID0gZnVsbFBhdGgucmVwbGFjZShyZWFsUGF0aCwgcmVzb2x2ZWRQYXRoKTtcbiAgICBpZiAoXG4gICAgICBmdWxsUGF0aCA9PT0gcmVzb2x2ZWRQYXRoIHx8XG4gICAgICAhZnVsbFBhdGguaW5kZXhPZihyZXNvbHZlZFBhdGggKyBzeXNQYXRoLnNlcClcbiAgICApIGxpc3RlbmVyKGZ1bGxQYXRoLCBmbGFncywgaW5mbyk7XG4gIH07XG5cbiAgLy8gY2hlY2sgaWYgdGhlcmUgaXMgYWxyZWFkeSBhIHdhdGNoZXIgb24gYSBwYXJlbnQgcGF0aFxuICAvLyBtb2RpZmllcyBgd2F0Y2hQYXRoYCB0byB0aGUgcGFyZW50IHBhdGggd2hlbiBpdCBmaW5kcyBhIG1hdGNoXG4gIGxldCB3YXRjaGVkUGFyZW50ID0gZmFsc2U7XG4gIGZvciAoY29uc3Qgd2F0Y2hlZFBhdGggb2YgRlNFdmVudHNXYXRjaGVycy5rZXlzKCkpIHtcbiAgICBpZiAocmVhbFBhdGguaW5kZXhPZihzeXNQYXRoLnJlc29sdmUod2F0Y2hlZFBhdGgpICsgc3lzUGF0aC5zZXApID09PSAwKSB7XG4gICAgICB3YXRjaFBhdGggPSB3YXRjaGVkUGF0aDtcbiAgICAgIGNvbnQgPSBGU0V2ZW50c1dhdGNoZXJzLmdldCh3YXRjaFBhdGgpO1xuICAgICAgd2F0Y2hlZFBhcmVudCA9IHRydWU7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBpZiAoY29udCB8fCB3YXRjaGVkUGFyZW50KSB7XG4gICAgY29udC5saXN0ZW5lcnMuYWRkKGZpbHRlcmVkTGlzdGVuZXIpO1xuICB9IGVsc2Uge1xuICAgIGNvbnQgPSB7XG4gICAgICBsaXN0ZW5lcnM6IG5ldyBTZXQoW2ZpbHRlcmVkTGlzdGVuZXJdKSxcbiAgICAgIHJhd0VtaXR0ZXIsXG4gICAgICB3YXRjaGVyOiBjcmVhdGVGU0V2ZW50c0luc3RhbmNlKHdhdGNoUGF0aCwgKGZ1bGxQYXRoLCBmbGFncykgPT4ge1xuICAgICAgICBpZiAoIWNvbnQubGlzdGVuZXJzLnNpemUpIHJldHVybjtcbiAgICAgICAgY29uc3QgaW5mbyA9IGZzZXZlbnRzLmdldEluZm8oZnVsbFBhdGgsIGZsYWdzKTtcbiAgICAgICAgY29udC5saXN0ZW5lcnMuZm9yRWFjaChsaXN0ID0+IHtcbiAgICAgICAgICBsaXN0KGZ1bGxQYXRoLCBmbGFncywgaW5mbyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnQucmF3RW1pdHRlcihpbmZvLmV2ZW50LCBmdWxsUGF0aCwgaW5mbyk7XG4gICAgICB9KVxuICAgIH07XG4gICAgRlNFdmVudHNXYXRjaGVycy5zZXQod2F0Y2hQYXRoLCBjb250KTtcbiAgfVxuXG4gIC8vIHJlbW92ZXMgdGhpcyBpbnN0YW5jZSdzIGxpc3RlbmVycyBhbmQgY2xvc2VzIHRoZSB1bmRlcmx5aW5nIGZzZXZlbnRzXG4gIC8vIGluc3RhbmNlIGlmIHRoZXJlIGFyZSBubyBtb3JlIGxpc3RlbmVycyBsZWZ0XG4gIHJldHVybiAoKSA9PiB7XG4gICAgY29uc3QgbHN0ID0gY29udC5saXN0ZW5lcnM7XG5cbiAgICBsc3QuZGVsZXRlKGZpbHRlcmVkTGlzdGVuZXIpO1xuICAgIGlmICghbHN0LnNpemUpIHtcbiAgICAgIEZTRXZlbnRzV2F0Y2hlcnMuZGVsZXRlKHdhdGNoUGF0aCk7XG4gICAgICBpZiAoY29udC53YXRjaGVyKSByZXR1cm4gY29udC53YXRjaGVyLnN0b3AoKS50aGVuKCgpID0+IHtcbiAgICAgICAgY29udC5yYXdFbWl0dGVyID0gY29udC53YXRjaGVyID0gdW5kZWZpbmVkO1xuICAgICAgICBPYmplY3QuZnJlZXplKGNvbnQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xufVxuXG4vLyBEZWNpZGUgd2hldGhlciBvciBub3Qgd2Ugc2hvdWxkIHN0YXJ0IGEgbmV3IGhpZ2hlci1sZXZlbFxuLy8gcGFyZW50IHdhdGNoZXJcbmNvbnN0IGNvdWxkQ29uc29saWRhdGUgPSAocGF0aCkgPT4ge1xuICBsZXQgY291bnQgPSAwO1xuICBmb3IgKGNvbnN0IHdhdGNoUGF0aCBvZiBGU0V2ZW50c1dhdGNoZXJzLmtleXMoKSkge1xuICAgIGlmICh3YXRjaFBhdGguaW5kZXhPZihwYXRoKSA9PT0gMCkge1xuICAgICAgY291bnQrKztcbiAgICAgIGlmIChjb3VudCA+PSBjb25zb2xpZGF0ZVRocmVzaGhvbGQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuLy8gcmV0dXJucyBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBmc2V2ZW50cyBjYW4gYmUgdXNlZFxuY29uc3QgY2FuVXNlID0gKCkgPT4gZnNldmVudHMgJiYgRlNFdmVudHNXYXRjaGVycy5zaXplIDwgMTI4O1xuXG4vLyBkZXRlcm1pbmVzIHN1YmRpcmVjdG9yeSB0cmF2ZXJzYWwgbGV2ZWxzIGZyb20gcm9vdCB0byBwYXRoXG5jb25zdCBjYWxjRGVwdGggPSAocGF0aCwgcm9vdCkgPT4ge1xuICBsZXQgaSA9IDA7XG4gIHdoaWxlICghcGF0aC5pbmRleE9mKHJvb3QpICYmIChwYXRoID0gc3lzUGF0aC5kaXJuYW1lKHBhdGgpKSAhPT0gcm9vdCkgaSsrO1xuICByZXR1cm4gaTtcbn07XG5cbi8vIHJldHVybnMgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZzZXZlbnRzJyBldmVudCBpbmZvIGhhcyB0aGUgc2FtZSB0eXBlXG4vLyBhcyB0aGUgb25lIHJldHVybmVkIGJ5IGZzLnN0YXRcbmNvbnN0IHNhbWVUeXBlcyA9IChpbmZvLCBzdGF0cykgPT4gKFxuICBpbmZvLnR5cGUgPT09IEZTRVZFTlRfVFlQRV9ESVJFQ1RPUlkgJiYgc3RhdHMuaXNEaXJlY3RvcnkoKSB8fFxuICBpbmZvLnR5cGUgPT09IEZTRVZFTlRfVFlQRV9TWU1MSU5LICYmIHN0YXRzLmlzU3ltYm9saWNMaW5rKCkgfHxcbiAgaW5mby50eXBlID09PSBGU0VWRU5UX1RZUEVfRklMRSAmJiBzdGF0cy5pc0ZpbGUoKVxuKVxuXG4vKipcbiAqIEBtaXhpblxuICovXG5jbGFzcyBGc0V2ZW50c0hhbmRsZXIge1xuXG4vKipcbiAqIEBwYXJhbSB7aW1wb3J0KCcuLi9pbmRleCcpLkZTV2F0Y2hlcn0gZnN3XG4gKi9cbmNvbnN0cnVjdG9yKGZzdykge1xuICB0aGlzLmZzdyA9IGZzdztcbn1cbmNoZWNrSWdub3JlZChwYXRoLCBzdGF0cykge1xuICBjb25zdCBpcGF0aHMgPSB0aGlzLmZzdy5faWdub3JlZFBhdGhzO1xuICBpZiAodGhpcy5mc3cuX2lzSWdub3JlZChwYXRoLCBzdGF0cykpIHtcbiAgICBpcGF0aHMuYWRkKHBhdGgpO1xuICAgIGlmIChzdGF0cyAmJiBzdGF0cy5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICBpcGF0aHMuYWRkKHBhdGggKyBST09UX0dMT0JTVEFSKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpcGF0aHMuZGVsZXRlKHBhdGgpO1xuICBpcGF0aHMuZGVsZXRlKHBhdGggKyBST09UX0dMT0JTVEFSKTtcbn1cblxuYWRkT3JDaGFuZ2UocGF0aCwgZnVsbFBhdGgsIHJlYWxQYXRoLCBwYXJlbnQsIHdhdGNoZWREaXIsIGl0ZW0sIGluZm8sIG9wdHMpIHtcbiAgY29uc3QgZXZlbnQgPSB3YXRjaGVkRGlyLmhhcyhpdGVtKSA/IEVWX0NIQU5HRSA6IEVWX0FERDtcbiAgdGhpcy5oYW5kbGVFdmVudChldmVudCwgcGF0aCwgZnVsbFBhdGgsIHJlYWxQYXRoLCBwYXJlbnQsIHdhdGNoZWREaXIsIGl0ZW0sIGluZm8sIG9wdHMpO1xufVxuXG5hc3luYyBjaGVja0V4aXN0cyhwYXRoLCBmdWxsUGF0aCwgcmVhbFBhdGgsIHBhcmVudCwgd2F0Y2hlZERpciwgaXRlbSwgaW5mbywgb3B0cykge1xuICB0cnkge1xuICAgIGNvbnN0IHN0YXRzID0gYXdhaXQgc3RhdChwYXRoKVxuICAgIGlmICh0aGlzLmZzdy5jbG9zZWQpIHJldHVybjtcbiAgICBpZiAoc2FtZVR5cGVzKGluZm8sIHN0YXRzKSkge1xuICAgICAgdGhpcy5hZGRPckNoYW5nZShwYXRoLCBmdWxsUGF0aCwgcmVhbFBhdGgsIHBhcmVudCwgd2F0Y2hlZERpciwgaXRlbSwgaW5mbywgb3B0cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGFuZGxlRXZlbnQoRVZfVU5MSU5LLCBwYXRoLCBmdWxsUGF0aCwgcmVhbFBhdGgsIHBhcmVudCwgd2F0Y2hlZERpciwgaXRlbSwgaW5mbywgb3B0cyk7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmIChlcnJvci5jb2RlID09PSAnRUFDQ0VTJykge1xuICAgICAgdGhpcy5hZGRPckNoYW5nZShwYXRoLCBmdWxsUGF0aCwgcmVhbFBhdGgsIHBhcmVudCwgd2F0Y2hlZERpciwgaXRlbSwgaW5mbywgb3B0cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGFuZGxlRXZlbnQoRVZfVU5MSU5LLCBwYXRoLCBmdWxsUGF0aCwgcmVhbFBhdGgsIHBhcmVudCwgd2F0Y2hlZERpciwgaXRlbSwgaW5mbywgb3B0cyk7XG4gICAgfVxuICB9XG59XG5cbmhhbmRsZUV2ZW50KGV2ZW50LCBwYXRoLCBmdWxsUGF0aCwgcmVhbFBhdGgsIHBhcmVudCwgd2F0Y2hlZERpciwgaXRlbSwgaW5mbywgb3B0cykge1xuICBpZiAodGhpcy5mc3cuY2xvc2VkIHx8IHRoaXMuY2hlY2tJZ25vcmVkKHBhdGgpKSByZXR1cm47XG5cbiAgaWYgKGV2ZW50ID09PSBFVl9VTkxJTkspIHtcbiAgICBjb25zdCBpc0RpcmVjdG9yeSA9IGluZm8udHlwZSA9PT0gRlNFVkVOVF9UWVBFX0RJUkVDVE9SWVxuICAgIC8vIHN1cHByZXNzIHVubGluayBldmVudHMgb24gbmV2ZXIgYmVmb3JlIHNlZW4gZmlsZXNcbiAgICBpZiAoaXNEaXJlY3RvcnkgfHwgd2F0Y2hlZERpci5oYXMoaXRlbSkpIHtcbiAgICAgIHRoaXMuZnN3Ll9yZW1vdmUocGFyZW50LCBpdGVtLCBpc0RpcmVjdG9yeSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChldmVudCA9PT0gRVZfQUREKSB7XG4gICAgICAvLyB0cmFjayBuZXcgZGlyZWN0b3JpZXNcbiAgICAgIGlmIChpbmZvLnR5cGUgPT09IEZTRVZFTlRfVFlQRV9ESVJFQ1RPUlkpIHRoaXMuZnN3Ll9nZXRXYXRjaGVkRGlyKHBhdGgpO1xuXG4gICAgICBpZiAoaW5mby50eXBlID09PSBGU0VWRU5UX1RZUEVfU1lNTElOSyAmJiBvcHRzLmZvbGxvd1N5bWxpbmtzKSB7XG4gICAgICAgIC8vIHB1c2ggc3ltbGlua3MgYmFjayB0byB0aGUgdG9wIG9mIHRoZSBzdGFjayB0byBnZXQgaGFuZGxlZFxuICAgICAgICBjb25zdCBjdXJEZXB0aCA9IG9wdHMuZGVwdGggPT09IHVuZGVmaW5lZCA/XG4gICAgICAgICAgdW5kZWZpbmVkIDogY2FsY0RlcHRoKGZ1bGxQYXRoLCByZWFsUGF0aCkgKyAxO1xuICAgICAgICByZXR1cm4gdGhpcy5fYWRkVG9Gc0V2ZW50cyhwYXRoLCBmYWxzZSwgdHJ1ZSwgY3VyRGVwdGgpO1xuICAgICAgfVxuXG4gICAgICAvLyB0cmFjayBuZXcgcGF0aHNcbiAgICAgIC8vIChvdGhlciB0aGFuIHN5bWxpbmtzIGJlaW5nIGZvbGxvd2VkLCB3aGljaCB3aWxsIGJlIHRyYWNrZWQgc29vbilcbiAgICAgIHRoaXMuZnN3Ll9nZXRXYXRjaGVkRGlyKHBhcmVudCkuYWRkKGl0ZW0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAdHlwZSB7J2FkZCd8J2FkZERpcid8J3VubGluayd8J3VubGlua0Rpcid9XG4gICAgICovXG4gICAgY29uc3QgZXZlbnROYW1lID0gaW5mby50eXBlID09PSBGU0VWRU5UX1RZUEVfRElSRUNUT1JZID8gZXZlbnQgKyBESVJfU1VGRklYIDogZXZlbnQ7XG4gICAgdGhpcy5mc3cuX2VtaXQoZXZlbnROYW1lLCBwYXRoKTtcbiAgICBpZiAoZXZlbnROYW1lID09PSBFVl9BRERfRElSKSB0aGlzLl9hZGRUb0ZzRXZlbnRzKHBhdGgsIGZhbHNlLCB0cnVlKTtcbiAgfVxufVxuXG4vKipcbiAqIEhhbmRsZSBzeW1saW5rcyBlbmNvdW50ZXJlZCBkdXJpbmcgZGlyZWN0b3J5IHNjYW5cbiAqIEBwYXJhbSB7U3RyaW5nfSB3YXRjaFBhdGggIC0gZmlsZS9kaXIgcGF0aCB0byBiZSB3YXRjaGVkIHdpdGggZnNldmVudHNcbiAqIEBwYXJhbSB7U3RyaW5nfSByZWFsUGF0aCAgIC0gcmVhbCBwYXRoIChpbiBjYXNlIG9mIHN5bWxpbmtzKVxuICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtICAtIHBhdGggdHJhbnNmb3JtZXJcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGdsb2JGaWx0ZXIgLSBwYXRoIGZpbHRlciBpbiBjYXNlIGEgZ2xvYiBwYXR0ZXJuIHdhcyBwcm92aWRlZFxuICogQHJldHVybnMge0Z1bmN0aW9ufSBjbG9zZXIgZm9yIHRoZSB3YXRjaGVyIGluc3RhbmNlXG4qL1xuX3dhdGNoV2l0aEZzRXZlbnRzKHdhdGNoUGF0aCwgcmVhbFBhdGgsIHRyYW5zZm9ybSwgZ2xvYkZpbHRlcikge1xuICBpZiAodGhpcy5mc3cuY2xvc2VkIHx8IHRoaXMuZnN3Ll9pc0lnbm9yZWQod2F0Y2hQYXRoKSkgcmV0dXJuO1xuICBjb25zdCBvcHRzID0gdGhpcy5mc3cub3B0aW9ucztcbiAgY29uc3Qgd2F0Y2hDYWxsYmFjayA9IGFzeW5jIChmdWxsUGF0aCwgZmxhZ3MsIGluZm8pID0+IHtcbiAgICBpZiAodGhpcy5mc3cuY2xvc2VkKSByZXR1cm47XG4gICAgaWYgKFxuICAgICAgb3B0cy5kZXB0aCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBjYWxjRGVwdGgoZnVsbFBhdGgsIHJlYWxQYXRoKSA+IG9wdHMuZGVwdGhcbiAgICApIHJldHVybjtcbiAgICBjb25zdCBwYXRoID0gdHJhbnNmb3JtKHN5c1BhdGguam9pbihcbiAgICAgIHdhdGNoUGF0aCwgc3lzUGF0aC5yZWxhdGl2ZSh3YXRjaFBhdGgsIGZ1bGxQYXRoKVxuICAgICkpO1xuICAgIGlmIChnbG9iRmlsdGVyICYmICFnbG9iRmlsdGVyKHBhdGgpKSByZXR1cm47XG4gICAgLy8gZW5zdXJlIGRpcmVjdG9yaWVzIGFyZSB0cmFja2VkXG4gICAgY29uc3QgcGFyZW50ID0gc3lzUGF0aC5kaXJuYW1lKHBhdGgpO1xuICAgIGNvbnN0IGl0ZW0gPSBzeXNQYXRoLmJhc2VuYW1lKHBhdGgpO1xuICAgIGNvbnN0IHdhdGNoZWREaXIgPSB0aGlzLmZzdy5fZ2V0V2F0Y2hlZERpcihcbiAgICAgIGluZm8udHlwZSA9PT0gRlNFVkVOVF9UWVBFX0RJUkVDVE9SWSA/IHBhdGggOiBwYXJlbnRcbiAgICApO1xuXG4gICAgLy8gY29ycmVjdCBmb3Igd3JvbmcgZXZlbnRzIGVtaXR0ZWRcbiAgICBpZiAod3JvbmdFdmVudEZsYWdzLmhhcyhmbGFncykgfHwgaW5mby5ldmVudCA9PT0gRlNFVkVOVF9VTktOT1dOKSB7XG4gICAgICBpZiAodHlwZW9mIG9wdHMuaWdub3JlZCA9PT0gRlVOQ1RJT05fVFlQRSkge1xuICAgICAgICBsZXQgc3RhdHM7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgc3RhdHMgPSBhd2FpdCBzdGF0KHBhdGgpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge31cbiAgICAgICAgaWYgKHRoaXMuZnN3LmNsb3NlZCkgcmV0dXJuO1xuICAgICAgICBpZiAodGhpcy5jaGVja0lnbm9yZWQocGF0aCwgc3RhdHMpKSByZXR1cm47XG4gICAgICAgIGlmIChzYW1lVHlwZXMoaW5mbywgc3RhdHMpKSB7XG4gICAgICAgICAgdGhpcy5hZGRPckNoYW5nZShwYXRoLCBmdWxsUGF0aCwgcmVhbFBhdGgsIHBhcmVudCwgd2F0Y2hlZERpciwgaXRlbSwgaW5mbywgb3B0cyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVFdmVudChFVl9VTkxJTkssIHBhdGgsIGZ1bGxQYXRoLCByZWFsUGF0aCwgcGFyZW50LCB3YXRjaGVkRGlyLCBpdGVtLCBpbmZvLCBvcHRzKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jaGVja0V4aXN0cyhwYXRoLCBmdWxsUGF0aCwgcmVhbFBhdGgsIHBhcmVudCwgd2F0Y2hlZERpciwgaXRlbSwgaW5mbywgb3B0cyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXRjaCAoaW5mby5ldmVudCkge1xuICAgICAgY2FzZSBGU0VWRU5UX0NSRUFURUQ6XG4gICAgICBjYXNlIEZTRVZFTlRfTU9ESUZJRUQ6XG4gICAgICAgIHJldHVybiB0aGlzLmFkZE9yQ2hhbmdlKHBhdGgsIGZ1bGxQYXRoLCByZWFsUGF0aCwgcGFyZW50LCB3YXRjaGVkRGlyLCBpdGVtLCBpbmZvLCBvcHRzKTtcbiAgICAgIGNhc2UgRlNFVkVOVF9ERUxFVEVEOlxuICAgICAgY2FzZSBGU0VWRU5UX01PVkVEOlxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja0V4aXN0cyhwYXRoLCBmdWxsUGF0aCwgcmVhbFBhdGgsIHBhcmVudCwgd2F0Y2hlZERpciwgaXRlbSwgaW5mbywgb3B0cyk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGNsb3NlciA9IHNldEZTRXZlbnRzTGlzdGVuZXIoXG4gICAgd2F0Y2hQYXRoLFxuICAgIHJlYWxQYXRoLFxuICAgIHdhdGNoQ2FsbGJhY2ssXG4gICAgdGhpcy5mc3cuX2VtaXRSYXdcbiAgKTtcblxuICB0aGlzLmZzdy5fZW1pdFJlYWR5KCk7XG4gIHJldHVybiBjbG9zZXI7XG59XG5cbi8qKlxuICogSGFuZGxlIHN5bWxpbmtzIGVuY291bnRlcmVkIGR1cmluZyBkaXJlY3Rvcnkgc2NhblxuICogQHBhcmFtIHtTdHJpbmd9IGxpbmtQYXRoIHBhdGggdG8gc3ltbGlua1xuICogQHBhcmFtIHtTdHJpbmd9IGZ1bGxQYXRoIGFic29sdXRlIHBhdGggdG8gdGhlIHN5bWxpbmtcbiAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBwcmUtZXhpc3RpbmcgcGF0aCB0cmFuc2Zvcm1lclxuICogQHBhcmFtIHtOdW1iZXJ9IGN1ckRlcHRoIGxldmVsIG9mIHN1YmRpcmVjdG9yaWVzIHRyYXZlcnNlZCB0byB3aGVyZSBzeW1saW5rIGlzXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAqL1xuYXN5bmMgX2hhbmRsZUZzRXZlbnRzU3ltbGluayhsaW5rUGF0aCwgZnVsbFBhdGgsIHRyYW5zZm9ybSwgY3VyRGVwdGgpIHtcbiAgLy8gZG9uJ3QgZm9sbG93IHRoZSBzYW1lIHN5bWxpbmsgbW9yZSB0aGFuIG9uY2VcbiAgaWYgKHRoaXMuZnN3LmNsb3NlZCB8fCB0aGlzLmZzdy5fc3ltbGlua1BhdGhzLmhhcyhmdWxsUGF0aCkpIHJldHVybjtcblxuICB0aGlzLmZzdy5fc3ltbGlua1BhdGhzLnNldChmdWxsUGF0aCwgdHJ1ZSk7XG4gIHRoaXMuZnN3Ll9pbmNyUmVhZHlDb3VudCgpO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgbGlua1RhcmdldCA9IGF3YWl0IHJlYWxwYXRoKGxpbmtQYXRoKTtcbiAgICBpZiAodGhpcy5mc3cuY2xvc2VkKSByZXR1cm47XG4gICAgaWYgKHRoaXMuZnN3Ll9pc0lnbm9yZWQobGlua1RhcmdldCkpIHtcbiAgICAgIHJldHVybiB0aGlzLmZzdy5fZW1pdFJlYWR5KCk7XG4gICAgfVxuXG4gICAgdGhpcy5mc3cuX2luY3JSZWFkeUNvdW50KCk7XG5cbiAgICAvLyBhZGQgdGhlIGxpbmtUYXJnZXQgZm9yIHdhdGNoaW5nIHdpdGggYSB3cmFwcGVyIGZvciB0cmFuc2Zvcm1cbiAgICAvLyB0aGF0IGNhdXNlcyBlbWl0dGVkIHBhdGhzIHRvIGluY29ycG9yYXRlIHRoZSBsaW5rJ3MgcGF0aFxuICAgIHRoaXMuX2FkZFRvRnNFdmVudHMobGlua1RhcmdldCB8fCBsaW5rUGF0aCwgKHBhdGgpID0+IHtcbiAgICAgIGxldCBhbGlhc2VkUGF0aCA9IGxpbmtQYXRoO1xuICAgICAgaWYgKGxpbmtUYXJnZXQgJiYgbGlua1RhcmdldCAhPT0gRE9UX1NMQVNIKSB7XG4gICAgICAgIGFsaWFzZWRQYXRoID0gcGF0aC5yZXBsYWNlKGxpbmtUYXJnZXQsIGxpbmtQYXRoKTtcbiAgICAgIH0gZWxzZSBpZiAocGF0aCAhPT0gRE9UX1NMQVNIKSB7XG4gICAgICAgIGFsaWFzZWRQYXRoID0gc3lzUGF0aC5qb2luKGxpbmtQYXRoLCBwYXRoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cmFuc2Zvcm0oYWxpYXNlZFBhdGgpO1xuICAgIH0sIGZhbHNlLCBjdXJEZXB0aCk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBpZiAodGhpcy5mc3cuX2hhbmRsZUVycm9yKGVycm9yKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZnN3Ll9lbWl0UmVhZHkoKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKlxuICogQHBhcmFtIHtQYXRofSBuZXdQYXRoXG4gKiBAcGFyYW0ge2ZzLlN0YXRzfSBzdGF0c1xuICovXG5lbWl0QWRkKG5ld1BhdGgsIHN0YXRzLCBwcm9jZXNzUGF0aCwgb3B0cywgZm9yY2VBZGQpIHtcbiAgY29uc3QgcHAgPSBwcm9jZXNzUGF0aChuZXdQYXRoKTtcbiAgY29uc3QgaXNEaXIgPSBzdGF0cy5pc0RpcmVjdG9yeSgpO1xuICBjb25zdCBkaXJPYmogPSB0aGlzLmZzdy5fZ2V0V2F0Y2hlZERpcihzeXNQYXRoLmRpcm5hbWUocHApKTtcbiAgY29uc3QgYmFzZSA9IHN5c1BhdGguYmFzZW5hbWUocHApO1xuXG4gIC8vIGVuc3VyZSBlbXB0eSBkaXJzIGdldCB0cmFja2VkXG4gIGlmIChpc0RpcikgdGhpcy5mc3cuX2dldFdhdGNoZWREaXIocHApO1xuICBpZiAoZGlyT2JqLmhhcyhiYXNlKSkgcmV0dXJuO1xuICBkaXJPYmouYWRkKGJhc2UpO1xuXG4gIGlmICghb3B0cy5pZ25vcmVJbml0aWFsIHx8IGZvcmNlQWRkID09PSB0cnVlKSB7XG4gICAgdGhpcy5mc3cuX2VtaXQoaXNEaXIgPyBFVl9BRERfRElSIDogRVZfQURELCBwcCwgc3RhdHMpO1xuICB9XG59XG5cbmluaXRXYXRjaChyZWFsUGF0aCwgcGF0aCwgd2gsIHByb2Nlc3NQYXRoKSB7XG4gIGlmICh0aGlzLmZzdy5jbG9zZWQpIHJldHVybjtcbiAgY29uc3QgY2xvc2VyID0gdGhpcy5fd2F0Y2hXaXRoRnNFdmVudHMoXG4gICAgd2gud2F0Y2hQYXRoLFxuICAgIHN5c1BhdGgucmVzb2x2ZShyZWFsUGF0aCB8fCB3aC53YXRjaFBhdGgpLFxuICAgIHByb2Nlc3NQYXRoLFxuICAgIHdoLmdsb2JGaWx0ZXJcbiAgKTtcbiAgdGhpcy5mc3cuX2FkZFBhdGhDbG9zZXIocGF0aCwgY2xvc2VyKTtcbn1cblxuLyoqXG4gKiBIYW5kbGUgYWRkZWQgcGF0aCB3aXRoIGZzZXZlbnRzXG4gKiBAcGFyYW0ge1N0cmluZ30gcGF0aCBmaWxlL2RpciBwYXRoIG9yIGdsb2IgcGF0dGVyblxuICogQHBhcmFtIHtGdW5jdGlvbnxCb29sZWFuPX0gdHJhbnNmb3JtIGNvbnZlcnRzIHdvcmtpbmcgcGF0aCB0byB3aGF0IHRoZSB1c2VyIGV4cGVjdHNcbiAqIEBwYXJhbSB7Qm9vbGVhbj19IGZvcmNlQWRkIGVuc3VyZSBhZGQgaXMgZW1pdHRlZFxuICogQHBhcmFtIHtOdW1iZXI9fSBwcmlvckRlcHRoIExldmVsIG9mIHN1YmRpcmVjdG9yaWVzIGFscmVhZHkgdHJhdmVyc2VkLlxuICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gKi9cbmFzeW5jIF9hZGRUb0ZzRXZlbnRzKHBhdGgsIHRyYW5zZm9ybSwgZm9yY2VBZGQsIHByaW9yRGVwdGgpIHtcbiAgaWYgKHRoaXMuZnN3LmNsb3NlZCkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBvcHRzID0gdGhpcy5mc3cub3B0aW9ucztcbiAgY29uc3QgcHJvY2Vzc1BhdGggPSB0eXBlb2YgdHJhbnNmb3JtID09PSBGVU5DVElPTl9UWVBFID8gdHJhbnNmb3JtIDogSURFTlRJVFlfRk47XG5cbiAgY29uc3Qgd2ggPSB0aGlzLmZzdy5fZ2V0V2F0Y2hIZWxwZXJzKHBhdGgpO1xuXG4gIC8vIGV2YWx1YXRlIHdoYXQgaXMgYXQgdGhlIHBhdGggd2UncmUgYmVpbmcgYXNrZWQgdG8gd2F0Y2hcbiAgdHJ5IHtcbiAgICBjb25zdCBzdGF0cyA9IGF3YWl0IHN0YXRNZXRob2RzW3doLnN0YXRNZXRob2RdKHdoLndhdGNoUGF0aCk7XG4gICAgaWYgKHRoaXMuZnN3LmNsb3NlZCkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmZzdy5faXNJZ25vcmVkKHdoLndhdGNoUGF0aCwgc3RhdHMpKSB7XG4gICAgICB0aHJvdyBudWxsO1xuICAgIH1cbiAgICBpZiAoc3RhdHMuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgLy8gZW1pdCBhZGREaXIgdW5sZXNzIHRoaXMgaXMgYSBnbG9iIHBhcmVudFxuICAgICAgaWYgKCF3aC5nbG9iRmlsdGVyKSB0aGlzLmVtaXRBZGQocHJvY2Vzc1BhdGgocGF0aCksIHN0YXRzLCBwcm9jZXNzUGF0aCwgb3B0cywgZm9yY2VBZGQpO1xuXG4gICAgICAvLyBkb24ndCByZWN1cnNlIGZ1cnRoZXIgaWYgaXQgd291bGQgZXhjZWVkIGRlcHRoIHNldHRpbmdcbiAgICAgIGlmIChwcmlvckRlcHRoICYmIHByaW9yRGVwdGggPiBvcHRzLmRlcHRoKSByZXR1cm47XG5cbiAgICAgIC8vIHNjYW4gdGhlIGNvbnRlbnRzIG9mIHRoZSBkaXJcbiAgICAgIHRoaXMuZnN3Ll9yZWFkZGlycCh3aC53YXRjaFBhdGgsIHtcbiAgICAgICAgZmlsZUZpbHRlcjogZW50cnkgPT4gd2guZmlsdGVyUGF0aChlbnRyeSksXG4gICAgICAgIGRpcmVjdG9yeUZpbHRlcjogZW50cnkgPT4gd2guZmlsdGVyRGlyKGVudHJ5KSxcbiAgICAgICAgLi4uRGVwdGgob3B0cy5kZXB0aCAtIChwcmlvckRlcHRoIHx8IDApKVxuICAgICAgfSkub24oU1RSX0RBVEEsIChlbnRyeSkgPT4ge1xuICAgICAgICAvLyBuZWVkIHRvIGNoZWNrIGZpbHRlclBhdGggb24gZGlycyBiL2MgZmlsdGVyRGlyIGlzIGxlc3MgcmVzdHJpY3RpdmVcbiAgICAgICAgaWYgKHRoaXMuZnN3LmNsb3NlZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW50cnkuc3RhdHMuaXNEaXJlY3RvcnkoKSAmJiAhd2guZmlsdGVyUGF0aChlbnRyeSkpIHJldHVybjtcblxuICAgICAgICBjb25zdCBqb2luZWRQYXRoID0gc3lzUGF0aC5qb2luKHdoLndhdGNoUGF0aCwgZW50cnkucGF0aCk7XG4gICAgICAgIGNvbnN0IHtmdWxsUGF0aH0gPSBlbnRyeTtcblxuICAgICAgICBpZiAod2guZm9sbG93U3ltbGlua3MgJiYgZW50cnkuc3RhdHMuaXNTeW1ib2xpY0xpbmsoKSkge1xuICAgICAgICAgIC8vIHByZXNlcnZlIHRoZSBjdXJyZW50IGRlcHRoIGhlcmUgc2luY2UgaXQgY2FuJ3QgYmUgZGVyaXZlZCBmcm9tXG4gICAgICAgICAgLy8gcmVhbCBwYXRocyBwYXN0IHRoZSBzeW1saW5rXG4gICAgICAgICAgY29uc3QgY3VyRGVwdGggPSBvcHRzLmRlcHRoID09PSB1bmRlZmluZWQgP1xuICAgICAgICAgICAgdW5kZWZpbmVkIDogY2FsY0RlcHRoKGpvaW5lZFBhdGgsIHN5c1BhdGgucmVzb2x2ZSh3aC53YXRjaFBhdGgpKSArIDE7XG5cbiAgICAgICAgICB0aGlzLl9oYW5kbGVGc0V2ZW50c1N5bWxpbmsoam9pbmVkUGF0aCwgZnVsbFBhdGgsIHByb2Nlc3NQYXRoLCBjdXJEZXB0aCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5lbWl0QWRkKGpvaW5lZFBhdGgsIGVudHJ5LnN0YXRzLCBwcm9jZXNzUGF0aCwgb3B0cywgZm9yY2VBZGQpO1xuICAgICAgICB9XG4gICAgICB9KS5vbihFVl9FUlJPUiwgRU1QVFlfRk4pLm9uKFNUUl9FTkQsICgpID0+IHtcbiAgICAgICAgdGhpcy5mc3cuX2VtaXRSZWFkeSgpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZW1pdEFkZCh3aC53YXRjaFBhdGgsIHN0YXRzLCBwcm9jZXNzUGF0aCwgb3B0cywgZm9yY2VBZGQpO1xuICAgICAgdGhpcy5mc3cuX2VtaXRSZWFkeSgpO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoIWVycm9yIHx8IHRoaXMuZnN3Ll9oYW5kbGVFcnJvcihlcnJvcikpIHtcbiAgICAgIC8vIFRPRE86IFN0cmFuZ2UgdGhpbmc6IFwic2hvdWxkIG5vdCBjaG9rZSBvbiBhbiBpZ25vcmVkIHdhdGNoIHBhdGhcIiB3aWxsIGJlIGZhaWxlZCB3aXRob3V0IDIgcmVhZHkgY2FsbHMgLV9fLVxuICAgICAgdGhpcy5mc3cuX2VtaXRSZWFkeSgpO1xuICAgICAgdGhpcy5mc3cuX2VtaXRSZWFkeSgpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRzLnBlcnNpc3RlbnQgJiYgZm9yY2VBZGQgIT09IHRydWUpIHtcbiAgICBpZiAodHlwZW9mIHRyYW5zZm9ybSA9PT0gRlVOQ1RJT05fVFlQRSkge1xuICAgICAgLy8gcmVhbHBhdGggaGFzIGFscmVhZHkgYmVlbiByZXNvbHZlZFxuICAgICAgdGhpcy5pbml0V2F0Y2godW5kZWZpbmVkLCBwYXRoLCB3aCwgcHJvY2Vzc1BhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcmVhbFBhdGg7XG4gICAgICB0cnkge1xuICAgICAgICByZWFsUGF0aCA9IGF3YWl0IHJlYWxwYXRoKHdoLndhdGNoUGF0aCk7XG4gICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgdGhpcy5pbml0V2F0Y2gocmVhbFBhdGgsIHBhdGgsIHdoLCBwcm9jZXNzUGF0aCk7XG4gICAgfVxuICB9XG59XG5cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBGc0V2ZW50c0hhbmRsZXI7XG5tb2R1bGUuZXhwb3J0cy5jYW5Vc2UgPSBjYW5Vc2U7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHsgRXZlbnRFbWl0dGVyIH0gPSByZXF1aXJlKCdldmVudHMnKTtcbmNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKTtcbmNvbnN0IHN5c1BhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5jb25zdCB7IHByb21pc2lmeSB9ID0gcmVxdWlyZSgndXRpbCcpO1xuY29uc3QgcmVhZGRpcnAgPSByZXF1aXJlKCdyZWFkZGlycCcpO1xuY29uc3QgYW55bWF0Y2ggPSByZXF1aXJlKCdhbnltYXRjaCcpLmRlZmF1bHQ7XG5jb25zdCBnbG9iUGFyZW50ID0gcmVxdWlyZSgnZ2xvYi1wYXJlbnQnKTtcbmNvbnN0IGlzR2xvYiA9IHJlcXVpcmUoJ2lzLWdsb2InKTtcbmNvbnN0IGJyYWNlcyA9IHJlcXVpcmUoJ2JyYWNlcycpO1xuY29uc3Qgbm9ybWFsaXplUGF0aCA9IHJlcXVpcmUoJ25vcm1hbGl6ZS1wYXRoJyk7XG5cbmNvbnN0IE5vZGVGc0hhbmRsZXIgPSByZXF1aXJlKCcuL2xpYi9ub2RlZnMtaGFuZGxlcicpO1xuY29uc3QgRnNFdmVudHNIYW5kbGVyID0gcmVxdWlyZSgnLi9saWIvZnNldmVudHMtaGFuZGxlcicpO1xuY29uc3Qge1xuICBFVl9BTEwsXG4gIEVWX1JFQURZLFxuICBFVl9BREQsXG4gIEVWX0NIQU5HRSxcbiAgRVZfVU5MSU5LLFxuICBFVl9BRERfRElSLFxuICBFVl9VTkxJTktfRElSLFxuICBFVl9SQVcsXG4gIEVWX0VSUk9SLFxuXG4gIFNUUl9DTE9TRSxcbiAgU1RSX0VORCxcblxuICBCQUNLX1NMQVNIX1JFLFxuICBET1VCTEVfU0xBU0hfUkUsXG4gIFNMQVNIX09SX0JBQ0tfU0xBU0hfUkUsXG4gIERPVF9SRSxcbiAgUkVQTEFDRVJfUkUsXG5cbiAgU0xBU0gsXG4gIFNMQVNIX1NMQVNILFxuICBCUkFDRV9TVEFSVCxcbiAgQkFORyxcbiAgT05FX0RPVCxcbiAgVFdPX0RPVFMsXG4gIEdMT0JTVEFSLFxuICBTTEFTSF9HTE9CU1RBUixcbiAgQU5ZTUFUQ0hfT1BUUyxcbiAgU1RSSU5HX1RZUEUsXG4gIEZVTkNUSU9OX1RZUEUsXG4gIEVNUFRZX1NUUixcbiAgRU1QVFlfRk4sXG5cbiAgaXNXaW5kb3dzLFxuICBpc01hY29zXG59ID0gcmVxdWlyZSgnLi9saWIvY29uc3RhbnRzJyk7XG5cbmNvbnN0IHN0YXQgPSBwcm9taXNpZnkoZnMuc3RhdCk7XG5jb25zdCByZWFkZGlyID0gcHJvbWlzaWZ5KGZzLnJlYWRkaXIpO1xuXG4vKipcbiAqIEB0eXBlZGVmIHtTdHJpbmd9IFBhdGhcbiAqIEB0eXBlZGVmIHsnYWxsJ3wnYWRkJ3wnYWRkRGlyJ3wnY2hhbmdlJ3wndW5saW5rJ3wndW5saW5rRGlyJ3wncmF3J3wnZXJyb3InfCdyZWFkeSd9IEV2ZW50TmFtZVxuICogQHR5cGVkZWYgeydyZWFkZGlyJ3wnd2F0Y2gnfCdhZGQnfCdyZW1vdmUnfCdjaGFuZ2UnfSBUaHJvdHRsZVR5cGVcbiAqL1xuXG4vKipcbiAqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBXYXRjaEhlbHBlcnNcbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gZm9sbG93U3ltbGlua3NcbiAqIEBwcm9wZXJ0eSB7J3N0YXQnfCdsc3RhdCd9IHN0YXRNZXRob2RcbiAqIEBwcm9wZXJ0eSB7UGF0aH0gcGF0aFxuICogQHByb3BlcnR5IHtQYXRofSB3YXRjaFBhdGhcbiAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IGVudHJ5UGF0aFxuICogQHByb3BlcnR5IHtCb29sZWFufSBoYXNHbG9iXG4gKiBAcHJvcGVydHkge09iamVjdH0gZ2xvYkZpbHRlclxuICogQHByb3BlcnR5IHtGdW5jdGlvbn0gZmlsdGVyUGF0aFxuICogQHByb3BlcnR5IHtGdW5jdGlvbn0gZmlsdGVyRGlyXG4gKi9cblxuY29uc3QgYXJyaWZ5ID0gKHZhbHVlID0gW10pID0+IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xuY29uc3QgZmxhdHRlbiA9IChsaXN0LCByZXN1bHQgPSBbXSkgPT4ge1xuICBsaXN0LmZvckVhY2goaXRlbSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbSkpIHtcbiAgICAgIGZsYXR0ZW4oaXRlbSwgcmVzdWx0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0LnB1c2goaXRlbSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmNvbnN0IHVuaWZ5UGF0aHMgPSAocGF0aHNfKSA9PiB7XG4gIC8qKlxuICAgKiBAdHlwZSB7QXJyYXk8U3RyaW5nPn1cbiAgICovXG4gIGNvbnN0IHBhdGhzID0gZmxhdHRlbihhcnJpZnkocGF0aHNfKSk7XG4gIGlmICghcGF0aHMuZXZlcnkocCA9PiB0eXBlb2YgcCA9PT0gU1RSSU5HX1RZUEUpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgTm9uLXN0cmluZyBwcm92aWRlZCBhcyB3YXRjaCBwYXRoOiAke3BhdGhzfWApO1xuICB9XG4gIHJldHVybiBwYXRocy5tYXAobm9ybWFsaXplUGF0aFRvVW5peCk7XG59O1xuXG4vLyBJZiBTTEFTSF9TTEFTSCBvY2N1cnMgYXQgdGhlIGJlZ2lubmluZyBvZiBwYXRoLCBpdCBpcyBub3QgcmVwbGFjZWRcbi8vICAgICBiZWNhdXNlIFwiLy9TdG9yYWdlUEMvRHJpdmVQb29sL01vdmllc1wiIGlzIGEgdmFsaWQgbmV0d29yayBwYXRoXG5jb25zdCB0b1VuaXggPSAoc3RyaW5nKSA9PiB7XG4gIGxldCBzdHIgPSBzdHJpbmcucmVwbGFjZShCQUNLX1NMQVNIX1JFLCBTTEFTSCk7XG4gIGxldCBwcmVwZW5kID0gZmFsc2U7XG4gIGlmIChzdHIuc3RhcnRzV2l0aChTTEFTSF9TTEFTSCkpIHtcbiAgICBwcmVwZW5kID0gdHJ1ZTtcbiAgfVxuICB3aGlsZSAoc3RyLm1hdGNoKERPVUJMRV9TTEFTSF9SRSkpIHtcbiAgICBzdHIgPSBzdHIucmVwbGFjZShET1VCTEVfU0xBU0hfUkUsIFNMQVNIKTtcbiAgfVxuICBpZiAocHJlcGVuZCkge1xuICAgIHN0ciA9IFNMQVNIICsgc3RyO1xuICB9XG4gIHJldHVybiBzdHI7XG59O1xuXG4vLyBPdXIgdmVyc2lvbiBvZiB1cGF0aC5ub3JtYWxpemVcbi8vIFRPRE86IHRoaXMgaXMgbm90IGVxdWFsIHRvIHBhdGgtbm9ybWFsaXplIG1vZHVsZSAtIGludmVzdGlnYXRlIHdoeVxuY29uc3Qgbm9ybWFsaXplUGF0aFRvVW5peCA9IChwYXRoKSA9PiB0b1VuaXgoc3lzUGF0aC5ub3JtYWxpemUodG9Vbml4KHBhdGgpKSk7XG5cbmNvbnN0IG5vcm1hbGl6ZUlnbm9yZWQgPSAoY3dkID0gRU1QVFlfU1RSKSA9PiAocGF0aCkgPT4ge1xuICBpZiAodHlwZW9mIHBhdGggIT09IFNUUklOR19UWVBFKSByZXR1cm4gcGF0aDtcbiAgcmV0dXJuIG5vcm1hbGl6ZVBhdGhUb1VuaXgoc3lzUGF0aC5pc0Fic29sdXRlKHBhdGgpID8gcGF0aCA6IHN5c1BhdGguam9pbihjd2QsIHBhdGgpKTtcbn07XG5cbmNvbnN0IGdldEFic29sdXRlUGF0aCA9IChwYXRoLCBjd2QpID0+IHtcbiAgaWYgKHN5c1BhdGguaXNBYnNvbHV0ZShwYXRoKSkge1xuICAgIHJldHVybiBwYXRoO1xuICB9XG4gIGlmIChwYXRoLnN0YXJ0c1dpdGgoQkFORykpIHtcbiAgICByZXR1cm4gQkFORyArIHN5c1BhdGguam9pbihjd2QsIHBhdGguc2xpY2UoMSkpO1xuICB9XG4gIHJldHVybiBzeXNQYXRoLmpvaW4oY3dkLCBwYXRoKTtcbn07XG5cbmNvbnN0IHVuZGVmID0gKG9wdHMsIGtleSkgPT4gb3B0c1trZXldID09PSB1bmRlZmluZWQ7XG5cbi8qKlxuICogRGlyZWN0b3J5IGVudHJ5LlxuICogQHByb3BlcnR5IHtQYXRofSBwYXRoXG4gKiBAcHJvcGVydHkge1NldDxQYXRoPn0gaXRlbXNcbiAqL1xuY2xhc3MgRGlyRW50cnkge1xuICAvKipcbiAgICogQHBhcmFtIHtQYXRofSBkaXJcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gcmVtb3ZlV2F0Y2hlclxuICAgKi9cbiAgY29uc3RydWN0b3IoZGlyLCByZW1vdmVXYXRjaGVyKSB7XG4gICAgdGhpcy5wYXRoID0gZGlyO1xuICAgIHRoaXMuX3JlbW92ZVdhdGNoZXIgPSByZW1vdmVXYXRjaGVyO1xuICAgIC8qKiBAdHlwZSB7U2V0PFBhdGg+fSAqL1xuICAgIHRoaXMuaXRlbXMgPSBuZXcgU2V0KCk7XG4gIH1cblxuICBhZGQoaXRlbSkge1xuICAgIGNvbnN0IHtpdGVtc30gPSB0aGlzO1xuICAgIGlmICghaXRlbXMpIHJldHVybjtcbiAgICBpZiAoaXRlbSAhPT0gT05FX0RPVCAmJiBpdGVtICE9PSBUV09fRE9UUykgaXRlbXMuYWRkKGl0ZW0pO1xuICB9XG5cbiAgYXN5bmMgcmVtb3ZlKGl0ZW0pIHtcbiAgICBjb25zdCB7aXRlbXN9ID0gdGhpcztcbiAgICBpZiAoIWl0ZW1zKSByZXR1cm47XG4gICAgaXRlbXMuZGVsZXRlKGl0ZW0pO1xuICAgIGlmIChpdGVtcy5zaXplID4gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgZGlyID0gdGhpcy5wYXRoO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCByZWFkZGlyKGRpcik7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAodGhpcy5fcmVtb3ZlV2F0Y2hlcikge1xuICAgICAgICB0aGlzLl9yZW1vdmVXYXRjaGVyKHN5c1BhdGguZGlybmFtZShkaXIpLCBzeXNQYXRoLmJhc2VuYW1lKGRpcikpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhcyhpdGVtKSB7XG4gICAgY29uc3Qge2l0ZW1zfSA9IHRoaXM7XG4gICAgaWYgKCFpdGVtcykgcmV0dXJuO1xuICAgIHJldHVybiBpdGVtcy5oYXMoaXRlbSk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMge0FycmF5PFN0cmluZz59XG4gICAqL1xuICBnZXRDaGlsZHJlbigpIHtcbiAgICBjb25zdCB7aXRlbXN9ID0gdGhpcztcbiAgICBpZiAoIWl0ZW1zKSByZXR1cm47XG4gICAgcmV0dXJuIFsuLi5pdGVtcy52YWx1ZXMoKV07XG4gIH1cblxuICBkaXNwb3NlKCkge1xuICAgIHRoaXMuaXRlbXMuY2xlYXIoKTtcbiAgICBkZWxldGUgdGhpcy5wYXRoO1xuICAgIGRlbGV0ZSB0aGlzLl9yZW1vdmVXYXRjaGVyO1xuICAgIGRlbGV0ZSB0aGlzLml0ZW1zO1xuICAgIE9iamVjdC5mcmVlemUodGhpcyk7XG4gIH1cbn1cblxuY29uc3QgU1RBVF9NRVRIT0RfRiA9ICdzdGF0JztcbmNvbnN0IFNUQVRfTUVUSE9EX0wgPSAnbHN0YXQnO1xuY2xhc3MgV2F0Y2hIZWxwZXIge1xuICBjb25zdHJ1Y3RvcihwYXRoLCB3YXRjaFBhdGgsIGZvbGxvdywgZnN3KSB7XG4gICAgdGhpcy5mc3cgPSBmc3c7XG4gICAgdGhpcy5wYXRoID0gcGF0aCA9IHBhdGgucmVwbGFjZShSRVBMQUNFUl9SRSwgRU1QVFlfU1RSKTtcbiAgICB0aGlzLndhdGNoUGF0aCA9IHdhdGNoUGF0aDtcbiAgICB0aGlzLmZ1bGxXYXRjaFBhdGggPSBzeXNQYXRoLnJlc29sdmUod2F0Y2hQYXRoKTtcbiAgICB0aGlzLmhhc0dsb2IgPSB3YXRjaFBhdGggIT09IHBhdGg7XG4gICAgLyoqIEB0eXBlIHtvYmplY3R8Ym9vbGVhbn0gKi9cbiAgICBpZiAocGF0aCA9PT0gRU1QVFlfU1RSKSB0aGlzLmhhc0dsb2IgPSBmYWxzZTtcbiAgICB0aGlzLmdsb2JTeW1saW5rID0gdGhpcy5oYXNHbG9iICYmIGZvbGxvdyA/IHVuZGVmaW5lZCA6IGZhbHNlO1xuICAgIHRoaXMuZ2xvYkZpbHRlciA9IHRoaXMuaGFzR2xvYiA/IGFueW1hdGNoKHBhdGgsIHVuZGVmaW5lZCwgQU5ZTUFUQ0hfT1BUUykgOiBmYWxzZTtcbiAgICB0aGlzLmRpclBhcnRzID0gdGhpcy5nZXREaXJQYXJ0cyhwYXRoKTtcbiAgICB0aGlzLmRpclBhcnRzLmZvckVhY2goKHBhcnRzKSA9PiB7XG4gICAgICBpZiAocGFydHMubGVuZ3RoID4gMSkgcGFydHMucG9wKCk7XG4gICAgfSk7XG4gICAgdGhpcy5mb2xsb3dTeW1saW5rcyA9IGZvbGxvdztcbiAgICB0aGlzLnN0YXRNZXRob2QgPSBmb2xsb3cgPyBTVEFUX01FVEhPRF9GIDogU1RBVF9NRVRIT0RfTDtcbiAgfVxuXG4gIGNoZWNrR2xvYlN5bWxpbmsoZW50cnkpIHtcbiAgICAvLyBvbmx5IG5lZWQgdG8gcmVzb2x2ZSBvbmNlXG4gICAgLy8gZmlyc3QgZW50cnkgc2hvdWxkIGFsd2F5cyBoYXZlIGVudHJ5LnBhcmVudERpciA9PT0gRU1QVFlfU1RSXG4gICAgaWYgKHRoaXMuZ2xvYlN5bWxpbmsgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5nbG9iU3ltbGluayA9IGVudHJ5LmZ1bGxQYXJlbnREaXIgPT09IHRoaXMuZnVsbFdhdGNoUGF0aCA/XG4gICAgICAgIGZhbHNlIDoge3JlYWxQYXRoOiBlbnRyeS5mdWxsUGFyZW50RGlyLCBsaW5rUGF0aDogdGhpcy5mdWxsV2F0Y2hQYXRofTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5nbG9iU3ltbGluaykge1xuICAgICAgcmV0dXJuIGVudHJ5LmZ1bGxQYXRoLnJlcGxhY2UodGhpcy5nbG9iU3ltbGluay5yZWFsUGF0aCwgdGhpcy5nbG9iU3ltbGluay5saW5rUGF0aCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVudHJ5LmZ1bGxQYXRoO1xuICB9XG5cbiAgZW50cnlQYXRoKGVudHJ5KSB7XG4gICAgcmV0dXJuIHN5c1BhdGguam9pbih0aGlzLndhdGNoUGF0aCxcbiAgICAgIHN5c1BhdGgucmVsYXRpdmUodGhpcy53YXRjaFBhdGgsIHRoaXMuY2hlY2tHbG9iU3ltbGluayhlbnRyeSkpXG4gICAgKTtcbiAgfVxuXG4gIGZpbHRlclBhdGgoZW50cnkpIHtcbiAgICBjb25zdCB7c3RhdHN9ID0gZW50cnk7XG4gICAgaWYgKHN0YXRzICYmIHN0YXRzLmlzU3ltYm9saWNMaW5rKCkpIHJldHVybiB0aGlzLmZpbHRlckRpcihlbnRyeSk7XG4gICAgY29uc3QgcmVzb2x2ZWRQYXRoID0gdGhpcy5lbnRyeVBhdGgoZW50cnkpO1xuICAgIGNvbnN0IG1hdGNoZXNHbG9iID0gdGhpcy5oYXNHbG9iICYmIHR5cGVvZiB0aGlzLmdsb2JGaWx0ZXIgPT09IEZVTkNUSU9OX1RZUEUgP1xuICAgICAgdGhpcy5nbG9iRmlsdGVyKHJlc29sdmVkUGF0aCkgOiB0cnVlO1xuICAgIHJldHVybiBtYXRjaGVzR2xvYiAmJlxuICAgICAgdGhpcy5mc3cuX2lzbnRJZ25vcmVkKHJlc29sdmVkUGF0aCwgc3RhdHMpICYmXG4gICAgICB0aGlzLmZzdy5faGFzUmVhZFBlcm1pc3Npb25zKHN0YXRzKTtcbiAgfVxuXG4gIGdldERpclBhcnRzKHBhdGgpIHtcbiAgICBpZiAoIXRoaXMuaGFzR2xvYikgcmV0dXJuIFtdO1xuICAgIGNvbnN0IHBhcnRzID0gW107XG4gICAgY29uc3QgZXhwYW5kZWRQYXRoID0gcGF0aC5pbmNsdWRlcyhCUkFDRV9TVEFSVCkgPyBicmFjZXMuZXhwYW5kKHBhdGgpIDogW3BhdGhdO1xuICAgIGV4cGFuZGVkUGF0aC5mb3JFYWNoKChwYXRoKSA9PiB7XG4gICAgICBwYXJ0cy5wdXNoKHN5c1BhdGgucmVsYXRpdmUodGhpcy53YXRjaFBhdGgsIHBhdGgpLnNwbGl0KFNMQVNIX09SX0JBQ0tfU0xBU0hfUkUpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcGFydHM7XG4gIH1cblxuICBmaWx0ZXJEaXIoZW50cnkpIHtcbiAgICBpZiAodGhpcy5oYXNHbG9iKSB7XG4gICAgICBjb25zdCBlbnRyeVBhcnRzID0gdGhpcy5nZXREaXJQYXJ0cyh0aGlzLmNoZWNrR2xvYlN5bWxpbmsoZW50cnkpKTtcbiAgICAgIGxldCBnbG9ic3RhciA9IGZhbHNlO1xuICAgICAgdGhpcy51bm1hdGNoZWRHbG9iID0gIXRoaXMuZGlyUGFydHMuc29tZSgocGFydHMpID0+IHtcbiAgICAgICAgcmV0dXJuIHBhcnRzLmV2ZXJ5KChwYXJ0LCBpKSA9PiB7XG4gICAgICAgICAgaWYgKHBhcnQgPT09IEdMT0JTVEFSKSBnbG9ic3RhciA9IHRydWU7XG4gICAgICAgICAgcmV0dXJuIGdsb2JzdGFyIHx8ICFlbnRyeVBhcnRzWzBdW2ldIHx8IGFueW1hdGNoKHBhcnQsIGVudHJ5UGFydHNbMF1baV0sIEFOWU1BVENIX09QVFMpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gIXRoaXMudW5tYXRjaGVkR2xvYiAmJiB0aGlzLmZzdy5faXNudElnbm9yZWQodGhpcy5lbnRyeVBhdGgoZW50cnkpLCBlbnRyeS5zdGF0cyk7XG4gIH1cbn1cblxuLyoqXG4gKiBXYXRjaGVzIGZpbGVzICYgZGlyZWN0b3JpZXMgZm9yIGNoYW5nZXMuIEVtaXR0ZWQgZXZlbnRzOlxuICogYGFkZGAsIGBhZGREaXJgLCBgY2hhbmdlYCwgYHVubGlua2AsIGB1bmxpbmtEaXJgLCBgYWxsYCwgYGVycm9yYFxuICpcbiAqICAgICBuZXcgRlNXYXRjaGVyKClcbiAqICAgICAgIC5hZGQoZGlyZWN0b3JpZXMpXG4gKiAgICAgICAub24oJ2FkZCcsIHBhdGggPT4gbG9nKCdGaWxlJywgcGF0aCwgJ3dhcyBhZGRlZCcpKVxuICovXG5jbGFzcyBGU1dhdGNoZXIgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuLy8gTm90IGluZGVudGluZyBtZXRob2RzIGZvciBoaXN0b3J5IHNha2U7IGZvciBub3cuXG5jb25zdHJ1Y3Rvcihfb3B0cykge1xuICBzdXBlcigpO1xuXG4gIGNvbnN0IG9wdHMgPSB7fTtcbiAgaWYgKF9vcHRzKSBPYmplY3QuYXNzaWduKG9wdHMsIF9vcHRzKTsgLy8gZm9yIGZyb3plbiBvYmplY3RzXG5cbiAgLyoqIEB0eXBlIHtNYXA8U3RyaW5nLCBEaXJFbnRyeT59ICovXG4gIHRoaXMuX3dhdGNoZWQgPSBuZXcgTWFwKCk7XG4gIC8qKiBAdHlwZSB7TWFwPFN0cmluZywgQXJyYXk+fSAqL1xuICB0aGlzLl9jbG9zZXJzID0gbmV3IE1hcCgpO1xuICAvKiogQHR5cGUge1NldDxTdHJpbmc+fSAqL1xuICB0aGlzLl9pZ25vcmVkUGF0aHMgPSBuZXcgU2V0KCk7XG5cbiAgLyoqIEB0eXBlIHtNYXA8VGhyb3R0bGVUeXBlLCBNYXA+fSAqL1xuICB0aGlzLl90aHJvdHRsZWQgPSBuZXcgTWFwKCk7XG5cbiAgLyoqIEB0eXBlIHtNYXA8UGF0aCwgU3RyaW5nfEJvb2xlYW4+fSAqL1xuICB0aGlzLl9zeW1saW5rUGF0aHMgPSBuZXcgTWFwKCk7XG5cbiAgdGhpcy5fc3RyZWFtcyA9IG5ldyBTZXQoKTtcbiAgdGhpcy5jbG9zZWQgPSBmYWxzZTtcblxuICAvLyBTZXQgdXAgZGVmYXVsdCBvcHRpb25zLlxuICBpZiAodW5kZWYob3B0cywgJ3BlcnNpc3RlbnQnKSkgb3B0cy5wZXJzaXN0ZW50ID0gdHJ1ZTtcbiAgaWYgKHVuZGVmKG9wdHMsICdpZ25vcmVJbml0aWFsJykpIG9wdHMuaWdub3JlSW5pdGlhbCA9IGZhbHNlO1xuICBpZiAodW5kZWYob3B0cywgJ2lnbm9yZVBlcm1pc3Npb25FcnJvcnMnKSkgb3B0cy5pZ25vcmVQZXJtaXNzaW9uRXJyb3JzID0gZmFsc2U7XG4gIGlmICh1bmRlZihvcHRzLCAnaW50ZXJ2YWwnKSkgb3B0cy5pbnRlcnZhbCA9IDEwMDtcbiAgaWYgKHVuZGVmKG9wdHMsICdiaW5hcnlJbnRlcnZhbCcpKSBvcHRzLmJpbmFyeUludGVydmFsID0gMzAwO1xuICBpZiAodW5kZWYob3B0cywgJ2Rpc2FibGVHbG9iYmluZycpKSBvcHRzLmRpc2FibGVHbG9iYmluZyA9IGZhbHNlO1xuICBvcHRzLmVuYWJsZUJpbmFyeUludGVydmFsID0gb3B0cy5iaW5hcnlJbnRlcnZhbCAhPT0gb3B0cy5pbnRlcnZhbDtcblxuICAvLyBFbmFibGUgZnNldmVudHMgb24gT1MgWCB3aGVuIHBvbGxpbmcgaXNuJ3QgZXhwbGljaXRseSBlbmFibGVkLlxuICBpZiAodW5kZWYob3B0cywgJ3VzZUZzRXZlbnRzJykpIG9wdHMudXNlRnNFdmVudHMgPSAhb3B0cy51c2VQb2xsaW5nO1xuXG4gIC8vIElmIHdlIGNhbid0IHVzZSBmc2V2ZW50cywgZW5zdXJlIHRoZSBvcHRpb25zIHJlZmxlY3QgaXQncyBkaXNhYmxlZC5cbiAgY29uc3QgY2FuVXNlRnNFdmVudHMgPSBGc0V2ZW50c0hhbmRsZXIuY2FuVXNlKCk7XG4gIGlmICghY2FuVXNlRnNFdmVudHMpIG9wdHMudXNlRnNFdmVudHMgPSBmYWxzZTtcblxuICAvLyBVc2UgcG9sbGluZyBvbiBNYWMgaWYgbm90IHVzaW5nIGZzZXZlbnRzLlxuICAvLyBPdGhlciBwbGF0Zm9ybXMgdXNlIG5vbi1wb2xsaW5nIGZzX3dhdGNoLlxuICBpZiAodW5kZWYob3B0cywgJ3VzZVBvbGxpbmcnKSAmJiAhb3B0cy51c2VGc0V2ZW50cykge1xuICAgIG9wdHMudXNlUG9sbGluZyA9IGlzTWFjb3M7XG4gIH1cblxuICAvLyBHbG9iYWwgb3ZlcnJpZGUgKHVzZWZ1bCBmb3IgZW5kLWRldmVsb3BlcnMgdGhhdCBuZWVkIHRvIGZvcmNlIHBvbGxpbmcgZm9yIGFsbFxuICAvLyBpbnN0YW5jZXMgb2YgY2hva2lkYXIsIHJlZ2FyZGxlc3Mgb2YgdXNhZ2UvZGVwZW5kZW5jeSBkZXB0aClcbiAgY29uc3QgZW52UG9sbCA9IHByb2Nlc3MuZW52LkNIT0tJREFSX1VTRVBPTExJTkc7XG4gIGlmIChlbnZQb2xsICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBlbnZMb3dlciA9IGVudlBvbGwudG9Mb3dlckNhc2UoKTtcblxuICAgIGlmIChlbnZMb3dlciA9PT0gJ2ZhbHNlJyB8fCBlbnZMb3dlciA9PT0gJzAnKSB7XG4gICAgICBvcHRzLnVzZVBvbGxpbmcgPSBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKGVudkxvd2VyID09PSAndHJ1ZScgfHwgZW52TG93ZXIgPT09ICcxJykge1xuICAgICAgb3B0cy51c2VQb2xsaW5nID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3B0cy51c2VQb2xsaW5nID0gISFlbnZMb3dlcjtcbiAgICB9XG4gIH1cbiAgY29uc3QgZW52SW50ZXJ2YWwgPSBwcm9jZXNzLmVudi5DSE9LSURBUl9JTlRFUlZBTDtcbiAgaWYgKGVudkludGVydmFsKSB7XG4gICAgb3B0cy5pbnRlcnZhbCA9IE51bWJlci5wYXJzZUludChlbnZJbnRlcnZhbCwgMTApO1xuICB9XG5cbiAgLy8gRWRpdG9yIGF0b21pYyB3cml0ZSBub3JtYWxpemF0aW9uIGVuYWJsZWQgYnkgZGVmYXVsdCB3aXRoIGZzLndhdGNoXG4gIGlmICh1bmRlZihvcHRzLCAnYXRvbWljJykpIG9wdHMuYXRvbWljID0gIW9wdHMudXNlUG9sbGluZyAmJiAhb3B0cy51c2VGc0V2ZW50cztcbiAgaWYgKG9wdHMuYXRvbWljKSB0aGlzLl9wZW5kaW5nVW5saW5rcyA9IG5ldyBNYXAoKTtcblxuICBpZiAodW5kZWYob3B0cywgJ2ZvbGxvd1N5bWxpbmtzJykpIG9wdHMuZm9sbG93U3ltbGlua3MgPSB0cnVlO1xuXG4gIGlmICh1bmRlZihvcHRzLCAnYXdhaXRXcml0ZUZpbmlzaCcpKSBvcHRzLmF3YWl0V3JpdGVGaW5pc2ggPSBmYWxzZTtcbiAgaWYgKG9wdHMuYXdhaXRXcml0ZUZpbmlzaCA9PT0gdHJ1ZSkgb3B0cy5hd2FpdFdyaXRlRmluaXNoID0ge307XG4gIGNvbnN0IGF3ZiA9IG9wdHMuYXdhaXRXcml0ZUZpbmlzaDtcbiAgaWYgKGF3Zikge1xuICAgIGlmICghYXdmLnN0YWJpbGl0eVRocmVzaG9sZCkgYXdmLnN0YWJpbGl0eVRocmVzaG9sZCA9IDIwMDA7XG4gICAgaWYgKCFhd2YucG9sbEludGVydmFsKSBhd2YucG9sbEludGVydmFsID0gMTAwO1xuICAgIHRoaXMuX3BlbmRpbmdXcml0ZXMgPSBuZXcgTWFwKCk7XG4gIH1cbiAgaWYgKG9wdHMuaWdub3JlZCkgb3B0cy5pZ25vcmVkID0gYXJyaWZ5KG9wdHMuaWdub3JlZCk7XG5cbiAgbGV0IHJlYWR5Q2FsbHMgPSAwO1xuICB0aGlzLl9lbWl0UmVhZHkgPSAoKSA9PiB7XG4gICAgcmVhZHlDYWxscysrO1xuICAgIGlmIChyZWFkeUNhbGxzID49IHRoaXMuX3JlYWR5Q291bnQpIHtcbiAgICAgIHRoaXMuX2VtaXRSZWFkeSA9IEVNUFRZX0ZOO1xuICAgICAgdGhpcy5fcmVhZHlFbWl0dGVkID0gdHJ1ZTtcbiAgICAgIC8vIHVzZSBwcm9jZXNzLm5leHRUaWNrIHRvIGFsbG93IHRpbWUgZm9yIGxpc3RlbmVyIHRvIGJlIGJvdW5kXG4gICAgICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHRoaXMuZW1pdChFVl9SRUFEWSkpO1xuICAgIH1cbiAgfTtcbiAgdGhpcy5fZW1pdFJhdyA9ICguLi5hcmdzKSA9PiB0aGlzLmVtaXQoRVZfUkFXLCAuLi5hcmdzKTtcbiAgdGhpcy5fcmVhZHlFbWl0dGVkID0gZmFsc2U7XG4gIHRoaXMub3B0aW9ucyA9IG9wdHM7XG5cbiAgLy8gSW5pdGlhbGl6ZSB3aXRoIHByb3BlciB3YXRjaGVyLlxuICBpZiAob3B0cy51c2VGc0V2ZW50cykge1xuICAgIHRoaXMuX2ZzRXZlbnRzSGFuZGxlciA9IG5ldyBGc0V2ZW50c0hhbmRsZXIodGhpcyk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5fbm9kZUZzSGFuZGxlciA9IG5ldyBOb2RlRnNIYW5kbGVyKHRoaXMpO1xuICB9XG5cbiAgLy8gWW914oCZcmUgZnJvemVuIHdoZW4geW91ciBoZWFydOKAmXMgbm90IG9wZW4uXG4gIE9iamVjdC5mcmVlemUob3B0cyk7XG59XG5cbi8vIFB1YmxpYyBtZXRob2RzXG5cbi8qKlxuICogQWRkcyBwYXRocyB0byBiZSB3YXRjaGVkIG9uIGFuIGV4aXN0aW5nIEZTV2F0Y2hlciBpbnN0YW5jZVxuICogQHBhcmFtIHtQYXRofEFycmF5PFBhdGg+fSBwYXRoc19cbiAqIEBwYXJhbSB7U3RyaW5nPX0gX29yaWdBZGQgcHJpdmF0ZTsgZm9yIGhhbmRsaW5nIG5vbi1leGlzdGVudCBwYXRocyB0byBiZSB3YXRjaGVkXG4gKiBAcGFyYW0ge0Jvb2xlYW49fSBfaW50ZXJuYWwgcHJpdmF0ZTsgaW5kaWNhdGVzIGEgbm9uLXVzZXIgYWRkXG4gKiBAcmV0dXJucyB7RlNXYXRjaGVyfSBmb3IgY2hhaW5pbmdcbiAqL1xuYWRkKHBhdGhzXywgX29yaWdBZGQsIF9pbnRlcm5hbCkge1xuICBjb25zdCB7Y3dkLCBkaXNhYmxlR2xvYmJpbmd9ID0gdGhpcy5vcHRpb25zO1xuICB0aGlzLmNsb3NlZCA9IGZhbHNlO1xuICBsZXQgcGF0aHMgPSB1bmlmeVBhdGhzKHBhdGhzXyk7XG4gIGlmIChjd2QpIHtcbiAgICBwYXRocyA9IHBhdGhzLm1hcCgocGF0aCkgPT4ge1xuICAgICAgY29uc3QgYWJzUGF0aCA9IGdldEFic29sdXRlUGF0aChwYXRoLCBjd2QpO1xuXG4gICAgICAvLyBDaGVjayBgcGF0aGAgaW5zdGVhZCBvZiBgYWJzUGF0aGAgYmVjYXVzZSB0aGUgY3dkIHBvcnRpb24gY2FuJ3QgYmUgYSBnbG9iXG4gICAgICBpZiAoZGlzYWJsZUdsb2JiaW5nIHx8ICFpc0dsb2IocGF0aCkpIHtcbiAgICAgICAgcmV0dXJuIGFic1BhdGg7XG4gICAgICB9XG4gICAgICByZXR1cm4gbm9ybWFsaXplUGF0aChhYnNQYXRoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIHNldCBhc2lkZSBuZWdhdGVkIGdsb2Igc3RyaW5nc1xuICBwYXRocyA9IHBhdGhzLmZpbHRlcigocGF0aCkgPT4ge1xuICAgIGlmIChwYXRoLnN0YXJ0c1dpdGgoQkFORykpIHtcbiAgICAgIHRoaXMuX2lnbm9yZWRQYXRocy5hZGQocGF0aC5zbGljZSgxKSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gaWYgYSBwYXRoIGlzIGJlaW5nIGFkZGVkIHRoYXQgd2FzIHByZXZpb3VzbHkgaWdub3JlZCwgc3RvcCBpZ25vcmluZyBpdFxuICAgIHRoaXMuX2lnbm9yZWRQYXRocy5kZWxldGUocGF0aCk7XG4gICAgdGhpcy5faWdub3JlZFBhdGhzLmRlbGV0ZShwYXRoICsgU0xBU0hfR0xPQlNUQVIpO1xuXG4gICAgLy8gcmVzZXQgdGhlIGNhY2hlZCB1c2VySWdub3JlZCBhbnltYXRjaCBmblxuICAgIC8vIHRvIG1ha2UgaWdub3JlZFBhdGhzIGNoYW5nZXMgZWZmZWN0aXZlXG4gICAgdGhpcy5fdXNlcklnbm9yZWQgPSB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSk7XG5cbiAgaWYgKHRoaXMub3B0aW9ucy51c2VGc0V2ZW50cyAmJiB0aGlzLl9mc0V2ZW50c0hhbmRsZXIpIHtcbiAgICBpZiAoIXRoaXMuX3JlYWR5Q291bnQpIHRoaXMuX3JlYWR5Q291bnQgPSBwYXRocy5sZW5ndGg7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5wZXJzaXN0ZW50KSB0aGlzLl9yZWFkeUNvdW50ICo9IDI7XG4gICAgcGF0aHMuZm9yRWFjaCgocGF0aCkgPT4gdGhpcy5fZnNFdmVudHNIYW5kbGVyLl9hZGRUb0ZzRXZlbnRzKHBhdGgpKTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoIXRoaXMuX3JlYWR5Q291bnQpIHRoaXMuX3JlYWR5Q291bnQgPSAwO1xuICAgIHRoaXMuX3JlYWR5Q291bnQgKz0gcGF0aHMubGVuZ3RoO1xuICAgIFByb21pc2UuYWxsKFxuICAgICAgcGF0aHMubWFwKGFzeW5jIHBhdGggPT4ge1xuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLl9ub2RlRnNIYW5kbGVyLl9hZGRUb05vZGVGcyhwYXRoLCAhX2ludGVybmFsLCAwLCAwLCBfb3JpZ0FkZCk7XG4gICAgICAgIGlmIChyZXMpIHRoaXMuX2VtaXRSZWFkeSgpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgfSlcbiAgICApLnRoZW4ocmVzdWx0cyA9PiB7XG4gICAgICBpZiAodGhpcy5jbG9zZWQpIHJldHVybjtcbiAgICAgIHJlc3VsdHMuZmlsdGVyKGl0ZW0gPT4gaXRlbSkuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgdGhpcy5hZGQoc3lzUGF0aC5kaXJuYW1lKGl0ZW0pLCBzeXNQYXRoLmJhc2VuYW1lKF9vcmlnQWRkIHx8IGl0ZW0pKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59XG5cbi8qKlxuICogQ2xvc2Ugd2F0Y2hlcnMgb3Igc3RhcnQgaWdub3JpbmcgZXZlbnRzIGZyb20gc3BlY2lmaWVkIHBhdGhzLlxuICogQHBhcmFtIHtQYXRofEFycmF5PFBhdGg+fSBwYXRoc18gLSBzdHJpbmcgb3IgYXJyYXkgb2Ygc3RyaW5ncywgZmlsZS9kaXJlY3RvcnkgcGF0aHMgYW5kL29yIGdsb2JzXG4gKiBAcmV0dXJucyB7RlNXYXRjaGVyfSBmb3IgY2hhaW5pbmdcbiovXG51bndhdGNoKHBhdGhzXykge1xuICBpZiAodGhpcy5jbG9zZWQpIHJldHVybiB0aGlzO1xuICBjb25zdCBwYXRocyA9IHVuaWZ5UGF0aHMocGF0aHNfKTtcbiAgY29uc3Qge2N3ZH0gPSB0aGlzLm9wdGlvbnM7XG5cbiAgcGF0aHMuZm9yRWFjaCgocGF0aCkgPT4ge1xuICAgIC8vIGNvbnZlcnQgdG8gYWJzb2x1dGUgcGF0aCB1bmxlc3MgcmVsYXRpdmUgcGF0aCBhbHJlYWR5IG1hdGNoZXNcbiAgICBpZiAoIXN5c1BhdGguaXNBYnNvbHV0ZShwYXRoKSAmJiAhdGhpcy5fY2xvc2Vycy5oYXMocGF0aCkpIHtcbiAgICAgIGlmIChjd2QpIHBhdGggPSBzeXNQYXRoLmpvaW4oY3dkLCBwYXRoKTtcbiAgICAgIHBhdGggPSBzeXNQYXRoLnJlc29sdmUocGF0aCk7XG4gICAgfVxuXG4gICAgdGhpcy5fY2xvc2VQYXRoKHBhdGgpO1xuXG4gICAgdGhpcy5faWdub3JlZFBhdGhzLmFkZChwYXRoKTtcbiAgICBpZiAodGhpcy5fd2F0Y2hlZC5oYXMocGF0aCkpIHtcbiAgICAgIHRoaXMuX2lnbm9yZWRQYXRocy5hZGQocGF0aCArIFNMQVNIX0dMT0JTVEFSKTtcbiAgICB9XG5cbiAgICAvLyByZXNldCB0aGUgY2FjaGVkIHVzZXJJZ25vcmVkIGFueW1hdGNoIGZuXG4gICAgLy8gdG8gbWFrZSBpZ25vcmVkUGF0aHMgY2hhbmdlcyBlZmZlY3RpdmVcbiAgICB0aGlzLl91c2VySWdub3JlZCA9IHVuZGVmaW5lZDtcbiAgfSk7XG5cbiAgcmV0dXJuIHRoaXM7XG59XG5cbi8qKlxuICogQ2xvc2Ugd2F0Y2hlcnMgYW5kIHJlbW92ZSBhbGwgbGlzdGVuZXJzIGZyb20gd2F0Y2hlZCBwYXRocy5cbiAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fS5cbiovXG5jbG9zZSgpIHtcbiAgaWYgKHRoaXMuY2xvc2VkKSByZXR1cm4gdGhpcy5fY2xvc2VQcm9taXNlO1xuICB0aGlzLmNsb3NlZCA9IHRydWU7XG5cbiAgLy8gTWVtb3J5IG1hbmFnZW1lbnQuXG4gIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XG4gIGNvbnN0IGNsb3NlcnMgPSBbXTtcbiAgdGhpcy5fY2xvc2Vycy5mb3JFYWNoKGNsb3Nlckxpc3QgPT4gY2xvc2VyTGlzdC5mb3JFYWNoKGNsb3NlciA9PiB7XG4gICAgY29uc3QgcHJvbWlzZSA9IGNsb3NlcigpO1xuICAgIGlmIChwcm9taXNlIGluc3RhbmNlb2YgUHJvbWlzZSkgY2xvc2Vycy5wdXNoKHByb21pc2UpO1xuICB9KSk7XG4gIHRoaXMuX3N0cmVhbXMuZm9yRWFjaChzdHJlYW0gPT4gc3RyZWFtLmRlc3Ryb3koKSk7XG4gIHRoaXMuX3VzZXJJZ25vcmVkID0gdW5kZWZpbmVkO1xuICB0aGlzLl9yZWFkeUNvdW50ID0gMDtcbiAgdGhpcy5fcmVhZHlFbWl0dGVkID0gZmFsc2U7XG4gIHRoaXMuX3dhdGNoZWQuZm9yRWFjaChkaXJlbnQgPT4gZGlyZW50LmRpc3Bvc2UoKSk7XG4gIFsnY2xvc2VycycsICd3YXRjaGVkJywgJ3N0cmVhbXMnLCAnc3ltbGlua1BhdGhzJywgJ3Rocm90dGxlZCddLmZvckVhY2goa2V5ID0+IHtcbiAgICB0aGlzW2BfJHtrZXl9YF0uY2xlYXIoKTtcbiAgfSk7XG5cbiAgdGhpcy5fY2xvc2VQcm9taXNlID0gY2xvc2Vycy5sZW5ndGggPyBQcm9taXNlLmFsbChjbG9zZXJzKS50aGVuKCgpID0+IHVuZGVmaW5lZCkgOiBQcm9taXNlLnJlc29sdmUoKTtcbiAgcmV0dXJuIHRoaXMuX2Nsb3NlUHJvbWlzZTtcbn1cblxuLyoqXG4gKiBFeHBvc2UgbGlzdCBvZiB3YXRjaGVkIHBhdGhzXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBmb3IgY2hhaW5pbmdcbiovXG5nZXRXYXRjaGVkKCkge1xuICBjb25zdCB3YXRjaExpc3QgPSB7fTtcbiAgdGhpcy5fd2F0Y2hlZC5mb3JFYWNoKChlbnRyeSwgZGlyKSA9PiB7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5vcHRpb25zLmN3ZCA/IHN5c1BhdGgucmVsYXRpdmUodGhpcy5vcHRpb25zLmN3ZCwgZGlyKSA6IGRpcjtcbiAgICB3YXRjaExpc3Rba2V5IHx8IE9ORV9ET1RdID0gZW50cnkuZ2V0Q2hpbGRyZW4oKS5zb3J0KCk7XG4gIH0pO1xuICByZXR1cm4gd2F0Y2hMaXN0O1xufVxuXG5lbWl0V2l0aEFsbChldmVudCwgYXJncykge1xuICB0aGlzLmVtaXQoLi4uYXJncyk7XG4gIGlmIChldmVudCAhPT0gRVZfRVJST1IpIHRoaXMuZW1pdChFVl9BTEwsIC4uLmFyZ3MpO1xufVxuXG4vLyBDb21tb24gaGVscGVyc1xuLy8gLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBOb3JtYWxpemUgYW5kIGVtaXQgZXZlbnRzLlxuICogQ2FsbGluZyBfZW1pdCBET0VTIE5PVCBNRUFOIGVtaXQoKSB3b3VsZCBiZSBjYWxsZWQhXG4gKiBAcGFyYW0ge0V2ZW50TmFtZX0gZXZlbnQgVHlwZSBvZiBldmVudFxuICogQHBhcmFtIHtQYXRofSBwYXRoIEZpbGUgb3IgZGlyZWN0b3J5IHBhdGhcbiAqIEBwYXJhbSB7Kj19IHZhbDEgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCB3aXRoIGV2ZW50XG4gKiBAcGFyYW0geyo9fSB2YWwyXG4gKiBAcGFyYW0geyo9fSB2YWwzXG4gKiBAcmV0dXJucyB0aGUgZXJyb3IgaWYgZGVmaW5lZCwgb3RoZXJ3aXNlIHRoZSB2YWx1ZSBvZiB0aGUgRlNXYXRjaGVyIGluc3RhbmNlJ3MgYGNsb3NlZGAgZmxhZ1xuICovXG5hc3luYyBfZW1pdChldmVudCwgcGF0aCwgdmFsMSwgdmFsMiwgdmFsMykge1xuICBpZiAodGhpcy5jbG9zZWQpIHJldHVybjtcblxuICBjb25zdCBvcHRzID0gdGhpcy5vcHRpb25zO1xuICBpZiAoaXNXaW5kb3dzKSBwYXRoID0gc3lzUGF0aC5ub3JtYWxpemUocGF0aCk7XG4gIGlmIChvcHRzLmN3ZCkgcGF0aCA9IHN5c1BhdGgucmVsYXRpdmUob3B0cy5jd2QsIHBhdGgpO1xuICAvKiogQHR5cGUgQXJyYXk8YW55PiAqL1xuICBjb25zdCBhcmdzID0gW2V2ZW50LCBwYXRoXTtcbiAgaWYgKHZhbDMgIT09IHVuZGVmaW5lZCkgYXJncy5wdXNoKHZhbDEsIHZhbDIsIHZhbDMpO1xuICBlbHNlIGlmICh2YWwyICE9PSB1bmRlZmluZWQpIGFyZ3MucHVzaCh2YWwxLCB2YWwyKTtcbiAgZWxzZSBpZiAodmFsMSAhPT0gdW5kZWZpbmVkKSBhcmdzLnB1c2godmFsMSk7XG5cbiAgY29uc3QgYXdmID0gb3B0cy5hd2FpdFdyaXRlRmluaXNoO1xuICBsZXQgcHc7XG4gIGlmIChhd2YgJiYgKHB3ID0gdGhpcy5fcGVuZGluZ1dyaXRlcy5nZXQocGF0aCkpKSB7XG4gICAgcHcubGFzdENoYW5nZSA9IG5ldyBEYXRlKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBpZiAob3B0cy5hdG9taWMpIHtcbiAgICBpZiAoZXZlbnQgPT09IEVWX1VOTElOSykge1xuICAgICAgdGhpcy5fcGVuZGluZ1VubGlua3Muc2V0KHBhdGgsIGFyZ3MpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3BlbmRpbmdVbmxpbmtzLmZvckVhY2goKGVudHJ5LCBwYXRoKSA9PiB7XG4gICAgICAgICAgdGhpcy5lbWl0KC4uLmVudHJ5KTtcbiAgICAgICAgICB0aGlzLmVtaXQoRVZfQUxMLCAuLi5lbnRyeSk7XG4gICAgICAgICAgdGhpcy5fcGVuZGluZ1VubGlua3MuZGVsZXRlKHBhdGgpO1xuICAgICAgICB9KTtcbiAgICAgIH0sIHR5cGVvZiBvcHRzLmF0b21pYyA9PT0gJ251bWJlcicgPyBvcHRzLmF0b21pYyA6IDEwMCk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgaWYgKGV2ZW50ID09PSBFVl9BREQgJiYgdGhpcy5fcGVuZGluZ1VubGlua3MuaGFzKHBhdGgpKSB7XG4gICAgICBldmVudCA9IGFyZ3NbMF0gPSBFVl9DSEFOR0U7XG4gICAgICB0aGlzLl9wZW5kaW5nVW5saW5rcy5kZWxldGUocGF0aCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGF3ZiAmJiAoZXZlbnQgPT09IEVWX0FERCB8fCBldmVudCA9PT0gRVZfQ0hBTkdFKSAmJiB0aGlzLl9yZWFkeUVtaXR0ZWQpIHtcbiAgICBjb25zdCBhd2ZFbWl0ID0gKGVyciwgc3RhdHMpID0+IHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgZXZlbnQgPSBhcmdzWzBdID0gRVZfRVJST1I7XG4gICAgICAgIGFyZ3NbMV0gPSBlcnI7XG4gICAgICAgIHRoaXMuZW1pdFdpdGhBbGwoZXZlbnQsIGFyZ3MpO1xuICAgICAgfSBlbHNlIGlmIChzdGF0cykge1xuICAgICAgICAvLyBpZiBzdGF0cyBkb2Vzbid0IGV4aXN0IHRoZSBmaWxlIG11c3QgaGF2ZSBiZWVuIGRlbGV0ZWRcbiAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID4gMikge1xuICAgICAgICAgIGFyZ3NbMl0gPSBzdGF0cztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhcmdzLnB1c2goc3RhdHMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW1pdFdpdGhBbGwoZXZlbnQsIGFyZ3MpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLl9hd2FpdFdyaXRlRmluaXNoKHBhdGgsIGF3Zi5zdGFiaWxpdHlUaHJlc2hvbGQsIGV2ZW50LCBhd2ZFbWl0KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGlmIChldmVudCA9PT0gRVZfQ0hBTkdFKSB7XG4gICAgY29uc3QgaXNUaHJvdHRsZWQgPSAhdGhpcy5fdGhyb3R0bGUoRVZfQ0hBTkdFLCBwYXRoLCA1MCk7XG4gICAgaWYgKGlzVGhyb3R0bGVkKSByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGlmIChvcHRzLmFsd2F5c1N0YXQgJiYgdmFsMSA9PT0gdW5kZWZpbmVkICYmXG4gICAgKGV2ZW50ID09PSBFVl9BREQgfHwgZXZlbnQgPT09IEVWX0FERF9ESVIgfHwgZXZlbnQgPT09IEVWX0NIQU5HRSlcbiAgKSB7XG4gICAgY29uc3QgZnVsbFBhdGggPSBvcHRzLmN3ZCA/IHN5c1BhdGguam9pbihvcHRzLmN3ZCwgcGF0aCkgOiBwYXRoO1xuICAgIGxldCBzdGF0cztcbiAgICB0cnkge1xuICAgICAgc3RhdHMgPSBhd2FpdCBzdGF0KGZ1bGxQYXRoKTtcbiAgICB9IGNhdGNoIChlcnIpIHt9XG4gICAgLy8gU3VwcHJlc3MgZXZlbnQgd2hlbiBmc19zdGF0IGZhaWxzLCB0byBhdm9pZCBzZW5kaW5nIHVuZGVmaW5lZCAnc3RhdCdcbiAgICBpZiAoIXN0YXRzIHx8IHRoaXMuY2xvc2VkKSByZXR1cm47XG4gICAgYXJncy5wdXNoKHN0YXRzKTtcbiAgfVxuICB0aGlzLmVtaXRXaXRoQWxsKGV2ZW50LCBhcmdzKTtcblxuICByZXR1cm4gdGhpcztcbn1cblxuLyoqXG4gKiBDb21tb24gaGFuZGxlciBmb3IgZXJyb3JzXG4gKiBAcGFyYW0ge0Vycm9yfSBlcnJvclxuICogQHJldHVybnMge0Vycm9yfEJvb2xlYW59IFRoZSBlcnJvciBpZiBkZWZpbmVkLCBvdGhlcndpc2UgdGhlIHZhbHVlIG9mIHRoZSBGU1dhdGNoZXIgaW5zdGFuY2UncyBgY2xvc2VkYCBmbGFnXG4gKi9cbl9oYW5kbGVFcnJvcihlcnJvcikge1xuICBjb25zdCBjb2RlID0gZXJyb3IgJiYgZXJyb3IuY29kZTtcbiAgaWYgKGVycm9yICYmIGNvZGUgIT09ICdFTk9FTlQnICYmIGNvZGUgIT09ICdFTk9URElSJyAmJlxuICAgICghdGhpcy5vcHRpb25zLmlnbm9yZVBlcm1pc3Npb25FcnJvcnMgfHwgKGNvZGUgIT09ICdFUEVSTScgJiYgY29kZSAhPT0gJ0VBQ0NFUycpKVxuICApIHtcbiAgICB0aGlzLmVtaXQoRVZfRVJST1IsIGVycm9yKTtcbiAgfVxuICByZXR1cm4gZXJyb3IgfHwgdGhpcy5jbG9zZWQ7XG59XG5cbi8qKlxuICogSGVscGVyIHV0aWxpdHkgZm9yIHRocm90dGxpbmdcbiAqIEBwYXJhbSB7VGhyb3R0bGVUeXBlfSBhY3Rpb25UeXBlIHR5cGUgYmVpbmcgdGhyb3R0bGVkXG4gKiBAcGFyYW0ge1BhdGh9IHBhdGggYmVpbmcgYWN0ZWQgdXBvblxuICogQHBhcmFtIHtOdW1iZXJ9IHRpbWVvdXQgZHVyYXRpb24gb2YgdGltZSB0byBzdXBwcmVzcyBkdXBsaWNhdGUgYWN0aW9uc1xuICogQHJldHVybnMge09iamVjdHxmYWxzZX0gdHJhY2tpbmcgb2JqZWN0IG9yIGZhbHNlIGlmIGFjdGlvbiBzaG91bGQgYmUgc3VwcHJlc3NlZFxuICovXG5fdGhyb3R0bGUoYWN0aW9uVHlwZSwgcGF0aCwgdGltZW91dCkge1xuICBpZiAoIXRoaXMuX3Rocm90dGxlZC5oYXMoYWN0aW9uVHlwZSkpIHtcbiAgICB0aGlzLl90aHJvdHRsZWQuc2V0KGFjdGlvblR5cGUsIG5ldyBNYXAoKSk7XG4gIH1cblxuICAvKiogQHR5cGUge01hcDxQYXRoLCBPYmplY3Q+fSAqL1xuICBjb25zdCBhY3Rpb24gPSB0aGlzLl90aHJvdHRsZWQuZ2V0KGFjdGlvblR5cGUpO1xuICAvKiogQHR5cGUge09iamVjdH0gKi9cbiAgY29uc3QgYWN0aW9uUGF0aCA9IGFjdGlvbi5nZXQocGF0aCk7XG5cbiAgaWYgKGFjdGlvblBhdGgpIHtcbiAgICBhY3Rpb25QYXRoLmNvdW50Kys7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgbGV0IHRpbWVvdXRPYmplY3Q7XG4gIGNvbnN0IGNsZWFyID0gKCkgPT4ge1xuICAgIGNvbnN0IGl0ZW0gPSBhY3Rpb24uZ2V0KHBhdGgpO1xuICAgIGNvbnN0IGNvdW50ID0gaXRlbSA/IGl0ZW0uY291bnQgOiAwO1xuICAgIGFjdGlvbi5kZWxldGUocGF0aCk7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRPYmplY3QpO1xuICAgIGlmIChpdGVtKSBjbGVhclRpbWVvdXQoaXRlbS50aW1lb3V0T2JqZWN0KTtcbiAgICByZXR1cm4gY291bnQ7XG4gIH07XG4gIHRpbWVvdXRPYmplY3QgPSBzZXRUaW1lb3V0KGNsZWFyLCB0aW1lb3V0KTtcbiAgY29uc3QgdGhyID0ge3RpbWVvdXRPYmplY3QsIGNsZWFyLCBjb3VudDogMH07XG4gIGFjdGlvbi5zZXQocGF0aCwgdGhyKTtcbiAgcmV0dXJuIHRocjtcbn1cblxuX2luY3JSZWFkeUNvdW50KCkge1xuICByZXR1cm4gdGhpcy5fcmVhZHlDb3VudCsrO1xufVxuXG4vKipcbiAqIEF3YWl0cyB3cml0ZSBvcGVyYXRpb24gdG8gZmluaXNoLlxuICogUG9sbHMgYSBuZXdseSBjcmVhdGVkIGZpbGUgZm9yIHNpemUgdmFyaWF0aW9ucy4gV2hlbiBmaWxlcyBzaXplIGRvZXMgbm90IGNoYW5nZSBmb3IgJ3RocmVzaG9sZCcgbWlsbGlzZWNvbmRzIGNhbGxzIGNhbGxiYWNrLlxuICogQHBhcmFtIHtQYXRofSBwYXRoIGJlaW5nIGFjdGVkIHVwb25cbiAqIEBwYXJhbSB7TnVtYmVyfSB0aHJlc2hvbGQgVGltZSBpbiBtaWxsaXNlY29uZHMgYSBmaWxlIHNpemUgbXVzdCBiZSBmaXhlZCBiZWZvcmUgYWNrbm93bGVkZ2luZyB3cml0ZSBPUCBpcyBmaW5pc2hlZFxuICogQHBhcmFtIHtFdmVudE5hbWV9IGV2ZW50XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBhd2ZFbWl0IENhbGxiYWNrIHRvIGJlIGNhbGxlZCB3aGVuIHJlYWR5IGZvciBldmVudCB0byBiZSBlbWl0dGVkLlxuICovXG5fYXdhaXRXcml0ZUZpbmlzaChwYXRoLCB0aHJlc2hvbGQsIGV2ZW50LCBhd2ZFbWl0KSB7XG4gIGxldCB0aW1lb3V0SGFuZGxlcjtcblxuICBsZXQgZnVsbFBhdGggPSBwYXRoO1xuICBpZiAodGhpcy5vcHRpb25zLmN3ZCAmJiAhc3lzUGF0aC5pc0Fic29sdXRlKHBhdGgpKSB7XG4gICAgZnVsbFBhdGggPSBzeXNQYXRoLmpvaW4odGhpcy5vcHRpb25zLmN3ZCwgcGF0aCk7XG4gIH1cblxuICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuXG4gIGNvbnN0IGF3YWl0V3JpdGVGaW5pc2ggPSAocHJldlN0YXQpID0+IHtcbiAgICBmcy5zdGF0KGZ1bGxQYXRoLCAoZXJyLCBjdXJTdGF0KSA9PiB7XG4gICAgICBpZiAoZXJyIHx8ICF0aGlzLl9wZW5kaW5nV3JpdGVzLmhhcyhwYXRoKSkge1xuICAgICAgICBpZiAoZXJyICYmIGVyci5jb2RlICE9PSAnRU5PRU5UJykgYXdmRW1pdChlcnIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5vdyA9IE51bWJlcihuZXcgRGF0ZSgpKTtcblxuICAgICAgaWYgKHByZXZTdGF0ICYmIGN1clN0YXQuc2l6ZSAhPT0gcHJldlN0YXQuc2l6ZSkge1xuICAgICAgICB0aGlzLl9wZW5kaW5nV3JpdGVzLmdldChwYXRoKS5sYXN0Q2hhbmdlID0gbm93O1xuICAgICAgfVxuICAgICAgY29uc3QgcHcgPSB0aGlzLl9wZW5kaW5nV3JpdGVzLmdldChwYXRoKTtcbiAgICAgIGNvbnN0IGRmID0gbm93IC0gcHcubGFzdENoYW5nZTtcblxuICAgICAgaWYgKGRmID49IHRocmVzaG9sZCkge1xuICAgICAgICB0aGlzLl9wZW5kaW5nV3JpdGVzLmRlbGV0ZShwYXRoKTtcbiAgICAgICAgYXdmRW1pdCh1bmRlZmluZWQsIGN1clN0YXQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGltZW91dEhhbmRsZXIgPSBzZXRUaW1lb3V0KFxuICAgICAgICAgIGF3YWl0V3JpdGVGaW5pc2gsXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmF3YWl0V3JpdGVGaW5pc2gucG9sbEludGVydmFsLFxuICAgICAgICAgIGN1clN0YXRcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICBpZiAoIXRoaXMuX3BlbmRpbmdXcml0ZXMuaGFzKHBhdGgpKSB7XG4gICAgdGhpcy5fcGVuZGluZ1dyaXRlcy5zZXQocGF0aCwge1xuICAgICAgbGFzdENoYW5nZTogbm93LFxuICAgICAgY2FuY2VsV2FpdDogKCkgPT4ge1xuICAgICAgICB0aGlzLl9wZW5kaW5nV3JpdGVzLmRlbGV0ZShwYXRoKTtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRIYW5kbGVyKTtcbiAgICAgICAgcmV0dXJuIGV2ZW50O1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRpbWVvdXRIYW5kbGVyID0gc2V0VGltZW91dChcbiAgICAgIGF3YWl0V3JpdGVGaW5pc2gsXG4gICAgICB0aGlzLm9wdGlvbnMuYXdhaXRXcml0ZUZpbmlzaC5wb2xsSW50ZXJ2YWxcbiAgICApO1xuICB9XG59XG5cbl9nZXRHbG9iSWdub3JlZCgpIHtcbiAgcmV0dXJuIFsuLi50aGlzLl9pZ25vcmVkUGF0aHMudmFsdWVzKCldO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB1c2VyIGhhcyBhc2tlZCB0byBpZ25vcmUgdGhpcyBwYXRoLlxuICogQHBhcmFtIHtQYXRofSBwYXRoIGZpbGVwYXRoIG9yIGRpclxuICogQHBhcmFtIHtmcy5TdGF0cz19IHN0YXRzIHJlc3VsdCBvZiBmcy5zdGF0XG4gKiBAcmV0dXJucyB7Qm9vbGVhbn1cbiAqL1xuX2lzSWdub3JlZChwYXRoLCBzdGF0cykge1xuICBpZiAodGhpcy5vcHRpb25zLmF0b21pYyAmJiBET1RfUkUudGVzdChwYXRoKSkgcmV0dXJuIHRydWU7XG4gIGlmICghdGhpcy5fdXNlcklnbm9yZWQpIHtcbiAgICBjb25zdCB7Y3dkfSA9IHRoaXMub3B0aW9ucztcbiAgICBjb25zdCBpZ24gPSB0aGlzLm9wdGlvbnMuaWdub3JlZDtcblxuICAgIGNvbnN0IGlnbm9yZWQgPSBpZ24gJiYgaWduLm1hcChub3JtYWxpemVJZ25vcmVkKGN3ZCkpO1xuICAgIGNvbnN0IHBhdGhzID0gYXJyaWZ5KGlnbm9yZWQpXG4gICAgICAuZmlsdGVyKChwYXRoKSA9PiB0eXBlb2YgcGF0aCA9PT0gU1RSSU5HX1RZUEUgJiYgIWlzR2xvYihwYXRoKSlcbiAgICAgIC5tYXAoKHBhdGgpID0+IHBhdGggKyBTTEFTSF9HTE9CU1RBUik7XG4gICAgY29uc3QgbGlzdCA9IHRoaXMuX2dldEdsb2JJZ25vcmVkKCkubWFwKG5vcm1hbGl6ZUlnbm9yZWQoY3dkKSkuY29uY2F0KGlnbm9yZWQsIHBhdGhzKTtcbiAgICB0aGlzLl91c2VySWdub3JlZCA9IGFueW1hdGNoKGxpc3QsIHVuZGVmaW5lZCwgQU5ZTUFUQ0hfT1BUUyk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5fdXNlcklnbm9yZWQoW3BhdGgsIHN0YXRzXSk7XG59XG5cbl9pc250SWdub3JlZChwYXRoLCBzdGF0KSB7XG4gIHJldHVybiAhdGhpcy5faXNJZ25vcmVkKHBhdGgsIHN0YXQpO1xufVxuXG4vKipcbiAqIFByb3ZpZGVzIGEgc2V0IG9mIGNvbW1vbiBoZWxwZXJzIGFuZCBwcm9wZXJ0aWVzIHJlbGF0aW5nIHRvIHN5bWxpbmsgYW5kIGdsb2IgaGFuZGxpbmcuXG4gKiBAcGFyYW0ge1BhdGh9IHBhdGggZmlsZSwgZGlyZWN0b3J5LCBvciBnbG9iIHBhdHRlcm4gYmVpbmcgd2F0Y2hlZFxuICogQHBhcmFtIHtOdW1iZXI9fSBkZXB0aCBhdCBhbnkgZGVwdGggPiAwLCB0aGlzIGlzbid0IGEgZ2xvYlxuICogQHJldHVybnMge1dhdGNoSGVscGVyfSBvYmplY3QgY29udGFpbmluZyBoZWxwZXJzIGZvciB0aGlzIHBhdGhcbiAqL1xuX2dldFdhdGNoSGVscGVycyhwYXRoLCBkZXB0aCkge1xuICBjb25zdCB3YXRjaFBhdGggPSBkZXB0aCB8fCB0aGlzLm9wdGlvbnMuZGlzYWJsZUdsb2JiaW5nIHx8ICFpc0dsb2IocGF0aCkgPyBwYXRoIDogZ2xvYlBhcmVudChwYXRoKTtcbiAgY29uc3QgZm9sbG93ID0gdGhpcy5vcHRpb25zLmZvbGxvd1N5bWxpbmtzO1xuXG4gIHJldHVybiBuZXcgV2F0Y2hIZWxwZXIocGF0aCwgd2F0Y2hQYXRoLCBmb2xsb3csIHRoaXMpO1xufVxuXG4vLyBEaXJlY3RvcnkgaGVscGVyc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBQcm92aWRlcyBkaXJlY3RvcnkgdHJhY2tpbmcgb2JqZWN0c1xuICogQHBhcmFtIHtTdHJpbmd9IGRpcmVjdG9yeSBwYXRoIG9mIHRoZSBkaXJlY3RvcnlcbiAqIEByZXR1cm5zIHtEaXJFbnRyeX0gdGhlIGRpcmVjdG9yeSdzIHRyYWNraW5nIG9iamVjdFxuICovXG5fZ2V0V2F0Y2hlZERpcihkaXJlY3RvcnkpIHtcbiAgaWYgKCF0aGlzLl9ib3VuZFJlbW92ZSkgdGhpcy5fYm91bmRSZW1vdmUgPSB0aGlzLl9yZW1vdmUuYmluZCh0aGlzKTtcbiAgY29uc3QgZGlyID0gc3lzUGF0aC5yZXNvbHZlKGRpcmVjdG9yeSk7XG4gIGlmICghdGhpcy5fd2F0Y2hlZC5oYXMoZGlyKSkgdGhpcy5fd2F0Y2hlZC5zZXQoZGlyLCBuZXcgRGlyRW50cnkoZGlyLCB0aGlzLl9ib3VuZFJlbW92ZSkpO1xuICByZXR1cm4gdGhpcy5fd2F0Y2hlZC5nZXQoZGlyKTtcbn1cblxuLy8gRmlsZSBoZWxwZXJzXG4vLyAtLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBDaGVjayBmb3IgcmVhZCBwZXJtaXNzaW9ucy5cbiAqIEJhc2VkIG9uIHRoaXMgYW5zd2VyIG9uIFNPOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTE3ODE0MDQvMTM1ODQwNVxuICogQHBhcmFtIHtmcy5TdGF0c30gc3RhdHMgLSBvYmplY3QsIHJlc3VsdCBvZiBmc19zdGF0XG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGZpbGUgY2FuIGJlIHJlYWRcbiovXG5faGFzUmVhZFBlcm1pc3Npb25zKHN0YXRzKSB7XG4gIGlmICh0aGlzLm9wdGlvbnMuaWdub3JlUGVybWlzc2lvbkVycm9ycykgcmV0dXJuIHRydWU7XG5cbiAgLy8gc3RhdHMubW9kZSBtYXkgYmUgYmlnaW50XG4gIGNvbnN0IG1kID0gc3RhdHMgJiYgTnVtYmVyLnBhcnNlSW50KHN0YXRzLm1vZGUsIDEwKTtcbiAgY29uc3Qgc3QgPSBtZCAmIDBvNzc3O1xuICBjb25zdCBpdCA9IE51bWJlci5wYXJzZUludChzdC50b1N0cmluZyg4KVswXSwgMTApO1xuICByZXR1cm4gQm9vbGVhbig0ICYgaXQpO1xufVxuXG4vKipcbiAqIEhhbmRsZXMgZW1pdHRpbmcgdW5saW5rIGV2ZW50cyBmb3JcbiAqIGZpbGVzIGFuZCBkaXJlY3RvcmllcywgYW5kIHZpYSByZWN1cnNpb24sIGZvclxuICogZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHdpdGhpbiBkaXJlY3RvcmllcyB0aGF0IGFyZSB1bmxpbmtlZFxuICogQHBhcmFtIHtTdHJpbmd9IGRpcmVjdG9yeSB3aXRoaW4gd2hpY2ggdGhlIGZvbGxvd2luZyBpdGVtIGlzIGxvY2F0ZWRcbiAqIEBwYXJhbSB7U3RyaW5nfSBpdGVtICAgICAgYmFzZSBwYXRoIG9mIGl0ZW0vZGlyZWN0b3J5XG4gKiBAcmV0dXJucyB7dm9pZH1cbiovXG5fcmVtb3ZlKGRpcmVjdG9yeSwgaXRlbSwgaXNEaXJlY3RvcnkpIHtcbiAgLy8gaWYgd2hhdCBpcyBiZWluZyBkZWxldGVkIGlzIGEgZGlyZWN0b3J5LCBnZXQgdGhhdCBkaXJlY3RvcnkncyBwYXRoc1xuICAvLyBmb3IgcmVjdXJzaXZlIGRlbGV0aW5nIGFuZCBjbGVhbmluZyBvZiB3YXRjaGVkIG9iamVjdFxuICAvLyBpZiBpdCBpcyBub3QgYSBkaXJlY3RvcnksIG5lc3RlZERpcmVjdG9yeUNoaWxkcmVuIHdpbGwgYmUgZW1wdHkgYXJyYXlcbiAgY29uc3QgcGF0aCA9IHN5c1BhdGguam9pbihkaXJlY3RvcnksIGl0ZW0pO1xuICBjb25zdCBmdWxsUGF0aCA9IHN5c1BhdGgucmVzb2x2ZShwYXRoKTtcbiAgaXNEaXJlY3RvcnkgPSBpc0RpcmVjdG9yeSAhPSBudWxsXG4gICAgPyBpc0RpcmVjdG9yeVxuICAgIDogdGhpcy5fd2F0Y2hlZC5oYXMocGF0aCkgfHwgdGhpcy5fd2F0Y2hlZC5oYXMoZnVsbFBhdGgpO1xuXG4gIC8vIHByZXZlbnQgZHVwbGljYXRlIGhhbmRsaW5nIGluIGNhc2Ugb2YgYXJyaXZpbmcgaGVyZSBuZWFybHkgc2ltdWx0YW5lb3VzbHlcbiAgLy8gdmlhIG11bHRpcGxlIHBhdGhzIChzdWNoIGFzIF9oYW5kbGVGaWxlIGFuZCBfaGFuZGxlRGlyKVxuICBpZiAoIXRoaXMuX3Rocm90dGxlKCdyZW1vdmUnLCBwYXRoLCAxMDApKSByZXR1cm47XG5cbiAgLy8gaWYgdGhlIG9ubHkgd2F0Y2hlZCBmaWxlIGlzIHJlbW92ZWQsIHdhdGNoIGZvciBpdHMgcmV0dXJuXG4gIGlmICghaXNEaXJlY3RvcnkgJiYgIXRoaXMub3B0aW9ucy51c2VGc0V2ZW50cyAmJiB0aGlzLl93YXRjaGVkLnNpemUgPT09IDEpIHtcbiAgICB0aGlzLmFkZChkaXJlY3RvcnksIGl0ZW0sIHRydWUpO1xuICB9XG5cbiAgLy8gVGhpcyB3aWxsIGNyZWF0ZSBhIG5ldyBlbnRyeSBpbiB0aGUgd2F0Y2hlZCBvYmplY3QgaW4gZWl0aGVyIGNhc2VcbiAgLy8gc28gd2UgZ290IHRvIGRvIHRoZSBkaXJlY3RvcnkgY2hlY2sgYmVmb3JlaGFuZFxuICBjb25zdCB3cCA9IHRoaXMuX2dldFdhdGNoZWREaXIocGF0aCk7XG4gIGNvbnN0IG5lc3RlZERpcmVjdG9yeUNoaWxkcmVuID0gd3AuZ2V0Q2hpbGRyZW4oKTtcblxuICAvLyBSZWN1cnNpdmVseSByZW1vdmUgY2hpbGRyZW4gZGlyZWN0b3JpZXMgLyBmaWxlcy5cbiAgbmVzdGVkRGlyZWN0b3J5Q2hpbGRyZW4uZm9yRWFjaChuZXN0ZWQgPT4gdGhpcy5fcmVtb3ZlKHBhdGgsIG5lc3RlZCkpO1xuXG4gIC8vIENoZWNrIGlmIGl0ZW0gd2FzIG9uIHRoZSB3YXRjaGVkIGxpc3QgYW5kIHJlbW92ZSBpdFxuICBjb25zdCBwYXJlbnQgPSB0aGlzLl9nZXRXYXRjaGVkRGlyKGRpcmVjdG9yeSk7XG4gIGNvbnN0IHdhc1RyYWNrZWQgPSBwYXJlbnQuaGFzKGl0ZW0pO1xuICBwYXJlbnQucmVtb3ZlKGl0ZW0pO1xuXG4gIC8vIEZpeGVzIGlzc3VlICMxMDQyIC0+IFJlbGF0aXZlIHBhdGhzIHdlcmUgZGV0ZWN0ZWQgYW5kIGFkZGVkIGFzIHN5bWxpbmtzXG4gIC8vIChodHRwczovL2dpdGh1Yi5jb20vcGF1bG1pbGxyL2Nob2tpZGFyL2Jsb2IvZTE3NTNkZGJjOTU3MWJkYzMzYjRhNGFmMTcyZDUyY2I2ZTYxMWMxMC9saWIvbm9kZWZzLWhhbmRsZXIuanMjTDYxMiksXG4gIC8vIGJ1dCBuZXZlciByZW1vdmVkIGZyb20gdGhlIG1hcCBpbiBjYXNlIHRoZSBwYXRoIHdhcyBkZWxldGVkLlxuICAvLyBUaGlzIGxlYWRzIHRvIGFuIGluY29ycmVjdCBzdGF0ZSBpZiB0aGUgcGF0aCB3YXMgcmVjcmVhdGVkOlxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vcGF1bG1pbGxyL2Nob2tpZGFyL2Jsb2IvZTE3NTNkZGJjOTU3MWJkYzMzYjRhNGFmMTcyZDUyY2I2ZTYxMWMxMC9saWIvbm9kZWZzLWhhbmRsZXIuanMjTDU1M1xuICBpZiAodGhpcy5fc3ltbGlua1BhdGhzLmhhcyhmdWxsUGF0aCkpIHtcbiAgICB0aGlzLl9zeW1saW5rUGF0aHMuZGVsZXRlKGZ1bGxQYXRoKTtcbiAgfVxuXG4gIC8vIElmIHdlIHdhaXQgZm9yIHRoaXMgZmlsZSB0byBiZSBmdWxseSB3cml0dGVuLCBjYW5jZWwgdGhlIHdhaXQuXG4gIGxldCByZWxQYXRoID0gcGF0aDtcbiAgaWYgKHRoaXMub3B0aW9ucy5jd2QpIHJlbFBhdGggPSBzeXNQYXRoLnJlbGF0aXZlKHRoaXMub3B0aW9ucy5jd2QsIHBhdGgpO1xuICBpZiAodGhpcy5vcHRpb25zLmF3YWl0V3JpdGVGaW5pc2ggJiYgdGhpcy5fcGVuZGluZ1dyaXRlcy5oYXMocmVsUGF0aCkpIHtcbiAgICBjb25zdCBldmVudCA9IHRoaXMuX3BlbmRpbmdXcml0ZXMuZ2V0KHJlbFBhdGgpLmNhbmNlbFdhaXQoKTtcbiAgICBpZiAoZXZlbnQgPT09IEVWX0FERCkgcmV0dXJuO1xuICB9XG5cbiAgLy8gVGhlIEVudHJ5IHdpbGwgZWl0aGVyIGJlIGEgZGlyZWN0b3J5IHRoYXQganVzdCBnb3QgcmVtb3ZlZFxuICAvLyBvciBhIGJvZ3VzIGVudHJ5IHRvIGEgZmlsZSwgaW4gZWl0aGVyIGNhc2Ugd2UgaGF2ZSB0byByZW1vdmUgaXRcbiAgdGhpcy5fd2F0Y2hlZC5kZWxldGUocGF0aCk7XG4gIHRoaXMuX3dhdGNoZWQuZGVsZXRlKGZ1bGxQYXRoKTtcbiAgY29uc3QgZXZlbnROYW1lID0gaXNEaXJlY3RvcnkgPyBFVl9VTkxJTktfRElSIDogRVZfVU5MSU5LO1xuICBpZiAod2FzVHJhY2tlZCAmJiAhdGhpcy5faXNJZ25vcmVkKHBhdGgpKSB0aGlzLl9lbWl0KGV2ZW50TmFtZSwgcGF0aCk7XG5cbiAgLy8gQXZvaWQgY29uZmxpY3RzIGlmIHdlIGxhdGVyIGNyZWF0ZSBhbm90aGVyIGZpbGUgd2l0aCB0aGUgc2FtZSBuYW1lXG4gIGlmICghdGhpcy5vcHRpb25zLnVzZUZzRXZlbnRzKSB7XG4gICAgdGhpcy5fY2xvc2VQYXRoKHBhdGgpO1xuICB9XG59XG5cbi8qKlxuICogQ2xvc2VzIGFsbCB3YXRjaGVycyBmb3IgYSBwYXRoXG4gKiBAcGFyYW0ge1BhdGh9IHBhdGhcbiAqL1xuX2Nsb3NlUGF0aChwYXRoKSB7XG4gIHRoaXMuX2Nsb3NlRmlsZShwYXRoKVxuICBjb25zdCBkaXIgPSBzeXNQYXRoLmRpcm5hbWUocGF0aCk7XG4gIHRoaXMuX2dldFdhdGNoZWREaXIoZGlyKS5yZW1vdmUoc3lzUGF0aC5iYXNlbmFtZShwYXRoKSk7XG59XG5cbi8qKlxuICogQ2xvc2VzIG9ubHkgZmlsZS1zcGVjaWZpYyB3YXRjaGVyc1xuICogQHBhcmFtIHtQYXRofSBwYXRoXG4gKi9cbl9jbG9zZUZpbGUocGF0aCkge1xuICBjb25zdCBjbG9zZXJzID0gdGhpcy5fY2xvc2Vycy5nZXQocGF0aCk7XG4gIGlmICghY2xvc2VycykgcmV0dXJuO1xuICBjbG9zZXJzLmZvckVhY2goY2xvc2VyID0+IGNsb3NlcigpKTtcbiAgdGhpcy5fY2xvc2Vycy5kZWxldGUocGF0aCk7XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB7UGF0aH0gcGF0aFxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2xvc2VyXG4gKi9cbl9hZGRQYXRoQ2xvc2VyKHBhdGgsIGNsb3Nlcikge1xuICBpZiAoIWNsb3NlcikgcmV0dXJuO1xuICBsZXQgbGlzdCA9IHRoaXMuX2Nsb3NlcnMuZ2V0KHBhdGgpO1xuICBpZiAoIWxpc3QpIHtcbiAgICBsaXN0ID0gW107XG4gICAgdGhpcy5fY2xvc2Vycy5zZXQocGF0aCwgbGlzdCk7XG4gIH1cbiAgbGlzdC5wdXNoKGNsb3Nlcik7XG59XG5cbl9yZWFkZGlycChyb290LCBvcHRzKSB7XG4gIGlmICh0aGlzLmNsb3NlZCkgcmV0dXJuO1xuICBjb25zdCBvcHRpb25zID0ge3R5cGU6IEVWX0FMTCwgYWx3YXlzU3RhdDogdHJ1ZSwgbHN0YXQ6IHRydWUsIC4uLm9wdHN9O1xuICBsZXQgc3RyZWFtID0gcmVhZGRpcnAocm9vdCwgb3B0aW9ucyk7XG4gIHRoaXMuX3N0cmVhbXMuYWRkKHN0cmVhbSk7XG4gIHN0cmVhbS5vbmNlKFNUUl9DTE9TRSwgKCkgPT4ge1xuICAgIHN0cmVhbSA9IHVuZGVmaW5lZDtcbiAgfSk7XG4gIHN0cmVhbS5vbmNlKFNUUl9FTkQsICgpID0+IHtcbiAgICBpZiAoc3RyZWFtKSB7XG4gICAgICB0aGlzLl9zdHJlYW1zLmRlbGV0ZShzdHJlYW0pO1xuICAgICAgc3RyZWFtID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBzdHJlYW07XG59XG5cbn1cblxuLy8gRXhwb3J0IEZTV2F0Y2hlciBjbGFzc1xuZXhwb3J0cy5GU1dhdGNoZXIgPSBGU1dhdGNoZXI7XG5cbi8qKlxuICogSW5zdGFudGlhdGVzIHdhdGNoZXIgd2l0aCBwYXRocyB0byBiZSB0cmFja2VkLlxuICogQHBhcmFtIHtTdHJpbmd8QXJyYXk8U3RyaW5nPn0gcGF0aHMgZmlsZS9kaXJlY3RvcnkgcGF0aHMgYW5kL29yIGdsb2JzXG4gKiBAcGFyYW0ge09iamVjdD19IG9wdGlvbnMgY2hva2lkYXIgb3B0c1xuICogQHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgRlNXYXRjaGVyIGZvciBjaGFpbmluZy5cbiAqL1xuY29uc3Qgd2F0Y2ggPSAocGF0aHMsIG9wdGlvbnMpID0+IHtcbiAgY29uc3Qgd2F0Y2hlciA9IG5ldyBGU1dhdGNoZXIob3B0aW9ucyk7XG4gIHdhdGNoZXIuYWRkKHBhdGhzKTtcbiAgcmV0dXJuIHdhdGNoZXI7XG59O1xuXG5leHBvcnRzLndhdGNoID0gd2F0Y2g7XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzLmV4dGVuZCA9IGV4dGVuZDtcbmV4cG9ydHMuaW5kZXhPZiA9IGluZGV4T2Y7XG5leHBvcnRzLmVzY2FwZUV4cHJlc3Npb24gPSBlc2NhcGVFeHByZXNzaW9uO1xuZXhwb3J0cy5pc0VtcHR5ID0gaXNFbXB0eTtcbmV4cG9ydHMuY3JlYXRlRnJhbWUgPSBjcmVhdGVGcmFtZTtcbmV4cG9ydHMuYmxvY2tQYXJhbXMgPSBibG9ja1BhcmFtcztcbmV4cG9ydHMuYXBwZW5kQ29udGV4dFBhdGggPSBhcHBlbmRDb250ZXh0UGF0aDtcbnZhciBlc2NhcGUgPSB7XG4gICcmJzogJyZhbXA7JyxcbiAgJzwnOiAnJmx0OycsXG4gICc+JzogJyZndDsnLFxuICAnXCInOiAnJnF1b3Q7JyxcbiAgXCInXCI6ICcmI3gyNzsnLFxuICAnYCc6ICcmI3g2MDsnLFxuICAnPSc6ICcmI3gzRDsnXG59O1xuXG52YXIgYmFkQ2hhcnMgPSAvWyY8PlwiJ2A9XS9nLFxuICAgIHBvc3NpYmxlID0gL1smPD5cIidgPV0vO1xuXG5mdW5jdGlvbiBlc2NhcGVDaGFyKGNocikge1xuICByZXR1cm4gZXNjYXBlW2Nocl07XG59XG5cbmZ1bmN0aW9uIGV4dGVuZChvYmogLyogLCAuLi5zb3VyY2UgKi8pIHtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gYXJndW1lbnRzW2ldKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGFyZ3VtZW50c1tpXSwga2V5KSkge1xuICAgICAgICBvYmpba2V5XSA9IGFyZ3VtZW50c1tpXVtrZXldO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvYmo7XG59XG5cbnZhciB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbmV4cG9ydHMudG9TdHJpbmcgPSB0b1N0cmluZztcbi8vIFNvdXJjZWQgZnJvbSBsb2Rhc2hcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iZXN0aWVqcy9sb2Rhc2gvYmxvYi9tYXN0ZXIvTElDRU5TRS50eHRcbi8qIGVzbGludC1kaXNhYmxlIGZ1bmMtc3R5bGUgKi9cbnZhciBpc0Z1bmN0aW9uID0gZnVuY3Rpb24gaXNGdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nO1xufTtcbi8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9ucyBvZiBDaHJvbWUgYW5kIFNhZmFyaVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmlmIChpc0Z1bmN0aW9uKC94LykpIHtcbiAgZXhwb3J0cy5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbiA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgJiYgdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG4gIH07XG59XG5leHBvcnRzLmlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uO1xuXG4vKiBlc2xpbnQtZW5hYmxlIGZ1bmMtc3R5bGUgKi9cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbnZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgPyB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgQXJyYXldJyA6IGZhbHNlO1xufTtcblxuZXhwb3J0cy5pc0FycmF5ID0gaXNBcnJheTtcbi8vIE9sZGVyIElFIHZlcnNpb25zIGRvIG5vdCBkaXJlY3RseSBzdXBwb3J0IGluZGV4T2Ygc28gd2UgbXVzdCBpbXBsZW1lbnQgb3VyIG93biwgc2FkbHkuXG5cbmZ1bmN0aW9uIGluZGV4T2YoYXJyYXksIHZhbHVlKSB7XG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBhcnJheS5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChhcnJheVtpXSA9PT0gdmFsdWUpIHtcbiAgICAgIHJldHVybiBpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59XG5cbmZ1bmN0aW9uIGVzY2FwZUV4cHJlc3Npb24oc3RyaW5nKSB7XG4gIGlmICh0eXBlb2Ygc3RyaW5nICE9PSAnc3RyaW5nJykge1xuICAgIC8vIGRvbid0IGVzY2FwZSBTYWZlU3RyaW5ncywgc2luY2UgdGhleSdyZSBhbHJlYWR5IHNhZmVcbiAgICBpZiAoc3RyaW5nICYmIHN0cmluZy50b0hUTUwpIHtcbiAgICAgIHJldHVybiBzdHJpbmcudG9IVE1MKCk7XG4gICAgfSBlbHNlIGlmIChzdHJpbmcgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH0gZWxzZSBpZiAoIXN0cmluZykge1xuICAgICAgcmV0dXJuIHN0cmluZyArICcnO1xuICAgIH1cblxuICAgIC8vIEZvcmNlIGEgc3RyaW5nIGNvbnZlcnNpb24gYXMgdGhpcyB3aWxsIGJlIGRvbmUgYnkgdGhlIGFwcGVuZCByZWdhcmRsZXNzIGFuZFxuICAgIC8vIHRoZSByZWdleCB0ZXN0IHdpbGwgZG8gdGhpcyB0cmFuc3BhcmVudGx5IGJlaGluZCB0aGUgc2NlbmVzLCBjYXVzaW5nIGlzc3VlcyBpZlxuICAgIC8vIGFuIG9iamVjdCdzIHRvIHN0cmluZyBoYXMgZXNjYXBlZCBjaGFyYWN0ZXJzIGluIGl0LlxuICAgIHN0cmluZyA9ICcnICsgc3RyaW5nO1xuICB9XG5cbiAgaWYgKCFwb3NzaWJsZS50ZXN0KHN0cmluZykpIHtcbiAgICByZXR1cm4gc3RyaW5nO1xuICB9XG4gIHJldHVybiBzdHJpbmcucmVwbGFjZShiYWRDaGFycywgZXNjYXBlQ2hhcik7XG59XG5cbmZ1bmN0aW9uIGlzRW1wdHkodmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSAmJiB2YWx1ZSAhPT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2UgaWYgKGlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVGcmFtZShvYmplY3QpIHtcbiAgdmFyIGZyYW1lID0gZXh0ZW5kKHt9LCBvYmplY3QpO1xuICBmcmFtZS5fcGFyZW50ID0gb2JqZWN0O1xuICByZXR1cm4gZnJhbWU7XG59XG5cbmZ1bmN0aW9uIGJsb2NrUGFyYW1zKHBhcmFtcywgaWRzKSB7XG4gIHBhcmFtcy5wYXRoID0gaWRzO1xuICByZXR1cm4gcGFyYW1zO1xufVxuXG5mdW5jdGlvbiBhcHBlbmRDb250ZXh0UGF0aChjb250ZXh0UGF0aCwgaWQpIHtcbiAgcmV0dXJuIChjb250ZXh0UGF0aCA/IGNvbnRleHRQYXRoICsgJy4nIDogJycpICsgaWQ7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwzVjBhV3h6TG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN096czdPenM3T3pzN1FVRkJRU3hKUVVGTkxFMUJRVTBzUjBGQlJ6dEJRVU5pTEV0QlFVY3NSVUZCUlN4UFFVRlBPMEZCUTFvc1MwRkJSeXhGUVVGRkxFMUJRVTA3UVVGRFdDeExRVUZITEVWQlFVVXNUVUZCVFR0QlFVTllMRXRCUVVjc1JVRkJSU3hSUVVGUk8wRkJRMklzUzBGQlJ5eEZRVUZGTEZGQlFWRTdRVUZEWWl4TFFVRkhMRVZCUVVVc1VVRkJVVHRCUVVOaUxFdEJRVWNzUlVGQlJTeFJRVUZSTzBOQlEyUXNRMEZCUXpzN1FVRkZSaXhKUVVGTkxGRkJRVkVzUjBGQlJ5eFpRVUZaTzBsQlF6TkNMRkZCUVZFc1IwRkJSeXhYUVVGWExFTkJRVU03TzBGQlJYcENMRk5CUVZNc1ZVRkJWU3hEUVVGRExFZEJRVWNzUlVGQlJUdEJRVU4yUWl4VFFVRlBMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dERRVU53UWpzN1FVRkZUU3hUUVVGVExFMUJRVTBzUTBGQlF5eEhRVUZITEc5Q1FVRnZRanRCUVVNMVF5eFBRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzVTBGQlV5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRCUVVONlF5eFRRVUZMTEVsQlFVa3NSMEZCUnl4SlFVRkpMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJUdEJRVU0xUWl4VlFVRkpMRTFCUVUwc1EwRkJReXhUUVVGVExFTkJRVU1zWTBGQll5eERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVTdRVUZETTBRc1YwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFBRVU01UWp0TFFVTkdPMGRCUTBZN08wRkJSVVFzVTBGQlR5eEhRVUZITEVOQlFVTTdRMEZEV2pzN1FVRkZUU3hKUVVGSkxGRkJRVkVzUjBGQlJ5eE5RVUZOTEVOQlFVTXNVMEZCVXl4RFFVRkRMRkZCUVZFc1EwRkJRenM3T3pzN08wRkJTMmhFTEVsQlFVa3NWVUZCVlN4SFFVRkhMRzlDUVVGVExFdEJRVXNzUlVGQlJUdEJRVU12UWl4VFFVRlBMRTlCUVU4c1MwRkJTeXhMUVVGTExGVkJRVlVzUTBGQlF6dERRVU53UXl4RFFVRkRPenM3UVVGSFJpeEpRVUZKTEZWQlFWVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSVHRCUVVOdVFpeFZRVTlQTEZWQlFWVXNSMEZRYWtJc1ZVRkJWU3hIUVVGSExGVkJRVk1zUzBGQlN5eEZRVUZGTzBGQlF6TkNMRmRCUTBVc1QwRkJUeXhMUVVGTExFdEJRVXNzVlVGQlZTeEpRVU16UWl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEcxQ1FVRnRRaXhEUVVNMVF6dEhRVU5JTEVOQlFVTTdRMEZEU0R0UlFVTlJMRlZCUVZVc1IwRkJWaXhWUVVGVk96czdPenRCUVVsYUxFbEJRVTBzVDBGQlR5eEhRVU5zUWl4TFFVRkxMRU5CUVVNc1QwRkJUeXhKUVVOaUxGVkJRVk1zUzBGQlN5eEZRVUZGTzBGQlEyUXNVMEZCVHl4TFFVRkxMRWxCUVVrc1QwRkJUeXhMUVVGTExFdEJRVXNzVVVGQlVTeEhRVU55UXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEdkQ1FVRm5RaXhIUVVONlF5eExRVUZMTEVOQlFVTTdRMEZEV0N4RFFVRkRPenM3T3p0QlFVZEhMRk5CUVZNc1QwRkJUeXhEUVVGRExFdEJRVXNzUlVGQlJTeExRVUZMTEVWQlFVVTdRVUZEY0VNc1QwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSMEZCUnl4SFFVRkhMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEhRVUZITEVkQlFVY3NSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRCUVVOb1JDeFJRVUZKTEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhMUVVGTExFVkJRVVU3UVVGRGRFSXNZVUZCVHl4RFFVRkRMRU5CUVVNN1MwRkRWanRIUVVOR08wRkJRMFFzVTBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXp0RFFVTllPenRCUVVWTkxGTkJRVk1zWjBKQlFXZENMRU5CUVVNc1RVRkJUU3hGUVVGRk8wRkJRM1pETEUxQlFVa3NUMEZCVHl4TlFVRk5MRXRCUVVzc1VVRkJVU3hGUVVGRk96dEJRVVU1UWl4UlFVRkpMRTFCUVUwc1NVRkJTU3hOUVVGTkxFTkJRVU1zVFVGQlRTeEZRVUZGTzBGQlF6TkNMR0ZCUVU4c1RVRkJUU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETzB0QlEzaENMRTFCUVUwc1NVRkJTU3hOUVVGTkxFbEJRVWtzU1VGQlNTeEZRVUZGTzBGQlEzcENMR0ZCUVU4c1JVRkJSU3hEUVVGRE8wdEJRMWdzVFVGQlRTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZPMEZCUTJ4Q0xHRkJRVThzVFVGQlRTeEhRVUZITEVWQlFVVXNRMEZCUXp0TFFVTndRanM3T3pzN1FVRkxSQ3hWUVVGTkxFZEJRVWNzUlVGQlJTeEhRVUZITEUxQlFVMHNRMEZCUXp0SFFVTjBRanM3UVVGRlJDeE5RVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJUdEJRVU14UWl4WFFVRlBMRTFCUVUwc1EwRkJRenRIUVVObU8wRkJRMFFzVTBGQlR5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRkZCUVZFc1JVRkJSU3hWUVVGVkxFTkJRVU1zUTBGQlF6dERRVU0zUXpzN1FVRkZUU3hUUVVGVExFOUJRVThzUTBGQlF5eExRVUZMTEVWQlFVVTdRVUZETjBJc1RVRkJTU3hEUVVGRExFdEJRVXNzU1VGQlNTeExRVUZMTEV0QlFVc3NRMEZCUXl4RlFVRkZPMEZCUTNwQ0xGZEJRVThzU1VGQlNTeERRVUZETzBkQlEySXNUVUZCVFN4SlFVRkpMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeExRVUZMTEVOQlFVTXNUVUZCVFN4TFFVRkxMRU5CUVVNc1JVRkJSVHRCUVVNdlF5eFhRVUZQTEVsQlFVa3NRMEZCUXp0SFFVTmlMRTFCUVUwN1FVRkRUQ3hYUVVGUExFdEJRVXNzUTBGQlF6dEhRVU5rTzBOQlEwWTdPMEZCUlUwc1UwRkJVeXhYUVVGWExFTkJRVU1zVFVGQlRTeEZRVUZGTzBGQlEyeERMRTFCUVVrc1MwRkJTeXhIUVVGSExFMUJRVTBzUTBGQlF5eEZRVUZGTEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUVVNN1FVRkRMMElzVDBGQlN5eERRVUZETEU5QlFVOHNSMEZCUnl4TlFVRk5MRU5CUVVNN1FVRkRka0lzVTBGQlR5eExRVUZMTEVOQlFVTTdRMEZEWkRzN1FVRkZUU3hUUVVGVExGZEJRVmNzUTBGQlF5eE5RVUZOTEVWQlFVVXNSMEZCUnl4RlFVRkZPMEZCUTNaRExGRkJRVTBzUTBGQlF5eEpRVUZKTEVkQlFVY3NSMEZCUnl4RFFVRkRPMEZCUTJ4Q0xGTkJRVThzVFVGQlRTeERRVUZETzBOQlEyWTdPMEZCUlUwc1UwRkJVeXhwUWtGQmFVSXNRMEZCUXl4WFFVRlhMRVZCUVVVc1JVRkJSU3hGUVVGRk8wRkJRMnBFTEZOQlFVOHNRMEZCUXl4WFFVRlhMRWRCUVVjc1YwRkJWeXhIUVVGSExFZEJRVWNzUjBGQlJ5eEZRVUZGTEVOQlFVRXNSMEZCU1N4RlFVRkZMRU5CUVVNN1EwRkRjRVFpTENKbWFXeGxJam9pZFhScGJITXVhbk1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKamIyNXpkQ0JsYzJOaGNHVWdQU0I3WEc0Z0lDY21Kem9nSnlaaGJYQTdKeXhjYmlBZ0p6d25PaUFuSm14ME95Y3NYRzRnSUNjK0p6b2dKeVpuZERzbkxGeHVJQ0FuWENJbk9pQW5KbkYxYjNRN0p5eGNiaUFnWENJblhDSTZJQ2NtSTNneU56c25MRnh1SUNBbllDYzZJQ2NtSTNnMk1Ec25MRnh1SUNBblBTYzZJQ2NtSTNnelJEc25YRzU5TzF4dVhHNWpiMjV6ZENCaVlXUkRhR0Z5Y3lBOUlDOWJKancrWENJbllEMWRMMmNzWEc0Z0lIQnZjM05wWW14bElEMGdMMXNtUEQ1Y0lpZGdQVjB2TzF4dVhHNW1kVzVqZEdsdmJpQmxjMk5oY0dWRGFHRnlLR05vY2lrZ2UxeHVJQ0J5WlhSMWNtNGdaWE5qWVhCbFcyTm9jbDA3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmxlSFJsYm1Rb2IySnFJQzhxSUN3Z0xpNHVjMjkxY21ObElDb3ZLU0I3WEc0Z0lHWnZjaUFvYkdWMElHa2dQU0F4T3lCcElEd2dZWEpuZFcxbGJuUnpMbXhsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnWm05eUlDaHNaWFFnYTJWNUlHbHVJR0Z5WjNWdFpXNTBjMXRwWFNrZ2UxeHVJQ0FnSUNBZ2FXWWdLRTlpYW1WamRDNXdjbTkwYjNSNWNHVXVhR0Z6VDNkdVVISnZjR1Z5ZEhrdVkyRnNiQ2hoY21kMWJXVnVkSE5iYVYwc0lHdGxlU2twSUh0Y2JpQWdJQ0FnSUNBZ2IySnFXMnRsZVYwZ1BTQmhjbWQxYldWdWRITmJhVjFiYTJWNVhUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQnlaWFIxY200Z2IySnFPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ2JHVjBJSFJ2VTNSeWFXNW5JRDBnVDJKcVpXTjBMbkJ5YjNSdmRIbHdaUzUwYjFOMGNtbHVaenRjYmx4dUx5OGdVMjkxY21ObFpDQm1jbTl0SUd4dlpHRnphRnh1THk4Z2FIUjBjSE02THk5bmFYUm9kV0l1WTI5dEwySmxjM1JwWldwekwyeHZaR0Z6YUM5aWJHOWlMMjFoYzNSbGNpOU1TVU5GVGxORkxuUjRkRnh1THlvZ1pYTnNhVzUwTFdScGMyRmliR1VnWm5WdVl5MXpkSGxzWlNBcUwxeHViR1YwSUdselJuVnVZM1JwYjI0Z1BTQm1kVzVqZEdsdmJpaDJZV3gxWlNrZ2UxeHVJQ0J5WlhSMWNtNGdkSGx3Wlc5bUlIWmhiSFZsSUQwOVBTQW5ablZ1WTNScGIyNG5PMXh1ZlR0Y2JpOHZJR1poYkd4aVlXTnJJR1p2Y2lCdmJHUmxjaUIyWlhKemFXOXVjeUJ2WmlCRGFISnZiV1VnWVc1a0lGTmhabUZ5YVZ4dUx5b2dhWE4wWVc1aWRXd2dhV2R1YjNKbElHNWxlSFFnS2k5Y2JtbG1JQ2hwYzBaMWJtTjBhVzl1S0M5NEx5a3BJSHRjYmlBZ2FYTkdkVzVqZEdsdmJpQTlJR1oxYm1OMGFXOXVLSFpoYkhWbEtTQjdYRzRnSUNBZ2NtVjBkWEp1SUNoY2JpQWdJQ0FnSUhSNWNHVnZaaUIyWVd4MVpTQTlQVDBnSjJaMWJtTjBhVzl1SnlBbUpseHVJQ0FnSUNBZ2RHOVRkSEpwYm1jdVkyRnNiQ2gyWVd4MVpTa2dQVDA5SUNkYmIySnFaV04wSUVaMWJtTjBhVzl1WFNkY2JpQWdJQ0FwTzF4dUlDQjlPMXh1ZlZ4dVpYaHdiM0owSUhzZ2FYTkdkVzVqZEdsdmJpQjlPMXh1THlvZ1pYTnNhVzUwTFdWdVlXSnNaU0JtZFc1akxYTjBlV3hsSUNvdlhHNWNiaThxSUdsemRHRnVZblZzSUdsbmJtOXlaU0J1WlhoMElDb3ZYRzVsZUhCdmNuUWdZMjl1YzNRZ2FYTkJjbkpoZVNBOVhHNGdJRUZ5Y21GNUxtbHpRWEp5WVhrZ2ZIeGNiaUFnWm5WdVkzUnBiMjRvZG1Gc2RXVXBJSHRjYmlBZ0lDQnlaWFIxY200Z2RtRnNkV1VnSmlZZ2RIbHdaVzltSUhaaGJIVmxJRDA5UFNBbmIySnFaV04wSjF4dUlDQWdJQ0FnUHlCMGIxTjBjbWx1Wnk1allXeHNLSFpoYkhWbEtTQTlQVDBnSjF0dlltcGxZM1FnUVhKeVlYbGRKMXh1SUNBZ0lDQWdPaUJtWVd4elpUdGNiaUFnZlR0Y2JseHVMeThnVDJ4a1pYSWdTVVVnZG1WeWMybHZibk1nWkc4Z2JtOTBJR1JwY21WamRHeDVJSE4xY0hCdmNuUWdhVzVrWlhoUFppQnpieUIzWlNCdGRYTjBJR2x0Y0d4bGJXVnVkQ0J2ZFhJZ2IzZHVMQ0J6WVdSc2VTNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnBibVJsZUU5bUtHRnljbUY1TENCMllXeDFaU2tnZTF4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTUN3Z2JHVnVJRDBnWVhKeVlYa3ViR1Z1WjNSb095QnBJRHdnYkdWdU95QnBLeXNwSUh0Y2JpQWdJQ0JwWmlBb1lYSnlZWGxiYVYwZ1BUMDlJSFpoYkhWbEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2FUdGNiaUFnSUNCOVhHNGdJSDFjYmlBZ2NtVjBkWEp1SUMweE8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWlhOallYQmxSWGh3Y21WemMybHZiaWh6ZEhKcGJtY3BJSHRjYmlBZ2FXWWdLSFI1Y0dWdlppQnpkSEpwYm1jZ0lUMDlJQ2R6ZEhKcGJtY25LU0I3WEc0Z0lDQWdMeThnWkc5dUozUWdaWE5qWVhCbElGTmhabVZUZEhKcGJtZHpMQ0J6YVc1alpTQjBhR1Y1SjNKbElHRnNjbVZoWkhrZ2MyRm1aVnh1SUNBZ0lHbG1JQ2h6ZEhKcGJtY2dKaVlnYzNSeWFXNW5MblJ2U0ZSTlRDa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlITjBjbWx1Wnk1MGIwaFVUVXdvS1R0Y2JpQWdJQ0I5SUdWc2MyVWdhV1lnS0hOMGNtbHVaeUE5UFNCdWRXeHNLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdKeWM3WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2doYzNSeWFXNW5LU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdjM1J5YVc1bklDc2dKeWM3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeThnUm05eVkyVWdZU0J6ZEhKcGJtY2dZMjl1ZG1WeWMybHZiaUJoY3lCMGFHbHpJSGRwYkd3Z1ltVWdaRzl1WlNCaWVTQjBhR1VnWVhCd1pXNWtJSEpsWjJGeVpHeGxjM01nWVc1a1hHNGdJQ0FnTHk4Z2RHaGxJSEpsWjJWNElIUmxjM1FnZDJsc2JDQmtieUIwYUdseklIUnlZVzV6Y0dGeVpXNTBiSGtnWW1Wb2FXNWtJSFJvWlNCelkyVnVaWE1zSUdOaGRYTnBibWNnYVhOemRXVnpJR2xtWEc0Z0lDQWdMeThnWVc0Z2IySnFaV04wSjNNZ2RHOGdjM1J5YVc1bklHaGhjeUJsYzJOaGNHVmtJR05vWVhKaFkzUmxjbk1nYVc0Z2FYUXVYRzRnSUNBZ2MzUnlhVzVuSUQwZ0p5Y2dLeUJ6ZEhKcGJtYzdYRzRnSUgxY2JseHVJQ0JwWmlBb0lYQnZjM05wWW14bExuUmxjM1FvYzNSeWFXNW5LU2tnZTF4dUlDQWdJSEpsZEhWeWJpQnpkSEpwYm1jN1hHNGdJSDFjYmlBZ2NtVjBkWEp1SUhOMGNtbHVaeTV5WlhCc1lXTmxLR0poWkVOb1lYSnpMQ0JsYzJOaGNHVkRhR0Z5S1R0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR2x6Ulcxd2RIa29kbUZzZFdVcElIdGNiaUFnYVdZZ0tDRjJZV3gxWlNBbUppQjJZV3gxWlNBaFBUMGdNQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQjBjblZsTzF4dUlDQjlJR1ZzYzJVZ2FXWWdLR2x6UVhKeVlYa29kbUZzZFdVcElDWW1JSFpoYkhWbExteGxibWQwYUNBOVBUMGdNQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQjBjblZsTzF4dUlDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnZlZ4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdZM0psWVhSbFJuSmhiV1VvYjJKcVpXTjBLU0I3WEc0Z0lHeGxkQ0JtY21GdFpTQTlJR1Y0ZEdWdVpDaDdmU3dnYjJKcVpXTjBLVHRjYmlBZ1puSmhiV1V1WDNCaGNtVnVkQ0E5SUc5aWFtVmpkRHRjYmlBZ2NtVjBkWEp1SUdaeVlXMWxPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1lteHZZMnRRWVhKaGJYTW9jR0Z5WVcxekxDQnBaSE1wSUh0Y2JpQWdjR0Z5WVcxekxuQmhkR2dnUFNCcFpITTdYRzRnSUhKbGRIVnliaUJ3WVhKaGJYTTdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCaGNIQmxibVJEYjI1MFpYaDBVR0YwYUNoamIyNTBaWGgwVUdGMGFDd2dhV1FwSUh0Y2JpQWdjbVYwZFhKdUlDaGpiMjUwWlhoMFVHRjBhQ0EvSUdOdmJuUmxlSFJRWVhSb0lDc2dKeTRuSURvZ0p5Y3BJQ3NnYVdRN1hHNTlYRzRpWFgwPVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xudmFyIGVycm9yUHJvcHMgPSBbJ2Rlc2NyaXB0aW9uJywgJ2ZpbGVOYW1lJywgJ2xpbmVOdW1iZXInLCAnZW5kTGluZU51bWJlcicsICdtZXNzYWdlJywgJ25hbWUnLCAnbnVtYmVyJywgJ3N0YWNrJ107XG5cbmZ1bmN0aW9uIEV4Y2VwdGlvbihtZXNzYWdlLCBub2RlKSB7XG4gIHZhciBsb2MgPSBub2RlICYmIG5vZGUubG9jLFxuICAgICAgbGluZSA9IHVuZGVmaW5lZCxcbiAgICAgIGVuZExpbmVOdW1iZXIgPSB1bmRlZmluZWQsXG4gICAgICBjb2x1bW4gPSB1bmRlZmluZWQsXG4gICAgICBlbmRDb2x1bW4gPSB1bmRlZmluZWQ7XG5cbiAgaWYgKGxvYykge1xuICAgIGxpbmUgPSBsb2Muc3RhcnQubGluZTtcbiAgICBlbmRMaW5lTnVtYmVyID0gbG9jLmVuZC5saW5lO1xuICAgIGNvbHVtbiA9IGxvYy5zdGFydC5jb2x1bW47XG4gICAgZW5kQ29sdW1uID0gbG9jLmVuZC5jb2x1bW47XG5cbiAgICBtZXNzYWdlICs9ICcgLSAnICsgbGluZSArICc6JyArIGNvbHVtbjtcbiAgfVxuXG4gIHZhciB0bXAgPSBFcnJvci5wcm90b3R5cGUuY29uc3RydWN0b3IuY2FsbCh0aGlzLCBtZXNzYWdlKTtcblxuICAvLyBVbmZvcnR1bmF0ZWx5IGVycm9ycyBhcmUgbm90IGVudW1lcmFibGUgaW4gQ2hyb21lIChhdCBsZWFzdCksIHNvIGBmb3IgcHJvcCBpbiB0bXBgIGRvZXNuJ3Qgd29yay5cbiAgZm9yICh2YXIgaWR4ID0gMDsgaWR4IDwgZXJyb3JQcm9wcy5sZW5ndGg7IGlkeCsrKSB7XG4gICAgdGhpc1tlcnJvclByb3BzW2lkeF1dID0gdG1wW2Vycm9yUHJvcHNbaWR4XV07XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIHtcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBFeGNlcHRpb24pO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBpZiAobG9jKSB7XG4gICAgICB0aGlzLmxpbmVOdW1iZXIgPSBsaW5lO1xuICAgICAgdGhpcy5lbmRMaW5lTnVtYmVyID0gZW5kTGluZU51bWJlcjtcblxuICAgICAgLy8gV29yayBhcm91bmQgaXNzdWUgdW5kZXIgc2FmYXJpIHdoZXJlIHdlIGNhbid0IGRpcmVjdGx5IHNldCB0aGUgY29sdW1uIHZhbHVlXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2NvbHVtbicsIHtcbiAgICAgICAgICB2YWx1ZTogY29sdW1uLFxuICAgICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnZW5kQ29sdW1uJywge1xuICAgICAgICAgIHZhbHVlOiBlbmRDb2x1bW4sXG4gICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY29sdW1uID0gY29sdW1uO1xuICAgICAgICB0aGlzLmVuZENvbHVtbiA9IGVuZENvbHVtbjtcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKG5vcCkge1xuICAgIC8qIElnbm9yZSBpZiB0aGUgYnJvd3NlciBpcyB2ZXJ5IHBhcnRpY3VsYXIgKi9cbiAgfVxufVxuXG5FeGNlcHRpb24ucHJvdG90eXBlID0gbmV3IEVycm9yKCk7XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IEV4Y2VwdGlvbjtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMlY0WTJWd2RHbHZiaTVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN1FVRkJRU3hKUVVGTkxGVkJRVlVzUjBGQlJ5eERRVU5xUWl4aFFVRmhMRVZCUTJJc1ZVRkJWU3hGUVVOV0xGbEJRVmtzUlVGRFdpeGxRVUZsTEVWQlEyWXNVMEZCVXl4RlFVTlVMRTFCUVUwc1JVRkRUaXhSUVVGUkxFVkJRMUlzVDBGQlR5eERRVU5TTEVOQlFVTTdPMEZCUlVZc1UwRkJVeXhUUVVGVExFTkJRVU1zVDBGQlR5eEZRVUZGTEVsQlFVa3NSVUZCUlR0QlFVTm9ReXhOUVVGSkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVsQlFVa3NTVUZCU1N4RFFVRkRMRWRCUVVjN1RVRkRlRUlzU1VGQlNTeFpRVUZCTzAxQlEwb3NZVUZCWVN4WlFVRkJPMDFCUTJJc1RVRkJUU3haUVVGQk8wMUJRMDRzVTBGQlV5eFpRVUZCTEVOQlFVTTdPMEZCUlZvc1RVRkJTU3hIUVVGSExFVkJRVVU3UVVGRFVDeFJRVUZKTEVkQlFVY3NSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU03UVVGRGRFSXNhVUpCUVdFc1IwRkJSeXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXp0QlFVTTNRaXhWUVVGTkxFZEJRVWNzUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNN1FVRkRNVUlzWVVGQlV5eEhRVUZITEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1RVRkJUU3hEUVVGRE96dEJRVVV6UWl4WFFVRlBMRWxCUVVrc1MwRkJTeXhIUVVGSExFbEJRVWtzUjBGQlJ5eEhRVUZITEVkQlFVY3NUVUZCVFN4RFFVRkRPMGRCUTNoRE96dEJRVVZFTEUxQlFVa3NSMEZCUnl4SFFVRkhMRXRCUVVzc1EwRkJReXhUUVVGVExFTkJRVU1zVjBGQlZ5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU03T3p0QlFVY3hSQ3hQUVVGTExFbEJRVWtzUjBGQlJ5eEhRVUZITEVOQlFVTXNSVUZCUlN4SFFVRkhMRWRCUVVjc1ZVRkJWU3hEUVVGRExFMUJRVTBzUlVGQlJTeEhRVUZITEVWQlFVVXNSVUZCUlR0QlFVTm9SQ3hSUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRExGVkJRVlVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMGRCUXpsRE96czdRVUZIUkN4TlFVRkpMRXRCUVVzc1EwRkJReXhwUWtGQmFVSXNSVUZCUlR0QlFVTXpRaXhUUVVGTExFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1NVRkJTU3hGUVVGRkxGTkJRVk1zUTBGQlF5eERRVUZETzBkQlF6RkRPenRCUVVWRUxFMUJRVWs3UVVGRFJpeFJRVUZKTEVkQlFVY3NSVUZCUlR0QlFVTlFMRlZCUVVrc1EwRkJReXhWUVVGVkxFZEJRVWNzU1VGQlNTeERRVUZETzBGQlEzWkNMRlZCUVVrc1EwRkJReXhoUVVGaExFZEJRVWNzWVVGQllTeERRVUZET3pzN08wRkJTVzVETEZWQlFVa3NUVUZCVFN4RFFVRkRMR05CUVdNc1JVRkJSVHRCUVVONlFpeGpRVUZOTEVOQlFVTXNZMEZCWXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hSUVVGUkxFVkJRVVU3UVVGRGNFTXNaVUZCU3l4RlFVRkZMRTFCUVUwN1FVRkRZaXh2UWtGQlZTeEZRVUZGTEVsQlFVazdVMEZEYWtJc1EwRkJReXhEUVVGRE8wRkJRMGdzWTBGQlRTeERRVUZETEdOQlFXTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1YwRkJWeXhGUVVGRk8wRkJRM1pETEdWQlFVc3NSVUZCUlN4VFFVRlRPMEZCUTJoQ0xHOUNRVUZWTEVWQlFVVXNTVUZCU1R0VFFVTnFRaXhEUVVGRExFTkJRVU03VDBGRFNpeE5RVUZOTzBGQlEwd3NXVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhOUVVGTkxFTkJRVU03UVVGRGNrSXNXVUZCU1N4RFFVRkRMRk5CUVZNc1IwRkJSeXhUUVVGVExFTkJRVU03VDBGRE5VSTdTMEZEUmp0SFFVTkdMRU5CUVVNc1QwRkJUeXhIUVVGSExFVkJRVVU3TzBkQlJXSTdRMEZEUmpzN1FVRkZSQ3hUUVVGVExFTkJRVU1zVTBGQlV5eEhRVUZITEVsQlFVa3NTMEZCU3l4RlFVRkZMRU5CUVVNN08zRkNRVVZ1UWl4VFFVRlRJaXdpWm1sc1pTSTZJbVY0WTJWd2RHbHZiaTVxY3lJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltTnZibk4wSUdWeWNtOXlVSEp2Y0hNZ1BTQmJYRzRnSUNka1pYTmpjbWx3ZEdsdmJpY3NYRzRnSUNkbWFXeGxUbUZ0WlNjc1hHNGdJQ2RzYVc1bFRuVnRZbVZ5Snl4Y2JpQWdKMlZ1WkV4cGJtVk9kVzFpWlhJbkxGeHVJQ0FuYldWemMyRm5aU2NzWEc0Z0lDZHVZVzFsSnl4Y2JpQWdKMjUxYldKbGNpY3NYRzRnSUNkemRHRmpheWRjYmwwN1hHNWNibVoxYm1OMGFXOXVJRVY0WTJWd2RHbHZiaWh0WlhOellXZGxMQ0J1YjJSbEtTQjdYRzRnSUd4bGRDQnNiMk1nUFNCdWIyUmxJQ1ltSUc1dlpHVXViRzlqTEZ4dUlDQWdJR3hwYm1Vc1hHNGdJQ0FnWlc1a1RHbHVaVTUxYldKbGNpeGNiaUFnSUNCamIyeDFiVzRzWEc0Z0lDQWdaVzVrUTI5c2RXMXVPMXh1WEc0Z0lHbG1JQ2hzYjJNcElIdGNiaUFnSUNCc2FXNWxJRDBnYkc5akxuTjBZWEowTG14cGJtVTdYRzRnSUNBZ1pXNWtUR2x1WlU1MWJXSmxjaUE5SUd4dll5NWxibVF1YkdsdVpUdGNiaUFnSUNCamIyeDFiVzRnUFNCc2IyTXVjM1JoY25RdVkyOXNkVzF1TzF4dUlDQWdJR1Z1WkVOdmJIVnRiaUE5SUd4dll5NWxibVF1WTI5c2RXMXVPMXh1WEc0Z0lDQWdiV1Z6YzJGblpTQXJQU0FuSUMwZ0p5QXJJR3hwYm1VZ0t5QW5PaWNnS3lCamIyeDFiVzQ3WEc0Z0lIMWNibHh1SUNCc1pYUWdkRzF3SUQwZ1JYSnliM0l1Y0hKdmRHOTBlWEJsTG1OdmJuTjBjblZqZEc5eUxtTmhiR3dvZEdocGN5d2diV1Z6YzJGblpTazdYRzVjYmlBZ0x5OGdWVzVtYjNKMGRXNWhkR1ZzZVNCbGNuSnZjbk1nWVhKbElHNXZkQ0JsYm5WdFpYSmhZbXhsSUdsdUlFTm9jbTl0WlNBb1lYUWdiR1ZoYzNRcExDQnpieUJnWm05eUlIQnliM0FnYVc0Z2RHMXdZQ0JrYjJWemJpZDBJSGR2Y21zdVhHNGdJR1p2Y2lBb2JHVjBJR2xrZUNBOUlEQTdJR2xrZUNBOElHVnljbTl5VUhKdmNITXViR1Z1WjNSb095QnBaSGdyS3lrZ2UxeHVJQ0FnSUhSb2FYTmJaWEp5YjNKUWNtOXdjMXRwWkhoZFhTQTlJSFJ0Y0Z0bGNuSnZjbEJ5YjNCelcybGtlRjFkTzF4dUlDQjlYRzVjYmlBZ0x5b2dhWE4wWVc1aWRXd2dhV2R1YjNKbElHVnNjMlVnS2k5Y2JpQWdhV1lnS0VWeWNtOXlMbU5oY0hSMWNtVlRkR0ZqYTFSeVlXTmxLU0I3WEc0Z0lDQWdSWEp5YjNJdVkyRndkSFZ5WlZOMFlXTnJWSEpoWTJVb2RHaHBjeXdnUlhoalpYQjBhVzl1S1R0Y2JpQWdmVnh1WEc0Z0lIUnllU0I3WEc0Z0lDQWdhV1lnS0d4dll5a2dlMXh1SUNBZ0lDQWdkR2hwY3k1c2FXNWxUblZ0WW1WeUlEMGdiR2x1WlR0Y2JpQWdJQ0FnSUhSb2FYTXVaVzVrVEdsdVpVNTFiV0psY2lBOUlHVnVaRXhwYm1WT2RXMWlaWEk3WEc1Y2JpQWdJQ0FnSUM4dklGZHZjbXNnWVhKdmRXNWtJR2x6YzNWbElIVnVaR1Z5SUhOaFptRnlhU0IzYUdWeVpTQjNaU0JqWVc0bmRDQmthWEpsWTNSc2VTQnpaWFFnZEdobElHTnZiSFZ0YmlCMllXeDFaVnh1SUNBZ0lDQWdMeW9nYVhOMFlXNWlkV3dnYVdkdWIzSmxJRzVsZUhRZ0tpOWNiaUFnSUNBZ0lHbG1JQ2hQWW1wbFkzUXVaR1ZtYVc1bFVISnZjR1Z5ZEhrcElIdGNiaUFnSUNBZ0lDQWdUMkpxWldOMExtUmxabWx1WlZCeWIzQmxjblI1S0hSb2FYTXNJQ2RqYjJ4MWJXNG5MQ0I3WEc0Z0lDQWdJQ0FnSUNBZ2RtRnNkV1U2SUdOdmJIVnRiaXhjYmlBZ0lDQWdJQ0FnSUNCbGJuVnRaWEpoWW14bE9pQjBjblZsWEc0Z0lDQWdJQ0FnSUgwcE8xeHVJQ0FnSUNBZ0lDQlBZbXBsWTNRdVpHVm1hVzVsVUhKdmNHVnlkSGtvZEdocGN5d2dKMlZ1WkVOdmJIVnRiaWNzSUh0Y2JpQWdJQ0FnSUNBZ0lDQjJZV3gxWlRvZ1pXNWtRMjlzZFcxdUxGeHVJQ0FnSUNBZ0lDQWdJR1Z1ZFcxbGNtRmliR1U2SUhSeWRXVmNiaUFnSUNBZ0lDQWdmU2s3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0IwYUdsekxtTnZiSFZ0YmlBOUlHTnZiSFZ0Ymp0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVsYm1SRGIyeDFiVzRnUFNCbGJtUkRiMngxYlc0N1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQjlJR05oZEdOb0lDaHViM0FwSUh0Y2JpQWdJQ0F2S2lCSloyNXZjbVVnYVdZZ2RHaGxJR0p5YjNkelpYSWdhWE1nZG1WeWVTQndZWEowYVdOMWJHRnlJQ292WEc0Z0lIMWNibjFjYmx4dVJYaGpaWEIwYVc5dUxuQnliM1J2ZEhsd1pTQTlJRzVsZHlCRmNuSnZjaWdwTzF4dVhHNWxlSEJ2Y25RZ1pHVm1ZWFZzZENCRmVHTmxjSFJwYjI0N1hHNGlYWDA9XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2Jsb2NrSGVscGVyTWlzc2luZycsIGZ1bmN0aW9uIChjb250ZXh0LCBvcHRpb25zKSB7XG4gICAgdmFyIGludmVyc2UgPSBvcHRpb25zLmludmVyc2UsXG4gICAgICAgIGZuID0gb3B0aW9ucy5mbjtcblxuICAgIGlmIChjb250ZXh0ID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gZm4odGhpcyk7XG4gICAgfSBlbHNlIGlmIChjb250ZXh0ID09PSBmYWxzZSB8fCBjb250ZXh0ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoX3V0aWxzLmlzQXJyYXkoY29udGV4dCkpIHtcbiAgICAgIGlmIChjb250ZXh0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKG9wdGlvbnMuaWRzKSB7XG4gICAgICAgICAgb3B0aW9ucy5pZHMgPSBbb3B0aW9ucy5uYW1lXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpbnN0YW5jZS5oZWxwZXJzLmVhY2goY29udGV4dCwgb3B0aW9ucyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gaW52ZXJzZSh0aGlzKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmlkcykge1xuICAgICAgICB2YXIgZGF0YSA9IF91dGlscy5jcmVhdGVGcmFtZShvcHRpb25zLmRhdGEpO1xuICAgICAgICBkYXRhLmNvbnRleHRQYXRoID0gX3V0aWxzLmFwcGVuZENvbnRleHRQYXRoKG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCwgb3B0aW9ucy5uYW1lKTtcbiAgICAgICAgb3B0aW9ucyA9IHsgZGF0YTogZGF0YSB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm4oY29udGV4dCwgb3B0aW9ucyk7XG4gICAgfVxuICB9KTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJobGJIQmxjbk12WW14dlkyc3RhR1ZzY0dWeUxXMXBjM05wYm1jdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenR4UWtGQmQwUXNWVUZCVlRzN2NVSkJSVzVFTEZWQlFWTXNVVUZCVVN4RlFVRkZPMEZCUTJoRExGVkJRVkVzUTBGQlF5eGpRVUZqTEVOQlFVTXNiMEpCUVc5Q0xFVkJRVVVzVlVGQlV5eFBRVUZQTEVWQlFVVXNUMEZCVHl4RlFVRkZPMEZCUTNaRkxGRkJRVWtzVDBGQlR5eEhRVUZITEU5QlFVOHNRMEZCUXl4UFFVRlBPMUZCUXpOQ0xFVkJRVVVzUjBGQlJ5eFBRVUZQTEVOQlFVTXNSVUZCUlN4RFFVRkRPenRCUVVWc1FpeFJRVUZKTEU5QlFVOHNTMEZCU3l4SlFVRkpMRVZCUVVVN1FVRkRjRUlzWVVGQlR5eEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1MwRkRha0lzVFVGQlRTeEpRVUZKTEU5QlFVOHNTMEZCU3l4TFFVRkxMRWxCUVVrc1QwRkJUeXhKUVVGSkxFbEJRVWtzUlVGQlJUdEJRVU12UXl4aFFVRlBMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dExRVU4wUWl4TlFVRk5MRWxCUVVrc1pVRkJVU3hQUVVGUExFTkJRVU1zUlVGQlJUdEJRVU16UWl4VlFVRkpMRTlCUVU4c1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eEZRVUZGTzBGQlEzUkNMRmxCUVVrc1QwRkJUeXhEUVVGRExFZEJRVWNzUlVGQlJUdEJRVU5tTEdsQ1FVRlBMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMU5CUXpsQ096dEJRVVZFTEdWQlFVOHNVVUZCVVN4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPMDlCUTJoRUxFMUJRVTA3UVVGRFRDeGxRVUZQTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRQUVVOMFFqdExRVU5HTEUxQlFVMDdRVUZEVEN4VlFVRkpMRTlCUVU4c1EwRkJReXhKUVVGSkxFbEJRVWtzVDBGQlR5eERRVUZETEVkQlFVY3NSVUZCUlR0QlFVTXZRaXhaUVVGSkxFbEJRVWtzUjBGQlJ5eHRRa0ZCV1N4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03UVVGRGNrTXNXVUZCU1N4RFFVRkRMRmRCUVZjc1IwRkJSeXg1UWtGRGFrSXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhYUVVGWExFVkJRM2hDTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUTJJc1EwRkJRenRCUVVOR0xHVkJRVThzUjBGQlJ5eEZRVUZGTEVsQlFVa3NSVUZCUlN4SlFVRkpMRVZCUVVVc1EwRkJRenRQUVVNeFFqczdRVUZGUkN4aFFVRlBMRVZCUVVVc1EwRkJReXhQUVVGUExFVkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTTdTMEZETjBJN1IwRkRSaXhEUVVGRExFTkJRVU03UTBGRFNpSXNJbVpwYkdVaU9pSmliRzlqYXkxb1pXeHdaWEl0YldsemMybHVaeTVxY3lJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCN0lHRndjR1Z1WkVOdmJuUmxlSFJRWVhSb0xDQmpjbVZoZEdWR2NtRnRaU3dnYVhOQmNuSmhlU0I5SUdaeWIyMGdKeTR1TDNWMGFXeHpKenRjYmx4dVpYaHdiM0owSUdSbFptRjFiSFFnWm5WdVkzUnBiMjRvYVc1emRHRnVZMlVwSUh0Y2JpQWdhVzV6ZEdGdVkyVXVjbVZuYVhOMFpYSklaV3h3WlhJb0oySnNiMk5yU0dWc2NHVnlUV2x6YzJsdVp5Y3NJR1oxYm1OMGFXOXVLR052Ym5SbGVIUXNJRzl3ZEdsdmJuTXBJSHRjYmlBZ0lDQnNaWFFnYVc1MlpYSnpaU0E5SUc5d2RHbHZibk11YVc1MlpYSnpaU3hjYmlBZ0lDQWdJR1p1SUQwZ2IzQjBhVzl1Y3k1bWJqdGNibHh1SUNBZ0lHbG1JQ2hqYjI1MFpYaDBJRDA5UFNCMGNuVmxLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdabTRvZEdocGN5azdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaGpiMjUwWlhoMElEMDlQU0JtWVd4elpTQjhmQ0JqYjI1MFpYaDBJRDA5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQnBiblpsY25ObEtIUm9hWE1wTzF4dUlDQWdJSDBnWld4elpTQnBaaUFvYVhOQmNuSmhlU2hqYjI1MFpYaDBLU2tnZTF4dUlDQWdJQ0FnYVdZZ0tHTnZiblJsZUhRdWJHVnVaM1JvSUQ0Z01Da2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb2IzQjBhVzl1Y3k1cFpITXBJSHRjYmlBZ0lDQWdJQ0FnSUNCdmNIUnBiMjV6TG1sa2N5QTlJRnR2Y0hScGIyNXpMbTVoYldWZE8xeHVJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJR2x1YzNSaGJtTmxMbWhsYkhCbGNuTXVaV0ZqYUNoamIyNTBaWGgwTENCdmNIUnBiMjV6S1R0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJwYm5abGNuTmxLSFJvYVhNcE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0JwWmlBb2IzQjBhVzl1Y3k1a1lYUmhJQ1ltSUc5d2RHbHZibk11YVdSektTQjdYRzRnSUNBZ0lDQWdJR3hsZENCa1lYUmhJRDBnWTNKbFlYUmxSbkpoYldVb2IzQjBhVzl1Y3k1a1lYUmhLVHRjYmlBZ0lDQWdJQ0FnWkdGMFlTNWpiMjUwWlhoMFVHRjBhQ0E5SUdGd2NHVnVaRU52Ym5SbGVIUlFZWFJvS0Z4dUlDQWdJQ0FnSUNBZ0lHOXdkR2x2Ym5NdVpHRjBZUzVqYjI1MFpYaDBVR0YwYUN4Y2JpQWdJQ0FnSUNBZ0lDQnZjSFJwYjI1ekxtNWhiV1ZjYmlBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUNBZ2IzQjBhVzl1Y3lBOUlIc2daR0YwWVRvZ1pHRjBZU0I5TzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCeVpYUjFjbTRnWm00b1kyOXVkR1Y0ZEN3Z2IzQjBhVzl1Y3lrN1hHNGdJQ0FnZlZ4dUlDQjlLVHRjYm4xY2JpSmRmUT09XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG4vLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbnZhciBfdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xuXG52YXIgX2V4Y2VwdGlvbiA9IHJlcXVpcmUoJy4uL2V4Y2VwdGlvbicpO1xuXG52YXIgX2V4Y2VwdGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9leGNlcHRpb24pO1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2VhY2gnLCBmdW5jdGlvbiAoY29udGV4dCwgb3B0aW9ucykge1xuICAgIGlmICghb3B0aW9ucykge1xuICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ011c3QgcGFzcyBpdGVyYXRvciB0byAjZWFjaCcpO1xuICAgIH1cblxuICAgIHZhciBmbiA9IG9wdGlvbnMuZm4sXG4gICAgICAgIGludmVyc2UgPSBvcHRpb25zLmludmVyc2UsXG4gICAgICAgIGkgPSAwLFxuICAgICAgICByZXQgPSAnJyxcbiAgICAgICAgZGF0YSA9IHVuZGVmaW5lZCxcbiAgICAgICAgY29udGV4dFBhdGggPSB1bmRlZmluZWQ7XG5cbiAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7XG4gICAgICBjb250ZXh0UGF0aCA9IF91dGlscy5hcHBlbmRDb250ZXh0UGF0aChvcHRpb25zLmRhdGEuY29udGV4dFBhdGgsIG9wdGlvbnMuaWRzWzBdKSArICcuJztcbiAgICB9XG5cbiAgICBpZiAoX3V0aWxzLmlzRnVuY3Rpb24oY29udGV4dCkpIHtcbiAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNhbGwodGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZGF0YSkge1xuICAgICAgZGF0YSA9IF91dGlscy5jcmVhdGVGcmFtZShvcHRpb25zLmRhdGEpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4ZWNJdGVyYXRpb24oZmllbGQsIGluZGV4LCBsYXN0KSB7XG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICBkYXRhLmtleSA9IGZpZWxkO1xuICAgICAgICBkYXRhLmluZGV4ID0gaW5kZXg7XG4gICAgICAgIGRhdGEuZmlyc3QgPSBpbmRleCA9PT0gMDtcbiAgICAgICAgZGF0YS5sYXN0ID0gISFsYXN0O1xuXG4gICAgICAgIGlmIChjb250ZXh0UGF0aCkge1xuICAgICAgICAgIGRhdGEuY29udGV4dFBhdGggPSBjb250ZXh0UGF0aCArIGZpZWxkO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldCA9IHJldCArIGZuKGNvbnRleHRbZmllbGRdLCB7XG4gICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgIGJsb2NrUGFyYW1zOiBfdXRpbHMuYmxvY2tQYXJhbXMoW2NvbnRleHRbZmllbGRdLCBmaWVsZF0sIFtjb250ZXh0UGF0aCArIGZpZWxkLCBudWxsXSlcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChjb250ZXh0ICYmIHR5cGVvZiBjb250ZXh0ID09PSAnb2JqZWN0Jykge1xuICAgICAgaWYgKF91dGlscy5pc0FycmF5KGNvbnRleHQpKSB7XG4gICAgICAgIGZvciAodmFyIGogPSBjb250ZXh0Lmxlbmd0aDsgaSA8IGo7IGkrKykge1xuICAgICAgICAgIGlmIChpIGluIGNvbnRleHQpIHtcbiAgICAgICAgICAgIGV4ZWNJdGVyYXRpb24oaSwgaSwgaSA9PT0gY29udGV4dC5sZW5ndGggLSAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZ2xvYmFsLlN5bWJvbCAmJiBjb250ZXh0W2dsb2JhbC5TeW1ib2wuaXRlcmF0b3JdKSB7XG4gICAgICAgIHZhciBuZXdDb250ZXh0ID0gW107XG4gICAgICAgIHZhciBpdGVyYXRvciA9IGNvbnRleHRbZ2xvYmFsLlN5bWJvbC5pdGVyYXRvcl0oKTtcbiAgICAgICAgZm9yICh2YXIgaXQgPSBpdGVyYXRvci5uZXh0KCk7ICFpdC5kb25lOyBpdCA9IGl0ZXJhdG9yLm5leHQoKSkge1xuICAgICAgICAgIG5ld0NvbnRleHQucHVzaChpdC52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29udGV4dCA9IG5ld0NvbnRleHQ7XG4gICAgICAgIGZvciAodmFyIGogPSBjb250ZXh0Lmxlbmd0aDsgaSA8IGo7IGkrKykge1xuICAgICAgICAgIGV4ZWNJdGVyYXRpb24oaSwgaSwgaSA9PT0gY29udGV4dC5sZW5ndGggLSAxKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB2YXIgcHJpb3JLZXkgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgICBPYmplY3Qua2V5cyhjb250ZXh0KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgIC8vIFdlJ3JlIHJ1bm5pbmcgdGhlIGl0ZXJhdGlvbnMgb25lIHN0ZXAgb3V0IG9mIHN5bmMgc28gd2UgY2FuIGRldGVjdFxuICAgICAgICAgICAgLy8gdGhlIGxhc3QgaXRlcmF0aW9uIHdpdGhvdXQgaGF2ZSB0byBzY2FuIHRoZSBvYmplY3QgdHdpY2UgYW5kIGNyZWF0ZVxuICAgICAgICAgICAgLy8gYW4gaXRlcm1lZGlhdGUga2V5cyBhcnJheS5cbiAgICAgICAgICAgIGlmIChwcmlvcktleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGV4ZWNJdGVyYXRpb24ocHJpb3JLZXksIGkgLSAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHByaW9yS2V5ID0ga2V5O1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChwcmlvcktleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBleGVjSXRlcmF0aW9uKHByaW9yS2V5LCBpIC0gMSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpID09PSAwKSB7XG4gICAgICByZXQgPSBpbnZlcnNlKHRoaXMpO1xuICAgIH1cblxuICAgIHJldHVybiByZXQ7XG4gIH0pO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMmhsYkhCbGNuTXZaV0ZqYUM1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96czdPenM3TzNGQ1FVMVBMRlZCUVZVN08zbENRVU5MTEdOQlFXTTdPenM3Y1VKQlJYSkNMRlZCUVZNc1VVRkJVU3hGUVVGRk8wRkJRMmhETEZWQlFWRXNRMEZCUXl4alFVRmpMRU5CUVVNc1RVRkJUU3hGUVVGRkxGVkJRVk1zVDBGQlR5eEZRVUZGTEU5QlFVOHNSVUZCUlR0QlFVTjZSQ3hSUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUZGTzBGQlExb3NXVUZCVFN3eVFrRkJZeXcyUWtGQk5rSXNRMEZCUXl4RFFVRkRPMHRCUTNCRU96dEJRVVZFTEZGQlFVa3NSVUZCUlN4SFFVRkhMRTlCUVU4c1EwRkJReXhGUVVGRk8xRkJRMnBDTEU5QlFVOHNSMEZCUnl4UFFVRlBMRU5CUVVNc1QwRkJUenRSUVVONlFpeERRVUZETEVkQlFVY3NRMEZCUXp0UlFVTk1MRWRCUVVjc1IwRkJSeXhGUVVGRk8xRkJRMUlzU1VGQlNTeFpRVUZCTzFGQlEwb3NWMEZCVnl4WlFVRkJMRU5CUVVNN08wRkJSV1FzVVVGQlNTeFBRVUZQTEVOQlFVTXNTVUZCU1N4SlFVRkpMRTlCUVU4c1EwRkJReXhIUVVGSExFVkJRVVU3UVVGREwwSXNhVUpCUVZjc1IwRkRWQ3g1UWtGQmEwSXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhYUVVGWExFVkJRVVVzVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUTBGQlF6dExRVU55UlRzN1FVRkZSQ3hSUVVGSkxHdENRVUZYTEU5QlFVOHNRMEZCUXl4RlFVRkZPMEZCUTNaQ0xHRkJRVThzUjBGQlJ5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wdEJRemxDT3p0QlFVVkVMRkZCUVVrc1QwRkJUeXhEUVVGRExFbEJRVWtzUlVGQlJUdEJRVU5vUWl4VlFVRkpMRWRCUVVjc2JVSkJRVmtzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMHRCUTJ4RE96dEJRVVZFTEdGQlFWTXNZVUZCWVN4RFFVRkRMRXRCUVVzc1JVRkJSU3hMUVVGTExFVkJRVVVzU1VGQlNTeEZRVUZGTzBGQlEzcERMRlZCUVVrc1NVRkJTU3hGUVVGRk8wRkJRMUlzV1VGQlNTeERRVUZETEVkQlFVY3NSMEZCUnl4TFFVRkxMRU5CUVVNN1FVRkRha0lzV1VGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4TFFVRkxMRU5CUVVNN1FVRkRia0lzV1VGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4TFFVRkxMRXRCUVVzc1EwRkJReXhEUVVGRE8wRkJRM3BDTEZsQlFVa3NRMEZCUXl4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF6czdRVUZGYmtJc1dVRkJTU3hYUVVGWExFVkJRVVU3UVVGRFppeGpRVUZKTEVOQlFVTXNWMEZCVnl4SFFVRkhMRmRCUVZjc1IwRkJSeXhMUVVGTExFTkJRVU03VTBGRGVFTTdUMEZEUmpzN1FVRkZSQ3hUUVVGSExFZEJRMFFzUjBGQlJ5eEhRVU5JTEVWQlFVVXNRMEZCUXl4UFFVRlBMRU5CUVVNc1MwRkJTeXhEUVVGRExFVkJRVVU3UVVGRGFrSXNXVUZCU1N4RlFVRkZMRWxCUVVrN1FVRkRWaXh0UWtGQlZ5eEZRVUZGTEcxQ1FVTllMRU5CUVVNc1QwRkJUeXhEUVVGRExFdEJRVXNzUTBGQlF5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RlFVTjJRaXhEUVVGRExGZEJRVmNzUjBGQlJ5eExRVUZMTEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUXpWQ08wOUJRMFlzUTBGQlF5eERRVUZETzB0QlEwNDdPMEZCUlVRc1VVRkJTU3hQUVVGUExFbEJRVWtzVDBGQlR5eFBRVUZQTEV0QlFVc3NVVUZCVVN4RlFVRkZPMEZCUXpGRExGVkJRVWtzWlVGQlVTeFBRVUZQTEVOQlFVTXNSVUZCUlR0QlFVTndRaXhoUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEU5QlFVOHNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0QlFVTjJReXhqUVVGSkxFTkJRVU1zU1VGQlNTeFBRVUZQTEVWQlFVVTdRVUZEYUVJc2VVSkJRV0VzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1MwRkJTeXhQUVVGUExFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMWRCUXk5RE8xTkJRMFk3VDBGRFJpeE5RVUZOTEVsQlFVa3NUVUZCVFN4RFFVRkRMRTFCUVUwc1NVRkJTU3hQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4UlFVRlJMRU5CUVVNc1JVRkJSVHRCUVVNelJDeFpRVUZOTEZWQlFWVXNSMEZCUnl4RlFVRkZMRU5CUVVNN1FVRkRkRUlzV1VGQlRTeFJRVUZSTEVkQlFVY3NUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zVVVGQlVTeERRVUZETEVWQlFVVXNRMEZCUXp0QlFVTnVSQ3hoUVVGTExFbEJRVWtzUlVGQlJTeEhRVUZITEZGQlFWRXNRMEZCUXl4SlFVRkpMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEpRVUZKTEVWQlFVVXNSVUZCUlN4SFFVRkhMRkZCUVZFc1EwRkJReXhKUVVGSkxFVkJRVVVzUlVGQlJUdEJRVU0zUkN4dlFrRkJWU3hEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1UwRkRNMEk3UVVGRFJDeGxRVUZQTEVkQlFVY3NWVUZCVlN4RFFVRkRPMEZCUTNKQ0xHRkJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NUMEZCVHl4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMEZCUTNaRExIVkNRVUZoTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFdEJRVXNzVDBGQlR5eERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRUUVVNdlF6dFBRVU5HTEUxQlFVMDdPMEZCUTB3c1kwRkJTU3hSUVVGUkxGbEJRVUVzUTBGQlF6czdRVUZGWWl4blFrRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1ZVRkJRU3hIUVVGSExFVkJRVWs3T3pzN1FVRkpiRU1zWjBKQlFVa3NVVUZCVVN4TFFVRkxMRk5CUVZNc1JVRkJSVHRCUVVNeFFpd3lRa0ZCWVN4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdZVUZEYUVNN1FVRkRSQ3h2UWtGQlVTeEhRVUZITEVkQlFVY3NRMEZCUXp0QlFVTm1MR0ZCUVVNc1JVRkJSU3hEUVVGRE8xZEJRMHdzUTBGQlF5eERRVUZETzBGQlEwZ3NZMEZCU1N4UlFVRlJMRXRCUVVzc1UwRkJVeXhGUVVGRk8wRkJRekZDTEhsQ1FVRmhMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN1YwRkRkRU03TzA5QlEwWTdTMEZEUmpzN1FVRkZSQ3hSUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVWQlFVVTdRVUZEV0N4VFFVRkhMRWRCUVVjc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzB0QlEzSkNPenRCUVVWRUxGZEJRVThzUjBGQlJ5eERRVUZETzBkQlExb3NRMEZCUXl4RFFVRkRPME5CUTBvaUxDSm1hV3hsSWpvaVpXRmphQzVxY3lJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCN1hHNGdJR0Z3Y0dWdVpFTnZiblJsZUhSUVlYUm9MRnh1SUNCaWJHOWphMUJoY21GdGN5eGNiaUFnWTNKbFlYUmxSbkpoYldVc1hHNGdJR2x6UVhKeVlYa3NYRzRnSUdselJuVnVZM1JwYjI1Y2JuMGdabkp2YlNBbkxpNHZkWFJwYkhNbk8xeHVhVzF3YjNKMElFVjRZMlZ3ZEdsdmJpQm1jbTl0SUNjdUxpOWxlR05sY0hScGIyNG5PMXh1WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0JtZFc1amRHbHZiaWhwYm5OMFlXNWpaU2tnZTF4dUlDQnBibk4wWVc1alpTNXlaV2RwYzNSbGNraGxiSEJsY2lnblpXRmphQ2NzSUdaMWJtTjBhVzl1S0dOdmJuUmxlSFFzSUc5d2RHbHZibk1wSUh0Y2JpQWdJQ0JwWmlBb0lXOXdkR2x2Ym5NcElIdGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkZlR05sY0hScGIyNG9KMDExYzNRZ2NHRnpjeUJwZEdWeVlYUnZjaUIwYnlBalpXRmphQ2NwTzF4dUlDQWdJSDFjYmx4dUlDQWdJR3hsZENCbWJpQTlJRzl3ZEdsdmJuTXVabTRzWEc0Z0lDQWdJQ0JwYm5abGNuTmxJRDBnYjNCMGFXOXVjeTVwYm5abGNuTmxMRnh1SUNBZ0lDQWdhU0E5SURBc1hHNGdJQ0FnSUNCeVpYUWdQU0FuSnl4Y2JpQWdJQ0FnSUdSaGRHRXNYRzRnSUNBZ0lDQmpiMjUwWlhoMFVHRjBhRHRjYmx4dUlDQWdJR2xtSUNodmNIUnBiMjV6TG1SaGRHRWdKaVlnYjNCMGFXOXVjeTVwWkhNcElIdGNiaUFnSUNBZ0lHTnZiblJsZUhSUVlYUm9JRDFjYmlBZ0lDQWdJQ0FnWVhCd1pXNWtRMjl1ZEdWNGRGQmhkR2dvYjNCMGFXOXVjeTVrWVhSaExtTnZiblJsZUhSUVlYUm9MQ0J2Y0hScGIyNXpMbWxrYzFzd1hTa2dLeUFuTGljN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tHbHpSblZ1WTNScGIyNG9ZMjl1ZEdWNGRDa3BJSHRjYmlBZ0lDQWdJR052Ym5SbGVIUWdQU0JqYjI1MFpYaDBMbU5oYkd3b2RHaHBjeWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0c5d2RHbHZibk11WkdGMFlTa2dlMXh1SUNBZ0lDQWdaR0YwWVNBOUlHTnlaV0YwWlVaeVlXMWxLRzl3ZEdsdmJuTXVaR0YwWVNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWm5WdVkzUnBiMjRnWlhobFkwbDBaWEpoZEdsdmJpaG1hV1ZzWkN3Z2FXNWtaWGdzSUd4aGMzUXBJSHRjYmlBZ0lDQWdJR2xtSUNoa1lYUmhLU0I3WEc0Z0lDQWdJQ0FnSUdSaGRHRXVhMlY1SUQwZ1ptbGxiR1E3WEc0Z0lDQWdJQ0FnSUdSaGRHRXVhVzVrWlhnZ1BTQnBibVJsZUR0Y2JpQWdJQ0FnSUNBZ1pHRjBZUzVtYVhKemRDQTlJR2x1WkdWNElEMDlQU0F3TzF4dUlDQWdJQ0FnSUNCa1lYUmhMbXhoYzNRZ1BTQWhJV3hoYzNRN1hHNWNiaUFnSUNBZ0lDQWdhV1lnS0dOdmJuUmxlSFJRWVhSb0tTQjdYRzRnSUNBZ0lDQWdJQ0FnWkdGMFlTNWpiMjUwWlhoMFVHRjBhQ0E5SUdOdmJuUmxlSFJRWVhSb0lDc2dabWxsYkdRN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdjbVYwSUQxY2JpQWdJQ0FnSUNBZ2NtVjBJQ3RjYmlBZ0lDQWdJQ0FnWm00b1kyOXVkR1Y0ZEZ0bWFXVnNaRjBzSUh0Y2JpQWdJQ0FnSUNBZ0lDQmtZWFJoT2lCa1lYUmhMRnh1SUNBZ0lDQWdJQ0FnSUdKc2IyTnJVR0Z5WVcxek9pQmliRzlqYTFCaGNtRnRjeWhjYmlBZ0lDQWdJQ0FnSUNBZ0lGdGpiMjUwWlhoMFcyWnBaV3hrWFN3Z1ptbGxiR1JkTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdXMk52Ym5SbGVIUlFZWFJvSUNzZ1ptbGxiR1FzSUc1MWJHeGRYRzRnSUNBZ0lDQWdJQ0FnS1Z4dUlDQWdJQ0FnSUNCOUtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9ZMjl1ZEdWNGRDQW1KaUIwZVhCbGIyWWdZMjl1ZEdWNGRDQTlQVDBnSjI5aWFtVmpkQ2NwSUh0Y2JpQWdJQ0FnSUdsbUlDaHBjMEZ5Y21GNUtHTnZiblJsZUhRcEtTQjdYRzRnSUNBZ0lDQWdJR1p2Y2lBb2JHVjBJR29nUFNCamIyNTBaWGgwTG14bGJtZDBhRHNnYVNBOElHbzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ0lDQWdJR2xtSUNocElHbHVJR052Ym5SbGVIUXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHVjRaV05KZEdWeVlYUnBiMjRvYVN3Z2FTd2dhU0E5UFQwZ1kyOXVkR1Y0ZEM1c1pXNW5kR2dnTFNBeEtUdGNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgwZ1pXeHpaU0JwWmlBb1oyeHZZbUZzTGxONWJXSnZiQ0FtSmlCamIyNTBaWGgwVzJkc2IySmhiQzVUZVcxaWIyd3VhWFJsY21GMGIzSmRLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJRzVsZDBOdmJuUmxlSFFnUFNCYlhUdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2FYUmxjbUYwYjNJZ1BTQmpiMjUwWlhoMFcyZHNiMkpoYkM1VGVXMWliMnd1YVhSbGNtRjBiM0pkS0NrN1hHNGdJQ0FnSUNBZ0lHWnZjaUFvYkdWMElHbDBJRDBnYVhSbGNtRjBiM0l1Ym1WNGRDZ3BPeUFoYVhRdVpHOXVaVHNnYVhRZ1BTQnBkR1Z5WVhSdmNpNXVaWGgwS0NrcElIdGNiaUFnSUNBZ0lDQWdJQ0J1WlhkRGIyNTBaWGgwTG5CMWMyZ29hWFF1ZG1Gc2RXVXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdOdmJuUmxlSFFnUFNCdVpYZERiMjUwWlhoME8xeHVJQ0FnSUNBZ0lDQm1iM0lnS0d4bGRDQnFJRDBnWTI5dWRHVjRkQzVzWlc1bmRHZzdJR2tnUENCcU95QnBLeXNwSUh0Y2JpQWdJQ0FnSUNBZ0lDQmxlR1ZqU1hSbGNtRjBhVzl1S0drc0lHa3NJR2tnUFQwOUlHTnZiblJsZUhRdWJHVnVaM1JvSUMwZ01TazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJR3hsZENCd2NtbHZja3RsZVR0Y2JseHVJQ0FnSUNBZ0lDQlBZbXBsWTNRdWEyVjVjeWhqYjI1MFpYaDBLUzVtYjNKRllXTm9LR3RsZVNBOVBpQjdYRzRnSUNBZ0lDQWdJQ0FnTHk4Z1YyVW5jbVVnY25WdWJtbHVaeUIwYUdVZ2FYUmxjbUYwYVc5dWN5QnZibVVnYzNSbGNDQnZkWFFnYjJZZ2MzbHVZeUJ6YnlCM1pTQmpZVzRnWkdWMFpXTjBYRzRnSUNBZ0lDQWdJQ0FnTHk4Z2RHaGxJR3hoYzNRZ2FYUmxjbUYwYVc5dUlIZHBkR2h2ZFhRZ2FHRjJaU0IwYnlCelkyRnVJSFJvWlNCdlltcGxZM1FnZEhkcFkyVWdZVzVrSUdOeVpXRjBaVnh1SUNBZ0lDQWdJQ0FnSUM4dklHRnVJR2wwWlhKdFpXUnBZWFJsSUd0bGVYTWdZWEp5WVhrdVhHNGdJQ0FnSUNBZ0lDQWdhV1lnS0hCeWFXOXlTMlY1SUNFOVBTQjFibVJsWm1sdVpXUXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHVjRaV05KZEdWeVlYUnBiMjRvY0hKcGIzSkxaWGtzSUdrZ0xTQXhLVHRjYmlBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdjSEpwYjNKTFpYa2dQU0JyWlhrN1hHNGdJQ0FnSUNBZ0lDQWdhU3NyTzF4dUlDQWdJQ0FnSUNCOUtUdGNiaUFnSUNBZ0lDQWdhV1lnS0hCeWFXOXlTMlY1SUNFOVBTQjFibVJsWm1sdVpXUXBJSHRjYmlBZ0lDQWdJQ0FnSUNCbGVHVmpTWFJsY21GMGFXOXVLSEJ5YVc5eVMyVjVMQ0JwSUMwZ01Td2dkSEoxWlNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9hU0E5UFQwZ01Da2dlMXh1SUNBZ0lDQWdjbVYwSUQwZ2FXNTJaWEp6WlNoMGFHbHpLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2NtVjBPMXh1SUNCOUtUdGNibjFjYmlKZGZRPT1cbiIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbi8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxudmFyIF9leGNlcHRpb24gPSByZXF1aXJlKCcuLi9leGNlcHRpb24nKTtcblxudmFyIF9leGNlcHRpb24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZXhjZXB0aW9uKTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdoZWxwZXJNaXNzaW5nJywgZnVuY3Rpb24gKCkgLyogW2FyZ3MsIF1vcHRpb25zICove1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAvLyBBIG1pc3NpbmcgZmllbGQgaW4gYSB7e2Zvb319IGNvbnN0cnVjdC5cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFNvbWVvbmUgaXMgYWN0dWFsbHkgdHJ5aW5nIHRvIGNhbGwgc29tZXRoaW5nLCBibG93IHVwLlxuICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ01pc3NpbmcgaGVscGVyOiBcIicgKyBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdLm5hbWUgKyAnXCInKTtcbiAgICB9XG4gIH0pO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMmhsYkhCbGNuTXZhR1ZzY0dWeUxXMXBjM05wYm1jdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3T3p0NVFrRkJjMElzWTBGQll6czdPenR4UWtGRmNrSXNWVUZCVXl4UlFVRlJMRVZCUVVVN1FVRkRhRU1zVlVGQlVTeERRVUZETEdOQlFXTXNRMEZCUXl4bFFVRmxMRVZCUVVVc2FVTkJRV2RETzBGQlEzWkZMRkZCUVVrc1UwRkJVeXhEUVVGRExFMUJRVTBzUzBGQlN5eERRVUZETEVWQlFVVTdPMEZCUlRGQ0xHRkJRVThzVTBGQlV5eERRVUZETzB0QlEyeENMRTFCUVUwN08wRkJSVXdzV1VGQlRTd3lRa0ZEU2l4dFFrRkJiVUlzUjBGQlJ5eFRRVUZUTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVkQlFVY3NSMEZCUnl4RFFVTnFSU3hEUVVGRE8wdEJRMGc3UjBGRFJpeERRVUZETEVOQlFVTTdRMEZEU2lJc0ltWnBiR1VpT2lKb1pXeHdaWEl0YldsemMybHVaeTVxY3lJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCRmVHTmxjSFJwYjI0Z1puSnZiU0FuTGk0dlpYaGpaWEIwYVc5dUp6dGNibHh1Wlhod2IzSjBJR1JsWm1GMWJIUWdablZ1WTNScGIyNG9hVzV6ZEdGdVkyVXBJSHRjYmlBZ2FXNXpkR0Z1WTJVdWNtVm5hWE4wWlhKSVpXeHdaWElvSjJobGJIQmxjazFwYzNOcGJtY25MQ0JtZFc1amRHbHZiaWd2S2lCYllYSm5jeXdnWFc5d2RHbHZibk1nS2k4cElIdGNiaUFnSUNCcFppQW9ZWEpuZFcxbGJuUnpMbXhsYm1kMGFDQTlQVDBnTVNrZ2UxeHVJQ0FnSUNBZ0x5OGdRU0J0YVhOemFXNW5JR1pwWld4a0lHbHVJR0VnZTN0bWIyOTlmU0JqYjI1emRISjFZM1F1WEc0Z0lDQWdJQ0J5WlhSMWNtNGdkVzVrWldacGJtVmtPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBdkx5QlRiMjFsYjI1bElHbHpJR0ZqZEhWaGJHeDVJSFJ5ZVdsdVp5QjBieUJqWVd4c0lITnZiV1YwYUdsdVp5d2dZbXh2ZHlCMWNDNWNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkZlR05sY0hScGIyNG9YRzRnSUNBZ0lDQWdJQ2ROYVhOemFXNW5JR2hsYkhCbGNqb2dYQ0luSUNzZ1lYSm5kVzFsYm5SelcyRnlaM1Z0Wlc1MGN5NXNaVzVuZEdnZ0xTQXhYUzV1WVcxbElDc2dKMXdpSjF4dUlDQWdJQ0FnS1R0Y2JpQWdJQ0I5WEc0Z0lIMHBPMXh1ZlZ4dUlsMTlcbiIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbi8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxudmFyIF91dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG5cbnZhciBfZXhjZXB0aW9uID0gcmVxdWlyZSgnLi4vZXhjZXB0aW9uJyk7XG5cbnZhciBfZXhjZXB0aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2V4Y2VwdGlvbik7XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignaWYnLCBmdW5jdGlvbiAoY29uZGl0aW9uYWwsIG9wdGlvbnMpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPSAyKSB7XG4gICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnI2lmIHJlcXVpcmVzIGV4YWN0bHkgb25lIGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIGlmIChfdXRpbHMuaXNGdW5jdGlvbihjb25kaXRpb25hbCkpIHtcbiAgICAgIGNvbmRpdGlvbmFsID0gY29uZGl0aW9uYWwuY2FsbCh0aGlzKTtcbiAgICB9XG5cbiAgICAvLyBEZWZhdWx0IGJlaGF2aW9yIGlzIHRvIHJlbmRlciB0aGUgcG9zaXRpdmUgcGF0aCBpZiB0aGUgdmFsdWUgaXMgdHJ1dGh5IGFuZCBub3QgZW1wdHkuXG4gICAgLy8gVGhlIGBpbmNsdWRlWmVyb2Agb3B0aW9uIG1heSBiZSBzZXQgdG8gdHJlYXQgdGhlIGNvbmR0aW9uYWwgYXMgcHVyZWx5IG5vdCBlbXB0eSBiYXNlZCBvbiB0aGVcbiAgICAvLyBiZWhhdmlvciBvZiBpc0VtcHR5LiBFZmZlY3RpdmVseSB0aGlzIGRldGVybWluZXMgaWYgMCBpcyBoYW5kbGVkIGJ5IHRoZSBwb3NpdGl2ZSBwYXRoIG9yIG5lZ2F0aXZlLlxuICAgIGlmICghb3B0aW9ucy5oYXNoLmluY2x1ZGVaZXJvICYmICFjb25kaXRpb25hbCB8fCBfdXRpbHMuaXNFbXB0eShjb25kaXRpb25hbCkpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmludmVyc2UodGhpcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmZuKHRoaXMpO1xuICAgIH1cbiAgfSk7XG5cbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ3VubGVzcycsIGZ1bmN0aW9uIChjb25kaXRpb25hbCwgb3B0aW9ucykge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoICE9IDIpIHtcbiAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCcjdW5sZXNzIHJlcXVpcmVzIGV4YWN0bHkgb25lIGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIHJldHVybiBpbnN0YW5jZS5oZWxwZXJzWydpZiddLmNhbGwodGhpcywgY29uZGl0aW9uYWwsIHtcbiAgICAgIGZuOiBvcHRpb25zLmludmVyc2UsXG4gICAgICBpbnZlcnNlOiBvcHRpb25zLmZuLFxuICAgICAgaGFzaDogb3B0aW9ucy5oYXNoXG4gICAgfSk7XG4gIH0pO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMmhsYkhCbGNuTXZhV1l1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN096czdPenR4UWtGQmIwTXNWVUZCVlRzN2VVSkJRM2hDTEdOQlFXTTdPenM3Y1VKQlJYSkNMRlZCUVZNc1VVRkJVU3hGUVVGRk8wRkJRMmhETEZWQlFWRXNRMEZCUXl4alFVRmpMRU5CUVVNc1NVRkJTU3hGUVVGRkxGVkJRVk1zVjBGQlZ5eEZRVUZGTEU5QlFVOHNSVUZCUlR0QlFVTXpSQ3hSUVVGSkxGTkJRVk1zUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4RlFVRkZPMEZCUTNwQ0xGbEJRVTBzTWtKQlFXTXNiVU5CUVcxRExFTkJRVU1zUTBGQlF6dExRVU14UkR0QlFVTkVMRkZCUVVrc2EwSkJRVmNzVjBGQlZ5eERRVUZETEVWQlFVVTdRVUZETTBJc2FVSkJRVmNzUjBGQlJ5eFhRVUZYTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wdEJRM1JET3pzN096dEJRVXRFTEZGQlFVa3NRVUZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zVjBGQlZ5eEpRVUZKTEVOQlFVTXNWMEZCVnl4SlFVRkxMR1ZCUVZFc1YwRkJWeXhEUVVGRExFVkJRVVU3UVVGRGRrVXNZVUZCVHl4UFFVRlBMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzB0QlF6bENMRTFCUVUwN1FVRkRUQ3hoUVVGUExFOUJRVThzUTBGQlF5eEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1MwRkRla0k3UjBGRFJpeERRVUZETEVOQlFVTTdPMEZCUlVnc1ZVRkJVU3hEUVVGRExHTkJRV01zUTBGQlF5eFJRVUZSTEVWQlFVVXNWVUZCVXl4WFFVRlhMRVZCUVVVc1QwRkJUeXhGUVVGRk8wRkJReTlFTEZGQlFVa3NVMEZCVXl4RFFVRkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFVkJRVVU3UVVGRGVrSXNXVUZCVFN3eVFrRkJZeXgxUTBGQmRVTXNRMEZCUXl4RFFVRkRPMHRCUXpsRU8wRkJRMFFzVjBGQlR5eFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVWQlFVVXNWMEZCVnl4RlFVRkZPMEZCUTNCRUxGRkJRVVVzUlVGQlJTeFBRVUZQTEVOQlFVTXNUMEZCVHp0QlFVTnVRaXhoUVVGUExFVkJRVVVzVDBGQlR5eERRVUZETEVWQlFVVTdRVUZEYmtJc1ZVRkJTU3hGUVVGRkxFOUJRVThzUTBGQlF5eEpRVUZKTzB0QlEyNUNMRU5CUVVNc1EwRkJRenRIUVVOS0xFTkJRVU1zUTBGQlF6dERRVU5LSWl3aVptbHNaU0k2SW1sbUxtcHpJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSHNnYVhORmJYQjBlU3dnYVhOR2RXNWpkR2x2YmlCOUlHWnliMjBnSnk0dUwzVjBhV3h6Snp0Y2JtbHRjRzl5ZENCRmVHTmxjSFJwYjI0Z1puSnZiU0FuTGk0dlpYaGpaWEIwYVc5dUp6dGNibHh1Wlhod2IzSjBJR1JsWm1GMWJIUWdablZ1WTNScGIyNG9hVzV6ZEdGdVkyVXBJSHRjYmlBZ2FXNXpkR0Z1WTJVdWNtVm5hWE4wWlhKSVpXeHdaWElvSjJsbUp5d2dablZ1WTNScGIyNG9ZMjl1WkdsMGFXOXVZV3dzSUc5d2RHbHZibk1wSUh0Y2JpQWdJQ0JwWmlBb1lYSm5kVzFsYm5SekxteGxibWQwYUNBaFBTQXlLU0I3WEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhoalpYQjBhVzl1S0NjamFXWWdjbVZ4ZFdseVpYTWdaWGhoWTNSc2VTQnZibVVnWVhKbmRXMWxiblFuS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdhV1lnS0dselJuVnVZM1JwYjI0b1kyOXVaR2wwYVc5dVlXd3BLU0I3WEc0Z0lDQWdJQ0JqYjI1a2FYUnBiMjVoYkNBOUlHTnZibVJwZEdsdmJtRnNMbU5oYkd3b2RHaHBjeWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeThnUkdWbVlYVnNkQ0JpWldoaGRtbHZjaUJwY3lCMGJ5QnlaVzVrWlhJZ2RHaGxJSEJ2YzJsMGFYWmxJSEJoZEdnZ2FXWWdkR2hsSUhaaGJIVmxJR2x6SUhSeWRYUm9lU0JoYm1RZ2JtOTBJR1Z0Y0hSNUxseHVJQ0FnSUM4dklGUm9aU0JnYVc1amJIVmtaVnBsY205Z0lHOXdkR2x2YmlCdFlYa2dZbVVnYzJWMElIUnZJSFJ5WldGMElIUm9aU0JqYjI1a2RHbHZibUZzSUdGeklIQjFjbVZzZVNCdWIzUWdaVzF3ZEhrZ1ltRnpaV1FnYjI0Z2RHaGxYRzRnSUNBZ0x5OGdZbVZvWVhacGIzSWdiMllnYVhORmJYQjBlUzRnUldabVpXTjBhWFpsYkhrZ2RHaHBjeUJrWlhSbGNtMXBibVZ6SUdsbUlEQWdhWE1nYUdGdVpHeGxaQ0JpZVNCMGFHVWdjRzl6YVhScGRtVWdjR0YwYUNCdmNpQnVaV2RoZEdsMlpTNWNiaUFnSUNCcFppQW9LQ0Z2Y0hScGIyNXpMbWhoYzJndWFXNWpiSFZrWlZwbGNtOGdKaVlnSVdOdmJtUnBkR2x2Ym1Gc0tTQjhmQ0JwYzBWdGNIUjVLR052Ym1ScGRHbHZibUZzS1NrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUc5d2RHbHZibk11YVc1MlpYSnpaU2gwYUdsektUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnY21WMGRYSnVJRzl3ZEdsdmJuTXVabTRvZEdocGN5azdYRzRnSUNBZ2ZWeHVJQ0I5S1R0Y2JseHVJQ0JwYm5OMFlXNWpaUzV5WldkcGMzUmxja2hsYkhCbGNpZ25kVzVzWlhOekp5d2dablZ1WTNScGIyNG9ZMjl1WkdsMGFXOXVZV3dzSUc5d2RHbHZibk1wSUh0Y2JpQWdJQ0JwWmlBb1lYSm5kVzFsYm5SekxteGxibWQwYUNBaFBTQXlLU0I3WEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhoalpYQjBhVzl1S0NjamRXNXNaWE56SUhKbGNYVnBjbVZ6SUdWNFlXTjBiSGtnYjI1bElHRnlaM1Z0Wlc1MEp5azdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJwYm5OMFlXNWpaUzVvWld4d1pYSnpXeWRwWmlkZExtTmhiR3dvZEdocGN5d2dZMjl1WkdsMGFXOXVZV3dzSUh0Y2JpQWdJQ0FnSUdadU9pQnZjSFJwYjI1ekxtbHVkbVZ5YzJVc1hHNGdJQ0FnSUNCcGJuWmxjbk5sT2lCdmNIUnBiMjV6TG1adUxGeHVJQ0FnSUNBZ2FHRnphRG9nYjNCMGFXOXVjeTVvWVhOb1hHNGdJQ0FnZlNrN1hHNGdJSDBwTzF4dWZWeHVJbDE5XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IGZ1bmN0aW9uIChpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignbG9nJywgZnVuY3Rpb24gKCkgLyogbWVzc2FnZSwgb3B0aW9ucyAqL3tcbiAgICB2YXIgYXJncyA9IFt1bmRlZmluZWRdLFxuICAgICAgICBvcHRpb25zID0gYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgIGFyZ3MucHVzaChhcmd1bWVudHNbaV0pO1xuICAgIH1cblxuICAgIHZhciBsZXZlbCA9IDE7XG4gICAgaWYgKG9wdGlvbnMuaGFzaC5sZXZlbCAhPSBudWxsKSB7XG4gICAgICBsZXZlbCA9IG9wdGlvbnMuaGFzaC5sZXZlbDtcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmRhdGEubGV2ZWwgIT0gbnVsbCkge1xuICAgICAgbGV2ZWwgPSBvcHRpb25zLmRhdGEubGV2ZWw7XG4gICAgfVxuICAgIGFyZ3NbMF0gPSBsZXZlbDtcblxuICAgIGluc3RhbmNlLmxvZy5hcHBseShpbnN0YW5jZSwgYXJncyk7XG4gIH0pO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMmhsYkhCbGNuTXZiRzluTG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN096czdjVUpCUVdVc1ZVRkJVeXhSUVVGUkxFVkJRVVU3UVVGRGFFTXNWVUZCVVN4RFFVRkRMR05CUVdNc1EwRkJReXhMUVVGTExFVkJRVVVzYTBOQlFXbERPMEZCUXpsRUxGRkJRVWtzU1VGQlNTeEhRVUZITEVOQlFVTXNVMEZCVXl4RFFVRkRPMUZCUTNCQ0xFOUJRVThzUjBGQlJ5eFRRVUZUTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU0xUXl4VFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NVMEZCVXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdRVUZETjBNc1ZVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRMUVVONlFqczdRVUZGUkN4UlFVRkpMRXRCUVVzc1IwRkJSeXhEUVVGRExFTkJRVU03UVVGRFpDeFJRVUZKTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhKUVVGSkxFbEJRVWtzUlVGQlJUdEJRVU01UWl4WFFVRkxMRWRCUVVjc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTTdTMEZETlVJc1RVRkJUU3hKUVVGSkxFOUJRVThzUTBGQlF5eEpRVUZKTEVsQlFVa3NUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFbEJRVWtzU1VGQlNTeEZRVUZGTzBGQlEzSkVMRmRCUVVzc1IwRkJSeXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXp0TFFVTTFRanRCUVVORUxGRkJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNN08wRkJSV2hDTEZsQlFWRXNRMEZCUXl4SFFVRkhMRTFCUVVFc1EwRkJXaXhSUVVGUkxFVkJRVkVzU1VGQlNTeERRVUZETEVOQlFVTTdSMEZEZGtJc1EwRkJReXhEUVVGRE8wTkJRMG9pTENKbWFXeGxJam9pYkc5bkxtcHpJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpWlhod2IzSjBJR1JsWm1GMWJIUWdablZ1WTNScGIyNG9hVzV6ZEdGdVkyVXBJSHRjYmlBZ2FXNXpkR0Z1WTJVdWNtVm5hWE4wWlhKSVpXeHdaWElvSjJ4dlp5Y3NJR1oxYm1OMGFXOXVLQzhxSUcxbGMzTmhaMlVzSUc5d2RHbHZibk1nS2k4cElIdGNiaUFnSUNCc1pYUWdZWEpuY3lBOUlGdDFibVJsWm1sdVpXUmRMRnh1SUNBZ0lDQWdiM0IwYVc5dWN5QTlJR0Z5WjNWdFpXNTBjMXRoY21kMWJXVnVkSE11YkdWdVozUm9JQzBnTVYwN1hHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCaGNtZDFiV1Z1ZEhNdWJHVnVaM1JvSUMwZ01Uc2dhU3NyS1NCN1hHNGdJQ0FnSUNCaGNtZHpMbkIxYzJnb1lYSm5kVzFsYm5SelcybGRLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnNaWFFnYkdWMlpXd2dQU0F4TzF4dUlDQWdJR2xtSUNodmNIUnBiMjV6TG1oaGMyZ3ViR1YyWld3Z0lUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ2JHVjJaV3dnUFNCdmNIUnBiMjV6TG1oaGMyZ3ViR1YyWld3N1hHNGdJQ0FnZlNCbGJITmxJR2xtSUNodmNIUnBiMjV6TG1SaGRHRWdKaVlnYjNCMGFXOXVjeTVrWVhSaExteGxkbVZzSUNFOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUd4bGRtVnNJRDBnYjNCMGFXOXVjeTVrWVhSaExteGxkbVZzTzF4dUlDQWdJSDFjYmlBZ0lDQmhjbWR6V3pCZElEMGdiR1YyWld3N1hHNWNiaUFnSUNCcGJuTjBZVzVqWlM1c2IyY29MaTR1WVhKbmN5azdYRzRnSUgwcE8xeHVmVnh1SWwxOVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2xvb2t1cCcsIGZ1bmN0aW9uIChvYmosIGZpZWxkLCBvcHRpb25zKSB7XG4gICAgaWYgKCFvYmopIHtcbiAgICAgIC8vIE5vdGUgZm9yIDUuMDogQ2hhbmdlIHRvIFwib2JqID09IG51bGxcIiBpbiA1LjBcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zLmxvb2t1cFByb3BlcnR5KG9iaiwgZmllbGQpO1xuICB9KTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJobGJIQmxjbk12Ykc5dmEzVndMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3pzN2NVSkJRV1VzVlVGQlV5eFJRVUZSTEVWQlFVVTdRVUZEYUVNc1ZVRkJVU3hEUVVGRExHTkJRV01zUTBGQlF5eFJRVUZSTEVWQlFVVXNWVUZCVXl4SFFVRkhMRVZCUVVVc1MwRkJTeXhGUVVGRkxFOUJRVThzUlVGQlJUdEJRVU01UkN4UlFVRkpMRU5CUVVNc1IwRkJSeXhGUVVGRk96dEJRVVZTTEdGQlFVOHNSMEZCUnl4RFFVRkRPMHRCUTFvN1FVRkRSQ3hYUVVGUExFOUJRVThzUTBGQlF5eGpRVUZqTEVOQlFVTXNSMEZCUnl4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8wZEJRek5ETEVOQlFVTXNRMEZCUXp0RFFVTktJaXdpWm1sc1pTSTZJbXh2YjJ0MWNDNXFjeUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1WNGNHOXlkQ0JrWldaaGRXeDBJR1oxYm1OMGFXOXVLR2x1YzNSaGJtTmxLU0I3WEc0Z0lHbHVjM1JoYm1ObExuSmxaMmx6ZEdWeVNHVnNjR1Z5S0Nkc2IyOXJkWEFuTENCbWRXNWpkR2x2Ymlodlltb3NJR1pwWld4a0xDQnZjSFJwYjI1ektTQjdYRzRnSUNBZ2FXWWdLQ0Z2WW1vcElIdGNiaUFnSUNBZ0lDOHZJRTV2ZEdVZ1ptOXlJRFV1TURvZ1EyaGhibWRsSUhSdklGd2liMkpxSUQwOUlHNTFiR3hjSWlCcGJpQTFMakJjYmlBZ0lDQWdJSEpsZEhWeWJpQnZZbW83WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCdmNIUnBiMjV6TG14dmIydDFjRkJ5YjNCbGNuUjVLRzlpYWl3Z1ptbGxiR1FwTzF4dUlDQjlLVHRjYm4xY2JpSmRmUT09XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG4vLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbnZhciBfdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xuXG52YXIgX2V4Y2VwdGlvbiA9IHJlcXVpcmUoJy4uL2V4Y2VwdGlvbicpO1xuXG52YXIgX2V4Y2VwdGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9leGNlcHRpb24pO1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ3dpdGgnLCBmdW5jdGlvbiAoY29udGV4dCwgb3B0aW9ucykge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoICE9IDIpIHtcbiAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCcjd2l0aCByZXF1aXJlcyBleGFjdGx5IG9uZSBhcmd1bWVudCcpO1xuICAgIH1cbiAgICBpZiAoX3V0aWxzLmlzRnVuY3Rpb24oY29udGV4dCkpIHtcbiAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNhbGwodGhpcyk7XG4gICAgfVxuXG4gICAgdmFyIGZuID0gb3B0aW9ucy5mbjtcblxuICAgIGlmICghX3V0aWxzLmlzRW1wdHkoY29udGV4dCkpIHtcbiAgICAgIHZhciBkYXRhID0gb3B0aW9ucy5kYXRhO1xuICAgICAgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmlkcykge1xuICAgICAgICBkYXRhID0gX3V0aWxzLmNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgICAgIGRhdGEuY29udGV4dFBhdGggPSBfdXRpbHMuYXBwZW5kQ29udGV4dFBhdGgob3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoLCBvcHRpb25zLmlkc1swXSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmbihjb250ZXh0LCB7XG4gICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgIGJsb2NrUGFyYW1zOiBfdXRpbHMuYmxvY2tQYXJhbXMoW2NvbnRleHRdLCBbZGF0YSAmJiBkYXRhLmNvbnRleHRQYXRoXSlcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5pbnZlcnNlKHRoaXMpO1xuICAgIH1cbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwyaGxiSEJsY25NdmQybDBhQzVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN096czdPM0ZDUVUxUExGVkJRVlU3TzNsQ1FVTkxMR05CUVdNN096czdjVUpCUlhKQ0xGVkJRVk1zVVVGQlVTeEZRVUZGTzBGQlEyaERMRlZCUVZFc1EwRkJReXhqUVVGakxFTkJRVU1zVFVGQlRTeEZRVUZGTEZWQlFWTXNUMEZCVHl4RlFVRkZMRTlCUVU4c1JVRkJSVHRCUVVONlJDeFJRVUZKTEZOQlFWTXNRMEZCUXl4TlFVRk5MRWxCUVVrc1EwRkJReXhGUVVGRk8wRkJRM3BDTEZsQlFVMHNNa0pCUVdNc2NVTkJRWEZETEVOQlFVTXNRMEZCUXp0TFFVTTFSRHRCUVVORUxGRkJRVWtzYTBKQlFWY3NUMEZCVHl4RFFVRkRMRVZCUVVVN1FVRkRka0lzWVVGQlR5eEhRVUZITEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03UzBGRE9VSTdPMEZCUlVRc1VVRkJTU3hGUVVGRkxFZEJRVWNzVDBGQlR5eERRVUZETEVWQlFVVXNRMEZCUXpzN1FVRkZjRUlzVVVGQlNTeERRVUZETEdWQlFWRXNUMEZCVHl4RFFVRkRMRVZCUVVVN1FVRkRja0lzVlVGQlNTeEpRVUZKTEVkQlFVY3NUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJRenRCUVVONFFpeFZRVUZKTEU5QlFVOHNRMEZCUXl4SlFVRkpMRWxCUVVrc1QwRkJUeXhEUVVGRExFZEJRVWNzUlVGQlJUdEJRVU12UWl4WlFVRkpMRWRCUVVjc2JVSkJRVmtzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMEZCUTJwRExGbEJRVWtzUTBGQlF5eFhRVUZYTEVkQlFVY3NlVUpCUTJwQ0xFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RlFVTjRRaXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVTm1MRU5CUVVNN1QwRkRTRHM3UVVGRlJDeGhRVUZQTEVWQlFVVXNRMEZCUXl4UFFVRlBMRVZCUVVVN1FVRkRha0lzV1VGQlNTeEZRVUZGTEVsQlFVazdRVUZEVml4dFFrRkJWeXhGUVVGRkxHMUNRVUZaTEVOQlFVTXNUMEZCVHl4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGSkxFbEJRVWtzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRPMDlCUTJoRkxFTkJRVU1zUTBGQlF6dExRVU5LTEUxQlFVMDdRVUZEVEN4aFFVRlBMRTlCUVU4c1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdTMEZET1VJN1IwRkRSaXhEUVVGRExFTkJRVU03UTBGRFNpSXNJbVpwYkdVaU9pSjNhWFJvTG1weklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElIdGNiaUFnWVhCd1pXNWtRMjl1ZEdWNGRGQmhkR2dzWEc0Z0lHSnNiMk5yVUdGeVlXMXpMRnh1SUNCamNtVmhkR1ZHY21GdFpTeGNiaUFnYVhORmJYQjBlU3hjYmlBZ2FYTkdkVzVqZEdsdmJseHVmU0JtY205dElDY3VMaTkxZEdsc2N5YzdYRzVwYlhCdmNuUWdSWGhqWlhCMGFXOXVJR1p5YjIwZ0p5NHVMMlY0WTJWd2RHbHZiaWM3WEc1Y2JtVjRjRzl5ZENCa1pXWmhkV3gwSUdaMWJtTjBhVzl1S0dsdWMzUmhibU5sS1NCN1hHNGdJR2x1YzNSaGJtTmxMbkpsWjJsemRHVnlTR1ZzY0dWeUtDZDNhWFJvSnl3Z1puVnVZM1JwYjI0b1kyOXVkR1Y0ZEN3Z2IzQjBhVzl1Y3lrZ2UxeHVJQ0FnSUdsbUlDaGhjbWQxYldWdWRITXViR1Z1WjNSb0lDRTlJRElwSUh0Y2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmVHTmxjSFJwYjI0b0p5TjNhWFJvSUhKbGNYVnBjbVZ6SUdWNFlXTjBiSGtnYjI1bElHRnlaM1Z0Wlc1MEp5azdYRzRnSUNBZ2ZWeHVJQ0FnSUdsbUlDaHBjMFoxYm1OMGFXOXVLR052Ym5SbGVIUXBLU0I3WEc0Z0lDQWdJQ0JqYjI1MFpYaDBJRDBnWTI5dWRHVjRkQzVqWVd4c0tIUm9hWE1wTzF4dUlDQWdJSDFjYmx4dUlDQWdJR3hsZENCbWJpQTlJRzl3ZEdsdmJuTXVabTQ3WEc1Y2JpQWdJQ0JwWmlBb0lXbHpSVzF3ZEhrb1kyOXVkR1Y0ZENrcElIdGNiaUFnSUNBZ0lHeGxkQ0JrWVhSaElEMGdiM0IwYVc5dWN5NWtZWFJoTzF4dUlDQWdJQ0FnYVdZZ0tHOXdkR2x2Ym5NdVpHRjBZU0FtSmlCdmNIUnBiMjV6TG1sa2N5a2dlMXh1SUNBZ0lDQWdJQ0JrWVhSaElEMGdZM0psWVhSbFJuSmhiV1VvYjNCMGFXOXVjeTVrWVhSaEtUdGNiaUFnSUNBZ0lDQWdaR0YwWVM1amIyNTBaWGgwVUdGMGFDQTlJR0Z3Y0dWdVpFTnZiblJsZUhSUVlYUm9LRnh1SUNBZ0lDQWdJQ0FnSUc5d2RHbHZibk11WkdGMFlTNWpiMjUwWlhoMFVHRjBhQ3hjYmlBZ0lDQWdJQ0FnSUNCdmNIUnBiMjV6TG1sa2Mxc3dYVnh1SUNBZ0lDQWdJQ0FwTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCeVpYUjFjbTRnWm00b1kyOXVkR1Y0ZEN3Z2UxeHVJQ0FnSUNBZ0lDQmtZWFJoT2lCa1lYUmhMRnh1SUNBZ0lDQWdJQ0JpYkc5amExQmhjbUZ0Y3pvZ1lteHZZMnRRWVhKaGJYTW9XMk52Ym5SbGVIUmRMQ0JiWkdGMFlTQW1KaUJrWVhSaExtTnZiblJsZUhSUVlYUm9YU2xjYmlBZ0lDQWdJSDBwTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2IzQjBhVzl1Y3k1cGJuWmxjbk5sS0hSb2FYTXBPMXh1SUNBZ0lIMWNiaUFnZlNrN1hHNTlYRzRpWFgwPVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5yZWdpc3RlckRlZmF1bHRIZWxwZXJzID0gcmVnaXN0ZXJEZWZhdWx0SGVscGVycztcbmV4cG9ydHMubW92ZUhlbHBlclRvSG9va3MgPSBtb3ZlSGVscGVyVG9Ib29rcztcbi8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxudmFyIF9oZWxwZXJzQmxvY2tIZWxwZXJNaXNzaW5nID0gcmVxdWlyZSgnLi9oZWxwZXJzL2Jsb2NrLWhlbHBlci1taXNzaW5nJyk7XG5cbnZhciBfaGVscGVyc0Jsb2NrSGVscGVyTWlzc2luZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oZWxwZXJzQmxvY2tIZWxwZXJNaXNzaW5nKTtcblxudmFyIF9oZWxwZXJzRWFjaCA9IHJlcXVpcmUoJy4vaGVscGVycy9lYWNoJyk7XG5cbnZhciBfaGVscGVyc0VhY2gyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGVscGVyc0VhY2gpO1xuXG52YXIgX2hlbHBlcnNIZWxwZXJNaXNzaW5nID0gcmVxdWlyZSgnLi9oZWxwZXJzL2hlbHBlci1taXNzaW5nJyk7XG5cbnZhciBfaGVscGVyc0hlbHBlck1pc3NpbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGVscGVyc0hlbHBlck1pc3NpbmcpO1xuXG52YXIgX2hlbHBlcnNJZiA9IHJlcXVpcmUoJy4vaGVscGVycy9pZicpO1xuXG52YXIgX2hlbHBlcnNJZjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oZWxwZXJzSWYpO1xuXG52YXIgX2hlbHBlcnNMb2cgPSByZXF1aXJlKCcuL2hlbHBlcnMvbG9nJyk7XG5cbnZhciBfaGVscGVyc0xvZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oZWxwZXJzTG9nKTtcblxudmFyIF9oZWxwZXJzTG9va3VwID0gcmVxdWlyZSgnLi9oZWxwZXJzL2xvb2t1cCcpO1xuXG52YXIgX2hlbHBlcnNMb29rdXAyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGVscGVyc0xvb2t1cCk7XG5cbnZhciBfaGVscGVyc1dpdGggPSByZXF1aXJlKCcuL2hlbHBlcnMvd2l0aCcpO1xuXG52YXIgX2hlbHBlcnNXaXRoMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hlbHBlcnNXaXRoKTtcblxuZnVuY3Rpb24gcmVnaXN0ZXJEZWZhdWx0SGVscGVycyhpbnN0YW5jZSkge1xuICBfaGVscGVyc0Jsb2NrSGVscGVyTWlzc2luZzJbJ2RlZmF1bHQnXShpbnN0YW5jZSk7XG4gIF9oZWxwZXJzRWFjaDJbJ2RlZmF1bHQnXShpbnN0YW5jZSk7XG4gIF9oZWxwZXJzSGVscGVyTWlzc2luZzJbJ2RlZmF1bHQnXShpbnN0YW5jZSk7XG4gIF9oZWxwZXJzSWYyWydkZWZhdWx0J10oaW5zdGFuY2UpO1xuICBfaGVscGVyc0xvZzJbJ2RlZmF1bHQnXShpbnN0YW5jZSk7XG4gIF9oZWxwZXJzTG9va3VwMlsnZGVmYXVsdCddKGluc3RhbmNlKTtcbiAgX2hlbHBlcnNXaXRoMlsnZGVmYXVsdCddKGluc3RhbmNlKTtcbn1cblxuZnVuY3Rpb24gbW92ZUhlbHBlclRvSG9va3MoaW5zdGFuY2UsIGhlbHBlck5hbWUsIGtlZXBIZWxwZXIpIHtcbiAgaWYgKGluc3RhbmNlLmhlbHBlcnNbaGVscGVyTmFtZV0pIHtcbiAgICBpbnN0YW5jZS5ob29rc1toZWxwZXJOYW1lXSA9IGluc3RhbmNlLmhlbHBlcnNbaGVscGVyTmFtZV07XG4gICAgaWYgKCFrZWVwSGVscGVyKSB7XG4gICAgICBkZWxldGUgaW5zdGFuY2UuaGVscGVyc1toZWxwZXJOYW1lXTtcbiAgICB9XG4gIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJobGJIQmxjbk11YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN096czdPenM3TzNsRFFVRjFReXhuUTBGQlowTTdPenM3TWtKQlF6bERMR2RDUVVGblFqczdPenR2UTBGRFVDd3dRa0ZCTUVJN096czdlVUpCUTNKRExHTkJRV003T3pzN01FSkJRMklzWlVGQlpUczdPenMyUWtGRFdpeHJRa0ZCYTBJN096czdNa0pCUTNCQ0xHZENRVUZuUWpzN096dEJRVVZzUXl4VFFVRlRMSE5DUVVGelFpeERRVUZETEZGQlFWRXNSVUZCUlR0QlFVTXZReXg1UTBGQk1rSXNVVUZCVVN4RFFVRkRMRU5CUVVNN1FVRkRja01zTWtKQlFXRXNVVUZCVVN4RFFVRkRMRU5CUVVNN1FVRkRka0lzYjBOQlFYTkNMRkZCUVZFc1EwRkJReXhEUVVGRE8wRkJRMmhETEhsQ1FVRlhMRkZCUVZFc1EwRkJReXhEUVVGRE8wRkJRM0pDTERCQ1FVRlpMRkZCUVZFc1EwRkJReXhEUVVGRE8wRkJRM1JDTERaQ1FVRmxMRkZCUVZFc1EwRkJReXhEUVVGRE8wRkJRM3BDTERKQ1FVRmhMRkZCUVZFc1EwRkJReXhEUVVGRE8wTkJRM2hDT3p0QlFVVk5MRk5CUVZNc2FVSkJRV2xDTEVOQlFVTXNVVUZCVVN4RlFVRkZMRlZCUVZVc1JVRkJSU3hWUVVGVkxFVkJRVVU3UVVGRGJFVXNUVUZCU1N4UlFVRlJMRU5CUVVNc1QwRkJUeXhEUVVGRExGVkJRVlVzUTBGQlF5eEZRVUZGTzBGQlEyaERMRmxCUVZFc1EwRkJReXhMUVVGTExFTkJRVU1zVlVGQlZTeERRVUZETEVkQlFVY3NVVUZCVVN4RFFVRkRMRTlCUVU4c1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF6dEJRVU14UkN4UlFVRkpMRU5CUVVNc1ZVRkJWU3hGUVVGRk8wRkJRMllzWVVGQlR5eFJRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8wdEJRM0pETzBkQlEwWTdRMEZEUmlJc0ltWnBiR1VpT2lKb1pXeHdaWEp6TG1weklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElISmxaMmx6ZEdWeVFteHZZMnRJWld4d1pYSk5hWE56YVc1bklHWnliMjBnSnk0dmFHVnNjR1Z5Y3k5aWJHOWpheTFvWld4d1pYSXRiV2x6YzJsdVp5YzdYRzVwYlhCdmNuUWdjbVZuYVhOMFpYSkZZV05vSUdaeWIyMGdKeTR2YUdWc2NHVnljeTlsWVdOb0p6dGNibWx0Y0c5eWRDQnlaV2RwYzNSbGNraGxiSEJsY2sxcGMzTnBibWNnWm5KdmJTQW5MaTlvWld4d1pYSnpMMmhsYkhCbGNpMXRhWE56YVc1bkp6dGNibWx0Y0c5eWRDQnlaV2RwYzNSbGNrbG1JR1p5YjIwZ0p5NHZhR1ZzY0dWeWN5OXBaaWM3WEc1cGJYQnZjblFnY21WbmFYTjBaWEpNYjJjZ1puSnZiU0FuTGk5b1pXeHdaWEp6TDJ4dlp5YzdYRzVwYlhCdmNuUWdjbVZuYVhOMFpYSk1iMjlyZFhBZ1puSnZiU0FuTGk5b1pXeHdaWEp6TDJ4dmIydDFjQ2M3WEc1cGJYQnZjblFnY21WbmFYTjBaWEpYYVhSb0lHWnliMjBnSnk0dmFHVnNjR1Z5Y3k5M2FYUm9KenRjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhKbFoybHpkR1Z5UkdWbVlYVnNkRWhsYkhCbGNuTW9hVzV6ZEdGdVkyVXBJSHRjYmlBZ2NtVm5hWE4wWlhKQ2JHOWphMGhsYkhCbGNrMXBjM05wYm1jb2FXNXpkR0Z1WTJVcE8xeHVJQ0J5WldkcGMzUmxja1ZoWTJnb2FXNXpkR0Z1WTJVcE8xeHVJQ0J5WldkcGMzUmxja2hsYkhCbGNrMXBjM05wYm1jb2FXNXpkR0Z1WTJVcE8xeHVJQ0J5WldkcGMzUmxja2xtS0dsdWMzUmhibU5sS1R0Y2JpQWdjbVZuYVhOMFpYSk1iMmNvYVc1emRHRnVZMlVwTzF4dUlDQnlaV2RwYzNSbGNreHZiMnQxY0NocGJuTjBZVzVqWlNrN1hHNGdJSEpsWjJsemRHVnlWMmwwYUNocGJuTjBZVzVqWlNrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ0YjNabFNHVnNjR1Z5Vkc5SWIyOXJjeWhwYm5OMFlXNWpaU3dnYUdWc2NHVnlUbUZ0WlN3Z2EyVmxjRWhsYkhCbGNpa2dlMXh1SUNCcFppQW9hVzV6ZEdGdVkyVXVhR1ZzY0dWeWMxdG9aV3h3WlhKT1lXMWxYU2tnZTF4dUlDQWdJR2x1YzNSaGJtTmxMbWh2YjJ0elcyaGxiSEJsY2s1aGJXVmRJRDBnYVc1emRHRnVZMlV1YUdWc2NHVnljMXRvWld4d1pYSk9ZVzFsWFR0Y2JpQWdJQ0JwWmlBb0lXdGxaWEJJWld4d1pYSXBJSHRjYmlBZ0lDQWdJR1JsYkdWMFpTQnBibk4wWVc1alpTNW9aV3h3WlhKelcyaGxiSEJsY2s1aGJXVmRPMXh1SUNBZ0lIMWNiaUFnZlZ4dWZWeHVJbDE5XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBmdW5jdGlvbiAoaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJEZWNvcmF0b3IoJ2lubGluZScsIGZ1bmN0aW9uIChmbiwgcHJvcHMsIGNvbnRhaW5lciwgb3B0aW9ucykge1xuICAgIHZhciByZXQgPSBmbjtcbiAgICBpZiAoIXByb3BzLnBhcnRpYWxzKSB7XG4gICAgICBwcm9wcy5wYXJ0aWFscyA9IHt9O1xuICAgICAgcmV0ID0gZnVuY3Rpb24gKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IHBhcnRpYWxzIHN0YWNrIGZyYW1lIHByaW9yIHRvIGV4ZWMuXG4gICAgICAgIHZhciBvcmlnaW5hbCA9IGNvbnRhaW5lci5wYXJ0aWFscztcbiAgICAgICAgY29udGFpbmVyLnBhcnRpYWxzID0gX3V0aWxzLmV4dGVuZCh7fSwgb3JpZ2luYWwsIHByb3BzLnBhcnRpYWxzKTtcbiAgICAgICAgdmFyIHJldCA9IGZuKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgICAgICBjb250YWluZXIucGFydGlhbHMgPSBvcmlnaW5hbDtcbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMucGFydGlhbHNbb3B0aW9ucy5hcmdzWzBdXSA9IG9wdGlvbnMuZm47XG5cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJSbFkyOXlZWFJ2Y25NdmFXNXNhVzVsTG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN096czdjVUpCUVhWQ0xGVkJRVlU3TzNGQ1FVVnNRaXhWUVVGVExGRkJRVkVzUlVGQlJUdEJRVU5vUXl4VlFVRlJMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNVVUZCVVN4RlFVRkZMRlZCUVZNc1JVRkJSU3hGUVVGRkxFdEJRVXNzUlVGQlJTeFRRVUZUTEVWQlFVVXNUMEZCVHl4RlFVRkZPMEZCUXpORkxGRkJRVWtzUjBGQlJ5eEhRVUZITEVWQlFVVXNRMEZCUXp0QlFVTmlMRkZCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVVVGQlVTeEZRVUZGTzBGQlEyNUNMRmRCUVVzc1EwRkJReXhSUVVGUkxFZEJRVWNzUlVGQlJTeERRVUZETzBGQlEzQkNMRk5CUVVjc1IwRkJSeXhWUVVGVExFOUJRVThzUlVGQlJTeFBRVUZQTEVWQlFVVTdPMEZCUlM5Q0xGbEJRVWtzVVVGQlVTeEhRVUZITEZOQlFWTXNRMEZCUXl4UlFVRlJMRU5CUVVNN1FVRkRiRU1zYVVKQlFWTXNRMEZCUXl4UlFVRlJMRWRCUVVjc1kwRkJUeXhGUVVGRkxFVkJRVVVzVVVGQlVTeEZRVUZGTEV0QlFVc3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenRCUVVNeFJDeFpRVUZKTEVkQlFVY3NSMEZCUnl4RlFVRkZMRU5CUVVNc1QwRkJUeXhGUVVGRkxFOUJRVThzUTBGQlF5eERRVUZETzBGQlF5OUNMR2xDUVVGVExFTkJRVU1zVVVGQlVTeEhRVUZITEZGQlFWRXNRMEZCUXp0QlFVTTVRaXhsUVVGUExFZEJRVWNzUTBGQlF6dFBRVU5hTEVOQlFVTTdTMEZEU0RzN1FVRkZSQ3hUUVVGTExFTkJRVU1zVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eFBRVUZQTEVOQlFVTXNSVUZCUlN4RFFVRkRPenRCUVVVM1F5eFhRVUZQTEVkQlFVY3NRMEZCUXp0SFFVTmFMRU5CUVVNc1EwRkJRenREUVVOS0lpd2labWxzWlNJNkltbHViR2x1WlM1cWN5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQjdJR1Y0ZEdWdVpDQjlJR1p5YjIwZ0p5NHVMM1YwYVd4ekp6dGNibHh1Wlhod2IzSjBJR1JsWm1GMWJIUWdablZ1WTNScGIyNG9hVzV6ZEdGdVkyVXBJSHRjYmlBZ2FXNXpkR0Z1WTJVdWNtVm5hWE4wWlhKRVpXTnZjbUYwYjNJb0oybHViR2x1WlNjc0lHWjFibU4wYVc5dUtHWnVMQ0J3Y205d2N5d2dZMjl1ZEdGcGJtVnlMQ0J2Y0hScGIyNXpLU0I3WEc0Z0lDQWdiR1YwSUhKbGRDQTlJR1p1TzF4dUlDQWdJR2xtSUNnaGNISnZjSE11Y0dGeWRHbGhiSE1wSUh0Y2JpQWdJQ0FnSUhCeWIzQnpMbkJoY25ScFlXeHpJRDBnZTMwN1hHNGdJQ0FnSUNCeVpYUWdQU0JtZFc1amRHbHZiaWhqYjI1MFpYaDBMQ0J2Y0hScGIyNXpLU0I3WEc0Z0lDQWdJQ0FnSUM4dklFTnlaV0YwWlNCaElHNWxkeUJ3WVhKMGFXRnNjeUJ6ZEdGamF5Qm1jbUZ0WlNCd2NtbHZjaUIwYnlCbGVHVmpMbHh1SUNBZ0lDQWdJQ0JzWlhRZ2IzSnBaMmx1WVd3Z1BTQmpiMjUwWVdsdVpYSXVjR0Z5ZEdsaGJITTdYRzRnSUNBZ0lDQWdJR052Ym5SaGFXNWxjaTV3WVhKMGFXRnNjeUE5SUdWNGRHVnVaQ2g3ZlN3Z2IzSnBaMmx1WVd3c0lIQnliM0J6TG5CaGNuUnBZV3h6S1R0Y2JpQWdJQ0FnSUNBZ2JHVjBJSEpsZENBOUlHWnVLR052Ym5SbGVIUXNJRzl3ZEdsdmJuTXBPMXh1SUNBZ0lDQWdJQ0JqYjI1MFlXbHVaWEl1Y0dGeWRHbGhiSE1nUFNCdmNtbG5hVzVoYkR0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhKbGREdGNiaUFnSUNBZ0lIMDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NISnZjSE11Y0dGeWRHbGhiSE5iYjNCMGFXOXVjeTVoY21keld6QmRYU0E5SUc5d2RHbHZibk11Wm00N1hHNWNiaUFnSUNCeVpYUjFjbTRnY21WME8xeHVJQ0I5S1R0Y2JuMWNiaUpkZlE9PVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5yZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzID0gcmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9ycztcbi8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxudmFyIF9kZWNvcmF0b3JzSW5saW5lID0gcmVxdWlyZSgnLi9kZWNvcmF0b3JzL2lubGluZScpO1xuXG52YXIgX2RlY29yYXRvcnNJbmxpbmUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGVjb3JhdG9yc0lubGluZSk7XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnMoaW5zdGFuY2UpIHtcbiAgX2RlY29yYXRvcnNJbmxpbmUyWydkZWZhdWx0J10oaW5zdGFuY2UpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMlJsWTI5eVlYUnZjbk11YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN096czdPenM3WjBOQlFUSkNMSEZDUVVGeFFqczdPenRCUVVWNlF5eFRRVUZUTEhsQ1FVRjVRaXhEUVVGRExGRkJRVkVzUlVGQlJUdEJRVU5zUkN4blEwRkJaU3hSUVVGUkxFTkJRVU1zUTBGQlF6dERRVU14UWlJc0ltWnBiR1VpT2lKa1pXTnZjbUYwYjNKekxtcHpJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSEpsWjJsemRHVnlTVzVzYVc1bElHWnliMjBnSnk0dlpHVmpiM0poZEc5eWN5OXBibXhwYm1Vbk8xeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdjbVZuYVhOMFpYSkVaV1poZFd4MFJHVmpiM0poZEc5eWN5aHBibk4wWVc1alpTa2dlMXh1SUNCeVpXZHBjM1JsY2tsdWJHbHVaU2hwYm5OMFlXNWpaU2s3WEc1OVhHNGlYWDA9XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG5cbnZhciBsb2dnZXIgPSB7XG4gIG1ldGhvZE1hcDogWydkZWJ1ZycsICdpbmZvJywgJ3dhcm4nLCAnZXJyb3InXSxcbiAgbGV2ZWw6ICdpbmZvJyxcblxuICAvLyBNYXBzIGEgZ2l2ZW4gbGV2ZWwgdmFsdWUgdG8gdGhlIGBtZXRob2RNYXBgIGluZGV4ZXMgYWJvdmUuXG4gIGxvb2t1cExldmVsOiBmdW5jdGlvbiBsb29rdXBMZXZlbChsZXZlbCkge1xuICAgIGlmICh0eXBlb2YgbGV2ZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICB2YXIgbGV2ZWxNYXAgPSBfdXRpbHMuaW5kZXhPZihsb2dnZXIubWV0aG9kTWFwLCBsZXZlbC50b0xvd2VyQ2FzZSgpKTtcbiAgICAgIGlmIChsZXZlbE1hcCA+PSAwKSB7XG4gICAgICAgIGxldmVsID0gbGV2ZWxNYXA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXZlbCA9IHBhcnNlSW50KGxldmVsLCAxMCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxldmVsO1xuICB9LFxuXG4gIC8vIENhbiBiZSBvdmVycmlkZGVuIGluIHRoZSBob3N0IGVudmlyb25tZW50XG4gIGxvZzogZnVuY3Rpb24gbG9nKGxldmVsKSB7XG4gICAgbGV2ZWwgPSBsb2dnZXIubG9va3VwTGV2ZWwobGV2ZWwpO1xuXG4gICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiBsb2dnZXIubG9va3VwTGV2ZWwobG9nZ2VyLmxldmVsKSA8PSBsZXZlbCkge1xuICAgICAgdmFyIG1ldGhvZCA9IGxvZ2dlci5tZXRob2RNYXBbbGV2ZWxdO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGlmICghY29uc29sZVttZXRob2RdKSB7XG4gICAgICAgIG1ldGhvZCA9ICdsb2cnO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgbWVzc2FnZSA9IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgICAgbWVzc2FnZVtfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICB9XG5cbiAgICAgIGNvbnNvbGVbbWV0aG9kXS5hcHBseShjb25zb2xlLCBtZXNzYWdlKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgfVxuICB9XG59O1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBsb2dnZXI7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJ4dloyZGxjaTVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN08zRkNRVUYzUWl4VFFVRlRPenRCUVVWcVF5eEpRVUZKTEUxQlFVMHNSMEZCUnp0QlFVTllMRmRCUVZNc1JVRkJSU3hEUVVGRExFOUJRVThzUlVGQlJTeE5RVUZOTEVWQlFVVXNUVUZCVFN4RlFVRkZMRTlCUVU4c1EwRkJRenRCUVVNM1F5eFBRVUZMTEVWQlFVVXNUVUZCVFRzN08wRkJSMklzWVVGQlZ5eEZRVUZGTEhGQ1FVRlRMRXRCUVVzc1JVRkJSVHRCUVVNelFpeFJRVUZKTEU5QlFVOHNTMEZCU3l4TFFVRkxMRkZCUVZFc1JVRkJSVHRCUVVNM1FpeFZRVUZKTEZGQlFWRXNSMEZCUnl4bFFVRlJMRTFCUVUwc1EwRkJReXhUUVVGVExFVkJRVVVzUzBGQlN5eERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRMRU5CUVVNN1FVRkRPVVFzVlVGQlNTeFJRVUZSTEVsQlFVa3NRMEZCUXl4RlFVRkZPMEZCUTJwQ0xHRkJRVXNzUjBGQlJ5eFJRVUZSTEVOQlFVTTdUMEZEYkVJc1RVRkJUVHRCUVVOTUxHRkJRVXNzUjBGQlJ5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8wOUJRemRDTzB0QlEwWTdPMEZCUlVRc1YwRkJUeXhMUVVGTExFTkJRVU03UjBGRFpEczdPMEZCUjBRc1MwRkJSeXhGUVVGRkxHRkJRVk1zUzBGQlN5eEZRVUZqTzBGQlF5OUNMRk5CUVVzc1IwRkJSeXhOUVVGTkxFTkJRVU1zVjBGQlZ5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPenRCUVVWc1F5eFJRVU5GTEU5QlFVOHNUMEZCVHl4TFFVRkxMRmRCUVZjc1NVRkRPVUlzVFVGQlRTeERRVUZETEZkQlFWY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUzBGQlN5eEZRVU42UXp0QlFVTkJMRlZCUVVrc1RVRkJUU3hIUVVGSExFMUJRVTBzUTBGQlF5eFRRVUZUTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN08wRkJSWEpETEZWQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRVVU3UVVGRGNFSXNZMEZCVFN4SFFVRkhMRXRCUVVzc1EwRkJRenRQUVVOb1FqczdkME5CV0cxQ0xFOUJRVTg3UVVGQlVDeGxRVUZQT3pzN1FVRlpNMElzWVVGQlR5eERRVUZETEUxQlFVMHNUMEZCUXl4RFFVRm1MRTlCUVU4c1JVRkJXU3hQUVVGUExFTkJRVU1zUTBGQlF6dExRVU0zUWp0SFFVTkdPME5CUTBZc1EwRkJRenM3Y1VKQlJXRXNUVUZCVFNJc0ltWnBiR1VpT2lKc2IyZG5aWEl1YW5NaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ2V5QnBibVJsZUU5bUlIMGdabkp2YlNBbkxpOTFkR2xzY3ljN1hHNWNibXhsZENCc2IyZG5aWElnUFNCN1hHNGdJRzFsZEdodlpFMWhjRG9nV3lka1pXSjFaeWNzSUNkcGJtWnZKeXdnSjNkaGNtNG5MQ0FuWlhKeWIzSW5YU3hjYmlBZ2JHVjJaV3c2SUNkcGJtWnZKeXhjYmx4dUlDQXZMeUJOWVhCeklHRWdaMmwyWlc0Z2JHVjJaV3dnZG1Gc2RXVWdkRzhnZEdobElHQnRaWFJvYjJSTllYQmdJR2x1WkdWNFpYTWdZV0p2ZG1VdVhHNGdJR3h2YjJ0MWNFeGxkbVZzT2lCbWRXNWpkR2x2Ymloc1pYWmxiQ2tnZTF4dUlDQWdJR2xtSUNoMGVYQmxiMllnYkdWMlpXd2dQVDA5SUNkemRISnBibWNuS1NCN1hHNGdJQ0FnSUNCc1pYUWdiR1YyWld4TllYQWdQU0JwYm1SbGVFOW1LR3h2WjJkbGNpNXRaWFJvYjJSTllYQXNJR3hsZG1Wc0xuUnZURzkzWlhKRFlYTmxLQ2twTzF4dUlDQWdJQ0FnYVdZZ0tHeGxkbVZzVFdGd0lENDlJREFwSUh0Y2JpQWdJQ0FnSUNBZ2JHVjJaV3dnUFNCc1pYWmxiRTFoY0R0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUd4bGRtVnNJRDBnY0dGeWMyVkpiblFvYkdWMlpXd3NJREV3S1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0J5WlhSMWNtNGdiR1YyWld3N1hHNGdJSDBzWEc1Y2JpQWdMeThnUTJGdUlHSmxJRzkyWlhKeWFXUmtaVzRnYVc0Z2RHaGxJR2h2YzNRZ1pXNTJhWEp2Ym0xbGJuUmNiaUFnYkc5bk9pQm1kVzVqZEdsdmJpaHNaWFpsYkN3Z0xpNHViV1Z6YzJGblpTa2dlMXh1SUNBZ0lHeGxkbVZzSUQwZ2JHOW5aMlZ5TG14dmIydDFjRXhsZG1Wc0tHeGxkbVZzS1R0Y2JseHVJQ0FnSUdsbUlDaGNiaUFnSUNBZ0lIUjVjR1Z2WmlCamIyNXpiMnhsSUNFOVBTQW5kVzVrWldacGJtVmtKeUFtSmx4dUlDQWdJQ0FnYkc5bloyVnlMbXh2YjJ0MWNFeGxkbVZzS0d4dloyZGxjaTVzWlhabGJDa2dQRDBnYkdWMlpXeGNiaUFnSUNBcElIdGNiaUFnSUNBZ0lHeGxkQ0J0WlhSb2IyUWdQU0JzYjJkblpYSXViV1YwYUc5a1RXRndXMnhsZG1Wc1hUdGNiaUFnSUNBZ0lDOHZJR1Z6YkdsdWRDMWthWE5oWW14bExXNWxlSFF0YkdsdVpTQnVieTFqYjI1emIyeGxYRzRnSUNBZ0lDQnBaaUFvSVdOdmJuTnZiR1ZiYldWMGFHOWtYU2tnZTF4dUlDQWdJQ0FnSUNCdFpYUm9iMlFnUFNBbmJHOW5KenRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJR052Ym5OdmJHVmJiV1YwYUc5a1hTZ3VMaTV0WlhOellXZGxLVHNnTHk4Z1pYTnNhVzUwTFdScGMyRmliR1V0YkdsdVpTQnVieTFqYjI1emIyeGxYRzRnSUNBZ2ZWeHVJQ0I5WEc1OU8xeHVYRzVsZUhCdmNuUWdaR1ZtWVhWc2RDQnNiMmRuWlhJN1hHNGlYWDA9XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzLmNyZWF0ZU5ld0xvb2t1cE9iamVjdCA9IGNyZWF0ZU5ld0xvb2t1cE9iamVjdDtcblxudmFyIF91dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IG9iamVjdCB3aXRoIFwibnVsbFwiLXByb3RvdHlwZSB0byBhdm9pZCB0cnV0aHkgcmVzdWx0cyBvbiBwcm90b3R5cGUgcHJvcGVydGllcy5cbiAqIFRoZSByZXN1bHRpbmcgb2JqZWN0IGNhbiBiZSB1c2VkIHdpdGggXCJvYmplY3RbcHJvcGVydHldXCIgdG8gY2hlY2sgaWYgYSBwcm9wZXJ0eSBleGlzdHNcbiAqIEBwYXJhbSB7Li4ub2JqZWN0fSBzb3VyY2VzIGEgdmFyYXJncyBwYXJhbWV0ZXIgb2Ygc291cmNlIG9iamVjdHMgdGhhdCB3aWxsIGJlIG1lcmdlZFxuICogQHJldHVybnMge29iamVjdH1cbiAqL1xuXG5mdW5jdGlvbiBjcmVhdGVOZXdMb29rdXBPYmplY3QoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBzb3VyY2VzID0gQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgc291cmNlc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHJldHVybiBfdXRpbHMuZXh0ZW5kLmFwcGx5KHVuZGVmaW5lZCwgW09iamVjdC5jcmVhdGUobnVsbCldLmNvbmNhdChzb3VyY2VzKSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMmx1ZEdWeWJtRnNMMk55WldGMFpTMXVaWGN0Ykc5dmEzVndMVzlpYW1WamRDNXFjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenM3T3p0eFFrRkJkVUlzVlVGQlZUczdPenM3T3pzN08wRkJVVEZDTEZOQlFWTXNjVUpCUVhGQ0xFZEJRV0U3YjBOQlFWUXNUMEZCVHp0QlFVRlFMRmRCUVU4N096dEJRVU01UXl4VFFVRlBMR2REUVVGUExFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVVzc1QwRkJUeXhGUVVGRExFTkJRVU03UTBGRGFFUWlMQ0ptYVd4bElqb2lZM0psWVhSbExXNWxkeTFzYjI5cmRYQXRiMkpxWldOMExtcHpJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSHNnWlhoMFpXNWtJSDBnWm5KdmJTQW5MaTR2ZFhScGJITW5PMXh1WEc0dktpcGNiaUFxSUVOeVpXRjBaU0JoSUc1bGR5QnZZbXBsWTNRZ2QybDBhQ0JjSW01MWJHeGNJaTF3Y205MGIzUjVjR1VnZEc4Z1lYWnZhV1FnZEhKMWRHaDVJSEpsYzNWc2RITWdiMjRnY0hKdmRHOTBlWEJsSUhCeWIzQmxjblJwWlhNdVhHNGdLaUJVYUdVZ2NtVnpkV3gwYVc1bklHOWlhbVZqZENCallXNGdZbVVnZFhObFpDQjNhWFJvSUZ3aWIySnFaV04wVzNCeWIzQmxjblI1WFZ3aUlIUnZJR05vWldOcklHbG1JR0VnY0hKdmNHVnlkSGtnWlhocGMzUnpYRzRnS2lCQWNHRnlZVzBnZXk0dUxtOWlhbVZqZEgwZ2MyOTFjbU5sY3lCaElIWmhjbUZ5WjNNZ2NHRnlZVzFsZEdWeUlHOW1JSE52ZFhKalpTQnZZbXBsWTNSeklIUm9ZWFFnZDJsc2JDQmlaU0J0WlhKblpXUmNiaUFxSUVCeVpYUjFjbTV6SUh0dlltcGxZM1I5WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmpjbVZoZEdWT1pYZE1iMjlyZFhCUFltcGxZM1FvTGk0dWMyOTFjbU5sY3lrZ2UxeHVJQ0J5WlhSMWNtNGdaWGgwWlc1a0tFOWlhbVZqZEM1amNtVmhkR1VvYm5Wc2JDa3NJQzR1TG5OdmRYSmpaWE1wTzF4dWZWeHVJbDE5XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzLmNyZWF0ZVByb3RvQWNjZXNzQ29udHJvbCA9IGNyZWF0ZVByb3RvQWNjZXNzQ29udHJvbDtcbmV4cG9ydHMucmVzdWx0SXNBbGxvd2VkID0gcmVzdWx0SXNBbGxvd2VkO1xuZXhwb3J0cy5yZXNldExvZ2dlZFByb3BlcnRpZXMgPSByZXNldExvZ2dlZFByb3BlcnRpZXM7XG4vLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGVsc2UgeyB2YXIgbmV3T2JqID0ge307IGlmIChvYmogIT0gbnVsbCkgeyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gbmV3T2JqWydkZWZhdWx0J10gPSBvYmo7IHJldHVybiBuZXdPYmo7IH0gfVxuXG52YXIgX2NyZWF0ZU5ld0xvb2t1cE9iamVjdCA9IHJlcXVpcmUoJy4vY3JlYXRlLW5ldy1sb29rdXAtb2JqZWN0Jyk7XG5cbnZhciBfbG9nZ2VyID0gcmVxdWlyZSgnLi4vbG9nZ2VyJyk7XG5cbnZhciBsb2dnZXIgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChfbG9nZ2VyKTtcblxudmFyIGxvZ2dlZFByb3BlcnRpZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG5mdW5jdGlvbiBjcmVhdGVQcm90b0FjY2Vzc0NvbnRyb2wocnVudGltZU9wdGlvbnMpIHtcbiAgdmFyIGRlZmF1bHRNZXRob2RXaGl0ZUxpc3QgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBkZWZhdWx0TWV0aG9kV2hpdGVMaXN0Wydjb25zdHJ1Y3RvciddID0gZmFsc2U7XG4gIGRlZmF1bHRNZXRob2RXaGl0ZUxpc3RbJ19fZGVmaW5lR2V0dGVyX18nXSA9IGZhbHNlO1xuICBkZWZhdWx0TWV0aG9kV2hpdGVMaXN0WydfX2RlZmluZVNldHRlcl9fJ10gPSBmYWxzZTtcbiAgZGVmYXVsdE1ldGhvZFdoaXRlTGlzdFsnX19sb29rdXBHZXR0ZXJfXyddID0gZmFsc2U7XG5cbiAgdmFyIGRlZmF1bHRQcm9wZXJ0eVdoaXRlTGlzdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b1xuICBkZWZhdWx0UHJvcGVydHlXaGl0ZUxpc3RbJ19fcHJvdG9fXyddID0gZmFsc2U7XG5cbiAgcmV0dXJuIHtcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICB3aGl0ZWxpc3Q6IF9jcmVhdGVOZXdMb29rdXBPYmplY3QuY3JlYXRlTmV3TG9va3VwT2JqZWN0KGRlZmF1bHRQcm9wZXJ0eVdoaXRlTGlzdCwgcnVudGltZU9wdGlvbnMuYWxsb3dlZFByb3RvUHJvcGVydGllcyksXG4gICAgICBkZWZhdWx0VmFsdWU6IHJ1bnRpbWVPcHRpb25zLmFsbG93UHJvdG9Qcm9wZXJ0aWVzQnlEZWZhdWx0XG4gICAgfSxcbiAgICBtZXRob2RzOiB7XG4gICAgICB3aGl0ZWxpc3Q6IF9jcmVhdGVOZXdMb29rdXBPYmplY3QuY3JlYXRlTmV3TG9va3VwT2JqZWN0KGRlZmF1bHRNZXRob2RXaGl0ZUxpc3QsIHJ1bnRpbWVPcHRpb25zLmFsbG93ZWRQcm90b01ldGhvZHMpLFxuICAgICAgZGVmYXVsdFZhbHVlOiBydW50aW1lT3B0aW9ucy5hbGxvd1Byb3RvTWV0aG9kc0J5RGVmYXVsdFxuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gcmVzdWx0SXNBbGxvd2VkKHJlc3VsdCwgcHJvdG9BY2Nlc3NDb250cm9sLCBwcm9wZXJ0eU5hbWUpIHtcbiAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gY2hlY2tXaGl0ZUxpc3QocHJvdG9BY2Nlc3NDb250cm9sLm1ldGhvZHMsIHByb3BlcnR5TmFtZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNoZWNrV2hpdGVMaXN0KHByb3RvQWNjZXNzQ29udHJvbC5wcm9wZXJ0aWVzLCBwcm9wZXJ0eU5hbWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrV2hpdGVMaXN0KHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUsIHByb3BlcnR5TmFtZSkge1xuICBpZiAocHJvdG9BY2Nlc3NDb250cm9sRm9yVHlwZS53aGl0ZWxpc3RbcHJvcGVydHlOYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUud2hpdGVsaXN0W3Byb3BlcnR5TmFtZV0gPT09IHRydWU7XG4gIH1cbiAgaWYgKHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gcHJvdG9BY2Nlc3NDb250cm9sRm9yVHlwZS5kZWZhdWx0VmFsdWU7XG4gIH1cbiAgbG9nVW5leHBlY2VkUHJvcGVydHlBY2Nlc3NPbmNlKHByb3BlcnR5TmFtZSk7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gbG9nVW5leHBlY2VkUHJvcGVydHlBY2Nlc3NPbmNlKHByb3BlcnR5TmFtZSkge1xuICBpZiAobG9nZ2VkUHJvcGVydGllc1twcm9wZXJ0eU5hbWVdICE9PSB0cnVlKSB7XG4gICAgbG9nZ2VkUHJvcGVydGllc1twcm9wZXJ0eU5hbWVdID0gdHJ1ZTtcbiAgICBsb2dnZXIubG9nKCdlcnJvcicsICdIYW5kbGViYXJzOiBBY2Nlc3MgaGFzIGJlZW4gZGVuaWVkIHRvIHJlc29sdmUgdGhlIHByb3BlcnR5IFwiJyArIHByb3BlcnR5TmFtZSArICdcIiBiZWNhdXNlIGl0IGlzIG5vdCBhbiBcIm93biBwcm9wZXJ0eVwiIG9mIGl0cyBwYXJlbnQuXFxuJyArICdZb3UgY2FuIGFkZCBhIHJ1bnRpbWUgb3B0aW9uIHRvIGRpc2FibGUgdGhlIGNoZWNrIG9yIHRoaXMgd2FybmluZzpcXG4nICsgJ1NlZSBodHRwczovL2hhbmRsZWJhcnNqcy5jb20vYXBpLXJlZmVyZW5jZS9ydW50aW1lLW9wdGlvbnMuaHRtbCNvcHRpb25zLXRvLWNvbnRyb2wtcHJvdG90eXBlLWFjY2VzcyBmb3IgZGV0YWlscycpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc2V0TG9nZ2VkUHJvcGVydGllcygpIHtcbiAgT2JqZWN0LmtleXMobG9nZ2VkUHJvcGVydGllcykuZm9yRWFjaChmdW5jdGlvbiAocHJvcGVydHlOYW1lKSB7XG4gICAgZGVsZXRlIGxvZ2dlZFByb3BlcnRpZXNbcHJvcGVydHlOYW1lXTtcbiAgfSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMmx1ZEdWeWJtRnNMM0J5YjNSdkxXRmpZMlZ6Y3k1cWN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96czdPenM3T3pzN08zRkRRVUZ6UXl3MFFrRkJORUk3TzNOQ1FVTXhReXhYUVVGWE96dEpRVUYyUWl4TlFVRk5PenRCUVVWc1FpeEpRVUZOTEdkQ1FVRm5RaXhIUVVGSExFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN08wRkJSWFJETEZOQlFWTXNkMEpCUVhkQ0xFTkJRVU1zWTBGQll5eEZRVUZGTzBGQlEzWkVMRTFCUVVrc2MwSkJRWE5DTEVkQlFVY3NUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEJRVU5xUkN4M1FrRkJjMElzUTBGQlF5eGhRVUZoTEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNN1FVRkRPVU1zZDBKQlFYTkNMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNN1FVRkRia1FzZDBKQlFYTkNMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNN1FVRkRia1FzZDBKQlFYTkNMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNN08wRkJSVzVFTEUxQlFVa3NkMEpCUVhkQ0xFZEJRVWNzVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenM3UVVGRmJrUXNNRUpCUVhkQ0xFTkJRVU1zVjBGQlZ5eERRVUZETEVkQlFVY3NTMEZCU3l4RFFVRkRPenRCUVVVNVF5eFRRVUZQTzBGQlEwd3NZMEZCVlN4RlFVRkZPMEZCUTFZc1pVRkJVeXhGUVVGRkxEWkRRVU5VTEhkQ1FVRjNRaXhGUVVONFFpeGpRVUZqTEVOQlFVTXNjMEpCUVhOQ0xFTkJRM1JETzBGQlEwUXNhMEpCUVZrc1JVRkJSU3hqUVVGakxFTkJRVU1zTmtKQlFUWkNPMHRCUXpORU8wRkJRMFFzVjBGQlR5eEZRVUZGTzBGQlExQXNaVUZCVXl4RlFVRkZMRFpEUVVOVUxITkNRVUZ6UWl4RlFVTjBRaXhqUVVGakxFTkJRVU1zYlVKQlFXMUNMRU5CUTI1RE8wRkJRMFFzYTBKQlFWa3NSVUZCUlN4alFVRmpMRU5CUVVNc01FSkJRVEJDTzB0QlEzaEVPMGRCUTBZc1EwRkJRenREUVVOSU96dEJRVVZOTEZOQlFWTXNaVUZCWlN4RFFVRkRMRTFCUVUwc1JVRkJSU3hyUWtGQmEwSXNSVUZCUlN4WlFVRlpMRVZCUVVVN1FVRkRlRVVzVFVGQlNTeFBRVUZQTEUxQlFVMHNTMEZCU3l4VlFVRlZMRVZCUVVVN1FVRkRhRU1zVjBGQlR5eGpRVUZqTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zVDBGQlR5eEZRVUZGTEZsQlFWa3NRMEZCUXl4RFFVRkRPMGRCUTJwRkxFMUJRVTA3UVVGRFRDeFhRVUZQTEdOQlFXTXNRMEZCUXl4clFrRkJhMElzUTBGQlF5eFZRVUZWTEVWQlFVVXNXVUZCV1N4RFFVRkRMRU5CUVVNN1IwRkRjRVU3UTBGRFJqczdRVUZGUkN4VFFVRlRMR05CUVdNc1EwRkJReXg1UWtGQmVVSXNSVUZCUlN4WlFVRlpMRVZCUVVVN1FVRkRMMFFzVFVGQlNTeDVRa0ZCZVVJc1EwRkJReXhUUVVGVExFTkJRVU1zV1VGQldTeERRVUZETEV0QlFVc3NVMEZCVXl4RlFVRkZPMEZCUTI1RkxGZEJRVThzZVVKQlFYbENMRU5CUVVNc1UwRkJVeXhEUVVGRExGbEJRVmtzUTBGQlF5eExRVUZMTEVsQlFVa3NRMEZCUXp0SFFVTnVSVHRCUVVORUxFMUJRVWtzZVVKQlFYbENMRU5CUVVNc1dVRkJXU3hMUVVGTExGTkJRVk1zUlVGQlJUdEJRVU40UkN4WFFVRlBMSGxDUVVGNVFpeERRVUZETEZsQlFWa3NRMEZCUXp0SFFVTXZRenRCUVVORUxHZERRVUU0UWl4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE8wRkJRemRETEZOQlFVOHNTMEZCU3l4RFFVRkRPME5CUTJRN08wRkJSVVFzVTBGQlV5dzRRa0ZCT0VJc1EwRkJReXhaUVVGWkxFVkJRVVU3UVVGRGNFUXNUVUZCU1N4blFrRkJaMElzUTBGQlF5eFpRVUZaTEVOQlFVTXNTMEZCU3l4SlFVRkpMRVZCUVVVN1FVRkRNME1zYjBKQlFXZENMRU5CUVVNc1dVRkJXU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETzBGQlEzUkRMRlZCUVUwc1EwRkJReXhIUVVGSExFTkJRMUlzVDBGQlR5eEZRVU5RTEdsRlFVRXJSQ3haUVVGWkxHOUpRVU5JTEc5SVFVTXlReXhEUVVOd1NDeERRVUZETzBkQlEwZzdRMEZEUmpzN1FVRkZUU3hUUVVGVExIRkNRVUZ4UWl4SFFVRkhPMEZCUTNSRExGRkJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUVN4WlFVRlpMRVZCUVVrN1FVRkRjRVFzVjBGQlR5eG5Ra0ZCWjBJc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF6dEhRVU4yUXl4RFFVRkRMRU5CUVVNN1EwRkRTaUlzSW1acGJHVWlPaUp3Y205MGJ5MWhZMk5sYzNNdWFuTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdleUJqY21WaGRHVk9aWGRNYjI5cmRYQlBZbXBsWTNRZ2ZTQm1jbTl0SUNjdUwyTnlaV0YwWlMxdVpYY3RiRzl2YTNWd0xXOWlhbVZqZENjN1hHNXBiWEJ2Y25RZ0tpQmhjeUJzYjJkblpYSWdabkp2YlNBbkxpNHZiRzluWjJWeUp6dGNibHh1WTI5dWMzUWdiRzluWjJWa1VISnZjR1Z5ZEdsbGN5QTlJRTlpYW1WamRDNWpjbVZoZEdVb2JuVnNiQ2s3WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCamNtVmhkR1ZRY205MGIwRmpZMlZ6YzBOdmJuUnliMndvY25WdWRHbHRaVTl3ZEdsdmJuTXBJSHRjYmlBZ2JHVjBJR1JsWm1GMWJIUk5aWFJvYjJSWGFHbDBaVXhwYzNRZ1BTQlBZbXBsWTNRdVkzSmxZWFJsS0c1MWJHd3BPMXh1SUNCa1pXWmhkV3gwVFdWMGFHOWtWMmhwZEdWTWFYTjBXeWRqYjI1emRISjFZM1J2Y2lkZElEMGdabUZzYzJVN1hHNGdJR1JsWm1GMWJIUk5aWFJvYjJSWGFHbDBaVXhwYzNSYkoxOWZaR1ZtYVc1bFIyVjBkR1Z5WDE4blhTQTlJR1poYkhObE8xeHVJQ0JrWldaaGRXeDBUV1YwYUc5a1YyaHBkR1ZNYVhOMFd5ZGZYMlJsWm1sdVpWTmxkSFJsY2w5ZkoxMGdQU0JtWVd4elpUdGNiaUFnWkdWbVlYVnNkRTFsZEdodlpGZG9hWFJsVEdsemRGc25YMTlzYjI5cmRYQkhaWFIwWlhKZlh5ZGRJRDBnWm1Gc2MyVTdYRzVjYmlBZ2JHVjBJR1JsWm1GMWJIUlFjbTl3WlhKMGVWZG9hWFJsVEdsemRDQTlJRTlpYW1WamRDNWpjbVZoZEdVb2JuVnNiQ2s3WEc0Z0lDOHZJR1Z6YkdsdWRDMWthWE5oWW14bExXNWxlSFF0YkdsdVpTQnVieTF3Y205MGIxeHVJQ0JrWldaaGRXeDBVSEp2Y0dWeWRIbFhhR2wwWlV4cGMzUmJKMTlmY0hKdmRHOWZYeWRkSUQwZ1ptRnNjMlU3WEc1Y2JpQWdjbVYwZFhKdUlIdGNiaUFnSUNCd2NtOXdaWEowYVdWek9pQjdYRzRnSUNBZ0lDQjNhR2wwWld4cGMzUTZJR055WldGMFpVNWxkMHh2YjJ0MWNFOWlhbVZqZENoY2JpQWdJQ0FnSUNBZ1pHVm1ZWFZzZEZCeWIzQmxjblI1VjJocGRHVk1hWE4wTEZ4dUlDQWdJQ0FnSUNCeWRXNTBhVzFsVDNCMGFXOXVjeTVoYkd4dmQyVmtVSEp2ZEc5UWNtOXdaWEowYVdWelhHNGdJQ0FnSUNBcExGeHVJQ0FnSUNBZ1pHVm1ZWFZzZEZaaGJIVmxPaUJ5ZFc1MGFXMWxUM0IwYVc5dWN5NWhiR3h2ZDFCeWIzUnZVSEp2Y0dWeWRHbGxjMEo1UkdWbVlYVnNkRnh1SUNBZ0lIMHNYRzRnSUNBZ2JXVjBhRzlrY3pvZ2UxeHVJQ0FnSUNBZ2QyaHBkR1ZzYVhOME9pQmpjbVZoZEdWT1pYZE1iMjlyZFhCUFltcGxZM1FvWEc0Z0lDQWdJQ0FnSUdSbFptRjFiSFJOWlhSb2IyUlhhR2wwWlV4cGMzUXNYRzRnSUNBZ0lDQWdJSEoxYm5ScGJXVlBjSFJwYjI1ekxtRnNiRzkzWldSUWNtOTBiMDFsZEdodlpITmNiaUFnSUNBZ0lDa3NYRzRnSUNBZ0lDQmtaV1poZFd4MFZtRnNkV1U2SUhKMWJuUnBiV1ZQY0hScGIyNXpMbUZzYkc5M1VISnZkRzlOWlhSb2IyUnpRbmxFWldaaGRXeDBYRzRnSUNBZ2ZWeHVJQ0I5TzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdjbVZ6ZFd4MFNYTkJiR3h2ZDJWa0tISmxjM1ZzZEN3Z2NISnZkRzlCWTJObGMzTkRiMjUwY205c0xDQndjbTl3WlhKMGVVNWhiV1VwSUh0Y2JpQWdhV1lnS0hSNWNHVnZaaUJ5WlhOMWJIUWdQVDA5SUNkbWRXNWpkR2x2YmljcElIdGNiaUFnSUNCeVpYUjFjbTRnWTJobFkydFhhR2wwWlV4cGMzUW9jSEp2ZEc5QlkyTmxjM05EYjI1MGNtOXNMbTFsZEdodlpITXNJSEJ5YjNCbGNuUjVUbUZ0WlNrN1hHNGdJSDBnWld4elpTQjdYRzRnSUNBZ2NtVjBkWEp1SUdOb1pXTnJWMmhwZEdWTWFYTjBLSEJ5YjNSdlFXTmpaWE56UTI5dWRISnZiQzV3Y205d1pYSjBhV1Z6TENCd2NtOXdaWEowZVU1aGJXVXBPMXh1SUNCOVhHNTlYRzVjYm1aMWJtTjBhVzl1SUdOb1pXTnJWMmhwZEdWTWFYTjBLSEJ5YjNSdlFXTmpaWE56UTI5dWRISnZiRVp2Y2xSNWNHVXNJSEJ5YjNCbGNuUjVUbUZ0WlNrZ2UxeHVJQ0JwWmlBb2NISnZkRzlCWTJObGMzTkRiMjUwY205c1JtOXlWSGx3WlM1M2FHbDBaV3hwYzNSYmNISnZjR1Z5ZEhsT1lXMWxYU0FoUFQwZ2RXNWtaV1pwYm1Wa0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUhCeWIzUnZRV05qWlhOelEyOXVkSEp2YkVadmNsUjVjR1V1ZDJocGRHVnNhWE4wVzNCeWIzQmxjblI1VG1GdFpWMGdQVDA5SUhSeWRXVTdYRzRnSUgxY2JpQWdhV1lnS0hCeWIzUnZRV05qWlhOelEyOXVkSEp2YkVadmNsUjVjR1V1WkdWbVlYVnNkRlpoYkhWbElDRTlQU0IxYm1SbFptbHVaV1FwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdjSEp2ZEc5QlkyTmxjM05EYjI1MGNtOXNSbTl5Vkhsd1pTNWtaV1poZFd4MFZtRnNkV1U3WEc0Z0lIMWNiaUFnYkc5blZXNWxlSEJsWTJWa1VISnZjR1Z5ZEhsQlkyTmxjM05QYm1ObEtIQnliM0JsY25SNVRtRnRaU2s3WEc0Z0lISmxkSFZ5YmlCbVlXeHpaVHRjYm4xY2JseHVablZ1WTNScGIyNGdiRzluVlc1bGVIQmxZMlZrVUhKdmNHVnlkSGxCWTJObGMzTlBibU5sS0hCeWIzQmxjblI1VG1GdFpTa2dlMXh1SUNCcFppQW9iRzluWjJWa1VISnZjR1Z5ZEdsbGMxdHdjbTl3WlhKMGVVNWhiV1ZkSUNFOVBTQjBjblZsS1NCN1hHNGdJQ0FnYkc5bloyVmtVSEp2Y0dWeWRHbGxjMXR3Y205d1pYSjBlVTVoYldWZElEMGdkSEoxWlR0Y2JpQWdJQ0JzYjJkblpYSXViRzluS0Z4dUlDQWdJQ0FnSjJWeWNtOXlKeXhjYmlBZ0lDQWdJR0JJWVc1a2JHVmlZWEp6T2lCQlkyTmxjM01nYUdGeklHSmxaVzRnWkdWdWFXVmtJSFJ2SUhKbGMyOXNkbVVnZEdobElIQnliM0JsY25SNUlGd2lKSHR3Y205d1pYSjBlVTVoYldWOVhDSWdZbVZqWVhWelpTQnBkQ0JwY3lCdWIzUWdZVzRnWENKdmQyNGdjSEp2Y0dWeWRIbGNJaUJ2WmlCcGRITWdjR0Z5Wlc1MExseGNibUFnSzF4dUlDQWdJQ0FnSUNCZ1dXOTFJR05oYmlCaFpHUWdZU0J5ZFc1MGFXMWxJRzl3ZEdsdmJpQjBieUJrYVhOaFlteGxJSFJvWlNCamFHVmpheUJ2Y2lCMGFHbHpJSGRoY201cGJtYzZYRnh1WUNBclhHNGdJQ0FnSUNBZ0lHQlRaV1VnYUhSMGNITTZMeTlvWVc1a2JHVmlZWEp6YW5NdVkyOXRMMkZ3YVMxeVpXWmxjbVZ1WTJVdmNuVnVkR2x0WlMxdmNIUnBiMjV6TG1oMGJXd2piM0IwYVc5dWN5MTBieTFqYjI1MGNtOXNMWEJ5YjNSdmRIbHdaUzFoWTJObGMzTWdabTl5SUdSbGRHRnBiSE5nWEc0Z0lDQWdLVHRjYmlBZ2ZWeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnY21WelpYUk1iMmRuWldSUWNtOXdaWEowYVdWektDa2dlMXh1SUNCUFltcGxZM1F1YTJWNWN5aHNiMmRuWldSUWNtOXdaWEowYVdWektTNW1iM0pGWVdOb0tIQnliM0JsY25SNVRtRnRaU0E5UGlCN1hHNGdJQ0FnWkdWc1pYUmxJR3h2WjJkbFpGQnliM0JsY25ScFpYTmJjSEp2Y0dWeWRIbE9ZVzFsWFR0Y2JpQWdmU2s3WEc1OVhHNGlYWDA9XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzLkhhbmRsZWJhcnNFbnZpcm9ubWVudCA9IEhhbmRsZWJhcnNFbnZpcm9ubWVudDtcbi8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxudmFyIF91dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcblxudmFyIF9leGNlcHRpb24gPSByZXF1aXJlKCcuL2V4Y2VwdGlvbicpO1xuXG52YXIgX2V4Y2VwdGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9leGNlcHRpb24pO1xuXG52YXIgX2hlbHBlcnMgPSByZXF1aXJlKCcuL2hlbHBlcnMnKTtcblxudmFyIF9kZWNvcmF0b3JzID0gcmVxdWlyZSgnLi9kZWNvcmF0b3JzJyk7XG5cbnZhciBfbG9nZ2VyID0gcmVxdWlyZSgnLi9sb2dnZXInKTtcblxudmFyIF9sb2dnZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfbG9nZ2VyKTtcblxudmFyIF9pbnRlcm5hbFByb3RvQWNjZXNzID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9wcm90by1hY2Nlc3MnKTtcblxudmFyIFZFUlNJT04gPSAnNC43LjYnO1xuZXhwb3J0cy5WRVJTSU9OID0gVkVSU0lPTjtcbnZhciBDT01QSUxFUl9SRVZJU0lPTiA9IDg7XG5leHBvcnRzLkNPTVBJTEVSX1JFVklTSU9OID0gQ09NUElMRVJfUkVWSVNJT047XG52YXIgTEFTVF9DT01QQVRJQkxFX0NPTVBJTEVSX1JFVklTSU9OID0gNztcblxuZXhwb3J0cy5MQVNUX0NPTVBBVElCTEVfQ09NUElMRVJfUkVWSVNJT04gPSBMQVNUX0NPTVBBVElCTEVfQ09NUElMRVJfUkVWSVNJT047XG52YXIgUkVWSVNJT05fQ0hBTkdFUyA9IHtcbiAgMTogJzw9IDEuMC5yYy4yJywgLy8gMS4wLnJjLjIgaXMgYWN0dWFsbHkgcmV2MiBidXQgZG9lc24ndCByZXBvcnQgaXRcbiAgMjogJz09IDEuMC4wLXJjLjMnLFxuICAzOiAnPT0gMS4wLjAtcmMuNCcsXG4gIDQ6ICc9PSAxLngueCcsXG4gIDU6ICc9PSAyLjAuMC1hbHBoYS54JyxcbiAgNjogJz49IDIuMC4wLWJldGEuMScsXG4gIDc6ICc+PSA0LjAuMCA8NC4zLjAnLFxuICA4OiAnPj0gNC4zLjAnXG59O1xuXG5leHBvcnRzLlJFVklTSU9OX0NIQU5HRVMgPSBSRVZJU0lPTl9DSEFOR0VTO1xudmFyIG9iamVjdFR5cGUgPSAnW29iamVjdCBPYmplY3RdJztcblxuZnVuY3Rpb24gSGFuZGxlYmFyc0Vudmlyb25tZW50KGhlbHBlcnMsIHBhcnRpYWxzLCBkZWNvcmF0b3JzKSB7XG4gIHRoaXMuaGVscGVycyA9IGhlbHBlcnMgfHwge307XG4gIHRoaXMucGFydGlhbHMgPSBwYXJ0aWFscyB8fCB7fTtcbiAgdGhpcy5kZWNvcmF0b3JzID0gZGVjb3JhdG9ycyB8fCB7fTtcblxuICBfaGVscGVycy5yZWdpc3RlckRlZmF1bHRIZWxwZXJzKHRoaXMpO1xuICBfZGVjb3JhdG9ycy5yZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzKHRoaXMpO1xufVxuXG5IYW5kbGViYXJzRW52aXJvbm1lbnQucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogSGFuZGxlYmFyc0Vudmlyb25tZW50LFxuXG4gIGxvZ2dlcjogX2xvZ2dlcjJbJ2RlZmF1bHQnXSxcbiAgbG9nOiBfbG9nZ2VyMlsnZGVmYXVsdCddLmxvZyxcblxuICByZWdpc3RlckhlbHBlcjogZnVuY3Rpb24gcmVnaXN0ZXJIZWxwZXIobmFtZSwgZm4pIHtcbiAgICBpZiAoX3V0aWxzLnRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9iamVjdFR5cGUpIHtcbiAgICAgIGlmIChmbikge1xuICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnQXJnIG5vdCBzdXBwb3J0ZWQgd2l0aCBtdWx0aXBsZSBoZWxwZXJzJyk7XG4gICAgICB9XG4gICAgICBfdXRpbHMuZXh0ZW5kKHRoaXMuaGVscGVycywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGVscGVyc1tuYW1lXSA9IGZuO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlckhlbHBlcjogZnVuY3Rpb24gdW5yZWdpc3RlckhlbHBlcihuYW1lKSB7XG4gICAgZGVsZXRlIHRoaXMuaGVscGVyc1tuYW1lXTtcbiAgfSxcblxuICByZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9uIHJlZ2lzdGVyUGFydGlhbChuYW1lLCBwYXJ0aWFsKSB7XG4gICAgaWYgKF91dGlscy50b1N0cmluZy5jYWxsKG5hbWUpID09PSBvYmplY3RUeXBlKSB7XG4gICAgICBfdXRpbHMuZXh0ZW5kKHRoaXMucGFydGlhbHMsIG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodHlwZW9mIHBhcnRpYWwgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdBdHRlbXB0aW5nIHRvIHJlZ2lzdGVyIGEgcGFydGlhbCBjYWxsZWQgXCInICsgbmFtZSArICdcIiBhcyB1bmRlZmluZWQnKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucGFydGlhbHNbbmFtZV0gPSBwYXJ0aWFsO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9uIHVucmVnaXN0ZXJQYXJ0aWFsKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5wYXJ0aWFsc1tuYW1lXTtcbiAgfSxcblxuICByZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24gcmVnaXN0ZXJEZWNvcmF0b3IobmFtZSwgZm4pIHtcbiAgICBpZiAoX3V0aWxzLnRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9iamVjdFR5cGUpIHtcbiAgICAgIGlmIChmbikge1xuICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnQXJnIG5vdCBzdXBwb3J0ZWQgd2l0aCBtdWx0aXBsZSBkZWNvcmF0b3JzJyk7XG4gICAgICB9XG4gICAgICBfdXRpbHMuZXh0ZW5kKHRoaXMuZGVjb3JhdG9ycywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVjb3JhdG9yc1tuYW1lXSA9IGZuO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24gdW5yZWdpc3RlckRlY29yYXRvcihuYW1lKSB7XG4gICAgZGVsZXRlIHRoaXMuZGVjb3JhdG9yc1tuYW1lXTtcbiAgfSxcbiAgLyoqXG4gICAqIFJlc2V0IHRoZSBtZW1vcnkgb2YgaWxsZWdhbCBwcm9wZXJ0eSBhY2Nlc3NlcyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIGxvZ2dlZC5cbiAgICogQGRlcHJlY2F0ZWQgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiBoYW5kbGViYXJzIHRlc3QtY2FzZXNcbiAgICovXG4gIHJlc2V0TG9nZ2VkUHJvcGVydHlBY2Nlc3NlczogZnVuY3Rpb24gcmVzZXRMb2dnZWRQcm9wZXJ0eUFjY2Vzc2VzKCkge1xuICAgIF9pbnRlcm5hbFByb3RvQWNjZXNzLnJlc2V0TG9nZ2VkUHJvcGVydGllcygpO1xuICB9XG59O1xuXG52YXIgbG9nID0gX2xvZ2dlcjJbJ2RlZmF1bHQnXS5sb2c7XG5cbmV4cG9ydHMubG9nID0gbG9nO1xuZXhwb3J0cy5jcmVhdGVGcmFtZSA9IF91dGlscy5jcmVhdGVGcmFtZTtcbmV4cG9ydHMubG9nZ2VyID0gX2xvZ2dlcjJbJ2RlZmF1bHQnXTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJKaGMyVXVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3T3pzN096czdjVUpCUVRoRExGTkJRVk03TzNsQ1FVTnFReXhoUVVGaE96czdPM1ZDUVVOSkxGZEJRVmM3T3pCQ1FVTlNMR05CUVdNN08zTkNRVU55UXl4VlFVRlZPenM3TzIxRFFVTlRMSGxDUVVGNVFqczdRVUZGZUVRc1NVRkJUU3hQUVVGUExFZEJRVWNzVDBGQlR5eERRVUZET3p0QlFVTjRRaXhKUVVGTkxHbENRVUZwUWl4SFFVRkhMRU5CUVVNc1EwRkJRenM3UVVGRE5VSXNTVUZCVFN4cFEwRkJhVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdPenRCUVVVMVF5eEpRVUZOTEdkQ1FVRm5RaXhIUVVGSE8wRkJRemxDTEVkQlFVTXNSVUZCUlN4aFFVRmhPMEZCUTJoQ0xFZEJRVU1zUlVGQlJTeGxRVUZsTzBGQlEyeENMRWRCUVVNc1JVRkJSU3hsUVVGbE8wRkJRMnhDTEVkQlFVTXNSVUZCUlN4VlFVRlZPMEZCUTJJc1IwRkJReXhGUVVGRkxHdENRVUZyUWp0QlFVTnlRaXhIUVVGRExFVkJRVVVzYVVKQlFXbENPMEZCUTNCQ0xFZEJRVU1zUlVGQlJTeHBRa0ZCYVVJN1FVRkRjRUlzUjBGQlF5eEZRVUZGTEZWQlFWVTdRMEZEWkN4RFFVRkRPenM3UVVGRlJpeEpRVUZOTEZWQlFWVXNSMEZCUnl4cFFrRkJhVUlzUTBGQlF6czdRVUZGT1VJc1UwRkJVeXh4UWtGQmNVSXNRMEZCUXl4UFFVRlBMRVZCUVVVc1VVRkJVU3hGUVVGRkxGVkJRVlVzUlVGQlJUdEJRVU51UlN4TlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFOUJRVThzU1VGQlNTeEZRVUZGTEVOQlFVTTdRVUZETjBJc1RVRkJTU3hEUVVGRExGRkJRVkVzUjBGQlJ5eFJRVUZSTEVsQlFVa3NSVUZCUlN4RFFVRkRPMEZCUXk5Q0xFMUJRVWtzUTBGQlF5eFZRVUZWTEVkQlFVY3NWVUZCVlN4SlFVRkpMRVZCUVVVc1EwRkJRenM3UVVGRmJrTXNhME5CUVhWQ0xFbEJRVWtzUTBGQlF5eERRVUZETzBGQlF6ZENMSGREUVVFd1FpeEpRVUZKTEVOQlFVTXNRMEZCUXp0RFFVTnFRenM3UVVGRlJDeHhRa0ZCY1VJc1EwRkJReXhUUVVGVExFZEJRVWM3UVVGRGFFTXNZVUZCVnl4RlFVRkZMSEZDUVVGeFFqczdRVUZGYkVNc1VVRkJUU3h4UWtGQlVUdEJRVU5rTEV0QlFVY3NSVUZCUlN4dlFrRkJUeXhIUVVGSE96dEJRVVZtTEdkQ1FVRmpMRVZCUVVVc2QwSkJRVk1zU1VGQlNTeEZRVUZGTEVWQlFVVXNSVUZCUlR0QlFVTnFReXhSUVVGSkxHZENRVUZUTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhWUVVGVkxFVkJRVVU3UVVGRGRFTXNWVUZCU1N4RlFVRkZMRVZCUVVVN1FVRkRUaXhqUVVGTkxESkNRVUZqTEhsRFFVRjVReXhEUVVGRExFTkJRVU03VDBGRGFFVTdRVUZEUkN4dlFrRkJUeXhKUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMHRCUXpWQ0xFMUJRVTA3UVVGRFRDeFZRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF6dExRVU42UWp0SFFVTkdPMEZCUTBRc2EwSkJRV2RDTEVWQlFVVXNNRUpCUVZNc1NVRkJTU3hGUVVGRk8wRkJReTlDTEZkQlFVOHNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEhRVU16UWpzN1FVRkZSQ3hwUWtGQlpTeEZRVUZGTEhsQ1FVRlRMRWxCUVVrc1JVRkJSU3hQUVVGUExFVkJRVVU3UVVGRGRrTXNVVUZCU1N4blFrRkJVeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NWVUZCVlN4RlFVRkZPMEZCUTNSRExHOUNRVUZQTEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03UzBGRE4wSXNUVUZCVFR0QlFVTk1MRlZCUVVrc1QwRkJUeXhQUVVGUExFdEJRVXNzVjBGQlZ5eEZRVUZGTzBGQlEyeERMR05CUVUwc2VVVkJRM2RETEVsQlFVa3NiMEpCUTJwRUxFTkJRVU03VDBGRFNEdEJRVU5FTEZWQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzVDBGQlR5eERRVUZETzB0QlF5OUNPMGRCUTBZN1FVRkRSQ3h0UWtGQmFVSXNSVUZCUlN3eVFrRkJVeXhKUVVGSkxFVkJRVVU3UVVGRGFFTXNWMEZCVHl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzBkQlF6VkNPenRCUVVWRUxHMUNRVUZwUWl4RlFVRkZMREpDUVVGVExFbEJRVWtzUlVGQlJTeEZRVUZGTEVWQlFVVTdRVUZEY0VNc1VVRkJTU3huUWtGQlV5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1ZVRkJWU3hGUVVGRk8wRkJRM1JETEZWQlFVa3NSVUZCUlN4RlFVRkZPMEZCUTA0c1kwRkJUU3d5UWtGQll5dzBRMEZCTkVNc1EwRkJReXhEUVVGRE8wOUJRMjVGTzBGQlEwUXNiMEpCUVU4c1NVRkJTU3hEUVVGRExGVkJRVlVzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0TFFVTXZRaXhOUVVGTk8wRkJRMHdzVlVGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU03UzBGRE5VSTdSMEZEUmp0QlFVTkVMSEZDUVVGdFFpeEZRVUZGTERaQ1FVRlRMRWxCUVVrc1JVRkJSVHRCUVVOc1F5eFhRVUZQTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03UjBGRE9VSTdPenM3TzBGQlMwUXNOa0pCUVRKQ0xFVkJRVUVzZFVOQlFVYzdRVUZETlVJc1owUkJRWFZDTEVOQlFVTTdSMEZEZWtJN1EwRkRSaXhEUVVGRE96dEJRVVZMTEVsQlFVa3NSMEZCUnl4SFFVRkhMRzlDUVVGUExFZEJRVWNzUTBGQlF6czdPMUZCUlc1Q0xGZEJRVmM3VVVGQlJTeE5RVUZOSWl3aVptbHNaU0k2SW1KaGMyVXVhbk1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnZXlCamNtVmhkR1ZHY21GdFpTd2daWGgwWlc1a0xDQjBiMU4wY21sdVp5QjlJR1p5YjIwZ0p5NHZkWFJwYkhNbk8xeHVhVzF3YjNKMElFVjRZMlZ3ZEdsdmJpQm1jbTl0SUNjdUwyVjRZMlZ3ZEdsdmJpYzdYRzVwYlhCdmNuUWdleUJ5WldkcGMzUmxja1JsWm1GMWJIUklaV3h3WlhKeklIMGdabkp2YlNBbkxpOW9aV3h3WlhKekp6dGNibWx0Y0c5eWRDQjdJSEpsWjJsemRHVnlSR1ZtWVhWc2RFUmxZMjl5WVhSdmNuTWdmU0JtY205dElDY3VMMlJsWTI5eVlYUnZjbk1uTzF4dWFXMXdiM0owSUd4dloyZGxjaUJtY205dElDY3VMMnh2WjJkbGNpYzdYRzVwYlhCdmNuUWdleUJ5WlhObGRFeHZaMmRsWkZCeWIzQmxjblJwWlhNZ2ZTQm1jbTl0SUNjdUwybHVkR1Z5Ym1Gc0wzQnliM1J2TFdGalkyVnpjeWM3WEc1Y2JtVjRjRzl5ZENCamIyNXpkQ0JXUlZKVFNVOU9JRDBnSnpRdU55NDJKenRjYm1WNGNHOXlkQ0JqYjI1emRDQkRUMDFRU1V4RlVsOVNSVlpKVTBsUFRpQTlJRGc3WEc1bGVIQnZjblFnWTI5dWMzUWdURUZUVkY5RFQwMVFRVlJKUWt4RlgwTlBUVkJKVEVWU1gxSkZWa2xUU1U5T0lEMGdOenRjYmx4dVpYaHdiM0owSUdOdmJuTjBJRkpGVmtsVFNVOU9YME5JUVU1SFJWTWdQU0I3WEc0Z0lERTZJQ2M4UFNBeExqQXVjbU11TWljc0lDOHZJREV1TUM1eVl5NHlJR2x6SUdGamRIVmhiR3g1SUhKbGRqSWdZblYwSUdSdlpYTnVKM1FnY21Wd2IzSjBJR2wwWEc0Z0lESTZJQ2M5UFNBeExqQXVNQzF5WXk0ekp5eGNiaUFnTXpvZ0p6MDlJREV1TUM0d0xYSmpMalFuTEZ4dUlDQTBPaUFuUFQwZ01TNTRMbmduTEZ4dUlDQTFPaUFuUFQwZ01pNHdMakF0WVd4d2FHRXVlQ2NzWEc0Z0lEWTZJQ2MrUFNBeUxqQXVNQzFpWlhSaExqRW5MRnh1SUNBM09pQW5QajBnTkM0d0xqQWdQRFF1TXk0d0p5eGNiaUFnT0RvZ0p6NDlJRFF1TXk0d0oxeHVmVHRjYmx4dVkyOXVjM1FnYjJKcVpXTjBWSGx3WlNBOUlDZGJiMkpxWldOMElFOWlhbVZqZEYwbk8xeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdTR0Z1Wkd4bFltRnljMFZ1ZG1seWIyNXRaVzUwS0dobGJIQmxjbk1zSUhCaGNuUnBZV3h6TENCa1pXTnZjbUYwYjNKektTQjdYRzRnSUhSb2FYTXVhR1ZzY0dWeWN5QTlJR2hsYkhCbGNuTWdmSHdnZTMwN1hHNGdJSFJvYVhNdWNHRnlkR2xoYkhNZ1BTQndZWEowYVdGc2N5QjhmQ0I3ZlR0Y2JpQWdkR2hwY3k1a1pXTnZjbUYwYjNKeklEMGdaR1ZqYjNKaGRHOXljeUI4ZkNCN2ZUdGNibHh1SUNCeVpXZHBjM1JsY2tSbFptRjFiSFJJWld4d1pYSnpLSFJvYVhNcE8xeHVJQ0J5WldkcGMzUmxja1JsWm1GMWJIUkVaV052Y21GMGIzSnpLSFJvYVhNcE8xeHVmVnh1WEc1SVlXNWtiR1ZpWVhKelJXNTJhWEp2Ym0xbGJuUXVjSEp2ZEc5MGVYQmxJRDBnZTF4dUlDQmpiMjV6ZEhKMVkzUnZjam9nU0dGdVpHeGxZbUZ5YzBWdWRtbHliMjV0Wlc1MExGeHVYRzRnSUd4dloyZGxjam9nYkc5bloyVnlMRnh1SUNCc2IyYzZJR3h2WjJkbGNpNXNiMmNzWEc1Y2JpQWdjbVZuYVhOMFpYSklaV3h3WlhJNklHWjFibU4wYVc5dUtHNWhiV1VzSUdadUtTQjdYRzRnSUNBZ2FXWWdLSFJ2VTNSeWFXNW5MbU5oYkd3b2JtRnRaU2tnUFQwOUlHOWlhbVZqZEZSNWNHVXBJSHRjYmlBZ0lDQWdJR2xtSUNobWJpa2dlMXh1SUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhoalpYQjBhVzl1S0NkQmNtY2dibTkwSUhOMWNIQnZjblJsWkNCM2FYUm9JRzExYkhScGNHeGxJR2hsYkhCbGNuTW5LVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJR1Y0ZEdWdVpDaDBhR2x6TG1obGJIQmxjbk1zSUc1aGJXVXBPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCMGFHbHpMbWhsYkhCbGNuTmJibUZ0WlYwZ1BTQm1ianRjYmlBZ0lDQjlYRzRnSUgwc1hHNGdJSFZ1Y21WbmFYTjBaWEpJWld4d1pYSTZJR1oxYm1OMGFXOXVLRzVoYldVcElIdGNiaUFnSUNCa1pXeGxkR1VnZEdocGN5NW9aV3h3WlhKelcyNWhiV1ZkTzF4dUlDQjlMRnh1WEc0Z0lISmxaMmx6ZEdWeVVHRnlkR2xoYkRvZ1puVnVZM1JwYjI0b2JtRnRaU3dnY0dGeWRHbGhiQ2tnZTF4dUlDQWdJR2xtSUNoMGIxTjBjbWx1Wnk1allXeHNLRzVoYldVcElEMDlQU0J2WW1wbFkzUlVlWEJsS1NCN1hHNGdJQ0FnSUNCbGVIUmxibVFvZEdocGN5NXdZWEowYVdGc2N5d2dibUZ0WlNrN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJR2xtSUNoMGVYQmxiMllnY0dGeWRHbGhiQ0E5UFQwZ0ozVnVaR1ZtYVc1bFpDY3BJSHRjYmlBZ0lDQWdJQ0FnZEdoeWIzY2dibVYzSUVWNFkyVndkR2x2YmloY2JpQWdJQ0FnSUNBZ0lDQmdRWFIwWlcxd2RHbHVaeUIwYnlCeVpXZHBjM1JsY2lCaElIQmhjblJwWVd3Z1kyRnNiR1ZrSUZ3aUpIdHVZVzFsZlZ3aUlHRnpJSFZ1WkdWbWFXNWxaR0JjYmlBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUhSb2FYTXVjR0Z5ZEdsaGJITmJibUZ0WlYwZ1BTQndZWEowYVdGc08xeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ2RXNXlaV2RwYzNSbGNsQmhjblJwWVd3NklHWjFibU4wYVc5dUtHNWhiV1VwSUh0Y2JpQWdJQ0JrWld4bGRHVWdkR2hwY3k1d1lYSjBhV0ZzYzF0dVlXMWxYVHRjYmlBZ2ZTeGNibHh1SUNCeVpXZHBjM1JsY2tSbFkyOXlZWFJ2Y2pvZ1puVnVZM1JwYjI0b2JtRnRaU3dnWm00cElIdGNiaUFnSUNCcFppQW9kRzlUZEhKcGJtY3VZMkZzYkNodVlXMWxLU0E5UFQwZ2IySnFaV04wVkhsd1pTa2dlMXh1SUNBZ0lDQWdhV1lnS0dadUtTQjdYRzRnSUNBZ0lDQWdJSFJvY205M0lHNWxkeUJGZUdObGNIUnBiMjRvSjBGeVp5QnViM1FnYzNWd2NHOXlkR1ZrSUhkcGRHZ2diWFZzZEdsd2JHVWdaR1ZqYjNKaGRHOXljeWNwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnWlhoMFpXNWtLSFJvYVhNdVpHVmpiM0poZEc5eWN5d2dibUZ0WlNrN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSFJvYVhNdVpHVmpiM0poZEc5eWMxdHVZVzFsWFNBOUlHWnVPMXh1SUNBZ0lIMWNiaUFnZlN4Y2JpQWdkVzV5WldkcGMzUmxja1JsWTI5eVlYUnZjam9nWm5WdVkzUnBiMjRvYm1GdFpTa2dlMXh1SUNBZ0lHUmxiR1YwWlNCMGFHbHpMbVJsWTI5eVlYUnZjbk5iYm1GdFpWMDdYRzRnSUgwc1hHNGdJQzhxS2x4dUlDQWdLaUJTWlhObGRDQjBhR1VnYldWdGIzSjVJRzltSUdsc2JHVm5ZV3dnY0hKdmNHVnlkSGtnWVdOalpYTnpaWE1nZEdoaGRDQm9ZWFpsSUdGc2NtVmhaSGtnWW1WbGJpQnNiMmRuWldRdVhHNGdJQ0FxSUVCa1pYQnlaV05oZEdWa0lITm9iM1ZzWkNCdmJteDVJR0psSUhWelpXUWdhVzRnYUdGdVpHeGxZbUZ5Y3lCMFpYTjBMV05oYzJWelhHNGdJQ0FxTDF4dUlDQnlaWE5sZEV4dloyZGxaRkJ5YjNCbGNuUjVRV05qWlhOelpYTW9LU0I3WEc0Z0lDQWdjbVZ6WlhSTWIyZG5aV1JRY205d1pYSjBhV1Z6S0NrN1hHNGdJSDFjYm4wN1hHNWNibVY0Y0c5eWRDQnNaWFFnYkc5bklEMGdiRzluWjJWeUxteHZaenRjYmx4dVpYaHdiM0owSUhzZ1kzSmxZWFJsUm5KaGJXVXNJR3h2WjJkbGNpQjlPMXh1SWwxOVxuIiwiLy8gQnVpbGQgb3V0IG91ciBiYXNpYyBTYWZlU3RyaW5nIHR5cGVcbid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmZ1bmN0aW9uIFNhZmVTdHJpbmcoc3RyaW5nKSB7XG4gIHRoaXMuc3RyaW5nID0gc3RyaW5nO1xufVxuXG5TYWZlU3RyaW5nLnByb3RvdHlwZS50b1N0cmluZyA9IFNhZmVTdHJpbmcucHJvdG90eXBlLnRvSFRNTCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICcnICsgdGhpcy5zdHJpbmc7XG59O1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBTYWZlU3RyaW5nO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwzTmhabVV0YzNSeWFXNW5MbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3pzN1FVRkRRU3hUUVVGVExGVkJRVlVzUTBGQlF5eE5RVUZOTEVWQlFVVTdRVUZETVVJc1RVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eE5RVUZOTEVOQlFVTTdRMEZEZEVJN08wRkJSVVFzVlVGQlZTeERRVUZETEZOQlFWTXNRMEZCUXl4UlFVRlJMRWRCUVVjc1ZVRkJWU3hEUVVGRExGTkJRVk1zUTBGQlF5eE5RVUZOTEVkQlFVY3NXVUZCVnp0QlFVTjJSU3hUUVVGUExFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRPME5CUTNwQ0xFTkJRVU03TzNGQ1FVVmhMRlZCUVZVaUxDSm1hV3hsSWpvaWMyRm1aUzF6ZEhKcGJtY3Vhbk1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdkx5QkNkV2xzWkNCdmRYUWdiM1Z5SUdKaGMybGpJRk5oWm1WVGRISnBibWNnZEhsd1pWeHVablZ1WTNScGIyNGdVMkZtWlZOMGNtbHVaeWh6ZEhKcGJtY3BJSHRjYmlBZ2RHaHBjeTV6ZEhKcGJtY2dQU0J6ZEhKcGJtYzdYRzU5WEc1Y2JsTmhabVZUZEhKcGJtY3VjSEp2ZEc5MGVYQmxMblJ2VTNSeWFXNW5JRDBnVTJGbVpWTjBjbWx1Wnk1d2NtOTBiM1I1Y0dVdWRHOUlWRTFNSUQwZ1puVnVZM1JwYjI0b0tTQjdYRzRnSUhKbGRIVnliaUFuSnlBcklIUm9hWE11YzNSeWFXNW5PMXh1ZlR0Y2JseHVaWGh3YjNKMElHUmxabUYxYkhRZ1UyRm1aVk4wY21sdVp6dGNiaUpkZlE9PVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy53cmFwSGVscGVyID0gd3JhcEhlbHBlcjtcblxuZnVuY3Rpb24gd3JhcEhlbHBlcihoZWxwZXIsIHRyYW5zZm9ybU9wdGlvbnNGbikge1xuICBpZiAodHlwZW9mIGhlbHBlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIC8vIFRoaXMgc2hvdWxkIG5vdCBoYXBwZW4sIGJ1dCBhcHBhcmVudGx5IGl0IGRvZXMgaW4gaHR0cHM6Ly9naXRodWIuY29tL3d5Y2F0cy9oYW5kbGViYXJzLmpzL2lzc3Vlcy8xNjM5XG4gICAgLy8gV2UgdHJ5IHRvIG1ha2UgdGhlIHdyYXBwZXIgbGVhc3QtaW52YXNpdmUgYnkgbm90IHdyYXBwaW5nIGl0LCBpZiB0aGUgaGVscGVyIGlzIG5vdCBhIGZ1bmN0aW9uLlxuICAgIHJldHVybiBoZWxwZXI7XG4gIH1cbiAgdmFyIHdyYXBwZXIgPSBmdW5jdGlvbiB3cmFwcGVyKCkgLyogZHluYW1pYyBhcmd1bWVudHMgKi97XG4gICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdO1xuICAgIGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV0gPSB0cmFuc2Zvcm1PcHRpb25zRm4ob3B0aW9ucyk7XG4gICAgcmV0dXJuIGhlbHBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9O1xuICByZXR1cm4gd3JhcHBlcjtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwybHVkR1Z5Ym1Gc0wzZHlZWEJJWld4d1pYSXVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3T3pzN1FVRkJUeXhUUVVGVExGVkJRVlVzUTBGQlF5eE5RVUZOTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVU3UVVGRGNrUXNUVUZCU1N4UFFVRlBMRTFCUVUwc1MwRkJTeXhWUVVGVkxFVkJRVVU3T3p0QlFVZG9ReXhYUVVGUExFMUJRVTBzUTBGQlF6dEhRVU5tTzBGQlEwUXNUVUZCU1N4UFFVRlBMRWRCUVVjc1UwRkJWaXhQUVVGUExEQkNRVUZ4UXp0QlFVTTVReXhSUVVGTkxFOUJRVThzUjBGQlJ5eFRRVUZUTEVOQlFVTXNVMEZCVXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU5vUkN4aFFVRlRMRU5CUVVNc1UwRkJVeXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4clFrRkJhMElzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0QlFVTTVSQ3hYUVVGUExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RlFVRkZMRk5CUVZNc1EwRkJReXhEUVVGRE8wZEJRM1JETEVOQlFVTTdRVUZEUml4VFFVRlBMRTlCUVU4c1EwRkJRenREUVVOb1FpSXNJbVpwYkdVaU9pSjNjbUZ3U0dWc2NHVnlMbXB6SWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaVpYaHdiM0owSUdaMWJtTjBhVzl1SUhkeVlYQklaV3h3WlhJb2FHVnNjR1Z5TENCMGNtRnVjMlp2Y20xUGNIUnBiMjV6Um00cElIdGNiaUFnYVdZZ0tIUjVjR1Z2WmlCb1pXeHdaWElnSVQwOUlDZG1kVzVqZEdsdmJpY3BJSHRjYmlBZ0lDQXZMeUJVYUdseklITm9iM1ZzWkNCdWIzUWdhR0Z3Y0dWdUxDQmlkWFFnWVhCd1lYSmxiblJzZVNCcGRDQmtiMlZ6SUdsdUlHaDBkSEJ6T2k4dloybDBhSFZpTG1OdmJTOTNlV05oZEhNdmFHRnVaR3hsWW1GeWN5NXFjeTlwYzNOMVpYTXZNVFl6T1Z4dUlDQWdJQzh2SUZkbElIUnllU0IwYnlCdFlXdGxJSFJvWlNCM2NtRndjR1Z5SUd4bFlYTjBMV2x1ZG1GemFYWmxJR0o1SUc1dmRDQjNjbUZ3Y0dsdVp5QnBkQ3dnYVdZZ2RHaGxJR2hsYkhCbGNpQnBjeUJ1YjNRZ1lTQm1kVzVqZEdsdmJpNWNiaUFnSUNCeVpYUjFjbTRnYUdWc2NHVnlPMXh1SUNCOVhHNGdJR3hsZENCM2NtRndjR1Z5SUQwZ1puVnVZM1JwYjI0b0x5b2daSGx1WVcxcFl5QmhjbWQxYldWdWRITWdLaThwSUh0Y2JpQWdJQ0JqYjI1emRDQnZjSFJwYjI1eklEMGdZWEpuZFcxbGJuUnpXMkZ5WjNWdFpXNTBjeTVzWlc1bmRHZ2dMU0F4WFR0Y2JpQWdJQ0JoY21kMWJXVnVkSE5iWVhKbmRXMWxiblJ6TG14bGJtZDBhQ0F0SURGZElEMGdkSEpoYm5ObWIzSnRUM0IwYVc5dWMwWnVLRzl3ZEdsdmJuTXBPMXh1SUNBZ0lISmxkSFZ5YmlCb1pXeHdaWEl1WVhCd2JIa29kR2hwY3l3Z1lYSm5kVzFsYm5SektUdGNiaUFnZlR0Y2JpQWdjbVYwZFhKdUlIZHlZWEJ3WlhJN1hHNTlYRzRpWFgwPVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5jaGVja1JldmlzaW9uID0gY2hlY2tSZXZpc2lvbjtcbmV4cG9ydHMudGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbmV4cG9ydHMud3JhcFByb2dyYW0gPSB3cmFwUHJvZ3JhbTtcbmV4cG9ydHMucmVzb2x2ZVBhcnRpYWwgPSByZXNvbHZlUGFydGlhbDtcbmV4cG9ydHMuaW52b2tlUGFydGlhbCA9IGludm9rZVBhcnRpYWw7XG5leHBvcnRzLm5vb3AgPSBub29wO1xuLy8gaXN0YW5idWwgaWdub3JlIG5leHRcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG4vLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGVsc2UgeyB2YXIgbmV3T2JqID0ge307IGlmIChvYmogIT0gbnVsbCkgeyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gbmV3T2JqWydkZWZhdWx0J10gPSBvYmo7IHJldHVybiBuZXdPYmo7IH0gfVxuXG52YXIgX3V0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xuXG52YXIgVXRpbHMgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChfdXRpbHMpO1xuXG52YXIgX2V4Y2VwdGlvbiA9IHJlcXVpcmUoJy4vZXhjZXB0aW9uJyk7XG5cbnZhciBfZXhjZXB0aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2V4Y2VwdGlvbik7XG5cbnZhciBfYmFzZSA9IHJlcXVpcmUoJy4vYmFzZScpO1xuXG52YXIgX2hlbHBlcnMgPSByZXF1aXJlKCcuL2hlbHBlcnMnKTtcblxudmFyIF9pbnRlcm5hbFdyYXBIZWxwZXIgPSByZXF1aXJlKCcuL2ludGVybmFsL3dyYXBIZWxwZXInKTtcblxudmFyIF9pbnRlcm5hbFByb3RvQWNjZXNzID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9wcm90by1hY2Nlc3MnKTtcblxuZnVuY3Rpb24gY2hlY2tSZXZpc2lvbihjb21waWxlckluZm8pIHtcbiAgdmFyIGNvbXBpbGVyUmV2aXNpb24gPSBjb21waWxlckluZm8gJiYgY29tcGlsZXJJbmZvWzBdIHx8IDEsXG4gICAgICBjdXJyZW50UmV2aXNpb24gPSBfYmFzZS5DT01QSUxFUl9SRVZJU0lPTjtcblxuICBpZiAoY29tcGlsZXJSZXZpc2lvbiA+PSBfYmFzZS5MQVNUX0NPTVBBVElCTEVfQ09NUElMRVJfUkVWSVNJT04gJiYgY29tcGlsZXJSZXZpc2lvbiA8PSBfYmFzZS5DT01QSUxFUl9SRVZJU0lPTikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChjb21waWxlclJldmlzaW9uIDwgX2Jhc2UuTEFTVF9DT01QQVRJQkxFX0NPTVBJTEVSX1JFVklTSU9OKSB7XG4gICAgdmFyIHJ1bnRpbWVWZXJzaW9ucyA9IF9iYXNlLlJFVklTSU9OX0NIQU5HRVNbY3VycmVudFJldmlzaW9uXSxcbiAgICAgICAgY29tcGlsZXJWZXJzaW9ucyA9IF9iYXNlLlJFVklTSU9OX0NIQU5HRVNbY29tcGlsZXJSZXZpc2lvbl07XG4gICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1RlbXBsYXRlIHdhcyBwcmVjb21waWxlZCB3aXRoIGFuIG9sZGVyIHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRoZSBjdXJyZW50IHJ1bnRpbWUuICcgKyAnUGxlYXNlIHVwZGF0ZSB5b3VyIHByZWNvbXBpbGVyIHRvIGEgbmV3ZXIgdmVyc2lvbiAoJyArIHJ1bnRpbWVWZXJzaW9ucyArICcpIG9yIGRvd25ncmFkZSB5b3VyIHJ1bnRpbWUgdG8gYW4gb2xkZXIgdmVyc2lvbiAoJyArIGNvbXBpbGVyVmVyc2lvbnMgKyAnKS4nKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBVc2UgdGhlIGVtYmVkZGVkIHZlcnNpb24gaW5mbyBzaW5jZSB0aGUgcnVudGltZSBkb2Vzbid0IGtub3cgYWJvdXQgdGhpcyByZXZpc2lvbiB5ZXRcbiAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnVGVtcGxhdGUgd2FzIHByZWNvbXBpbGVkIHdpdGggYSBuZXdlciB2ZXJzaW9uIG9mIEhhbmRsZWJhcnMgdGhhbiB0aGUgY3VycmVudCBydW50aW1lLiAnICsgJ1BsZWFzZSB1cGRhdGUgeW91ciBydW50aW1lIHRvIGEgbmV3ZXIgdmVyc2lvbiAoJyArIGNvbXBpbGVySW5mb1sxXSArICcpLicpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRlbXBsYXRlKHRlbXBsYXRlU3BlYywgZW52KSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGlmICghZW52KSB7XG4gICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ05vIGVudmlyb25tZW50IHBhc3NlZCB0byB0ZW1wbGF0ZScpO1xuICB9XG4gIGlmICghdGVtcGxhdGVTcGVjIHx8ICF0ZW1wbGF0ZVNwZWMubWFpbikge1xuICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdVbmtub3duIHRlbXBsYXRlIG9iamVjdDogJyArIHR5cGVvZiB0ZW1wbGF0ZVNwZWMpO1xuICB9XG5cbiAgdGVtcGxhdGVTcGVjLm1haW4uZGVjb3JhdG9yID0gdGVtcGxhdGVTcGVjLm1haW5fZDtcblxuICAvLyBOb3RlOiBVc2luZyBlbnYuVk0gcmVmZXJlbmNlcyByYXRoZXIgdGhhbiBsb2NhbCB2YXIgcmVmZXJlbmNlcyB0aHJvdWdob3V0IHRoaXMgc2VjdGlvbiB0byBhbGxvd1xuICAvLyBmb3IgZXh0ZXJuYWwgdXNlcnMgdG8gb3ZlcnJpZGUgdGhlc2UgYXMgcHNldWRvLXN1cHBvcnRlZCBBUElzLlxuICBlbnYuVk0uY2hlY2tSZXZpc2lvbih0ZW1wbGF0ZVNwZWMuY29tcGlsZXIpO1xuXG4gIC8vIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGZvciBwcmVjb21waWxlZCB0ZW1wbGF0ZXMgd2l0aCBjb21waWxlci12ZXJzaW9uIDcgKDw0LjMuMClcbiAgdmFyIHRlbXBsYXRlV2FzUHJlY29tcGlsZWRXaXRoQ29tcGlsZXJWNyA9IHRlbXBsYXRlU3BlYy5jb21waWxlciAmJiB0ZW1wbGF0ZVNwZWMuY29tcGlsZXJbMF0gPT09IDc7XG5cbiAgZnVuY3Rpb24gaW52b2tlUGFydGlhbFdyYXBwZXIocGFydGlhbCwgY29udGV4dCwgb3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zLmhhc2gpIHtcbiAgICAgIGNvbnRleHQgPSBVdGlscy5leHRlbmQoe30sIGNvbnRleHQsIG9wdGlvbnMuaGFzaCk7XG4gICAgICBpZiAob3B0aW9ucy5pZHMpIHtcbiAgICAgICAgb3B0aW9ucy5pZHNbMF0gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBwYXJ0aWFsID0gZW52LlZNLnJlc29sdmVQYXJ0aWFsLmNhbGwodGhpcywgcGFydGlhbCwgY29udGV4dCwgb3B0aW9ucyk7XG5cbiAgICB2YXIgZXh0ZW5kZWRPcHRpb25zID0gVXRpbHMuZXh0ZW5kKHt9LCBvcHRpb25zLCB7XG4gICAgICBob29rczogdGhpcy5ob29rcyxcbiAgICAgIHByb3RvQWNjZXNzQ29udHJvbDogdGhpcy5wcm90b0FjY2Vzc0NvbnRyb2xcbiAgICB9KTtcblxuICAgIHZhciByZXN1bHQgPSBlbnYuVk0uaW52b2tlUGFydGlhbC5jYWxsKHRoaXMsIHBhcnRpYWwsIGNvbnRleHQsIGV4dGVuZGVkT3B0aW9ucyk7XG5cbiAgICBpZiAocmVzdWx0ID09IG51bGwgJiYgZW52LmNvbXBpbGUpIHtcbiAgICAgIG9wdGlvbnMucGFydGlhbHNbb3B0aW9ucy5uYW1lXSA9IGVudi5jb21waWxlKHBhcnRpYWwsIHRlbXBsYXRlU3BlYy5jb21waWxlck9wdGlvbnMsIGVudik7XG4gICAgICByZXN1bHQgPSBvcHRpb25zLnBhcnRpYWxzW29wdGlvbnMubmFtZV0oY29udGV4dCwgZXh0ZW5kZWRPcHRpb25zKTtcbiAgICB9XG4gICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7XG4gICAgICBpZiAob3B0aW9ucy5pbmRlbnQpIHtcbiAgICAgICAgdmFyIGxpbmVzID0gcmVzdWx0LnNwbGl0KCdcXG4nKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBsaW5lcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICBpZiAoIWxpbmVzW2ldICYmIGkgKyAxID09PSBsKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsaW5lc1tpXSA9IG9wdGlvbnMuaW5kZW50ICsgbGluZXNbaV07XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gbGluZXMuam9pbignXFxuJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnVGhlIHBhcnRpYWwgJyArIG9wdGlvbnMubmFtZSArICcgY291bGQgbm90IGJlIGNvbXBpbGVkIHdoZW4gcnVubmluZyBpbiBydW50aW1lLW9ubHkgbW9kZScpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEp1c3QgYWRkIHdhdGVyXG4gIHZhciBjb250YWluZXIgPSB7XG4gICAgc3RyaWN0OiBmdW5jdGlvbiBzdHJpY3Qob2JqLCBuYW1lLCBsb2MpIHtcbiAgICAgIGlmICghb2JqIHx8ICEobmFtZSBpbiBvYmopKSB7XG4gICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdcIicgKyBuYW1lICsgJ1wiIG5vdCBkZWZpbmVkIGluICcgKyBvYmosIHtcbiAgICAgICAgICBsb2M6IGxvY1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvYmpbbmFtZV07XG4gICAgfSxcbiAgICBsb29rdXBQcm9wZXJ0eTogZnVuY3Rpb24gbG9va3VwUHJvcGVydHkocGFyZW50LCBwcm9wZXJ0eU5hbWUpIHtcbiAgICAgIHZhciByZXN1bHQgPSBwYXJlbnRbcHJvcGVydHlOYW1lXTtcbiAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwYXJlbnQsIHByb3BlcnR5TmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgaWYgKF9pbnRlcm5hbFByb3RvQWNjZXNzLnJlc3VsdElzQWxsb3dlZChyZXN1bHQsIGNvbnRhaW5lci5wcm90b0FjY2Vzc0NvbnRyb2wsIHByb3BlcnR5TmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSxcbiAgICBsb29rdXA6IGZ1bmN0aW9uIGxvb2t1cChkZXB0aHMsIG5hbWUpIHtcbiAgICAgIHZhciBsZW4gPSBkZXB0aHMubGVuZ3RoO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICB2YXIgcmVzdWx0ID0gZGVwdGhzW2ldICYmIGNvbnRhaW5lci5sb29rdXBQcm9wZXJ0eShkZXB0aHNbaV0sIG5hbWUpO1xuICAgICAgICBpZiAocmVzdWx0ICE9IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gZGVwdGhzW2ldW25hbWVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBsYW1iZGE6IGZ1bmN0aW9uIGxhbWJkYShjdXJyZW50LCBjb250ZXh0KSB7XG4gICAgICByZXR1cm4gdHlwZW9mIGN1cnJlbnQgPT09ICdmdW5jdGlvbicgPyBjdXJyZW50LmNhbGwoY29udGV4dCkgOiBjdXJyZW50O1xuICAgIH0sXG5cbiAgICBlc2NhcGVFeHByZXNzaW9uOiBVdGlscy5lc2NhcGVFeHByZXNzaW9uLFxuICAgIGludm9rZVBhcnRpYWw6IGludm9rZVBhcnRpYWxXcmFwcGVyLFxuXG4gICAgZm46IGZ1bmN0aW9uIGZuKGkpIHtcbiAgICAgIHZhciByZXQgPSB0ZW1wbGF0ZVNwZWNbaV07XG4gICAgICByZXQuZGVjb3JhdG9yID0gdGVtcGxhdGVTcGVjW2kgKyAnX2QnXTtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSxcblxuICAgIHByb2dyYW1zOiBbXSxcbiAgICBwcm9ncmFtOiBmdW5jdGlvbiBwcm9ncmFtKGksIGRhdGEsIGRlY2xhcmVkQmxvY2tQYXJhbXMsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcbiAgICAgIHZhciBwcm9ncmFtV3JhcHBlciA9IHRoaXMucHJvZ3JhbXNbaV0sXG4gICAgICAgICAgZm4gPSB0aGlzLmZuKGkpO1xuICAgICAgaWYgKGRhdGEgfHwgZGVwdGhzIHx8IGJsb2NrUGFyYW1zIHx8IGRlY2xhcmVkQmxvY2tQYXJhbXMpIHtcbiAgICAgICAgcHJvZ3JhbVdyYXBwZXIgPSB3cmFwUHJvZ3JhbSh0aGlzLCBpLCBmbiwgZGF0YSwgZGVjbGFyZWRCbG9ja1BhcmFtcywgYmxvY2tQYXJhbXMsIGRlcHRocyk7XG4gICAgICB9IGVsc2UgaWYgKCFwcm9ncmFtV3JhcHBlcikge1xuICAgICAgICBwcm9ncmFtV3JhcHBlciA9IHRoaXMucHJvZ3JhbXNbaV0gPSB3cmFwUHJvZ3JhbSh0aGlzLCBpLCBmbik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJvZ3JhbVdyYXBwZXI7XG4gICAgfSxcblxuICAgIGRhdGE6IGZ1bmN0aW9uIGRhdGEodmFsdWUsIGRlcHRoKSB7XG4gICAgICB3aGlsZSAodmFsdWUgJiYgZGVwdGgtLSkge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLl9wYXJlbnQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSxcbiAgICBtZXJnZUlmTmVlZGVkOiBmdW5jdGlvbiBtZXJnZUlmTmVlZGVkKHBhcmFtLCBjb21tb24pIHtcbiAgICAgIHZhciBvYmogPSBwYXJhbSB8fCBjb21tb247XG5cbiAgICAgIGlmIChwYXJhbSAmJiBjb21tb24gJiYgcGFyYW0gIT09IGNvbW1vbikge1xuICAgICAgICBvYmogPSBVdGlscy5leHRlbmQoe30sIGNvbW1vbiwgcGFyYW0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2JqO1xuICAgIH0sXG4gICAgLy8gQW4gZW1wdHkgb2JqZWN0IHRvIHVzZSBhcyByZXBsYWNlbWVudCBmb3IgbnVsbC1jb250ZXh0c1xuICAgIG51bGxDb250ZXh0OiBPYmplY3Quc2VhbCh7fSksXG5cbiAgICBub29wOiBlbnYuVk0ubm9vcCxcbiAgICBjb21waWxlckluZm86IHRlbXBsYXRlU3BlYy5jb21waWxlclxuICB9O1xuXG4gIGZ1bmN0aW9uIHJldChjb250ZXh0KSB7XG4gICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1sxXTtcblxuICAgIHZhciBkYXRhID0gb3B0aW9ucy5kYXRhO1xuXG4gICAgcmV0Ll9zZXR1cChvcHRpb25zKTtcbiAgICBpZiAoIW9wdGlvbnMucGFydGlhbCAmJiB0ZW1wbGF0ZVNwZWMudXNlRGF0YSkge1xuICAgICAgZGF0YSA9IGluaXREYXRhKGNvbnRleHQsIGRhdGEpO1xuICAgIH1cbiAgICB2YXIgZGVwdGhzID0gdW5kZWZpbmVkLFxuICAgICAgICBibG9ja1BhcmFtcyA9IHRlbXBsYXRlU3BlYy51c2VCbG9ja1BhcmFtcyA/IFtdIDogdW5kZWZpbmVkO1xuICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlRGVwdGhzKSB7XG4gICAgICBpZiAob3B0aW9ucy5kZXB0aHMpIHtcbiAgICAgICAgZGVwdGhzID0gY29udGV4dCAhPSBvcHRpb25zLmRlcHRoc1swXSA/IFtjb250ZXh0XS5jb25jYXQob3B0aW9ucy5kZXB0aHMpIDogb3B0aW9ucy5kZXB0aHM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZXB0aHMgPSBbY29udGV4dF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFpbihjb250ZXh0IC8qLCBvcHRpb25zKi8pIHtcbiAgICAgIHJldHVybiAnJyArIHRlbXBsYXRlU3BlYy5tYWluKGNvbnRhaW5lciwgY29udGV4dCwgY29udGFpbmVyLmhlbHBlcnMsIGNvbnRhaW5lci5wYXJ0aWFscywgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRocyk7XG4gICAgfVxuXG4gICAgbWFpbiA9IGV4ZWN1dGVEZWNvcmF0b3JzKHRlbXBsYXRlU3BlYy5tYWluLCBtYWluLCBjb250YWluZXIsIG9wdGlvbnMuZGVwdGhzIHx8IFtdLCBkYXRhLCBibG9ja1BhcmFtcyk7XG4gICAgcmV0dXJuIG1haW4oY29udGV4dCwgb3B0aW9ucyk7XG4gIH1cblxuICByZXQuaXNUb3AgPSB0cnVlO1xuXG4gIHJldC5fc2V0dXAgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgIGlmICghb3B0aW9ucy5wYXJ0aWFsKSB7XG4gICAgICB2YXIgbWVyZ2VkSGVscGVycyA9IFV0aWxzLmV4dGVuZCh7fSwgZW52LmhlbHBlcnMsIG9wdGlvbnMuaGVscGVycyk7XG4gICAgICB3cmFwSGVscGVyc1RvUGFzc0xvb2t1cFByb3BlcnR5KG1lcmdlZEhlbHBlcnMsIGNvbnRhaW5lcik7XG4gICAgICBjb250YWluZXIuaGVscGVycyA9IG1lcmdlZEhlbHBlcnM7XG5cbiAgICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlUGFydGlhbCkge1xuICAgICAgICAvLyBVc2UgbWVyZ2VJZk5lZWRlZCBoZXJlIHRvIHByZXZlbnQgY29tcGlsaW5nIGdsb2JhbCBwYXJ0aWFscyBtdWx0aXBsZSB0aW1lc1xuICAgICAgICBjb250YWluZXIucGFydGlhbHMgPSBjb250YWluZXIubWVyZ2VJZk5lZWRlZChvcHRpb25zLnBhcnRpYWxzLCBlbnYucGFydGlhbHMpO1xuICAgICAgfVxuICAgICAgaWYgKHRlbXBsYXRlU3BlYy51c2VQYXJ0aWFsIHx8IHRlbXBsYXRlU3BlYy51c2VEZWNvcmF0b3JzKSB7XG4gICAgICAgIGNvbnRhaW5lci5kZWNvcmF0b3JzID0gVXRpbHMuZXh0ZW5kKHt9LCBlbnYuZGVjb3JhdG9ycywgb3B0aW9ucy5kZWNvcmF0b3JzKTtcbiAgICAgIH1cblxuICAgICAgY29udGFpbmVyLmhvb2tzID0ge307XG4gICAgICBjb250YWluZXIucHJvdG9BY2Nlc3NDb250cm9sID0gX2ludGVybmFsUHJvdG9BY2Nlc3MuY3JlYXRlUHJvdG9BY2Nlc3NDb250cm9sKG9wdGlvbnMpO1xuXG4gICAgICB2YXIga2VlcEhlbHBlckluSGVscGVycyA9IG9wdGlvbnMuYWxsb3dDYWxsc1RvSGVscGVyTWlzc2luZyB8fCB0ZW1wbGF0ZVdhc1ByZWNvbXBpbGVkV2l0aENvbXBpbGVyVjc7XG4gICAgICBfaGVscGVycy5tb3ZlSGVscGVyVG9Ib29rcyhjb250YWluZXIsICdoZWxwZXJNaXNzaW5nJywga2VlcEhlbHBlckluSGVscGVycyk7XG4gICAgICBfaGVscGVycy5tb3ZlSGVscGVyVG9Ib29rcyhjb250YWluZXIsICdibG9ja0hlbHBlck1pc3NpbmcnLCBrZWVwSGVscGVySW5IZWxwZXJzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGFpbmVyLnByb3RvQWNjZXNzQ29udHJvbCA9IG9wdGlvbnMucHJvdG9BY2Nlc3NDb250cm9sOyAvLyBpbnRlcm5hbCBvcHRpb25cbiAgICAgIGNvbnRhaW5lci5oZWxwZXJzID0gb3B0aW9ucy5oZWxwZXJzO1xuICAgICAgY29udGFpbmVyLnBhcnRpYWxzID0gb3B0aW9ucy5wYXJ0aWFscztcbiAgICAgIGNvbnRhaW5lci5kZWNvcmF0b3JzID0gb3B0aW9ucy5kZWNvcmF0b3JzO1xuICAgICAgY29udGFpbmVyLmhvb2tzID0gb3B0aW9ucy5ob29rcztcbiAgICB9XG4gIH07XG5cbiAgcmV0Ll9jaGlsZCA9IGZ1bmN0aW9uIChpLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7XG4gICAgaWYgKHRlbXBsYXRlU3BlYy51c2VCbG9ja1BhcmFtcyAmJiAhYmxvY2tQYXJhbXMpIHtcbiAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdtdXN0IHBhc3MgYmxvY2sgcGFyYW1zJyk7XG4gICAgfVxuICAgIGlmICh0ZW1wbGF0ZVNwZWMudXNlRGVwdGhzICYmICFkZXB0aHMpIHtcbiAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdtdXN0IHBhc3MgcGFyZW50IGRlcHRocycpO1xuICAgIH1cblxuICAgIHJldHVybiB3cmFwUHJvZ3JhbShjb250YWluZXIsIGksIHRlbXBsYXRlU3BlY1tpXSwgZGF0YSwgMCwgYmxvY2tQYXJhbXMsIGRlcHRocyk7XG4gIH07XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIHdyYXBQcm9ncmFtKGNvbnRhaW5lciwgaSwgZm4sIGRhdGEsIGRlY2xhcmVkQmxvY2tQYXJhbXMsIGJsb2NrUGFyYW1zLCBkZXB0aHMpIHtcbiAgZnVuY3Rpb24gcHJvZyhjb250ZXh0KSB7XG4gICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1sxXTtcblxuICAgIHZhciBjdXJyZW50RGVwdGhzID0gZGVwdGhzO1xuICAgIGlmIChkZXB0aHMgJiYgY29udGV4dCAhPSBkZXB0aHNbMF0gJiYgIShjb250ZXh0ID09PSBjb250YWluZXIubnVsbENvbnRleHQgJiYgZGVwdGhzWzBdID09PSBudWxsKSkge1xuICAgICAgY3VycmVudERlcHRocyA9IFtjb250ZXh0XS5jb25jYXQoZGVwdGhzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm4oY29udGFpbmVyLCBjb250ZXh0LCBjb250YWluZXIuaGVscGVycywgY29udGFpbmVyLnBhcnRpYWxzLCBvcHRpb25zLmRhdGEgfHwgZGF0YSwgYmxvY2tQYXJhbXMgJiYgW29wdGlvbnMuYmxvY2tQYXJhbXNdLmNvbmNhdChibG9ja1BhcmFtcyksIGN1cnJlbnREZXB0aHMpO1xuICB9XG5cbiAgcHJvZyA9IGV4ZWN1dGVEZWNvcmF0b3JzKGZuLCBwcm9nLCBjb250YWluZXIsIGRlcHRocywgZGF0YSwgYmxvY2tQYXJhbXMpO1xuXG4gIHByb2cucHJvZ3JhbSA9IGk7XG4gIHByb2cuZGVwdGggPSBkZXB0aHMgPyBkZXB0aHMubGVuZ3RoIDogMDtcbiAgcHJvZy5ibG9ja1BhcmFtcyA9IGRlY2xhcmVkQmxvY2tQYXJhbXMgfHwgMDtcbiAgcmV0dXJuIHByb2c7XG59XG5cbi8qKlxuICogVGhpcyBpcyBjdXJyZW50bHkgcGFydCBvZiB0aGUgb2ZmaWNpYWwgQVBJLCB0aGVyZWZvcmUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBzaG91bGQgbm90IGJlIGNoYW5nZWQuXG4gKi9cblxuZnVuY3Rpb24gcmVzb2x2ZVBhcnRpYWwocGFydGlhbCwgY29udGV4dCwgb3B0aW9ucykge1xuICBpZiAoIXBhcnRpYWwpIHtcbiAgICBpZiAob3B0aW9ucy5uYW1lID09PSAnQHBhcnRpYWwtYmxvY2snKSB7XG4gICAgICBwYXJ0aWFsID0gb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ107XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnRpYWwgPSBvcHRpb25zLnBhcnRpYWxzW29wdGlvbnMubmFtZV07XG4gICAgfVxuICB9IGVsc2UgaWYgKCFwYXJ0aWFsLmNhbGwgJiYgIW9wdGlvbnMubmFtZSkge1xuICAgIC8vIFRoaXMgaXMgYSBkeW5hbWljIHBhcnRpYWwgdGhhdCByZXR1cm5lZCBhIHN0cmluZ1xuICAgIG9wdGlvbnMubmFtZSA9IHBhcnRpYWw7XG4gICAgcGFydGlhbCA9IG9wdGlvbnMucGFydGlhbHNbcGFydGlhbF07XG4gIH1cbiAgcmV0dXJuIHBhcnRpYWw7XG59XG5cbmZ1bmN0aW9uIGludm9rZVBhcnRpYWwocGFydGlhbCwgY29udGV4dCwgb3B0aW9ucykge1xuICAvLyBVc2UgdGhlIGN1cnJlbnQgY2xvc3VyZSBjb250ZXh0IHRvIHNhdmUgdGhlIHBhcnRpYWwtYmxvY2sgaWYgdGhpcyBwYXJ0aWFsXG4gIHZhciBjdXJyZW50UGFydGlhbEJsb2NrID0gb3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuZGF0YVsncGFydGlhbC1ibG9jayddO1xuICBvcHRpb25zLnBhcnRpYWwgPSB0cnVlO1xuICBpZiAob3B0aW9ucy5pZHMpIHtcbiAgICBvcHRpb25zLmRhdGEuY29udGV4dFBhdGggPSBvcHRpb25zLmlkc1swXSB8fCBvcHRpb25zLmRhdGEuY29udGV4dFBhdGg7XG4gIH1cblxuICB2YXIgcGFydGlhbEJsb2NrID0gdW5kZWZpbmVkO1xuICBpZiAob3B0aW9ucy5mbiAmJiBvcHRpb25zLmZuICE9PSBub29wKSB7XG4gICAgKGZ1bmN0aW9uICgpIHtcbiAgICAgIG9wdGlvbnMuZGF0YSA9IF9iYXNlLmNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgICAvLyBXcmFwcGVyIGZ1bmN0aW9uIHRvIGdldCBhY2Nlc3MgdG8gY3VycmVudFBhcnRpYWxCbG9jayBmcm9tIHRoZSBjbG9zdXJlXG4gICAgICB2YXIgZm4gPSBvcHRpb25zLmZuO1xuICAgICAgcGFydGlhbEJsb2NrID0gb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ10gPSBmdW5jdGlvbiBwYXJ0aWFsQmxvY2tXcmFwcGVyKGNvbnRleHQpIHtcbiAgICAgICAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDEgfHwgYXJndW1lbnRzWzFdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1sxXTtcblxuICAgICAgICAvLyBSZXN0b3JlIHRoZSBwYXJ0aWFsLWJsb2NrIGZyb20gdGhlIGNsb3N1cmUgZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrXG4gICAgICAgIC8vIGkuZS4gdGhlIHBhcnQgaW5zaWRlIHRoZSBibG9jayBvZiB0aGUgcGFydGlhbCBjYWxsLlxuICAgICAgICBvcHRpb25zLmRhdGEgPSBfYmFzZS5jcmVhdGVGcmFtZShvcHRpb25zLmRhdGEpO1xuICAgICAgICBvcHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXSA9IGN1cnJlbnRQYXJ0aWFsQmxvY2s7XG4gICAgICAgIHJldHVybiBmbihjb250ZXh0LCBvcHRpb25zKTtcbiAgICAgIH07XG4gICAgICBpZiAoZm4ucGFydGlhbHMpIHtcbiAgICAgICAgb3B0aW9ucy5wYXJ0aWFscyA9IFV0aWxzLmV4dGVuZCh7fSwgb3B0aW9ucy5wYXJ0aWFscywgZm4ucGFydGlhbHMpO1xuICAgICAgfVxuICAgIH0pKCk7XG4gIH1cblxuICBpZiAocGFydGlhbCA9PT0gdW5kZWZpbmVkICYmIHBhcnRpYWxCbG9jaykge1xuICAgIHBhcnRpYWwgPSBwYXJ0aWFsQmxvY2s7XG4gIH1cblxuICBpZiAocGFydGlhbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1RoZSBwYXJ0aWFsICcgKyBvcHRpb25zLm5hbWUgKyAnIGNvdWxkIG5vdCBiZSBmb3VuZCcpO1xuICB9IGVsc2UgaWYgKHBhcnRpYWwgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgIHJldHVybiBwYXJ0aWFsKGNvbnRleHQsIG9wdGlvbnMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG5vb3AoKSB7XG4gIHJldHVybiAnJztcbn1cblxuZnVuY3Rpb24gaW5pdERhdGEoY29udGV4dCwgZGF0YSkge1xuICBpZiAoIWRhdGEgfHwgISgncm9vdCcgaW4gZGF0YSkpIHtcbiAgICBkYXRhID0gZGF0YSA/IF9iYXNlLmNyZWF0ZUZyYW1lKGRhdGEpIDoge307XG4gICAgZGF0YS5yb290ID0gY29udGV4dDtcbiAgfVxuICByZXR1cm4gZGF0YTtcbn1cblxuZnVuY3Rpb24gZXhlY3V0ZURlY29yYXRvcnMoZm4sIHByb2csIGNvbnRhaW5lciwgZGVwdGhzLCBkYXRhLCBibG9ja1BhcmFtcykge1xuICBpZiAoZm4uZGVjb3JhdG9yKSB7XG4gICAgdmFyIHByb3BzID0ge307XG4gICAgcHJvZyA9IGZuLmRlY29yYXRvcihwcm9nLCBwcm9wcywgY29udGFpbmVyLCBkZXB0aHMgJiYgZGVwdGhzWzBdLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKTtcbiAgICBVdGlscy5leHRlbmQocHJvZywgcHJvcHMpO1xuICB9XG4gIHJldHVybiBwcm9nO1xufVxuXG5mdW5jdGlvbiB3cmFwSGVscGVyc1RvUGFzc0xvb2t1cFByb3BlcnR5KG1lcmdlZEhlbHBlcnMsIGNvbnRhaW5lcikge1xuICBPYmplY3Qua2V5cyhtZXJnZWRIZWxwZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChoZWxwZXJOYW1lKSB7XG4gICAgdmFyIGhlbHBlciA9IG1lcmdlZEhlbHBlcnNbaGVscGVyTmFtZV07XG4gICAgbWVyZ2VkSGVscGVyc1toZWxwZXJOYW1lXSA9IHBhc3NMb29rdXBQcm9wZXJ0eU9wdGlvbihoZWxwZXIsIGNvbnRhaW5lcik7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBwYXNzTG9va3VwUHJvcGVydHlPcHRpb24oaGVscGVyLCBjb250YWluZXIpIHtcbiAgdmFyIGxvb2t1cFByb3BlcnR5ID0gY29udGFpbmVyLmxvb2t1cFByb3BlcnR5O1xuICByZXR1cm4gX2ludGVybmFsV3JhcEhlbHBlci53cmFwSGVscGVyKGhlbHBlciwgZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gVXRpbHMuZXh0ZW5kKHsgbG9va3VwUHJvcGVydHk6IGxvb2t1cFByb3BlcnR5IH0sIG9wdGlvbnMpO1xuICB9KTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDNKMWJuUnBiV1V1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN096czdPenM3T3pzN096czdPenM3Y1VKQlFYVkNMRk5CUVZNN08wbEJRWEJDTEV0QlFVczdPM2xDUVVOTExHRkJRV0U3T3pzN2IwSkJUVFZDTEZGQlFWRTdPM1ZDUVVOdFFpeFhRVUZYT3p0clEwRkRiRUlzZFVKQlFYVkNPenR0UTBGSk0wTXNlVUpCUVhsQ096dEJRVVY2UWl4VFFVRlRMR0ZCUVdFc1EwRkJReXhaUVVGWkxFVkJRVVU3UVVGRE1VTXNUVUZCVFN4blFrRkJaMElzUjBGQlJ5eEJRVUZETEZsQlFWa3NTVUZCU1N4WlFVRlpMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVXNzUTBGQlF6dE5RVU0zUkN4bFFVRmxMREJDUVVGdlFpeERRVUZET3p0QlFVVjBReXhOUVVORkxHZENRVUZuUWl3eVEwRkJjVU1zU1VGRGNrUXNaMEpCUVdkQ0xESkNRVUZ4UWl4RlFVTnlRenRCUVVOQkxGZEJRVTg3UjBGRFVqczdRVUZGUkN4TlFVRkpMR2RDUVVGblFpd3dRMEZCYjBNc1JVRkJSVHRCUVVONFJDeFJRVUZOTEdWQlFXVXNSMEZCUnl4MVFrRkJhVUlzWlVGQlpTeERRVUZETzFGQlEzWkVMR2RDUVVGblFpeEhRVUZITEhWQ1FVRnBRaXhuUWtGQlowSXNRMEZCUXl4RFFVRkRPMEZCUTNoRUxGVkJRVTBzTWtKQlEwb3NlVVpCUVhsR0xFZEJRM1pHTEhGRVFVRnhSQ3hIUVVOeVJDeGxRVUZsTEVkQlEyWXNiVVJCUVcxRUxFZEJRMjVFTEdkQ1FVRm5RaXhIUVVOb1FpeEpRVUZKTEVOQlExQXNRMEZCUXp0SFFVTklMRTFCUVUwN08wRkJSVXdzVlVGQlRTd3lRa0ZEU2l4M1JrRkJkMFlzUjBGRGRFWXNhVVJCUVdsRUxFZEJRMnBFTEZsQlFWa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkRaaXhKUVVGSkxFTkJRMUFzUTBGQlF6dEhRVU5JTzBOQlEwWTdPMEZCUlUwc1UwRkJVeXhSUVVGUkxFTkJRVU1zV1VGQldTeEZRVUZGTEVkQlFVY3NSVUZCUlRzN1FVRkZNVU1zVFVGQlNTeERRVUZETEVkQlFVY3NSVUZCUlR0QlFVTlNMRlZCUVUwc01rSkJRV01zYlVOQlFXMURMRU5CUVVNc1EwRkJRenRIUVVNeFJEdEJRVU5FTEUxQlFVa3NRMEZCUXl4WlFVRlpMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zU1VGQlNTeEZRVUZGTzBGQlEzWkRMRlZCUVUwc01rSkJRV01zTWtKQlFUSkNMRWRCUVVjc1QwRkJUeXhaUVVGWkxFTkJRVU1zUTBGQlF6dEhRVU40UlRzN1FVRkZSQ3hqUVVGWkxFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNSMEZCUnl4WlFVRlpMRU5CUVVNc1RVRkJUU3hEUVVGRE96czdPMEZCU1d4RUxFdEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNZVUZCWVN4RFFVRkRMRmxCUVZrc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6czdPMEZCUnpWRExFMUJRVTBzYjBOQlFXOURMRWRCUTNoRExGbEJRVmtzUTBGQlF5eFJRVUZSTEVsQlFVa3NXVUZCV1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdPMEZCUlRGRUxGZEJRVk1zYjBKQlFXOUNMRU5CUVVNc1QwRkJUeXhGUVVGRkxFOUJRVThzUlVGQlJTeFBRVUZQTEVWQlFVVTdRVUZEZGtRc1VVRkJTU3hQUVVGUExFTkJRVU1zU1VGQlNTeEZRVUZGTzBGQlEyaENMR0ZCUVU4c1IwRkJSeXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVXNSVUZCUlN4UFFVRlBMRVZCUVVVc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzBGQlEyeEVMRlZCUVVrc1QwRkJUeXhEUVVGRExFZEJRVWNzUlVGQlJUdEJRVU5tTEdWQlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETzA5QlEzWkNPMHRCUTBZN1FVRkRSQ3hYUVVGUExFZEJRVWNzUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4alFVRmpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUlVGQlJTeFBRVUZQTEVWQlFVVXNUMEZCVHl4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRE96dEJRVVYwUlN4UlFVRkpMR1ZCUVdVc1IwRkJSeXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVXNSVUZCUlN4UFFVRlBMRVZCUVVVN1FVRkRPVU1zVjBGQlN5eEZRVUZGTEVsQlFVa3NRMEZCUXl4TFFVRkxPMEZCUTJwQ0xIZENRVUZyUWl4RlFVRkZMRWxCUVVrc1EwRkJReXhyUWtGQmEwSTdTMEZETlVNc1EwRkJReXhEUVVGRE96dEJRVVZJTEZGQlFVa3NUVUZCVFN4SFFVRkhMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zWVVGQllTeERRVUZETEVsQlFVa3NRMEZEY0VNc1NVRkJTU3hGUVVOS0xFOUJRVThzUlVGRFVDeFBRVUZQTEVWQlExQXNaVUZCWlN4RFFVTm9RaXhEUVVGRE96dEJRVVZHTEZGQlFVa3NUVUZCVFN4SlFVRkpMRWxCUVVrc1NVRkJTU3hIUVVGSExFTkJRVU1zVDBGQlR5eEZRVUZGTzBGQlEycERMR0ZCUVU4c1EwRkJReXhSUVVGUkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRekZETEU5QlFVOHNSVUZEVUN4WlFVRlpMRU5CUVVNc1pVRkJaU3hGUVVNMVFpeEhRVUZITEVOQlEwb3NRMEZCUXp0QlFVTkdMRmxCUVUwc1IwRkJSeXhQUVVGUExFTkJRVU1zVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhQUVVGUExFVkJRVVVzWlVGQlpTeERRVUZETEVOQlFVTTdTMEZEYmtVN1FVRkRSQ3hSUVVGSkxFMUJRVTBzU1VGQlNTeEpRVUZKTEVWQlFVVTdRVUZEYkVJc1ZVRkJTU3hQUVVGUExFTkJRVU1zVFVGQlRTeEZRVUZGTzBGQlEyeENMRmxCUVVrc1MwRkJTeXhIUVVGSExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1FVRkRMMElzWVVGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdEJRVU0xUXl4alFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVGRk8wRkJRelZDTEd0Q1FVRk5PMWRCUTFBN08wRkJSVVFzWlVGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRTlCUVU4c1EwRkJReXhOUVVGTkxFZEJRVWNzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMU5CUTNSRE8wRkJRMFFzWTBGQlRTeEhRVUZITEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03VDBGRE0wSTdRVUZEUkN4aFFVRlBMRTFCUVUwc1EwRkJRenRMUVVObUxFMUJRVTA3UVVGRFRDeFpRVUZOTERKQ1FVTktMR05CUVdNc1IwRkRXaXhQUVVGUExFTkJRVU1zU1VGQlNTeEhRVU5hTERCRVFVRXdSQ3hEUVVNM1JDeERRVUZETzB0QlEwZzdSMEZEUmpzN08wRkJSMFFzVFVGQlNTeFRRVUZUTEVkQlFVYzdRVUZEWkN4VlFVRk5MRVZCUVVVc1owSkJRVk1zUjBGQlJ5eEZRVUZGTEVsQlFVa3NSVUZCUlN4SFFVRkhMRVZCUVVVN1FVRkRMMElzVlVGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RlFVRkZMRWxCUVVrc1NVRkJTU3hIUVVGSExFTkJRVUVzUVVGQlF5eEZRVUZGTzBGQlF6RkNMR05CUVUwc01rSkJRV01zUjBGQlJ5eEhRVUZITEVsQlFVa3NSMEZCUnl4dFFrRkJiVUlzUjBGQlJ5eEhRVUZITEVWQlFVVTdRVUZETVVRc1lVRkJSeXhGUVVGRkxFZEJRVWM3VTBGRFZDeERRVUZETEVOQlFVTTdUMEZEU2p0QlFVTkVMR0ZCUVU4c1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzB0QlEyeENPMEZCUTBRc2EwSkJRV01zUlVGQlJTeDNRa0ZCVXl4TlFVRk5MRVZCUVVVc1dVRkJXU3hGUVVGRk8wRkJRemRETEZWQlFVa3NUVUZCVFN4SFFVRkhMRTFCUVUwc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF6dEJRVU5zUXl4VlFVRkpMRTFCUVUwc1NVRkJTU3hKUVVGSkxFVkJRVVU3UVVGRGJFSXNaVUZCVHl4TlFVRk5MRU5CUVVNN1QwRkRaanRCUVVORUxGVkJRVWtzVFVGQlRTeERRVUZETEZOQlFWTXNRMEZCUXl4alFVRmpMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeFpRVUZaTEVOQlFVTXNSVUZCUlR0QlFVTTVSQ3hsUVVGUExFMUJRVTBzUTBGQlF6dFBRVU5tT3p0QlFVVkVMRlZCUVVrc2NVTkJRV2RDTEUxQlFVMHNSVUZCUlN4VFFVRlRMRU5CUVVNc2EwSkJRV3RDTEVWQlFVVXNXVUZCV1N4RFFVRkRMRVZCUVVVN1FVRkRka1VzWlVGQlR5eE5RVUZOTEVOQlFVTTdUMEZEWmp0QlFVTkVMR0ZCUVU4c1UwRkJVeXhEUVVGRE8wdEJRMnhDTzBGQlEwUXNWVUZCVFN4RlFVRkZMR2RDUVVGVExFMUJRVTBzUlVGQlJTeEpRVUZKTEVWQlFVVTdRVUZETjBJc1ZVRkJUU3hIUVVGSExFZEJRVWNzVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXp0QlFVTXhRaXhYUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1IwRkJSeXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzBGQlF6VkNMRmxCUVVrc1RVRkJUU3hIUVVGSExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4VFFVRlRMRU5CUVVNc1kwRkJZeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRCUVVOd1JTeFpRVUZKTEUxQlFVMHNTVUZCU1N4SlFVRkpMRVZCUVVVN1FVRkRiRUlzYVVKQlFVOHNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFOQlEzaENPMDlCUTBZN1MwRkRSanRCUVVORUxGVkJRVTBzUlVGQlJTeG5Ra0ZCVXl4UFFVRlBMRVZCUVVVc1QwRkJUeXhGUVVGRk8wRkJRMnBETEdGQlFVOHNUMEZCVHl4UFFVRlBMRXRCUVVzc1ZVRkJWU3hIUVVGSExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWRCUVVjc1QwRkJUeXhEUVVGRE8wdEJRM2hGT3p0QlFVVkVMRzlDUVVGblFpeEZRVUZGTEV0QlFVc3NRMEZCUXl4blFrRkJaMEk3UVVGRGVFTXNhVUpCUVdFc1JVRkJSU3h2UWtGQmIwSTdPMEZCUlc1RExFMUJRVVVzUlVGQlJTeFpRVUZUTEVOQlFVTXNSVUZCUlR0QlFVTmtMRlZCUVVrc1IwRkJSeXhIUVVGSExGbEJRVmtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTXhRaXhUUVVGSExFTkJRVU1zVTBGQlV5eEhRVUZITEZsQlFWa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03UVVGRGRrTXNZVUZCVHl4SFFVRkhMRU5CUVVNN1MwRkRXanM3UVVGRlJDeFpRVUZSTEVWQlFVVXNSVUZCUlR0QlFVTmFMRmRCUVU4c1JVRkJSU3hwUWtGQlV5eERRVUZETEVWQlFVVXNTVUZCU1N4RlFVRkZMRzFDUVVGdFFpeEZRVUZGTEZkQlFWY3NSVUZCUlN4TlFVRk5MRVZCUVVVN1FVRkRia1VzVlVGQlNTeGpRVUZqTEVkQlFVY3NTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU03VlVGRGJrTXNSVUZCUlN4SFFVRkhMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEYkVJc1ZVRkJTU3hKUVVGSkxFbEJRVWtzVFVGQlRTeEpRVUZKTEZkQlFWY3NTVUZCU1N4dFFrRkJiVUlzUlVGQlJUdEJRVU40UkN4elFrRkJZeXhIUVVGSExGZEJRVmNzUTBGRE1VSXNTVUZCU1N4RlFVTktMRU5CUVVNc1JVRkRSQ3hGUVVGRkxFVkJRMFlzU1VGQlNTeEZRVU5LTEcxQ1FVRnRRaXhGUVVOdVFpeFhRVUZYTEVWQlExZ3NUVUZCVFN4RFFVTlFMRU5CUVVNN1QwRkRTQ3hOUVVGTkxFbEJRVWtzUTBGQlF5eGpRVUZqTEVWQlFVVTdRVUZETVVJc2MwSkJRV01zUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExGZEJRVmNzUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8wOUJRemxFTzBGQlEwUXNZVUZCVHl4alFVRmpMRU5CUVVNN1MwRkRka0k3TzBGQlJVUXNVVUZCU1N4RlFVRkZMR05CUVZNc1MwRkJTeXhGUVVGRkxFdEJRVXNzUlVGQlJUdEJRVU16UWl4aFFVRlBMRXRCUVVzc1NVRkJTU3hMUVVGTExFVkJRVVVzUlVGQlJUdEJRVU4yUWl4aFFVRkxMRWRCUVVjc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF6dFBRVU4yUWp0QlFVTkVMR0ZCUVU4c1MwRkJTeXhEUVVGRE8wdEJRMlE3UVVGRFJDeHBRa0ZCWVN4RlFVRkZMSFZDUVVGVExFdEJRVXNzUlVGQlJTeE5RVUZOTEVWQlFVVTdRVUZEY2tNc1ZVRkJTU3hIUVVGSExFZEJRVWNzUzBGQlN5eEpRVUZKTEUxQlFVMHNRMEZCUXpzN1FVRkZNVUlzVlVGQlNTeExRVUZMTEVsQlFVa3NUVUZCVFN4SlFVRkpMRXRCUVVzc1MwRkJTeXhOUVVGTkxFVkJRVVU3UVVGRGRrTXNWMEZCUnl4SFFVRkhMRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeEZRVUZGTEUxQlFVMHNSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenRQUVVOMlF6czdRVUZGUkN4aFFVRlBMRWRCUVVjc1EwRkJRenRMUVVOYU96dEJRVVZFTEdWQlFWY3NSVUZCUlN4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF6czdRVUZGTlVJc1VVRkJTU3hGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNTVUZCU1R0QlFVTnFRaXhuUWtGQldTeEZRVUZGTEZsQlFWa3NRMEZCUXl4UlFVRlJPMGRCUTNCRExFTkJRVU03TzBGQlJVWXNWMEZCVXl4SFFVRkhMRU5CUVVNc1QwRkJUeXhGUVVGblFqdFJRVUZrTEU5QlFVOHNlVVJCUVVjc1JVRkJSVHM3UVVGRGFFTXNVVUZCU1N4SlFVRkpMRWRCUVVjc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF6czdRVUZGZUVJc1QwRkJSeXhEUVVGRExFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0QlFVTndRaXhSUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEU5QlFVOHNTVUZCU1N4WlFVRlpMRU5CUVVNc1QwRkJUeXhGUVVGRk8wRkJRelZETEZWQlFVa3NSMEZCUnl4UlFVRlJMRU5CUVVNc1QwRkJUeXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzB0QlEyaERPMEZCUTBRc1VVRkJTU3hOUVVGTkxGbEJRVUU3VVVGRFVpeFhRVUZYTEVkQlFVY3NXVUZCV1N4RFFVRkRMR05CUVdNc1IwRkJSeXhGUVVGRkxFZEJRVWNzVTBGQlV5eERRVUZETzBGQlF6ZEVMRkZCUVVrc1dVRkJXU3hEUVVGRExGTkJRVk1zUlVGQlJUdEJRVU14UWl4VlFVRkpMRTlCUVU4c1EwRkJReXhOUVVGTkxFVkJRVVU3UVVGRGJFSXNZMEZCVFN4SFFVTktMRTlCUVU4c1NVRkJTU3hQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVTjRRaXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hEUVVGRExFZEJRMmhETEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNN1QwRkRkRUlzVFVGQlRUdEJRVU5NTEdOQlFVMHNSMEZCUnl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wOUJRM0JDTzB0QlEwWTdPMEZCUlVRc1lVRkJVeXhKUVVGSkxFTkJRVU1zVDBGQlR5eG5Ra0ZCWjBJN1FVRkRia01zWVVGRFJTeEZRVUZGTEVkQlEwWXNXVUZCV1N4RFFVRkRMRWxCUVVrc1EwRkRaaXhUUVVGVExFVkJRMVFzVDBGQlR5eEZRVU5RTEZOQlFWTXNRMEZCUXl4UFFVRlBMRVZCUTJwQ0xGTkJRVk1zUTBGQlF5eFJRVUZSTEVWQlEyeENMRWxCUVVrc1JVRkRTaXhYUVVGWExFVkJRMWdzVFVGQlRTeERRVU5RTEVOQlEwUTdTMEZEU0RzN1FVRkZSQ3hSUVVGSkxFZEJRVWNzYVVKQlFXbENMRU5CUTNSQ0xGbEJRVmtzUTBGQlF5eEpRVUZKTEVWQlEycENMRWxCUVVrc1JVRkRTaXhUUVVGVExFVkJRMVFzVDBGQlR5eERRVUZETEUxQlFVMHNTVUZCU1N4RlFVRkZMRVZCUTNCQ0xFbEJRVWtzUlVGRFNpeFhRVUZYTEVOQlExb3NRMEZCUXp0QlFVTkdMRmRCUVU4c1NVRkJTU3hEUVVGRExFOUJRVThzUlVGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXp0SFFVTXZRanM3UVVGRlJDeExRVUZITEVOQlFVTXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJRenM3UVVGRmFrSXNTMEZCUnl4RFFVRkRMRTFCUVUwc1IwRkJSeXhWUVVGVExFOUJRVThzUlVGQlJUdEJRVU0zUWl4UlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFOUJRVThzUlVGQlJUdEJRVU53UWl4VlFVRkpMR0ZCUVdFc1IwRkJSeXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVXNSVUZCUlN4SFFVRkhMRU5CUVVNc1QwRkJUeXhGUVVGRkxFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0QlFVTnVSU3h4UTBGQkswSXNRMEZCUXl4aFFVRmhMRVZCUVVVc1UwRkJVeXhEUVVGRExFTkJRVU03UVVGRE1VUXNaVUZCVXl4RFFVRkRMRTlCUVU4c1IwRkJSeXhoUVVGaExFTkJRVU03TzBGQlJXeERMRlZCUVVrc1dVRkJXU3hEUVVGRExGVkJRVlVzUlVGQlJUczdRVUZGTTBJc2FVSkJRVk1zUTBGQlF5eFJRVUZSTEVkQlFVY3NVMEZCVXl4RFFVRkRMR0ZCUVdFc1EwRkRNVU1zVDBGQlR5eERRVUZETEZGQlFWRXNSVUZEYUVJc1IwRkJSeXhEUVVGRExGRkJRVkVzUTBGRFlpeERRVUZETzA5QlEwZzdRVUZEUkN4VlFVRkpMRmxCUVZrc1EwRkJReXhWUVVGVkxFbEJRVWtzV1VGQldTeERRVUZETEdGQlFXRXNSVUZCUlR0QlFVTjZSQ3hwUWtGQlV5eERRVUZETEZWQlFWVXNSMEZCUnl4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVOcVF5eEZRVUZGTEVWQlEwWXNSMEZCUnl4RFFVRkRMRlZCUVZVc1JVRkRaQ3hQUVVGUExFTkJRVU1zVlVGQlZTeERRVU51UWl4RFFVRkRPMDlCUTBnN08wRkJSVVFzWlVGQlV5eERRVUZETEV0QlFVc3NSMEZCUnl4RlFVRkZMRU5CUVVNN1FVRkRja0lzWlVGQlV5eERRVUZETEd0Q1FVRnJRaXhIUVVGSExEaERRVUY1UWl4UFFVRlBMRU5CUVVNc1EwRkJRenM3UVVGRmFrVXNWVUZCU1N4dFFrRkJiVUlzUjBGRGNrSXNUMEZCVHl4RFFVRkRMSGxDUVVGNVFpeEpRVU5xUXl4dlEwRkJiME1zUTBGQlF6dEJRVU4yUXl4cFEwRkJhMElzVTBGQlV5eEZRVUZGTEdWQlFXVXNSVUZCUlN4dFFrRkJiVUlzUTBGQlF5eERRVUZETzBGQlEyNUZMR2xEUVVGclFpeFRRVUZUTEVWQlFVVXNiMEpCUVc5Q0xFVkJRVVVzYlVKQlFXMUNMRU5CUVVNc1EwRkJRenRMUVVONlJTeE5RVUZOTzBGQlEwd3NaVUZCVXl4RFFVRkRMR3RDUVVGclFpeEhRVUZITEU5QlFVOHNRMEZCUXl4clFrRkJhMElzUTBGQlF6dEJRVU14UkN4bFFVRlRMRU5CUVVNc1QwRkJUeXhIUVVGSExFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTTdRVUZEY0VNc1pVRkJVeXhEUVVGRExGRkJRVkVzUjBGQlJ5eFBRVUZQTEVOQlFVTXNVVUZCVVN4RFFVRkRPMEZCUTNSRExHVkJRVk1zUTBGQlF5eFZRVUZWTEVkQlFVY3NUMEZCVHl4RFFVRkRMRlZCUVZVc1EwRkJRenRCUVVNeFF5eGxRVUZUTEVOQlFVTXNTMEZCU3l4SFFVRkhMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU03UzBGRGFrTTdSMEZEUml4RFFVRkRPenRCUVVWR0xFdEJRVWNzUTBGQlF5eE5RVUZOTEVkQlFVY3NWVUZCVXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hGUVVGRkxGZEJRVmNzUlVGQlJTeE5RVUZOTEVWQlFVVTdRVUZEYkVRc1VVRkJTU3haUVVGWkxFTkJRVU1zWTBGQll5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RlFVRkZPMEZCUXk5RExGbEJRVTBzTWtKQlFXTXNkMEpCUVhkQ0xFTkJRVU1zUTBGQlF6dExRVU12UXp0QlFVTkVMRkZCUVVrc1dVRkJXU3hEUVVGRExGTkJRVk1zU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlR0QlFVTnlReXhaUVVGTkxESkNRVUZqTEhsQ1FVRjVRaXhEUVVGRExFTkJRVU03UzBGRGFFUTdPMEZCUlVRc1YwRkJUeXhYUVVGWExFTkJRMmhDTEZOQlFWTXNSVUZEVkN4RFFVRkRMRVZCUTBRc1dVRkJXU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVU5tTEVsQlFVa3NSVUZEU2l4RFFVRkRMRVZCUTBRc1YwRkJWeXhGUVVOWUxFMUJRVTBzUTBGRFVDeERRVUZETzBkQlEwZ3NRMEZCUXp0QlFVTkdMRk5CUVU4c1IwRkJSeXhEUVVGRE8wTkJRMW83TzBGQlJVMHNVMEZCVXl4WFFVRlhMRU5CUTNwQ0xGTkJRVk1zUlVGRFZDeERRVUZETEVWQlEwUXNSVUZCUlN4RlFVTkdMRWxCUVVrc1JVRkRTaXh0UWtGQmJVSXNSVUZEYmtJc1YwRkJWeXhGUVVOWUxFMUJRVTBzUlVGRFRqdEJRVU5CTEZkQlFWTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1JVRkJaMEk3VVVGQlpDeFBRVUZQTEhsRVFVRkhMRVZCUVVVN08wRkJRMnBETEZGQlFVa3NZVUZCWVN4SFFVRkhMRTFCUVUwc1EwRkJRenRCUVVNelFpeFJRVU5GTEUxQlFVMHNTVUZEVGl4UFFVRlBMRWxCUVVrc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eEpRVU53UWl4RlFVRkZMRTlCUVU4c1MwRkJTeXhUUVVGVExFTkJRVU1zVjBGQlZ5eEpRVUZKTEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhKUVVGSkxFTkJRVUVzUVVGQlF5eEZRVU14UkR0QlFVTkJMRzFDUVVGaExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03UzBGRE1VTTdPMEZCUlVRc1YwRkJUeXhGUVVGRkxFTkJRMUFzVTBGQlV5eEZRVU5VTEU5QlFVOHNSVUZEVUN4VFFVRlRMRU5CUVVNc1QwRkJUeXhGUVVOcVFpeFRRVUZUTEVOQlFVTXNVVUZCVVN4RlFVTnNRaXhQUVVGUExFTkJRVU1zU1VGQlNTeEpRVUZKTEVsQlFVa3NSVUZEY0VJc1YwRkJWeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhYUVVGWExFTkJRVU1zUlVGRGVFUXNZVUZCWVN4RFFVTmtMRU5CUVVNN1IwRkRTRHM3UVVGRlJDeE5RVUZKTEVkQlFVY3NhVUpCUVdsQ0xFTkJRVU1zUlVGQlJTeEZRVUZGTEVsQlFVa3NSVUZCUlN4VFFVRlRMRVZCUVVVc1RVRkJUU3hGUVVGRkxFbEJRVWtzUlVGQlJTeFhRVUZYTEVOQlFVTXNRMEZCUXpzN1FVRkZla1VzVFVGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4RFFVRkRMRU5CUVVNN1FVRkRha0lzVFVGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4TlFVRk5MRWRCUVVjc1RVRkJUU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZEZUVNc1RVRkJTU3hEUVVGRExGZEJRVmNzUjBGQlJ5eHRRa0ZCYlVJc1NVRkJTU3hEUVVGRExFTkJRVU03UVVGRE5VTXNVMEZCVHl4SlFVRkpMRU5CUVVNN1EwRkRZanM3T3pzN08wRkJTMDBzVTBGQlV5eGpRVUZqTEVOQlFVTXNUMEZCVHl4RlFVRkZMRTlCUVU4c1JVRkJSU3hQUVVGUExFVkJRVVU3UVVGRGVFUXNUVUZCU1N4RFFVRkRMRTlCUVU4c1JVRkJSVHRCUVVOYUxGRkJRVWtzVDBGQlR5eERRVUZETEVsQlFVa3NTMEZCU3l4blFrRkJaMElzUlVGQlJUdEJRVU55UXl4aFFVRlBMRWRCUVVjc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eGxRVUZsTEVOQlFVTXNRMEZCUXp0TFFVTjZReXhOUVVGTk8wRkJRMHdzWVVGQlR5eEhRVUZITEU5QlFVOHNRMEZCUXl4UlFVRlJMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzB0QlF6RkRPMGRCUTBZc1RVRkJUU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFVkJRVVU3TzBGQlJYcERMRmRCUVU4c1EwRkJReXhKUVVGSkxFZEJRVWNzVDBGQlR5eERRVUZETzBGQlEzWkNMRmRCUVU4c1IwRkJSeXhQUVVGUExFTkJRVU1zVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMGRCUTNKRE8wRkJRMFFzVTBGQlR5eFBRVUZQTEVOQlFVTTdRMEZEYUVJN08wRkJSVTBzVTBGQlV5eGhRVUZoTEVOQlFVTXNUMEZCVHl4RlFVRkZMRTlCUVU4c1JVRkJSU3hQUVVGUExFVkJRVVU3TzBGQlJYWkVMRTFCUVUwc2JVSkJRVzFDTEVkQlFVY3NUMEZCVHl4RFFVRkRMRWxCUVVrc1NVRkJTU3hQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEdWQlFXVXNRMEZCUXl4RFFVRkRPMEZCUXpGRkxGTkJRVThzUTBGQlF5eFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRPMEZCUTNaQ0xFMUJRVWtzVDBGQlR5eERRVUZETEVkQlFVY3NSVUZCUlR0QlFVTm1MRmRCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zVjBGQlZ5eEhRVUZITEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNN1IwRkRka1U3TzBGQlJVUXNUVUZCU1N4WlFVRlpMRmxCUVVFc1EwRkJRenRCUVVOcVFpeE5RVUZKTEU5QlFVOHNRMEZCUXl4RlFVRkZMRWxCUVVrc1QwRkJUeXhEUVVGRExFVkJRVVVzUzBGQlN5eEpRVUZKTEVWQlFVVTdPMEZCUTNKRExHRkJRVThzUTBGQlF5eEpRVUZKTEVkQlFVY3NhMEpCUVZrc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZET3p0QlFVVjZReXhWUVVGSkxFVkJRVVVzUjBGQlJ5eFBRVUZQTEVOQlFVTXNSVUZCUlN4RFFVRkRPMEZCUTNCQ0xHdENRVUZaTEVkQlFVY3NUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhsUVVGbExFTkJRVU1zUjBGQlJ5eFRRVUZUTEcxQ1FVRnRRaXhEUVVONlJTeFBRVUZQTEVWQlJWQTdXVUZFUVN4UFFVRlBMSGxFUVVGSExFVkJRVVU3T3pzN1FVRkpXaXhsUVVGUExFTkJRVU1zU1VGQlNTeEhRVUZITEd0Q1FVRlpMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEJRVU42UXl4bFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExHVkJRV1VzUTBGQlF5eEhRVUZITEcxQ1FVRnRRaXhEUVVGRE8wRkJRM0JFTEdWQlFVOHNSVUZCUlN4RFFVRkRMRTlCUVU4c1JVRkJSU3hQUVVGUExFTkJRVU1zUTBGQlF6dFBRVU0zUWl4RFFVRkRPMEZCUTBZc1ZVRkJTU3hGUVVGRkxFTkJRVU1zVVVGQlVTeEZRVUZGTzBGQlEyWXNaVUZCVHl4RFFVRkRMRkZCUVZFc1IwRkJSeXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVXNSVUZCUlN4UFFVRlBMRU5CUVVNc1VVRkJVU3hGUVVGRkxFVkJRVVVzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0UFFVTndSVHM3UjBGRFJqczdRVUZGUkN4TlFVRkpMRTlCUVU4c1MwRkJTeXhUUVVGVExFbEJRVWtzV1VGQldTeEZRVUZGTzBGQlEzcERMRmRCUVU4c1IwRkJSeXhaUVVGWkxFTkJRVU03UjBGRGVFSTdPMEZCUlVRc1RVRkJTU3hQUVVGUExFdEJRVXNzVTBGQlV5eEZRVUZGTzBGQlEzcENMRlZCUVUwc01rSkJRV01zWTBGQll5eEhRVUZITEU5QlFVOHNRMEZCUXl4SlFVRkpMRWRCUVVjc2NVSkJRWEZDTEVOQlFVTXNRMEZCUXp0SFFVTTFSU3hOUVVGTkxFbEJRVWtzVDBGQlR5eFpRVUZaTEZGQlFWRXNSVUZCUlR0QlFVTjBReXhYUVVGUExFOUJRVThzUTBGQlF5eFBRVUZQTEVWQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVVNN1IwRkRiRU03UTBGRFJqczdRVUZGVFN4VFFVRlRMRWxCUVVrc1IwRkJSenRCUVVOeVFpeFRRVUZQTEVWQlFVVXNRMEZCUXp0RFFVTllPenRCUVVWRUxGTkJRVk1zVVVGQlVTeERRVUZETEU5QlFVOHNSVUZCUlN4SlFVRkpMRVZCUVVVN1FVRkRMMElzVFVGQlNTeERRVUZETEVsQlFVa3NTVUZCU1N4RlFVRkZMRTFCUVUwc1NVRkJTU3hKUVVGSkxFTkJRVUVzUVVGQlF5eEZRVUZGTzBGQlF6bENMRkZCUVVrc1IwRkJSeXhKUVVGSkxFZEJRVWNzYTBKQlFWa3NTVUZCU1N4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRE8wRkJRM0pETEZGQlFVa3NRMEZCUXl4SlFVRkpMRWRCUVVjc1QwRkJUeXhEUVVGRE8wZEJRM0pDTzBGQlEwUXNVMEZCVHl4SlFVRkpMRU5CUVVNN1EwRkRZanM3UVVGRlJDeFRRVUZUTEdsQ1FVRnBRaXhEUVVGRExFVkJRVVVzUlVGQlJTeEpRVUZKTEVWQlFVVXNVMEZCVXl4RlFVRkZMRTFCUVUwc1JVRkJSU3hKUVVGSkxFVkJRVVVzVjBGQlZ5eEZRVUZGTzBGQlEzcEZMRTFCUVVrc1JVRkJSU3hEUVVGRExGTkJRVk1zUlVGQlJUdEJRVU5vUWl4UlFVRkpMRXRCUVVzc1IwRkJSeXhGUVVGRkxFTkJRVU03UVVGRFppeFJRVUZKTEVkQlFVY3NSVUZCUlN4RFFVRkRMRk5CUVZNc1EwRkRha0lzU1VGQlNTeEZRVU5LTEV0QlFVc3NSVUZEVEN4VFFVRlRMRVZCUTFRc1RVRkJUU3hKUVVGSkxFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZEYmtJc1NVRkJTU3hGUVVOS0xGZEJRVmNzUlVGRFdDeE5RVUZOTEVOQlExQXNRMEZCUXp0QlFVTkdMRk5CUVVzc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMGRCUXpOQ08wRkJRMFFzVTBGQlR5eEpRVUZKTEVOQlFVTTdRMEZEWWpzN1FVRkZSQ3hUUVVGVExDdENRVUVyUWl4RFFVRkRMR0ZCUVdFc1JVRkJSU3hUUVVGVExFVkJRVVU3UVVGRGFrVXNVVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUVN4VlFVRlZMRVZCUVVrN1FVRkRMME1zVVVGQlNTeE5RVUZOTEVkQlFVY3NZVUZCWVN4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8wRkJRM1pETEdsQ1FVRmhMRU5CUVVNc1ZVRkJWU3hEUVVGRExFZEJRVWNzZDBKQlFYZENMRU5CUVVNc1RVRkJUU3hGUVVGRkxGTkJRVk1zUTBGQlF5eERRVUZETzBkQlEzcEZMRU5CUVVNc1EwRkJRenREUVVOS096dEJRVVZFTEZOQlFWTXNkMEpCUVhkQ0xFTkJRVU1zVFVGQlRTeEZRVUZGTEZOQlFWTXNSVUZCUlR0QlFVTnVSQ3hOUVVGTkxHTkJRV01zUjBGQlJ5eFRRVUZUTEVOQlFVTXNZMEZCWXl4RFFVRkRPMEZCUTJoRUxGTkJRVThzSzBKQlFWY3NUVUZCVFN4RlFVRkZMRlZCUVVFc1QwRkJUeXhGUVVGSk8wRkJRMjVETEZkQlFVOHNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRkxHTkJRV01zUlVGQlpDeGpRVUZqTEVWQlFVVXNSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenRIUVVOc1JDeERRVUZETEVOQlFVTTdRMEZEU2lJc0ltWnBiR1VpT2lKeWRXNTBhVzFsTG1weklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElDb2dZWE1nVlhScGJITWdabkp2YlNBbkxpOTFkR2xzY3ljN1hHNXBiWEJ2Y25RZ1JYaGpaWEIwYVc5dUlHWnliMjBnSnk0dlpYaGpaWEIwYVc5dUp6dGNibWx0Y0c5eWRDQjdYRzRnSUVOUFRWQkpURVZTWDFKRlZrbFRTVTlPTEZ4dUlDQmpjbVZoZEdWR2NtRnRaU3hjYmlBZ1RFRlRWRjlEVDAxUVFWUkpRa3hGWDBOUFRWQkpURVZTWDFKRlZrbFRTVTlPTEZ4dUlDQlNSVlpKVTBsUFRsOURTRUZPUjBWVFhHNTlJR1p5YjIwZ0p5NHZZbUZ6WlNjN1hHNXBiWEJ2Y25RZ2V5QnRiM1psU0dWc2NHVnlWRzlJYjI5cmN5QjlJR1p5YjIwZ0p5NHZhR1ZzY0dWeWN5YzdYRzVwYlhCdmNuUWdleUIzY21Gd1NHVnNjR1Z5SUgwZ1puSnZiU0FuTGk5cGJuUmxjbTVoYkM5M2NtRndTR1ZzY0dWeUp6dGNibWx0Y0c5eWRDQjdYRzRnSUdOeVpXRjBaVkJ5YjNSdlFXTmpaWE56UTI5dWRISnZiQ3hjYmlBZ2NtVnpkV3gwU1hOQmJHeHZkMlZrWEc1OUlHWnliMjBnSnk0dmFXNTBaWEp1WVd3dmNISnZkRzh0WVdOalpYTnpKenRjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdOb1pXTnJVbVYyYVhOcGIyNG9ZMjl0Y0dsc1pYSkpibVp2S1NCN1hHNGdJR052Ym5OMElHTnZiWEJwYkdWeVVtVjJhWE5wYjI0Z1BTQW9ZMjl0Y0dsc1pYSkpibVp2SUNZbUlHTnZiWEJwYkdWeVNXNW1iMXN3WFNrZ2ZId2dNU3hjYmlBZ0lDQmpkWEp5Wlc1MFVtVjJhWE5wYjI0Z1BTQkRUMDFRU1V4RlVsOVNSVlpKVTBsUFRqdGNibHh1SUNCcFppQW9YRzRnSUNBZ1kyOXRjR2xzWlhKU1pYWnBjMmx2YmlBK1BTQk1RVk5VWDBOUFRWQkJWRWxDVEVWZlEwOU5VRWxNUlZKZlVrVldTVk5KVDA0Z0ppWmNiaUFnSUNCamIyMXdhV3hsY2xKbGRtbHphVzl1SUR3OUlFTlBUVkJKVEVWU1gxSkZWa2xUU1U5T1hHNGdJQ2tnZTF4dUlDQWdJSEpsZEhWeWJqdGNiaUFnZlZ4dVhHNGdJR2xtSUNoamIyMXdhV3hsY2xKbGRtbHphVzl1SUR3Z1RFRlRWRjlEVDAxUVFWUkpRa3hGWDBOUFRWQkpURVZTWDFKRlZrbFRTVTlPS1NCN1hHNGdJQ0FnWTI5dWMzUWdjblZ1ZEdsdFpWWmxjbk5wYjI1eklEMGdVa1ZXU1ZOSlQwNWZRMGhCVGtkRlUxdGpkWEp5Wlc1MFVtVjJhWE5wYjI1ZExGeHVJQ0FnSUNBZ1kyOXRjR2xzWlhKV1pYSnphVzl1Y3lBOUlGSkZWa2xUU1U5T1gwTklRVTVIUlZOYlkyOXRjR2xzWlhKU1pYWnBjMmx2YmwwN1hHNGdJQ0FnZEdoeWIzY2dibVYzSUVWNFkyVndkR2x2YmloY2JpQWdJQ0FnSUNkVVpXMXdiR0YwWlNCM1lYTWdjSEpsWTI5dGNHbHNaV1FnZDJsMGFDQmhiaUJ2YkdSbGNpQjJaWEp6YVc5dUlHOW1JRWhoYm1Sc1pXSmhjbk1nZEdoaGJpQjBhR1VnWTNWeWNtVnVkQ0J5ZFc1MGFXMWxMaUFuSUN0Y2JpQWdJQ0FnSUNBZ0oxQnNaV0Z6WlNCMWNHUmhkR1VnZVc5MWNpQndjbVZqYjIxd2FXeGxjaUIwYnlCaElHNWxkMlZ5SUhabGNuTnBiMjRnS0NjZ0sxeHVJQ0FnSUNBZ0lDQnlkVzUwYVcxbFZtVnljMmx2Ym5NZ0sxeHVJQ0FnSUNBZ0lDQW5LU0J2Y2lCa2IzZHVaM0poWkdVZ2VXOTFjaUJ5ZFc1MGFXMWxJSFJ2SUdGdUlHOXNaR1Z5SUhabGNuTnBiMjRnS0NjZ0sxeHVJQ0FnSUNBZ0lDQmpiMjF3YVd4bGNsWmxjbk5wYjI1eklDdGNiaUFnSUNBZ0lDQWdKeWt1SjF4dUlDQWdJQ2s3WEc0Z0lIMGdaV3h6WlNCN1hHNGdJQ0FnTHk4Z1ZYTmxJSFJvWlNCbGJXSmxaR1JsWkNCMlpYSnphVzl1SUdsdVptOGdjMmx1WTJVZ2RHaGxJSEoxYm5ScGJXVWdaRzlsYzI0bmRDQnJibTkzSUdGaWIzVjBJSFJvYVhNZ2NtVjJhWE5wYjI0Z2VXVjBYRzRnSUNBZ2RHaHliM2NnYm1WM0lFVjRZMlZ3ZEdsdmJpaGNiaUFnSUNBZ0lDZFVaVzF3YkdGMFpTQjNZWE1nY0hKbFkyOXRjR2xzWldRZ2QybDBhQ0JoSUc1bGQyVnlJSFpsY25OcGIyNGdiMllnU0dGdVpHeGxZbUZ5Y3lCMGFHRnVJSFJvWlNCamRYSnlaVzUwSUhKMWJuUnBiV1V1SUNjZ0sxeHVJQ0FnSUNBZ0lDQW5VR3hsWVhObElIVndaR0YwWlNCNWIzVnlJSEoxYm5ScGJXVWdkRzhnWVNCdVpYZGxjaUIyWlhKemFXOXVJQ2duSUN0Y2JpQWdJQ0FnSUNBZ1kyOXRjR2xzWlhKSmJtWnZXekZkSUN0Y2JpQWdJQ0FnSUNBZ0p5a3VKMXh1SUNBZ0lDazdYRzRnSUgxY2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSFJsYlhCc1lYUmxLSFJsYlhCc1lYUmxVM0JsWXl3Z1pXNTJLU0I3WEc0Z0lDOHFJR2x6ZEdGdVluVnNJR2xuYm05eVpTQnVaWGgwSUNvdlhHNGdJR2xtSUNnaFpXNTJLU0I3WEc0Z0lDQWdkR2h5YjNjZ2JtVjNJRVY0WTJWd2RHbHZiaWduVG04Z1pXNTJhWEp2Ym0xbGJuUWdjR0Z6YzJWa0lIUnZJSFJsYlhCc1lYUmxKeWs3WEc0Z0lIMWNiaUFnYVdZZ0tDRjBaVzF3YkdGMFpWTndaV01nZkh3Z0lYUmxiWEJzWVhSbFUzQmxZeTV0WVdsdUtTQjdYRzRnSUNBZ2RHaHliM2NnYm1WM0lFVjRZMlZ3ZEdsdmJpZ25WVzVyYm05M2JpQjBaVzF3YkdGMFpTQnZZbXBsWTNRNklDY2dLeUIwZVhCbGIyWWdkR1Z0Y0d4aGRHVlRjR1ZqS1R0Y2JpQWdmVnh1WEc0Z0lIUmxiWEJzWVhSbFUzQmxZeTV0WVdsdUxtUmxZMjl5WVhSdmNpQTlJSFJsYlhCc1lYUmxVM0JsWXk1dFlXbHVYMlE3WEc1Y2JpQWdMeThnVG05MFpUb2dWWE5wYm1jZ1pXNTJMbFpOSUhKbFptVnlaVzVqWlhNZ2NtRjBhR1Z5SUhSb1lXNGdiRzlqWVd3Z2RtRnlJSEpsWm1WeVpXNWpaWE1nZEdoeWIzVm5hRzkxZENCMGFHbHpJSE5sWTNScGIyNGdkRzhnWVd4c2IzZGNiaUFnTHk4Z1ptOXlJR1Y0ZEdWeWJtRnNJSFZ6WlhKeklIUnZJRzkyWlhKeWFXUmxJSFJvWlhObElHRnpJSEJ6WlhWa2J5MXpkWEJ3YjNKMFpXUWdRVkJKY3k1Y2JpQWdaVzUyTGxaTkxtTm9aV05yVW1WMmFYTnBiMjRvZEdWdGNHeGhkR1ZUY0dWakxtTnZiWEJwYkdWeUtUdGNibHh1SUNBdkx5QmlZV05yZDJGeVpITWdZMjl0Y0dGMGFXSnBiR2wwZVNCbWIzSWdjSEpsWTI5dGNHbHNaV1FnZEdWdGNHeGhkR1Z6SUhkcGRHZ2dZMjl0Y0dsc1pYSXRkbVZ5YzJsdmJpQTNJQ2c4TkM0ekxqQXBYRzRnSUdOdmJuTjBJSFJsYlhCc1lYUmxWMkZ6VUhKbFkyOXRjR2xzWldSWGFYUm9RMjl0Y0dsc1pYSldOeUE5WEc0Z0lDQWdkR1Z0Y0d4aGRHVlRjR1ZqTG1OdmJYQnBiR1Z5SUNZbUlIUmxiWEJzWVhSbFUzQmxZeTVqYjIxd2FXeGxjbHN3WFNBOVBUMGdOenRjYmx4dUlDQm1kVzVqZEdsdmJpQnBiblp2YTJWUVlYSjBhV0ZzVjNKaGNIQmxjaWh3WVhKMGFXRnNMQ0JqYjI1MFpYaDBMQ0J2Y0hScGIyNXpLU0I3WEc0Z0lDQWdhV1lnS0c5d2RHbHZibk11YUdGemFDa2dlMXh1SUNBZ0lDQWdZMjl1ZEdWNGRDQTlJRlYwYVd4ekxtVjRkR1Z1WkNoN2ZTd2dZMjl1ZEdWNGRDd2diM0IwYVc5dWN5NW9ZWE5vS1R0Y2JpQWdJQ0FnSUdsbUlDaHZjSFJwYjI1ekxtbGtjeWtnZTF4dUlDQWdJQ0FnSUNCdmNIUnBiMjV6TG1sa2Mxc3dYU0E5SUhSeWRXVTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0FnSUhCaGNuUnBZV3dnUFNCbGJuWXVWazB1Y21WemIyeDJaVkJoY25ScFlXd3VZMkZzYkNoMGFHbHpMQ0J3WVhKMGFXRnNMQ0JqYjI1MFpYaDBMQ0J2Y0hScGIyNXpLVHRjYmx4dUlDQWdJR3hsZENCbGVIUmxibVJsWkU5d2RHbHZibk1nUFNCVmRHbHNjeTVsZUhSbGJtUW9lMzBzSUc5d2RHbHZibk1zSUh0Y2JpQWdJQ0FnSUdodmIydHpPaUIwYUdsekxtaHZiMnR6TEZ4dUlDQWdJQ0FnY0hKdmRHOUJZMk5sYzNORGIyNTBjbTlzT2lCMGFHbHpMbkJ5YjNSdlFXTmpaWE56UTI5dWRISnZiRnh1SUNBZ0lIMHBPMXh1WEc0Z0lDQWdiR1YwSUhKbGMzVnNkQ0E5SUdWdWRpNVdUUzVwYm5admEyVlFZWEowYVdGc0xtTmhiR3dvWEc0Z0lDQWdJQ0IwYUdsekxGeHVJQ0FnSUNBZ2NHRnlkR2xoYkN4Y2JpQWdJQ0FnSUdOdmJuUmxlSFFzWEc0Z0lDQWdJQ0JsZUhSbGJtUmxaRTl3ZEdsdmJuTmNiaUFnSUNBcE8xeHVYRzRnSUNBZ2FXWWdLSEpsYzNWc2RDQTlQU0J1ZFd4c0lDWW1JR1Z1ZGk1amIyMXdhV3hsS1NCN1hHNGdJQ0FnSUNCdmNIUnBiMjV6TG5CaGNuUnBZV3h6VzI5d2RHbHZibk11Ym1GdFpWMGdQU0JsYm5ZdVkyOXRjR2xzWlNoY2JpQWdJQ0FnSUNBZ2NHRnlkR2xoYkN4Y2JpQWdJQ0FnSUNBZ2RHVnRjR3hoZEdWVGNHVmpMbU52YlhCcGJHVnlUM0IwYVc5dWN5eGNiaUFnSUNBZ0lDQWdaVzUyWEc0Z0lDQWdJQ0FwTzF4dUlDQWdJQ0FnY21WemRXeDBJRDBnYjNCMGFXOXVjeTV3WVhKMGFXRnNjMXR2Y0hScGIyNXpMbTVoYldWZEtHTnZiblJsZUhRc0lHVjRkR1Z1WkdWa1QzQjBhVzl1Y3lrN1hHNGdJQ0FnZlZ4dUlDQWdJR2xtSUNoeVpYTjFiSFFnSVQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnYVdZZ0tHOXdkR2x2Ym5NdWFXNWtaVzUwS1NCN1hHNGdJQ0FnSUNBZ0lHeGxkQ0JzYVc1bGN5QTlJSEpsYzNWc2RDNXpjR3hwZENnblhGeHVKeWs3WEc0Z0lDQWdJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdMQ0JzSUQwZ2JHbHVaWE11YkdWdVozUm9PeUJwSUR3Z2JEc2dhU3NyS1NCN1hHNGdJQ0FnSUNBZ0lDQWdhV1lnS0NGc2FXNWxjMXRwWFNBbUppQnBJQ3NnTVNBOVBUMGdiQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0FnSUNBZ2JHbHVaWE5iYVYwZ1BTQnZjSFJwYjI1ekxtbHVaR1Z1ZENBcklHeHBibVZ6VzJsZE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSEpsYzNWc2RDQTlJR3hwYm1WekxtcHZhVzRvSjF4Y2JpY3BPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdjbVYwZFhKdUlISmxjM1ZzZER0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVY0WTJWd2RHbHZiaWhjYmlBZ0lDQWdJQ0FnSjFSb1pTQndZWEowYVdGc0lDY2dLMXh1SUNBZ0lDQWdJQ0FnSUc5d2RHbHZibk11Ym1GdFpTQXJYRzRnSUNBZ0lDQWdJQ0FnSnlCamIzVnNaQ0J1YjNRZ1ltVWdZMjl0Y0dsc1pXUWdkMmhsYmlCeWRXNXVhVzVuSUdsdUlISjFiblJwYldVdGIyNXNlU0J0YjJSbEoxeHVJQ0FnSUNBZ0tUdGNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQXZMeUJLZFhOMElHRmtaQ0IzWVhSbGNseHVJQ0JzWlhRZ1kyOXVkR0ZwYm1WeUlEMGdlMXh1SUNBZ0lITjBjbWxqZERvZ1puVnVZM1JwYjI0b2IySnFMQ0J1WVcxbExDQnNiMk1wSUh0Y2JpQWdJQ0FnSUdsbUlDZ2hiMkpxSUh4OElDRW9ibUZ0WlNCcGJpQnZZbW9wS1NCN1hHNGdJQ0FnSUNBZ0lIUm9jbTkzSUc1bGR5QkZlR05sY0hScGIyNG9KMXdpSnlBcklHNWhiV1VnS3lBblhDSWdibTkwSUdSbFptbHVaV1FnYVc0Z0p5QXJJRzlpYWl3Z2UxeHVJQ0FnSUNBZ0lDQWdJR3h2WXpvZ2JHOWpYRzRnSUNBZ0lDQWdJSDBwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnY21WMGRYSnVJRzlpYWx0dVlXMWxYVHRjYmlBZ0lDQjlMRnh1SUNBZ0lHeHZiMnQxY0ZCeWIzQmxjblI1T2lCbWRXNWpkR2x2Ymlod1lYSmxiblFzSUhCeWIzQmxjblI1VG1GdFpTa2dlMXh1SUNBZ0lDQWdiR1YwSUhKbGMzVnNkQ0E5SUhCaGNtVnVkRnR3Y205d1pYSjBlVTVoYldWZE8xeHVJQ0FnSUNBZ2FXWWdLSEpsYzNWc2RDQTlQU0J1ZFd4c0tTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaWE4xYkhRN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCcFppQW9UMkpxWldOMExuQnliM1J2ZEhsd1pTNW9ZWE5QZDI1UWNtOXdaWEowZVM1allXeHNLSEJoY21WdWRDd2djSEp2Y0dWeWRIbE9ZVzFsS1NrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnpkV3gwTzF4dUlDQWdJQ0FnZlZ4dVhHNGdJQ0FnSUNCcFppQW9jbVZ6ZFd4MFNYTkJiR3h2ZDJWa0tISmxjM1ZzZEN3Z1kyOXVkR0ZwYm1WeUxuQnliM1J2UVdOalpYTnpRMjl1ZEhKdmJDd2djSEp2Y0dWeWRIbE9ZVzFsS1NrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2NtVnpkV3gwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnY21WMGRYSnVJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQjlMRnh1SUNBZ0lHeHZiMnQxY0RvZ1puVnVZM1JwYjI0b1pHVndkR2h6TENCdVlXMWxLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQnNaVzRnUFNCa1pYQjBhSE11YkdWdVozUm9PMXh1SUNBZ0lDQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0JzWlc0N0lHa3JLeWtnZTF4dUlDQWdJQ0FnSUNCc1pYUWdjbVZ6ZFd4MElEMGdaR1Z3ZEdoelcybGRJQ1ltSUdOdmJuUmhhVzVsY2k1c2IyOXJkWEJRY205d1pYSjBlU2hrWlhCMGFITmJhVjBzSUc1aGJXVXBPMXh1SUNBZ0lDQWdJQ0JwWmlBb2NtVnpkV3gwSUNFOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1pHVndkR2h6VzJsZFcyNWhiV1ZkTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnZlN4Y2JpQWdJQ0JzWVcxaVpHRTZJR1oxYm1OMGFXOXVLR04xY25KbGJuUXNJR052Ym5SbGVIUXBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQjBlWEJsYjJZZ1kzVnljbVZ1ZENBOVBUMGdKMloxYm1OMGFXOXVKeUEvSUdOMWNuSmxiblF1WTJGc2JDaGpiMjUwWlhoMEtTQTZJR04xY25KbGJuUTdYRzRnSUNBZ2ZTeGNibHh1SUNBZ0lHVnpZMkZ3WlVWNGNISmxjM05wYjI0NklGVjBhV3h6TG1WelkyRndaVVY0Y0hKbGMzTnBiMjRzWEc0Z0lDQWdhVzUyYjJ0bFVHRnlkR2xoYkRvZ2FXNTJiMnRsVUdGeWRHbGhiRmR5WVhCd1pYSXNYRzVjYmlBZ0lDQm1iam9nWm5WdVkzUnBiMjRvYVNrZ2UxeHVJQ0FnSUNBZ2JHVjBJSEpsZENBOUlIUmxiWEJzWVhSbFUzQmxZMXRwWFR0Y2JpQWdJQ0FnSUhKbGRDNWtaV052Y21GMGIzSWdQU0IwWlcxd2JHRjBaVk53WldOYmFTQXJJQ2RmWkNkZE8xeHVJQ0FnSUNBZ2NtVjBkWEp1SUhKbGREdGNiaUFnSUNCOUxGeHVYRzRnSUNBZ2NISnZaM0poYlhNNklGdGRMRnh1SUNBZ0lIQnliMmR5WVcwNklHWjFibU4wYVc5dUtHa3NJR1JoZEdFc0lHUmxZMnhoY21Wa1FteHZZMnRRWVhKaGJYTXNJR0pzYjJOclVHRnlZVzF6TENCa1pYQjBhSE1wSUh0Y2JpQWdJQ0FnSUd4bGRDQndjbTluY21GdFYzSmhjSEJsY2lBOUlIUm9hWE11Y0hKdlozSmhiWE5iYVYwc1hHNGdJQ0FnSUNBZ0lHWnVJRDBnZEdocGN5NW1iaWhwS1R0Y2JpQWdJQ0FnSUdsbUlDaGtZWFJoSUh4OElHUmxjSFJvY3lCOGZDQmliRzlqYTFCaGNtRnRjeUI4ZkNCa1pXTnNZWEpsWkVKc2IyTnJVR0Z5WVcxektTQjdYRzRnSUNBZ0lDQWdJSEJ5YjJkeVlXMVhjbUZ3Y0dWeUlEMGdkM0poY0ZCeWIyZHlZVzBvWEc0Z0lDQWdJQ0FnSUNBZ2RHaHBjeXhjYmlBZ0lDQWdJQ0FnSUNCcExGeHVJQ0FnSUNBZ0lDQWdJR1p1TEZ4dUlDQWdJQ0FnSUNBZ0lHUmhkR0VzWEc0Z0lDQWdJQ0FnSUNBZ1pHVmpiR0Z5WldSQ2JHOWphMUJoY21GdGN5eGNiaUFnSUNBZ0lDQWdJQ0JpYkc5amExQmhjbUZ0Y3l4Y2JpQWdJQ0FnSUNBZ0lDQmtaWEIwYUhOY2JpQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lIMGdaV3h6WlNCcFppQW9JWEJ5YjJkeVlXMVhjbUZ3Y0dWeUtTQjdYRzRnSUNBZ0lDQWdJSEJ5YjJkeVlXMVhjbUZ3Y0dWeUlEMGdkR2hwY3k1d2NtOW5jbUZ0YzF0cFhTQTlJSGR5WVhCUWNtOW5jbUZ0S0hSb2FYTXNJR2tzSUdadUtUdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lISmxkSFZ5YmlCd2NtOW5jbUZ0VjNKaGNIQmxjanRjYmlBZ0lDQjlMRnh1WEc0Z0lDQWdaR0YwWVRvZ1puVnVZM1JwYjI0b2RtRnNkV1VzSUdSbGNIUm9LU0I3WEc0Z0lDQWdJQ0IzYUdsc1pTQW9kbUZzZFdVZ0ppWWdaR1Z3ZEdndExTa2dlMXh1SUNBZ0lDQWdJQ0IyWVd4MVpTQTlJSFpoYkhWbExsOXdZWEpsYm5RN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCeVpYUjFjbTRnZG1Gc2RXVTdYRzRnSUNBZ2ZTeGNiaUFnSUNCdFpYSm5aVWxtVG1WbFpHVmtPaUJtZFc1amRHbHZiaWh3WVhKaGJTd2dZMjl0Ylc5dUtTQjdYRzRnSUNBZ0lDQnNaWFFnYjJKcUlEMGdjR0Z5WVcwZ2ZId2dZMjl0Ylc5dU8xeHVYRzRnSUNBZ0lDQnBaaUFvY0dGeVlXMGdKaVlnWTI5dGJXOXVJQ1ltSUhCaGNtRnRJQ0U5UFNCamIyMXRiMjRwSUh0Y2JpQWdJQ0FnSUNBZ2IySnFJRDBnVlhScGJITXVaWGgwWlc1a0tIdDlMQ0JqYjIxdGIyNHNJSEJoY21GdEtUdGNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdjbVYwZFhKdUlHOWlhanRjYmlBZ0lDQjlMRnh1SUNBZ0lDOHZJRUZ1SUdWdGNIUjVJRzlpYW1WamRDQjBieUIxYzJVZ1lYTWdjbVZ3YkdGalpXMWxiblFnWm05eUlHNTFiR3d0WTI5dWRHVjRkSE5jYmlBZ0lDQnVkV3hzUTI5dWRHVjRkRG9nVDJKcVpXTjBMbk5sWVd3b2UzMHBMRnh1WEc0Z0lDQWdibTl2Y0RvZ1pXNTJMbFpOTG01dmIzQXNYRzRnSUNBZ1kyOXRjR2xzWlhKSmJtWnZPaUIwWlcxd2JHRjBaVk53WldNdVkyOXRjR2xzWlhKY2JpQWdmVHRjYmx4dUlDQm1kVzVqZEdsdmJpQnlaWFFvWTI5dWRHVjRkQ3dnYjNCMGFXOXVjeUE5SUh0OUtTQjdYRzRnSUNBZ2JHVjBJR1JoZEdFZ1BTQnZjSFJwYjI1ekxtUmhkR0U3WEc1Y2JpQWdJQ0J5WlhRdVgzTmxkSFZ3S0c5d2RHbHZibk1wTzF4dUlDQWdJR2xtSUNnaGIzQjBhVzl1Y3k1d1lYSjBhV0ZzSUNZbUlIUmxiWEJzWVhSbFUzQmxZeTUxYzJWRVlYUmhLU0I3WEc0Z0lDQWdJQ0JrWVhSaElEMGdhVzVwZEVSaGRHRW9ZMjl1ZEdWNGRDd2daR0YwWVNrN1hHNGdJQ0FnZlZ4dUlDQWdJR3hsZENCa1pYQjBhSE1zWEc0Z0lDQWdJQ0JpYkc5amExQmhjbUZ0Y3lBOUlIUmxiWEJzWVhSbFUzQmxZeTUxYzJWQ2JHOWphMUJoY21GdGN5QS9JRnRkSURvZ2RXNWtaV1pwYm1Wa08xeHVJQ0FnSUdsbUlDaDBaVzF3YkdGMFpWTndaV011ZFhObFJHVndkR2h6S1NCN1hHNGdJQ0FnSUNCcFppQW9iM0IwYVc5dWN5NWtaWEIwYUhNcElIdGNiaUFnSUNBZ0lDQWdaR1Z3ZEdoeklEMWNiaUFnSUNBZ0lDQWdJQ0JqYjI1MFpYaDBJQ0U5SUc5d2RHbHZibk11WkdWd2RHaHpXekJkWEc0Z0lDQWdJQ0FnSUNBZ0lDQS9JRnRqYjI1MFpYaDBYUzVqYjI1allYUW9iM0IwYVc5dWN5NWtaWEIwYUhNcFhHNGdJQ0FnSUNBZ0lDQWdJQ0E2SUc5d2RHbHZibk11WkdWd2RHaHpPMXh1SUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdaR1Z3ZEdoeklEMGdXMk52Ym5SbGVIUmRPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lHWjFibU4wYVc5dUlHMWhhVzRvWTI5dWRHVjRkQ0F2S2l3Z2IzQjBhVzl1Y3lvdktTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z0tGeHVJQ0FnSUNBZ0lDQW5KeUFyWEc0Z0lDQWdJQ0FnSUhSbGJYQnNZWFJsVTNCbFl5NXRZV2x1S0Z4dUlDQWdJQ0FnSUNBZ0lHTnZiblJoYVc1bGNpeGNiaUFnSUNBZ0lDQWdJQ0JqYjI1MFpYaDBMRnh1SUNBZ0lDQWdJQ0FnSUdOdmJuUmhhVzVsY2k1b1pXeHdaWEp6TEZ4dUlDQWdJQ0FnSUNBZ0lHTnZiblJoYVc1bGNpNXdZWEowYVdGc2N5eGNiaUFnSUNBZ0lDQWdJQ0JrWVhSaExGeHVJQ0FnSUNBZ0lDQWdJR0pzYjJOclVHRnlZVzF6TEZ4dUlDQWdJQ0FnSUNBZ0lHUmxjSFJvYzF4dUlDQWdJQ0FnSUNBcFhHNGdJQ0FnSUNBcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUcxaGFXNGdQU0JsZUdWamRYUmxSR1ZqYjNKaGRHOXljeWhjYmlBZ0lDQWdJSFJsYlhCc1lYUmxVM0JsWXk1dFlXbHVMRnh1SUNBZ0lDQWdiV0ZwYml4Y2JpQWdJQ0FnSUdOdmJuUmhhVzVsY2l4Y2JpQWdJQ0FnSUc5d2RHbHZibk11WkdWd2RHaHpJSHg4SUZ0ZExGeHVJQ0FnSUNBZ1pHRjBZU3hjYmlBZ0lDQWdJR0pzYjJOclVHRnlZVzF6WEc0Z0lDQWdLVHRjYmlBZ0lDQnlaWFIxY200Z2JXRnBiaWhqYjI1MFpYaDBMQ0J2Y0hScGIyNXpLVHRjYmlBZ2ZWeHVYRzRnSUhKbGRDNXBjMVJ2Y0NBOUlIUnlkV1U3WEc1Y2JpQWdjbVYwTGw5elpYUjFjQ0E5SUdaMWJtTjBhVzl1S0c5d2RHbHZibk1wSUh0Y2JpQWdJQ0JwWmlBb0lXOXdkR2x2Ym5NdWNHRnlkR2xoYkNrZ2UxeHVJQ0FnSUNBZ2JHVjBJRzFsY21kbFpFaGxiSEJsY25NZ1BTQlZkR2xzY3k1bGVIUmxibVFvZTMwc0lHVnVkaTVvWld4d1pYSnpMQ0J2Y0hScGIyNXpMbWhsYkhCbGNuTXBPMXh1SUNBZ0lDQWdkM0poY0VobGJIQmxjbk5VYjFCaGMzTk1iMjlyZFhCUWNtOXdaWEowZVNodFpYSm5aV1JJWld4d1pYSnpMQ0JqYjI1MFlXbHVaWElwTzF4dUlDQWdJQ0FnWTI5dWRHRnBibVZ5TG1obGJIQmxjbk1nUFNCdFpYSm5aV1JJWld4d1pYSnpPMXh1WEc0Z0lDQWdJQ0JwWmlBb2RHVnRjR3hoZEdWVGNHVmpMblZ6WlZCaGNuUnBZV3dwSUh0Y2JpQWdJQ0FnSUNBZ0x5OGdWWE5sSUcxbGNtZGxTV1pPWldWa1pXUWdhR1Z5WlNCMGJ5QndjbVYyWlc1MElHTnZiWEJwYkdsdVp5Qm5iRzlpWVd3Z2NHRnlkR2xoYkhNZ2JYVnNkR2x3YkdVZ2RHbHRaWE5jYmlBZ0lDQWdJQ0FnWTI5dWRHRnBibVZ5TG5CaGNuUnBZV3h6SUQwZ1kyOXVkR0ZwYm1WeUxtMWxjbWRsU1daT1pXVmtaV1FvWEc0Z0lDQWdJQ0FnSUNBZ2IzQjBhVzl1Y3k1d1lYSjBhV0ZzY3l4Y2JpQWdJQ0FnSUNBZ0lDQmxibll1Y0dGeWRHbGhiSE5jYmlBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUdsbUlDaDBaVzF3YkdGMFpWTndaV011ZFhObFVHRnlkR2xoYkNCOGZDQjBaVzF3YkdGMFpWTndaV011ZFhObFJHVmpiM0poZEc5eWN5a2dlMXh1SUNBZ0lDQWdJQ0JqYjI1MFlXbHVaWEl1WkdWamIzSmhkRzl5Y3lBOUlGVjBhV3h6TG1WNGRHVnVaQ2hjYmlBZ0lDQWdJQ0FnSUNCN2ZTeGNiaUFnSUNBZ0lDQWdJQ0JsYm5ZdVpHVmpiM0poZEc5eWN5eGNiaUFnSUNBZ0lDQWdJQ0J2Y0hScGIyNXpMbVJsWTI5eVlYUnZjbk5jYmlBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ1kyOXVkR0ZwYm1WeUxtaHZiMnR6SUQwZ2UzMDdYRzRnSUNBZ0lDQmpiMjUwWVdsdVpYSXVjSEp2ZEc5QlkyTmxjM05EYjI1MGNtOXNJRDBnWTNKbFlYUmxVSEp2ZEc5QlkyTmxjM05EYjI1MGNtOXNLRzl3ZEdsdmJuTXBPMXh1WEc0Z0lDQWdJQ0JzWlhRZ2EyVmxjRWhsYkhCbGNrbHVTR1ZzY0dWeWN5QTlYRzRnSUNBZ0lDQWdJRzl3ZEdsdmJuTXVZV3hzYjNkRFlXeHNjMVJ2U0dWc2NHVnlUV2x6YzJsdVp5QjhmRnh1SUNBZ0lDQWdJQ0IwWlcxd2JHRjBaVmRoYzFCeVpXTnZiWEJwYkdWa1YybDBhRU52YlhCcGJHVnlWamM3WEc0Z0lDQWdJQ0J0YjNabFNHVnNjR1Z5Vkc5SWIyOXJjeWhqYjI1MFlXbHVaWElzSUNkb1pXeHdaWEpOYVhOemFXNW5KeXdnYTJWbGNFaGxiSEJsY2tsdVNHVnNjR1Z5Y3lrN1hHNGdJQ0FnSUNCdGIzWmxTR1ZzY0dWeVZHOUliMjlyY3loamIyNTBZV2x1WlhJc0lDZGliRzlqYTBobGJIQmxjazFwYzNOcGJtY25MQ0JyWldWd1NHVnNjR1Z5U1c1SVpXeHdaWEp6S1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdZMjl1ZEdGcGJtVnlMbkJ5YjNSdlFXTmpaWE56UTI5dWRISnZiQ0E5SUc5d2RHbHZibk11Y0hKdmRHOUJZMk5sYzNORGIyNTBjbTlzT3lBdkx5QnBiblJsY201aGJDQnZjSFJwYjI1Y2JpQWdJQ0FnSUdOdmJuUmhhVzVsY2k1b1pXeHdaWEp6SUQwZ2IzQjBhVzl1Y3k1b1pXeHdaWEp6TzF4dUlDQWdJQ0FnWTI5dWRHRnBibVZ5TG5CaGNuUnBZV3h6SUQwZ2IzQjBhVzl1Y3k1d1lYSjBhV0ZzY3p0Y2JpQWdJQ0FnSUdOdmJuUmhhVzVsY2k1a1pXTnZjbUYwYjNKeklEMGdiM0IwYVc5dWN5NWtaV052Y21GMGIzSnpPMXh1SUNBZ0lDQWdZMjl1ZEdGcGJtVnlMbWh2YjJ0eklEMGdiM0IwYVc5dWN5NW9iMjlyY3p0Y2JpQWdJQ0I5WEc0Z0lIMDdYRzVjYmlBZ2NtVjBMbDlqYUdsc1pDQTlJR1oxYm1OMGFXOXVLR2tzSUdSaGRHRXNJR0pzYjJOclVHRnlZVzF6TENCa1pYQjBhSE1wSUh0Y2JpQWdJQ0JwWmlBb2RHVnRjR3hoZEdWVGNHVmpMblZ6WlVKc2IyTnJVR0Z5WVcxeklDWW1JQ0ZpYkc5amExQmhjbUZ0Y3lrZ2UxeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVjRZMlZ3ZEdsdmJpZ25iWFZ6ZENCd1lYTnpJR0pzYjJOcklIQmhjbUZ0Y3ljcE8xeHVJQ0FnSUgxY2JpQWdJQ0JwWmlBb2RHVnRjR3hoZEdWVGNHVmpMblZ6WlVSbGNIUm9jeUFtSmlBaFpHVndkR2h6S1NCN1hHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYaGpaWEIwYVc5dUtDZHRkWE4wSUhCaGMzTWdjR0Z5Wlc1MElHUmxjSFJvY3ljcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhKbGRIVnliaUIzY21Gd1VISnZaM0poYlNoY2JpQWdJQ0FnSUdOdmJuUmhhVzVsY2l4Y2JpQWdJQ0FnSUdrc1hHNGdJQ0FnSUNCMFpXMXdiR0YwWlZOd1pXTmJhVjBzWEc0Z0lDQWdJQ0JrWVhSaExGeHVJQ0FnSUNBZ01DeGNiaUFnSUNBZ0lHSnNiMk5yVUdGeVlXMXpMRnh1SUNBZ0lDQWdaR1Z3ZEdoelhHNGdJQ0FnS1R0Y2JpQWdmVHRjYmlBZ2NtVjBkWEp1SUhKbGREdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhkeVlYQlFjbTluY21GdEtGeHVJQ0JqYjI1MFlXbHVaWElzWEc0Z0lHa3NYRzRnSUdadUxGeHVJQ0JrWVhSaExGeHVJQ0JrWldOc1lYSmxaRUpzYjJOclVHRnlZVzF6TEZ4dUlDQmliRzlqYTFCaGNtRnRjeXhjYmlBZ1pHVndkR2h6WEc0cElIdGNiaUFnWm5WdVkzUnBiMjRnY0hKdlp5aGpiMjUwWlhoMExDQnZjSFJwYjI1eklEMGdlMzBwSUh0Y2JpQWdJQ0JzWlhRZ1kzVnljbVZ1ZEVSbGNIUm9jeUE5SUdSbGNIUm9jenRjYmlBZ0lDQnBaaUFvWEc0Z0lDQWdJQ0JrWlhCMGFITWdKaVpjYmlBZ0lDQWdJR052Ym5SbGVIUWdJVDBnWkdWd2RHaHpXekJkSUNZbVhHNGdJQ0FnSUNBaEtHTnZiblJsZUhRZ1BUMDlJR052Ym5SaGFXNWxjaTV1ZFd4c1EyOXVkR1Y0ZENBbUppQmtaWEIwYUhOYk1GMGdQVDA5SUc1MWJHd3BYRzRnSUNBZ0tTQjdYRzRnSUNBZ0lDQmpkWEp5Wlc1MFJHVndkR2h6SUQwZ1cyTnZiblJsZUhSZExtTnZibU5oZENoa1pYQjBhSE1wTzF4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQm1iaWhjYmlBZ0lDQWdJR052Ym5SaGFXNWxjaXhjYmlBZ0lDQWdJR052Ym5SbGVIUXNYRzRnSUNBZ0lDQmpiMjUwWVdsdVpYSXVhR1ZzY0dWeWN5eGNiaUFnSUNBZ0lHTnZiblJoYVc1bGNpNXdZWEowYVdGc2N5eGNiaUFnSUNBZ0lHOXdkR2x2Ym5NdVpHRjBZU0I4ZkNCa1lYUmhMRnh1SUNBZ0lDQWdZbXh2WTJ0UVlYSmhiWE1nSmlZZ1cyOXdkR2x2Ym5NdVlteHZZMnRRWVhKaGJYTmRMbU52Ym1OaGRDaGliRzlqYTFCaGNtRnRjeWtzWEc0Z0lDQWdJQ0JqZFhKeVpXNTBSR1Z3ZEdoelhHNGdJQ0FnS1R0Y2JpQWdmVnh1WEc0Z0lIQnliMmNnUFNCbGVHVmpkWFJsUkdWamIzSmhkRzl5Y3lobWJpd2djSEp2Wnl3Z1kyOXVkR0ZwYm1WeUxDQmtaWEIwYUhNc0lHUmhkR0VzSUdKc2IyTnJVR0Z5WVcxektUdGNibHh1SUNCd2NtOW5MbkJ5YjJkeVlXMGdQU0JwTzF4dUlDQndjbTluTG1SbGNIUm9JRDBnWkdWd2RHaHpJRDhnWkdWd2RHaHpMbXhsYm1kMGFDQTZJREE3WEc0Z0lIQnliMmN1WW14dlkydFFZWEpoYlhNZ1BTQmtaV05zWVhKbFpFSnNiMk5yVUdGeVlXMXpJSHg4SURBN1hHNGdJSEpsZEhWeWJpQndjbTluTzF4dWZWeHVYRzR2S2lwY2JpQXFJRlJvYVhNZ2FYTWdZM1Z5Y21WdWRHeDVJSEJoY25RZ2IyWWdkR2hsSUc5bVptbGphV0ZzSUVGUVNTd2dkR2hsY21WbWIzSmxJR2x0Y0d4bGJXVnVkR0YwYVc5dUlHUmxkR0ZwYkhNZ2MyaHZkV3hrSUc1dmRDQmlaU0JqYUdGdVoyVmtMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2NtVnpiMngyWlZCaGNuUnBZV3dvY0dGeWRHbGhiQ3dnWTI5dWRHVjRkQ3dnYjNCMGFXOXVjeWtnZTF4dUlDQnBaaUFvSVhCaGNuUnBZV3dwSUh0Y2JpQWdJQ0JwWmlBb2IzQjBhVzl1Y3k1dVlXMWxJRDA5UFNBblFIQmhjblJwWVd3dFlteHZZMnNuS1NCN1hHNGdJQ0FnSUNCd1lYSjBhV0ZzSUQwZ2IzQjBhVzl1Y3k1a1lYUmhXeWR3WVhKMGFXRnNMV0pzYjJOckoxMDdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhCaGNuUnBZV3dnUFNCdmNIUnBiMjV6TG5CaGNuUnBZV3h6VzI5d2RHbHZibk11Ym1GdFpWMDdYRzRnSUNBZ2ZWeHVJQ0I5SUdWc2MyVWdhV1lnS0NGd1lYSjBhV0ZzTG1OaGJHd2dKaVlnSVc5d2RHbHZibk11Ym1GdFpTa2dlMXh1SUNBZ0lDOHZJRlJvYVhNZ2FYTWdZU0JrZVc1aGJXbGpJSEJoY25ScFlXd2dkR2hoZENCeVpYUjFjbTVsWkNCaElITjBjbWx1WjF4dUlDQWdJRzl3ZEdsdmJuTXVibUZ0WlNBOUlIQmhjblJwWVd3N1hHNGdJQ0FnY0dGeWRHbGhiQ0E5SUc5d2RHbHZibk11Y0dGeWRHbGhiSE5iY0dGeWRHbGhiRjA3WEc0Z0lIMWNiaUFnY21WMGRYSnVJSEJoY25ScFlXdzdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCcGJuWnZhMlZRWVhKMGFXRnNLSEJoY25ScFlXd3NJR052Ym5SbGVIUXNJRzl3ZEdsdmJuTXBJSHRjYmlBZ0x5OGdWWE5sSUhSb1pTQmpkWEp5Wlc1MElHTnNiM04xY21VZ1kyOXVkR1Y0ZENCMGJ5QnpZWFpsSUhSb1pTQndZWEowYVdGc0xXSnNiMk5ySUdsbUlIUm9hWE1nY0dGeWRHbGhiRnh1SUNCamIyNXpkQ0JqZFhKeVpXNTBVR0Z5ZEdsaGJFSnNiMk5ySUQwZ2IzQjBhVzl1Y3k1a1lYUmhJQ1ltSUc5d2RHbHZibk11WkdGMFlWc25jR0Z5ZEdsaGJDMWliRzlqYXlkZE8xeHVJQ0J2Y0hScGIyNXpMbkJoY25ScFlXd2dQU0IwY25WbE8xeHVJQ0JwWmlBb2IzQjBhVzl1Y3k1cFpITXBJSHRjYmlBZ0lDQnZjSFJwYjI1ekxtUmhkR0V1WTI5dWRHVjRkRkJoZEdnZ1BTQnZjSFJwYjI1ekxtbGtjMXN3WFNCOGZDQnZjSFJwYjI1ekxtUmhkR0V1WTI5dWRHVjRkRkJoZEdnN1hHNGdJSDFjYmx4dUlDQnNaWFFnY0dGeWRHbGhiRUpzYjJOck8xeHVJQ0JwWmlBb2IzQjBhVzl1Y3k1bWJpQW1KaUJ2Y0hScGIyNXpMbVp1SUNFOVBTQnViMjl3S1NCN1hHNGdJQ0FnYjNCMGFXOXVjeTVrWVhSaElEMGdZM0psWVhSbFJuSmhiV1VvYjNCMGFXOXVjeTVrWVhSaEtUdGNiaUFnSUNBdkx5QlhjbUZ3Y0dWeUlHWjFibU4wYVc5dUlIUnZJR2RsZENCaFkyTmxjM01nZEc4Z1kzVnljbVZ1ZEZCaGNuUnBZV3hDYkc5amF5Qm1jbTl0SUhSb1pTQmpiRzl6ZFhKbFhHNGdJQ0FnYkdWMElHWnVJRDBnYjNCMGFXOXVjeTVtYmp0Y2JpQWdJQ0J3WVhKMGFXRnNRbXh2WTJzZ1BTQnZjSFJwYjI1ekxtUmhkR0ZiSjNCaGNuUnBZV3d0WW14dlkyc25YU0E5SUdaMWJtTjBhVzl1SUhCaGNuUnBZV3hDYkc5amExZHlZWEJ3WlhJb1hHNGdJQ0FnSUNCamIyNTBaWGgwTEZ4dUlDQWdJQ0FnYjNCMGFXOXVjeUE5SUh0OVhHNGdJQ0FnS1NCN1hHNGdJQ0FnSUNBdkx5QlNaWE4wYjNKbElIUm9aU0J3WVhKMGFXRnNMV0pzYjJOcklHWnliMjBnZEdobElHTnNiM04xY21VZ1ptOXlJSFJvWlNCbGVHVmpkWFJwYjI0Z2IyWWdkR2hsSUdKc2IyTnJYRzRnSUNBZ0lDQXZMeUJwTG1VdUlIUm9aU0J3WVhKMElHbHVjMmxrWlNCMGFHVWdZbXh2WTJzZ2IyWWdkR2hsSUhCaGNuUnBZV3dnWTJGc2JDNWNiaUFnSUNBZ0lHOXdkR2x2Ym5NdVpHRjBZU0E5SUdOeVpXRjBaVVp5WVcxbEtHOXdkR2x2Ym5NdVpHRjBZU2s3WEc0Z0lDQWdJQ0J2Y0hScGIyNXpMbVJoZEdGYkozQmhjblJwWVd3dFlteHZZMnNuWFNBOUlHTjFjbkpsYm5SUVlYSjBhV0ZzUW14dlkyczdYRzRnSUNBZ0lDQnlaWFIxY200Z1ptNG9ZMjl1ZEdWNGRDd2diM0IwYVc5dWN5azdYRzRnSUNBZ2ZUdGNiaUFnSUNCcFppQW9abTR1Y0dGeWRHbGhiSE1wSUh0Y2JpQWdJQ0FnSUc5d2RHbHZibk11Y0dGeWRHbGhiSE1nUFNCVmRHbHNjeTVsZUhSbGJtUW9lMzBzSUc5d2RHbHZibk11Y0dGeWRHbGhiSE1zSUdadUxuQmhjblJwWVd4ektUdGNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQnBaaUFvY0dGeWRHbGhiQ0E5UFQwZ2RXNWtaV1pwYm1Wa0lDWW1JSEJoY25ScFlXeENiRzlqYXlrZ2UxeHVJQ0FnSUhCaGNuUnBZV3dnUFNCd1lYSjBhV0ZzUW14dlkyczdYRzRnSUgxY2JseHVJQ0JwWmlBb2NHRnlkR2xoYkNBOVBUMGdkVzVrWldacGJtVmtLU0I3WEc0Z0lDQWdkR2h5YjNjZ2JtVjNJRVY0WTJWd2RHbHZiaWduVkdobElIQmhjblJwWVd3Z0p5QXJJRzl3ZEdsdmJuTXVibUZ0WlNBcklDY2dZMjkxYkdRZ2JtOTBJR0psSUdadmRXNWtKeWs3WEc0Z0lIMGdaV3h6WlNCcFppQW9jR0Z5ZEdsaGJDQnBibk4wWVc1alpXOW1JRVoxYm1OMGFXOXVLU0I3WEc0Z0lDQWdjbVYwZFhKdUlIQmhjblJwWVd3b1kyOXVkR1Y0ZEN3Z2IzQjBhVzl1Y3lrN1hHNGdJSDFjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHNXZiM0FvS1NCN1hHNGdJSEpsZEhWeWJpQW5KenRjYm4xY2JseHVablZ1WTNScGIyNGdhVzVwZEVSaGRHRW9ZMjl1ZEdWNGRDd2daR0YwWVNrZ2UxeHVJQ0JwWmlBb0lXUmhkR0VnZkh3Z0lTZ25jbTl2ZENjZ2FXNGdaR0YwWVNrcElIdGNiaUFnSUNCa1lYUmhJRDBnWkdGMFlTQS9JR055WldGMFpVWnlZVzFsS0dSaGRHRXBJRG9nZTMwN1hHNGdJQ0FnWkdGMFlTNXliMjkwSUQwZ1kyOXVkR1Y0ZER0Y2JpQWdmVnh1SUNCeVpYUjFjbTRnWkdGMFlUdGNibjFjYmx4dVpuVnVZM1JwYjI0Z1pYaGxZM1YwWlVSbFkyOXlZWFJ2Y25Nb1ptNHNJSEJ5YjJjc0lHTnZiblJoYVc1bGNpd2daR1Z3ZEdoekxDQmtZWFJoTENCaWJHOWphMUJoY21GdGN5a2dlMXh1SUNCcFppQW9abTR1WkdWamIzSmhkRzl5S1NCN1hHNGdJQ0FnYkdWMElIQnliM0J6SUQwZ2UzMDdYRzRnSUNBZ2NISnZaeUE5SUdadUxtUmxZMjl5WVhSdmNpaGNiaUFnSUNBZ0lIQnliMmNzWEc0Z0lDQWdJQ0J3Y205d2N5eGNiaUFnSUNBZ0lHTnZiblJoYVc1bGNpeGNiaUFnSUNBZ0lHUmxjSFJvY3lBbUppQmtaWEIwYUhOYk1GMHNYRzRnSUNBZ0lDQmtZWFJoTEZ4dUlDQWdJQ0FnWW14dlkydFFZWEpoYlhNc1hHNGdJQ0FnSUNCa1pYQjBhSE5jYmlBZ0lDQXBPMXh1SUNBZ0lGVjBhV3h6TG1WNGRHVnVaQ2h3Y205bkxDQndjbTl3Y3lrN1hHNGdJSDFjYmlBZ2NtVjBkWEp1SUhCeWIyYzdYRzU5WEc1Y2JtWjFibU4wYVc5dUlIZHlZWEJJWld4d1pYSnpWRzlRWVhOelRHOXZhM1Z3VUhKdmNHVnlkSGtvYldWeVoyVmtTR1ZzY0dWeWN5d2dZMjl1ZEdGcGJtVnlLU0I3WEc0Z0lFOWlhbVZqZEM1clpYbHpLRzFsY21kbFpFaGxiSEJsY25NcExtWnZja1ZoWTJnb2FHVnNjR1Z5VG1GdFpTQTlQaUI3WEc0Z0lDQWdiR1YwSUdobGJIQmxjaUE5SUcxbGNtZGxaRWhsYkhCbGNuTmJhR1ZzY0dWeVRtRnRaVjA3WEc0Z0lDQWdiV1Z5WjJWa1NHVnNjR1Z5YzF0b1pXeHdaWEpPWVcxbFhTQTlJSEJoYzNOTWIyOXJkWEJRY205d1pYSjBlVTl3ZEdsdmJpaG9aV3h3WlhJc0lHTnZiblJoYVc1bGNpazdYRzRnSUgwcE8xeHVmVnh1WEc1bWRXNWpkR2x2YmlCd1lYTnpURzl2YTNWd1VISnZjR1Z5ZEhsUGNIUnBiMjRvYUdWc2NHVnlMQ0JqYjI1MFlXbHVaWElwSUh0Y2JpQWdZMjl1YzNRZ2JHOXZhM1Z3VUhKdmNHVnlkSGtnUFNCamIyNTBZV2x1WlhJdWJHOXZhM1Z3VUhKdmNHVnlkSGs3WEc0Z0lISmxkSFZ5YmlCM2NtRndTR1ZzY0dWeUtHaGxiSEJsY2l3Z2IzQjBhVzl1Y3lBOVBpQjdYRzRnSUNBZ2NtVjBkWEp1SUZWMGFXeHpMbVY0ZEdWdVpDaDdJR3h2YjJ0MWNGQnliM0JsY25SNUlIMHNJRzl3ZEdsdmJuTXBPMXh1SUNCOUtUdGNibjFjYmlKZGZRPT1cbiIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0gZnVuY3Rpb24gKEhhbmRsZWJhcnMpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgdmFyIHJvb3QgPSB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbCA6IHdpbmRvdyxcbiAgICAgICRIYW5kbGViYXJzID0gcm9vdC5IYW5kbGViYXJzO1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBIYW5kbGViYXJzLm5vQ29uZmxpY3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHJvb3QuSGFuZGxlYmFycyA9PT0gSGFuZGxlYmFycykge1xuICAgICAgcm9vdC5IYW5kbGViYXJzID0gJEhhbmRsZWJhcnM7XG4gICAgfVxuICAgIHJldHVybiBIYW5kbGViYXJzO1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwyNXZMV052Ym1ac2FXTjBMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3pzN2NVSkJRV1VzVlVGQlV5eFZRVUZWTEVWQlFVVTdPMEZCUld4RExFMUJRVWtzU1VGQlNTeEhRVUZITEU5QlFVOHNUVUZCVFN4TFFVRkxMRmRCUVZjc1IwRkJSeXhOUVVGTkxFZEJRVWNzVFVGQlRUdE5RVU40UkN4WFFVRlhMRWRCUVVjc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF6czdRVUZGYUVNc1dVRkJWU3hEUVVGRExGVkJRVlVzUjBGQlJ5eFpRVUZYTzBGQlEycERMRkZCUVVrc1NVRkJTU3hEUVVGRExGVkJRVlVzUzBGQlN5eFZRVUZWTEVWQlFVVTdRVUZEYkVNc1ZVRkJTU3hEUVVGRExGVkJRVlVzUjBGQlJ5eFhRVUZYTEVOQlFVTTdTMEZETDBJN1FVRkRSQ3hYUVVGUExGVkJRVlVzUTBGQlF6dEhRVU51UWl4RFFVRkRPME5CUTBnaUxDSm1hV3hsSWpvaWJtOHRZMjl1Wm14cFkzUXVhbk1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKbGVIQnZjblFnWkdWbVlYVnNkQ0JtZFc1amRHbHZiaWhJWVc1a2JHVmlZWEp6S1NCN1hHNGdJQzhxSUdsemRHRnVZblZzSUdsbmJtOXlaU0J1WlhoMElDb3ZYRzRnSUd4bGRDQnliMjkwSUQwZ2RIbHdaVzltSUdkc2IySmhiQ0FoUFQwZ0ozVnVaR1ZtYVc1bFpDY2dQeUJuYkc5aVlXd2dPaUIzYVc1a2IzY3NYRzRnSUNBZ0pFaGhibVJzWldKaGNuTWdQU0J5YjI5MExraGhibVJzWldKaGNuTTdYRzRnSUM4cUlHbHpkR0Z1WW5Wc0lHbG5ibTl5WlNCdVpYaDBJQ292WEc0Z0lFaGhibVJzWldKaGNuTXVibTlEYjI1bWJHbGpkQ0E5SUdaMWJtTjBhVzl1S0NrZ2UxeHVJQ0FnSUdsbUlDaHliMjkwTGtoaGJtUnNaV0poY25NZ1BUMDlJRWhoYm1Sc1pXSmhjbk1wSUh0Y2JpQWdJQ0FnSUhKdmIzUXVTR0Z1Wkd4bFltRnljeUE5SUNSSVlXNWtiR1ZpWVhKek8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdTR0Z1Wkd4bFltRnljenRjYmlBZ2ZUdGNibjFjYmlKZGZRPT1cbiIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbi8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxuLy8gaXN0YW5idWwgaWdub3JlIG5leHRcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqKSB7IGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBlbHNlIHsgdmFyIG5ld09iaiA9IHt9OyBpZiAob2JqICE9IG51bGwpIHsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IG5ld09ialsnZGVmYXVsdCddID0gb2JqOyByZXR1cm4gbmV3T2JqOyB9IH1cblxudmFyIF9oYW5kbGViYXJzQmFzZSA9IHJlcXVpcmUoJy4vaGFuZGxlYmFycy9iYXNlJyk7XG5cbnZhciBiYXNlID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQoX2hhbmRsZWJhcnNCYXNlKTtcblxuLy8gRWFjaCBvZiB0aGVzZSBhdWdtZW50IHRoZSBIYW5kbGViYXJzIG9iamVjdC4gTm8gbmVlZCB0byBzZXR1cCBoZXJlLlxuLy8gKFRoaXMgaXMgZG9uZSB0byBlYXNpbHkgc2hhcmUgY29kZSBiZXR3ZWVuIGNvbW1vbmpzIGFuZCBicm93c2UgZW52cylcblxudmFyIF9oYW5kbGViYXJzU2FmZVN0cmluZyA9IHJlcXVpcmUoJy4vaGFuZGxlYmFycy9zYWZlLXN0cmluZycpO1xuXG52YXIgX2hhbmRsZWJhcnNTYWZlU3RyaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hhbmRsZWJhcnNTYWZlU3RyaW5nKTtcblxudmFyIF9oYW5kbGViYXJzRXhjZXB0aW9uID0gcmVxdWlyZSgnLi9oYW5kbGViYXJzL2V4Y2VwdGlvbicpO1xuXG52YXIgX2hhbmRsZWJhcnNFeGNlcHRpb24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGFuZGxlYmFyc0V4Y2VwdGlvbik7XG5cbnZhciBfaGFuZGxlYmFyc1V0aWxzID0gcmVxdWlyZSgnLi9oYW5kbGViYXJzL3V0aWxzJyk7XG5cbnZhciBVdGlscyA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKF9oYW5kbGViYXJzVXRpbHMpO1xuXG52YXIgX2hhbmRsZWJhcnNSdW50aW1lID0gcmVxdWlyZSgnLi9oYW5kbGViYXJzL3J1bnRpbWUnKTtcblxudmFyIHJ1bnRpbWUgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChfaGFuZGxlYmFyc1J1bnRpbWUpO1xuXG52YXIgX2hhbmRsZWJhcnNOb0NvbmZsaWN0ID0gcmVxdWlyZSgnLi9oYW5kbGViYXJzL25vLWNvbmZsaWN0Jyk7XG5cbnZhciBfaGFuZGxlYmFyc05vQ29uZmxpY3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGFuZGxlYmFyc05vQ29uZmxpY3QpO1xuXG4vLyBGb3IgY29tcGF0aWJpbGl0eSBhbmQgdXNhZ2Ugb3V0c2lkZSBvZiBtb2R1bGUgc3lzdGVtcywgbWFrZSB0aGUgSGFuZGxlYmFycyBvYmplY3QgYSBuYW1lc3BhY2VcbmZ1bmN0aW9uIGNyZWF0ZSgpIHtcbiAgdmFyIGhiID0gbmV3IGJhc2UuSGFuZGxlYmFyc0Vudmlyb25tZW50KCk7XG5cbiAgVXRpbHMuZXh0ZW5kKGhiLCBiYXNlKTtcbiAgaGIuU2FmZVN0cmluZyA9IF9oYW5kbGViYXJzU2FmZVN0cmluZzJbJ2RlZmF1bHQnXTtcbiAgaGIuRXhjZXB0aW9uID0gX2hhbmRsZWJhcnNFeGNlcHRpb24yWydkZWZhdWx0J107XG4gIGhiLlV0aWxzID0gVXRpbHM7XG4gIGhiLmVzY2FwZUV4cHJlc3Npb24gPSBVdGlscy5lc2NhcGVFeHByZXNzaW9uO1xuXG4gIGhiLlZNID0gcnVudGltZTtcbiAgaGIudGVtcGxhdGUgPSBmdW5jdGlvbiAoc3BlYykge1xuICAgIHJldHVybiBydW50aW1lLnRlbXBsYXRlKHNwZWMsIGhiKTtcbiAgfTtcblxuICByZXR1cm4gaGI7XG59XG5cbnZhciBpbnN0ID0gY3JlYXRlKCk7XG5pbnN0LmNyZWF0ZSA9IGNyZWF0ZTtcblxuX2hhbmRsZWJhcnNOb0NvbmZsaWN0MlsnZGVmYXVsdCddKGluc3QpO1xuXG5pbnN0WydkZWZhdWx0J10gPSBpbnN0O1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBpbnN0O1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TG5KMWJuUnBiV1V1YW5NaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN096czdPenM3T3pzN09FSkJRWE5DTEcxQ1FVRnRRanM3U1VGQk4wSXNTVUZCU1RzN096czdiME5CU1U4c01FSkJRVEJDT3pzN08yMURRVU16UWl4M1FrRkJkMEk3T3pzN0swSkJRM1pDTEc5Q1FVRnZRanM3U1VGQkwwSXNTMEZCU3pzN2FVTkJRMUVzYzBKQlFYTkNPenRKUVVGdVF5eFBRVUZQT3p0dlEwRkZTU3d3UWtGQk1FSTdPenM3TzBGQlIycEVMRk5CUVZNc1RVRkJUU3hIUVVGSE8wRkJRMmhDTEUxQlFVa3NSVUZCUlN4SFFVRkhMRWxCUVVrc1NVRkJTU3hEUVVGRExIRkNRVUZ4UWl4RlFVRkZMRU5CUVVNN08wRkJSVEZETEU5QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzBGQlEzWkNMRWxCUVVVc1EwRkJReXhWUVVGVkxHOURRVUZoTEVOQlFVTTdRVUZETTBJc1NVRkJSU3hEUVVGRExGTkJRVk1zYlVOQlFWa3NRMEZCUXp0QlFVTjZRaXhKUVVGRkxFTkJRVU1zUzBGQlN5eEhRVUZITEV0QlFVc3NRMEZCUXp0QlFVTnFRaXhKUVVGRkxFTkJRVU1zWjBKQlFXZENMRWRCUVVjc1MwRkJTeXhEUVVGRExHZENRVUZuUWl4RFFVRkRPenRCUVVVM1F5eEpRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkhMRTlCUVU4c1EwRkJRenRCUVVOb1FpeEpRVUZGTEVOQlFVTXNVVUZCVVN4SFFVRkhMRlZCUVZNc1NVRkJTU3hGUVVGRk8wRkJRek5DTEZkQlFVOHNUMEZCVHl4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVGSkxFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTTdSMEZEYmtNc1EwRkJRenM3UVVGRlJpeFRRVUZQTEVWQlFVVXNRMEZCUXp0RFFVTllPenRCUVVWRUxFbEJRVWtzU1VGQlNTeEhRVUZITEUxQlFVMHNSVUZCUlN4RFFVRkRPMEZCUTNCQ0xFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NUVUZCVFN4RFFVRkRPenRCUVVWeVFpeHJRMEZCVnl4SlFVRkpMRU5CUVVNc1EwRkJRenM3UVVGRmFrSXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF6czdjVUpCUlZJc1NVRkJTU0lzSW1acGJHVWlPaUpvWVc1a2JHVmlZWEp6TG5KMWJuUnBiV1V1YW5NaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ0tpQmhjeUJpWVhObElHWnliMjBnSnk0dmFHRnVaR3hsWW1GeWN5OWlZWE5sSnp0Y2JseHVMeThnUldGamFDQnZaaUIwYUdWelpTQmhkV2R0Wlc1MElIUm9aU0JJWVc1a2JHVmlZWEp6SUc5aWFtVmpkQzRnVG04Z2JtVmxaQ0IwYnlCelpYUjFjQ0JvWlhKbExseHVMeThnS0ZSb2FYTWdhWE1nWkc5dVpTQjBieUJsWVhOcGJIa2djMmhoY21VZ1kyOWtaU0JpWlhSM1pXVnVJR052YlcxdmJtcHpJR0Z1WkNCaWNtOTNjMlVnWlc1MmN5bGNibWx0Y0c5eWRDQlRZV1psVTNSeWFXNW5JR1p5YjIwZ0p5NHZhR0Z1Wkd4bFltRnljeTl6WVdabExYTjBjbWx1WnljN1hHNXBiWEJ2Y25RZ1JYaGpaWEIwYVc5dUlHWnliMjBnSnk0dmFHRnVaR3hsWW1GeWN5OWxlR05sY0hScGIyNG5PMXh1YVcxd2IzSjBJQ29nWVhNZ1ZYUnBiSE1nWm5KdmJTQW5MaTlvWVc1a2JHVmlZWEp6TDNWMGFXeHpKenRjYm1sdGNHOXlkQ0FxSUdGeklISjFiblJwYldVZ1puSnZiU0FuTGk5b1lXNWtiR1ZpWVhKekwzSjFiblJwYldVbk8xeHVYRzVwYlhCdmNuUWdibTlEYjI1bWJHbGpkQ0JtY205dElDY3VMMmhoYm1Sc1pXSmhjbk12Ym04dFkyOXVabXhwWTNRbk8xeHVYRzR2THlCR2IzSWdZMjl0Y0dGMGFXSnBiR2wwZVNCaGJtUWdkWE5oWjJVZ2IzVjBjMmxrWlNCdlppQnRiMlIxYkdVZ2MzbHpkR1Z0Y3l3Z2JXRnJaU0IwYUdVZ1NHRnVaR3hsWW1GeWN5QnZZbXBsWTNRZ1lTQnVZVzFsYzNCaFkyVmNibVoxYm1OMGFXOXVJR055WldGMFpTZ3BJSHRjYmlBZ2JHVjBJR2hpSUQwZ2JtVjNJR0poYzJVdVNHRnVaR3hsWW1GeWMwVnVkbWx5YjI1dFpXNTBLQ2s3WEc1Y2JpQWdWWFJwYkhNdVpYaDBaVzVrS0doaUxDQmlZWE5sS1R0Y2JpQWdhR0l1VTJGbVpWTjBjbWx1WnlBOUlGTmhabVZUZEhKcGJtYzdYRzRnSUdoaUxrVjRZMlZ3ZEdsdmJpQTlJRVY0WTJWd2RHbHZianRjYmlBZ2FHSXVWWFJwYkhNZ1BTQlZkR2xzY3p0Y2JpQWdhR0l1WlhOallYQmxSWGh3Y21WemMybHZiaUE5SUZWMGFXeHpMbVZ6WTJGd1pVVjRjSEpsYzNOcGIyNDdYRzVjYmlBZ2FHSXVWazBnUFNCeWRXNTBhVzFsTzF4dUlDQm9ZaTUwWlcxd2JHRjBaU0E5SUdaMWJtTjBhVzl1S0hOd1pXTXBJSHRjYmlBZ0lDQnlaWFIxY200Z2NuVnVkR2x0WlM1MFpXMXdiR0YwWlNoemNHVmpMQ0JvWWlrN1hHNGdJSDA3WEc1Y2JpQWdjbVYwZFhKdUlHaGlPMXh1ZlZ4dVhHNXNaWFFnYVc1emRDQTlJR055WldGMFpTZ3BPMXh1YVc1emRDNWpjbVZoZEdVZ1BTQmpjbVZoZEdVN1hHNWNibTV2UTI5dVpteHBZM1FvYVc1emRDazdYRzVjYm1sdWMzUmJKMlJsWm1GMWJIUW5YU0E5SUdsdWMzUTdYRzVjYm1WNGNHOXlkQ0JrWldaaGRXeDBJR2x1YzNRN1hHNGlYWDA9XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG52YXIgQVNUID0ge1xuICAvLyBQdWJsaWMgQVBJIHVzZWQgdG8gZXZhbHVhdGUgZGVyaXZlZCBhdHRyaWJ1dGVzIHJlZ2FyZGluZyBBU1Qgbm9kZXNcbiAgaGVscGVyczoge1xuICAgIC8vIGEgbXVzdGFjaGUgaXMgZGVmaW5pdGVseSBhIGhlbHBlciBpZjpcbiAgICAvLyAqIGl0IGlzIGFuIGVsaWdpYmxlIGhlbHBlciwgYW5kXG4gICAgLy8gKiBpdCBoYXMgYXQgbGVhc3Qgb25lIHBhcmFtZXRlciBvciBoYXNoIHNlZ21lbnRcbiAgICBoZWxwZXJFeHByZXNzaW9uOiBmdW5jdGlvbiBoZWxwZXJFeHByZXNzaW9uKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLnR5cGUgPT09ICdTdWJFeHByZXNzaW9uJyB8fCAobm9kZS50eXBlID09PSAnTXVzdGFjaGVTdGF0ZW1lbnQnIHx8IG5vZGUudHlwZSA9PT0gJ0Jsb2NrU3RhdGVtZW50JykgJiYgISEobm9kZS5wYXJhbXMgJiYgbm9kZS5wYXJhbXMubGVuZ3RoIHx8IG5vZGUuaGFzaCk7XG4gICAgfSxcblxuICAgIHNjb3BlZElkOiBmdW5jdGlvbiBzY29wZWRJZChwYXRoKSB7XG4gICAgICByZXR1cm4gKC9eXFwufHRoaXNcXGIvLnRlc3QocGF0aC5vcmlnaW5hbClcbiAgICAgICk7XG4gICAgfSxcblxuICAgIC8vIGFuIElEIGlzIHNpbXBsZSBpZiBpdCBvbmx5IGhhcyBvbmUgcGFydCwgYW5kIHRoYXQgcGFydCBpcyBub3RcbiAgICAvLyBgLi5gIG9yIGB0aGlzYC5cbiAgICBzaW1wbGVJZDogZnVuY3Rpb24gc2ltcGxlSWQocGF0aCkge1xuICAgICAgcmV0dXJuIHBhdGgucGFydHMubGVuZ3RoID09PSAxICYmICFBU1QuaGVscGVycy5zY29wZWRJZChwYXRoKSAmJiAhcGF0aC5kZXB0aDtcbiAgICB9XG4gIH1cbn07XG5cbi8vIE11c3QgYmUgZXhwb3J0ZWQgYXMgYW4gb2JqZWN0IHJhdGhlciB0aGFuIHRoZSByb290IG9mIHRoZSBtb2R1bGUgYXMgdGhlIGppc29uIGxleGVyXG4vLyBtdXN0IG1vZGlmeSB0aGUgb2JqZWN0IHRvIG9wZXJhdGUgcHJvcGVybHkuXG5leHBvcnRzWydkZWZhdWx0J10gPSBBU1Q7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwyTnZiWEJwYkdWeUwyRnpkQzVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN1FVRkJRU3hKUVVGSkxFZEJRVWNzUjBGQlJ6czdRVUZGVWl4VFFVRlBMRVZCUVVVN096czdRVUZKVUN4dlFrRkJaMElzUlVGQlJTd3dRa0ZCVXl4SlFVRkpMRVZCUVVVN1FVRkRMMElzWVVGRFJTeEpRVUZKTEVOQlFVTXNTVUZCU1N4TFFVRkxMR1ZCUVdVc1NVRkROVUlzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4TFFVRkxMRzFDUVVGdFFpeEpRVU5xUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hMUVVGTExHZENRVUZuUWl4RFFVRkJMRWxCUXpsQ0xFTkJRVU1zUlVGQlJTeEJRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEVsQlFVc3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJRU3hCUVVGRExFRkJRVU1zUTBGRGRrUTdTMEZEU0RzN1FVRkZSQ3haUVVGUkxFVkJRVVVzYTBKQlFWTXNTVUZCU1N4RlFVRkZPMEZCUTNaQ0xHRkJRVThzWVVGQldTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRE8xRkJRVU03UzBGRGVrTTdPenM3UVVGSlJDeFpRVUZSTEVWQlFVVXNhMEpCUVZNc1NVRkJTU3hGUVVGRk8wRkJRM1pDTEdGQlEwVXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRTlCUVU4c1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVOeVJUdExRVU5JTzBkQlEwWTdRMEZEUml4RFFVRkRPenM3TzNGQ1FVbGhMRWRCUVVjaUxDSm1hV3hsSWpvaVlYTjBMbXB6SWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWJHVjBJRUZUVkNBOUlIdGNiaUFnTHk4Z1VIVmliR2xqSUVGUVNTQjFjMlZrSUhSdklHVjJZV3gxWVhSbElHUmxjbWwyWldRZ1lYUjBjbWxpZFhSbGN5QnlaV2RoY21ScGJtY2dRVk5VSUc1dlpHVnpYRzRnSUdobGJIQmxjbk02SUh0Y2JpQWdJQ0F2THlCaElHMTFjM1JoWTJobElHbHpJR1JsWm1sdWFYUmxiSGtnWVNCb1pXeHdaWElnYVdZNlhHNGdJQ0FnTHk4Z0tpQnBkQ0JwY3lCaGJpQmxiR2xuYVdKc1pTQm9aV3h3WlhJc0lHRnVaRnh1SUNBZ0lDOHZJQ29nYVhRZ2FHRnpJR0YwSUd4bFlYTjBJRzl1WlNCd1lYSmhiV1YwWlhJZ2IzSWdhR0Z6YUNCelpXZHRaVzUwWEc0Z0lDQWdhR1ZzY0dWeVJYaHdjbVZ6YzJsdmJqb2dablZ1WTNScGIyNG9ibTlrWlNrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUNoY2JpQWdJQ0FnSUNBZ2JtOWtaUzUwZVhCbElEMDlQU0FuVTNWaVJYaHdjbVZ6YzJsdmJpY2dmSHhjYmlBZ0lDQWdJQ0FnS0NodWIyUmxMblI1Y0dVZ1BUMDlJQ2ROZFhOMFlXTm9aVk4wWVhSbGJXVnVkQ2NnZkh4Y2JpQWdJQ0FnSUNBZ0lDQnViMlJsTG5SNWNHVWdQVDA5SUNkQ2JHOWphMU4wWVhSbGJXVnVkQ2NwSUNZbVhHNGdJQ0FnSUNBZ0lDQWdJU0VvS0c1dlpHVXVjR0Z5WVcxeklDWW1JRzV2WkdVdWNHRnlZVzF6TG14bGJtZDBhQ2tnZkh3Z2JtOWtaUzVvWVhOb0tTbGNiaUFnSUNBZ0lDazdYRzRnSUNBZ2ZTeGNibHh1SUNBZ0lITmpiM0JsWkVsa09pQm1kVzVqZEdsdmJpaHdZWFJvS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnTDE1Y1hDNThkR2hwYzF4Y1lpOHVkR1Z6ZENod1lYUm9MbTl5YVdkcGJtRnNLVHRjYmlBZ0lDQjlMRnh1WEc0Z0lDQWdMeThnWVc0Z1NVUWdhWE1nYzJsdGNHeGxJR2xtSUdsMElHOXViSGtnYUdGeklHOXVaU0J3WVhKMExDQmhibVFnZEdoaGRDQndZWEowSUdseklHNXZkRnh1SUNBZ0lDOHZJR0F1TG1BZ2IzSWdZSFJvYVhOZ0xseHVJQ0FnSUhOcGJYQnNaVWxrT2lCbWRXNWpkR2x2Ymlod1lYUm9LU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdLRnh1SUNBZ0lDQWdJQ0J3WVhSb0xuQmhjblJ6TG14bGJtZDBhQ0E5UFQwZ01TQW1KaUFoUVZOVUxtaGxiSEJsY25NdWMyTnZjR1ZrU1dRb2NHRjBhQ2tnSmlZZ0lYQmhkR2d1WkdWd2RHaGNiaUFnSUNBZ0lDazdYRzRnSUNBZ2ZWeHVJQ0I5WEc1OU8xeHVYRzR2THlCTmRYTjBJR0psSUdWNGNHOXlkR1ZrSUdGeklHRnVJRzlpYW1WamRDQnlZWFJvWlhJZ2RHaGhiaUIwYUdVZ2NtOXZkQ0J2WmlCMGFHVWdiVzlrZFd4bElHRnpJSFJvWlNCcWFYTnZiaUJzWlhobGNseHVMeThnYlhWemRDQnRiMlJwWm5rZ2RHaGxJRzlpYW1WamRDQjBieUJ2Y0dWeVlYUmxJSEJ5YjNCbGNteDVMbHh1Wlhod2IzSjBJR1JsWm1GMWJIUWdRVk5VTzF4dUlsMTlcbiIsIi8vIEZpbGUgaWdub3JlZCBpbiBjb3ZlcmFnZSB0ZXN0cyB2aWEgc2V0dGluZyBpbiAuaXN0YW5idWwueW1sXG4vKiBKaXNvbiBnZW5lcmF0ZWQgcGFyc2VyICovXG5cInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbnZhciBoYW5kbGViYXJzID0gKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcGFyc2VyID0geyB0cmFjZTogZnVuY3Rpb24gdHJhY2UoKSB7fSxcbiAgICAgICAgeXk6IHt9LFxuICAgICAgICBzeW1ib2xzXzogeyBcImVycm9yXCI6IDIsIFwicm9vdFwiOiAzLCBcInByb2dyYW1cIjogNCwgXCJFT0ZcIjogNSwgXCJwcm9ncmFtX3JlcGV0aXRpb24wXCI6IDYsIFwic3RhdGVtZW50XCI6IDcsIFwibXVzdGFjaGVcIjogOCwgXCJibG9ja1wiOiA5LCBcInJhd0Jsb2NrXCI6IDEwLCBcInBhcnRpYWxcIjogMTEsIFwicGFydGlhbEJsb2NrXCI6IDEyLCBcImNvbnRlbnRcIjogMTMsIFwiQ09NTUVOVFwiOiAxNCwgXCJDT05URU5UXCI6IDE1LCBcIm9wZW5SYXdCbG9ja1wiOiAxNiwgXCJyYXdCbG9ja19yZXBldGl0aW9uMFwiOiAxNywgXCJFTkRfUkFXX0JMT0NLXCI6IDE4LCBcIk9QRU5fUkFXX0JMT0NLXCI6IDE5LCBcImhlbHBlck5hbWVcIjogMjAsIFwib3BlblJhd0Jsb2NrX3JlcGV0aXRpb24wXCI6IDIxLCBcIm9wZW5SYXdCbG9ja19vcHRpb24wXCI6IDIyLCBcIkNMT1NFX1JBV19CTE9DS1wiOiAyMywgXCJvcGVuQmxvY2tcIjogMjQsIFwiYmxvY2tfb3B0aW9uMFwiOiAyNSwgXCJjbG9zZUJsb2NrXCI6IDI2LCBcIm9wZW5JbnZlcnNlXCI6IDI3LCBcImJsb2NrX29wdGlvbjFcIjogMjgsIFwiT1BFTl9CTE9DS1wiOiAyOSwgXCJvcGVuQmxvY2tfcmVwZXRpdGlvbjBcIjogMzAsIFwib3BlbkJsb2NrX29wdGlvbjBcIjogMzEsIFwib3BlbkJsb2NrX29wdGlvbjFcIjogMzIsIFwiQ0xPU0VcIjogMzMsIFwiT1BFTl9JTlZFUlNFXCI6IDM0LCBcIm9wZW5JbnZlcnNlX3JlcGV0aXRpb24wXCI6IDM1LCBcIm9wZW5JbnZlcnNlX29wdGlvbjBcIjogMzYsIFwib3BlbkludmVyc2Vfb3B0aW9uMVwiOiAzNywgXCJvcGVuSW52ZXJzZUNoYWluXCI6IDM4LCBcIk9QRU5fSU5WRVJTRV9DSEFJTlwiOiAzOSwgXCJvcGVuSW52ZXJzZUNoYWluX3JlcGV0aXRpb24wXCI6IDQwLCBcIm9wZW5JbnZlcnNlQ2hhaW5fb3B0aW9uMFwiOiA0MSwgXCJvcGVuSW52ZXJzZUNoYWluX29wdGlvbjFcIjogNDIsIFwiaW52ZXJzZUFuZFByb2dyYW1cIjogNDMsIFwiSU5WRVJTRVwiOiA0NCwgXCJpbnZlcnNlQ2hhaW5cIjogNDUsIFwiaW52ZXJzZUNoYWluX29wdGlvbjBcIjogNDYsIFwiT1BFTl9FTkRCTE9DS1wiOiA0NywgXCJPUEVOXCI6IDQ4LCBcIm11c3RhY2hlX3JlcGV0aXRpb24wXCI6IDQ5LCBcIm11c3RhY2hlX29wdGlvbjBcIjogNTAsIFwiT1BFTl9VTkVTQ0FQRURcIjogNTEsIFwibXVzdGFjaGVfcmVwZXRpdGlvbjFcIjogNTIsIFwibXVzdGFjaGVfb3B0aW9uMVwiOiA1MywgXCJDTE9TRV9VTkVTQ0FQRURcIjogNTQsIFwiT1BFTl9QQVJUSUFMXCI6IDU1LCBcInBhcnRpYWxOYW1lXCI6IDU2LCBcInBhcnRpYWxfcmVwZXRpdGlvbjBcIjogNTcsIFwicGFydGlhbF9vcHRpb24wXCI6IDU4LCBcIm9wZW5QYXJ0aWFsQmxvY2tcIjogNTksIFwiT1BFTl9QQVJUSUFMX0JMT0NLXCI6IDYwLCBcIm9wZW5QYXJ0aWFsQmxvY2tfcmVwZXRpdGlvbjBcIjogNjEsIFwib3BlblBhcnRpYWxCbG9ja19vcHRpb24wXCI6IDYyLCBcInBhcmFtXCI6IDYzLCBcInNleHByXCI6IDY0LCBcIk9QRU5fU0VYUFJcIjogNjUsIFwic2V4cHJfcmVwZXRpdGlvbjBcIjogNjYsIFwic2V4cHJfb3B0aW9uMFwiOiA2NywgXCJDTE9TRV9TRVhQUlwiOiA2OCwgXCJoYXNoXCI6IDY5LCBcImhhc2hfcmVwZXRpdGlvbl9wbHVzMFwiOiA3MCwgXCJoYXNoU2VnbWVudFwiOiA3MSwgXCJJRFwiOiA3MiwgXCJFUVVBTFNcIjogNzMsIFwiYmxvY2tQYXJhbXNcIjogNzQsIFwiT1BFTl9CTE9DS19QQVJBTVNcIjogNzUsIFwiYmxvY2tQYXJhbXNfcmVwZXRpdGlvbl9wbHVzMFwiOiA3NiwgXCJDTE9TRV9CTE9DS19QQVJBTVNcIjogNzcsIFwicGF0aFwiOiA3OCwgXCJkYXRhTmFtZVwiOiA3OSwgXCJTVFJJTkdcIjogODAsIFwiTlVNQkVSXCI6IDgxLCBcIkJPT0xFQU5cIjogODIsIFwiVU5ERUZJTkVEXCI6IDgzLCBcIk5VTExcIjogODQsIFwiREFUQVwiOiA4NSwgXCJwYXRoU2VnbWVudHNcIjogODYsIFwiU0VQXCI6IDg3LCBcIiRhY2NlcHRcIjogMCwgXCIkZW5kXCI6IDEgfSxcbiAgICAgICAgdGVybWluYWxzXzogeyAyOiBcImVycm9yXCIsIDU6IFwiRU9GXCIsIDE0OiBcIkNPTU1FTlRcIiwgMTU6IFwiQ09OVEVOVFwiLCAxODogXCJFTkRfUkFXX0JMT0NLXCIsIDE5OiBcIk9QRU5fUkFXX0JMT0NLXCIsIDIzOiBcIkNMT1NFX1JBV19CTE9DS1wiLCAyOTogXCJPUEVOX0JMT0NLXCIsIDMzOiBcIkNMT1NFXCIsIDM0OiBcIk9QRU5fSU5WRVJTRVwiLCAzOTogXCJPUEVOX0lOVkVSU0VfQ0hBSU5cIiwgNDQ6IFwiSU5WRVJTRVwiLCA0NzogXCJPUEVOX0VOREJMT0NLXCIsIDQ4OiBcIk9QRU5cIiwgNTE6IFwiT1BFTl9VTkVTQ0FQRURcIiwgNTQ6IFwiQ0xPU0VfVU5FU0NBUEVEXCIsIDU1OiBcIk9QRU5fUEFSVElBTFwiLCA2MDogXCJPUEVOX1BBUlRJQUxfQkxPQ0tcIiwgNjU6IFwiT1BFTl9TRVhQUlwiLCA2ODogXCJDTE9TRV9TRVhQUlwiLCA3MjogXCJJRFwiLCA3MzogXCJFUVVBTFNcIiwgNzU6IFwiT1BFTl9CTE9DS19QQVJBTVNcIiwgNzc6IFwiQ0xPU0VfQkxPQ0tfUEFSQU1TXCIsIDgwOiBcIlNUUklOR1wiLCA4MTogXCJOVU1CRVJcIiwgODI6IFwiQk9PTEVBTlwiLCA4MzogXCJVTkRFRklORURcIiwgODQ6IFwiTlVMTFwiLCA4NTogXCJEQVRBXCIsIDg3OiBcIlNFUFwiIH0sXG4gICAgICAgIHByb2R1Y3Rpb25zXzogWzAsIFszLCAyXSwgWzQsIDFdLCBbNywgMV0sIFs3LCAxXSwgWzcsIDFdLCBbNywgMV0sIFs3LCAxXSwgWzcsIDFdLCBbNywgMV0sIFsxMywgMV0sIFsxMCwgM10sIFsxNiwgNV0sIFs5LCA0XSwgWzksIDRdLCBbMjQsIDZdLCBbMjcsIDZdLCBbMzgsIDZdLCBbNDMsIDJdLCBbNDUsIDNdLCBbNDUsIDFdLCBbMjYsIDNdLCBbOCwgNV0sIFs4LCA1XSwgWzExLCA1XSwgWzEyLCAzXSwgWzU5LCA1XSwgWzYzLCAxXSwgWzYzLCAxXSwgWzY0LCA1XSwgWzY5LCAxXSwgWzcxLCAzXSwgWzc0LCAzXSwgWzIwLCAxXSwgWzIwLCAxXSwgWzIwLCAxXSwgWzIwLCAxXSwgWzIwLCAxXSwgWzIwLCAxXSwgWzIwLCAxXSwgWzU2LCAxXSwgWzU2LCAxXSwgWzc5LCAyXSwgWzc4LCAxXSwgWzg2LCAzXSwgWzg2LCAxXSwgWzYsIDBdLCBbNiwgMl0sIFsxNywgMF0sIFsxNywgMl0sIFsyMSwgMF0sIFsyMSwgMl0sIFsyMiwgMF0sIFsyMiwgMV0sIFsyNSwgMF0sIFsyNSwgMV0sIFsyOCwgMF0sIFsyOCwgMV0sIFszMCwgMF0sIFszMCwgMl0sIFszMSwgMF0sIFszMSwgMV0sIFszMiwgMF0sIFszMiwgMV0sIFszNSwgMF0sIFszNSwgMl0sIFszNiwgMF0sIFszNiwgMV0sIFszNywgMF0sIFszNywgMV0sIFs0MCwgMF0sIFs0MCwgMl0sIFs0MSwgMF0sIFs0MSwgMV0sIFs0MiwgMF0sIFs0MiwgMV0sIFs0NiwgMF0sIFs0NiwgMV0sIFs0OSwgMF0sIFs0OSwgMl0sIFs1MCwgMF0sIFs1MCwgMV0sIFs1MiwgMF0sIFs1MiwgMl0sIFs1MywgMF0sIFs1MywgMV0sIFs1NywgMF0sIFs1NywgMl0sIFs1OCwgMF0sIFs1OCwgMV0sIFs2MSwgMF0sIFs2MSwgMl0sIFs2MiwgMF0sIFs2MiwgMV0sIFs2NiwgMF0sIFs2NiwgMl0sIFs2NywgMF0sIFs2NywgMV0sIFs3MCwgMV0sIFs3MCwgMl0sIFs3NiwgMV0sIFs3NiwgMl1dLFxuICAgICAgICBwZXJmb3JtQWN0aW9uOiBmdW5jdGlvbiBhbm9ueW1vdXMoeXl0ZXh0LCB5eWxlbmcsIHl5bGluZW5vLCB5eSwgeXlzdGF0ZSwgJCQsIF8kKSB7XG5cbiAgICAgICAgICAgIHZhciAkMCA9ICQkLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICBzd2l0Y2ggKHl5c3RhdGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkJFskMCAtIDFdO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHl5LnByZXBhcmVQcm9ncmFtKCQkWyQwXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBdO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSAkJFskMF07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBdO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSAkJFskMF07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgOTpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ0NvbW1lbnRTdGF0ZW1lbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHl5LnN0cmlwQ29tbWVudCgkJFskMF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDBdLCAkJFskMF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpXG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ0NvbnRlbnRTdGF0ZW1lbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWw6ICQkWyQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAkJFskMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2M6IHl5LmxvY0luZm8odGhpcy5fJClcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDExOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB5eS5wcmVwYXJlUmF3QmxvY2soJCRbJDAgLSAyXSwgJCRbJDAgLSAxXSwgJCRbJDBdLCB0aGlzLl8kKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAxMjpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geyBwYXRoOiAkJFskMCAtIDNdLCBwYXJhbXM6ICQkWyQwIC0gMl0sIGhhc2g6ICQkWyQwIC0gMV0gfTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geXkucHJlcGFyZUJsb2NrKCQkWyQwIC0gM10sICQkWyQwIC0gMl0sICQkWyQwIC0gMV0sICQkWyQwXSwgZmFsc2UsIHRoaXMuXyQpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDE0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB5eS5wcmVwYXJlQmxvY2soJCRbJDAgLSAzXSwgJCRbJDAgLSAyXSwgJCRbJDAgLSAxXSwgJCRbJDBdLCB0cnVlLCB0aGlzLl8kKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAxNTpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geyBvcGVuOiAkJFskMCAtIDVdLCBwYXRoOiAkJFskMCAtIDRdLCBwYXJhbXM6ICQkWyQwIC0gM10sIGhhc2g6ICQkWyQwIC0gMl0sIGJsb2NrUGFyYW1zOiAkJFskMCAtIDFdLCBzdHJpcDogeXkuc3RyaXBGbGFncygkJFskMCAtIDVdLCAkJFskMF0pIH07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMTY6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgcGF0aDogJCRbJDAgLSA0XSwgcGFyYW1zOiAkJFskMCAtIDNdLCBoYXNoOiAkJFskMCAtIDJdLCBibG9ja1BhcmFtczogJCRbJDAgLSAxXSwgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDAgLSA1XSwgJCRbJDBdKSB9O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDE3OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHBhdGg6ICQkWyQwIC0gNF0sIHBhcmFtczogJCRbJDAgLSAzXSwgaGFzaDogJCRbJDAgLSAyXSwgYmxvY2tQYXJhbXM6ICQkWyQwIC0gMV0sIHN0cmlwOiB5eS5zdHJpcEZsYWdzKCQkWyQwIC0gNV0sICQkWyQwXSkgfTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAxODpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geyBzdHJpcDogeXkuc3RyaXBGbGFncygkJFskMCAtIDFdLCAkJFskMCAtIDFdKSwgcHJvZ3JhbTogJCRbJDBdIH07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMTk6XG4gICAgICAgICAgICAgICAgICAgIHZhciBpbnZlcnNlID0geXkucHJlcGFyZUJsb2NrKCQkWyQwIC0gMl0sICQkWyQwIC0gMV0sICQkWyQwXSwgJCRbJDBdLCBmYWxzZSwgdGhpcy5fJCksXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtID0geXkucHJlcGFyZVByb2dyYW0oW2ludmVyc2VdLCAkJFskMCAtIDFdLmxvYyk7XG4gICAgICAgICAgICAgICAgICAgIHByb2dyYW0uY2hhaW5lZCA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geyBzdHJpcDogJCRbJDAgLSAyXS5zdHJpcCwgcHJvZ3JhbTogcHJvZ3JhbSwgY2hhaW46IHRydWUgfTtcblxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDIwOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSAkJFskMF07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMjE6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgcGF0aDogJCRbJDAgLSAxXSwgc3RyaXA6IHl5LnN0cmlwRmxhZ3MoJCRbJDAgLSAyXSwgJCRbJDBdKSB9O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDIyOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB5eS5wcmVwYXJlTXVzdGFjaGUoJCRbJDAgLSAzXSwgJCRbJDAgLSAyXSwgJCRbJDAgLSAxXSwgJCRbJDAgLSA0XSwgeXkuc3RyaXBGbGFncygkJFskMCAtIDRdLCAkJFskMF0pLCB0aGlzLl8kKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAyMzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geXkucHJlcGFyZU11c3RhY2hlKCQkWyQwIC0gM10sICQkWyQwIC0gMl0sICQkWyQwIC0gMV0sICQkWyQwIC0gNF0sIHl5LnN0cmlwRmxhZ3MoJCRbJDAgLSA0XSwgJCRbJDBdKSwgdGhpcy5fJCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMjQ6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdQYXJ0aWFsU3RhdGVtZW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICQkWyQwIC0gM10sXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6ICQkWyQwIC0gMl0sXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNoOiAkJFskMCAtIDFdLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50OiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlwOiB5eS5zdHJpcEZsYWdzKCQkWyQwIC0gNF0sICQkWyQwXSksXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2M6IHl5LmxvY0luZm8odGhpcy5fJClcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDI1OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB5eS5wcmVwYXJlUGFydGlhbEJsb2NrKCQkWyQwIC0gMl0sICQkWyQwIC0gMV0sICQkWyQwXSwgdGhpcy5fJCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMjY6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgcGF0aDogJCRbJDAgLSAzXSwgcGFyYW1zOiAkJFskMCAtIDJdLCBoYXNoOiAkJFskMCAtIDFdLCBzdHJpcDogeXkuc3RyaXBGbGFncygkJFskMCAtIDRdLCAkJFskMF0pIH07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMjc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAyODpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBdO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDI5OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnU3ViRXhwcmVzc2lvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiAkJFskMCAtIDNdLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiAkJFskMCAtIDJdLFxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzaDogJCRbJDAgLSAxXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvYzogeXkubG9jSW5mbyh0aGlzLl8kKVxuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMzA6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgdHlwZTogJ0hhc2gnLCBwYWlyczogJCRbJDBdLCBsb2M6IHl5LmxvY0luZm8odGhpcy5fJCkgfTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAzMTpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geyB0eXBlOiAnSGFzaFBhaXInLCBrZXk6IHl5LmlkKCQkWyQwIC0gMl0pLCB2YWx1ZTogJCRbJDBdLCBsb2M6IHl5LmxvY0luZm8odGhpcy5fJCkgfTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAzMjpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0geXkuaWQoJCRbJDAgLSAxXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMzM6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9ICQkWyQwXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAzNDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBdO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDM1OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHR5cGU6ICdTdHJpbmdMaXRlcmFsJywgdmFsdWU6ICQkWyQwXSwgb3JpZ2luYWw6ICQkWyQwXSwgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpIH07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMzY6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgdHlwZTogJ051bWJlckxpdGVyYWwnLCB2YWx1ZTogTnVtYmVyKCQkWyQwXSksIG9yaWdpbmFsOiBOdW1iZXIoJCRbJDBdKSwgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpIH07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMzc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgdHlwZTogJ0Jvb2xlYW5MaXRlcmFsJywgdmFsdWU6ICQkWyQwXSA9PT0gJ3RydWUnLCBvcmlnaW5hbDogJCRbJDBdID09PSAndHJ1ZScsIGxvYzogeXkubG9jSW5mbyh0aGlzLl8kKSB9O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDM4OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSB7IHR5cGU6ICdVbmRlZmluZWRMaXRlcmFsJywgb3JpZ2luYWw6IHVuZGVmaW5lZCwgdmFsdWU6IHVuZGVmaW5lZCwgbG9jOiB5eS5sb2NJbmZvKHRoaXMuXyQpIH07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMzk6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHsgdHlwZTogJ051bGxMaXRlcmFsJywgb3JpZ2luYWw6IG51bGwsIHZhbHVlOiBudWxsLCBsb2M6IHl5LmxvY0luZm8odGhpcy5fJCkgfTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0MDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gJCRbJDBdO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQxOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSAkJFskMF07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDI6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHl5LnByZXBhcmVQYXRoKHRydWUsICQkWyQwXSwgdGhpcy5fJCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDM6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IHl5LnByZXBhcmVQYXRoKGZhbHNlLCAkJFskMF0sIHRoaXMuXyQpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ0OlxuICAgICAgICAgICAgICAgICAgICAkJFskMCAtIDJdLnB1c2goeyBwYXJ0OiB5eS5pZCgkJFskMF0pLCBvcmlnaW5hbDogJCRbJDBdLCBzZXBhcmF0b3I6ICQkWyQwIC0gMV0gfSk7dGhpcy4kID0gJCRbJDAgLSAyXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0NTpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gW3sgcGFydDogeXkuaWQoJCRbJDBdKSwgb3JpZ2luYWw6ICQkWyQwXSB9XTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0NjpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gW107XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDc6XG4gICAgICAgICAgICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ4OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OTpcbiAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNTA6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDUxOlxuICAgICAgICAgICAgICAgICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA1ODpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gW107XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNTk6XG4gICAgICAgICAgICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDY0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA2NTpcbiAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNzA6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDcxOlxuICAgICAgICAgICAgICAgICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA3ODpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gW107XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNzk6XG4gICAgICAgICAgICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDgyOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA4MzpcbiAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgODY6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDg3OlxuICAgICAgICAgICAgICAgICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA5MDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kID0gW107XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgOTE6XG4gICAgICAgICAgICAgICAgICAgICQkWyQwIC0gMV0ucHVzaCgkJFskMF0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDk0OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLiQgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA5NTpcbiAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgOTg6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFskJFskMF1dO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDk5OlxuICAgICAgICAgICAgICAgICAgICAkJFskMCAtIDFdLnB1c2goJCRbJDBdKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAxMDA6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJCA9IFskJFskMF1dO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDEwMTpcbiAgICAgICAgICAgICAgICAgICAgJCRbJDAgLSAxXS5wdXNoKCQkWyQwXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB0YWJsZTogW3sgMzogMSwgNDogMiwgNTogWzIsIDQ2XSwgNjogMywgMTQ6IFsyLCA0Nl0sIDE1OiBbMiwgNDZdLCAxOTogWzIsIDQ2XSwgMjk6IFsyLCA0Nl0sIDM0OiBbMiwgNDZdLCA0ODogWzIsIDQ2XSwgNTE6IFsyLCA0Nl0sIDU1OiBbMiwgNDZdLCA2MDogWzIsIDQ2XSB9LCB7IDE6IFszXSB9LCB7IDU6IFsxLCA0XSB9LCB7IDU6IFsyLCAyXSwgNzogNSwgODogNiwgOTogNywgMTA6IDgsIDExOiA5LCAxMjogMTAsIDEzOiAxMSwgMTQ6IFsxLCAxMl0sIDE1OiBbMSwgMjBdLCAxNjogMTcsIDE5OiBbMSwgMjNdLCAyNDogMTUsIDI3OiAxNiwgMjk6IFsxLCAyMV0sIDM0OiBbMSwgMjJdLCAzOTogWzIsIDJdLCA0NDogWzIsIDJdLCA0NzogWzIsIDJdLCA0ODogWzEsIDEzXSwgNTE6IFsxLCAxNF0sIDU1OiBbMSwgMThdLCA1OTogMTksIDYwOiBbMSwgMjRdIH0sIHsgMTogWzIsIDFdIH0sIHsgNTogWzIsIDQ3XSwgMTQ6IFsyLCA0N10sIDE1OiBbMiwgNDddLCAxOTogWzIsIDQ3XSwgMjk6IFsyLCA0N10sIDM0OiBbMiwgNDddLCAzOTogWzIsIDQ3XSwgNDQ6IFsyLCA0N10sIDQ3OiBbMiwgNDddLCA0ODogWzIsIDQ3XSwgNTE6IFsyLCA0N10sIDU1OiBbMiwgNDddLCA2MDogWzIsIDQ3XSB9LCB7IDU6IFsyLCAzXSwgMTQ6IFsyLCAzXSwgMTU6IFsyLCAzXSwgMTk6IFsyLCAzXSwgMjk6IFsyLCAzXSwgMzQ6IFsyLCAzXSwgMzk6IFsyLCAzXSwgNDQ6IFsyLCAzXSwgNDc6IFsyLCAzXSwgNDg6IFsyLCAzXSwgNTE6IFsyLCAzXSwgNTU6IFsyLCAzXSwgNjA6IFsyLCAzXSB9LCB7IDU6IFsyLCA0XSwgMTQ6IFsyLCA0XSwgMTU6IFsyLCA0XSwgMTk6IFsyLCA0XSwgMjk6IFsyLCA0XSwgMzQ6IFsyLCA0XSwgMzk6IFsyLCA0XSwgNDQ6IFsyLCA0XSwgNDc6IFsyLCA0XSwgNDg6IFsyLCA0XSwgNTE6IFsyLCA0XSwgNTU6IFsyLCA0XSwgNjA6IFsyLCA0XSB9LCB7IDU6IFsyLCA1XSwgMTQ6IFsyLCA1XSwgMTU6IFsyLCA1XSwgMTk6IFsyLCA1XSwgMjk6IFsyLCA1XSwgMzQ6IFsyLCA1XSwgMzk6IFsyLCA1XSwgNDQ6IFsyLCA1XSwgNDc6IFsyLCA1XSwgNDg6IFsyLCA1XSwgNTE6IFsyLCA1XSwgNTU6IFsyLCA1XSwgNjA6IFsyLCA1XSB9LCB7IDU6IFsyLCA2XSwgMTQ6IFsyLCA2XSwgMTU6IFsyLCA2XSwgMTk6IFsyLCA2XSwgMjk6IFsyLCA2XSwgMzQ6IFsyLCA2XSwgMzk6IFsyLCA2XSwgNDQ6IFsyLCA2XSwgNDc6IFsyLCA2XSwgNDg6IFsyLCA2XSwgNTE6IFsyLCA2XSwgNTU6IFsyLCA2XSwgNjA6IFsyLCA2XSB9LCB7IDU6IFsyLCA3XSwgMTQ6IFsyLCA3XSwgMTU6IFsyLCA3XSwgMTk6IFsyLCA3XSwgMjk6IFsyLCA3XSwgMzQ6IFsyLCA3XSwgMzk6IFsyLCA3XSwgNDQ6IFsyLCA3XSwgNDc6IFsyLCA3XSwgNDg6IFsyLCA3XSwgNTE6IFsyLCA3XSwgNTU6IFsyLCA3XSwgNjA6IFsyLCA3XSB9LCB7IDU6IFsyLCA4XSwgMTQ6IFsyLCA4XSwgMTU6IFsyLCA4XSwgMTk6IFsyLCA4XSwgMjk6IFsyLCA4XSwgMzQ6IFsyLCA4XSwgMzk6IFsyLCA4XSwgNDQ6IFsyLCA4XSwgNDc6IFsyLCA4XSwgNDg6IFsyLCA4XSwgNTE6IFsyLCA4XSwgNTU6IFsyLCA4XSwgNjA6IFsyLCA4XSB9LCB7IDU6IFsyLCA5XSwgMTQ6IFsyLCA5XSwgMTU6IFsyLCA5XSwgMTk6IFsyLCA5XSwgMjk6IFsyLCA5XSwgMzQ6IFsyLCA5XSwgMzk6IFsyLCA5XSwgNDQ6IFsyLCA5XSwgNDc6IFsyLCA5XSwgNDg6IFsyLCA5XSwgNTE6IFsyLCA5XSwgNTU6IFsyLCA5XSwgNjA6IFsyLCA5XSB9LCB7IDIwOiAyNSwgNzI6IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyAyMDogMzYsIDcyOiBbMSwgMzVdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgNDogMzcsIDY6IDMsIDE0OiBbMiwgNDZdLCAxNTogWzIsIDQ2XSwgMTk6IFsyLCA0Nl0sIDI5OiBbMiwgNDZdLCAzNDogWzIsIDQ2XSwgMzk6IFsyLCA0Nl0sIDQ0OiBbMiwgNDZdLCA0NzogWzIsIDQ2XSwgNDg6IFsyLCA0Nl0sIDUxOiBbMiwgNDZdLCA1NTogWzIsIDQ2XSwgNjA6IFsyLCA0Nl0gfSwgeyA0OiAzOCwgNjogMywgMTQ6IFsyLCA0Nl0sIDE1OiBbMiwgNDZdLCAxOTogWzIsIDQ2XSwgMjk6IFsyLCA0Nl0sIDM0OiBbMiwgNDZdLCA0NDogWzIsIDQ2XSwgNDc6IFsyLCA0Nl0sIDQ4OiBbMiwgNDZdLCA1MTogWzIsIDQ2XSwgNTU6IFsyLCA0Nl0sIDYwOiBbMiwgNDZdIH0sIHsgMTU6IFsyLCA0OF0sIDE3OiAzOSwgMTg6IFsyLCA0OF0gfSwgeyAyMDogNDEsIDU2OiA0MCwgNjQ6IDQyLCA2NTogWzEsIDQzXSwgNzI6IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyA0OiA0NCwgNjogMywgMTQ6IFsyLCA0Nl0sIDE1OiBbMiwgNDZdLCAxOTogWzIsIDQ2XSwgMjk6IFsyLCA0Nl0sIDM0OiBbMiwgNDZdLCA0NzogWzIsIDQ2XSwgNDg6IFsyLCA0Nl0sIDUxOiBbMiwgNDZdLCA1NTogWzIsIDQ2XSwgNjA6IFsyLCA0Nl0gfSwgeyA1OiBbMiwgMTBdLCAxNDogWzIsIDEwXSwgMTU6IFsyLCAxMF0sIDE4OiBbMiwgMTBdLCAxOTogWzIsIDEwXSwgMjk6IFsyLCAxMF0sIDM0OiBbMiwgMTBdLCAzOTogWzIsIDEwXSwgNDQ6IFsyLCAxMF0sIDQ3OiBbMiwgMTBdLCA0ODogWzIsIDEwXSwgNTE6IFsyLCAxMF0sIDU1OiBbMiwgMTBdLCA2MDogWzIsIDEwXSB9LCB7IDIwOiA0NSwgNzI6IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyAyMDogNDYsIDcyOiBbMSwgMzVdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgMjA6IDQ3LCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDIwOiA0MSwgNTY6IDQ4LCA2NDogNDIsIDY1OiBbMSwgNDNdLCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDMzOiBbMiwgNzhdLCA0OTogNDksIDY1OiBbMiwgNzhdLCA3MjogWzIsIDc4XSwgODA6IFsyLCA3OF0sIDgxOiBbMiwgNzhdLCA4MjogWzIsIDc4XSwgODM6IFsyLCA3OF0sIDg0OiBbMiwgNzhdLCA4NTogWzIsIDc4XSB9LCB7IDIzOiBbMiwgMzNdLCAzMzogWzIsIDMzXSwgNTQ6IFsyLCAzM10sIDY1OiBbMiwgMzNdLCA2ODogWzIsIDMzXSwgNzI6IFsyLCAzM10sIDc1OiBbMiwgMzNdLCA4MDogWzIsIDMzXSwgODE6IFsyLCAzM10sIDgyOiBbMiwgMzNdLCA4MzogWzIsIDMzXSwgODQ6IFsyLCAzM10sIDg1OiBbMiwgMzNdIH0sIHsgMjM6IFsyLCAzNF0sIDMzOiBbMiwgMzRdLCA1NDogWzIsIDM0XSwgNjU6IFsyLCAzNF0sIDY4OiBbMiwgMzRdLCA3MjogWzIsIDM0XSwgNzU6IFsyLCAzNF0sIDgwOiBbMiwgMzRdLCA4MTogWzIsIDM0XSwgODI6IFsyLCAzNF0sIDgzOiBbMiwgMzRdLCA4NDogWzIsIDM0XSwgODU6IFsyLCAzNF0gfSwgeyAyMzogWzIsIDM1XSwgMzM6IFsyLCAzNV0sIDU0OiBbMiwgMzVdLCA2NTogWzIsIDM1XSwgNjg6IFsyLCAzNV0sIDcyOiBbMiwgMzVdLCA3NTogWzIsIDM1XSwgODA6IFsyLCAzNV0sIDgxOiBbMiwgMzVdLCA4MjogWzIsIDM1XSwgODM6IFsyLCAzNV0sIDg0OiBbMiwgMzVdLCA4NTogWzIsIDM1XSB9LCB7IDIzOiBbMiwgMzZdLCAzMzogWzIsIDM2XSwgNTQ6IFsyLCAzNl0sIDY1OiBbMiwgMzZdLCA2ODogWzIsIDM2XSwgNzI6IFsyLCAzNl0sIDc1OiBbMiwgMzZdLCA4MDogWzIsIDM2XSwgODE6IFsyLCAzNl0sIDgyOiBbMiwgMzZdLCA4MzogWzIsIDM2XSwgODQ6IFsyLCAzNl0sIDg1OiBbMiwgMzZdIH0sIHsgMjM6IFsyLCAzN10sIDMzOiBbMiwgMzddLCA1NDogWzIsIDM3XSwgNjU6IFsyLCAzN10sIDY4OiBbMiwgMzddLCA3MjogWzIsIDM3XSwgNzU6IFsyLCAzN10sIDgwOiBbMiwgMzddLCA4MTogWzIsIDM3XSwgODI6IFsyLCAzN10sIDgzOiBbMiwgMzddLCA4NDogWzIsIDM3XSwgODU6IFsyLCAzN10gfSwgeyAyMzogWzIsIDM4XSwgMzM6IFsyLCAzOF0sIDU0OiBbMiwgMzhdLCA2NTogWzIsIDM4XSwgNjg6IFsyLCAzOF0sIDcyOiBbMiwgMzhdLCA3NTogWzIsIDM4XSwgODA6IFsyLCAzOF0sIDgxOiBbMiwgMzhdLCA4MjogWzIsIDM4XSwgODM6IFsyLCAzOF0sIDg0OiBbMiwgMzhdLCA4NTogWzIsIDM4XSB9LCB7IDIzOiBbMiwgMzldLCAzMzogWzIsIDM5XSwgNTQ6IFsyLCAzOV0sIDY1OiBbMiwgMzldLCA2ODogWzIsIDM5XSwgNzI6IFsyLCAzOV0sIDc1OiBbMiwgMzldLCA4MDogWzIsIDM5XSwgODE6IFsyLCAzOV0sIDgyOiBbMiwgMzldLCA4MzogWzIsIDM5XSwgODQ6IFsyLCAzOV0sIDg1OiBbMiwgMzldIH0sIHsgMjM6IFsyLCA0M10sIDMzOiBbMiwgNDNdLCA1NDogWzIsIDQzXSwgNjU6IFsyLCA0M10sIDY4OiBbMiwgNDNdLCA3MjogWzIsIDQzXSwgNzU6IFsyLCA0M10sIDgwOiBbMiwgNDNdLCA4MTogWzIsIDQzXSwgODI6IFsyLCA0M10sIDgzOiBbMiwgNDNdLCA4NDogWzIsIDQzXSwgODU6IFsyLCA0M10sIDg3OiBbMSwgNTBdIH0sIHsgNzI6IFsxLCAzNV0sIDg2OiA1MSB9LCB7IDIzOiBbMiwgNDVdLCAzMzogWzIsIDQ1XSwgNTQ6IFsyLCA0NV0sIDY1OiBbMiwgNDVdLCA2ODogWzIsIDQ1XSwgNzI6IFsyLCA0NV0sIDc1OiBbMiwgNDVdLCA4MDogWzIsIDQ1XSwgODE6IFsyLCA0NV0sIDgyOiBbMiwgNDVdLCA4MzogWzIsIDQ1XSwgODQ6IFsyLCA0NV0sIDg1OiBbMiwgNDVdLCA4NzogWzIsIDQ1XSB9LCB7IDUyOiA1MiwgNTQ6IFsyLCA4Ml0sIDY1OiBbMiwgODJdLCA3MjogWzIsIDgyXSwgODA6IFsyLCA4Ml0sIDgxOiBbMiwgODJdLCA4MjogWzIsIDgyXSwgODM6IFsyLCA4Ml0sIDg0OiBbMiwgODJdLCA4NTogWzIsIDgyXSB9LCB7IDI1OiA1MywgMzg6IDU1LCAzOTogWzEsIDU3XSwgNDM6IDU2LCA0NDogWzEsIDU4XSwgNDU6IDU0LCA0NzogWzIsIDU0XSB9LCB7IDI4OiA1OSwgNDM6IDYwLCA0NDogWzEsIDU4XSwgNDc6IFsyLCA1Nl0gfSwgeyAxMzogNjIsIDE1OiBbMSwgMjBdLCAxODogWzEsIDYxXSB9LCB7IDMzOiBbMiwgODZdLCA1NzogNjMsIDY1OiBbMiwgODZdLCA3MjogWzIsIDg2XSwgODA6IFsyLCA4Nl0sIDgxOiBbMiwgODZdLCA4MjogWzIsIDg2XSwgODM6IFsyLCA4Nl0sIDg0OiBbMiwgODZdLCA4NTogWzIsIDg2XSB9LCB7IDMzOiBbMiwgNDBdLCA2NTogWzIsIDQwXSwgNzI6IFsyLCA0MF0sIDgwOiBbMiwgNDBdLCA4MTogWzIsIDQwXSwgODI6IFsyLCA0MF0sIDgzOiBbMiwgNDBdLCA4NDogWzIsIDQwXSwgODU6IFsyLCA0MF0gfSwgeyAzMzogWzIsIDQxXSwgNjU6IFsyLCA0MV0sIDcyOiBbMiwgNDFdLCA4MDogWzIsIDQxXSwgODE6IFsyLCA0MV0sIDgyOiBbMiwgNDFdLCA4MzogWzIsIDQxXSwgODQ6IFsyLCA0MV0sIDg1OiBbMiwgNDFdIH0sIHsgMjA6IDY0LCA3MjogWzEsIDM1XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDI2OiA2NSwgNDc6IFsxLCA2Nl0gfSwgeyAzMDogNjcsIDMzOiBbMiwgNThdLCA2NTogWzIsIDU4XSwgNzI6IFsyLCA1OF0sIDc1OiBbMiwgNThdLCA4MDogWzIsIDU4XSwgODE6IFsyLCA1OF0sIDgyOiBbMiwgNThdLCA4MzogWzIsIDU4XSwgODQ6IFsyLCA1OF0sIDg1OiBbMiwgNThdIH0sIHsgMzM6IFsyLCA2NF0sIDM1OiA2OCwgNjU6IFsyLCA2NF0sIDcyOiBbMiwgNjRdLCA3NTogWzIsIDY0XSwgODA6IFsyLCA2NF0sIDgxOiBbMiwgNjRdLCA4MjogWzIsIDY0XSwgODM6IFsyLCA2NF0sIDg0OiBbMiwgNjRdLCA4NTogWzIsIDY0XSB9LCB7IDIxOiA2OSwgMjM6IFsyLCA1MF0sIDY1OiBbMiwgNTBdLCA3MjogWzIsIDUwXSwgODA6IFsyLCA1MF0sIDgxOiBbMiwgNTBdLCA4MjogWzIsIDUwXSwgODM6IFsyLCA1MF0sIDg0OiBbMiwgNTBdLCA4NTogWzIsIDUwXSB9LCB7IDMzOiBbMiwgOTBdLCA2MTogNzAsIDY1OiBbMiwgOTBdLCA3MjogWzIsIDkwXSwgODA6IFsyLCA5MF0sIDgxOiBbMiwgOTBdLCA4MjogWzIsIDkwXSwgODM6IFsyLCA5MF0sIDg0OiBbMiwgOTBdLCA4NTogWzIsIDkwXSB9LCB7IDIwOiA3NCwgMzM6IFsyLCA4MF0sIDUwOiA3MSwgNjM6IDcyLCA2NDogNzUsIDY1OiBbMSwgNDNdLCA2OTogNzMsIDcwOiA3NiwgNzE6IDc3LCA3MjogWzEsIDc4XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDcyOiBbMSwgNzldIH0sIHsgMjM6IFsyLCA0Ml0sIDMzOiBbMiwgNDJdLCA1NDogWzIsIDQyXSwgNjU6IFsyLCA0Ml0sIDY4OiBbMiwgNDJdLCA3MjogWzIsIDQyXSwgNzU6IFsyLCA0Ml0sIDgwOiBbMiwgNDJdLCA4MTogWzIsIDQyXSwgODI6IFsyLCA0Ml0sIDgzOiBbMiwgNDJdLCA4NDogWzIsIDQyXSwgODU6IFsyLCA0Ml0sIDg3OiBbMSwgNTBdIH0sIHsgMjA6IDc0LCA1MzogODAsIDU0OiBbMiwgODRdLCA2MzogODEsIDY0OiA3NSwgNjU6IFsxLCA0M10sIDY5OiA4MiwgNzA6IDc2LCA3MTogNzcsIDcyOiBbMSwgNzhdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgMjY6IDgzLCA0NzogWzEsIDY2XSB9LCB7IDQ3OiBbMiwgNTVdIH0sIHsgNDogODQsIDY6IDMsIDE0OiBbMiwgNDZdLCAxNTogWzIsIDQ2XSwgMTk6IFsyLCA0Nl0sIDI5OiBbMiwgNDZdLCAzNDogWzIsIDQ2XSwgMzk6IFsyLCA0Nl0sIDQ0OiBbMiwgNDZdLCA0NzogWzIsIDQ2XSwgNDg6IFsyLCA0Nl0sIDUxOiBbMiwgNDZdLCA1NTogWzIsIDQ2XSwgNjA6IFsyLCA0Nl0gfSwgeyA0NzogWzIsIDIwXSB9LCB7IDIwOiA4NSwgNzI6IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyA0OiA4NiwgNjogMywgMTQ6IFsyLCA0Nl0sIDE1OiBbMiwgNDZdLCAxOTogWzIsIDQ2XSwgMjk6IFsyLCA0Nl0sIDM0OiBbMiwgNDZdLCA0NzogWzIsIDQ2XSwgNDg6IFsyLCA0Nl0sIDUxOiBbMiwgNDZdLCA1NTogWzIsIDQ2XSwgNjA6IFsyLCA0Nl0gfSwgeyAyNjogODcsIDQ3OiBbMSwgNjZdIH0sIHsgNDc6IFsyLCA1N10gfSwgeyA1OiBbMiwgMTFdLCAxNDogWzIsIDExXSwgMTU6IFsyLCAxMV0sIDE5OiBbMiwgMTFdLCAyOTogWzIsIDExXSwgMzQ6IFsyLCAxMV0sIDM5OiBbMiwgMTFdLCA0NDogWzIsIDExXSwgNDc6IFsyLCAxMV0sIDQ4OiBbMiwgMTFdLCA1MTogWzIsIDExXSwgNTU6IFsyLCAxMV0sIDYwOiBbMiwgMTFdIH0sIHsgMTU6IFsyLCA0OV0sIDE4OiBbMiwgNDldIH0sIHsgMjA6IDc0LCAzMzogWzIsIDg4XSwgNTg6IDg4LCA2MzogODksIDY0OiA3NSwgNjU6IFsxLCA0M10sIDY5OiA5MCwgNzA6IDc2LCA3MTogNzcsIDcyOiBbMSwgNzhdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgNjU6IFsyLCA5NF0sIDY2OiA5MSwgNjg6IFsyLCA5NF0sIDcyOiBbMiwgOTRdLCA4MDogWzIsIDk0XSwgODE6IFsyLCA5NF0sIDgyOiBbMiwgOTRdLCA4MzogWzIsIDk0XSwgODQ6IFsyLCA5NF0sIDg1OiBbMiwgOTRdIH0sIHsgNTogWzIsIDI1XSwgMTQ6IFsyLCAyNV0sIDE1OiBbMiwgMjVdLCAxOTogWzIsIDI1XSwgMjk6IFsyLCAyNV0sIDM0OiBbMiwgMjVdLCAzOTogWzIsIDI1XSwgNDQ6IFsyLCAyNV0sIDQ3OiBbMiwgMjVdLCA0ODogWzIsIDI1XSwgNTE6IFsyLCAyNV0sIDU1OiBbMiwgMjVdLCA2MDogWzIsIDI1XSB9LCB7IDIwOiA5MiwgNzI6IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyAyMDogNzQsIDMxOiA5MywgMzM6IFsyLCA2MF0sIDYzOiA5NCwgNjQ6IDc1LCA2NTogWzEsIDQzXSwgNjk6IDk1LCA3MDogNzYsIDcxOiA3NywgNzI6IFsxLCA3OF0sIDc1OiBbMiwgNjBdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgMjA6IDc0LCAzMzogWzIsIDY2XSwgMzY6IDk2LCA2MzogOTcsIDY0OiA3NSwgNjU6IFsxLCA0M10sIDY5OiA5OCwgNzA6IDc2LCA3MTogNzcsIDcyOiBbMSwgNzhdLCA3NTogWzIsIDY2XSwgNzg6IDI2LCA3OTogMjcsIDgwOiBbMSwgMjhdLCA4MTogWzEsIDI5XSwgODI6IFsxLCAzMF0sIDgzOiBbMSwgMzFdLCA4NDogWzEsIDMyXSwgODU6IFsxLCAzNF0sIDg2OiAzMyB9LCB7IDIwOiA3NCwgMjI6IDk5LCAyMzogWzIsIDUyXSwgNjM6IDEwMCwgNjQ6IDc1LCA2NTogWzEsIDQzXSwgNjk6IDEwMSwgNzA6IDc2LCA3MTogNzcsIDcyOiBbMSwgNzhdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgMjA6IDc0LCAzMzogWzIsIDkyXSwgNjI6IDEwMiwgNjM6IDEwMywgNjQ6IDc1LCA2NTogWzEsIDQzXSwgNjk6IDEwNCwgNzA6IDc2LCA3MTogNzcsIDcyOiBbMSwgNzhdLCA3ODogMjYsIDc5OiAyNywgODA6IFsxLCAyOF0sIDgxOiBbMSwgMjldLCA4MjogWzEsIDMwXSwgODM6IFsxLCAzMV0sIDg0OiBbMSwgMzJdLCA4NTogWzEsIDM0XSwgODY6IDMzIH0sIHsgMzM6IFsxLCAxMDVdIH0sIHsgMzM6IFsyLCA3OV0sIDY1OiBbMiwgNzldLCA3MjogWzIsIDc5XSwgODA6IFsyLCA3OV0sIDgxOiBbMiwgNzldLCA4MjogWzIsIDc5XSwgODM6IFsyLCA3OV0sIDg0OiBbMiwgNzldLCA4NTogWzIsIDc5XSB9LCB7IDMzOiBbMiwgODFdIH0sIHsgMjM6IFsyLCAyN10sIDMzOiBbMiwgMjddLCA1NDogWzIsIDI3XSwgNjU6IFsyLCAyN10sIDY4OiBbMiwgMjddLCA3MjogWzIsIDI3XSwgNzU6IFsyLCAyN10sIDgwOiBbMiwgMjddLCA4MTogWzIsIDI3XSwgODI6IFsyLCAyN10sIDgzOiBbMiwgMjddLCA4NDogWzIsIDI3XSwgODU6IFsyLCAyN10gfSwgeyAyMzogWzIsIDI4XSwgMzM6IFsyLCAyOF0sIDU0OiBbMiwgMjhdLCA2NTogWzIsIDI4XSwgNjg6IFsyLCAyOF0sIDcyOiBbMiwgMjhdLCA3NTogWzIsIDI4XSwgODA6IFsyLCAyOF0sIDgxOiBbMiwgMjhdLCA4MjogWzIsIDI4XSwgODM6IFsyLCAyOF0sIDg0OiBbMiwgMjhdLCA4NTogWzIsIDI4XSB9LCB7IDIzOiBbMiwgMzBdLCAzMzogWzIsIDMwXSwgNTQ6IFsyLCAzMF0sIDY4OiBbMiwgMzBdLCA3MTogMTA2LCA3MjogWzEsIDEwN10sIDc1OiBbMiwgMzBdIH0sIHsgMjM6IFsyLCA5OF0sIDMzOiBbMiwgOThdLCA1NDogWzIsIDk4XSwgNjg6IFsyLCA5OF0sIDcyOiBbMiwgOThdLCA3NTogWzIsIDk4XSB9LCB7IDIzOiBbMiwgNDVdLCAzMzogWzIsIDQ1XSwgNTQ6IFsyLCA0NV0sIDY1OiBbMiwgNDVdLCA2ODogWzIsIDQ1XSwgNzI6IFsyLCA0NV0sIDczOiBbMSwgMTA4XSwgNzU6IFsyLCA0NV0sIDgwOiBbMiwgNDVdLCA4MTogWzIsIDQ1XSwgODI6IFsyLCA0NV0sIDgzOiBbMiwgNDVdLCA4NDogWzIsIDQ1XSwgODU6IFsyLCA0NV0sIDg3OiBbMiwgNDVdIH0sIHsgMjM6IFsyLCA0NF0sIDMzOiBbMiwgNDRdLCA1NDogWzIsIDQ0XSwgNjU6IFsyLCA0NF0sIDY4OiBbMiwgNDRdLCA3MjogWzIsIDQ0XSwgNzU6IFsyLCA0NF0sIDgwOiBbMiwgNDRdLCA4MTogWzIsIDQ0XSwgODI6IFsyLCA0NF0sIDgzOiBbMiwgNDRdLCA4NDogWzIsIDQ0XSwgODU6IFsyLCA0NF0sIDg3OiBbMiwgNDRdIH0sIHsgNTQ6IFsxLCAxMDldIH0sIHsgNTQ6IFsyLCA4M10sIDY1OiBbMiwgODNdLCA3MjogWzIsIDgzXSwgODA6IFsyLCA4M10sIDgxOiBbMiwgODNdLCA4MjogWzIsIDgzXSwgODM6IFsyLCA4M10sIDg0OiBbMiwgODNdLCA4NTogWzIsIDgzXSB9LCB7IDU0OiBbMiwgODVdIH0sIHsgNTogWzIsIDEzXSwgMTQ6IFsyLCAxM10sIDE1OiBbMiwgMTNdLCAxOTogWzIsIDEzXSwgMjk6IFsyLCAxM10sIDM0OiBbMiwgMTNdLCAzOTogWzIsIDEzXSwgNDQ6IFsyLCAxM10sIDQ3OiBbMiwgMTNdLCA0ODogWzIsIDEzXSwgNTE6IFsyLCAxM10sIDU1OiBbMiwgMTNdLCA2MDogWzIsIDEzXSB9LCB7IDM4OiA1NSwgMzk6IFsxLCA1N10sIDQzOiA1NiwgNDQ6IFsxLCA1OF0sIDQ1OiAxMTEsIDQ2OiAxMTAsIDQ3OiBbMiwgNzZdIH0sIHsgMzM6IFsyLCA3MF0sIDQwOiAxMTIsIDY1OiBbMiwgNzBdLCA3MjogWzIsIDcwXSwgNzU6IFsyLCA3MF0sIDgwOiBbMiwgNzBdLCA4MTogWzIsIDcwXSwgODI6IFsyLCA3MF0sIDgzOiBbMiwgNzBdLCA4NDogWzIsIDcwXSwgODU6IFsyLCA3MF0gfSwgeyA0NzogWzIsIDE4XSB9LCB7IDU6IFsyLCAxNF0sIDE0OiBbMiwgMTRdLCAxNTogWzIsIDE0XSwgMTk6IFsyLCAxNF0sIDI5OiBbMiwgMTRdLCAzNDogWzIsIDE0XSwgMzk6IFsyLCAxNF0sIDQ0OiBbMiwgMTRdLCA0NzogWzIsIDE0XSwgNDg6IFsyLCAxNF0sIDUxOiBbMiwgMTRdLCA1NTogWzIsIDE0XSwgNjA6IFsyLCAxNF0gfSwgeyAzMzogWzEsIDExM10gfSwgeyAzMzogWzIsIDg3XSwgNjU6IFsyLCA4N10sIDcyOiBbMiwgODddLCA4MDogWzIsIDg3XSwgODE6IFsyLCA4N10sIDgyOiBbMiwgODddLCA4MzogWzIsIDg3XSwgODQ6IFsyLCA4N10sIDg1OiBbMiwgODddIH0sIHsgMzM6IFsyLCA4OV0gfSwgeyAyMDogNzQsIDYzOiAxMTUsIDY0OiA3NSwgNjU6IFsxLCA0M10sIDY3OiAxMTQsIDY4OiBbMiwgOTZdLCA2OTogMTE2LCA3MDogNzYsIDcxOiA3NywgNzI6IFsxLCA3OF0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyAzMzogWzEsIDExN10gfSwgeyAzMjogMTE4LCAzMzogWzIsIDYyXSwgNzQ6IDExOSwgNzU6IFsxLCAxMjBdIH0sIHsgMzM6IFsyLCA1OV0sIDY1OiBbMiwgNTldLCA3MjogWzIsIDU5XSwgNzU6IFsyLCA1OV0sIDgwOiBbMiwgNTldLCA4MTogWzIsIDU5XSwgODI6IFsyLCA1OV0sIDgzOiBbMiwgNTldLCA4NDogWzIsIDU5XSwgODU6IFsyLCA1OV0gfSwgeyAzMzogWzIsIDYxXSwgNzU6IFsyLCA2MV0gfSwgeyAzMzogWzIsIDY4XSwgMzc6IDEyMSwgNzQ6IDEyMiwgNzU6IFsxLCAxMjBdIH0sIHsgMzM6IFsyLCA2NV0sIDY1OiBbMiwgNjVdLCA3MjogWzIsIDY1XSwgNzU6IFsyLCA2NV0sIDgwOiBbMiwgNjVdLCA4MTogWzIsIDY1XSwgODI6IFsyLCA2NV0sIDgzOiBbMiwgNjVdLCA4NDogWzIsIDY1XSwgODU6IFsyLCA2NV0gfSwgeyAzMzogWzIsIDY3XSwgNzU6IFsyLCA2N10gfSwgeyAyMzogWzEsIDEyM10gfSwgeyAyMzogWzIsIDUxXSwgNjU6IFsyLCA1MV0sIDcyOiBbMiwgNTFdLCA4MDogWzIsIDUxXSwgODE6IFsyLCA1MV0sIDgyOiBbMiwgNTFdLCA4MzogWzIsIDUxXSwgODQ6IFsyLCA1MV0sIDg1OiBbMiwgNTFdIH0sIHsgMjM6IFsyLCA1M10gfSwgeyAzMzogWzEsIDEyNF0gfSwgeyAzMzogWzIsIDkxXSwgNjU6IFsyLCA5MV0sIDcyOiBbMiwgOTFdLCA4MDogWzIsIDkxXSwgODE6IFsyLCA5MV0sIDgyOiBbMiwgOTFdLCA4MzogWzIsIDkxXSwgODQ6IFsyLCA5MV0sIDg1OiBbMiwgOTFdIH0sIHsgMzM6IFsyLCA5M10gfSwgeyA1OiBbMiwgMjJdLCAxNDogWzIsIDIyXSwgMTU6IFsyLCAyMl0sIDE5OiBbMiwgMjJdLCAyOTogWzIsIDIyXSwgMzQ6IFsyLCAyMl0sIDM5OiBbMiwgMjJdLCA0NDogWzIsIDIyXSwgNDc6IFsyLCAyMl0sIDQ4OiBbMiwgMjJdLCA1MTogWzIsIDIyXSwgNTU6IFsyLCAyMl0sIDYwOiBbMiwgMjJdIH0sIHsgMjM6IFsyLCA5OV0sIDMzOiBbMiwgOTldLCA1NDogWzIsIDk5XSwgNjg6IFsyLCA5OV0sIDcyOiBbMiwgOTldLCA3NTogWzIsIDk5XSB9LCB7IDczOiBbMSwgMTA4XSB9LCB7IDIwOiA3NCwgNjM6IDEyNSwgNjQ6IDc1LCA2NTogWzEsIDQzXSwgNzI6IFsxLCAzNV0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyA1OiBbMiwgMjNdLCAxNDogWzIsIDIzXSwgMTU6IFsyLCAyM10sIDE5OiBbMiwgMjNdLCAyOTogWzIsIDIzXSwgMzQ6IFsyLCAyM10sIDM5OiBbMiwgMjNdLCA0NDogWzIsIDIzXSwgNDc6IFsyLCAyM10sIDQ4OiBbMiwgMjNdLCA1MTogWzIsIDIzXSwgNTU6IFsyLCAyM10sIDYwOiBbMiwgMjNdIH0sIHsgNDc6IFsyLCAxOV0gfSwgeyA0NzogWzIsIDc3XSB9LCB7IDIwOiA3NCwgMzM6IFsyLCA3Ml0sIDQxOiAxMjYsIDYzOiAxMjcsIDY0OiA3NSwgNjU6IFsxLCA0M10sIDY5OiAxMjgsIDcwOiA3NiwgNzE6IDc3LCA3MjogWzEsIDc4XSwgNzU6IFsyLCA3Ml0sIDc4OiAyNiwgNzk6IDI3LCA4MDogWzEsIDI4XSwgODE6IFsxLCAyOV0sIDgyOiBbMSwgMzBdLCA4MzogWzEsIDMxXSwgODQ6IFsxLCAzMl0sIDg1OiBbMSwgMzRdLCA4NjogMzMgfSwgeyA1OiBbMiwgMjRdLCAxNDogWzIsIDI0XSwgMTU6IFsyLCAyNF0sIDE5OiBbMiwgMjRdLCAyOTogWzIsIDI0XSwgMzQ6IFsyLCAyNF0sIDM5OiBbMiwgMjRdLCA0NDogWzIsIDI0XSwgNDc6IFsyLCAyNF0sIDQ4OiBbMiwgMjRdLCA1MTogWzIsIDI0XSwgNTU6IFsyLCAyNF0sIDYwOiBbMiwgMjRdIH0sIHsgNjg6IFsxLCAxMjldIH0sIHsgNjU6IFsyLCA5NV0sIDY4OiBbMiwgOTVdLCA3MjogWzIsIDk1XSwgODA6IFsyLCA5NV0sIDgxOiBbMiwgOTVdLCA4MjogWzIsIDk1XSwgODM6IFsyLCA5NV0sIDg0OiBbMiwgOTVdLCA4NTogWzIsIDk1XSB9LCB7IDY4OiBbMiwgOTddIH0sIHsgNTogWzIsIDIxXSwgMTQ6IFsyLCAyMV0sIDE1OiBbMiwgMjFdLCAxOTogWzIsIDIxXSwgMjk6IFsyLCAyMV0sIDM0OiBbMiwgMjFdLCAzOTogWzIsIDIxXSwgNDQ6IFsyLCAyMV0sIDQ3OiBbMiwgMjFdLCA0ODogWzIsIDIxXSwgNTE6IFsyLCAyMV0sIDU1OiBbMiwgMjFdLCA2MDogWzIsIDIxXSB9LCB7IDMzOiBbMSwgMTMwXSB9LCB7IDMzOiBbMiwgNjNdIH0sIHsgNzI6IFsxLCAxMzJdLCA3NjogMTMxIH0sIHsgMzM6IFsxLCAxMzNdIH0sIHsgMzM6IFsyLCA2OV0gfSwgeyAxNTogWzIsIDEyXSwgMTg6IFsyLCAxMl0gfSwgeyAxNDogWzIsIDI2XSwgMTU6IFsyLCAyNl0sIDE5OiBbMiwgMjZdLCAyOTogWzIsIDI2XSwgMzQ6IFsyLCAyNl0sIDQ3OiBbMiwgMjZdLCA0ODogWzIsIDI2XSwgNTE6IFsyLCAyNl0sIDU1OiBbMiwgMjZdLCA2MDogWzIsIDI2XSB9LCB7IDIzOiBbMiwgMzFdLCAzMzogWzIsIDMxXSwgNTQ6IFsyLCAzMV0sIDY4OiBbMiwgMzFdLCA3MjogWzIsIDMxXSwgNzU6IFsyLCAzMV0gfSwgeyAzMzogWzIsIDc0XSwgNDI6IDEzNCwgNzQ6IDEzNSwgNzU6IFsxLCAxMjBdIH0sIHsgMzM6IFsyLCA3MV0sIDY1OiBbMiwgNzFdLCA3MjogWzIsIDcxXSwgNzU6IFsyLCA3MV0sIDgwOiBbMiwgNzFdLCA4MTogWzIsIDcxXSwgODI6IFsyLCA3MV0sIDgzOiBbMiwgNzFdLCA4NDogWzIsIDcxXSwgODU6IFsyLCA3MV0gfSwgeyAzMzogWzIsIDczXSwgNzU6IFsyLCA3M10gfSwgeyAyMzogWzIsIDI5XSwgMzM6IFsyLCAyOV0sIDU0OiBbMiwgMjldLCA2NTogWzIsIDI5XSwgNjg6IFsyLCAyOV0sIDcyOiBbMiwgMjldLCA3NTogWzIsIDI5XSwgODA6IFsyLCAyOV0sIDgxOiBbMiwgMjldLCA4MjogWzIsIDI5XSwgODM6IFsyLCAyOV0sIDg0OiBbMiwgMjldLCA4NTogWzIsIDI5XSB9LCB7IDE0OiBbMiwgMTVdLCAxNTogWzIsIDE1XSwgMTk6IFsyLCAxNV0sIDI5OiBbMiwgMTVdLCAzNDogWzIsIDE1XSwgMzk6IFsyLCAxNV0sIDQ0OiBbMiwgMTVdLCA0NzogWzIsIDE1XSwgNDg6IFsyLCAxNV0sIDUxOiBbMiwgMTVdLCA1NTogWzIsIDE1XSwgNjA6IFsyLCAxNV0gfSwgeyA3MjogWzEsIDEzN10sIDc3OiBbMSwgMTM2XSB9LCB7IDcyOiBbMiwgMTAwXSwgNzc6IFsyLCAxMDBdIH0sIHsgMTQ6IFsyLCAxNl0sIDE1OiBbMiwgMTZdLCAxOTogWzIsIDE2XSwgMjk6IFsyLCAxNl0sIDM0OiBbMiwgMTZdLCA0NDogWzIsIDE2XSwgNDc6IFsyLCAxNl0sIDQ4OiBbMiwgMTZdLCA1MTogWzIsIDE2XSwgNTU6IFsyLCAxNl0sIDYwOiBbMiwgMTZdIH0sIHsgMzM6IFsxLCAxMzhdIH0sIHsgMzM6IFsyLCA3NV0gfSwgeyAzMzogWzIsIDMyXSB9LCB7IDcyOiBbMiwgMTAxXSwgNzc6IFsyLCAxMDFdIH0sIHsgMTQ6IFsyLCAxN10sIDE1OiBbMiwgMTddLCAxOTogWzIsIDE3XSwgMjk6IFsyLCAxN10sIDM0OiBbMiwgMTddLCAzOTogWzIsIDE3XSwgNDQ6IFsyLCAxN10sIDQ3OiBbMiwgMTddLCA0ODogWzIsIDE3XSwgNTE6IFsyLCAxN10sIDU1OiBbMiwgMTddLCA2MDogWzIsIDE3XSB9XSxcbiAgICAgICAgZGVmYXVsdEFjdGlvbnM6IHsgNDogWzIsIDFdLCA1NDogWzIsIDU1XSwgNTY6IFsyLCAyMF0sIDYwOiBbMiwgNTddLCA3MzogWzIsIDgxXSwgODI6IFsyLCA4NV0sIDg2OiBbMiwgMThdLCA5MDogWzIsIDg5XSwgMTAxOiBbMiwgNTNdLCAxMDQ6IFsyLCA5M10sIDExMDogWzIsIDE5XSwgMTExOiBbMiwgNzddLCAxMTY6IFsyLCA5N10sIDExOTogWzIsIDYzXSwgMTIyOiBbMiwgNjldLCAxMzU6IFsyLCA3NV0sIDEzNjogWzIsIDMyXSB9LFxuICAgICAgICBwYXJzZUVycm9yOiBmdW5jdGlvbiBwYXJzZUVycm9yKHN0ciwgaGFzaCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHN0cik7XG4gICAgICAgIH0sXG4gICAgICAgIHBhcnNlOiBmdW5jdGlvbiBwYXJzZShpbnB1dCkge1xuICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzLFxuICAgICAgICAgICAgICAgIHN0YWNrID0gWzBdLFxuICAgICAgICAgICAgICAgIHZzdGFjayA9IFtudWxsXSxcbiAgICAgICAgICAgICAgICBsc3RhY2sgPSBbXSxcbiAgICAgICAgICAgICAgICB0YWJsZSA9IHRoaXMudGFibGUsXG4gICAgICAgICAgICAgICAgeXl0ZXh0ID0gXCJcIixcbiAgICAgICAgICAgICAgICB5eWxpbmVubyA9IDAsXG4gICAgICAgICAgICAgICAgeXlsZW5nID0gMCxcbiAgICAgICAgICAgICAgICByZWNvdmVyaW5nID0gMCxcbiAgICAgICAgICAgICAgICBURVJST1IgPSAyLFxuICAgICAgICAgICAgICAgIEVPRiA9IDE7XG4gICAgICAgICAgICB0aGlzLmxleGVyLnNldElucHV0KGlucHV0KTtcbiAgICAgICAgICAgIHRoaXMubGV4ZXIueXkgPSB0aGlzLnl5O1xuICAgICAgICAgICAgdGhpcy55eS5sZXhlciA9IHRoaXMubGV4ZXI7XG4gICAgICAgICAgICB0aGlzLnl5LnBhcnNlciA9IHRoaXM7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMubGV4ZXIueXlsbG9jID09IFwidW5kZWZpbmVkXCIpIHRoaXMubGV4ZXIueXlsbG9jID0ge307XG4gICAgICAgICAgICB2YXIgeXlsb2MgPSB0aGlzLmxleGVyLnl5bGxvYztcbiAgICAgICAgICAgIGxzdGFjay5wdXNoKHl5bG9jKTtcbiAgICAgICAgICAgIHZhciByYW5nZXMgPSB0aGlzLmxleGVyLm9wdGlvbnMgJiYgdGhpcy5sZXhlci5vcHRpb25zLnJhbmdlcztcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy55eS5wYXJzZUVycm9yID09PSBcImZ1bmN0aW9uXCIpIHRoaXMucGFyc2VFcnJvciA9IHRoaXMueXkucGFyc2VFcnJvcjtcbiAgICAgICAgICAgIGZ1bmN0aW9uIHBvcFN0YWNrKG4pIHtcbiAgICAgICAgICAgICAgICBzdGFjay5sZW5ndGggPSBzdGFjay5sZW5ndGggLSAyICogbjtcbiAgICAgICAgICAgICAgICB2c3RhY2subGVuZ3RoID0gdnN0YWNrLmxlbmd0aCAtIG47XG4gICAgICAgICAgICAgICAgbHN0YWNrLmxlbmd0aCA9IGxzdGFjay5sZW5ndGggLSBuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZnVuY3Rpb24gbGV4KCkge1xuICAgICAgICAgICAgICAgIHZhciB0b2tlbjtcbiAgICAgICAgICAgICAgICB0b2tlbiA9IHNlbGYubGV4ZXIubGV4KCkgfHwgMTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRva2VuICE9PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHRva2VuID0gc2VsZi5zeW1ib2xzX1t0b2tlbl0gfHwgdG9rZW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBzeW1ib2wsXG4gICAgICAgICAgICAgICAgcHJlRXJyb3JTeW1ib2wsXG4gICAgICAgICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgICAgIGEsXG4gICAgICAgICAgICAgICAgcixcbiAgICAgICAgICAgICAgICB5eXZhbCA9IHt9LFxuICAgICAgICAgICAgICAgIHAsXG4gICAgICAgICAgICAgICAgbGVuLFxuICAgICAgICAgICAgICAgIG5ld1N0YXRlLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkO1xuICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICBzdGF0ZSA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRlZmF1bHRBY3Rpb25zW3N0YXRlXSkge1xuICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSB0aGlzLmRlZmF1bHRBY3Rpb25zW3N0YXRlXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3ltYm9sID09PSBudWxsIHx8IHR5cGVvZiBzeW1ib2wgPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9sID0gbGV4KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uID0gdGFibGVbc3RhdGVdICYmIHRhYmxlW3N0YXRlXVtzeW1ib2xdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFjdGlvbiA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhYWN0aW9uLmxlbmd0aCB8fCAhYWN0aW9uWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBlcnJTdHIgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlY292ZXJpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHAgaW4gdGFibGVbc3RhdGVdKSBpZiAodGhpcy50ZXJtaW5hbHNfW3BdICYmIHAgPiAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQucHVzaChcIidcIiArIHRoaXMudGVybWluYWxzX1twXSArIFwiJ1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmxleGVyLnNob3dQb3NpdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyclN0ciA9IFwiUGFyc2UgZXJyb3Igb24gbGluZSBcIiArICh5eWxpbmVubyArIDEpICsgXCI6XFxuXCIgKyB0aGlzLmxleGVyLnNob3dQb3NpdGlvbigpICsgXCJcXG5FeHBlY3RpbmcgXCIgKyBleHBlY3RlZC5qb2luKFwiLCBcIikgKyBcIiwgZ290ICdcIiArICh0aGlzLnRlcm1pbmFsc19bc3ltYm9sXSB8fCBzeW1ib2wpICsgXCInXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyclN0ciA9IFwiUGFyc2UgZXJyb3Igb24gbGluZSBcIiArICh5eWxpbmVubyArIDEpICsgXCI6IFVuZXhwZWN0ZWQgXCIgKyAoc3ltYm9sID09IDEgPyBcImVuZCBvZiBpbnB1dFwiIDogXCInXCIgKyAodGhpcy50ZXJtaW5hbHNfW3N5bWJvbF0gfHwgc3ltYm9sKSArIFwiJ1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFyc2VFcnJvcihlcnJTdHIsIHsgdGV4dDogdGhpcy5sZXhlci5tYXRjaCwgdG9rZW46IHRoaXMudGVybWluYWxzX1tzeW1ib2xdIHx8IHN5bWJvbCwgbGluZTogdGhpcy5sZXhlci55eWxpbmVubywgbG9jOiB5eWxvYywgZXhwZWN0ZWQ6IGV4cGVjdGVkIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChhY3Rpb25bMF0gaW5zdGFuY2VvZiBBcnJheSAmJiBhY3Rpb24ubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQYXJzZSBFcnJvcjogbXVsdGlwbGUgYWN0aW9ucyBwb3NzaWJsZSBhdCBzdGF0ZTogXCIgKyBzdGF0ZSArIFwiLCB0b2tlbjogXCIgKyBzeW1ib2wpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGFjdGlvblswXSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKHN5bWJvbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2c3RhY2sucHVzaCh0aGlzLmxleGVyLnl5dGV4dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsc3RhY2sucHVzaCh0aGlzLmxleGVyLnl5bGxvYyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKGFjdGlvblsxXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2wgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwcmVFcnJvclN5bWJvbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl5bGVuZyA9IHRoaXMubGV4ZXIueXlsZW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl5dGV4dCA9IHRoaXMubGV4ZXIueXl0ZXh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl5bGluZW5vID0gdGhpcy5sZXhlci55eWxpbmVubztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5eWxvYyA9IHRoaXMubGV4ZXIueXlsbG9jO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWNvdmVyaW5nID4gMCkgcmVjb3ZlcmluZy0tO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2wgPSBwcmVFcnJvclN5bWJvbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVFcnJvclN5bWJvbCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gdGhpcy5wcm9kdWN0aW9uc19bYWN0aW9uWzFdXVsxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHl5dmFsLiQgPSB2c3RhY2tbdnN0YWNrLmxlbmd0aCAtIGxlbl07XG4gICAgICAgICAgICAgICAgICAgICAgICB5eXZhbC5fJCA9IHsgZmlyc3RfbGluZTogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAobGVuIHx8IDEpXS5maXJzdF9saW5lLCBsYXN0X2xpbmU6IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ubGFzdF9saW5lLCBmaXJzdF9jb2x1bW46IGxzdGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0uZmlyc3RfY29sdW1uLCBsYXN0X2NvbHVtbjogbHN0YWNrW2xzdGFjay5sZW5ndGggLSAxXS5sYXN0X2NvbHVtbiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJhbmdlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl5dmFsLl8kLnJhbmdlID0gW2xzdGFja1tsc3RhY2subGVuZ3RoIC0gKGxlbiB8fCAxKV0ucmFuZ2VbMF0sIGxzdGFja1tsc3RhY2subGVuZ3RoIC0gMV0ucmFuZ2VbMV1dO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgciA9IHRoaXMucGVyZm9ybUFjdGlvbi5jYWxsKHl5dmFsLCB5eXRleHQsIHl5bGVuZywgeXlsaW5lbm8sIHRoaXMueXksIGFjdGlvblsxXSwgdnN0YWNrLCBsc3RhY2spO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2sgPSBzdGFjay5zbGljZSgwLCAtMSAqIGxlbiAqIDIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZzdGFjayA9IHZzdGFjay5zbGljZSgwLCAtMSAqIGxlbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0YWNrID0gbHN0YWNrLnNsaWNlKDAsIC0xICogbGVuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLnB1c2godGhpcy5wcm9kdWN0aW9uc19bYWN0aW9uWzFdXVswXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2c3RhY2sucHVzaCh5eXZhbC4kKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxzdGFjay5wdXNoKHl5dmFsLl8kKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld1N0YXRlID0gdGFibGVbc3RhY2tbc3RhY2subGVuZ3RoIC0gMl1dW3N0YWNrW3N0YWNrLmxlbmd0aCAtIDFdXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLnB1c2gobmV3U3RhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvKiBKaXNvbiBnZW5lcmF0ZWQgbGV4ZXIgKi9cbiAgICB2YXIgbGV4ZXIgPSAoZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgbGV4ZXIgPSB7IEVPRjogMSxcbiAgICAgICAgICAgIHBhcnNlRXJyb3I6IGZ1bmN0aW9uIHBhcnNlRXJyb3Ioc3RyLCBoYXNoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMueXkucGFyc2VyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMueXkucGFyc2VyLnBhcnNlRXJyb3Ioc3RyLCBoYXNoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Ioc3RyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0SW5wdXQ6IGZ1bmN0aW9uIHNldElucHV0KGlucHV0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5faW5wdXQgPSBpbnB1dDtcbiAgICAgICAgICAgICAgICB0aGlzLl9tb3JlID0gdGhpcy5fbGVzcyA9IHRoaXMuZG9uZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMueXlsaW5lbm8gPSB0aGlzLnl5bGVuZyA9IDA7XG4gICAgICAgICAgICAgICAgdGhpcy55eXRleHQgPSB0aGlzLm1hdGNoZWQgPSB0aGlzLm1hdGNoID0gJyc7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25kaXRpb25TdGFjayA9IFsnSU5JVElBTCddO1xuICAgICAgICAgICAgICAgIHRoaXMueXlsbG9jID0geyBmaXJzdF9saW5lOiAxLCBmaXJzdF9jb2x1bW46IDAsIGxhc3RfbGluZTogMSwgbGFzdF9jb2x1bW46IDAgfTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykgdGhpcy55eWxsb2MucmFuZ2UgPSBbMCwgMF07XG4gICAgICAgICAgICAgICAgdGhpcy5vZmZzZXQgPSAwO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlucHV0OiBmdW5jdGlvbiBpbnB1dCgpIHtcbiAgICAgICAgICAgICAgICB2YXIgY2ggPSB0aGlzLl9pbnB1dFswXTtcbiAgICAgICAgICAgICAgICB0aGlzLnl5dGV4dCArPSBjaDtcbiAgICAgICAgICAgICAgICB0aGlzLnl5bGVuZysrO1xuICAgICAgICAgICAgICAgIHRoaXMub2Zmc2V0Kys7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXRjaCArPSBjaDtcbiAgICAgICAgICAgICAgICB0aGlzLm1hdGNoZWQgKz0gY2g7XG4gICAgICAgICAgICAgICAgdmFyIGxpbmVzID0gY2gubWF0Y2goLyg/Olxcclxcbj98XFxuKS4qL2cpO1xuICAgICAgICAgICAgICAgIGlmIChsaW5lcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnl5bGluZW5vKys7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMueXlsbG9jLmxhc3RfbGluZSsrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMueXlsbG9jLmxhc3RfY29sdW1uKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMucmFuZ2VzKSB0aGlzLnl5bGxvYy5yYW5nZVsxXSsrO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5faW5wdXQgPSB0aGlzLl9pbnB1dC5zbGljZSgxKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2g7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdW5wdXQ6IGZ1bmN0aW9uIHVucHV0KGNoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGxlbiA9IGNoLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB2YXIgbGluZXMgPSBjaC5zcGxpdCgvKD86XFxyXFxuP3xcXG4pL2cpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5faW5wdXQgPSBjaCArIHRoaXMuX2lucHV0O1xuICAgICAgICAgICAgICAgIHRoaXMueXl0ZXh0ID0gdGhpcy55eXRleHQuc3Vic3RyKDAsIHRoaXMueXl0ZXh0Lmxlbmd0aCAtIGxlbiAtIDEpO1xuICAgICAgICAgICAgICAgIC8vdGhpcy55eWxlbmcgLT0gbGVuO1xuICAgICAgICAgICAgICAgIHRoaXMub2Zmc2V0IC09IGxlbjtcbiAgICAgICAgICAgICAgICB2YXIgb2xkTGluZXMgPSB0aGlzLm1hdGNoLnNwbGl0KC8oPzpcXHJcXG4/fFxcbikvZyk7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXRjaCA9IHRoaXMubWF0Y2guc3Vic3RyKDAsIHRoaXMubWF0Y2gubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgICAgICAgdGhpcy5tYXRjaGVkID0gdGhpcy5tYXRjaGVkLnN1YnN0cigwLCB0aGlzLm1hdGNoZWQubGVuZ3RoIC0gMSk7XG5cbiAgICAgICAgICAgICAgICBpZiAobGluZXMubGVuZ3RoIC0gMSkgdGhpcy55eWxpbmVubyAtPSBsaW5lcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgIHZhciByID0gdGhpcy55eWxsb2MucmFuZ2U7XG5cbiAgICAgICAgICAgICAgICB0aGlzLnl5bGxvYyA9IHsgZmlyc3RfbGluZTogdGhpcy55eWxsb2MuZmlyc3RfbGluZSxcbiAgICAgICAgICAgICAgICAgICAgbGFzdF9saW5lOiB0aGlzLnl5bGluZW5vICsgMSxcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RfY29sdW1uOiB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sXG4gICAgICAgICAgICAgICAgICAgIGxhc3RfY29sdW1uOiBsaW5lcyA/IChsaW5lcy5sZW5ndGggPT09IG9sZExpbmVzLmxlbmd0aCA/IHRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbiA6IDApICsgb2xkTGluZXNbb2xkTGluZXMubGVuZ3RoIC0gbGluZXMubGVuZ3RoXS5sZW5ndGggLSBsaW5lc1swXS5sZW5ndGggOiB0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4gLSBsZW5cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYW5nZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2UgPSBbclswXSwgclswXSArIHRoaXMueXlsZW5nIC0gbGVuXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbW9yZTogZnVuY3Rpb24gbW9yZSgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9tb3JlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsZXNzOiBmdW5jdGlvbiBsZXNzKG4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnVucHV0KHRoaXMubWF0Y2guc2xpY2UobikpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHBhc3RJbnB1dDogZnVuY3Rpb24gcGFzdElucHV0KCkge1xuICAgICAgICAgICAgICAgIHZhciBwYXN0ID0gdGhpcy5tYXRjaGVkLnN1YnN0cigwLCB0aGlzLm1hdGNoZWQubGVuZ3RoIC0gdGhpcy5tYXRjaC5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIHJldHVybiAocGFzdC5sZW5ndGggPiAyMCA/ICcuLi4nIDogJycpICsgcGFzdC5zdWJzdHIoLTIwKS5yZXBsYWNlKC9cXG4vZywgXCJcIik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdXBjb21pbmdJbnB1dDogZnVuY3Rpb24gdXBjb21pbmdJbnB1dCgpIHtcbiAgICAgICAgICAgICAgICB2YXIgbmV4dCA9IHRoaXMubWF0Y2g7XG4gICAgICAgICAgICAgICAgaWYgKG5leHQubGVuZ3RoIDwgMjApIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dCArPSB0aGlzLl9pbnB1dC5zdWJzdHIoMCwgMjAgLSBuZXh0Lmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAobmV4dC5zdWJzdHIoMCwgMjApICsgKG5leHQubGVuZ3RoID4gMjAgPyAnLi4uJyA6ICcnKSkucmVwbGFjZSgvXFxuL2csIFwiXCIpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNob3dQb3NpdGlvbjogZnVuY3Rpb24gc2hvd1Bvc2l0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciBwcmUgPSB0aGlzLnBhc3RJbnB1dCgpO1xuICAgICAgICAgICAgICAgIHZhciBjID0gbmV3IEFycmF5KHByZS5sZW5ndGggKyAxKS5qb2luKFwiLVwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJlICsgdGhpcy51cGNvbWluZ0lucHV0KCkgKyBcIlxcblwiICsgYyArIFwiXlwiO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5leHQ6IGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZG9uZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5FT0Y7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5faW5wdXQpIHRoaXMuZG9uZSA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICB2YXIgdG9rZW4sIG1hdGNoLCB0ZW1wTWF0Y2gsIGluZGV4LCBjb2wsIGxpbmVzO1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5fbW9yZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnl5dGV4dCA9ICcnO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hdGNoID0gJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBydWxlcyA9IHRoaXMuX2N1cnJlbnRSdWxlcygpO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcnVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdGVtcE1hdGNoID0gdGhpcy5faW5wdXQubWF0Y2godGhpcy5ydWxlc1tydWxlc1tpXV0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGVtcE1hdGNoICYmICghbWF0Y2ggfHwgdGVtcE1hdGNoWzBdLmxlbmd0aCA+IG1hdGNoWzBdLmxlbmd0aCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gdGVtcE1hdGNoO1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuZmxleCkgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIGxpbmVzID0gbWF0Y2hbMF0ubWF0Y2goLyg/Olxcclxcbj98XFxuKS4qL2cpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobGluZXMpIHRoaXMueXlsaW5lbm8gKz0gbGluZXMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnl5bGxvYyA9IHsgZmlyc3RfbGluZTogdGhpcy55eWxsb2MubGFzdF9saW5lLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF9saW5lOiB0aGlzLnl5bGluZW5vICsgMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0X2NvbHVtbjogdGhpcy55eWxsb2MubGFzdF9jb2x1bW4sXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXN0X2NvbHVtbjogbGluZXMgPyBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS5sZW5ndGggLSBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS5tYXRjaCgvXFxyP1xcbj8vKVswXS5sZW5ndGggOiB0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbiArIG1hdGNoWzBdLmxlbmd0aCB9O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnl5dGV4dCArPSBtYXRjaFswXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaCArPSBtYXRjaFswXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaGVzID0gbWF0Y2g7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMueXlsZW5nID0gdGhpcy55eXRleHQubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhbmdlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy55eWxsb2MucmFuZ2UgPSBbdGhpcy5vZmZzZXQsIHRoaXMub2Zmc2V0ICs9IHRoaXMueXlsZW5nXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tb3JlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2lucHV0ID0gdGhpcy5faW5wdXQuc2xpY2UobWF0Y2hbMF0ubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaGVkICs9IG1hdGNoWzBdO1xuICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMucGVyZm9ybUFjdGlvbi5jYWxsKHRoaXMsIHRoaXMueXksIHRoaXMsIHJ1bGVzW2luZGV4XSwgdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDFdKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZG9uZSAmJiB0aGlzLl9pbnB1dCkgdGhpcy5kb25lID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbikgcmV0dXJuIHRva2VuO2Vsc2UgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5faW5wdXQgPT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuRU9GO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcnNlRXJyb3IoJ0xleGljYWwgZXJyb3Igb24gbGluZSAnICsgKHRoaXMueXlsaW5lbm8gKyAxKSArICcuIFVucmVjb2duaXplZCB0ZXh0LlxcbicgKyB0aGlzLnNob3dQb3NpdGlvbigpLCB7IHRleHQ6IFwiXCIsIHRva2VuOiBudWxsLCBsaW5lOiB0aGlzLnl5bGluZW5vIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsZXg6IGZ1bmN0aW9uIGxleCgpIHtcbiAgICAgICAgICAgICAgICB2YXIgciA9IHRoaXMubmV4dCgpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubGV4KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJlZ2luOiBmdW5jdGlvbiBiZWdpbihjb25kaXRpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmRpdGlvblN0YWNrLnB1c2goY29uZGl0aW9uKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwb3BTdGF0ZTogZnVuY3Rpb24gcG9wU3RhdGUoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2sucG9wKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgX2N1cnJlbnRSdWxlczogZnVuY3Rpb24gX2N1cnJlbnRSdWxlcygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb25kaXRpb25zW3RoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGggLSAxXV0ucnVsZXM7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdG9wU3RhdGU6IGZ1bmN0aW9uIHRvcFN0YXRlKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoIC0gMl07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHVzaFN0YXRlOiBmdW5jdGlvbiBiZWdpbihjb25kaXRpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJlZ2luKGNvbmRpdGlvbik7XG4gICAgICAgICAgICB9IH07XG4gICAgICAgIGxleGVyLm9wdGlvbnMgPSB7fTtcbiAgICAgICAgbGV4ZXIucGVyZm9ybUFjdGlvbiA9IGZ1bmN0aW9uIGFub255bW91cyh5eSwgeXlfLCAkYXZvaWRpbmdfbmFtZV9jb2xsaXNpb25zLCBZWV9TVEFSVCkge1xuXG4gICAgICAgICAgICBmdW5jdGlvbiBzdHJpcChzdGFydCwgZW5kKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHl5Xy55eXRleHQgPSB5eV8ueXl0ZXh0LnN1YnN0cmluZyhzdGFydCwgeXlfLnl5bGVuZyAtIGVuZCArIHN0YXJ0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIFlZU1RBVEUgPSBZWV9TVEFSVDtcbiAgICAgICAgICAgIHN3aXRjaCAoJGF2b2lkaW5nX25hbWVfY29sbGlzaW9ucykge1xuICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKHl5Xy55eXRleHQuc2xpY2UoLTIpID09PSBcIlxcXFxcXFxcXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlwKDAsIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iZWdpbihcIm11XCIpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHl5Xy55eXRleHQuc2xpY2UoLTEpID09PSBcIlxcXFxcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXAoMCwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJlZ2luKFwiZW11XCIpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5iZWdpbihcIm11XCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh5eV8ueXl0ZXh0KSByZXR1cm4gMTU7XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTU7XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJlZ2luKCdyYXcnKTtyZXR1cm4gMTU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICAvLyBTaG91bGQgYmUgdXNpbmcgYHRoaXMudG9wU3RhdGUoKWAgYmVsb3csIGJ1dCBpdCBjdXJyZW50bHlcbiAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJucyB0aGUgc2Vjb25kIHRvcCBpbnN0ZWFkIG9mIHRoZSBmaXJzdCB0b3AuIE9wZW5lZCBhblxuICAgICAgICAgICAgICAgICAgICAvLyBpc3N1ZSBhYm91dCBpdCBhdCBodHRwczovL2dpdGh1Yi5jb20vemFhY2gvamlzb24vaXNzdWVzLzI5MVxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCAtIDFdID09PSAncmF3Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE1O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXAoNSwgOSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ0VORF9SQVdfQkxPQ0snO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTQ7XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gNjU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDY4O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAxOTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJlZ2luKCdyYXcnKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDIzO1xuXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiA1NTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAxMjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDYwO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDEzOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMTQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiA0NztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAxNTpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO3JldHVybiA0NDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAxNjpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BTdGF0ZSgpO3JldHVybiA0NDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAxNzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDM0O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDE4OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMzk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMTk6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiA1MTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAyMDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDQ4O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDIxOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVucHV0KHl5Xy55eXRleHQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmVnaW4oJ2NvbScpO1xuXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMjI6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9wU3RhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE0O1xuXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMjM6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiA0ODtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAyNDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDczO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDI1OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gNzI7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMjY6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiA3MjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAyNzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDg3O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDI4OlxuICAgICAgICAgICAgICAgICAgICAvLyBpZ25vcmUgd2hpdGVzcGFjZVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDI5OlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7cmV0dXJuIDU0O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDMwOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcFN0YXRlKCk7cmV0dXJuIDMzO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDMxOlxuICAgICAgICAgICAgICAgICAgICB5eV8ueXl0ZXh0ID0gc3RyaXAoMSwgMikucmVwbGFjZSgvXFxcXFwiL2csICdcIicpO3JldHVybiA4MDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAzMjpcbiAgICAgICAgICAgICAgICAgICAgeXlfLnl5dGV4dCA9IHN0cmlwKDEsIDIpLnJlcGxhY2UoL1xcXFwnL2csIFwiJ1wiKTtyZXR1cm4gODA7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMzM6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiA4NTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAzNDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDgyO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDM1OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gODI7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMzY6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiA4MztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAzNzpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDg0O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDM4OlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gODE7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMzk6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiA3NTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0MDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDc3O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQxOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gNzI7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDI6XG4gICAgICAgICAgICAgICAgICAgIHl5Xy55eXRleHQgPSB5eV8ueXl0ZXh0LnJlcGxhY2UoL1xcXFwoW1xcXFxcXF1dKS9nLCAnJDEnKTtyZXR1cm4gNzI7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDM6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnSU5WQUxJRCc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNDQ6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiA1O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgbGV4ZXIucnVsZXMgPSBbL14oPzpbXlxceDAwXSo/KD89KFxce1xceykpKS8sIC9eKD86W15cXHgwMF0rKS8sIC9eKD86W15cXHgwMF17Mix9Pyg/PShcXHtcXHt8XFxcXFxce1xce3xcXFxcXFxcXFxce1xce3wkKSkpLywgL14oPzpcXHtcXHtcXHtcXHsoPz1bXlxcL10pKS8sIC9eKD86XFx7XFx7XFx7XFx7XFwvW15cXHMhXCIjJS0sXFwuXFwvOy0+QFxcWy1cXF5gXFx7LX5dKyg/PVs9fVxcc1xcLy5dKVxcfVxcfVxcfVxcfSkvLCAvXig/OlteXFx4MDBdKz8oPz0oXFx7XFx7XFx7XFx7KSkpLywgL14oPzpbXFxzXFxTXSo/LS0ofik/XFx9XFx9KS8sIC9eKD86XFwoKS8sIC9eKD86XFwpKS8sIC9eKD86XFx7XFx7XFx7XFx7KS8sIC9eKD86XFx9XFx9XFx9XFx9KS8sIC9eKD86XFx7XFx7KH4pPz4pLywgL14oPzpcXHtcXHsofik/Iz4pLywgL14oPzpcXHtcXHsofik/I1xcKj8pLywgL14oPzpcXHtcXHsofik/XFwvKS8sIC9eKD86XFx7XFx7KH4pP1xcXlxccyoofik/XFx9XFx9KS8sIC9eKD86XFx7XFx7KH4pP1xccyplbHNlXFxzKih+KT9cXH1cXH0pLywgL14oPzpcXHtcXHsofik/XFxeKS8sIC9eKD86XFx7XFx7KH4pP1xccyplbHNlXFxiKS8sIC9eKD86XFx7XFx7KH4pP1xceykvLCAvXig/Olxce1xceyh+KT8mKS8sIC9eKD86XFx7XFx7KH4pPyEtLSkvLCAvXig/Olxce1xceyh+KT8hW1xcc1xcU10qP1xcfVxcfSkvLCAvXig/Olxce1xceyh+KT9cXCo/KS8sIC9eKD86PSkvLCAvXig/OlxcLlxcLikvLCAvXig/OlxcLig/PShbPX59XFxzXFwvLil8XSkpKS8sIC9eKD86W1xcLy5dKS8sIC9eKD86XFxzKykvLCAvXig/OlxcfSh+KT9cXH1cXH0pLywgL14oPzoofik/XFx9XFx9KS8sIC9eKD86XCIoXFxcXFtcIl18W15cIl0pKlwiKS8sIC9eKD86JyhcXFxcWyddfFteJ10pKicpLywgL14oPzpAKS8sIC9eKD86dHJ1ZSg/PShbfn1cXHMpXSkpKS8sIC9eKD86ZmFsc2UoPz0oW359XFxzKV0pKSkvLCAvXig/OnVuZGVmaW5lZCg/PShbfn1cXHMpXSkpKS8sIC9eKD86bnVsbCg/PShbfn1cXHMpXSkpKS8sIC9eKD86LT9bMC05XSsoPzpcXC5bMC05XSspPyg/PShbfn1cXHMpXSkpKS8sIC9eKD86YXNcXHMrXFx8KS8sIC9eKD86XFx8KS8sIC9eKD86KFteXFxzIVwiIyUtLFxcLlxcLzstPkBcXFstXFxeYFxcey1+XSsoPz0oWz1+fVxcc1xcLy4pfF0pKSkpLywgL14oPzpcXFsoXFxcXFxcXXxbXlxcXV0pKlxcXSkvLCAvXig/Oi4pLywgL14oPzokKS9dO1xuICAgICAgICBsZXhlci5jb25kaXRpb25zID0geyBcIm11XCI6IHsgXCJydWxlc1wiOiBbNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJlbXVcIjogeyBcInJ1bGVzXCI6IFsyXSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJjb21cIjogeyBcInJ1bGVzXCI6IFs2XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJyYXdcIjogeyBcInJ1bGVzXCI6IFszLCA0LCA1XSwgXCJpbmNsdXNpdmVcIjogZmFsc2UgfSwgXCJJTklUSUFMXCI6IHsgXCJydWxlc1wiOiBbMCwgMSwgNDRdLCBcImluY2x1c2l2ZVwiOiB0cnVlIH0gfTtcbiAgICAgICAgcmV0dXJuIGxleGVyO1xuICAgIH0pKCk7XG4gICAgcGFyc2VyLmxleGVyID0gbGV4ZXI7XG4gICAgZnVuY3Rpb24gUGFyc2VyKCkge1xuICAgICAgICB0aGlzLnl5ID0ge307XG4gICAgfVBhcnNlci5wcm90b3R5cGUgPSBwYXJzZXI7cGFyc2VyLlBhcnNlciA9IFBhcnNlcjtcbiAgICByZXR1cm4gbmV3IFBhcnNlcigpO1xufSkoKTtleHBvcnRzW1wiZGVmYXVsdFwiXSA9IGhhbmRsZWJhcnM7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbXCJkZWZhdWx0XCJdO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJOdmJYQnBiR1Z5TDNCaGNuTmxjaTVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN096dEJRVVZCTEVsQlFVa3NWVUZCVlN4SFFVRkhMRU5CUVVNc1dVRkJWVHRCUVVNMVFpeFJRVUZKTEUxQlFVMHNSMEZCUnl4RlFVRkRMRXRCUVVzc1JVRkJSU3hUUVVGVExFdEJRVXNzUjBGQlNTeEZRVUZITzBGQlF6RkRMRlZCUVVVc1JVRkJSU3hGUVVGRk8wRkJRMDRzWjBKQlFWRXNSVUZCUlN4RlFVRkRMRTlCUVU4c1JVRkJReXhEUVVGRExFVkJRVU1zVFVGQlRTeEZRVUZETEVOQlFVTXNSVUZCUXl4VFFVRlRMRVZCUVVNc1EwRkJReXhGUVVGRExFdEJRVXNzUlVGQlF5eERRVUZETEVWQlFVTXNjVUpCUVhGQ0xFVkJRVU1zUTBGQlF5eEZRVUZETEZkQlFWY3NSVUZCUXl4RFFVRkRMRVZCUVVNc1ZVRkJWU3hGUVVGRExFTkJRVU1zUlVGQlF5eFBRVUZQTEVWQlFVTXNRMEZCUXl4RlFVRkRMRlZCUVZVc1JVRkJReXhGUVVGRkxFVkJRVU1zVTBGQlV5eEZRVUZETEVWQlFVVXNSVUZCUXl4alFVRmpMRVZCUVVNc1JVRkJSU3hGUVVGRExGTkJRVk1zUlVGQlF5eEZRVUZGTEVWQlFVTXNVMEZCVXl4RlFVRkRMRVZCUVVVc1JVRkJReXhUUVVGVExFVkJRVU1zUlVGQlJTeEZRVUZETEdOQlFXTXNSVUZCUXl4RlFVRkZMRVZCUVVNc2MwSkJRWE5DTEVWQlFVTXNSVUZCUlN4RlFVRkRMR1ZCUVdVc1JVRkJReXhGUVVGRkxFVkJRVU1zWjBKQlFXZENMRVZCUVVNc1JVRkJSU3hGUVVGRExGbEJRVmtzUlVGQlF5eEZRVUZGTEVWQlFVTXNNRUpCUVRCQ0xFVkJRVU1zUlVGQlJTeEZRVUZETEhOQ1FVRnpRaXhGUVVGRExFVkJRVVVzUlVGQlF5eHBRa0ZCYVVJc1JVRkJReXhGUVVGRkxFVkJRVU1zVjBGQlZ5eEZRVUZETEVWQlFVVXNSVUZCUXl4bFFVRmxMRVZCUVVNc1JVRkJSU3hGUVVGRExGbEJRVmtzUlVGQlF5eEZRVUZGTEVWQlFVTXNZVUZCWVN4RlFVRkRMRVZCUVVVc1JVRkJReXhsUVVGbExFVkJRVU1zUlVGQlJTeEZRVUZETEZsQlFWa3NSVUZCUXl4RlFVRkZMRVZCUVVNc2RVSkJRWFZDTEVWQlFVTXNSVUZCUlN4RlFVRkRMRzFDUVVGdFFpeEZRVUZETEVWQlFVVXNSVUZCUXl4dFFrRkJiVUlzUlVGQlF5eEZRVUZGTEVWQlFVTXNUMEZCVHl4RlFVRkRMRVZCUVVVc1JVRkJReXhqUVVGakxFVkJRVU1zUlVGQlJTeEZRVUZETEhsQ1FVRjVRaXhGUVVGRExFVkJRVVVzUlVGQlF5eHhRa0ZCY1VJc1JVRkJReXhGUVVGRkxFVkJRVU1zY1VKQlFYRkNMRVZCUVVNc1JVRkJSU3hGUVVGRExHdENRVUZyUWl4RlFVRkRMRVZCUVVVc1JVRkJReXh2UWtGQmIwSXNSVUZCUXl4RlFVRkZMRVZCUVVNc09FSkJRVGhDTEVWQlFVTXNSVUZCUlN4RlFVRkRMREJDUVVFd1FpeEZRVUZETEVWQlFVVXNSVUZCUXl3d1FrRkJNRUlzUlVGQlF5eEZRVUZGTEVWQlFVTXNiVUpCUVcxQ0xFVkJRVU1zUlVGQlJTeEZRVUZETEZOQlFWTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1kwRkJZeXhGUVVGRExFVkJRVVVzUlVGQlF5eHpRa0ZCYzBJc1JVRkJReXhGUVVGRkxFVkJRVU1zWlVGQlpTeEZRVUZETEVWQlFVVXNSVUZCUXl4TlFVRk5MRVZCUVVNc1JVRkJSU3hGUVVGRExITkNRVUZ6UWl4RlFVRkRMRVZCUVVVc1JVRkJReXhyUWtGQmEwSXNSVUZCUXl4RlFVRkZMRVZCUVVNc1owSkJRV2RDTEVWQlFVTXNSVUZCUlN4RlFVRkRMSE5DUVVGelFpeEZRVUZETEVWQlFVVXNSVUZCUXl4clFrRkJhMElzUlVGQlF5eEZRVUZGTEVWQlFVTXNhVUpCUVdsQ0xFVkJRVU1zUlVGQlJTeEZRVUZETEdOQlFXTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1lVRkJZU3hGUVVGRExFVkJRVVVzUlVGQlF5eHhRa0ZCY1VJc1JVRkJReXhGUVVGRkxFVkJRVU1zYVVKQlFXbENMRVZCUVVNc1JVRkJSU3hGUVVGRExHdENRVUZyUWl4RlFVRkRMRVZCUVVVc1JVRkJReXh2UWtGQmIwSXNSVUZCUXl4RlFVRkZMRVZCUVVNc09FSkJRVGhDTEVWQlFVTXNSVUZCUlN4RlFVRkRMREJDUVVFd1FpeEZRVUZETEVWQlFVVXNSVUZCUXl4UFFVRlBMRVZCUVVNc1JVRkJSU3hGUVVGRExFOUJRVThzUlVGQlF5eEZRVUZGTEVWQlFVTXNXVUZCV1N4RlFVRkRMRVZCUVVVc1JVRkJReXh0UWtGQmJVSXNSVUZCUXl4RlFVRkZMRVZCUVVNc1pVRkJaU3hGUVVGRExFVkJRVVVzUlVGQlF5eGhRVUZoTEVWQlFVTXNSVUZCUlN4RlFVRkRMRTFCUVUwc1JVRkJReXhGUVVGRkxFVkJRVU1zZFVKQlFYVkNMRVZCUVVNc1JVRkJSU3hGUVVGRExHRkJRV0VzUlVGQlF5eEZRVUZGTEVWQlFVTXNTVUZCU1N4RlFVRkRMRVZCUVVVc1JVRkJReXhSUVVGUkxFVkJRVU1zUlVGQlJTeEZRVUZETEdGQlFXRXNSVUZCUXl4RlFVRkZMRVZCUVVNc2JVSkJRVzFDTEVWQlFVTXNSVUZCUlN4RlFVRkRMRGhDUVVFNFFpeEZRVUZETEVWQlFVVXNSVUZCUXl4dlFrRkJiMElzUlVGQlF5eEZRVUZGTEVWQlFVTXNUVUZCVFN4RlFVRkRMRVZCUVVVc1JVRkJReXhWUVVGVkxFVkJRVU1zUlVGQlJTeEZRVUZETEZGQlFWRXNSVUZCUXl4RlFVRkZMRVZCUVVNc1VVRkJVU3hGUVVGRExFVkJRVVVzUlVGQlF5eFRRVUZUTEVWQlFVTXNSVUZCUlN4RlFVRkRMRmRCUVZjc1JVRkJReXhGUVVGRkxFVkJRVU1zVFVGQlRTeEZRVUZETEVWQlFVVXNSVUZCUXl4TlFVRk5MRVZCUVVNc1JVRkJSU3hGUVVGRExHTkJRV01zUlVGQlF5eEZRVUZGTEVWQlFVTXNTMEZCU3l4RlFVRkRMRVZCUVVVc1JVRkJReXhUUVVGVExFVkJRVU1zUTBGQlF5eEZRVUZETEUxQlFVMHNSVUZCUXl4RFFVRkRMRVZCUVVNN1FVRkROVzFFTEd0Q1FVRlZMRVZCUVVVc1JVRkJReXhEUVVGRExFVkJRVU1zVDBGQlR5eEZRVUZETEVOQlFVTXNSVUZCUXl4TFFVRkxMRVZCUVVNc1JVRkJSU3hGUVVGRExGTkJRVk1zUlVGQlF5eEZRVUZGTEVWQlFVTXNVMEZCVXl4RlFVRkRMRVZCUVVVc1JVRkJReXhsUVVGbExFVkJRVU1zUlVGQlJTeEZRVUZETEdkQ1FVRm5RaXhGUVVGRExFVkJRVVVzUlVGQlF5eHBRa0ZCYVVJc1JVRkJReXhGUVVGRkxFVkJRVU1zV1VGQldTeEZRVUZETEVWQlFVVXNSVUZCUXl4UFFVRlBMRVZCUVVNc1JVRkJSU3hGUVVGRExHTkJRV01zUlVGQlF5eEZRVUZGTEVWQlFVTXNiMEpCUVc5Q0xFVkJRVU1zUlVGQlJTeEZRVUZETEZOQlFWTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1pVRkJaU3hGUVVGRExFVkJRVVVzUlVGQlF5eE5RVUZOTEVWQlFVTXNSVUZCUlN4RlFVRkRMR2RDUVVGblFpeEZRVUZETEVWQlFVVXNSVUZCUXl4cFFrRkJhVUlzUlVGQlF5eEZRVUZGTEVWQlFVTXNZMEZCWXl4RlFVRkRMRVZCUVVVc1JVRkJReXh2UWtGQmIwSXNSVUZCUXl4RlFVRkZMRVZCUVVNc1dVRkJXU3hGUVVGRExFVkJRVVVzUlVGQlF5eGhRVUZoTEVWQlFVTXNSVUZCUlN4RlFVRkRMRWxCUVVrc1JVRkJReXhGUVVGRkxFVkJRVU1zVVVGQlVTeEZRVUZETEVWQlFVVXNSVUZCUXl4dFFrRkJiVUlzUlVGQlF5eEZRVUZGTEVWQlFVTXNiMEpCUVc5Q0xFVkJRVU1zUlVGQlJTeEZRVUZETEZGQlFWRXNSVUZCUXl4RlFVRkZMRVZCUVVNc1VVRkJVU3hGUVVGRExFVkJRVVVzUlVGQlF5eFRRVUZUTEVWQlFVTXNSVUZCUlN4RlFVRkRMRmRCUVZjc1JVRkJReXhGUVVGRkxFVkJRVU1zVFVGQlRTeEZRVUZETEVWQlFVVXNSVUZCUXl4TlFVRk5MRVZCUVVNc1JVRkJSU3hGUVVGRExFdEJRVXNzUlVGQlF6dEJRVU0xWlN4dlFrRkJXU3hGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTNKelFpeHhRa0ZCWVN4RlFVRkZMRk5CUVZNc1UwRkJVeXhEUVVGRExFMUJRVTBzUlVGQlF5eE5RVUZOTEVWQlFVTXNVVUZCVVN4RlFVRkRMRVZCUVVVc1JVRkJReXhQUVVGUExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZEZGtVN08wRkJSVVlzWjBKQlFVa3NSVUZCUlN4SFFVRkhMRVZCUVVVc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETzBGQlEzWkNMRzlDUVVGUkxFOUJRVTg3UVVGRFppeHhRa0ZCU3l4RFFVRkRPMEZCUVVVc01rSkJRVThzUlVGQlJTeERRVUZETEVWQlFVVXNSMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVONFFpd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUTBGQlF6dEJRVUZETEhkQ1FVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eGpRVUZqTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRE1VTXNNRUpCUVUwN1FVRkJRU3hCUVVOT0xIRkNRVUZMTEVOQlFVTTdRVUZCUXl4M1FrRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1FVRkRka0lzTUVKQlFVMDdRVUZCUVN4QlFVTk9MSEZDUVVGTExFTkJRVU03UVVGQlF5eDNRa0ZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdRVUZEZGtJc01FSkJRVTA3UVVGQlFTeEJRVU5PTEhGQ1FVRkxMRU5CUVVNN1FVRkJReXgzUWtGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03UVVGRGRrSXNNRUpCUVUwN1FVRkJRU3hCUVVOT0xIRkNRVUZMTEVOQlFVTTdRVUZCUXl4M1FrRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1FVRkRka0lzTUVKQlFVMDdRVUZCUVN4QlFVTk9MSEZDUVVGTExFTkJRVU03UVVGQlF5eDNRa0ZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdRVUZEZGtJc01FSkJRVTA3UVVGQlFTeEJRVU5PTEhGQ1FVRkxMRU5CUVVNN1FVRkJReXgzUWtGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03UVVGRGRrSXNNRUpCUVUwN1FVRkJRU3hCUVVOT0xIRkNRVUZMTEVOQlFVTTdRVUZEUml4M1FrRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ6dEJRVU5RTERSQ1FVRkpMRVZCUVVVc2EwSkJRV3RDTzBGQlEzaENMRFpDUVVGTExFVkJRVVVzUlVGQlJTeERRVUZETEZsQlFWa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03UVVGRE9VSXNOa0pCUVVzc1JVRkJSU3hGUVVGRkxFTkJRVU1zVlVGQlZTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTTdRVUZEY0VNc01rSkJRVWNzUlVGQlJTeEZRVUZGTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU03Y1VKQlEzcENMRU5CUVVNN08wRkJSVTRzTUVKQlFVMDdRVUZCUVN4QlFVTk9MSEZDUVVGTExFVkJRVVU3UVVGRFNDeDNRa0ZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSenRCUVVOUUxEUkNRVUZKTEVWQlFVVXNhMEpCUVd0Q08wRkJRM2hDTEdkRFFVRlJMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF6dEJRVU5vUWl3MlFrRkJTeXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTTdRVUZEWWl3eVFrRkJSeXhGUVVGRkxFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJRenR4UWtGRGVrSXNRMEZCUXpzN1FVRkZUaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExIZENRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhsUVVGbExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1FVRkRla1VzTUVKQlFVMDdRVUZCUVN4QlFVTk9MSEZDUVVGTExFVkJRVVU3UVVGQlF5eDNRa0ZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFbEJRVWtzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU03UVVGRGRFVXNNRUpCUVUwN1FVRkJRU3hCUVVOT0xIRkNRVUZMTEVWQlFVVTdRVUZCUXl4M1FrRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNXVUZCV1N4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFZEJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4TFFVRkxMRVZCUVVVc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzBGQlEzWkdMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUVVNc2QwSkJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRmxCUVZrc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFZEJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFVTjBSaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExIZENRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1NVRkJTU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1RVRkJUU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1YwRkJWeXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1MwRkJTeXhGUVVGRkxFVkJRVVVzUTBGQlF5eFZRVUZWTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRE8wRkJRM0pLTERCQ1FVRk5PMEZCUVVFc1FVRkRUaXh4UWtGQlN5eEZRVUZGTzBGQlFVTXNkMEpCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEpRVUZKTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeFhRVUZYTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeExRVUZMTEVWQlFVVXNSVUZCUlN4RFFVRkRMRlZCUVZVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTTdRVUZEY2trc01FSkJRVTA3UVVGQlFTeEJRVU5PTEhGQ1FVRkxMRVZCUVVVN1FVRkJReXgzUWtGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRWxCUVVrc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRTFCUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRmRCUVZjc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRXRCUVVzc1JVRkJSU3hGUVVGRkxFTkJRVU1zVlVGQlZTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJRenRCUVVOeVNTd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETEhkQ1FVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUzBGQlN5eEZRVUZGTEVWQlFVVXNRMEZCUXl4VlFVRlZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hIUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNUMEZCVHl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzBGQlF5OUZMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUTBnc2QwSkJRVWtzVDBGQlR5eEhRVUZITEVWQlFVVXNRMEZCUXl4WlFVRlpMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hIUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNTMEZCU3l4RlFVRkZMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU03ZDBKQlF6ZEZMRTlCUVU4c1IwRkJSeXhGUVVGRkxFTkJRVU1zWTBGQll5eERRVUZETEVOQlFVTXNUMEZCVHl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRCUVVONlJDd3lRa0ZCVHl4RFFVRkRMRTlCUVU4c1IwRkJSeXhKUVVGSkxFTkJRVU03TzBGQlJYWkNMSGRDUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNTMEZCU3l4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFZEJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RlFVRkZMRTlCUVU4c1JVRkJSU3hQUVVGUExFVkJRVVVzUzBGQlN5eEZRVUZGTEVsQlFVa3NSVUZCUlN4RFFVRkRPenRCUVVWMFJTd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETEhkQ1FVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFVTjRRaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExIZENRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVNc1NVRkJTU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1MwRkJTeXhGUVVGRkxFVkJRVVVzUTBGQlF5eFZRVUZWTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRE8wRkJRekZGTERCQ1FVRk5PMEZCUVVFc1FVRkRUaXh4UWtGQlN5eEZRVUZGTzBGQlFVTXNkMEpCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEdWQlFXVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hIUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNSMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhWUVVGVkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03UVVGRGRFZ3NNRUpCUVUwN1FVRkJRU3hCUVVOT0xIRkNRVUZMTEVWQlFVVTdRVUZCUXl4M1FrRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNaVUZCWlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFZEJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExGVkJRVlVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dEJRVU4wU0N3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NSVUZCUlR0QlFVTklMSGRDUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITzBGQlExQXNORUpCUVVrc1JVRkJSU3hyUWtGQmEwSTdRVUZEZUVJc05FSkJRVWtzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJRenRCUVVOa0xEaENRVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU03UVVGRGFFSXNORUpCUVVrc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXp0QlFVTmtMRGhDUVVGTkxFVkJRVVVzUlVGQlJUdEJRVU5XTERaQ1FVRkxMRVZCUVVVc1JVRkJSU3hEUVVGRExGVkJRVlVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFVTjBReXd5UWtGQlJ5eEZRVUZGTEVWQlFVVXNRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF6dHhRa0ZEZWtJc1EwRkJRenM3UVVGRlRpd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETEhkQ1FVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eHRRa0ZCYlVJc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFZEJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFVTTNSU3d3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExIZENRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1NVRkJTU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1RVRkJUU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1MwRkJTeXhGUVVGRkxFVkJRVVVzUTBGQlF5eFZRVUZWTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRE8wRkJRemxITERCQ1FVRk5PMEZCUVVFc1FVRkRUaXh4UWtGQlN5eEZRVUZGTzBGQlFVTXNkMEpCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMEZCUTNoQ0xEQkNRVUZOTzBGQlFVRXNRVUZEVGl4eFFrRkJTeXhGUVVGRk8wRkJRVU1zZDBKQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzBGQlEzaENMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUTBnc2QwSkJRVWtzUTBGQlF5eERRVUZETEVkQlFVYzdRVUZEVUN3MFFrRkJTU3hGUVVGRkxHVkJRV1U3UVVGRGNrSXNORUpCUVVrc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXp0QlFVTmtMRGhDUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNSMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRhRUlzTkVKQlFVa3NSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hIUVVGRExFTkJRVU1zUTBGQlF6dEJRVU5rTERKQ1FVRkhMRVZCUVVVc1JVRkJSU3hEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRPM0ZDUVVONlFpeERRVUZET3p0QlFVVk9MREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUVVNc2QwSkJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUXl4SlFVRkpMRVZCUVVVc1RVRkJUU3hGUVVGRkxFdEJRVXNzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJSeXhGUVVGRkxFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFTkJRVU03UVVGRGVrVXNNRUpCUVUwN1FVRkJRU3hCUVVOT0xIRkNRVUZMTEVWQlFVVTdRVUZCUXl4M1FrRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZETEVsQlFVa3NSVUZCUlN4VlFVRlZMRVZCUVVVc1IwRkJSeXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEV0QlFVc3NSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVWQlFVVXNRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVOQlFVTTdRVUZEYmtjc01FSkJRVTA3UVVGQlFTeEJRVU5PTEhGQ1FVRkxMRVZCUVVVN1FVRkJReXgzUWtGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVOcVF5d3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETEhkQ1FVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFVTjRRaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExIZENRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dEJRVU40UWl3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NSVUZCUlR0QlFVRkRMSGRDUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVTXNTVUZCU1N4RlFVRkZMR1ZCUVdVc1JVRkJSU3hMUVVGTExFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRkZCUVZFc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSMEZCUnl4RlFVRkZMRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRU5CUVVNN1FVRkRjRWNzTUVKQlFVMDdRVUZCUVN4QlFVTk9MSEZDUVVGTExFVkJRVVU3UVVGQlF5eDNRa0ZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRExFbEJRVWtzUlVGQlJTeGxRVUZsTEVWQlFVVXNTMEZCU3l4RlFVRkZMRTFCUVUwc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4UlFVRlJMRVZCUVVVc1RVRkJUU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RlFVRkZMRWRCUVVjc1JVRkJSU3hGUVVGRkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhEUVVGRE8wRkJRM0JJTERCQ1FVRk5PMEZCUVVFc1FVRkRUaXh4UWtGQlN5eEZRVUZGTzBGQlFVTXNkMEpCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlF5eEpRVUZKTEVWQlFVVXNaMEpCUVdkQ0xFVkJRVVVzUzBGQlN5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1MwRkJTeXhOUVVGTkxFVkJRVVVzVVVGQlVTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1MwRkJTeXhOUVVGTkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEVWQlFVVXNRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVOQlFVTTdRVUZETTBnc01FSkJRVTA3UVVGQlFTeEJRVU5PTEhGQ1FVRkxMRVZCUVVVN1FVRkJReXgzUWtGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkRMRWxCUVVrc1JVRkJSU3hyUWtGQmEwSXNSVUZCUlN4UlFVRlJMRVZCUVVVc1UwRkJVeXhGUVVGRkxFdEJRVXNzUlVGQlJTeFRRVUZUTEVWQlFVVXNSMEZCUnl4RlFVRkZMRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRU5CUVVNN1FVRkROMGNzTUVKQlFVMDdRVUZCUVN4QlFVTk9MSEZDUVVGTExFVkJRVVU3UVVGQlF5eDNRa0ZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRExFbEJRVWtzUlVGQlJTeGhRVUZoTEVWQlFVVXNVVUZCVVN4RlFVRkZMRWxCUVVrc1JVRkJSU3hMUVVGTExFVkJRVVVzU1VGQlNTeEZRVUZGTEVkQlFVY3NSVUZCUlN4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RFFVRkRPMEZCUXpsR0xEQkNRVUZOTzBGQlFVRXNRVUZEVGl4eFFrRkJTeXhGUVVGRk8wRkJRVU1zZDBKQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzBGQlEzaENMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUVVNc2QwSkJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8wRkJRM2hDTERCQ1FVRk5PMEZCUVVFc1FVRkRUaXh4UWtGQlN5eEZRVUZGTzBGQlFVTXNkMEpCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEZkQlFWY3NRMEZCUXl4SlFVRkpMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenRCUVVOMlJDd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETEhkQ1FVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eFhRVUZYTEVOQlFVTXNTMEZCU3l4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1FVRkRlRVFzTUVKQlFVMDdRVUZCUVN4QlFVTk9MSEZDUVVGTExFVkJRVVU3UVVGQlJTeHpRa0ZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUXl4SlFVRkpMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hSUVVGUkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRk5CUVZNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhCUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU40Unl3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NSVUZCUlR0QlFVRkRMSGRDUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUXl4SlFVRkpMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1JVRkJSU3hSUVVGUkxFVkJRVVVzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJRenRCUVVNelJDd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETEhkQ1FVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF6dEJRVU53UWl3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NSVUZCUlR0QlFVRkRMSE5DUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTTVRaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExIZENRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJRenRCUVVOd1Fpd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETEhOQ1FVRkZMRU5CUVVNc1JVRkJSU3hIUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU01UWl3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NSVUZCUlR0QlFVRkRMSGRDUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXp0QlFVTndRaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExITkNRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVNNVFpd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETEhkQ1FVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF6dEJRVU53UWl3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NSVUZCUlR0QlFVRkRMSE5DUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTTVRaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExIZENRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJRenRCUVVOd1Fpd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETEhOQ1FVRkZMRU5CUVVNc1JVRkJSU3hIUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU01UWl3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NSVUZCUlR0QlFVRkRMSGRDUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXp0QlFVTndRaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExITkNRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVNNVFpd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETEhkQ1FVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF6dEJRVU53UWl3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NSVUZCUlR0QlFVRkRMSE5DUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTTVRaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExIZENRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJRenRCUVVOd1Fpd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETEhOQ1FVRkZMRU5CUVVNc1JVRkJSU3hIUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU01UWl3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NSVUZCUlR0QlFVRkRMSGRDUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXp0QlFVTndRaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExITkNRVUZGTEVOQlFVTXNSVUZCUlN4SFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVNNVFpd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETEhkQ1FVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF6dEJRVU53UWl3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NSVUZCUlR0QlFVRkRMSE5DUVVGRkxFTkJRVU1zUlVGQlJTeEhRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTTVRaXd3UWtGQlRUdEJRVUZCTEVGQlEwNHNjVUpCUVVzc1JVRkJSVHRCUVVGRExIZENRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJRenRCUVVOd1Fpd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUlVGQlJUdEJRVUZETEhOQ1FVRkZMRU5CUVVNc1JVRkJSU3hIUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU01UWl3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NSVUZCUlR0QlFVRkRMSGRDUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRE1VSXNNRUpCUVUwN1FVRkJRU3hCUVVOT0xIRkNRVUZMTEVWQlFVVTdRVUZCUXl4elFrRkJSU3hEUVVGRExFVkJRVVVzUjBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZET1VJc01FSkJRVTA3UVVGQlFTeEJRVU5PTEhGQ1FVRkxMRWRCUVVjN1FVRkJReXgzUWtGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzBGQlF6TkNMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4SFFVRkhPMEZCUVVNc2MwSkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUXk5Q0xEQkNRVUZOTzBGQlFVRXNZVUZEVER0VFFVTkJPMEZCUTBRc1lVRkJTeXhGUVVGRkxFTkJRVU1zUlVGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVU1zUlVGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1JVRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZETEVWQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVkQlFVY3NSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUjBGQlJ5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4SFFVRkhMRVZCUVVNc1JVRkJSU3hGUVVGRExFZEJRVWNzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1IwRkJSeXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEhRVUZITEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSMEZCUnl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEhRVUZITEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4SFFVRkhMRVZCUVVNc1JVRkJSU3hGUVVGRExFZEJRVWNzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSMEZCUnl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhIUVVGSExFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRWRCUVVjc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFZEJRVWNzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEhRVUZITEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4SFFVRkhMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUjBGQlJ5eEZRVUZETEVWQlFVVXNSVUZCUXl4SFFVRkhMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4SFFVRkhMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1IwRkJSeXhEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFZEJRVWNzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlF5eEZRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhIUVVGSExFVkJRVU1zUlVGQlJTeEZRVUZETEVkQlFVY3NSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUjBGQlJ5eEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVNc1JVRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEhRVUZITEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eEhRVUZITEVWQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEhRVUZITEVOQlFVTXNSVUZCUXl4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRWRCUVVjc1JVRkJReXhGUVVGRkxFVkJRVU1zUjBGQlJ5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhIUVVGSExFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1IwRkJSeXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1IwRkJSeXhEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1IwRkJSeXhEUVVGRExFVkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZETEVWQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4RlFVRkZMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSVUZCUlN4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eERRVUZETzBGQlF5OHZWaXh6UWtGQll5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEZRVUZGTEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFVkJRVVVzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhGUVVGRkxFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRVZCUVVVc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXl4SFFVRkhMRVZCUVVNc1EwRkJReXhEUVVGRExFVkJRVU1zUlVGQlJTeERRVUZETEVWQlFVTXNSMEZCUnl4RlFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZETEVkQlFVY3NSVUZCUXl4RFFVRkRMRU5CUVVNc1JVRkJReXhGUVVGRkxFTkJRVU1zUlVGQlF5eEhRVUZITEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hEUVVGRExFVkJRVU1zUjBGQlJ5eEZRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRExFZEJRVWNzUlVGQlF5eERRVUZETEVOQlFVTXNSVUZCUXl4RlFVRkZMRU5CUVVNc1JVRkJReXhIUVVGSExFVkJRVU1zUTBGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1IwRkJSeXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRWRCUVVjc1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUXp0QlFVTnNUU3hyUWtGQlZTeEZRVUZGTEZOQlFWTXNWVUZCVlN4RFFVRkZMRWRCUVVjc1JVRkJSU3hKUVVGSkxFVkJRVVU3UVVGRGVFTXNhMEpCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdVMEZEZUVJN1FVRkRSQ3hoUVVGTExFVkJRVVVzVTBGQlV5eExRVUZMTEVOQlFVTXNTMEZCU3l4RlFVRkZPMEZCUTNwQ0xHZENRVUZKTEVsQlFVa3NSMEZCUnl4SlFVRkpPMmRDUVVGRkxFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkJSU3hOUVVGTkxFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTTdaMEpCUVVVc1RVRkJUU3hIUVVGSExFVkJRVVU3WjBKQlFVVXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTE8yZENRVUZGTEUxQlFVMHNSMEZCUnl4RlFVRkZPMmRDUVVGRkxGRkJRVkVzUjBGQlJ5eERRVUZETzJkQ1FVRkZMRTFCUVUwc1IwRkJSeXhEUVVGRE8yZENRVUZGTEZWQlFWVXNSMEZCUnl4RFFVRkRPMmRDUVVGRkxFMUJRVTBzUjBGQlJ5eERRVUZETzJkQ1FVRkZMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU03UVVGRE0wb3NaMEpCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMEZCUXpOQ0xHZENRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETzBGQlEzaENMR2RDUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRE8wRkJRek5DTEdkQ1FVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTTdRVUZEZEVJc1owSkJRVWtzVDBGQlR5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1NVRkJTU3hYUVVGWExFVkJRM1pETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hIUVVGSExFVkJRVVVzUTBGQlF6dEJRVU16UWl4blFrRkJTU3hMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNN1FVRkRPVUlzYTBKQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03UVVGRGJrSXNaMEpCUVVrc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNUMEZCVHl4SlFVRkpMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEUxQlFVMHNRMEZCUXp0QlFVTTNSQ3huUWtGQlNTeFBRVUZQTEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1ZVRkJWU3hMUVVGTExGVkJRVlVzUlVGRGVFTXNTVUZCU1N4RFFVRkRMRlZCUVZVc1IwRkJSeXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEZWQlFWVXNRMEZCUXp0QlFVTjZReXh4UWtGQlV5eFJRVUZSTEVOQlFVTXNRMEZCUXl4RlFVRkZPMEZCUTJwQ0xIRkNRVUZMTEVOQlFVTXNUVUZCVFN4SFFVRkhMRXRCUVVzc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0QlFVTndReXh6UWtGQlRTeERRVUZETEUxQlFVMHNSMEZCUnl4TlFVRk5MRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF6dEJRVU5zUXl4elFrRkJUU3hEUVVGRExFMUJRVTBzUjBGQlJ5eE5RVUZOTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJRenRoUVVOeVF6dEJRVU5FTEhGQ1FVRlRMRWRCUVVjc1IwRkJSenRCUVVOWUxHOUNRVUZKTEV0QlFVc3NRMEZCUXp0QlFVTldMSEZDUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03UVVGRE9VSXNiMEpCUVVrc1QwRkJUeXhMUVVGTExFdEJRVXNzVVVGQlVTeEZRVUZGTzBGQlF6TkNMSGxDUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hMUVVGTExFTkJRVU03YVVKQlEzcERPMEZCUTBRc2RVSkJRVThzUzBGQlN5eERRVUZETzJGQlEyaENPMEZCUTBRc1owSkJRVWtzVFVGQlRUdG5Ra0ZCUlN4alFVRmpPMmRDUVVGRkxFdEJRVXM3WjBKQlFVVXNUVUZCVFR0blFrRkJSU3hEUVVGRE8yZENRVUZGTEVOQlFVTTdaMEpCUVVVc1MwRkJTeXhIUVVGSExFVkJRVVU3WjBKQlFVVXNRMEZCUXp0blFrRkJSU3hIUVVGSE8yZENRVUZGTEZGQlFWRTdaMEpCUVVVc1VVRkJVU3hEUVVGRE8wRkJRM2hHTEcxQ1FVRlBMRWxCUVVrc1JVRkJSVHRCUVVOVUxIRkNRVUZMTEVkQlFVY3NTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEYUVNc2IwSkJRVWtzU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSVHRCUVVNMVFpd3dRa0ZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdhVUpCUTNaRExFMUJRVTA3UVVGRFNDeDNRa0ZCU1N4TlFVRk5MRXRCUVVzc1NVRkJTU3hKUVVGSkxFOUJRVThzVFVGQlRTeEpRVUZKTEZkQlFWY3NSVUZCUlR0QlFVTnFSQ3c0UWtGQlRTeEhRVUZITEVkQlFVY3NSVUZCUlN4RFFVRkRPM0ZDUVVOc1FqdEJRVU5FTERCQ1FVRk5MRWRCUVVjc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dHBRa0ZEYWtRN1FVRkRSQ3h2UWtGQlNTeFBRVUZQTEUxQlFVMHNTMEZCU3l4WFFVRlhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRk8wRkJReTlFTEhkQ1FVRkpMRTFCUVUwc1IwRkJSeXhGUVVGRkxFTkJRVU03UVVGRGFFSXNkMEpCUVVrc1EwRkJReXhWUVVGVkxFVkJRVVU3UVVGRFlpeG5RMEZCVVN4SFFVRkhMRVZCUVVVc1EwRkJRenRCUVVOa0xEWkNRVUZMTEVOQlFVTXNTVUZCU1N4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFVkJRMnhDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZPMEZCUXpkQ0xHOURRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRE8zbENRVU5xUkR0QlFVTk1MRFJDUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNXVUZCV1N4RlFVRkZPMEZCUTNwQ0xHdERRVUZOTEVkQlFVY3NjMEpCUVhOQ0xFbEJRVWtzVVVGQlVTeEhRVUZITEVOQlFVTXNRMEZCUVN4QlFVRkRMRWRCUVVjc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNXVUZCV1N4RlFVRkZMRWRCUVVjc1kwRkJZeXhIUVVGSExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1UwRkJVeXhKUVVGSkxFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1RVRkJUU3hEUVVGQkxFRkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTTdlVUpCUTNaTUxFMUJRVTA3UVVGRFNDeHJRMEZCVFN4SFFVRkhMSE5DUVVGelFpeEpRVUZKTEZGQlFWRXNSMEZCUnl4RFFVRkRMRU5CUVVFc1FVRkJReXhIUVVGSExHVkJRV1VzU1VGQlNTeE5RVUZOTEVsQlFVa3NRMEZCUXl4SFFVRkRMR05CUVdNc1IwRkJReXhIUVVGSExFbEJRVWtzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hOUVVGTkxFTkJRVUVzUVVGQlF5eEhRVUZITEVkQlFVY3NRMEZCUVN4QlFVRkRMRU5CUVVNN2VVSkJRM0pLTzBGQlEwUXNORUpCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVWQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eEZRVUZGTEV0QlFVc3NSVUZCUlN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEUxQlFVMHNSVUZCUlN4SlFVRkpMRVZCUVVVc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eFJRVUZSTEVWQlFVVXNSMEZCUnl4RlFVRkZMRXRCUVVzc1JVRkJSU3hSUVVGUkxFVkJRVVVzVVVGQlVTeEZRVUZETEVOQlFVTXNRMEZCUXp0eFFrRkRNVW83YVVKQlEwbzdRVUZEUkN4dlFrRkJTU3hOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEZsQlFWa3NTMEZCU3l4SlFVRkpMRTFCUVUwc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eEZRVUZGTzBGQlEycEVMREJDUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEcxRVFVRnRSQ3hIUVVGSExFdEJRVXNzUjBGQlJ5eFhRVUZYTEVkQlFVY3NUVUZCVFN4RFFVRkRMRU5CUVVNN2FVSkJRM1pITzBGQlEwUXNkMEpCUVZFc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU5xUWl4NVFrRkJTeXhEUVVGRE8wRkJRMFlzTmtKQlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03UVVGRGJrSXNPRUpCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRCUVVNdlFpdzRRa0ZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMEZCUXk5Q0xEWkNRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlEzUkNMRGhDUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETzBGQlEyUXNORUpCUVVrc1EwRkJReXhqUVVGakxFVkJRVVU3UVVGRGFrSXNhME5CUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXp0QlFVTXpRaXhyUTBGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVGRE8wRkJRek5DTEc5RFFVRlJMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eFJRVUZSTEVOQlFVTTdRVUZETDBJc2FVTkJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJRenRCUVVNeFFpeG5RMEZCU1N4VlFVRlZMRWRCUVVjc1EwRkJReXhGUVVOa0xGVkJRVlVzUlVGQlJTeERRVUZETzNsQ1FVTndRaXhOUVVGTk8wRkJRMGdzYTBOQlFVMHNSMEZCUnl4alFVRmpMRU5CUVVNN1FVRkRlRUlzTUVOQlFXTXNSMEZCUnl4SlFVRkpMRU5CUVVNN2VVSkJRM3BDTzBGQlEwUXNPRUpCUVUwN1FVRkJRU3hCUVVOV0xIbENRVUZMTEVOQlFVTTdRVUZEUml3eVFrRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEZEVNc05rSkJRVXNzUTBGQlF5eERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZEZEVNc05rSkJRVXNzUTBGQlF5eEZRVUZGTEVkQlFVY3NSVUZCUXl4VlFVRlZMRVZCUVVVc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJRU3hCUVVGRExFTkJRVU1zUTBGQlF5eFZRVUZWTEVWQlFVVXNVMEZCVXl4RlFVRkZMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRk5CUVZNc1JVRkJSU3haUVVGWkxFVkJRVVVzVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlFTeEJRVUZETEVOQlFVTXNRMEZCUXl4WlFVRlpMRVZCUVVVc1YwRkJWeXhGUVVGRkxFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExGZEJRVmNzUlVGQlF5eERRVUZETzBGQlF6RlBMRFJDUVVGSkxFMUJRVTBzUlVGQlJUdEJRVU5TTEdsRFFVRkxMRU5CUVVNc1JVRkJSU3hEUVVGRExFdEJRVXNzUjBGQlJ5eERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVRXNRVUZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8zbENRVU4wUnp0QlFVTkVMSGxDUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhGUVVGRkxFMUJRVTBzUlVGQlJTeE5RVUZOTEVWQlFVVXNVVUZCVVN4RlFVRkZMRWxCUVVrc1EwRkJReXhGUVVGRkxFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRTFCUVUwc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF6dEJRVU5xUnl3MFFrRkJTU3hQUVVGUExFTkJRVU1zUzBGQlN5eFhRVUZYTEVWQlFVVTdRVUZETVVJc2JVTkJRVThzUTBGQlF5eERRVUZETzNsQ1FVTmFPMEZCUTBRc05FSkJRVWtzUjBGQlJ5eEZRVUZGTzBGQlEwd3NhVU5CUVVzc1IwRkJSeXhMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEY2tNc2EwTkJRVTBzUjBGQlJ5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXp0QlFVTnVReXhyUTBGQlRTeEhRVUZITEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRPM2xDUVVOMFF6dEJRVU5FTERaQ1FVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTTFReXc0UWtGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGNrSXNPRUpCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMEZCUTNSQ0xHZERRVUZSTEVkQlFVY3NTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVOdVJTdzJRa0ZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dEJRVU55UWl3NFFrRkJUVHRCUVVGQkxFRkJRMVlzZVVKQlFVc3NRMEZCUXp0QlFVTkdMQ3RDUVVGUExFbEJRVWtzUTBGQlF6dEJRVUZCTEdsQ1FVTm1PMkZCUTBvN1FVRkRSQ3h0UWtGQlR5eEpRVUZKTEVOQlFVTTdVMEZEWmp0TFFVTkJMRU5CUVVNN08wRkJSVVlzVVVGQlNTeExRVUZMTEVkQlFVY3NRMEZCUXl4WlFVRlZPMEZCUTNaQ0xGbEJRVWtzUzBGQlN5eEhRVUZKTEVWQlFVTXNSMEZCUnl4RlFVRkRMRU5CUVVNN1FVRkRia0lzYzBKQlFWVXNSVUZCUXl4VFFVRlRMRlZCUVZVc1EwRkJReXhIUVVGSExFVkJRVVVzU1VGQlNTeEZRVUZGTzBGQlEyeERMRzlDUVVGSkxFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNUVUZCVFN4RlFVRkZPMEZCUTJoQ0xIZENRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJReXhWUVVGVkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMmxDUVVONFF5eE5RVUZOTzBGQlEwZ3NNRUpCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdhVUpCUTNoQ08yRkJRMG83UVVGRFRDeHZRa0ZCVVN4RlFVRkRMR3RDUVVGVkxFdEJRVXNzUlVGQlJUdEJRVU5zUWl4dlFrRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eExRVUZMTEVOQlFVTTdRVUZEY0VJc2IwSkJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeEhRVUZITEV0QlFVc3NRMEZCUXp0QlFVTTFReXh2UWtGQlNTeERRVUZETEZGQlFWRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF6dEJRVU5vUXl4dlFrRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzUlVGQlJTeERRVUZETzBGQlF6ZERMRzlDUVVGSkxFTkJRVU1zWTBGQll5eEhRVUZITEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNN1FVRkRiRU1zYjBKQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1JVRkJReXhWUVVGVkxFVkJRVU1zUTBGQlF5eEZRVUZETEZsQlFWa3NSVUZCUXl4RFFVRkRMRVZCUVVNc1UwRkJVeXhGUVVGRExFTkJRVU1zUlVGQlF5eFhRVUZYTEVWQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNN1FVRkRkRVVzYjBKQlFVa3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEYmtRc2IwSkJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUTJoQ0xIVkNRVUZQTEVsQlFVa3NRMEZCUXp0aFFVTm1PMEZCUTB3c2FVSkJRVXNzUlVGQlF5eHBRa0ZCV1R0QlFVTldMRzlDUVVGSkxFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRM2hDTEc5Q1FVRkpMRU5CUVVNc1RVRkJUU3hKUVVGSkxFVkJRVVVzUTBGQlF6dEJRVU5zUWl4dlFrRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETzBGQlEyUXNiMEpCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF6dEJRVU5rTEc5Q1FVRkpMRU5CUVVNc1MwRkJTeXhKUVVGSkxFVkJRVVVzUTBGQlF6dEJRVU5xUWl4dlFrRkJTU3hEUVVGRExFOUJRVThzU1VGQlNTeEZRVUZGTEVOQlFVTTdRVUZEYmtJc2IwSkJRVWtzUzBGQlN5eEhRVUZITEVWQlFVVXNRMEZCUXl4TFFVRkxMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNRMEZCUXp0QlFVTjRReXh2UWtGQlNTeExRVUZMTEVWQlFVVTdRVUZEVUN4M1FrRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETzBGQlEyaENMSGRDUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRPMmxDUVVNelFpeE5RVUZOTzBGQlEwZ3NkMEpCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVjBGQlZ5eEZRVUZGTEVOQlFVTTdhVUpCUXpkQ08wRkJRMFFzYjBKQlFVa3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF6czdRVUZGYUVRc2IwSkJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEYmtNc2RVSkJRVThzUlVGQlJTeERRVUZETzJGQlEySTdRVUZEVEN4cFFrRkJTeXhGUVVGRExHVkJRVlVzUlVGQlJTeEZRVUZGTzBGQlExb3NiMEpCUVVrc1IwRkJSeXhIUVVGSExFVkJRVVVzUTBGQlF5eE5RVUZOTEVOQlFVTTdRVUZEY0VJc2IwSkJRVWtzUzBGQlN5eEhRVUZITEVWQlFVVXNRMEZCUXl4TFFVRkxMRU5CUVVNc1pVRkJaU3hEUVVGRExFTkJRVU03TzBGQlJYUkRMRzlDUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEVWQlFVVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRE8wRkJReTlDTEc5Q1FVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNSMEZCUXl4SFFVRkhMRWRCUVVNc1EwRkJReXhEUVVGRExFTkJRVU03TzBGQlJUbEVMRzlDUVVGSkxFTkJRVU1zVFVGQlRTeEpRVUZKTEVkQlFVY3NRMEZCUXp0QlFVTnVRaXh2UWtGQlNTeFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zWlVGQlpTeERRVUZETEVOQlFVTTdRVUZEYWtRc2IwSkJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hIUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlEzWkVMRzlDUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFCUVUwc1IwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6czdRVUZGTjBRc2IwSkJRVWtzUzBGQlN5eERRVUZETEUxQlFVMHNSMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExGRkJRVkVzU1VGQlNTeExRVUZMTEVOQlFVTXNUVUZCVFN4SFFVRkRMRU5CUVVNc1EwRkJRenRCUVVOd1JDeHZRa0ZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTTdPMEZCUlRGQ0xHOUNRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRVZCUVVNc1ZVRkJWU3hGUVVGRkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNWVUZCVlR0QlFVTXZReXcyUWtGQlV5eEZRVUZGTEVsQlFVa3NRMEZCUXl4UlFVRlJMRWRCUVVNc1EwRkJRenRCUVVNeFFpeG5RMEZCV1N4RlFVRkZMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zV1VGQldUdEJRVU4wUXl3clFrRkJWeXhGUVVGRkxFdEJRVXNzUjBGRFpDeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRXRCUVVzc1VVRkJVU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRmxCUVZrc1IwRkJSeXhEUVVGRExFTkJRVUVzUjBGQlNTeFJRVUZSTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTFCUVUwc1IwRkJSeXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNUVUZCVFN4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVkQlEzSkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zV1VGQldTeEhRVUZITEVkQlFVYzdhVUpCUTJwRExFTkJRVU03TzBGQlJVb3NiMEpCUVVrc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eE5RVUZOTEVWQlFVVTdRVUZEY2tJc2QwSkJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRPMmxDUVVONFJEdEJRVU5FTEhWQ1FVRlBMRWxCUVVrc1EwRkJRenRoUVVObU8wRkJRMHdzWjBKQlFVa3NSVUZCUXl4blFrRkJXVHRCUVVOVUxHOUNRVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJRenRCUVVOc1FpeDFRa0ZCVHl4SlFVRkpMRU5CUVVNN1lVRkRaanRCUVVOTUxHZENRVUZKTEVWQlFVTXNZMEZCVlN4RFFVRkRMRVZCUVVVN1FVRkRWaXh2UWtGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMkZCUTI1RE8wRkJRMHdzY1VKQlFWTXNSVUZCUXl4eFFrRkJXVHRCUVVOa0xHOUNRVUZKTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRCUVVNelJTeDFRa0ZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzUlVGQlJTeEhRVUZITEV0QlFVc3NSMEZCUXl4RlFVRkZMRU5CUVVFc1IwRkJTU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFdEJRVXNzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXp0aFFVTTVSVHRCUVVOTUxIbENRVUZoTEVWQlFVTXNlVUpCUVZrN1FVRkRiRUlzYjBKQlFVa3NTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU03UVVGRGRFSXNiMEpCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEZRVUZGTEVWQlFVVTdRVUZEYkVJc2QwSkJRVWtzU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeEhRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRwUWtGRGFrUTdRVUZEUkN4MVFrRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RlFVRkRMRVZCUVVVc1EwRkJReXhKUVVGRkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NSVUZCUlN4SFFVRkhMRXRCUVVzc1IwRkJReXhGUVVGRkxFTkJRVUVzUTBGQlF5eERRVUZGTEU5QlFVOHNRMEZCUXl4TFFVRkxMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU03WVVGREwwVTdRVUZEVEN4M1FrRkJXU3hGUVVGRExIZENRVUZaTzBGQlEycENMRzlDUVVGSkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RlFVRkZMRU5CUVVNN1FVRkRNMElzYjBKQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBGQlF6VkRMSFZDUVVGUExFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNZVUZCWVN4RlFVRkZMRWRCUVVjc1NVRkJTU3hIUVVGSExFTkJRVU1zUjBGQlF5eEhRVUZITEVOQlFVTTdZVUZEY0VRN1FVRkRUQ3huUWtGQlNTeEZRVUZETEdkQ1FVRlpPMEZCUTFRc2IwSkJRVWtzU1VGQlNTeERRVUZETEVsQlFVa3NSVUZCUlR0QlFVTllMREpDUVVGUExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTTdhVUpCUTI1Q08wRkJRMFFzYjBKQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRPenRCUVVWdVF5eHZRa0ZCU1N4TFFVRkxMRVZCUTB3c1MwRkJTeXhGUVVOTUxGTkJRVk1zUlVGRFZDeExRVUZMTEVWQlEwd3NSMEZCUnl4RlFVTklMRXRCUVVzc1EwRkJRenRCUVVOV0xHOUNRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1JVRkJSVHRCUVVOaUxIZENRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRVZCUVVVc1EwRkJRenRCUVVOcVFpeDNRa0ZCU1N4RFFVRkRMRXRCUVVzc1IwRkJSeXhGUVVGRkxFTkJRVU03YVVKQlEyNUNPMEZCUTBRc2IwSkJRVWtzUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4aFFVRmhMRVZCUVVVc1EwRkJRenRCUVVOcVF5eHhRa0ZCU3l4SlFVRkpMRU5CUVVNc1IwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3UVVGRGFFTXNOa0pCUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRjRVFzZDBKQlFVa3NVMEZCVXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhKUVVGSkxGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRWRCUVVjc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUVN4QlFVRkRMRVZCUVVVN1FVRkRhRVVzTmtKQlFVc3NSMEZCUnl4VFFVRlRMRU5CUVVNN1FVRkRiRUlzTmtKQlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNN1FVRkRWaXcwUWtGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hGUVVGRkxFMUJRVTA3Y1VKQlEycERPMmxDUVVOS08wRkJRMFFzYjBKQlFVa3NTMEZCU3l4RlFVRkZPMEZCUTFBc2VVSkJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExHbENRVUZwUWl4RFFVRkRMRU5CUVVNN1FVRkRNVU1zZDBKQlFVa3NTMEZCU3l4RlFVRkZMRWxCUVVrc1EwRkJReXhSUVVGUkxFbEJRVWtzUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXp0QlFVTjZReXgzUWtGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4RlFVRkRMRlZCUVZVc1JVRkJSU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEZOQlFWTTdRVUZEYWtNc2FVTkJRVk1zUlVGQlJTeEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkRMRU5CUVVNN1FVRkRNVUlzYjBOQlFWa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExGZEJRVmM3UVVGRGNrTXNiVU5CUVZjc1JVRkJSU3hMUVVGTExFZEJRVWNzUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRWRCUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeEhRVUZETEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hIUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhYUVVGWExFZEJRVWNzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1JVRkJReXhEUVVGRE8wRkJRemxLTEhkQ1FVRkpMRU5CUVVNc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTjRRaXgzUWtGQlNTeERRVUZETEV0QlFVc3NTVUZCU1N4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGRrSXNkMEpCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzUzBGQlN5eERRVUZETzBGQlEzSkNMSGRDUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRE8wRkJRMnBETEhkQ1FVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVFVGQlRTeEZRVUZGTzBGQlEzSkNMRFJDUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNTVUZCU1N4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03Y1VKQlEycEZPMEZCUTBRc2QwSkJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NTMEZCU3l4RFFVRkRPMEZCUTI1Q0xIZENRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEJRVU5xUkN4M1FrRkJTU3hEUVVGRExFOUJRVThzU1VGQlNTeExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRla0lzZVVKQlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVWQlFVVXNTVUZCU1N4RFFVRkRMRVZCUVVVc1JVRkJSU3hKUVVGSkxFVkJRVVVzUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkRMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4TlFVRk5MRWRCUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU55U0N4M1FrRkJTU3hKUVVGSkxFTkJRVU1zU1VGQlNTeEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eExRVUZMTEVOQlFVTTdRVUZEYUVRc2QwSkJRVWtzUzBGQlN5eEZRVUZGTEU5QlFVOHNTMEZCU3l4RFFVRkRMRXRCUTI1Q0xFOUJRVTg3YVVKQlEyWTdRVUZEUkN4dlFrRkJTU3hKUVVGSkxFTkJRVU1zVFVGQlRTeExRVUZMTEVWQlFVVXNSVUZCUlR0QlFVTndRaXd5UWtGQlR5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRPMmxDUVVOdVFpeE5RVUZOTzBGQlEwZ3NNa0pCUVU4c1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eDNRa0ZCZDBJc1NVRkJSU3hKUVVGSkxFTkJRVU1zVVVGQlVTeEhRVUZETEVOQlFVTXNRMEZCUVN4QlFVRkRMRWRCUVVNc2QwSkJRWGRDTEVkQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1JVRkJSU3hGUVVOMFJ5eEZRVUZETEVsQlFVa3NSVUZCUlN4RlFVRkZMRVZCUVVVc1MwRkJTeXhGUVVGRkxFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFVVXNTVUZCU1N4RFFVRkRMRkZCUVZFc1JVRkJReXhEUVVGRExFTkJRVU03YVVKQlEzcEVPMkZCUTBvN1FVRkRUQ3hsUVVGSExFVkJRVU1zVTBGQlV5eEhRVUZITEVkQlFVazdRVUZEV2l4dlFrRkJTU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRPMEZCUTNCQ0xHOUNRVUZKTEU5QlFVOHNRMEZCUXl4TFFVRkxMRmRCUVZjc1JVRkJSVHRCUVVNeFFpd3lRa0ZCVHl4RFFVRkRMRU5CUVVNN2FVSkJRMW9zVFVGQlRUdEJRVU5JTERKQ1FVRlBMRWxCUVVrc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF6dHBRa0ZEY2tJN1lVRkRTanRCUVVOTUxHbENRVUZMTEVWQlFVTXNVMEZCVXl4TFFVRkxMRU5CUVVVc1UwRkJVeXhGUVVGRk8wRkJRM3BDTEc5Q1FVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXp0aFFVTjJRenRCUVVOTUxHOUNRVUZSTEVWQlFVTXNVMEZCVXl4UlFVRlJMRWRCUVVrN1FVRkRkRUlzZFVKQlFVOHNTVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF6dGhRVU53UXp0QlFVTk1MSGxDUVVGaExFVkJRVU1zVTBGQlV5eGhRVUZoTEVkQlFVazdRVUZEYUVNc2RVSkJRVThzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFbEJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNUVUZCVFN4SFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETzJGQlEyNUdPMEZCUTB3c2IwSkJRVkVzUlVGQlF5eHZRa0ZCV1R0QlFVTmlMSFZDUVVGUExFbEJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNTVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhOUVVGTkxFZEJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdZVUZETlVRN1FVRkRUQ3h4UWtGQlV5eEZRVUZETEZOQlFWTXNTMEZCU3l4RFFVRkZMRk5CUVZNc1JVRkJSVHRCUVVNM1FpeHZRa0ZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF6dGhRVU42UWl4RlFVRkRMRUZCUVVNc1EwRkJRenRCUVVOU0xHRkJRVXNzUTBGQlF5eFBRVUZQTEVkQlFVY3NSVUZCUlN4RFFVRkRPMEZCUTI1Q0xHRkJRVXNzUTBGQlF5eGhRVUZoTEVkQlFVY3NVMEZCVXl4VFFVRlRMRU5CUVVNc1JVRkJSU3hGUVVGRExFZEJRVWNzUlVGQlF5eDVRa0ZCZVVJc1JVRkJReXhSUVVGUkxFVkJRMmhHT3p0QlFVZEdMSEZDUVVGVExFdEJRVXNzUTBGQlF5eExRVUZMTEVWQlFVVXNSMEZCUnl4RlFVRkZPMEZCUTNwQ0xIVkNRVUZQTEVkQlFVY3NRMEZCUXl4TlFVRk5MRWRCUVVjc1IwRkJSeXhEUVVGRExFMUJRVTBzUTBGQlF5eFRRVUZUTEVOQlFVTXNTMEZCU3l4RlFVRkZMRWRCUVVjc1EwRkJReXhOUVVGTkxFZEJRVWNzUjBGQlJ5eEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRPMkZCUXpORk96dEJRVWRFTEdkQ1FVRkpMRTlCUVU4c1IwRkJReXhSUVVGUkxFTkJRVUU3UVVGRGNFSXNiMEpCUVU4c2VVSkJRWGxDTzBGQlEyaERMSEZDUVVGTExFTkJRVU03UVVGRE5rSXNkMEpCUVVjc1IwRkJSeXhEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhOUVVGTkxFVkJRVVU3UVVGRGJFTXNOa0pCUVVzc1EwRkJReXhEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEV0N3MFFrRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0eFFrRkRiRUlzVFVGQlRTeEpRVUZITEVkQlFVY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NTVUZCU1N4RlFVRkZPMEZCUTNaRExEWkNRVUZMTEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRMWdzTkVKQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03Y1VKQlEyNUNMRTFCUVUwN1FVRkRUQ3cwUWtGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenR4UWtGRGJFSTdRVUZEUkN4M1FrRkJSeXhIUVVGSExFTkJRVU1zVFVGQlRTeEZRVUZGTEU5QlFVOHNSVUZCUlN4RFFVRkRPenRCUVVVMVJDd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUTBGQlF6dEJRVUZETERKQ1FVRlBMRVZCUVVVc1EwRkJRenRCUVVOcVFpd3dRa0ZCVFR0QlFVRkJMRUZCUTA0c2NVSkJRVXNzUTBGQlF6dEJRVU0yUWl4M1FrRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETzBGQlEyaENMREpDUVVGUExFVkJRVVVzUTBGQlF6czdRVUZGTjBNc01FSkJRVTA3UVVGQlFTeEJRVU5PTEhGQ1FVRkxMRU5CUVVNN1FVRkJReXgzUWtGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhCUVVGRExFOUJRVThzUlVGQlJTeERRVUZETzBGQlEzQkRMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RFFVRkRPMEZCUXpSQ0xIZENRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN096czdRVUZKYUVJc2QwSkJRVWtzU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFMUJRVTBzUjBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4TFFVRkxMRVZCUVVVN1FVRkRMMFFzSzBKQlFVOHNSVUZCUlN4RFFVRkRPM0ZDUVVOWUxFMUJRVTA3UVVGRFRDdzJRa0ZCU3l4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU5hTEN0Q1FVRlBMR1ZCUVdVc1EwRkJRenR4UWtGRGVFSTdPMEZCUlc1RExEQkNRVUZOTzBGQlFVRXNRVUZEVGl4eFFrRkJTeXhEUVVGRE8wRkJRVVVzTWtKQlFVOHNSVUZCUlN4RFFVRkRPMEZCUTJ4Q0xEQkNRVUZOTzBGQlFVRXNRVUZEVGl4eFFrRkJTeXhEUVVGRE8wRkJRMG9zZDBKQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJRenRCUVVOb1Fpd3lRa0ZCVHl4RlFVRkZMRU5CUVVNN08wRkJSVm9zTUVKQlFVMDdRVUZCUVN4QlFVTk9MSEZDUVVGTExFTkJRVU03UVVGQlF5d3lRa0ZCVHl4RlFVRkZMRU5CUVVNN1FVRkRha0lzTUVKQlFVMDdRVUZCUVN4QlFVTk9MSEZDUVVGTExFTkJRVU03UVVGQlF5d3lRa0ZCVHl4RlFVRkZMRU5CUVVNN1FVRkRha0lzTUVKQlFVMDdRVUZCUVN4QlFVTk9MSEZDUVVGTExFTkJRVU03UVVGQlJTd3lRa0ZCVHl4RlFVRkZMRU5CUVVNN1FVRkRiRUlzTUVKQlFVMDdRVUZCUVN4QlFVTk9MSEZDUVVGTExFVkJRVVU3UVVGRE1rSXNkMEpCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF6dEJRVU5vUWl4M1FrRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0QlFVTnNRaXd5UWtGQlR5eEZRVUZGTEVOQlFVTTdPMEZCUlRWRExEQkNRVUZOTzBGQlFVRXNRVUZEVGl4eFFrRkJTeXhGUVVGRk8wRkJRVU1zTWtKQlFVOHNSVUZCUlN4RFFVRkRPMEZCUTJ4Q0xEQkNRVUZOTzBGQlFVRXNRVUZEVGl4eFFrRkJTeXhGUVVGRk8wRkJRVU1zTWtKQlFVOHNSVUZCUlN4RFFVRkRPMEZCUTJ4Q0xEQkNRVUZOTzBGQlFVRXNRVUZEVGl4eFFrRkJTeXhGUVVGRk8wRkJRVU1zTWtKQlFVOHNSVUZCUlN4RFFVRkRPMEZCUTJ4Q0xEQkNRVUZOTzBGQlFVRXNRVUZEVGl4eFFrRkJTeXhGUVVGRk8wRkJRVU1zTWtKQlFVOHNSVUZCUlN4RFFVRkRPMEZCUTJ4Q0xEQkNRVUZOTzBGQlFVRXNRVUZEVGl4eFFrRkJTeXhGUVVGRk8wRkJRVU1zZDBKQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJReXhCUVVGRExFOUJRVThzUlVGQlJTeERRVUZETzBGQlEyNURMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUVVNc2QwSkJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXl4QlFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8wRkJRMjVETERCQ1FVRk5PMEZCUVVFc1FVRkRUaXh4UWtGQlN5eEZRVUZGTzBGQlFVTXNNa0pCUVU4c1JVRkJSU3hEUVVGRE8wRkJRMnhDTERCQ1FVRk5PMEZCUVVFc1FVRkRUaXh4UWtGQlN5eEZRVUZGTzBGQlFVTXNNa0pCUVU4c1JVRkJSU3hEUVVGRE8wRkJRMnhDTERCQ1FVRk5PMEZCUVVFc1FVRkRUaXh4UWtGQlN5eEZRVUZGTzBGQlFVTXNNa0pCUVU4c1JVRkJSU3hEUVVGRE8wRkJRMnhDTERCQ1FVRk5PMEZCUVVFc1FVRkRUaXh4UWtGQlN5eEZRVUZGTzBGQlFVTXNNa0pCUVU4c1JVRkJSU3hEUVVGRE8wRkJRMnhDTERCQ1FVRk5PMEZCUVVFc1FVRkRUaXh4UWtGQlN5eEZRVUZGTzBGQlEwd3NkMEpCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMEZCUTNaQ0xIZENRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN1FVRkRhRUlzZDBKQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03TzBGQlJYQkNMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUTB3c2QwSkJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXp0QlFVTm9RaXd5UWtGQlR5eEZRVUZGTEVOQlFVTTdPMEZCUlZvc01FSkJRVTA3UVVGQlFTeEJRVU5PTEhGQ1FVRkxMRVZCUVVVN1FVRkJReXd5UWtGQlR5eEZRVUZGTEVOQlFVTTdRVUZEYkVJc01FSkJRVTA3UVVGQlFTeEJRVU5PTEhGQ1FVRkxMRVZCUVVVN1FVRkJReXd5UWtGQlR5eEZRVUZGTEVOQlFVTTdRVUZEYkVJc01FSkJRVTA3UVVGQlFTeEJRVU5PTEhGQ1FVRkxMRVZCUVVVN1FVRkJReXd5UWtGQlR5eEZRVUZGTEVOQlFVTTdRVUZEYkVJc01FSkJRVTA3UVVGQlFTeEJRVU5PTEhGQ1FVRkxMRVZCUVVVN1FVRkJReXd5UWtGQlR5eEZRVUZGTEVOQlFVTTdRVUZEYkVJc01FSkJRVTA3UVVGQlFTeEJRVU5PTEhGQ1FVRkxMRVZCUVVVN1FVRkJReXd5UWtGQlR5eEZRVUZGTEVOQlFVTTdRVUZEYkVJc01FSkJRVTA3UVVGQlFTeEJRVU5PTEhGQ1FVRkxMRVZCUVVVN08wRkJRMUFzTUVKQlFVMDdRVUZCUVN4QlFVTk9MSEZDUVVGTExFVkJRVVU3UVVGQlF5eDNRa0ZCU1N4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRExFRkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTTdRVUZEYmtNc01FSkJRVTA3UVVGQlFTeEJRVU5PTEhGQ1FVRkxMRVZCUVVVN1FVRkJReXgzUWtGQlNTeERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRMRUZCUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03UVVGRGJrTXNNRUpCUVUwN1FVRkJRU3hCUVVOT0xIRkNRVUZMTEVWQlFVVTdRVUZCUXl4MVFrRkJSeXhEUVVGRExFMUJRVTBzUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXl4RlFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eE5RVUZOTEVWQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1FVRkJReXhQUVVGUExFVkJRVVVzUTBGQlF6dEJRVU12UkN3d1FrRkJUVHRCUVVGQkxFRkJRMDRzY1VKQlFVc3NSVUZCUlR0QlFVRkRMSFZDUVVGSExFTkJRVU1zVFVGQlRTeEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEUxQlFVMHNSVUZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhCUVVGRExFOUJRVThzUlVGQlJTeERRVUZETzBGQlF5OUVMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUVVNc01rSkJRVThzUlVGQlJTeERRVUZETzBGQlEyeENMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUVVNc01rSkJRVThzUlVGQlJTeERRVUZETzBGQlEyeENMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUVVNc01rSkJRVThzUlVGQlJTeERRVUZETzBGQlEyeENMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUVVNc01rSkJRVThzUlVGQlJTeERRVUZETzBGQlEyeENMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUVVNc01rSkJRVThzUlVGQlJTeERRVUZETzBGQlEyeENMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUVVNc01rSkJRVThzUlVGQlJTeERRVUZETzBGQlEyeENMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUVVNc01rSkJRVThzUlVGQlJTeERRVUZETzBGQlEyeENMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUVVNc01rSkJRVThzUlVGQlJTeERRVUZETzBGQlEyeENMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUVVNc01rSkJRVThzUlVGQlJTeERRVUZETzBGQlEyeENMREJDUVVGTk8wRkJRVUVzUVVGRFRpeHhRa0ZCU3l4RlFVRkZPMEZCUVVNc2RVSkJRVWNzUTBGQlF5eE5RVUZOTEVkQlFVY3NSMEZCUnl4RFFVRkRMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zWVVGQllTeEZRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRUZCUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03UVVGRGRrVXNNRUpCUVUwN1FVRkJRU3hCUVVOT0xIRkNRVUZMTEVWQlFVVTdRVUZCUXl3eVFrRkJUeXhUUVVGVExFTkJRVU03UVVGRGVrSXNNRUpCUVUwN1FVRkJRU3hCUVVOT0xIRkNRVUZMTEVWQlFVVTdRVUZCUXl3eVFrRkJUeXhEUVVGRExFTkJRVU03UVVGRGFrSXNNRUpCUVUwN1FVRkJRU3hoUVVOTU8xTkJRMEVzUTBGQlF6dEJRVU5HTEdGQlFVc3NRMEZCUXl4TFFVRkxMRWRCUVVjc1EwRkJReXd3UWtGQk1FSXNSVUZCUXl4bFFVRmxMRVZCUVVNc0swTkJRU3RETEVWQlFVTXNkMEpCUVhkQ0xFVkJRVU1zYjBWQlFXOUZMRVZCUVVNc09FSkJRVGhDTEVWQlFVTXNlVUpCUVhsQ0xFVkJRVU1zVTBGQlV5eEZRVUZETEZOQlFWTXNSVUZCUXl4bFFVRmxMRVZCUVVNc1pVRkJaU3hGUVVGRExHZENRVUZuUWl4RlFVRkRMR2xDUVVGcFFpeEZRVUZETEcxQ1FVRnRRaXhGUVVGRExHbENRVUZwUWl4RlFVRkRMRFJDUVVFMFFpeEZRVUZETEdsRFFVRnBReXhGUVVGRExHbENRVUZwUWl4RlFVRkRMSGRDUVVGM1FpeEZRVUZETEdsQ1FVRnBRaXhGUVVGRExHZENRVUZuUWl4RlFVRkRMR3RDUVVGclFpeEZRVUZETERSQ1FVRTBRaXhGUVVGRExHdENRVUZyUWl4RlFVRkRMRkZCUVZFc1JVRkJReXhYUVVGWExFVkJRVU1zTWtKQlFUSkNMRVZCUVVNc1dVRkJXU3hGUVVGRExGVkJRVlVzUlVGQlF5eHBRa0ZCYVVJc1JVRkJReXhsUVVGbExFVkJRVU1zYzBKQlFYTkNMRVZCUVVNc2MwSkJRWE5DTEVWQlFVTXNVVUZCVVN4RlFVRkRMSGRDUVVGM1FpeEZRVUZETEhsQ1FVRjVRaXhGUVVGRExEWkNRVUUyUWl4RlFVRkRMSGRDUVVGM1FpeEZRVUZETEhsRFFVRjVReXhGUVVGRExHTkJRV01zUlVGQlF5eFRRVUZUTEVWQlFVTXNlVVJCUVhsRUxFVkJRVU1zZDBKQlFYZENMRVZCUVVNc1VVRkJVU3hGUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETzBGQlEyNW5ReXhoUVVGTExFTkJRVU1zVlVGQlZTeEhRVUZITEVWQlFVTXNTVUZCU1N4RlFVRkRMRVZCUVVNc1QwRkJUeXhGUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZETEVOQlFVTXNSVUZCUXl4RFFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNSVUZCUXl4RlFVRkZMRVZCUVVNc1JVRkJSU3hGUVVGRExFVkJRVVVzUlVGQlF5eEZRVUZGTEVWQlFVTXNSVUZCUlN4RlFVRkRMRVZCUVVVc1JVRkJReXhGUVVGRkxFVkJRVU1zUlVGQlJTeEZRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkRMRmRCUVZjc1JVRkJReXhMUVVGTExFVkJRVU1zUlVGQlF5eExRVUZMTEVWQlFVTXNSVUZCUXl4UFFVRlBMRVZCUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eFhRVUZYTEVWQlFVTXNTMEZCU3l4RlFVRkRMRVZCUVVNc1MwRkJTeXhGUVVGRExFVkJRVU1zVDBGQlR5eEZRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1YwRkJWeXhGUVVGRExFdEJRVXNzUlVGQlF5eEZRVUZETEV0QlFVc3NSVUZCUXl4RlFVRkRMRTlCUVU4c1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVNc1YwRkJWeXhGUVVGRExFdEJRVXNzUlVGQlF5eEZRVUZETEZOQlFWTXNSVUZCUXl4RlFVRkRMRTlCUVU4c1JVRkJReXhEUVVGRExFTkJRVU1zUlVGQlF5eERRVUZETEVWQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVNc1YwRkJWeXhGUVVGRExFbEJRVWtzUlVGQlF5eEZRVUZETEVOQlFVTTdRVUZETTFVc1pVRkJUeXhMUVVGTExFTkJRVU03UzBGQlF5eERRVUZCTEVWQlFVY3NRMEZCUVR0QlFVTnFRaXhWUVVGTkxFTkJRVU1zUzBGQlN5eEhRVUZITEV0QlFVc3NRMEZCUXp0QlFVTnlRaXhoUVVGVExFMUJRVTBzUjBGQlNUdEJRVUZGTEZsQlFVa3NRMEZCUXl4RlFVRkZMRWRCUVVjc1JVRkJSU3hEUVVGRE8wdEJRVVVzVFVGQlRTeERRVUZETEZOQlFWTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzUjBGQlJ5eE5RVUZOTEVOQlFVTTdRVUZEY2tZc1YwRkJUeXhKUVVGSkxFMUJRVTBzUlVGQlFTeERRVUZETzBOQlEycENMRU5CUVVFc1JVRkJSeXhEUVVGRExIRkNRVUZsTEZWQlFWVWlMQ0ptYVd4bElqb2ljR0Z5YzJWeUxtcHpJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHk4Z1JtbHNaU0JwWjI1dmNtVmtJR2x1SUdOdmRtVnlZV2RsSUhSbGMzUnpJSFpwWVNCelpYUjBhVzVuSUdsdUlDNXBjM1JoYm1KMWJDNTViV3hjYmk4cUlFcHBjMjl1SUdkbGJtVnlZWFJsWkNCd1lYSnpaWElnS2k5Y2JuWmhjaUJvWVc1a2JHVmlZWEp6SUQwZ0tHWjFibU4wYVc5dUtDbDdYRzUyWVhJZ2NHRnljMlZ5SUQwZ2UzUnlZV05sT2lCbWRXNWpkR2x2YmlCMGNtRmpaU0FvS1NCN0lIMHNYRzU1ZVRvZ2UzMHNYRzV6ZVcxaWIyeHpYem9nZTF3aVpYSnliM0pjSWpveUxGd2ljbTl2ZEZ3aU9qTXNYQ0p3Y205bmNtRnRYQ0k2TkN4Y0lrVlBSbHdpT2pVc1hDSndjbTluY21GdFgzSmxjR1YwYVhScGIyNHdYQ0k2Tml4Y0luTjBZWFJsYldWdWRGd2lPamNzWENKdGRYTjBZV05vWlZ3aU9qZ3NYQ0ppYkc5amExd2lPamtzWENKeVlYZENiRzlqYTF3aU9qRXdMRndpY0dGeWRHbGhiRndpT2pFeExGd2ljR0Z5ZEdsaGJFSnNiMk5yWENJNk1USXNYQ0pqYjI1MFpXNTBYQ0k2TVRNc1hDSkRUMDFOUlU1VVhDSTZNVFFzWENKRFQwNVVSVTVVWENJNk1UVXNYQ0p2Y0dWdVVtRjNRbXh2WTJ0Y0lqb3hOaXhjSW5KaGQwSnNiMk5yWDNKbGNHVjBhWFJwYjI0d1hDSTZNVGNzWENKRlRrUmZVa0ZYWDBKTVQwTkxYQ0k2TVRnc1hDSlBVRVZPWDFKQlYxOUNURTlEUzF3aU9qRTVMRndpYUdWc2NHVnlUbUZ0WlZ3aU9qSXdMRndpYjNCbGJsSmhkMEpzYjJOclgzSmxjR1YwYVhScGIyNHdYQ0k2TWpFc1hDSnZjR1Z1VW1GM1FteHZZMnRmYjNCMGFXOXVNRndpT2pJeUxGd2lRMHhQVTBWZlVrRlhYMEpNVDBOTFhDSTZNak1zWENKdmNHVnVRbXh2WTJ0Y0lqb3lOQ3hjSW1Kc2IyTnJYMjl3ZEdsdmJqQmNJam95TlN4Y0ltTnNiM05sUW14dlkydGNJam95Tml4Y0ltOXdaVzVKYm5abGNuTmxYQ0k2TWpjc1hDSmliRzlqYTE5dmNIUnBiMjR4WENJNk1qZ3NYQ0pQVUVWT1gwSk1UME5MWENJNk1qa3NYQ0p2Y0dWdVFteHZZMnRmY21Wd1pYUnBkR2x2YmpCY0lqb3pNQ3hjSW05d1pXNUNiRzlqYTE5dmNIUnBiMjR3WENJNk16RXNYQ0p2Y0dWdVFteHZZMnRmYjNCMGFXOXVNVndpT2pNeUxGd2lRMHhQVTBWY0lqb3pNeXhjSWs5UVJVNWZTVTVXUlZKVFJWd2lPak0wTEZ3aWIzQmxia2x1ZG1WeWMyVmZjbVZ3WlhScGRHbHZiakJjSWpvek5TeGNJbTl3Wlc1SmJuWmxjbk5sWDI5d2RHbHZiakJjSWpvek5peGNJbTl3Wlc1SmJuWmxjbk5sWDI5d2RHbHZiakZjSWpvek55eGNJbTl3Wlc1SmJuWmxjbk5sUTJoaGFXNWNJam96T0N4Y0lrOVFSVTVmU1U1V1JWSlRSVjlEU0VGSlRsd2lPak01TEZ3aWIzQmxia2x1ZG1WeWMyVkRhR0ZwYmw5eVpYQmxkR2wwYVc5dU1Gd2lPalF3TEZ3aWIzQmxia2x1ZG1WeWMyVkRhR0ZwYmw5dmNIUnBiMjR3WENJNk5ERXNYQ0p2Y0dWdVNXNTJaWEp6WlVOb1lXbHVYMjl3ZEdsdmJqRmNJam8wTWl4Y0ltbHVkbVZ5YzJWQmJtUlFjbTluY21GdFhDSTZORE1zWENKSlRsWkZVbE5GWENJNk5EUXNYQ0pwYm5abGNuTmxRMmhoYVc1Y0lqbzBOU3hjSW1sdWRtVnljMlZEYUdGcGJsOXZjSFJwYjI0d1hDSTZORFlzWENKUFVFVk9YMFZPUkVKTVQwTkxYQ0k2TkRjc1hDSlBVRVZPWENJNk5EZ3NYQ0p0ZFhOMFlXTm9aVjl5WlhCbGRHbDBhVzl1TUZ3aU9qUTVMRndpYlhWemRHRmphR1ZmYjNCMGFXOXVNRndpT2pVd0xGd2lUMUJGVGw5VlRrVlRRMEZRUlVSY0lqbzFNU3hjSW0xMWMzUmhZMmhsWDNKbGNHVjBhWFJwYjI0eFhDSTZOVElzWENKdGRYTjBZV05vWlY5dmNIUnBiMjR4WENJNk5UTXNYQ0pEVEU5VFJWOVZUa1ZUUTBGUVJVUmNJam8xTkN4Y0lrOVFSVTVmVUVGU1ZFbEJURndpT2pVMUxGd2ljR0Z5ZEdsaGJFNWhiV1ZjSWpvMU5peGNJbkJoY25ScFlXeGZjbVZ3WlhScGRHbHZiakJjSWpvMU55eGNJbkJoY25ScFlXeGZiM0IwYVc5dU1Gd2lPalU0TEZ3aWIzQmxibEJoY25ScFlXeENiRzlqYTF3aU9qVTVMRndpVDFCRlRsOVFRVkpVU1VGTVgwSk1UME5MWENJNk5qQXNYQ0p2Y0dWdVVHRnlkR2xoYkVKc2IyTnJYM0psY0dWMGFYUnBiMjR3WENJNk5qRXNYQ0p2Y0dWdVVHRnlkR2xoYkVKc2IyTnJYMjl3ZEdsdmJqQmNJam8yTWl4Y0luQmhjbUZ0WENJNk5qTXNYQ0p6Wlhod2Nsd2lPalkwTEZ3aVQxQkZUbDlUUlZoUVVsd2lPalkxTEZ3aWMyVjRjSEpmY21Wd1pYUnBkR2x2YmpCY0lqbzJOaXhjSW5ObGVIQnlYMjl3ZEdsdmJqQmNJam8yTnl4Y0lrTk1UMU5GWDFORldGQlNYQ0k2Tmpnc1hDSm9ZWE5vWENJNk5qa3NYQ0pvWVhOb1gzSmxjR1YwYVhScGIyNWZjR3gxY3pCY0lqbzNNQ3hjSW1oaGMyaFRaV2R0Wlc1MFhDSTZOekVzWENKSlJGd2lPamN5TEZ3aVJWRlZRVXhUWENJNk56TXNYQ0ppYkc5amExQmhjbUZ0YzF3aU9qYzBMRndpVDFCRlRsOUNURTlEUzE5UVFWSkJUVk5jSWpvM05TeGNJbUpzYjJOclVHRnlZVzF6WDNKbGNHVjBhWFJwYjI1ZmNHeDFjekJjSWpvM05peGNJa05NVDFORlgwSk1UME5MWDFCQlVrRk5VMXdpT2pjM0xGd2ljR0YwYUZ3aU9qYzRMRndpWkdGMFlVNWhiV1ZjSWpvM09TeGNJbE5VVWtsT1Ixd2lPamd3TEZ3aVRsVk5Ra1ZTWENJNk9ERXNYQ0pDVDA5TVJVRk9YQ0k2T0RJc1hDSlZUa1JGUmtsT1JVUmNJam80TXl4Y0lrNVZURXhjSWpvNE5DeGNJa1JCVkVGY0lqbzROU3hjSW5CaGRHaFRaV2R0Wlc1MGMxd2lPamcyTEZ3aVUwVlFYQ0k2T0Rjc1hDSWtZV05qWlhCMFhDSTZNQ3hjSWlSbGJtUmNJam94ZlN4Y2JuUmxjbTFwYm1Gc2MxODZJSHN5T2x3aVpYSnliM0pjSWl3MU9sd2lSVTlHWENJc01UUTZYQ0pEVDAxTlJVNVVYQ0lzTVRVNlhDSkRUMDVVUlU1VVhDSXNNVGc2WENKRlRrUmZVa0ZYWDBKTVQwTkxYQ0lzTVRrNlhDSlBVRVZPWDFKQlYxOUNURTlEUzF3aUxESXpPbHdpUTB4UFUwVmZVa0ZYWDBKTVQwTkxYQ0lzTWprNlhDSlBVRVZPWDBKTVQwTkxYQ0lzTXpNNlhDSkRURTlUUlZ3aUxETTBPbHdpVDFCRlRsOUpUbFpGVWxORlhDSXNNems2WENKUFVFVk9YMGxPVmtWU1UwVmZRMGhCU1U1Y0lpdzBORHBjSWtsT1ZrVlNVMFZjSWl3ME56cGNJazlRUlU1ZlJVNUVRa3hQUTB0Y0lpdzBPRHBjSWs5UVJVNWNJaXcxTVRwY0lrOVFSVTVmVlU1RlUwTkJVRVZFWENJc05UUTZYQ0pEVEU5VFJWOVZUa1ZUUTBGUVJVUmNJaXcxTlRwY0lrOVFSVTVmVUVGU1ZFbEJURndpTERZd09sd2lUMUJGVGw5UVFWSlVTVUZNWDBKTVQwTkxYQ0lzTmpVNlhDSlBVRVZPWDFORldGQlNYQ0lzTmpnNlhDSkRURTlUUlY5VFJWaFFVbHdpTERjeU9sd2lTVVJjSWl3M016cGNJa1ZSVlVGTVUxd2lMRGMxT2x3aVQxQkZUbDlDVEU5RFMxOVFRVkpCVFZOY0lpdzNOenBjSWtOTVQxTkZYMEpNVDBOTFgxQkJVa0ZOVTF3aUxEZ3dPbHdpVTFSU1NVNUhYQ0lzT0RFNlhDSk9WVTFDUlZKY0lpdzRNanBjSWtKUFQweEZRVTVjSWl3NE16cGNJbFZPUkVWR1NVNUZSRndpTERnME9sd2lUbFZNVEZ3aUxEZzFPbHdpUkVGVVFWd2lMRGczT2x3aVUwVlFYQ0o5TEZ4dWNISnZaSFZqZEdsdmJuTmZPaUJiTUN4Yk15d3lYU3hiTkN3eFhTeGJOeXd4WFN4Yk55d3hYU3hiTnl3eFhTeGJOeXd4WFN4Yk55d3hYU3hiTnl3eFhTeGJOeXd4WFN4Yk1UTXNNVjBzV3pFd0xETmRMRnN4Tml3MVhTeGJPU3cwWFN4Yk9TdzBYU3hiTWpRc05sMHNXekkzTERaZExGc3pPQ3cyWFN4Yk5ETXNNbDBzV3pRMUxETmRMRnMwTlN3eFhTeGJNallzTTEwc1d6Z3NOVjBzV3pnc05WMHNXekV4TERWZExGc3hNaXd6WFN4Yk5Ua3NOVjBzV3pZekxERmRMRnMyTXl3eFhTeGJOalFzTlYwc1d6WTVMREZkTEZzM01Td3pYU3hiTnpRc00xMHNXekl3TERGZExGc3lNQ3d4WFN4Yk1qQXNNVjBzV3pJd0xERmRMRnN5TUN3eFhTeGJNakFzTVYwc1d6SXdMREZkTEZzMU5pd3hYU3hiTlRZc01WMHNXemM1TERKZExGczNPQ3d4WFN4Yk9EWXNNMTBzV3pnMkxERmRMRnMyTERCZExGczJMREpkTEZzeE55d3dYU3hiTVRjc01sMHNXekl4TERCZExGc3lNU3d5WFN4Yk1qSXNNRjBzV3pJeUxERmRMRnN5TlN3d1hTeGJNalVzTVYwc1d6STRMREJkTEZzeU9Dd3hYU3hiTXpBc01GMHNXek13TERKZExGc3pNU3d3WFN4Yk16RXNNVjBzV3pNeUxEQmRMRnN6TWl3eFhTeGJNelVzTUYwc1d6TTFMREpkTEZzek5pd3dYU3hiTXpZc01WMHNXek0zTERCZExGc3pOeXd4WFN4Yk5EQXNNRjBzV3pRd0xESmRMRnMwTVN3d1hTeGJOREVzTVYwc1d6UXlMREJkTEZzME1pd3hYU3hiTkRZc01GMHNXelEyTERGZExGczBPU3d3WFN4Yk5Ea3NNbDBzV3pVd0xEQmRMRnMxTUN3eFhTeGJOVElzTUYwc1d6VXlMREpkTEZzMU15d3dYU3hiTlRNc01WMHNXelUzTERCZExGczFOeXd5WFN4Yk5UZ3NNRjBzV3pVNExERmRMRnMyTVN3d1hTeGJOakVzTWwwc1d6WXlMREJkTEZzMk1pd3hYU3hiTmpZc01GMHNXelkyTERKZExGczJOeXd3WFN4Yk5qY3NNVjBzV3pjd0xERmRMRnMzTUN3eVhTeGJOellzTVYwc1d6YzJMREpkWFN4Y2JuQmxjbVp2Y20xQlkzUnBiMjQ2SUdaMWJtTjBhVzl1SUdGdWIyNTViVzkxY3loNWVYUmxlSFFzZVhsc1pXNW5MSGw1YkdsdVpXNXZMSGw1TEhsNWMzUmhkR1VzSkNRc1h5UmNiaWtnZTF4dVhHNTJZWElnSkRBZ1BTQWtKQzVzWlc1bmRHZ2dMU0F4TzF4dWMzZHBkR05vSUNoNWVYTjBZWFJsS1NCN1hHNWpZWE5sSURFNklISmxkSFZ5YmlBa0pGc2tNQzB4WFRzZ1hHNWljbVZoYXp0Y2JtTmhjMlVnTWpwMGFHbHpMaVFnUFNCNWVTNXdjbVZ3WVhKbFVISnZaM0poYlNna0pGc2tNRjBwTzF4dVluSmxZV3M3WEc1allYTmxJRE02ZEdocGN5NGtJRDBnSkNSYkpEQmRPMXh1WW5KbFlXczdYRzVqWVhObElEUTZkR2hwY3k0a0lEMGdKQ1JiSkRCZE8xeHVZbkpsWVdzN1hHNWpZWE5sSURVNmRHaHBjeTRrSUQwZ0pDUmJKREJkTzF4dVluSmxZV3M3WEc1allYTmxJRFk2ZEdocGN5NGtJRDBnSkNSYkpEQmRPMXh1WW5KbFlXczdYRzVqWVhObElEYzZkR2hwY3k0a0lEMGdKQ1JiSkRCZE8xeHVZbkpsWVdzN1hHNWpZWE5sSURnNmRHaHBjeTRrSUQwZ0pDUmJKREJkTzF4dVluSmxZV3M3WEc1allYTmxJRGs2WEc0Z0lDQWdkR2hwY3k0a0lEMGdlMXh1SUNBZ0lDQWdkSGx3WlRvZ0owTnZiVzFsYm5SVGRHRjBaVzFsYm5RbkxGeHVJQ0FnSUNBZ2RtRnNkV1U2SUhsNUxuTjBjbWx3UTI5dGJXVnVkQ2drSkZza01GMHBMRnh1SUNBZ0lDQWdjM1J5YVhBNklIbDVMbk4wY21sd1JteGhaM01vSkNSYkpEQmRMQ0FrSkZza01GMHBMRnh1SUNBZ0lDQWdiRzlqT2lCNWVTNXNiMk5KYm1adktIUm9hWE11WHlRcFhHNGdJQ0FnZlR0Y2JpQWdYRzVpY21WaGF6dGNibU5oYzJVZ01UQTZYRzRnSUNBZ2RHaHBjeTRrSUQwZ2UxeHVJQ0FnSUNBZ2RIbHdaVG9nSjBOdmJuUmxiblJUZEdGMFpXMWxiblFuTEZ4dUlDQWdJQ0FnYjNKcFoybHVZV3c2SUNRa1d5UXdYU3hjYmlBZ0lDQWdJSFpoYkhWbE9pQWtKRnNrTUYwc1hHNGdJQ0FnSUNCc2IyTTZJSGw1TG14dlkwbHVabThvZEdocGN5NWZKQ2xjYmlBZ0lDQjlPMXh1SUNCY2JtSnlaV0ZyTzF4dVkyRnpaU0F4TVRwMGFHbHpMaVFnUFNCNWVTNXdjbVZ3WVhKbFVtRjNRbXh2WTJzb0pDUmJKREF0TWwwc0lDUWtXeVF3TFRGZExDQWtKRnNrTUYwc0lIUm9hWE11WHlRcE8xeHVZbkpsWVdzN1hHNWpZWE5sSURFeU9uUm9hWE11SkNBOUlIc2djR0YwYURvZ0pDUmJKREF0TTEwc0lIQmhjbUZ0Y3pvZ0pDUmJKREF0TWwwc0lHaGhjMmc2SUNRa1d5UXdMVEZkSUgwN1hHNWljbVZoYXp0Y2JtTmhjMlVnTVRNNmRHaHBjeTRrSUQwZ2VYa3VjSEpsY0dGeVpVSnNiMk5yS0NRa1d5UXdMVE5kTENBa0pGc2tNQzB5WFN3Z0pDUmJKREF0TVYwc0lDUWtXeVF3WFN3Z1ptRnNjMlVzSUhSb2FYTXVYeVFwTzF4dVluSmxZV3M3WEc1allYTmxJREUwT25Sb2FYTXVKQ0E5SUhsNUxuQnlaWEJoY21WQ2JHOWpheWdrSkZza01DMHpYU3dnSkNSYkpEQXRNbDBzSUNRa1d5UXdMVEZkTENBa0pGc2tNRjBzSUhSeWRXVXNJSFJvYVhNdVh5UXBPMXh1WW5KbFlXczdYRzVqWVhObElERTFPblJvYVhNdUpDQTlJSHNnYjNCbGJqb2dKQ1JiSkRBdE5WMHNJSEJoZEdnNklDUWtXeVF3TFRSZExDQndZWEpoYlhNNklDUWtXeVF3TFROZExDQm9ZWE5vT2lBa0pGc2tNQzB5WFN3Z1lteHZZMnRRWVhKaGJYTTZJQ1FrV3lRd0xURmRMQ0J6ZEhKcGNEb2dlWGt1YzNSeWFYQkdiR0ZuY3lna0pGc2tNQzAxWFN3Z0pDUmJKREJkS1NCOU8xeHVZbkpsWVdzN1hHNWpZWE5sSURFMk9uUm9hWE11SkNBOUlIc2djR0YwYURvZ0pDUmJKREF0TkYwc0lIQmhjbUZ0Y3pvZ0pDUmJKREF0TTEwc0lHaGhjMmc2SUNRa1d5UXdMVEpkTENCaWJHOWphMUJoY21GdGN6b2dKQ1JiSkRBdE1WMHNJSE4wY21sd09pQjVlUzV6ZEhKcGNFWnNZV2R6S0NRa1d5UXdMVFZkTENBa0pGc2tNRjBwSUgwN1hHNWljbVZoYXp0Y2JtTmhjMlVnTVRjNmRHaHBjeTRrSUQwZ2V5QndZWFJvT2lBa0pGc2tNQzAwWFN3Z2NHRnlZVzF6T2lBa0pGc2tNQzB6WFN3Z2FHRnphRG9nSkNSYkpEQXRNbDBzSUdKc2IyTnJVR0Z5WVcxek9pQWtKRnNrTUMweFhTd2djM1J5YVhBNklIbDVMbk4wY21sd1JteGhaM01vSkNSYkpEQXROVjBzSUNRa1d5UXdYU2tnZlR0Y2JtSnlaV0ZyTzF4dVkyRnpaU0F4T0RwMGFHbHpMaVFnUFNCN0lITjBjbWx3T2lCNWVTNXpkSEpwY0Vac1lXZHpLQ1FrV3lRd0xURmRMQ0FrSkZza01DMHhYU2tzSUhCeWIyZHlZVzA2SUNRa1d5UXdYU0I5TzF4dVluSmxZV3M3WEc1allYTmxJREU1T2x4dUlDQWdJSFpoY2lCcGJuWmxjbk5sSUQwZ2VYa3VjSEpsY0dGeVpVSnNiMk5yS0NRa1d5UXdMVEpkTENBa0pGc2tNQzB4WFN3Z0pDUmJKREJkTENBa0pGc2tNRjBzSUdaaGJITmxMQ0IwYUdsekxsOGtLU3hjYmlBZ0lDQWdJQ0FnY0hKdlozSmhiU0E5SUhsNUxuQnlaWEJoY21WUWNtOW5jbUZ0S0Z0cGJuWmxjbk5sWFN3Z0pDUmJKREF0TVYwdWJHOWpLVHRjYmlBZ0lDQndjbTluY21GdExtTm9ZV2x1WldRZ1BTQjBjblZsTzF4dVhHNGdJQ0FnZEdocGN5NGtJRDBnZXlCemRISnBjRG9nSkNSYkpEQXRNbDB1YzNSeWFYQXNJSEJ5YjJkeVlXMDZJSEJ5YjJkeVlXMHNJR05vWVdsdU9pQjBjblZsSUgwN1hHNGdJRnh1WW5KbFlXczdYRzVqWVhObElESXdPblJvYVhNdUpDQTlJQ1FrV3lRd1hUdGNibUp5WldGck8xeHVZMkZ6WlNBeU1UcDBhR2x6TGlRZ1BTQjdjR0YwYURvZ0pDUmJKREF0TVYwc0lITjBjbWx3T2lCNWVTNXpkSEpwY0Vac1lXZHpLQ1FrV3lRd0xUSmRMQ0FrSkZza01GMHBmVHRjYm1KeVpXRnJPMXh1WTJGelpTQXlNanAwYUdsekxpUWdQU0I1ZVM1d2NtVndZWEpsVFhWemRHRmphR1VvSkNSYkpEQXRNMTBzSUNRa1d5UXdMVEpkTENBa0pGc2tNQzB4WFN3Z0pDUmJKREF0TkYwc0lIbDVMbk4wY21sd1JteGhaM01vSkNSYkpEQXRORjBzSUNRa1d5UXdYU2tzSUhSb2FYTXVYeVFwTzF4dVluSmxZV3M3WEc1allYTmxJREl6T25Sb2FYTXVKQ0E5SUhsNUxuQnlaWEJoY21WTmRYTjBZV05vWlNna0pGc2tNQzB6WFN3Z0pDUmJKREF0TWwwc0lDUWtXeVF3TFRGZExDQWtKRnNrTUMwMFhTd2dlWGt1YzNSeWFYQkdiR0ZuY3lna0pGc2tNQzAwWFN3Z0pDUmJKREJkS1N3Z2RHaHBjeTVmSkNrN1hHNWljbVZoYXp0Y2JtTmhjMlVnTWpRNlhHNGdJQ0FnZEdocGN5NGtJRDBnZTF4dUlDQWdJQ0FnZEhsd1pUb2dKMUJoY25ScFlXeFRkR0YwWlcxbGJuUW5MRnh1SUNBZ0lDQWdibUZ0WlRvZ0pDUmJKREF0TTEwc1hHNGdJQ0FnSUNCd1lYSmhiWE02SUNRa1d5UXdMVEpkTEZ4dUlDQWdJQ0FnYUdGemFEb2dKQ1JiSkRBdE1WMHNYRzRnSUNBZ0lDQnBibVJsYm5RNklDY25MRnh1SUNBZ0lDQWdjM1J5YVhBNklIbDVMbk4wY21sd1JteGhaM01vSkNSYkpEQXRORjBzSUNRa1d5UXdYU2tzWEc0Z0lDQWdJQ0JzYjJNNklIbDVMbXh2WTBsdVptOG9kR2hwY3k1ZkpDbGNiaUFnSUNCOU8xeHVJQ0JjYm1KeVpXRnJPMXh1WTJGelpTQXlOVHAwYUdsekxpUWdQU0I1ZVM1d2NtVndZWEpsVUdGeWRHbGhiRUpzYjJOcktDUWtXeVF3TFRKZExDQWtKRnNrTUMweFhTd2dKQ1JiSkRCZExDQjBhR2x6TGw4a0tUdGNibUp5WldGck8xeHVZMkZ6WlNBeU5qcDBhR2x6TGlRZ1BTQjdJSEJoZEdnNklDUWtXeVF3TFROZExDQndZWEpoYlhNNklDUWtXeVF3TFRKZExDQm9ZWE5vT2lBa0pGc2tNQzB4WFN3Z2MzUnlhWEE2SUhsNUxuTjBjbWx3Um14aFozTW9KQ1JiSkRBdE5GMHNJQ1FrV3lRd1hTa2dmVHRjYm1KeVpXRnJPMXh1WTJGelpTQXlOenAwYUdsekxpUWdQU0FrSkZza01GMDdYRzVpY21WaGF6dGNibU5oYzJVZ01qZzZkR2hwY3k0a0lEMGdKQ1JiSkRCZE8xeHVZbkpsWVdzN1hHNWpZWE5sSURJNU9seHVJQ0FnSUhSb2FYTXVKQ0E5SUh0Y2JpQWdJQ0FnSUhSNWNHVTZJQ2RUZFdKRmVIQnlaWE56YVc5dUp5eGNiaUFnSUNBZ0lIQmhkR2c2SUNRa1d5UXdMVE5kTEZ4dUlDQWdJQ0FnY0dGeVlXMXpPaUFrSkZza01DMHlYU3hjYmlBZ0lDQWdJR2hoYzJnNklDUWtXeVF3TFRGZExGeHVJQ0FnSUNBZ2JHOWpPaUI1ZVM1c2IyTkpibVp2S0hSb2FYTXVYeVFwWEc0Z0lDQWdmVHRjYmlBZ1hHNWljbVZoYXp0Y2JtTmhjMlVnTXpBNmRHaHBjeTRrSUQwZ2UzUjVjR1U2SUNkSVlYTm9KeXdnY0dGcGNuTTZJQ1FrV3lRd1hTd2diRzlqT2lCNWVTNXNiMk5KYm1adktIUm9hWE11WHlRcGZUdGNibUp5WldGck8xeHVZMkZ6WlNBek1UcDBhR2x6TGlRZ1BTQjdkSGx3WlRvZ0owaGhjMmhRWVdseUp5d2dhMlY1T2lCNWVTNXBaQ2drSkZza01DMHlYU2tzSUhaaGJIVmxPaUFrSkZza01GMHNJR3h2WXpvZ2VYa3ViRzlqU1c1bWJ5aDBhR2x6TGw4a0tYMDdYRzVpY21WaGF6dGNibU5oYzJVZ016STZkR2hwY3k0a0lEMGdlWGt1YVdRb0pDUmJKREF0TVYwcE8xeHVZbkpsWVdzN1hHNWpZWE5sSURNek9uUm9hWE11SkNBOUlDUWtXeVF3WFR0Y2JtSnlaV0ZyTzF4dVkyRnpaU0F6TkRwMGFHbHpMaVFnUFNBa0pGc2tNRjA3WEc1aWNtVmhhenRjYm1OaGMyVWdNelU2ZEdocGN5NGtJRDBnZTNSNWNHVTZJQ2RUZEhKcGJtZE1hWFJsY21Gc0p5d2dkbUZzZFdVNklDUWtXeVF3WFN3Z2IzSnBaMmx1WVd3NklDUWtXeVF3WFN3Z2JHOWpPaUI1ZVM1c2IyTkpibVp2S0hSb2FYTXVYeVFwZlR0Y2JtSnlaV0ZyTzF4dVkyRnpaU0F6TmpwMGFHbHpMaVFnUFNCN2RIbHdaVG9nSjA1MWJXSmxja3hwZEdWeVlXd25MQ0IyWVd4MVpUb2dUblZ0WW1WeUtDUWtXeVF3WFNrc0lHOXlhV2RwYm1Gc09pQk9kVzFpWlhJb0pDUmJKREJkS1N3Z2JHOWpPaUI1ZVM1c2IyTkpibVp2S0hSb2FYTXVYeVFwZlR0Y2JtSnlaV0ZyTzF4dVkyRnpaU0F6TnpwMGFHbHpMaVFnUFNCN2RIbHdaVG9nSjBKdmIyeGxZVzVNYVhSbGNtRnNKeXdnZG1Gc2RXVTZJQ1FrV3lRd1hTQTlQVDBnSjNSeWRXVW5MQ0J2Y21sbmFXNWhiRG9nSkNSYkpEQmRJRDA5UFNBbmRISjFaU2NzSUd4dll6b2dlWGt1Ykc5alNXNW1ieWgwYUdsekxsOGtLWDA3WEc1aWNtVmhhenRjYm1OaGMyVWdNemc2ZEdocGN5NGtJRDBnZTNSNWNHVTZJQ2RWYm1SbFptbHVaV1JNYVhSbGNtRnNKeXdnYjNKcFoybHVZV3c2SUhWdVpHVm1hVzVsWkN3Z2RtRnNkV1U2SUhWdVpHVm1hVzVsWkN3Z2JHOWpPaUI1ZVM1c2IyTkpibVp2S0hSb2FYTXVYeVFwZlR0Y2JtSnlaV0ZyTzF4dVkyRnpaU0F6T1RwMGFHbHpMaVFnUFNCN2RIbHdaVG9nSjA1MWJHeE1hWFJsY21Gc0p5d2diM0pwWjJsdVlXdzZJRzUxYkd3c0lIWmhiSFZsT2lCdWRXeHNMQ0JzYjJNNklIbDVMbXh2WTBsdVptOG9kR2hwY3k1ZkpDbDlPMXh1WW5KbFlXczdYRzVqWVhObElEUXdPblJvYVhNdUpDQTlJQ1FrV3lRd1hUdGNibUp5WldGck8xeHVZMkZ6WlNBME1UcDBhR2x6TGlRZ1BTQWtKRnNrTUYwN1hHNWljbVZoYXp0Y2JtTmhjMlVnTkRJNmRHaHBjeTRrSUQwZ2VYa3VjSEpsY0dGeVpWQmhkR2dvZEhKMVpTd2dKQ1JiSkRCZExDQjBhR2x6TGw4a0tUdGNibUp5WldGck8xeHVZMkZ6WlNBME16cDBhR2x6TGlRZ1BTQjVlUzV3Y21Wd1lYSmxVR0YwYUNobVlXeHpaU3dnSkNSYkpEQmRMQ0IwYUdsekxsOGtLVHRjYm1KeVpXRnJPMXh1WTJGelpTQTBORG9nSkNSYkpEQXRNbDB1Y0hWemFDaDdjR0Z5ZERvZ2VYa3VhV1FvSkNSYkpEQmRLU3dnYjNKcFoybHVZV3c2SUNRa1d5UXdYU3dnYzJWd1lYSmhkRzl5T2lBa0pGc2tNQzB4WFgwcE95QjBhR2x6TGlRZ1BTQWtKRnNrTUMweVhUc2dYRzVpY21WaGF6dGNibU5oYzJVZ05EVTZkR2hwY3k0a0lEMGdXM3R3WVhKME9pQjVlUzVwWkNna0pGc2tNRjBwTENCdmNtbG5hVzVoYkRvZ0pDUmJKREJkZlYwN1hHNWljbVZoYXp0Y2JtTmhjMlVnTkRZNmRHaHBjeTRrSUQwZ1cxMDdYRzVpY21WaGF6dGNibU5oYzJVZ05EYzZKQ1JiSkRBdE1WMHVjSFZ6YUNna0pGc2tNRjBwTzF4dVluSmxZV3M3WEc1allYTmxJRFE0T25Sb2FYTXVKQ0E5SUZ0ZE8xeHVZbkpsWVdzN1hHNWpZWE5sSURRNU9pUWtXeVF3TFRGZExuQjFjMmdvSkNSYkpEQmRLVHRjYm1KeVpXRnJPMXh1WTJGelpTQTFNRHAwYUdsekxpUWdQU0JiWFR0Y2JtSnlaV0ZyTzF4dVkyRnpaU0ExTVRva0pGc2tNQzB4WFM1d2RYTm9LQ1FrV3lRd1hTazdYRzVpY21WaGF6dGNibU5oYzJVZ05UZzZkR2hwY3k0a0lEMGdXMTA3WEc1aWNtVmhhenRjYm1OaGMyVWdOVGs2SkNSYkpEQXRNVjB1Y0hWemFDZ2tKRnNrTUYwcE8xeHVZbkpsWVdzN1hHNWpZWE5sSURZME9uUm9hWE11SkNBOUlGdGRPMXh1WW5KbFlXczdYRzVqWVhObElEWTFPaVFrV3lRd0xURmRMbkIxYzJnb0pDUmJKREJkS1R0Y2JtSnlaV0ZyTzF4dVkyRnpaU0EzTURwMGFHbHpMaVFnUFNCYlhUdGNibUp5WldGck8xeHVZMkZ6WlNBM01Ub2tKRnNrTUMweFhTNXdkWE5vS0NRa1d5UXdYU2s3WEc1aWNtVmhhenRjYm1OaGMyVWdOemc2ZEdocGN5NGtJRDBnVzEwN1hHNWljbVZoYXp0Y2JtTmhjMlVnTnprNkpDUmJKREF0TVYwdWNIVnphQ2drSkZza01GMHBPMXh1WW5KbFlXczdYRzVqWVhObElEZ3lPblJvYVhNdUpDQTlJRnRkTzF4dVluSmxZV3M3WEc1allYTmxJRGd6T2lRa1d5UXdMVEZkTG5CMWMyZ29KQ1JiSkRCZEtUdGNibUp5WldGck8xeHVZMkZ6WlNBNE5qcDBhR2x6TGlRZ1BTQmJYVHRjYm1KeVpXRnJPMXh1WTJGelpTQTROem9rSkZza01DMHhYUzV3ZFhOb0tDUWtXeVF3WFNrN1hHNWljbVZoYXp0Y2JtTmhjMlVnT1RBNmRHaHBjeTRrSUQwZ1cxMDdYRzVpY21WaGF6dGNibU5oYzJVZ09URTZKQ1JiSkRBdE1WMHVjSFZ6YUNna0pGc2tNRjBwTzF4dVluSmxZV3M3WEc1allYTmxJRGswT25Sb2FYTXVKQ0E5SUZ0ZE8xeHVZbkpsWVdzN1hHNWpZWE5sSURrMU9pUWtXeVF3TFRGZExuQjFjMmdvSkNSYkpEQmRLVHRjYm1KeVpXRnJPMXh1WTJGelpTQTVPRHAwYUdsekxpUWdQU0JiSkNSYkpEQmRYVHRjYm1KeVpXRnJPMXh1WTJGelpTQTVPVG9rSkZza01DMHhYUzV3ZFhOb0tDUWtXeVF3WFNrN1hHNWljbVZoYXp0Y2JtTmhjMlVnTVRBd09uUm9hWE11SkNBOUlGc2tKRnNrTUYxZE8xeHVZbkpsWVdzN1hHNWpZWE5sSURFd01Ub2tKRnNrTUMweFhTNXdkWE5vS0NRa1d5UXdYU2s3WEc1aWNtVmhhenRjYm4xY2JuMHNYRzUwWVdKc1pUb2dXM3N6T2pFc05Eb3lMRFU2V3pJc05EWmRMRFk2TXl3eE5EcGJNaXcwTmwwc01UVTZXeklzTkRaZExERTVPbHN5TERRMlhTd3lPVHBiTWl3ME5sMHNNelE2V3pJc05EWmRMRFE0T2xzeUxEUTJYU3cxTVRwYk1pdzBObDBzTlRVNld6SXNORFpkTERZd09sc3lMRFEyWFgwc2V6RTZXek5kZlN4N05UcGJNU3cwWFgwc2V6VTZXeklzTWwwc056bzFMRGc2Tml3NU9qY3NNVEE2T0N3eE1UbzVMREV5T2pFd0xERXpPakV4TERFME9sc3hMREV5WFN3eE5UcGJNU3d5TUYwc01UWTZNVGNzTVRrNld6RXNNak5kTERJME9qRTFMREkzT2pFMkxESTVPbHN4TERJeFhTd3pORHBiTVN3eU1sMHNNems2V3pJc01sMHNORFE2V3pJc01sMHNORGM2V3pJc01sMHNORGc2V3pFc01UTmRMRFV4T2xzeExERTBYU3cxTlRwYk1Td3hPRjBzTlRrNk1Ua3NOakE2V3pFc01qUmRmU3g3TVRwYk1pd3hYWDBzZXpVNld6SXNORGRkTERFME9sc3lMRFEzWFN3eE5UcGJNaXcwTjEwc01UazZXeklzTkRkZExESTVPbHN5TERRM1hTd3pORHBiTWl3ME4xMHNNems2V3pJc05EZGRMRFEwT2xzeUxEUTNYU3cwTnpwYk1pdzBOMTBzTkRnNld6SXNORGRkTERVeE9sc3lMRFEzWFN3MU5UcGJNaXcwTjEwc05qQTZXeklzTkRkZGZTeDdOVHBiTWl3elhTd3hORHBiTWl3elhTd3hOVHBiTWl3elhTd3hPVHBiTWl3elhTd3lPVHBiTWl3elhTd3pORHBiTWl3elhTd3pPVHBiTWl3elhTdzBORHBiTWl3elhTdzBOenBiTWl3elhTdzBPRHBiTWl3elhTdzFNVHBiTWl3elhTdzFOVHBiTWl3elhTdzJNRHBiTWl3elhYMHNlelU2V3pJc05GMHNNVFE2V3pJc05GMHNNVFU2V3pJc05GMHNNVGs2V3pJc05GMHNNams2V3pJc05GMHNNelE2V3pJc05GMHNNems2V3pJc05GMHNORFE2V3pJc05GMHNORGM2V3pJc05GMHNORGc2V3pJc05GMHNOVEU2V3pJc05GMHNOVFU2V3pJc05GMHNOakE2V3pJc05GMTlMSHMxT2xzeUxEVmRMREUwT2xzeUxEVmRMREUxT2xzeUxEVmRMREU1T2xzeUxEVmRMREk1T2xzeUxEVmRMRE0wT2xzeUxEVmRMRE01T2xzeUxEVmRMRFEwT2xzeUxEVmRMRFEzT2xzeUxEVmRMRFE0T2xzeUxEVmRMRFV4T2xzeUxEVmRMRFUxT2xzeUxEVmRMRFl3T2xzeUxEVmRmU3g3TlRwYk1pdzJYU3d4TkRwYk1pdzJYU3d4TlRwYk1pdzJYU3d4T1RwYk1pdzJYU3d5T1RwYk1pdzJYU3d6TkRwYk1pdzJYU3d6T1RwYk1pdzJYU3cwTkRwYk1pdzJYU3cwTnpwYk1pdzJYU3cwT0RwYk1pdzJYU3cxTVRwYk1pdzJYU3cxTlRwYk1pdzJYU3cyTURwYk1pdzJYWDBzZXpVNld6SXNOMTBzTVRRNld6SXNOMTBzTVRVNld6SXNOMTBzTVRrNld6SXNOMTBzTWprNld6SXNOMTBzTXpRNld6SXNOMTBzTXprNld6SXNOMTBzTkRRNld6SXNOMTBzTkRjNld6SXNOMTBzTkRnNld6SXNOMTBzTlRFNld6SXNOMTBzTlRVNld6SXNOMTBzTmpBNld6SXNOMTE5TEhzMU9sc3lMRGhkTERFME9sc3lMRGhkTERFMU9sc3lMRGhkTERFNU9sc3lMRGhkTERJNU9sc3lMRGhkTERNME9sc3lMRGhkTERNNU9sc3lMRGhkTERRME9sc3lMRGhkTERRM09sc3lMRGhkTERRNE9sc3lMRGhkTERVeE9sc3lMRGhkTERVMU9sc3lMRGhkTERZd09sc3lMRGhkZlN4N05UcGJNaXc1WFN3eE5EcGJNaXc1WFN3eE5UcGJNaXc1WFN3eE9UcGJNaXc1WFN3eU9UcGJNaXc1WFN3ek5EcGJNaXc1WFN3ek9UcGJNaXc1WFN3ME5EcGJNaXc1WFN3ME56cGJNaXc1WFN3ME9EcGJNaXc1WFN3MU1UcGJNaXc1WFN3MU5UcGJNaXc1WFN3Mk1EcGJNaXc1WFgwc2V6SXdPakkxTERjeU9sc3hMRE0xWFN3M09Eb3lOaXczT1RveU55dzRNRHBiTVN3eU9GMHNPREU2V3pFc01qbGRMRGd5T2xzeExETXdYU3c0TXpwYk1Td3pNVjBzT0RRNld6RXNNekpkTERnMU9sc3hMRE0wWFN3NE5qb3pNMzBzZXpJd09qTTJMRGN5T2xzeExETTFYU3czT0RveU5pdzNPVG95Tnl3NE1EcGJNU3d5T0Ywc09ERTZXekVzTWpsZExEZ3lPbHN4TERNd1hTdzRNenBiTVN3ek1WMHNPRFE2V3pFc016SmRMRGcxT2xzeExETTBYU3c0Tmpvek0zMHNlelE2TXpjc05qb3pMREUwT2xzeUxEUTJYU3d4TlRwYk1pdzBObDBzTVRrNld6SXNORFpkTERJNU9sc3lMRFEyWFN3ek5EcGJNaXcwTmwwc016azZXeklzTkRaZExEUTBPbHN5TERRMlhTdzBOenBiTWl3ME5sMHNORGc2V3pJc05EWmRMRFV4T2xzeUxEUTJYU3cxTlRwYk1pdzBObDBzTmpBNld6SXNORFpkZlN4N05Eb3pPQ3cyT2pNc01UUTZXeklzTkRaZExERTFPbHN5TERRMlhTd3hPVHBiTWl3ME5sMHNNams2V3pJc05EWmRMRE0wT2xzeUxEUTJYU3cwTkRwYk1pdzBObDBzTkRjNld6SXNORFpkTERRNE9sc3lMRFEyWFN3MU1UcGJNaXcwTmwwc05UVTZXeklzTkRaZExEWXdPbHN5TERRMlhYMHNlekUxT2xzeUxEUTRYU3d4Tnpvek9Td3hPRHBiTWl3ME9GMTlMSHN5TURvME1TdzFOam8wTUN3Mk5EbzBNaXcyTlRwYk1TdzBNMTBzTnpJNld6RXNNelZkTERjNE9qSTJMRGM1T2pJM0xEZ3dPbHN4TERJNFhTdzRNVHBiTVN3eU9WMHNPREk2V3pFc016QmRMRGd6T2xzeExETXhYU3c0TkRwYk1Td3pNbDBzT0RVNld6RXNNelJkTERnMk9qTXpmU3g3TkRvME5DdzJPak1zTVRRNld6SXNORFpkTERFMU9sc3lMRFEyWFN3eE9UcGJNaXcwTmwwc01qazZXeklzTkRaZExETTBPbHN5TERRMlhTdzBOenBiTWl3ME5sMHNORGc2V3pJc05EWmRMRFV4T2xzeUxEUTJYU3cxTlRwYk1pdzBObDBzTmpBNld6SXNORFpkZlN4N05UcGJNaXd4TUYwc01UUTZXeklzTVRCZExERTFPbHN5TERFd1hTd3hPRHBiTWl3eE1GMHNNVGs2V3pJc01UQmRMREk1T2xzeUxERXdYU3d6TkRwYk1pd3hNRjBzTXprNld6SXNNVEJkTERRME9sc3lMREV3WFN3ME56cGJNaXd4TUYwc05EZzZXeklzTVRCZExEVXhPbHN5TERFd1hTdzFOVHBiTWl3eE1GMHNOakE2V3pJc01UQmRmU3g3TWpBNk5EVXNOekk2V3pFc016VmRMRGM0T2pJMkxEYzVPakkzTERnd09sc3hMREk0WFN3NE1UcGJNU3d5T1Ywc09ESTZXekVzTXpCZExEZ3pPbHN4TERNeFhTdzRORHBiTVN3ek1sMHNPRFU2V3pFc016UmRMRGcyT2pNemZTeDdNakE2TkRZc056STZXekVzTXpWZExEYzRPakkyTERjNU9qSTNMRGd3T2xzeExESTRYU3c0TVRwYk1Td3lPVjBzT0RJNld6RXNNekJkTERnek9sc3hMRE14WFN3NE5EcGJNU3d6TWwwc09EVTZXekVzTXpSZExEZzJPak16ZlN4N01qQTZORGNzTnpJNld6RXNNelZkTERjNE9qSTJMRGM1T2pJM0xEZ3dPbHN4TERJNFhTdzRNVHBiTVN3eU9WMHNPREk2V3pFc016QmRMRGd6T2xzeExETXhYU3c0TkRwYk1Td3pNbDBzT0RVNld6RXNNelJkTERnMk9qTXpmU3g3TWpBNk5ERXNOVFk2TkRnc05qUTZORElzTmpVNld6RXNORE5kTERjeU9sc3hMRE0xWFN3M09Eb3lOaXczT1RveU55dzRNRHBiTVN3eU9GMHNPREU2V3pFc01qbGRMRGd5T2xzeExETXdYU3c0TXpwYk1Td3pNVjBzT0RRNld6RXNNekpkTERnMU9sc3hMRE0wWFN3NE5qb3pNMzBzZXpNek9sc3lMRGM0WFN3ME9UbzBPU3cyTlRwYk1pdzNPRjBzTnpJNld6SXNOemhkTERnd09sc3lMRGM0WFN3NE1UcGJNaXczT0Ywc09ESTZXeklzTnpoZExEZ3pPbHN5TERjNFhTdzRORHBiTWl3M09GMHNPRFU2V3pJc056aGRmU3g3TWpNNld6SXNNek5kTERNek9sc3lMRE16WFN3MU5EcGJNaXd6TTEwc05qVTZXeklzTXpOZExEWTRPbHN5TERNelhTdzNNanBiTWl3ek0xMHNOelU2V3pJc016TmRMRGd3T2xzeUxETXpYU3c0TVRwYk1pd3pNMTBzT0RJNld6SXNNek5kTERnek9sc3lMRE16WFN3NE5EcGJNaXd6TTEwc09EVTZXeklzTXpOZGZTeDdNak02V3pJc016UmRMRE16T2xzeUxETTBYU3cxTkRwYk1pd3pORjBzTmpVNld6SXNNelJkTERZNE9sc3lMRE0wWFN3M01qcGJNaXd6TkYwc056VTZXeklzTXpSZExEZ3dPbHN5TERNMFhTdzRNVHBiTWl3ek5GMHNPREk2V3pJc016UmRMRGd6T2xzeUxETTBYU3c0TkRwYk1pd3pORjBzT0RVNld6SXNNelJkZlN4N01qTTZXeklzTXpWZExETXpPbHN5TERNMVhTdzFORHBiTWl3ek5WMHNOalU2V3pJc016VmRMRFk0T2xzeUxETTFYU3czTWpwYk1pd3pOVjBzTnpVNld6SXNNelZkTERnd09sc3lMRE0xWFN3NE1UcGJNaXd6TlYwc09ESTZXeklzTXpWZExEZ3pPbHN5TERNMVhTdzRORHBiTWl3ek5WMHNPRFU2V3pJc016VmRmU3g3TWpNNld6SXNNelpkTERNek9sc3lMRE0yWFN3MU5EcGJNaXd6Tmwwc05qVTZXeklzTXpaZExEWTRPbHN5TERNMlhTdzNNanBiTWl3ek5sMHNOelU2V3pJc016WmRMRGd3T2xzeUxETTJYU3c0TVRwYk1pd3pObDBzT0RJNld6SXNNelpkTERnek9sc3lMRE0yWFN3NE5EcGJNaXd6Tmwwc09EVTZXeklzTXpaZGZTeDdNak02V3pJc016ZGRMRE16T2xzeUxETTNYU3cxTkRwYk1pd3pOMTBzTmpVNld6SXNNemRkTERZNE9sc3lMRE0zWFN3M01qcGJNaXd6TjEwc056VTZXeklzTXpkZExEZ3dPbHN5TERNM1hTdzRNVHBiTWl3ek4xMHNPREk2V3pJc016ZGRMRGd6T2xzeUxETTNYU3c0TkRwYk1pd3pOMTBzT0RVNld6SXNNemRkZlN4N01qTTZXeklzTXpoZExETXpPbHN5TERNNFhTdzFORHBiTWl3ek9GMHNOalU2V3pJc016aGRMRFk0T2xzeUxETTRYU3czTWpwYk1pd3pPRjBzTnpVNld6SXNNemhkTERnd09sc3lMRE00WFN3NE1UcGJNaXd6T0Ywc09ESTZXeklzTXpoZExEZ3pPbHN5TERNNFhTdzRORHBiTWl3ek9GMHNPRFU2V3pJc016aGRmU3g3TWpNNld6SXNNemxkTERNek9sc3lMRE01WFN3MU5EcGJNaXd6T1Ywc05qVTZXeklzTXpsZExEWTRPbHN5TERNNVhTdzNNanBiTWl3ek9WMHNOelU2V3pJc016bGRMRGd3T2xzeUxETTVYU3c0TVRwYk1pd3pPVjBzT0RJNld6SXNNemxkTERnek9sc3lMRE01WFN3NE5EcGJNaXd6T1Ywc09EVTZXeklzTXpsZGZTeDdNak02V3pJc05ETmRMRE16T2xzeUxEUXpYU3cxTkRwYk1pdzBNMTBzTmpVNld6SXNORE5kTERZNE9sc3lMRFF6WFN3M01qcGJNaXcwTTEwc056VTZXeklzTkROZExEZ3dPbHN5TERRelhTdzRNVHBiTWl3ME0xMHNPREk2V3pJc05ETmRMRGd6T2xzeUxEUXpYU3c0TkRwYk1pdzBNMTBzT0RVNld6SXNORE5kTERnM09sc3hMRFV3WFgwc2V6Y3lPbHN4TERNMVhTdzROam8xTVgwc2V6SXpPbHN5TERRMVhTd3pNenBiTWl3ME5WMHNOVFE2V3pJc05EVmRMRFkxT2xzeUxEUTFYU3cyT0RwYk1pdzBOVjBzTnpJNld6SXNORFZkTERjMU9sc3lMRFExWFN3NE1EcGJNaXcwTlYwc09ERTZXeklzTkRWZExEZ3lPbHN5TERRMVhTdzRNenBiTWl3ME5WMHNPRFE2V3pJc05EVmRMRGcxT2xzeUxEUTFYU3c0TnpwYk1pdzBOVjE5TEhzMU1qbzFNaXcxTkRwYk1pdzRNbDBzTmpVNld6SXNPREpkTERjeU9sc3lMRGd5WFN3NE1EcGJNaXc0TWwwc09ERTZXeklzT0RKZExEZ3lPbHN5TERneVhTdzRNenBiTWl3NE1sMHNPRFE2V3pJc09ESmRMRGcxT2xzeUxEZ3lYWDBzZXpJMU9qVXpMRE00T2pVMUxETTVPbHN4TERVM1hTdzBNem8xTml3ME5EcGJNU3cxT0Ywc05EVTZOVFFzTkRjNld6SXNOVFJkZlN4N01qZzZOVGtzTkRNNk5qQXNORFE2V3pFc05UaGRMRFEzT2xzeUxEVTJYWDBzZXpFek9qWXlMREUxT2xzeExESXdYU3d4T0RwYk1TdzJNVjE5TEhzek16cGJNaXc0Tmwwc05UYzZOak1zTmpVNld6SXNPRFpkTERjeU9sc3lMRGcyWFN3NE1EcGJNaXc0Tmwwc09ERTZXeklzT0RaZExEZ3lPbHN5TERnMlhTdzRNenBiTWl3NE5sMHNPRFE2V3pJc09EWmRMRGcxT2xzeUxEZzJYWDBzZXpNek9sc3lMRFF3WFN3Mk5UcGJNaXcwTUYwc056STZXeklzTkRCZExEZ3dPbHN5TERRd1hTdzRNVHBiTWl3ME1GMHNPREk2V3pJc05EQmRMRGd6T2xzeUxEUXdYU3c0TkRwYk1pdzBNRjBzT0RVNld6SXNOREJkZlN4N016TTZXeklzTkRGZExEWTFPbHN5TERReFhTdzNNanBiTWl3ME1WMHNPREE2V3pJc05ERmRMRGd4T2xzeUxEUXhYU3c0TWpwYk1pdzBNVjBzT0RNNld6SXNOREZkTERnME9sc3lMRFF4WFN3NE5UcGJNaXcwTVYxOUxIc3lNRG8yTkN3M01qcGJNU3d6TlYwc056ZzZNallzTnprNk1qY3NPREE2V3pFc01qaGRMRGd4T2xzeExESTVYU3c0TWpwYk1Td3pNRjBzT0RNNld6RXNNekZkTERnME9sc3hMRE15WFN3NE5UcGJNU3d6TkYwc09EWTZNek45TEhzeU5qbzJOU3cwTnpwYk1TdzJObDE5TEhzek1EbzJOeXd6TXpwYk1pdzFPRjBzTmpVNld6SXNOVGhkTERjeU9sc3lMRFU0WFN3M05UcGJNaXcxT0Ywc09EQTZXeklzTlRoZExEZ3hPbHN5TERVNFhTdzRNanBiTWl3MU9GMHNPRE02V3pJc05UaGRMRGcwT2xzeUxEVTRYU3c0TlRwYk1pdzFPRjE5TEhzek16cGJNaXcyTkYwc016VTZOamdzTmpVNld6SXNOalJkTERjeU9sc3lMRFkwWFN3M05UcGJNaXcyTkYwc09EQTZXeklzTmpSZExEZ3hPbHN5TERZMFhTdzRNanBiTWl3Mk5GMHNPRE02V3pJc05qUmRMRGcwT2xzeUxEWTBYU3c0TlRwYk1pdzJORjE5TEhzeU1UbzJPU3d5TXpwYk1pdzFNRjBzTmpVNld6SXNOVEJkTERjeU9sc3lMRFV3WFN3NE1EcGJNaXcxTUYwc09ERTZXeklzTlRCZExEZ3lPbHN5TERVd1hTdzRNenBiTWl3MU1GMHNPRFE2V3pJc05UQmRMRGcxT2xzeUxEVXdYWDBzZXpNek9sc3lMRGt3WFN3Mk1UbzNNQ3cyTlRwYk1pdzVNRjBzTnpJNld6SXNPVEJkTERnd09sc3lMRGt3WFN3NE1UcGJNaXc1TUYwc09ESTZXeklzT1RCZExEZ3pPbHN5TERrd1hTdzRORHBiTWl3NU1GMHNPRFU2V3pJc09UQmRmU3g3TWpBNk56UXNNek02V3pJc09EQmRMRFV3T2pjeExEWXpPamN5TERZME9qYzFMRFkxT2xzeExEUXpYU3cyT1RvM015dzNNRG8zTml3M01UbzNOeXczTWpwYk1TdzNPRjBzTnpnNk1qWXNOems2TWpjc09EQTZXekVzTWpoZExEZ3hPbHN4TERJNVhTdzRNanBiTVN3ek1GMHNPRE02V3pFc016RmRMRGcwT2xzeExETXlYU3c0TlRwYk1Td3pORjBzT0RZNk16TjlMSHMzTWpwYk1TdzNPVjE5TEhzeU16cGJNaXcwTWwwc016TTZXeklzTkRKZExEVTBPbHN5TERReVhTdzJOVHBiTWl3ME1sMHNOamc2V3pJc05ESmRMRGN5T2xzeUxEUXlYU3czTlRwYk1pdzBNbDBzT0RBNld6SXNOREpkTERneE9sc3lMRFF5WFN3NE1qcGJNaXcwTWwwc09ETTZXeklzTkRKZExEZzBPbHN5TERReVhTdzROVHBiTWl3ME1sMHNPRGM2V3pFc05UQmRmU3g3TWpBNk56UXNOVE02T0RBc05UUTZXeklzT0RSZExEWXpPamd4TERZME9qYzFMRFkxT2xzeExEUXpYU3cyT1RvNE1pdzNNRG8zTml3M01UbzNOeXczTWpwYk1TdzNPRjBzTnpnNk1qWXNOems2TWpjc09EQTZXekVzTWpoZExEZ3hPbHN4TERJNVhTdzRNanBiTVN3ek1GMHNPRE02V3pFc016RmRMRGcwT2xzeExETXlYU3c0TlRwYk1Td3pORjBzT0RZNk16TjlMSHN5TmpvNE15dzBOenBiTVN3Mk5sMTlMSHMwTnpwYk1pdzFOVjE5TEhzME9qZzBMRFk2TXl3eE5EcGJNaXcwTmwwc01UVTZXeklzTkRaZExERTVPbHN5TERRMlhTd3lPVHBiTWl3ME5sMHNNelE2V3pJc05EWmRMRE01T2xzeUxEUTJYU3cwTkRwYk1pdzBObDBzTkRjNld6SXNORFpkTERRNE9sc3lMRFEyWFN3MU1UcGJNaXcwTmwwc05UVTZXeklzTkRaZExEWXdPbHN5TERRMlhYMHNlelEzT2xzeUxESXdYWDBzZXpJd09qZzFMRGN5T2xzeExETTFYU3czT0RveU5pdzNPVG95Tnl3NE1EcGJNU3d5T0Ywc09ERTZXekVzTWpsZExEZ3lPbHN4TERNd1hTdzRNenBiTVN3ek1WMHNPRFE2V3pFc016SmRMRGcxT2xzeExETTBYU3c0Tmpvek0zMHNlelE2T0RZc05qb3pMREUwT2xzeUxEUTJYU3d4TlRwYk1pdzBObDBzTVRrNld6SXNORFpkTERJNU9sc3lMRFEyWFN3ek5EcGJNaXcwTmwwc05EYzZXeklzTkRaZExEUTRPbHN5TERRMlhTdzFNVHBiTWl3ME5sMHNOVFU2V3pJc05EWmRMRFl3T2xzeUxEUTJYWDBzZXpJMk9qZzNMRFEzT2xzeExEWTJYWDBzZXpRM09sc3lMRFUzWFgwc2V6VTZXeklzTVRGZExERTBPbHN5TERFeFhTd3hOVHBiTWl3eE1WMHNNVGs2V3pJc01URmRMREk1T2xzeUxERXhYU3d6TkRwYk1pd3hNVjBzTXprNld6SXNNVEZkTERRME9sc3lMREV4WFN3ME56cGJNaXd4TVYwc05EZzZXeklzTVRGZExEVXhPbHN5TERFeFhTdzFOVHBiTWl3eE1WMHNOakE2V3pJc01URmRmU3g3TVRVNld6SXNORGxkTERFNE9sc3lMRFE1WFgwc2V6SXdPamMwTERNek9sc3lMRGc0WFN3MU9EbzRPQ3cyTXpvNE9TdzJORG8zTlN3Mk5UcGJNU3cwTTEwc05qazZPVEFzTnpBNk56WXNOekU2Tnpjc056STZXekVzTnpoZExEYzRPakkyTERjNU9qSTNMRGd3T2xzeExESTRYU3c0TVRwYk1Td3lPVjBzT0RJNld6RXNNekJkTERnek9sc3hMRE14WFN3NE5EcGJNU3d6TWwwc09EVTZXekVzTXpSZExEZzJPak16ZlN4N05qVTZXeklzT1RSZExEWTJPamt4TERZNE9sc3lMRGswWFN3M01qcGJNaXc1TkYwc09EQTZXeklzT1RSZExEZ3hPbHN5TERrMFhTdzRNanBiTWl3NU5GMHNPRE02V3pJc09UUmRMRGcwT2xzeUxEazBYU3c0TlRwYk1pdzVORjE5TEhzMU9sc3lMREkxWFN3eE5EcGJNaXd5TlYwc01UVTZXeklzTWpWZExERTVPbHN5TERJMVhTd3lPVHBiTWl3eU5WMHNNelE2V3pJc01qVmRMRE01T2xzeUxESTFYU3cwTkRwYk1pd3lOVjBzTkRjNld6SXNNalZkTERRNE9sc3lMREkxWFN3MU1UcGJNaXd5TlYwc05UVTZXeklzTWpWZExEWXdPbHN5TERJMVhYMHNlekl3T2preUxEY3lPbHN4TERNMVhTdzNPRG95Tml3M09Ub3lOeXc0TURwYk1Td3lPRjBzT0RFNld6RXNNamxkTERneU9sc3hMRE13WFN3NE16cGJNU3d6TVYwc09EUTZXekVzTXpKZExEZzFPbHN4TERNMFhTdzROam96TTMwc2V6SXdPamMwTERNeE9qa3pMRE16T2xzeUxEWXdYU3cyTXpvNU5DdzJORG8zTlN3Mk5UcGJNU3cwTTEwc05qazZPVFVzTnpBNk56WXNOekU2Tnpjc056STZXekVzTnpoZExEYzFPbHN5TERZd1hTdzNPRG95Tml3M09Ub3lOeXc0TURwYk1Td3lPRjBzT0RFNld6RXNNamxkTERneU9sc3hMRE13WFN3NE16cGJNU3d6TVYwc09EUTZXekVzTXpKZExEZzFPbHN4TERNMFhTdzROam96TTMwc2V6SXdPamMwTERNek9sc3lMRFkyWFN3ek5qbzVOaXcyTXpvNU55dzJORG8zTlN3Mk5UcGJNU3cwTTEwc05qazZPVGdzTnpBNk56WXNOekU2Tnpjc056STZXekVzTnpoZExEYzFPbHN5TERZMlhTdzNPRG95Tml3M09Ub3lOeXc0TURwYk1Td3lPRjBzT0RFNld6RXNNamxkTERneU9sc3hMRE13WFN3NE16cGJNU3d6TVYwc09EUTZXekVzTXpKZExEZzFPbHN4TERNMFhTdzROam96TTMwc2V6SXdPamMwTERJeU9qazVMREl6T2xzeUxEVXlYU3cyTXpveE1EQXNOalE2TnpVc05qVTZXekVzTkROZExEWTVPakV3TVN3M01EbzNOaXczTVRvM055dzNNanBiTVN3M09GMHNOemc2TWpZc056azZNamNzT0RBNld6RXNNamhkTERneE9sc3hMREk1WFN3NE1qcGJNU3d6TUYwc09ETTZXekVzTXpGZExEZzBPbHN4TERNeVhTdzROVHBiTVN3ek5GMHNPRFk2TXpOOUxIc3lNRG8zTkN3ek16cGJNaXc1TWwwc05qSTZNVEF5TERZek9qRXdNeXcyTkRvM05TdzJOVHBiTVN3ME0xMHNOams2TVRBMExEY3dPamMyTERjeE9qYzNMRGN5T2xzeExEYzRYU3czT0RveU5pdzNPVG95Tnl3NE1EcGJNU3d5T0Ywc09ERTZXekVzTWpsZExEZ3lPbHN4TERNd1hTdzRNenBiTVN3ek1WMHNPRFE2V3pFc016SmRMRGcxT2xzeExETTBYU3c0Tmpvek0zMHNlek16T2xzeExERXdOVjE5TEhzek16cGJNaXczT1Ywc05qVTZXeklzTnpsZExEY3lPbHN5TERjNVhTdzRNRHBiTWl3M09WMHNPREU2V3pJc056bGRMRGd5T2xzeUxEYzVYU3c0TXpwYk1pdzNPVjBzT0RRNld6SXNOemxkTERnMU9sc3lMRGM1WFgwc2V6TXpPbHN5TERneFhYMHNlekl6T2xzeUxESTNYU3d6TXpwYk1pd3lOMTBzTlRRNld6SXNNamRkTERZMU9sc3lMREkzWFN3Mk9EcGJNaXd5TjEwc056STZXeklzTWpkZExEYzFPbHN5TERJM1hTdzRNRHBiTWl3eU4xMHNPREU2V3pJc01qZGRMRGd5T2xzeUxESTNYU3c0TXpwYk1pd3lOMTBzT0RRNld6SXNNamRkTERnMU9sc3lMREkzWFgwc2V6SXpPbHN5TERJNFhTd3pNenBiTWl3eU9GMHNOVFE2V3pJc01qaGRMRFkxT2xzeUxESTRYU3cyT0RwYk1pd3lPRjBzTnpJNld6SXNNamhkTERjMU9sc3lMREk0WFN3NE1EcGJNaXd5T0Ywc09ERTZXeklzTWpoZExEZ3lPbHN5TERJNFhTdzRNenBiTWl3eU9GMHNPRFE2V3pJc01qaGRMRGcxT2xzeUxESTRYWDBzZXpJek9sc3lMRE13WFN3ek16cGJNaXd6TUYwc05UUTZXeklzTXpCZExEWTRPbHN5TERNd1hTdzNNVG94TURZc056STZXekVzTVRBM1hTdzNOVHBiTWl3ek1GMTlMSHN5TXpwYk1pdzVPRjBzTXpNNld6SXNPVGhkTERVME9sc3lMRGs0WFN3Mk9EcGJNaXc1T0Ywc056STZXeklzT1RoZExEYzFPbHN5TERrNFhYMHNlekl6T2xzeUxEUTFYU3d6TXpwYk1pdzBOVjBzTlRRNld6SXNORFZkTERZMU9sc3lMRFExWFN3Mk9EcGJNaXcwTlYwc056STZXeklzTkRWZExEY3pPbHN4TERFd09GMHNOelU2V3pJc05EVmRMRGd3T2xzeUxEUTFYU3c0TVRwYk1pdzBOVjBzT0RJNld6SXNORFZkTERnek9sc3lMRFExWFN3NE5EcGJNaXcwTlYwc09EVTZXeklzTkRWZExEZzNPbHN5TERRMVhYMHNlekl6T2xzeUxEUTBYU3d6TXpwYk1pdzBORjBzTlRRNld6SXNORFJkTERZMU9sc3lMRFEwWFN3Mk9EcGJNaXcwTkYwc056STZXeklzTkRSZExEYzFPbHN5TERRMFhTdzRNRHBiTWl3ME5GMHNPREU2V3pJc05EUmRMRGd5T2xzeUxEUTBYU3c0TXpwYk1pdzBORjBzT0RRNld6SXNORFJkTERnMU9sc3lMRFEwWFN3NE56cGJNaXcwTkYxOUxIczFORHBiTVN3eE1EbGRmU3g3TlRRNld6SXNPRE5kTERZMU9sc3lMRGd6WFN3M01qcGJNaXc0TTEwc09EQTZXeklzT0ROZExEZ3hPbHN5TERnelhTdzRNanBiTWl3NE0xMHNPRE02V3pJc09ETmRMRGcwT2xzeUxEZ3pYU3c0TlRwYk1pdzRNMTE5TEhzMU5EcGJNaXc0TlYxOUxIczFPbHN5TERFelhTd3hORHBiTWl3eE0xMHNNVFU2V3pJc01UTmRMREU1T2xzeUxERXpYU3d5T1RwYk1pd3hNMTBzTXpRNld6SXNNVE5kTERNNU9sc3lMREV6WFN3ME5EcGJNaXd4TTEwc05EYzZXeklzTVROZExEUTRPbHN5TERFelhTdzFNVHBiTWl3eE0xMHNOVFU2V3pJc01UTmRMRFl3T2xzeUxERXpYWDBzZXpNNE9qVTFMRE01T2xzeExEVTNYU3cwTXpvMU5pdzBORHBiTVN3MU9GMHNORFU2TVRFeExEUTJPakV4TUN3ME56cGJNaXczTmwxOUxIc3pNenBiTWl3M01GMHNOREE2TVRFeUxEWTFPbHN5TERjd1hTdzNNanBiTWl3M01GMHNOelU2V3pJc056QmRMRGd3T2xzeUxEY3dYU3c0TVRwYk1pdzNNRjBzT0RJNld6SXNOekJkTERnek9sc3lMRGN3WFN3NE5EcGJNaXczTUYwc09EVTZXeklzTnpCZGZTeDdORGM2V3pJc01UaGRmU3g3TlRwYk1pd3hORjBzTVRRNld6SXNNVFJkTERFMU9sc3lMREUwWFN3eE9UcGJNaXd4TkYwc01qazZXeklzTVRSZExETTBPbHN5TERFMFhTd3pPVHBiTWl3eE5GMHNORFE2V3pJc01UUmRMRFEzT2xzeUxERTBYU3cwT0RwYk1pd3hORjBzTlRFNld6SXNNVFJkTERVMU9sc3lMREUwWFN3Mk1EcGJNaXd4TkYxOUxIc3pNenBiTVN3eE1UTmRmU3g3TXpNNld6SXNPRGRkTERZMU9sc3lMRGczWFN3M01qcGJNaXc0TjEwc09EQTZXeklzT0RkZExEZ3hPbHN5TERnM1hTdzRNanBiTWl3NE4xMHNPRE02V3pJc09EZGRMRGcwT2xzeUxEZzNYU3c0TlRwYk1pdzROMTE5TEhzek16cGJNaXc0T1YxOUxIc3lNRG8zTkN3Mk16b3hNVFVzTmpRNk56VXNOalU2V3pFc05ETmRMRFkzT2pFeE5DdzJPRHBiTWl3NU5sMHNOams2TVRFMkxEY3dPamMyTERjeE9qYzNMRGN5T2xzeExEYzRYU3czT0RveU5pdzNPVG95Tnl3NE1EcGJNU3d5T0Ywc09ERTZXekVzTWpsZExEZ3lPbHN4TERNd1hTdzRNenBiTVN3ek1WMHNPRFE2V3pFc016SmRMRGcxT2xzeExETTBYU3c0Tmpvek0zMHNlek16T2xzeExERXhOMTE5TEhzek1qb3hNVGdzTXpNNld6SXNOakpkTERjME9qRXhPU3czTlRwYk1Td3hNakJkZlN4N016TTZXeklzTlRsZExEWTFPbHN5TERVNVhTdzNNanBiTWl3MU9WMHNOelU2V3pJc05UbGRMRGd3T2xzeUxEVTVYU3c0TVRwYk1pdzFPVjBzT0RJNld6SXNOVGxkTERnek9sc3lMRFU1WFN3NE5EcGJNaXcxT1Ywc09EVTZXeklzTlRsZGZTeDdNek02V3pJc05qRmRMRGMxT2xzeUxEWXhYWDBzZXpNek9sc3lMRFk0WFN3ek56b3hNakVzTnpRNk1USXlMRGMxT2xzeExERXlNRjE5TEhzek16cGJNaXcyTlYwc05qVTZXeklzTmpWZExEY3lPbHN5TERZMVhTdzNOVHBiTWl3Mk5WMHNPREE2V3pJc05qVmRMRGd4T2xzeUxEWTFYU3c0TWpwYk1pdzJOVjBzT0RNNld6SXNOalZkTERnME9sc3lMRFkxWFN3NE5UcGJNaXcyTlYxOUxIc3pNenBiTWl3Mk4xMHNOelU2V3pJc05qZGRmU3g3TWpNNld6RXNNVEl6WFgwc2V6SXpPbHN5TERVeFhTdzJOVHBiTWl3MU1WMHNOekk2V3pJc05URmRMRGd3T2xzeUxEVXhYU3c0TVRwYk1pdzFNVjBzT0RJNld6SXNOVEZkTERnek9sc3lMRFV4WFN3NE5EcGJNaXcxTVYwc09EVTZXeklzTlRGZGZTeDdNak02V3pJc05UTmRmU3g3TXpNNld6RXNNVEkwWFgwc2V6TXpPbHN5TERreFhTdzJOVHBiTWl3NU1WMHNOekk2V3pJc09URmRMRGd3T2xzeUxEa3hYU3c0TVRwYk1pdzVNVjBzT0RJNld6SXNPVEZkTERnek9sc3lMRGt4WFN3NE5EcGJNaXc1TVYwc09EVTZXeklzT1RGZGZTeDdNek02V3pJc09UTmRmU3g3TlRwYk1pd3lNbDBzTVRRNld6SXNNakpkTERFMU9sc3lMREl5WFN3eE9UcGJNaXd5TWwwc01qazZXeklzTWpKZExETTBPbHN5TERJeVhTd3pPVHBiTWl3eU1sMHNORFE2V3pJc01qSmRMRFEzT2xzeUxESXlYU3cwT0RwYk1pd3lNbDBzTlRFNld6SXNNakpkTERVMU9sc3lMREl5WFN3Mk1EcGJNaXd5TWwxOUxIc3lNenBiTWl3NU9WMHNNek02V3pJc09UbGRMRFUwT2xzeUxEazVYU3cyT0RwYk1pdzVPVjBzTnpJNld6SXNPVGxkTERjMU9sc3lMRGs1WFgwc2V6Y3pPbHN4TERFd09GMTlMSHN5TURvM05DdzJNem94TWpVc05qUTZOelVzTmpVNld6RXNORE5kTERjeU9sc3hMRE0xWFN3M09Eb3lOaXczT1RveU55dzRNRHBiTVN3eU9GMHNPREU2V3pFc01qbGRMRGd5T2xzeExETXdYU3c0TXpwYk1Td3pNVjBzT0RRNld6RXNNekpkTERnMU9sc3hMRE0wWFN3NE5qb3pNMzBzZXpVNld6SXNNak5kTERFME9sc3lMREl6WFN3eE5UcGJNaXd5TTEwc01UazZXeklzTWpOZExESTVPbHN5TERJelhTd3pORHBiTWl3eU0xMHNNems2V3pJc01qTmRMRFEwT2xzeUxESXpYU3cwTnpwYk1pd3lNMTBzTkRnNld6SXNNak5kTERVeE9sc3lMREl6WFN3MU5UcGJNaXd5TTEwc05qQTZXeklzTWpOZGZTeDdORGM2V3pJc01UbGRmU3g3TkRjNld6SXNOemRkZlN4N01qQTZOelFzTXpNNld6SXNOekpkTERReE9qRXlOaXcyTXpveE1qY3NOalE2TnpVc05qVTZXekVzTkROZExEWTVPakV5T0N3M01EbzNOaXczTVRvM055dzNNanBiTVN3M09GMHNOelU2V3pJc056SmRMRGM0T2pJMkxEYzVPakkzTERnd09sc3hMREk0WFN3NE1UcGJNU3d5T1Ywc09ESTZXekVzTXpCZExEZ3pPbHN4TERNeFhTdzRORHBiTVN3ek1sMHNPRFU2V3pFc016UmRMRGcyT2pNemZTeDdOVHBiTWl3eU5GMHNNVFE2V3pJc01qUmRMREUxT2xzeUxESTBYU3d4T1RwYk1pd3lORjBzTWprNld6SXNNalJkTERNME9sc3lMREkwWFN3ek9UcGJNaXd5TkYwc05EUTZXeklzTWpSZExEUTNPbHN5TERJMFhTdzBPRHBiTWl3eU5GMHNOVEU2V3pJc01qUmRMRFUxT2xzeUxESTBYU3cyTURwYk1pd3lORjE5TEhzMk9EcGJNU3d4TWpsZGZTeDdOalU2V3pJc09UVmRMRFk0T2xzeUxEazFYU3czTWpwYk1pdzVOVjBzT0RBNld6SXNPVFZkTERneE9sc3lMRGsxWFN3NE1qcGJNaXc1TlYwc09ETTZXeklzT1RWZExEZzBPbHN5TERrMVhTdzROVHBiTWl3NU5WMTlMSHMyT0RwYk1pdzVOMTE5TEhzMU9sc3lMREl4WFN3eE5EcGJNaXd5TVYwc01UVTZXeklzTWpGZExERTVPbHN5TERJeFhTd3lPVHBiTWl3eU1WMHNNelE2V3pJc01qRmRMRE01T2xzeUxESXhYU3cwTkRwYk1pd3lNVjBzTkRjNld6SXNNakZkTERRNE9sc3lMREl4WFN3MU1UcGJNaXd5TVYwc05UVTZXeklzTWpGZExEWXdPbHN5TERJeFhYMHNlek16T2xzeExERXpNRjE5TEhzek16cGJNaXcyTTExOUxIczNNanBiTVN3eE16SmRMRGMyT2pFek1YMHNlek16T2xzeExERXpNMTE5TEhzek16cGJNaXcyT1YxOUxIc3hOVHBiTWl3eE1sMHNNVGc2V3pJc01USmRmU3g3TVRRNld6SXNNalpkTERFMU9sc3lMREkyWFN3eE9UcGJNaXd5Tmwwc01qazZXeklzTWpaZExETTBPbHN5TERJMlhTdzBOenBiTWl3eU5sMHNORGc2V3pJc01qWmRMRFV4T2xzeUxESTJYU3cxTlRwYk1pd3lObDBzTmpBNld6SXNNalpkZlN4N01qTTZXeklzTXpGZExETXpPbHN5TERNeFhTdzFORHBiTWl3ek1WMHNOamc2V3pJc016RmRMRGN5T2xzeUxETXhYU3czTlRwYk1pd3pNVjE5TEhzek16cGJNaXczTkYwc05ESTZNVE0wTERjME9qRXpOU3czTlRwYk1Td3hNakJkZlN4N016TTZXeklzTnpGZExEWTFPbHN5TERjeFhTdzNNanBiTWl3M01WMHNOelU2V3pJc056RmRMRGd3T2xzeUxEY3hYU3c0TVRwYk1pdzNNVjBzT0RJNld6SXNOekZkTERnek9sc3lMRGN4WFN3NE5EcGJNaXczTVYwc09EVTZXeklzTnpGZGZTeDdNek02V3pJc056TmRMRGMxT2xzeUxEY3pYWDBzZXpJek9sc3lMREk1WFN3ek16cGJNaXd5T1Ywc05UUTZXeklzTWpsZExEWTFPbHN5TERJNVhTdzJPRHBiTWl3eU9WMHNOekk2V3pJc01qbGRMRGMxT2xzeUxESTVYU3c0TURwYk1pd3lPVjBzT0RFNld6SXNNamxkTERneU9sc3lMREk1WFN3NE16cGJNaXd5T1Ywc09EUTZXeklzTWpsZExEZzFPbHN5TERJNVhYMHNlekUwT2xzeUxERTFYU3d4TlRwYk1pd3hOVjBzTVRrNld6SXNNVFZkTERJNU9sc3lMREUxWFN3ek5EcGJNaXd4TlYwc016azZXeklzTVRWZExEUTBPbHN5TERFMVhTdzBOenBiTWl3eE5WMHNORGc2V3pJc01UVmRMRFV4T2xzeUxERTFYU3cxTlRwYk1pd3hOVjBzTmpBNld6SXNNVFZkZlN4N056STZXekVzTVRNM1hTdzNOenBiTVN3eE16WmRmU3g3TnpJNld6SXNNVEF3WFN3M056cGJNaXd4TURCZGZTeDdNVFE2V3pJc01UWmRMREUxT2xzeUxERTJYU3d4T1RwYk1pd3hObDBzTWprNld6SXNNVFpkTERNME9sc3lMREUyWFN3ME5EcGJNaXd4Tmwwc05EYzZXeklzTVRaZExEUTRPbHN5TERFMlhTdzFNVHBiTWl3eE5sMHNOVFU2V3pJc01UWmRMRFl3T2xzeUxERTJYWDBzZXpNek9sc3hMREV6T0YxOUxIc3pNenBiTWl3M05WMTlMSHN6TXpwYk1pd3pNbDE5TEhzM01qcGJNaXd4TURGZExEYzNPbHN5TERFd01WMTlMSHN4TkRwYk1pd3hOMTBzTVRVNld6SXNNVGRkTERFNU9sc3lMREUzWFN3eU9UcGJNaXd4TjEwc016UTZXeklzTVRkZExETTVPbHN5TERFM1hTdzBORHBiTWl3eE4xMHNORGM2V3pJc01UZGRMRFE0T2xzeUxERTNYU3cxTVRwYk1pd3hOMTBzTlRVNld6SXNNVGRkTERZd09sc3lMREUzWFgxZExGeHVaR1ZtWVhWc2RFRmpkR2x2Ym5NNklIczBPbHN5TERGZExEVTBPbHN5TERVMVhTdzFOanBiTWl3eU1GMHNOakE2V3pJc05UZGRMRGN6T2xzeUxEZ3hYU3c0TWpwYk1pdzROVjBzT0RZNld6SXNNVGhkTERrd09sc3lMRGc1WFN3eE1ERTZXeklzTlROZExERXdORHBiTWl3NU0xMHNNVEV3T2xzeUxERTVYU3d4TVRFNld6SXNOemRkTERFeE5qcGJNaXc1TjEwc01URTVPbHN5TERZelhTd3hNakk2V3pJc05qbGRMREV6TlRwYk1pdzNOVjBzTVRNMk9sc3lMRE15WFgwc1hHNXdZWEp6WlVWeWNtOXlPaUJtZFc1amRHbHZiaUJ3WVhKelpVVnljbTl5SUNoemRISXNJR2hoYzJncElIdGNiaUFnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvYzNSeUtUdGNibjBzWEc1d1lYSnpaVG9nWm5WdVkzUnBiMjRnY0dGeWMyVW9hVzV3ZFhRcElIdGNiaUFnSUNCMllYSWdjMlZzWmlBOUlIUm9hWE1zSUhOMFlXTnJJRDBnV3pCZExDQjJjM1JoWTJzZ1BTQmJiblZzYkYwc0lHeHpkR0ZqYXlBOUlGdGRMQ0IwWVdKc1pTQTlJSFJvYVhNdWRHRmliR1VzSUhsNWRHVjRkQ0E5SUZ3aVhDSXNJSGw1YkdsdVpXNXZJRDBnTUN3Z2VYbHNaVzVuSUQwZ01Dd2djbVZqYjNabGNtbHVaeUE5SURBc0lGUkZVbEpQVWlBOUlESXNJRVZQUmlBOUlERTdYRzRnSUNBZ2RHaHBjeTVzWlhobGNpNXpaWFJKYm5CMWRDaHBibkIxZENrN1hHNGdJQ0FnZEdocGN5NXNaWGhsY2k1NWVTQTlJSFJvYVhNdWVYazdYRzRnSUNBZ2RHaHBjeTU1ZVM1c1pYaGxjaUE5SUhSb2FYTXViR1Y0WlhJN1hHNGdJQ0FnZEdocGN5NTVlUzV3WVhKelpYSWdQU0IwYUdsek8xeHVJQ0FnSUdsbUlDaDBlWEJsYjJZZ2RHaHBjeTVzWlhobGNpNTVlV3hzYjJNZ1BUMGdYQ0oxYm1SbFptbHVaV1JjSWlsY2JpQWdJQ0FnSUNBZ2RHaHBjeTVzWlhobGNpNTVlV3hzYjJNZ1BTQjdmVHRjYmlBZ0lDQjJZWElnZVhsc2IyTWdQU0IwYUdsekxteGxlR1Z5TG5sNWJHeHZZenRjYmlBZ0lDQnNjM1JoWTJzdWNIVnphQ2g1ZVd4dll5azdYRzRnSUNBZ2RtRnlJSEpoYm1kbGN5QTlJSFJvYVhNdWJHVjRaWEl1YjNCMGFXOXVjeUFtSmlCMGFHbHpMbXhsZUdWeUxtOXdkR2x2Ym5NdWNtRnVaMlZ6TzF4dUlDQWdJR2xtSUNoMGVYQmxiMllnZEdocGN5NTVlUzV3WVhKelpVVnljbTl5SUQwOVBTQmNJbVoxYm1OMGFXOXVYQ0lwWEc0Z0lDQWdJQ0FnSUhSb2FYTXVjR0Z5YzJWRmNuSnZjaUE5SUhSb2FYTXVlWGt1Y0dGeWMyVkZjbkp2Y2p0Y2JpQWdJQ0JtZFc1amRHbHZiaUJ3YjNCVGRHRmpheWh1S1NCN1hHNGdJQ0FnSUNBZ0lITjBZV05yTG14bGJtZDBhQ0E5SUhOMFlXTnJMbXhsYm1kMGFDQXRJRElnS2lCdU8xeHVJQ0FnSUNBZ0lDQjJjM1JoWTJzdWJHVnVaM1JvSUQwZ2RuTjBZV05yTG14bGJtZDBhQ0F0SUc0N1hHNGdJQ0FnSUNBZ0lHeHpkR0ZqYXk1c1pXNW5kR2dnUFNCc2MzUmhZMnN1YkdWdVozUm9JQzBnYmp0Y2JpQWdJQ0I5WEc0Z0lDQWdablZ1WTNScGIyNGdiR1Y0S0NrZ2UxeHVJQ0FnSUNBZ0lDQjJZWElnZEc5clpXNDdYRzRnSUNBZ0lDQWdJSFJ2YTJWdUlEMGdjMlZzWmk1c1pYaGxjaTVzWlhnb0tTQjhmQ0F4TzF4dUlDQWdJQ0FnSUNCcFppQW9kSGx3Wlc5bUlIUnZhMlZ1SUNFOVBTQmNJbTUxYldKbGNsd2lLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBiMnRsYmlBOUlITmxiR1l1YzNsdFltOXNjMTliZEc5clpXNWRJSHg4SUhSdmEyVnVPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIwYjJ0bGJqdGNiaUFnSUNCOVhHNGdJQ0FnZG1GeUlITjViV0p2YkN3Z2NISmxSWEp5YjNKVGVXMWliMndzSUhOMFlYUmxMQ0JoWTNScGIyNHNJR0VzSUhJc0lIbDVkbUZzSUQwZ2UzMHNJSEFzSUd4bGJpd2dibVYzVTNSaGRHVXNJR1Y0Y0dWamRHVmtPMXh1SUNBZ0lIZG9hV3hsSUNoMGNuVmxLU0I3WEc0Z0lDQWdJQ0FnSUhOMFlYUmxJRDBnYzNSaFkydGJjM1JoWTJzdWJHVnVaM1JvSUMwZ01WMDdYRzRnSUNBZ0lDQWdJR2xtSUNoMGFHbHpMbVJsWm1GMWJIUkJZM1JwYjI1elczTjBZWFJsWFNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnWVdOMGFXOXVJRDBnZEdocGN5NWtaV1poZFd4MFFXTjBhVzl1YzF0emRHRjBaVjA3WEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYzNsdFltOXNJRDA5UFNCdWRXeHNJSHg4SUhSNWNHVnZaaUJ6ZVcxaWIyd2dQVDBnWENKMWJtUmxabWx1WldSY0lpa2dlMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSE41YldKdmJDQTlJR3hsZUNncE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdZV04wYVc5dUlEMGdkR0ZpYkdWYmMzUmhkR1ZkSUNZbUlIUmhZbXhsVzNOMFlYUmxYVnR6ZVcxaWIyeGRPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdsbUlDaDBlWEJsYjJZZ1lXTjBhVzl1SUQwOVBTQmNJblZ1WkdWbWFXNWxaRndpSUh4OElDRmhZM1JwYjI0dWJHVnVaM1JvSUh4OElDRmhZM1JwYjI1Yk1GMHBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIWmhjaUJsY25KVGRISWdQU0JjSWx3aU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tDRnlaV052ZG1WeWFXNW5LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWlhod1pXTjBaV1FnUFNCYlhUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQm1iM0lnS0hBZ2FXNGdkR0ZpYkdWYmMzUmhkR1ZkS1Z4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBaaUFvZEdocGN5NTBaWEp0YVc1aGJITmZXM0JkSUNZbUlIQWdQaUF5S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCbGVIQmxZM1JsWkM1d2RYTm9LRndpSjF3aUlDc2dkR2hwY3k1MFpYSnRhVzVoYkhOZlczQmRJQ3NnWENJblhDSXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSFJvYVhNdWJHVjRaWEl1YzJodmQxQnZjMmwwYVc5dUtTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdWeWNsTjBjaUE5SUZ3aVVHRnljMlVnWlhKeWIzSWdiMjRnYkdsdVpTQmNJaUFySUNoNWVXeHBibVZ1YnlBcklERXBJQ3NnWENJNlhGeHVYQ0lnS3lCMGFHbHpMbXhsZUdWeUxuTm9iM2RRYjNOcGRHbHZiaWdwSUNzZ1hDSmNYRzVGZUhCbFkzUnBibWNnWENJZ0t5QmxlSEJsWTNSbFpDNXFiMmx1S0Z3aUxDQmNJaWtnS3lCY0lpd2daMjkwSUNkY0lpQXJJQ2gwYUdsekxuUmxjbTFwYm1Gc2MxOWJjM2x0WW05c1hTQjhmQ0J6ZVcxaWIyd3BJQ3NnWENJblhDSTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWlhKeVUzUnlJRDBnWENKUVlYSnpaU0JsY25KdmNpQnZiaUJzYVc1bElGd2lJQ3NnS0hsNWJHbHVaVzV2SUNzZ01Ta2dLeUJjSWpvZ1ZXNWxlSEJsWTNSbFpDQmNJaUFySUNoemVXMWliMndnUFQwZ01UOWNJbVZ1WkNCdlppQnBibkIxZEZ3aU9sd2lKMXdpSUNzZ0tIUm9hWE11ZEdWeWJXbHVZV3h6WDF0emVXMWliMnhkSUh4OElITjViV0p2YkNrZ0t5QmNJaWRjSWlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11Y0dGeWMyVkZjbkp2Y2lobGNuSlRkSElzSUh0MFpYaDBPaUIwYUdsekxteGxlR1Z5TG0xaGRHTm9MQ0IwYjJ0bGJqb2dkR2hwY3k1MFpYSnRhVzVoYkhOZlczTjViV0p2YkYwZ2ZId2djM2x0WW05c0xDQnNhVzVsT2lCMGFHbHpMbXhsZUdWeUxubDViR2x1Wlc1dkxDQnNiMk02SUhsNWJHOWpMQ0JsZUhCbFkzUmxaRG9nWlhod1pXTjBaV1I5S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCcFppQW9ZV04wYVc5dVd6QmRJR2x1YzNSaGJtTmxiMllnUVhKeVlYa2dKaVlnWVdOMGFXOXVMbXhsYm1kMGFDQStJREVwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaGNJbEJoY25ObElFVnljbTl5T2lCdGRXeDBhWEJzWlNCaFkzUnBiMjV6SUhCdmMzTnBZbXhsSUdGMElITjBZWFJsT2lCY0lpQXJJSE4wWVhSbElDc2dYQ0lzSUhSdmEyVnVPaUJjSWlBcklITjViV0p2YkNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdjM2RwZEdOb0lDaGhZM1JwYjI1Yk1GMHBJSHRjYmlBZ0lDQWdJQ0FnWTJGelpTQXhPbHh1SUNBZ0lDQWdJQ0FnSUNBZ2MzUmhZMnN1Y0hWemFDaHplVzFpYjJ3cE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZG5OMFlXTnJMbkIxYzJnb2RHaHBjeTVzWlhobGNpNTVlWFJsZUhRcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYkhOMFlXTnJMbkIxYzJnb2RHaHBjeTVzWlhobGNpNTVlV3hzYjJNcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYzNSaFkyc3VjSFZ6YUNoaFkzUnBiMjViTVYwcE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnYzNsdFltOXNJRDBnYm5Wc2JEdGNiaUFnSUNBZ0lDQWdJQ0FnSUdsbUlDZ2hjSEpsUlhKeWIzSlRlVzFpYjJ3cElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjVlV3hsYm1jZ1BTQjBhR2x6TG14bGVHVnlMbmw1YkdWdVp6dGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjVlWFJsZUhRZ1BTQjBhR2x6TG14bGVHVnlMbmw1ZEdWNGREdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjVlV3hwYm1WdWJ5QTlJSFJvYVhNdWJHVjRaWEl1ZVhsc2FXNWxibTg3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZVhsc2IyTWdQU0IwYUdsekxteGxlR1Z5TG5sNWJHeHZZenRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2NtVmpiM1psY21sdVp5QStJREFwWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxZMjkyWlhKcGJtY3RMVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2MzbHRZbTlzSUQwZ2NISmxSWEp5YjNKVGVXMWliMnc3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY0hKbFJYSnliM0pUZVcxaWIyd2dQU0J1ZFd4c08xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNBZ0lHTmhjMlVnTWpwY2JpQWdJQ0FnSUNBZ0lDQWdJR3hsYmlBOUlIUm9hWE11Y0hKdlpIVmpkR2x2Ym5OZlcyRmpkR2x2YmxzeFhWMWJNVjA3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjVlWFpoYkM0a0lEMGdkbk4wWVdOclczWnpkR0ZqYXk1c1pXNW5kR2dnTFNCc1pXNWRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2VYbDJZV3d1WHlRZ1BTQjdabWx5YzNSZmJHbHVaVG9nYkhOMFlXTnJXMnh6ZEdGamF5NXNaVzVuZEdnZ0xTQW9iR1Z1SUh4OElERXBYUzVtYVhKemRGOXNhVzVsTENCc1lYTjBYMnhwYm1VNklHeHpkR0ZqYTF0c2MzUmhZMnN1YkdWdVozUm9JQzBnTVYwdWJHRnpkRjlzYVc1bExDQm1hWEp6ZEY5amIyeDFiVzQ2SUd4emRHRmphMXRzYzNSaFkyc3ViR1Z1WjNSb0lDMGdLR3hsYmlCOGZDQXhLVjB1Wm1seWMzUmZZMjlzZFcxdUxDQnNZWE4wWDJOdmJIVnRiam9nYkhOMFlXTnJXMnh6ZEdGamF5NXNaVzVuZEdnZ0xTQXhYUzVzWVhOMFgyTnZiSFZ0Ym4wN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2NtRnVaMlZ6S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2VYbDJZV3d1WHlRdWNtRnVaMlVnUFNCYmJITjBZV05yVzJ4emRHRmpheTVzWlc1bmRHZ2dMU0FvYkdWdUlIeDhJREVwWFM1eVlXNW5aVnN3WFN3Z2JITjBZV05yVzJ4emRHRmpheTVzWlc1bmRHZ2dMU0F4WFM1eVlXNW5aVnN4WFYwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlJRDBnZEdocGN5NXdaWEptYjNKdFFXTjBhVzl1TG1OaGJHd29lWGwyWVd3c0lIbDVkR1Y0ZEN3Z2VYbHNaVzVuTENCNWVXeHBibVZ1Ynl3Z2RHaHBjeTU1ZVN3Z1lXTjBhVzl1V3pGZExDQjJjM1JoWTJzc0lHeHpkR0ZqYXlrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2RIbHdaVzltSUhJZ0lUMDlJRndpZFc1a1pXWnBibVZrWENJcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2NqdGNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNoc1pXNHBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J6ZEdGamF5QTlJSE4wWVdOckxuTnNhV05sS0RBc0lDMHhJQ29nYkdWdUlDb2dNaWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZG5OMFlXTnJJRDBnZG5OMFlXTnJMbk5zYVdObEtEQXNJQzB4SUNvZ2JHVnVLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JzYzNSaFkyc2dQU0JzYzNSaFkyc3VjMnhwWTJVb01Dd2dMVEVnS2lCc1pXNHBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnYzNSaFkyc3VjSFZ6YUNoMGFHbHpMbkJ5YjJSMVkzUnBiMjV6WDF0aFkzUnBiMjViTVYxZFd6QmRLVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIWnpkR0ZqYXk1d2RYTm9LSGw1ZG1Gc0xpUXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2JITjBZV05yTG5CMWMyZ29lWGwyWVd3dVh5UXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2JtVjNVM1JoZEdVZ1BTQjBZV0pzWlZ0emRHRmphMXR6ZEdGamF5NXNaVzVuZEdnZ0xTQXlYVjFiYzNSaFkydGJjM1JoWTJzdWJHVnVaM1JvSUMwZ01WMWRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2MzUmhZMnN1Y0hWemFDaHVaWGRUZEdGMFpTazdYRzRnSUNBZ0lDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJQ0FnWTJGelpTQXpPbHh1SUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSeWRXVTdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUhSeWRXVTdYRzU5WEc1OU8xeHVMeW9nU21semIyNGdaMlZ1WlhKaGRHVmtJR3hsZUdWeUlDb3ZYRzUyWVhJZ2JHVjRaWElnUFNBb1puVnVZM1JwYjI0b0tYdGNiblpoY2lCc1pYaGxjaUE5SUNoN1JVOUdPakVzWEc1d1lYSnpaVVZ5Y205eU9tWjFibU4wYVc5dUlIQmhjbk5sUlhKeWIzSW9jM1J5TENCb1lYTm9LU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaDBhR2x6TG5sNUxuQmhjbk5sY2lrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NTVlUzV3WVhKelpYSXVjR0Z5YzJWRmNuSnZjaWh6ZEhJc0lHaGhjMmdwTzF4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtITjBjaWs3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0I5TEZ4dWMyVjBTVzV3ZFhRNlpuVnVZM1JwYjI0Z0tHbHVjSFYwS1NCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11WDJsdWNIVjBJRDBnYVc1d2RYUTdYRzRnSUNBZ0lDQWdJSFJvYVhNdVgyMXZjbVVnUFNCMGFHbHpMbDlzWlhOeklEMGdkR2hwY3k1a2IyNWxJRDBnWm1Gc2MyVTdYRzRnSUNBZ0lDQWdJSFJvYVhNdWVYbHNhVzVsYm04Z1BTQjBhR2x6TG5sNWJHVnVaeUE5SURBN1hHNGdJQ0FnSUNBZ0lIUm9hWE11ZVhsMFpYaDBJRDBnZEdocGN5NXRZWFJqYUdWa0lEMGdkR2hwY3k1dFlYUmphQ0E5SUNjbk8xeHVJQ0FnSUNBZ0lDQjBhR2x6TG1OdmJtUnBkR2x2YmxOMFlXTnJJRDBnV3lkSlRrbFVTVUZNSjEwN1hHNGdJQ0FnSUNBZ0lIUm9hWE11ZVhsc2JHOWpJRDBnZTJacGNuTjBYMnhwYm1VNk1TeG1hWEp6ZEY5amIyeDFiVzQ2TUN4c1lYTjBYMnhwYm1VNk1TeHNZWE4wWDJOdmJIVnRiam93ZlR0Y2JpQWdJQ0FnSUNBZ2FXWWdLSFJvYVhNdWIzQjBhVzl1Y3k1eVlXNW5aWE1wSUhSb2FYTXVlWGxzYkc5akxuSmhibWRsSUQwZ1d6QXNNRjA3WEc0Z0lDQWdJQ0FnSUhSb2FYTXViMlptYzJWMElEMGdNRHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFJvYVhNN1hHNGdJQ0FnZlN4Y2JtbHVjSFYwT21aMWJtTjBhVzl1SUNncElIdGNiaUFnSUNBZ0lDQWdkbUZ5SUdOb0lEMGdkR2hwY3k1ZmFXNXdkWFJiTUYwN1hHNGdJQ0FnSUNBZ0lIUm9hWE11ZVhsMFpYaDBJQ3M5SUdOb08xeHVJQ0FnSUNBZ0lDQjBhR2x6TG5sNWJHVnVaeXNyTzF4dUlDQWdJQ0FnSUNCMGFHbHpMbTltWm5ObGRDc3JPMXh1SUNBZ0lDQWdJQ0IwYUdsekxtMWhkR05vSUNzOUlHTm9PMXh1SUNBZ0lDQWdJQ0IwYUdsekxtMWhkR05vWldRZ0t6MGdZMmc3WEc0Z0lDQWdJQ0FnSUhaaGNpQnNhVzVsY3lBOUlHTm9MbTFoZEdOb0tDOG9QenBjWEhKY1hHNC9mRnhjYmlrdUtpOW5LVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHeHBibVZ6S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxubDViR2x1Wlc1dkt5czdYRzRnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbmw1Ykd4dll5NXNZWE4wWDJ4cGJtVXJLenRjYmlBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lIUm9hWE11ZVhsc2JHOWpMbXhoYzNSZlkyOXNkVzF1S3lzN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdhV1lnS0hSb2FYTXViM0IwYVc5dWN5NXlZVzVuWlhNcElIUm9hWE11ZVhsc2JHOWpMbkpoYm1kbFd6RmRLeXM3WEc1Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVmYVc1d2RYUWdQU0IwYUdsekxsOXBibkIxZEM1emJHbGpaU2d4S1R0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdOb08xeHVJQ0FnSUgwc1hHNTFibkIxZERwbWRXNWpkR2x2YmlBb1kyZ3BJSHRjYmlBZ0lDQWdJQ0FnZG1GeUlHeGxiaUE5SUdOb0xteGxibWQwYUR0Y2JpQWdJQ0FnSUNBZ2RtRnlJR3hwYm1WeklEMGdZMmd1YzNCc2FYUW9MeWcvT2x4Y2NseGNiajk4WEZ4dUtTOW5LVHRjYmx4dUlDQWdJQ0FnSUNCMGFHbHpMbDlwYm5CMWRDQTlJR05vSUNzZ2RHaHBjeTVmYVc1d2RYUTdYRzRnSUNBZ0lDQWdJSFJvYVhNdWVYbDBaWGgwSUQwZ2RHaHBjeTU1ZVhSbGVIUXVjM1ZpYzNSeUtEQXNJSFJvYVhNdWVYbDBaWGgwTG14bGJtZDBhQzFzWlc0dE1TazdYRzRnSUNBZ0lDQWdJQzh2ZEdocGN5NTVlV3hsYm1jZ0xUMGdiR1Z1TzF4dUlDQWdJQ0FnSUNCMGFHbHpMbTltWm5ObGRDQXRQU0JzWlc0N1hHNGdJQ0FnSUNBZ0lIWmhjaUJ2YkdSTWFXNWxjeUE5SUhSb2FYTXViV0YwWTJndWMzQnNhWFFvTHlnL09seGNjbHhjYmo5OFhGeHVLUzluS1R0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV0WVhSamFDQTlJSFJvYVhNdWJXRjBZMmd1YzNWaWMzUnlLREFzSUhSb2FYTXViV0YwWTJndWJHVnVaM1JvTFRFcE8xeHVJQ0FnSUNBZ0lDQjBhR2x6TG0xaGRHTm9aV1FnUFNCMGFHbHpMbTFoZEdOb1pXUXVjM1ZpYzNSeUtEQXNJSFJvYVhNdWJXRjBZMmhsWkM1c1pXNW5kR2d0TVNrN1hHNWNiaUFnSUNBZ0lDQWdhV1lnS0d4cGJtVnpMbXhsYm1kMGFDMHhLU0IwYUdsekxubDViR2x1Wlc1dklDMDlJR3hwYm1WekxteGxibWQwYUMweE8xeHVJQ0FnSUNBZ0lDQjJZWElnY2lBOUlIUm9hWE11ZVhsc2JHOWpMbkpoYm1kbE8xeHVYRzRnSUNBZ0lDQWdJSFJvYVhNdWVYbHNiRzlqSUQwZ2UyWnBjbk4wWDJ4cGJtVTZJSFJvYVhNdWVYbHNiRzlqTG1acGNuTjBYMnhwYm1Vc1hHNGdJQ0FnSUNBZ0lDQWdiR0Z6ZEY5c2FXNWxPaUIwYUdsekxubDViR2x1Wlc1dkt6RXNYRzRnSUNBZ0lDQWdJQ0FnWm1seWMzUmZZMjlzZFcxdU9pQjBhR2x6TG5sNWJHeHZZeTVtYVhKemRGOWpiMngxYlc0c1hHNGdJQ0FnSUNBZ0lDQWdiR0Z6ZEY5amIyeDFiVzQ2SUd4cGJtVnpJRDljYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdLR3hwYm1WekxteGxibWQwYUNBOVBUMGdiMnhrVEdsdVpYTXViR1Z1WjNSb0lEOGdkR2hwY3k1NWVXeHNiMk11Wm1seWMzUmZZMjlzZFcxdUlEb2dNQ2tnS3lCdmJHUk1hVzVsYzF0dmJHUk1hVzVsY3k1c1pXNW5kR2dnTFNCc2FXNWxjeTVzWlc1bmRHaGRMbXhsYm1kMGFDQXRJR3hwYm1Weld6QmRMbXhsYm1kMGFEcGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTU1ZVd4c2IyTXVabWx5YzNSZlkyOXNkVzF1SUMwZ2JHVnVYRzRnSUNBZ0lDQWdJQ0FnZlR0Y2JseHVJQ0FnSUNBZ0lDQnBaaUFvZEdocGN5NXZjSFJwYjI1ekxuSmhibWRsY3lrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NTVlV3hzYjJNdWNtRnVaMlVnUFNCYmNsc3dYU3dnY2xzd1hTQXJJSFJvYVhNdWVYbHNaVzVuSUMwZ2JHVnVYVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZEdocGN6dGNiaUFnSUNCOUxGeHViVzl5WlRwbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQWdJSFJvYVhNdVgyMXZjbVVnUFNCMGNuVmxPMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3p0Y2JpQWdJQ0I5TEZ4dWJHVnpjenBtZFc1amRHbHZiaUFvYmlrZ2UxeHVJQ0FnSUNBZ0lDQjBhR2x6TG5WdWNIVjBLSFJvYVhNdWJXRjBZMmd1YzJ4cFkyVW9iaWtwTzF4dUlDQWdJSDBzWEc1d1lYTjBTVzV3ZFhRNlpuVnVZM1JwYjI0Z0tDa2dlMXh1SUNBZ0lDQWdJQ0IyWVhJZ2NHRnpkQ0E5SUhSb2FYTXViV0YwWTJobFpDNXpkV0p6ZEhJb01Dd2dkR2hwY3k1dFlYUmphR1ZrTG14bGJtZDBhQ0F0SUhSb2FYTXViV0YwWTJndWJHVnVaM1JvS1R0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUNod1lYTjBMbXhsYm1kMGFDQStJREl3SUQ4Z0p5NHVMaWM2SnljcElDc2djR0Z6ZEM1emRXSnpkSElvTFRJd0tTNXlaWEJzWVdObEtDOWNYRzR2Wnl3Z1hDSmNJaWs3WEc0Z0lDQWdmU3hjYm5Wd1kyOXRhVzVuU1c1d2RYUTZablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnSUNCMllYSWdibVY0ZENBOUlIUm9hWE11YldGMFkyZzdYRzRnSUNBZ0lDQWdJR2xtSUNodVpYaDBMbXhsYm1kMGFDQThJREl3S1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J1WlhoMElDczlJSFJvYVhNdVgybHVjSFYwTG5OMVluTjBjaWd3TENBeU1DMXVaWGgwTG14bGJtZDBhQ2s3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUNodVpYaDBMbk4xWW5OMGNpZ3dMREl3S1Nzb2JtVjRkQzVzWlc1bmRHZ2dQaUF5TUNBL0lDY3VMaTRuT2ljbktTa3VjbVZ3YkdGalpTZ3ZYRnh1TDJjc0lGd2lYQ0lwTzF4dUlDQWdJSDBzWEc1emFHOTNVRzl6YVhScGIyNDZablZ1WTNScGIyNGdLQ2tnZTF4dUlDQWdJQ0FnSUNCMllYSWdjSEpsSUQwZ2RHaHBjeTV3WVhOMFNXNXdkWFFvS1R0Y2JpQWdJQ0FnSUNBZ2RtRnlJR01nUFNCdVpYY2dRWEp5WVhrb2NISmxMbXhsYm1kMGFDQXJJREVwTG1wdmFXNG9YQ0l0WENJcE8xeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z2NISmxJQ3NnZEdocGN5NTFjR052YldsdVowbHVjSFYwS0NrZ0t5QmNJbHhjYmx3aUlDc2dZeXRjSWw1Y0lqdGNiaUFnSUNCOUxGeHVibVY0ZERwbWRXNWpkR2x2YmlBb0tTQjdYRzRnSUNBZ0lDQWdJR2xtSUNoMGFHbHpMbVJ2Ym1VcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxrVlBSanRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCcFppQW9JWFJvYVhNdVgybHVjSFYwS1NCMGFHbHpMbVJ2Ym1VZ1BTQjBjblZsTzF4dVhHNGdJQ0FnSUNBZ0lIWmhjaUIwYjJ0bGJpeGNiaUFnSUNBZ0lDQWdJQ0FnSUcxaGRHTm9MRnh1SUNBZ0lDQWdJQ0FnSUNBZ2RHVnRjRTFoZEdOb0xGeHVJQ0FnSUNBZ0lDQWdJQ0FnYVc1a1pYZ3NYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyd3NYRzRnSUNBZ0lDQWdJQ0FnSUNCc2FXNWxjenRjYmlBZ0lDQWdJQ0FnYVdZZ0tDRjBhR2x6TGw5dGIzSmxLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG5sNWRHVjRkQ0E5SUNjbk8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NXRZWFJqYUNBOUlDY25PMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUhaaGNpQnlkV3hsY3lBOUlIUm9hWE11WDJOMWNuSmxiblJTZFd4bGN5Z3BPMXh1SUNBZ0lDQWdJQ0JtYjNJZ0tIWmhjaUJwUFRBN2FTQThJSEoxYkdWekxteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBaVzF3VFdGMFkyZ2dQU0IwYUdsekxsOXBibkIxZEM1dFlYUmphQ2gwYUdsekxuSjFiR1Z6VzNKMWJHVnpXMmxkWFNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2RHVnRjRTFoZEdOb0lDWW1JQ2doYldGMFkyZ2dmSHdnZEdWdGNFMWhkR05vV3pCZExteGxibWQwYUNBK0lHMWhkR05vV3pCZExteGxibWQwYUNrcElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnRZWFJqYUNBOUlIUmxiWEJOWVhSamFEdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnBibVJsZUNBOUlHazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhV1lnS0NGMGFHbHpMbTl3ZEdsdmJuTXVabXhsZUNrZ1luSmxZV3M3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnYVdZZ0tHMWhkR05vS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0JzYVc1bGN5QTlJRzFoZEdOb1d6QmRMbTFoZEdOb0tDOG9QenBjWEhKY1hHNC9mRnhjYmlrdUtpOW5LVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2hzYVc1bGN5a2dkR2hwY3k1NWVXeHBibVZ1YnlBclBTQnNhVzVsY3k1c1pXNW5kR2c3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG5sNWJHeHZZeUE5SUh0bWFYSnpkRjlzYVc1bE9pQjBhR2x6TG5sNWJHeHZZeTVzWVhOMFgyeHBibVVzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCc1lYTjBYMnhwYm1VNklIUm9hWE11ZVhsc2FXNWxibThyTVN4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHWnBjbk4wWDJOdmJIVnRiam9nZEdocGN5NTVlV3hzYjJNdWJHRnpkRjlqYjJ4MWJXNHNYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JzWVhOMFgyTnZiSFZ0YmpvZ2JHbHVaWE1nUHlCc2FXNWxjMXRzYVc1bGN5NXNaVzVuZEdndE1WMHViR1Z1WjNSb0xXeHBibVZ6VzJ4cGJtVnpMbXhsYm1kMGFDMHhYUzV0WVhSamFDZ3ZYRnh5UDF4Y2JqOHZLVnN3WFM1c1pXNW5kR2dnT2lCMGFHbHpMbmw1Ykd4dll5NXNZWE4wWDJOdmJIVnRiaUFySUcxaGRHTm9XekJkTG14bGJtZDBhSDA3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TG5sNWRHVjRkQ0FyUFNCdFlYUmphRnN3WFR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdWJXRjBZMmdnS3owZ2JXRjBZMmhiTUYwN1hHNGdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxtMWhkR05vWlhNZ1BTQnRZWFJqYUR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdWVYbHNaVzVuSUQwZ2RHaHBjeTU1ZVhSbGVIUXViR1Z1WjNSb08xeHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIUm9hWE11YjNCMGFXOXVjeTV5WVc1blpYTXBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxubDViR3h2WXk1eVlXNW5aU0E5SUZ0MGFHbHpMbTltWm5ObGRDd2dkR2hwY3k1dlptWnpaWFFnS3owZ2RHaHBjeTU1ZVd4bGJtZGRPMXh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NWZiVzl5WlNBOUlHWmhiSE5sTzF4dUlDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1ZmFXNXdkWFFnUFNCMGFHbHpMbDlwYm5CMWRDNXpiR2xqWlNodFlYUmphRnN3WFM1c1pXNW5kR2dwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdkR2hwY3k1dFlYUmphR1ZrSUNzOUlHMWhkR05vV3pCZE8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZEc5clpXNGdQU0IwYUdsekxuQmxjbVp2Y20xQlkzUnBiMjR1WTJGc2JDaDBhR2x6TENCMGFHbHpMbmw1TENCMGFHbHpMQ0J5ZFd4bGMxdHBibVJsZUYwc2RHaHBjeTVqYjI1a2FYUnBiMjVUZEdGamExdDBhR2x6TG1OdmJtUnBkR2x2YmxOMFlXTnJMbXhsYm1kMGFDMHhYU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvZEdocGN5NWtiMjVsSUNZbUlIUm9hWE11WDJsdWNIVjBLU0IwYUdsekxtUnZibVVnUFNCbVlXeHpaVHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2gwYjJ0bGJpa2djbVYwZFhKdUlIUnZhMlZ1TzF4dUlDQWdJQ0FnSUNBZ0lDQWdaV3h6WlNCeVpYUjFjbTQ3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2FXWWdLSFJvYVhNdVgybHVjSFYwSUQwOVBTQmNJbHdpS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3k1RlQwWTdYRzRnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnZEdocGN5NXdZWEp6WlVWeWNtOXlLQ2RNWlhocFkyRnNJR1Z5Y205eUlHOXVJR3hwYm1VZ0p5c29kR2hwY3k1NWVXeHBibVZ1YnlzeEtTc25MaUJWYm5KbFkyOW5ibWw2WldRZ2RHVjRkQzVjWEc0bkszUm9hWE11YzJodmQxQnZjMmwwYVc5dUtDa3NYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUh0MFpYaDBPaUJjSWx3aUxDQjBiMnRsYmpvZ2JuVnNiQ3dnYkdsdVpUb2dkR2hwY3k1NWVXeHBibVZ1YjMwcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ2ZTeGNibXhsZURwbWRXNWpkR2x2YmlCc1pYZ2dLQ2tnZTF4dUlDQWdJQ0FnSUNCMllYSWdjaUE5SUhSb2FYTXVibVY0ZENncE8xeHVJQ0FnSUNBZ0lDQnBaaUFvZEhsd1pXOW1JSElnSVQwOUlDZDFibVJsWm1sdVpXUW5LU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2NqdGNiaUFnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxteGxlQ2dwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnZlN4Y2JtSmxaMmx1T21aMWJtTjBhVzl1SUdKbFoybHVJQ2hqYjI1a2FYUnBiMjRwSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVqYjI1a2FYUnBiMjVUZEdGamF5NXdkWE5vS0dOdmJtUnBkR2x2YmlrN1hHNGdJQ0FnZlN4Y2JuQnZjRk4wWVhSbE9tWjFibU4wYVc5dUlIQnZjRk4wWVhSbElDZ3BJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFJvYVhNdVkyOXVaR2wwYVc5dVUzUmhZMnN1Y0c5d0tDazdYRzRnSUNBZ2ZTeGNibDlqZFhKeVpXNTBVblZzWlhNNlpuVnVZM1JwYjI0Z1gyTjFjbkpsYm5SU2RXeGxjeUFvS1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCMGFHbHpMbU52Ym1ScGRHbHZibk5iZEdocGN5NWpiMjVrYVhScGIyNVRkR0ZqYTF0MGFHbHpMbU52Ym1ScGRHbHZibE4wWVdOckxteGxibWQwYUMweFhWMHVjblZzWlhNN1hHNGdJQ0FnZlN4Y2JuUnZjRk4wWVhSbE9tWjFibU4wYVc5dUlDZ3BJSHRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFJvYVhNdVkyOXVaR2wwYVc5dVUzUmhZMnRiZEdocGN5NWpiMjVrYVhScGIyNVRkR0ZqYXk1c1pXNW5kR2d0TWwwN1hHNGdJQ0FnZlN4Y2JuQjFjMmhUZEdGMFpUcG1kVzVqZEdsdmJpQmlaV2RwYmlBb1kyOXVaR2wwYVc5dUtTQjdYRzRnSUNBZ0lDQWdJSFJvYVhNdVltVm5hVzRvWTI5dVpHbDBhVzl1S1R0Y2JpQWdJQ0I5ZlNrN1hHNXNaWGhsY2k1dmNIUnBiMjV6SUQwZ2UzMDdYRzVzWlhobGNpNXdaWEptYjNKdFFXTjBhVzl1SUQwZ1puVnVZM1JwYjI0Z1lXNXZibmx0YjNWektIbDVMSGw1WHl3a1lYWnZhV1JwYm1kZmJtRnRaVjlqYjJ4c2FYTnBiMjV6TEZsWlgxTlVRVkpVWEc0cElIdGNibHh1WEc1bWRXNWpkR2x2YmlCemRISnBjQ2h6ZEdGeWRDd2daVzVrS1NCN1hHNGdJSEpsZEhWeWJpQjVlVjh1ZVhsMFpYaDBJRDBnZVhsZkxubDVkR1Y0ZEM1emRXSnpkSEpwYm1jb2MzUmhjblFzSUhsNVh5NTVlV3hsYm1jZ0xTQmxibVFnS3lCemRHRnlkQ2s3WEc1OVhHNWNibHh1ZG1GeUlGbFpVMVJCVkVVOVdWbGZVMVJCVWxSY2JuTjNhWFJqYUNna1lYWnZhV1JwYm1kZmJtRnRaVjlqYjJ4c2FYTnBiMjV6S1NCN1hHNWpZWE5sSURBNlhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1LSGw1WHk1NWVYUmxlSFF1YzJ4cFkyVW9MVElwSUQwOVBTQmNJbHhjWEZ4Y1hGeGNYQ0lwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnpkSEpwY0Nnd0xERXBPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSb2FYTXVZbVZuYVc0b1hDSnRkVndpS1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUtIbDVYeTU1ZVhSbGVIUXVjMnhwWTJVb0xURXBJRDA5UFNCY0lseGNYRnhjSWlrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSE4wY21sd0tEQXNNU2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RHaHBjeTVpWldkcGJpaGNJbVZ0ZFZ3aUtUdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxtSmxaMmx1S0Z3aWJYVmNJaWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWW9lWGxmTG5sNWRHVjRkQ2tnY21WMGRYSnVJREUxTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWEc1aWNtVmhhenRjYm1OaGMyVWdNVHB5WlhSMWNtNGdNVFU3WEc1aWNtVmhhenRjYm1OaGMyVWdNanBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NXdiM0JUZEdGMFpTZ3BPMXh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdNVFU3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JjYm1KeVpXRnJPMXh1WTJGelpTQXpPblJvYVhNdVltVm5hVzRvSjNKaGR5Y3BPeUJ5WlhSMWNtNGdNVFU3WEc1aWNtVmhhenRjYm1OaGMyVWdORHBjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwYUdsekxuQnZjRk4wWVhSbEtDazdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMeThnVTJodmRXeGtJR0psSUhWemFXNW5JR0IwYUdsekxuUnZjRk4wWVhSbEtDbGdJR0psYkc5M0xDQmlkWFFnYVhRZ1kzVnljbVZ1ZEd4NVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5OGdjbVYwZFhKdWN5QjBhR1VnYzJWamIyNWtJSFJ2Y0NCcGJuTjBaV0ZrSUc5bUlIUm9aU0JtYVhKemRDQjBiM0F1SUU5d1pXNWxaQ0JoYmx4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dklHbHpjM1ZsSUdGaWIzVjBJR2wwSUdGMElHaDBkSEJ6T2k4dloybDBhSFZpTG1OdmJTOTZZV0ZqYUM5cWFYTnZiaTlwYzNOMVpYTXZNamt4WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIUm9hWE11WTI5dVpHbDBhVzl1VTNSaFkydGJkR2hwY3k1amIyNWthWFJwYjI1VGRHRmpheTVzWlc1bmRHZ3RNVjBnUFQwOUlDZHlZWGNuS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z01UVTdYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSE4wY21sd0tEVXNJRGtwTzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUNkRlRrUmZVa0ZYWDBKTVQwTkxKenRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JjYm1KeVpXRnJPMXh1WTJGelpTQTFPaUJ5WlhSMWNtNGdNVFU3SUZ4dVluSmxZV3M3WEc1allYTmxJRFk2WEc0Z0lIUm9hWE11Y0c5d1UzUmhkR1VvS1R0Y2JpQWdjbVYwZFhKdUlERTBPMXh1WEc1aWNtVmhhenRjYm1OaGMyVWdOenB5WlhSMWNtNGdOalU3WEc1aWNtVmhhenRjYm1OaGMyVWdPRHB5WlhSMWNtNGdOamc3WEc1aWNtVmhhenRjYm1OaGMyVWdPVG9nY21WMGRYSnVJREU1T3lCY2JtSnlaV0ZyTzF4dVkyRnpaU0F4TURwY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGFHbHpMbkJ2Y0ZOMFlYUmxLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZEdocGN5NWlaV2RwYmlnbmNtRjNKeWs3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJREl6TzF4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWEc1aWNtVmhhenRjYm1OaGMyVWdNVEU2Y21WMGRYSnVJRFUxTzF4dVluSmxZV3M3WEc1allYTmxJREV5T25KbGRIVnliaUEyTUR0Y2JtSnlaV0ZyTzF4dVkyRnpaU0F4TXpweVpYUjFjbTRnTWprN1hHNWljbVZoYXp0Y2JtTmhjMlVnTVRRNmNtVjBkWEp1SURRM08xeHVZbkpsWVdzN1hHNWpZWE5sSURFMU9uUm9hWE11Y0c5d1UzUmhkR1VvS1RzZ2NtVjBkWEp1SURRME8xeHVZbkpsWVdzN1hHNWpZWE5sSURFMk9uUm9hWE11Y0c5d1UzUmhkR1VvS1RzZ2NtVjBkWEp1SURRME8xeHVZbkpsWVdzN1hHNWpZWE5sSURFM09uSmxkSFZ5YmlBek5EdGNibUp5WldGck8xeHVZMkZ6WlNBeE9EcHlaWFIxY200Z016azdYRzVpY21WaGF6dGNibU5oYzJVZ01UazZjbVYwZFhKdUlEVXhPMXh1WW5KbFlXczdYRzVqWVhObElESXdPbkpsZEhWeWJpQTBPRHRjYm1KeVpXRnJPMXh1WTJGelpTQXlNVHBjYmlBZ2RHaHBjeTUxYm5CMWRDaDVlVjh1ZVhsMFpYaDBLVHRjYmlBZ2RHaHBjeTV3YjNCVGRHRjBaU2dwTzF4dUlDQjBhR2x6TG1KbFoybHVLQ2RqYjIwbktUdGNibHh1WW5KbFlXczdYRzVqWVhObElESXlPbHh1SUNCMGFHbHpMbkJ2Y0ZOMFlYUmxLQ2s3WEc0Z0lISmxkSFZ5YmlBeE5EdGNibHh1WW5KbFlXczdYRzVqWVhObElESXpPbkpsZEhWeWJpQTBPRHRjYm1KeVpXRnJPMXh1WTJGelpTQXlORHB5WlhSMWNtNGdOek03WEc1aWNtVmhhenRjYm1OaGMyVWdNalU2Y21WMGRYSnVJRGN5TzF4dVluSmxZV3M3WEc1allYTmxJREkyT25KbGRIVnliaUEzTWp0Y2JtSnlaV0ZyTzF4dVkyRnpaU0F5TnpweVpYUjFjbTRnT0RjN1hHNWljbVZoYXp0Y2JtTmhjMlVnTWpnNkx5OGdhV2R1YjNKbElIZG9hWFJsYzNCaFkyVmNibUp5WldGck8xeHVZMkZ6WlNBeU9UcDBhR2x6TG5CdmNGTjBZWFJsS0NrN0lISmxkSFZ5YmlBMU5EdGNibUp5WldGck8xeHVZMkZ6WlNBek1EcDBhR2x6TG5CdmNGTjBZWFJsS0NrN0lISmxkSFZ5YmlBek16dGNibUp5WldGck8xeHVZMkZ6WlNBek1UcDVlVjh1ZVhsMFpYaDBJRDBnYzNSeWFYQW9NU3d5S1M1eVpYQnNZV05sS0M5Y1hGeGNYQ0l2Wnl3blhDSW5LVHNnY21WMGRYSnVJRGd3TzF4dVluSmxZV3M3WEc1allYTmxJRE15T25sNVh5NTVlWFJsZUhRZ1BTQnpkSEpwY0NneExESXBMbkpsY0d4aFkyVW9MMXhjWEZ3bkwyY3NYQ0luWENJcE95QnlaWFIxY200Z09EQTdYRzVpY21WaGF6dGNibU5oYzJVZ016TTZjbVYwZFhKdUlEZzFPMXh1WW5KbFlXczdYRzVqWVhObElETTBPbkpsZEhWeWJpQTRNanRjYm1KeVpXRnJPMXh1WTJGelpTQXpOVHB5WlhSMWNtNGdPREk3WEc1aWNtVmhhenRjYm1OaGMyVWdNelk2Y21WMGRYSnVJRGd6TzF4dVluSmxZV3M3WEc1allYTmxJRE0zT25KbGRIVnliaUE0TkR0Y2JtSnlaV0ZyTzF4dVkyRnpaU0F6T0RweVpYUjFjbTRnT0RFN1hHNWljbVZoYXp0Y2JtTmhjMlVnTXprNmNtVjBkWEp1SURjMU8xeHVZbkpsWVdzN1hHNWpZWE5sSURRd09uSmxkSFZ5YmlBM056dGNibUp5WldGck8xeHVZMkZ6WlNBME1UcHlaWFIxY200Z056STdYRzVpY21WaGF6dGNibU5oYzJVZ05ESTZlWGxmTG5sNWRHVjRkQ0E5SUhsNVh5NTVlWFJsZUhRdWNtVndiR0ZqWlNndlhGeGNYQ2hiWEZ4Y1hGeGNYVjBwTDJjc0p5UXhKeWs3SUhKbGRIVnliaUEzTWp0Y2JtSnlaV0ZyTzF4dVkyRnpaU0EwTXpweVpYUjFjbTRnSjBsT1ZrRk1TVVFuTzF4dVluSmxZV3M3WEc1allYTmxJRFEwT25KbGRIVnliaUExTzF4dVluSmxZV3M3WEc1OVhHNTlPMXh1YkdWNFpYSXVjblZzWlhNZ1BTQmJMMTRvUHpwYlhseGNlREF3WFNvL0tEODlLRnhjZTF4Y2V5a3BLUzhzTDE0b1B6cGJYbHhjZURBd1hTc3BMeXd2WGlnL09sdGVYRng0TURCZGV6SXNmVDhvUHowb1hGeDdYRng3ZkZ4Y1hGeGNYSHRjWEh0OFhGeGNYRnhjWEZ4Y1hIdGNYSHQ4SkNrcEtTOHNMMTRvUHpwY1hIdGNYSHRjWEh0Y1hIc29QejFiWGx4Y0wxMHBLUzhzTDE0b1B6cGNYSHRjWEh0Y1hIdGNYSHRjWEM5YlhseGNjeUZjSWlNbExTeGNYQzVjWEM4N0xUNUFYRnhiTFZ4Y1htQmNYSHN0ZmwwcktEODlXejE5WEZ4elhGd3ZMbDBwWEZ4OVhGeDlYRng5WEZ4OUtTOHNMMTRvUHpwYlhseGNlREF3WFNzL0tEODlLRnhjZTF4Y2UxeGNlMXhjZXlrcEtTOHNMMTRvUHpwYlhGeHpYRnhUWFNvL0xTMG9maWsvWEZ4OVhGeDlLUzhzTDE0b1B6cGNYQ2dwTHl3dlhpZy9PbHhjS1NrdkxDOWVLRDg2WEZ4N1hGeDdYRng3WEZ4N0tTOHNMMTRvUHpwY1hIMWNYSDFjWEgxY1hIMHBMeXd2WGlnL09seGNlMXhjZXloK0tUOCtLUzhzTDE0b1B6cGNYSHRjWEhzb2Zpay9JejRwTHl3dlhpZy9PbHhjZTF4Y2V5aCtLVDhqWEZ3cVB5a3ZMQzllS0Q4NlhGeDdYRng3S0g0cFAxeGNMeWt2TEM5ZUtEODZYRng3WEZ4N0tINHBQMXhjWGx4Y2N5b29maWsvWEZ4OVhGeDlLUzhzTDE0b1B6cGNYSHRjWEhzb2Zpay9YRnh6S21Wc2MyVmNYSE1xS0g0cFAxeGNmVnhjZlNrdkxDOWVLRDg2WEZ4N1hGeDdLSDRwUDF4Y1hpa3ZMQzllS0Q4NlhGeDdYRng3S0g0cFAxeGNjeXBsYkhObFhGeGlLUzhzTDE0b1B6cGNYSHRjWEhzb2Zpay9YRng3S1M4c0wxNG9QenBjWEh0Y1hIc29maWsvSmlrdkxDOWVLRDg2WEZ4N1hGeDdLSDRwUHlFdExTa3ZMQzllS0Q4NlhGeDdYRng3S0g0cFB5RmJYRnh6WEZ4VFhTby9YRng5WEZ4OUtTOHNMMTRvUHpwY1hIdGNYSHNvZmlrL1hGd3FQeWt2TEM5ZUtEODZQU2t2TEM5ZUtEODZYRnd1WEZ3dUtTOHNMMTRvUHpwY1hDNG9QejBvV3oxK2ZWeGNjMXhjTHk0cGZGMHBLU2t2TEM5ZUtEODZXMXhjTHk1ZEtTOHNMMTRvUHpwY1hITXJLUzhzTDE0b1B6cGNYSDBvZmlrL1hGeDlYRng5S1M4c0wxNG9Qem9vZmlrL1hGeDlYRng5S1M4c0wxNG9QenBjSWloY1hGeGNXMXdpWFh4Ylhsd2lYU2txWENJcEx5d3ZYaWcvT2ljb1hGeGNYRnNuWFh4YlhpZGRLU29uS1M4c0wxNG9QenBBS1M4c0wxNG9QenAwY25WbEtEODlLRnQrZlZ4Y2N5bGRLU2twTHl3dlhpZy9PbVpoYkhObEtEODlLRnQrZlZ4Y2N5bGRLU2twTHl3dlhpZy9PblZ1WkdWbWFXNWxaQ2cvUFNoYmZuMWNYSE1wWFNrcEtTOHNMMTRvUHpwdWRXeHNLRDg5S0Z0K2ZWeGNjeWxkS1NrcEx5d3ZYaWcvT2kwL1d6QXRPVjByS0Q4NlhGd3VXekF0T1YwcktUOG9QejBvVzM1OVhGeHpLVjBwS1NrdkxDOWVLRDg2WVhOY1hITXJYRng4S1M4c0wxNG9QenBjWEh3cEx5d3ZYaWcvT2loYlhseGNjeUZjSWlNbExTeGNYQzVjWEM4N0xUNUFYRnhiTFZ4Y1htQmNYSHN0ZmwwcktEODlLRnM5Zm4xY1hITmNYQzh1S1h4ZEtTa3BLUzhzTDE0b1B6cGNYRnNvWEZ4Y1hGeGNYWHhiWGx4Y1hWMHBLbHhjWFNrdkxDOWVLRDg2TGlrdkxDOWVLRDg2SkNrdlhUdGNibXhsZUdWeUxtTnZibVJwZEdsdmJuTWdQU0I3WENKdGRWd2lPbnRjSW5KMWJHVnpYQ0k2V3pjc09DdzVMREV3TERFeExERXlMREV6TERFMExERTFMREUyTERFM0xERTRMREU1TERJd0xESXhMREl5TERJekxESTBMREkxTERJMkxESTNMREk0TERJNUxETXdMRE14TERNeUxETXpMRE0wTERNMUxETTJMRE0zTERNNExETTVMRFF3TERReExEUXlMRFF6TERRMFhTeGNJbWx1WTJ4MWMybDJaVndpT21aaGJITmxmU3hjSW1WdGRWd2lPbnRjSW5KMWJHVnpYQ0k2V3pKZExGd2lhVzVqYkhWemFYWmxYQ0k2Wm1Gc2MyVjlMRndpWTI5dFhDSTZlMXdpY25Wc1pYTmNJanBiTmwwc1hDSnBibU5zZFhOcGRtVmNJanBtWVd4elpYMHNYQ0p5WVhkY0lqcDdYQ0p5ZFd4bGMxd2lPbHN6TERRc05WMHNYQ0pwYm1Oc2RYTnBkbVZjSWpwbVlXeHpaWDBzWENKSlRrbFVTVUZNWENJNmUxd2ljblZzWlhOY0lqcGJNQ3d4TERRMFhTeGNJbWx1WTJ4MWMybDJaVndpT25SeWRXVjlmVHRjYm5KbGRIVnliaUJzWlhobGNqdDlLU2dwWEc1d1lYSnpaWEl1YkdWNFpYSWdQU0JzWlhobGNqdGNibVoxYm1OMGFXOXVJRkJoY25ObGNpQW9LU0I3SUhSb2FYTXVlWGtnUFNCN2ZUc2dmVkJoY25ObGNpNXdjbTkwYjNSNWNHVWdQU0J3WVhKelpYSTdjR0Z5YzJWeUxsQmhjbk5sY2lBOUlGQmhjbk5sY2p0Y2JuSmxkSFZ5YmlCdVpYY2dVR0Z5YzJWeU8xeHVmU2tvS1R0bGVIQnZjblFnWkdWbVlYVnNkQ0JvWVc1a2JHVmlZWEp6TzF4dUlsMTlcbiIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbi8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxudmFyIF9leGNlcHRpb24gPSByZXF1aXJlKCcuLi9leGNlcHRpb24nKTtcblxudmFyIF9leGNlcHRpb24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZXhjZXB0aW9uKTtcblxuZnVuY3Rpb24gVmlzaXRvcigpIHtcbiAgdGhpcy5wYXJlbnRzID0gW107XG59XG5cblZpc2l0b3IucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogVmlzaXRvcixcbiAgbXV0YXRpbmc6IGZhbHNlLFxuXG4gIC8vIFZpc2l0cyBhIGdpdmVuIHZhbHVlLiBJZiBtdXRhdGluZywgd2lsbCByZXBsYWNlIHRoZSB2YWx1ZSBpZiBuZWNlc3NhcnkuXG4gIGFjY2VwdEtleTogZnVuY3Rpb24gYWNjZXB0S2V5KG5vZGUsIG5hbWUpIHtcbiAgICB2YXIgdmFsdWUgPSB0aGlzLmFjY2VwdChub2RlW25hbWVdKTtcbiAgICBpZiAodGhpcy5tdXRhdGluZykge1xuICAgICAgLy8gSGFja3kgc2FuaXR5IGNoZWNrOiBUaGlzIG1heSBoYXZlIGEgZmV3IGZhbHNlIHBvc2l0aXZlcyBmb3IgdHlwZSBmb3IgdGhlIGhlbHBlclxuICAgICAgLy8gbWV0aG9kcyBidXQgd2lsbCBnZW5lcmFsbHkgZG8gdGhlIHJpZ2h0IHRoaW5nIHdpdGhvdXQgYSBsb3Qgb2Ygb3ZlcmhlYWQuXG4gICAgICBpZiAodmFsdWUgJiYgIVZpc2l0b3IucHJvdG90eXBlW3ZhbHVlLnR5cGVdKSB7XG4gICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdVbmV4cGVjdGVkIG5vZGUgdHlwZSBcIicgKyB2YWx1ZS50eXBlICsgJ1wiIGZvdW5kIHdoZW4gYWNjZXB0aW5nICcgKyBuYW1lICsgJyBvbiAnICsgbm9kZS50eXBlKTtcbiAgICAgIH1cbiAgICAgIG5vZGVbbmFtZV0gPSB2YWx1ZTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gUGVyZm9ybXMgYW4gYWNjZXB0IG9wZXJhdGlvbiB3aXRoIGFkZGVkIHNhbml0eSBjaGVjayB0byBlbnN1cmVcbiAgLy8gcmVxdWlyZWQga2V5cyBhcmUgbm90IHJlbW92ZWQuXG4gIGFjY2VwdFJlcXVpcmVkOiBmdW5jdGlvbiBhY2NlcHRSZXF1aXJlZChub2RlLCBuYW1lKSB7XG4gICAgdGhpcy5hY2NlcHRLZXkobm9kZSwgbmFtZSk7XG5cbiAgICBpZiAoIW5vZGVbbmFtZV0pIHtcbiAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKG5vZGUudHlwZSArICcgcmVxdWlyZXMgJyArIG5hbWUpO1xuICAgIH1cbiAgfSxcblxuICAvLyBUcmF2ZXJzZXMgYSBnaXZlbiBhcnJheS4gSWYgbXV0YXRpbmcsIGVtcHR5IHJlc3Buc2VzIHdpbGwgYmUgcmVtb3ZlZFxuICAvLyBmb3IgY2hpbGQgZWxlbWVudHMuXG4gIGFjY2VwdEFycmF5OiBmdW5jdGlvbiBhY2NlcHRBcnJheShhcnJheSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBsID0gYXJyYXkubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICB0aGlzLmFjY2VwdEtleShhcnJheSwgaSk7XG5cbiAgICAgIGlmICghYXJyYXlbaV0pIHtcbiAgICAgICAgYXJyYXkuc3BsaWNlKGksIDEpO1xuICAgICAgICBpLS07XG4gICAgICAgIGwtLTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgYWNjZXB0OiBmdW5jdGlvbiBhY2NlcHQob2JqZWN0KSB7XG4gICAgaWYgKCFvYmplY3QpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogU2FuaXR5IGNvZGUgKi9cbiAgICBpZiAoIXRoaXNbb2JqZWN0LnR5cGVdKSB7XG4gICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnVW5rbm93biB0eXBlOiAnICsgb2JqZWN0LnR5cGUsIG9iamVjdCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY3VycmVudCkge1xuICAgICAgdGhpcy5wYXJlbnRzLnVuc2hpZnQodGhpcy5jdXJyZW50KTtcbiAgICB9XG4gICAgdGhpcy5jdXJyZW50ID0gb2JqZWN0O1xuXG4gICAgdmFyIHJldCA9IHRoaXNbb2JqZWN0LnR5cGVdKG9iamVjdCk7XG5cbiAgICB0aGlzLmN1cnJlbnQgPSB0aGlzLnBhcmVudHMuc2hpZnQoKTtcblxuICAgIGlmICghdGhpcy5tdXRhdGluZyB8fCByZXQpIHtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSBlbHNlIGlmIChyZXQgIT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cbiAgfSxcblxuICBQcm9ncmFtOiBmdW5jdGlvbiBQcm9ncmFtKHByb2dyYW0pIHtcbiAgICB0aGlzLmFjY2VwdEFycmF5KHByb2dyYW0uYm9keSk7XG4gIH0sXG5cbiAgTXVzdGFjaGVTdGF0ZW1lbnQ6IHZpc2l0U3ViRXhwcmVzc2lvbixcbiAgRGVjb3JhdG9yOiB2aXNpdFN1YkV4cHJlc3Npb24sXG5cbiAgQmxvY2tTdGF0ZW1lbnQ6IHZpc2l0QmxvY2ssXG4gIERlY29yYXRvckJsb2NrOiB2aXNpdEJsb2NrLFxuXG4gIFBhcnRpYWxTdGF0ZW1lbnQ6IHZpc2l0UGFydGlhbCxcbiAgUGFydGlhbEJsb2NrU3RhdGVtZW50OiBmdW5jdGlvbiBQYXJ0aWFsQmxvY2tTdGF0ZW1lbnQocGFydGlhbCkge1xuICAgIHZpc2l0UGFydGlhbC5jYWxsKHRoaXMsIHBhcnRpYWwpO1xuXG4gICAgdGhpcy5hY2NlcHRLZXkocGFydGlhbCwgJ3Byb2dyYW0nKTtcbiAgfSxcblxuICBDb250ZW50U3RhdGVtZW50OiBmdW5jdGlvbiBDb250ZW50U3RhdGVtZW50KCkgLyogY29udGVudCAqL3t9LFxuICBDb21tZW50U3RhdGVtZW50OiBmdW5jdGlvbiBDb21tZW50U3RhdGVtZW50KCkgLyogY29tbWVudCAqL3t9LFxuXG4gIFN1YkV4cHJlc3Npb246IHZpc2l0U3ViRXhwcmVzc2lvbixcblxuICBQYXRoRXhwcmVzc2lvbjogZnVuY3Rpb24gUGF0aEV4cHJlc3Npb24oKSAvKiBwYXRoICove30sXG5cbiAgU3RyaW5nTGl0ZXJhbDogZnVuY3Rpb24gU3RyaW5nTGl0ZXJhbCgpIC8qIHN0cmluZyAqL3t9LFxuICBOdW1iZXJMaXRlcmFsOiBmdW5jdGlvbiBOdW1iZXJMaXRlcmFsKCkgLyogbnVtYmVyICove30sXG4gIEJvb2xlYW5MaXRlcmFsOiBmdW5jdGlvbiBCb29sZWFuTGl0ZXJhbCgpIC8qIGJvb2wgKi97fSxcbiAgVW5kZWZpbmVkTGl0ZXJhbDogZnVuY3Rpb24gVW5kZWZpbmVkTGl0ZXJhbCgpIC8qIGxpdGVyYWwgKi97fSxcbiAgTnVsbExpdGVyYWw6IGZ1bmN0aW9uIE51bGxMaXRlcmFsKCkgLyogbGl0ZXJhbCAqL3t9LFxuXG4gIEhhc2g6IGZ1bmN0aW9uIEhhc2goaGFzaCkge1xuICAgIHRoaXMuYWNjZXB0QXJyYXkoaGFzaC5wYWlycyk7XG4gIH0sXG4gIEhhc2hQYWlyOiBmdW5jdGlvbiBIYXNoUGFpcihwYWlyKSB7XG4gICAgdGhpcy5hY2NlcHRSZXF1aXJlZChwYWlyLCAndmFsdWUnKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gdmlzaXRTdWJFeHByZXNzaW9uKG11c3RhY2hlKSB7XG4gIHRoaXMuYWNjZXB0UmVxdWlyZWQobXVzdGFjaGUsICdwYXRoJyk7XG4gIHRoaXMuYWNjZXB0QXJyYXkobXVzdGFjaGUucGFyYW1zKTtcbiAgdGhpcy5hY2NlcHRLZXkobXVzdGFjaGUsICdoYXNoJyk7XG59XG5mdW5jdGlvbiB2aXNpdEJsb2NrKGJsb2NrKSB7XG4gIHZpc2l0U3ViRXhwcmVzc2lvbi5jYWxsKHRoaXMsIGJsb2NrKTtcblxuICB0aGlzLmFjY2VwdEtleShibG9jaywgJ3Byb2dyYW0nKTtcbiAgdGhpcy5hY2NlcHRLZXkoYmxvY2ssICdpbnZlcnNlJyk7XG59XG5mdW5jdGlvbiB2aXNpdFBhcnRpYWwocGFydGlhbCkge1xuICB0aGlzLmFjY2VwdFJlcXVpcmVkKHBhcnRpYWwsICduYW1lJyk7XG4gIHRoaXMuYWNjZXB0QXJyYXkocGFydGlhbC5wYXJhbXMpO1xuICB0aGlzLmFjY2VwdEtleShwYXJ0aWFsLCAnaGFzaCcpO1xufVxuXG5leHBvcnRzWydkZWZhdWx0J10gPSBWaXNpdG9yO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMk52YlhCcGJHVnlMM1pwYzJsMGIzSXVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3T3pzN096dDVRa0ZCYzBJc1kwRkJZenM3T3p0QlFVVndReXhUUVVGVExFOUJRVThzUjBGQlJ6dEJRVU5xUWl4TlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFVkJRVVVzUTBGQlF6dERRVU51UWpzN1FVRkZSQ3hQUVVGUExFTkJRVU1zVTBGQlV5eEhRVUZITzBGQlEyeENMR0ZCUVZjc1JVRkJSU3hQUVVGUE8wRkJRM0JDTEZWQlFWRXNSVUZCUlN4TFFVRkxPenM3UVVGSFppeFhRVUZUTEVWQlFVVXNiVUpCUVZNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUlVGQlJUdEJRVU01UWl4UlFVRkpMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRM0JETEZGQlFVa3NTVUZCU1N4RFFVRkRMRkZCUVZFc1JVRkJSVHM3TzBGQlIycENMRlZCUVVrc1MwRkJTeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEZOQlFWTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVU3UVVGRE0wTXNZMEZCVFN3eVFrRkRTaXgzUWtGQmQwSXNSMEZEZEVJc1MwRkJTeXhEUVVGRExFbEJRVWtzUjBGRFZpeDVRa0ZCZVVJc1IwRkRla0lzU1VGQlNTeEhRVU5LTEUxQlFVMHNSMEZEVGl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVOYUxFTkJRVU03VDBGRFNEdEJRVU5FTEZWQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU03UzBGRGNFSTdSMEZEUmpzN096dEJRVWxFTEdkQ1FVRmpMRVZCUVVVc2QwSkJRVk1zU1VGQlNTeEZRVUZGTEVsQlFVa3NSVUZCUlR0QlFVTnVReXhSUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenM3UVVGRk0wSXNVVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJUdEJRVU5tTEZsQlFVMHNNa0pCUVdNc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eFpRVUZaTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNN1MwRkRkRVE3UjBGRFJqczdPenRCUVVsRUxHRkJRVmNzUlVGQlJTeHhRa0ZCVXl4TFFVRkxMRVZCUVVVN1FVRkRNMElzVTBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdEJRVU0xUXl4VlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXpzN1FVRkZla0lzVlVGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSVHRCUVVOaUxHRkJRVXNzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8wRkJRMjVDTEZOQlFVTXNSVUZCUlN4RFFVRkRPMEZCUTBvc1UwRkJReXhGUVVGRkxFTkJRVU03VDBGRFREdExRVU5HTzBkQlEwWTdPMEZCUlVRc1VVRkJUU3hGUVVGRkxHZENRVUZUTEUxQlFVMHNSVUZCUlR0QlFVTjJRaXhSUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTzBGQlExZ3NZVUZCVHp0TFFVTlNPenM3UVVGSFJDeFJRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJUdEJRVU4wUWl4WlFVRk5MREpDUVVGakxHZENRVUZuUWl4SFFVRkhMRTFCUVUwc1EwRkJReXhKUVVGSkxFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTTdTMEZETjBRN08wRkJSVVFzVVVGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RlFVRkZPMEZCUTJoQ0xGVkJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dExRVU53UXp0QlFVTkVMRkZCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzVFVGQlRTeERRVUZET3p0QlFVVjBRaXhSUVVGSkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZET3p0QlFVVndReXhSUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU03TzBGQlJYQkRMRkZCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeEpRVUZKTEVkQlFVY3NSVUZCUlR0QlFVTjZRaXhoUVVGUExFZEJRVWNzUTBGQlF6dExRVU5hTEUxQlFVMHNTVUZCU1N4SFFVRkhMRXRCUVVzc1MwRkJTeXhGUVVGRk8wRkJRM2hDTEdGQlFVOHNUVUZCVFN4RFFVRkRPMHRCUTJZN1IwRkRSanM3UVVGRlJDeFRRVUZQTEVWQlFVVXNhVUpCUVZNc1QwRkJUeXhGUVVGRk8wRkJRM3BDTEZGQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzBkQlEyaERPenRCUVVWRUxHMUNRVUZwUWl4RlFVRkZMR3RDUVVGclFqdEJRVU55UXl4WFFVRlRMRVZCUVVVc2EwSkJRV3RDT3p0QlFVVTNRaXhuUWtGQll5eEZRVUZGTEZWQlFWVTdRVUZETVVJc1owSkJRV01zUlVGQlJTeFZRVUZWT3p0QlFVVXhRaXhyUWtGQlowSXNSVUZCUlN4WlFVRlpPMEZCUXpsQ0xIVkNRVUZ4UWl4RlFVRkZMQ3RDUVVGVExFOUJRVThzUlVGQlJUdEJRVU4yUXl4blFrRkJXU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVWQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVVNN08wRkJSV3BETEZGQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1QwRkJUeXhGUVVGRkxGTkJRVk1zUTBGQlF5eERRVUZETzBkQlEzQkRPenRCUVVWRUxHdENRVUZuUWl4RlFVRkZMSGxEUVVGM1FpeEZRVUZGTzBGQlF6VkRMR3RDUVVGblFpeEZRVUZGTEhsRFFVRjNRaXhGUVVGRk96dEJRVVUxUXl4bFFVRmhMRVZCUVVVc2EwSkJRV3RDT3p0QlFVVnFReXhuUWtGQll5eEZRVUZGTEc5RFFVRnhRaXhGUVVGRk96dEJRVVYyUXl4bFFVRmhMRVZCUVVVc2NVTkJRWFZDTEVWQlFVVTdRVUZEZUVNc1pVRkJZU3hGUVVGRkxIRkRRVUYxUWl4RlFVRkZPMEZCUTNoRExHZENRVUZqTEVWQlFVVXNiME5CUVhGQ0xFVkJRVVU3UVVGRGRrTXNhMEpCUVdkQ0xFVkJRVVVzZVVOQlFYZENMRVZCUVVVN1FVRkROVU1zWVVGQlZ5eEZRVUZGTEc5RFFVRjNRaXhGUVVGRk96dEJRVVYyUXl4TlFVRkpMRVZCUVVVc1kwRkJVeXhKUVVGSkxFVkJRVVU3UVVGRGJrSXNVVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdSMEZET1VJN1FVRkRSQ3hWUVVGUkxFVkJRVVVzYTBKQlFWTXNTVUZCU1N4RlFVRkZPMEZCUTNaQ0xGRkJRVWtzUTBGQlF5eGpRVUZqTEVOQlFVTXNTVUZCU1N4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRE8wZEJRM0JETzBOQlEwWXNRMEZCUXpzN1FVRkZSaXhUUVVGVExHdENRVUZyUWl4RFFVRkRMRkZCUVZFc1JVRkJSVHRCUVVOd1F5eE5RVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRkZCUVZFc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF6dEJRVU4wUXl4TlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExGRkJRVkVzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0QlFVTnNReXhOUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEZGQlFWRXNSVUZCUlN4TlFVRk5MRU5CUVVNc1EwRkJRenREUVVOc1F6dEJRVU5FTEZOQlFWTXNWVUZCVlN4RFFVRkRMRXRCUVVzc1JVRkJSVHRCUVVONlFpeHZRa0ZCYTBJc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPenRCUVVWeVF5eE5RVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRXRCUVVzc1JVRkJSU3hUUVVGVExFTkJRVU1zUTBGQlF6dEJRVU5xUXl4TlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFdEJRVXNzUlVGQlJTeFRRVUZUTEVOQlFVTXNRMEZCUXp0RFFVTnNRenRCUVVORUxGTkJRVk1zV1VGQldTeERRVUZETEU5QlFVOHNSVUZCUlR0QlFVTTNRaXhOUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEU5QlFVOHNSVUZCUlN4TlFVRk5MRU5CUVVNc1EwRkJRenRCUVVOeVF5eE5RVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEJRVU5xUXl4TlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFOUJRVThzUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUXp0RFFVTnFRenM3Y1VKQlJXTXNUMEZCVHlJc0ltWnBiR1VpT2lKMmFYTnBkRzl5TG1weklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElFVjRZMlZ3ZEdsdmJpQm1jbTl0SUNjdUxpOWxlR05sY0hScGIyNG5PMXh1WEc1bWRXNWpkR2x2YmlCV2FYTnBkRzl5S0NrZ2UxeHVJQ0IwYUdsekxuQmhjbVZ1ZEhNZ1BTQmJYVHRjYm4xY2JseHVWbWx6YVhSdmNpNXdjbTkwYjNSNWNHVWdQU0I3WEc0Z0lHTnZibk4wY25WamRHOXlPaUJXYVhOcGRHOXlMRnh1SUNCdGRYUmhkR2x1WnpvZ1ptRnNjMlVzWEc1Y2JpQWdMeThnVm1semFYUnpJR0VnWjJsMlpXNGdkbUZzZFdVdUlFbG1JRzExZEdGMGFXNW5MQ0IzYVd4c0lISmxjR3hoWTJVZ2RHaGxJSFpoYkhWbElHbG1JRzVsWTJWemMyRnllUzVjYmlBZ1lXTmpaWEIwUzJWNU9pQm1kVzVqZEdsdmJpaHViMlJsTENCdVlXMWxLU0I3WEc0Z0lDQWdiR1YwSUhaaGJIVmxJRDBnZEdocGN5NWhZMk5sY0hRb2JtOWtaVnR1WVcxbFhTazdYRzRnSUNBZ2FXWWdLSFJvYVhNdWJYVjBZWFJwYm1jcElIdGNiaUFnSUNBZ0lDOHZJRWhoWTJ0NUlITmhibWwwZVNCamFHVmphem9nVkdocGN5QnRZWGtnYUdGMlpTQmhJR1psZHlCbVlXeHpaU0J3YjNOcGRHbDJaWE1nWm05eUlIUjVjR1VnWm05eUlIUm9aU0JvWld4d1pYSmNiaUFnSUNBZ0lDOHZJRzFsZEdodlpITWdZblYwSUhkcGJHd2daMlZ1WlhKaGJHeDVJR1J2SUhSb1pTQnlhV2RvZENCMGFHbHVaeUIzYVhSb2IzVjBJR0VnYkc5MElHOW1JRzkyWlhKb1pXRmtMbHh1SUNBZ0lDQWdhV1lnS0haaGJIVmxJQ1ltSUNGV2FYTnBkRzl5TG5CeWIzUnZkSGx3WlZ0MllXeDFaUzUwZVhCbFhTa2dlMXh1SUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhoalpYQjBhVzl1S0Z4dUlDQWdJQ0FnSUNBZ0lDZFZibVY0Y0dWamRHVmtJRzV2WkdVZ2RIbHdaU0JjSWljZ0sxeHVJQ0FnSUNBZ0lDQWdJQ0FnZG1Gc2RXVXVkSGx3WlNBclhHNGdJQ0FnSUNBZ0lDQWdJQ0FuWENJZ1ptOTFibVFnZDJobGJpQmhZMk5sY0hScGJtY2dKeUFyWEc0Z0lDQWdJQ0FnSUNBZ0lDQnVZVzFsSUN0Y2JpQWdJQ0FnSUNBZ0lDQWdJQ2NnYjI0Z0p5QXJYRzRnSUNBZ0lDQWdJQ0FnSUNCdWIyUmxMblI1Y0dWY2JpQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHNXZaR1ZiYm1GdFpWMGdQU0IyWVd4MVpUdGNiaUFnSUNCOVhHNGdJSDBzWEc1Y2JpQWdMeThnVUdWeVptOXliWE1nWVc0Z1lXTmpaWEIwSUc5d1pYSmhkR2x2YmlCM2FYUm9JR0ZrWkdWa0lITmhibWwwZVNCamFHVmpheUIwYnlCbGJuTjFjbVZjYmlBZ0x5OGdjbVZ4ZFdseVpXUWdhMlY1Y3lCaGNtVWdibTkwSUhKbGJXOTJaV1F1WEc0Z0lHRmpZMlZ3ZEZKbGNYVnBjbVZrT2lCbWRXNWpkR2x2YmlodWIyUmxMQ0J1WVcxbEtTQjdYRzRnSUNBZ2RHaHBjeTVoWTJObGNIUkxaWGtvYm05a1pTd2dibUZ0WlNrN1hHNWNiaUFnSUNCcFppQW9JVzV2WkdWYmJtRnRaVjBwSUh0Y2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmVHTmxjSFJwYjI0b2JtOWtaUzUwZVhCbElDc2dKeUJ5WlhGMWFYSmxjeUFuSUNzZ2JtRnRaU2s3WEc0Z0lDQWdmVnh1SUNCOUxGeHVYRzRnSUM4dklGUnlZWFpsY25ObGN5QmhJR2RwZG1WdUlHRnljbUY1TGlCSlppQnRkWFJoZEdsdVp5d2daVzF3ZEhrZ2NtVnpjRzV6WlhNZ2QybHNiQ0JpWlNCeVpXMXZkbVZrWEc0Z0lDOHZJR1p2Y2lCamFHbHNaQ0JsYkdWdFpXNTBjeTVjYmlBZ1lXTmpaWEIwUVhKeVlYazZJR1oxYm1OMGFXOXVLR0Z5Y21GNUtTQjdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREFzSUd3Z1BTQmhjbkpoZVM1c1pXNW5kR2c3SUdrZ1BDQnNPeUJwS3lzcElIdGNiaUFnSUNBZ0lIUm9hWE11WVdOalpYQjBTMlY1S0dGeWNtRjVMQ0JwS1R0Y2JseHVJQ0FnSUNBZ2FXWWdLQ0ZoY25KaGVWdHBYU2tnZTF4dUlDQWdJQ0FnSUNCaGNuSmhlUzV6Y0d4cFkyVW9hU3dnTVNrN1hHNGdJQ0FnSUNBZ0lHa3RMVHRjYmlBZ0lDQWdJQ0FnYkMwdE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmU3hjYmx4dUlDQmhZMk5sY0hRNklHWjFibU4wYVc5dUtHOWlhbVZqZENrZ2UxeHVJQ0FnSUdsbUlDZ2hiMkpxWldOMEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHlvZ2FYTjBZVzVpZFd3Z2FXZHViM0psSUc1bGVIUTZJRk5oYm1sMGVTQmpiMlJsSUNvdlhHNGdJQ0FnYVdZZ0tDRjBhR2x6VzI5aWFtVmpkQzUwZVhCbFhTa2dlMXh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVY0WTJWd2RHbHZiaWduVlc1cmJtOTNiaUIwZVhCbE9pQW5JQ3NnYjJKcVpXTjBMblI1Y0dVc0lHOWlhbVZqZENrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tIUm9hWE11WTNWeWNtVnVkQ2tnZTF4dUlDQWdJQ0FnZEdocGN5NXdZWEpsYm5SekxuVnVjMmhwWm5Rb2RHaHBjeTVqZFhKeVpXNTBLVHRjYmlBZ0lDQjlYRzRnSUNBZ2RHaHBjeTVqZFhKeVpXNTBJRDBnYjJKcVpXTjBPMXh1WEc0Z0lDQWdiR1YwSUhKbGRDQTlJSFJvYVhOYmIySnFaV04wTG5SNWNHVmRLRzlpYW1WamRDazdYRzVjYmlBZ0lDQjBhR2x6TG1OMWNuSmxiblFnUFNCMGFHbHpMbkJoY21WdWRITXVjMmhwWm5Rb0tUdGNibHh1SUNBZ0lHbG1JQ2doZEdocGN5NXRkWFJoZEdsdVp5QjhmQ0J5WlhRcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCeVpYUTdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaHlaWFFnSVQwOUlHWmhiSE5sS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYjJKcVpXTjBPMXh1SUNBZ0lIMWNiaUFnZlN4Y2JseHVJQ0JRY205bmNtRnRPaUJtZFc1amRHbHZiaWh3Y205bmNtRnRLU0I3WEc0Z0lDQWdkR2hwY3k1aFkyTmxjSFJCY25KaGVTaHdjbTluY21GdExtSnZaSGtwTzF4dUlDQjlMRnh1WEc0Z0lFMTFjM1JoWTJobFUzUmhkR1Z0Wlc1ME9pQjJhWE5wZEZOMVlrVjRjSEpsYzNOcGIyNHNYRzRnSUVSbFkyOXlZWFJ2Y2pvZ2RtbHphWFJUZFdKRmVIQnlaWE56YVc5dUxGeHVYRzRnSUVKc2IyTnJVM1JoZEdWdFpXNTBPaUIyYVhOcGRFSnNiMk5yTEZ4dUlDQkVaV052Y21GMGIzSkNiRzlqYXpvZ2RtbHphWFJDYkc5amF5eGNibHh1SUNCUVlYSjBhV0ZzVTNSaGRHVnRaVzUwT2lCMmFYTnBkRkJoY25ScFlXd3NYRzRnSUZCaGNuUnBZV3hDYkc5amExTjBZWFJsYldWdWREb2dablZ1WTNScGIyNG9jR0Z5ZEdsaGJDa2dlMXh1SUNBZ0lIWnBjMmwwVUdGeWRHbGhiQzVqWVd4c0tIUm9hWE1zSUhCaGNuUnBZV3dwTzF4dVhHNGdJQ0FnZEdocGN5NWhZMk5sY0hSTFpYa29jR0Z5ZEdsaGJDd2dKM0J5YjJkeVlXMG5LVHRjYmlBZ2ZTeGNibHh1SUNCRGIyNTBaVzUwVTNSaGRHVnRaVzUwT2lCbWRXNWpkR2x2YmlndktpQmpiMjUwWlc1MElDb3ZLU0I3ZlN4Y2JpQWdRMjl0YldWdWRGTjBZWFJsYldWdWREb2dablZ1WTNScGIyNG9MeW9nWTI5dGJXVnVkQ0FxTHlrZ2UzMHNYRzVjYmlBZ1UzVmlSWGh3Y21WemMybHZiam9nZG1semFYUlRkV0pGZUhCeVpYTnphVzl1TEZ4dVhHNGdJRkJoZEdoRmVIQnlaWE56YVc5dU9pQm1kVzVqZEdsdmJpZ3ZLaUJ3WVhSb0lDb3ZLU0I3ZlN4Y2JseHVJQ0JUZEhKcGJtZE1hWFJsY21Gc09pQm1kVzVqZEdsdmJpZ3ZLaUJ6ZEhKcGJtY2dLaThwSUh0OUxGeHVJQ0JPZFcxaVpYSk1hWFJsY21Gc09pQm1kVzVqZEdsdmJpZ3ZLaUJ1ZFcxaVpYSWdLaThwSUh0OUxGeHVJQ0JDYjI5c1pXRnVUR2wwWlhKaGJEb2dablZ1WTNScGIyNG9MeW9nWW05dmJDQXFMeWtnZTMwc1hHNGdJRlZ1WkdWbWFXNWxaRXhwZEdWeVlXdzZJR1oxYm1OMGFXOXVLQzhxSUd4cGRHVnlZV3dnS2k4cElIdDlMRnh1SUNCT2RXeHNUR2wwWlhKaGJEb2dablZ1WTNScGIyNG9MeW9nYkdsMFpYSmhiQ0FxTHlrZ2UzMHNYRzVjYmlBZ1NHRnphRG9nWm5WdVkzUnBiMjRvYUdGemFDa2dlMXh1SUNBZ0lIUm9hWE11WVdOalpYQjBRWEp5WVhrb2FHRnphQzV3WVdseWN5azdYRzRnSUgwc1hHNGdJRWhoYzJoUVlXbHlPaUJtZFc1amRHbHZiaWh3WVdseUtTQjdYRzRnSUNBZ2RHaHBjeTVoWTJObGNIUlNaWEYxYVhKbFpDaHdZV2x5TENBbmRtRnNkV1VuS1R0Y2JpQWdmVnh1ZlR0Y2JseHVablZ1WTNScGIyNGdkbWx6YVhSVGRXSkZlSEJ5WlhOemFXOXVLRzExYzNSaFkyaGxLU0I3WEc0Z0lIUm9hWE11WVdOalpYQjBVbVZ4ZFdseVpXUW9iWFZ6ZEdGamFHVXNJQ2R3WVhSb0p5azdYRzRnSUhSb2FYTXVZV05qWlhCMFFYSnlZWGtvYlhWemRHRmphR1V1Y0dGeVlXMXpLVHRjYmlBZ2RHaHBjeTVoWTJObGNIUkxaWGtvYlhWemRHRmphR1VzSUNkb1lYTm9KeWs3WEc1OVhHNW1kVzVqZEdsdmJpQjJhWE5wZEVKc2IyTnJLR0pzYjJOcktTQjdYRzRnSUhacGMybDBVM1ZpUlhod2NtVnpjMmx2Ymk1allXeHNLSFJvYVhNc0lHSnNiMk5yS1R0Y2JseHVJQ0IwYUdsekxtRmpZMlZ3ZEV0bGVTaGliRzlqYXl3Z0ozQnliMmR5WVcwbktUdGNiaUFnZEdocGN5NWhZMk5sY0hSTFpYa29ZbXh2WTJzc0lDZHBiblpsY25ObEp5azdYRzU5WEc1bWRXNWpkR2x2YmlCMmFYTnBkRkJoY25ScFlXd29jR0Z5ZEdsaGJDa2dlMXh1SUNCMGFHbHpMbUZqWTJWd2RGSmxjWFZwY21Wa0tIQmhjblJwWVd3c0lDZHVZVzFsSnlrN1hHNGdJSFJvYVhNdVlXTmpaWEIwUVhKeVlYa29jR0Z5ZEdsaGJDNXdZWEpoYlhNcE8xeHVJQ0IwYUdsekxtRmpZMlZ3ZEV0bGVTaHdZWEowYVdGc0xDQW5hR0Z6YUNjcE8xeHVmVnh1WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0JXYVhOcGRHOXlPMXh1SWwxOVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuLy8gaXN0YW5idWwgaWdub3JlIG5leHRcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG52YXIgX3Zpc2l0b3IgPSByZXF1aXJlKCcuL3Zpc2l0b3InKTtcblxudmFyIF92aXNpdG9yMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Zpc2l0b3IpO1xuXG5mdW5jdGlvbiBXaGl0ZXNwYWNlQ29udHJvbCgpIHtcbiAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRzWzBdID09PSB1bmRlZmluZWQgPyB7fSA6IGFyZ3VtZW50c1swXTtcblxuICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xufVxuV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlID0gbmV3IF92aXNpdG9yMlsnZGVmYXVsdCddKCk7XG5cbldoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5Qcm9ncmFtID0gZnVuY3Rpb24gKHByb2dyYW0pIHtcbiAgdmFyIGRvU3RhbmRhbG9uZSA9ICF0aGlzLm9wdGlvbnMuaWdub3JlU3RhbmRhbG9uZTtcblxuICB2YXIgaXNSb290ID0gIXRoaXMuaXNSb290U2VlbjtcbiAgdGhpcy5pc1Jvb3RTZWVuID0gdHJ1ZTtcblxuICB2YXIgYm9keSA9IHByb2dyYW0uYm9keTtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBib2R5Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIHZhciBjdXJyZW50ID0gYm9keVtpXSxcbiAgICAgICAgc3RyaXAgPSB0aGlzLmFjY2VwdChjdXJyZW50KTtcblxuICAgIGlmICghc3RyaXApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBfaXNQcmV2V2hpdGVzcGFjZSA9IGlzUHJldldoaXRlc3BhY2UoYm9keSwgaSwgaXNSb290KSxcbiAgICAgICAgX2lzTmV4dFdoaXRlc3BhY2UgPSBpc05leHRXaGl0ZXNwYWNlKGJvZHksIGksIGlzUm9vdCksXG4gICAgICAgIG9wZW5TdGFuZGFsb25lID0gc3RyaXAub3BlblN0YW5kYWxvbmUgJiYgX2lzUHJldldoaXRlc3BhY2UsXG4gICAgICAgIGNsb3NlU3RhbmRhbG9uZSA9IHN0cmlwLmNsb3NlU3RhbmRhbG9uZSAmJiBfaXNOZXh0V2hpdGVzcGFjZSxcbiAgICAgICAgaW5saW5lU3RhbmRhbG9uZSA9IHN0cmlwLmlubGluZVN0YW5kYWxvbmUgJiYgX2lzUHJldldoaXRlc3BhY2UgJiYgX2lzTmV4dFdoaXRlc3BhY2U7XG5cbiAgICBpZiAoc3RyaXAuY2xvc2UpIHtcbiAgICAgIG9taXRSaWdodChib2R5LCBpLCB0cnVlKTtcbiAgICB9XG4gICAgaWYgKHN0cmlwLm9wZW4pIHtcbiAgICAgIG9taXRMZWZ0KGJvZHksIGksIHRydWUpO1xuICAgIH1cblxuICAgIGlmIChkb1N0YW5kYWxvbmUgJiYgaW5saW5lU3RhbmRhbG9uZSkge1xuICAgICAgb21pdFJpZ2h0KGJvZHksIGkpO1xuXG4gICAgICBpZiAob21pdExlZnQoYm9keSwgaSkpIHtcbiAgICAgICAgLy8gSWYgd2UgYXJlIG9uIGEgc3RhbmRhbG9uZSBub2RlLCBzYXZlIHRoZSBpbmRlbnQgaW5mbyBmb3IgcGFydGlhbHNcbiAgICAgICAgaWYgKGN1cnJlbnQudHlwZSA9PT0gJ1BhcnRpYWxTdGF0ZW1lbnQnKSB7XG4gICAgICAgICAgLy8gUHVsbCBvdXQgdGhlIHdoaXRlc3BhY2UgZnJvbSB0aGUgZmluYWwgbGluZVxuICAgICAgICAgIGN1cnJlbnQuaW5kZW50ID0gLyhbIFxcdF0rJCkvLmV4ZWMoYm9keVtpIC0gMV0ub3JpZ2luYWwpWzFdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkb1N0YW5kYWxvbmUgJiYgb3BlblN0YW5kYWxvbmUpIHtcbiAgICAgIG9taXRSaWdodCgoY3VycmVudC5wcm9ncmFtIHx8IGN1cnJlbnQuaW52ZXJzZSkuYm9keSk7XG5cbiAgICAgIC8vIFN0cmlwIG91dCB0aGUgcHJldmlvdXMgY29udGVudCBub2RlIGlmIGl0J3Mgd2hpdGVzcGFjZSBvbmx5XG4gICAgICBvbWl0TGVmdChib2R5LCBpKTtcbiAgICB9XG4gICAgaWYgKGRvU3RhbmRhbG9uZSAmJiBjbG9zZVN0YW5kYWxvbmUpIHtcbiAgICAgIC8vIEFsd2F5cyBzdHJpcCB0aGUgbmV4dCBub2RlXG4gICAgICBvbWl0UmlnaHQoYm9keSwgaSk7XG5cbiAgICAgIG9taXRMZWZ0KChjdXJyZW50LmludmVyc2UgfHwgY3VycmVudC5wcm9ncmFtKS5ib2R5KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcHJvZ3JhbTtcbn07XG5cbldoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5CbG9ja1N0YXRlbWVudCA9IFdoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5EZWNvcmF0b3JCbG9jayA9IFdoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5QYXJ0aWFsQmxvY2tTdGF0ZW1lbnQgPSBmdW5jdGlvbiAoYmxvY2spIHtcbiAgdGhpcy5hY2NlcHQoYmxvY2sucHJvZ3JhbSk7XG4gIHRoaXMuYWNjZXB0KGJsb2NrLmludmVyc2UpO1xuXG4gIC8vIEZpbmQgdGhlIGludmVyc2UgcHJvZ3JhbSB0aGF0IGlzIGludm9sZWQgd2l0aCB3aGl0ZXNwYWNlIHN0cmlwcGluZy5cbiAgdmFyIHByb2dyYW0gPSBibG9jay5wcm9ncmFtIHx8IGJsb2NrLmludmVyc2UsXG4gICAgICBpbnZlcnNlID0gYmxvY2sucHJvZ3JhbSAmJiBibG9jay5pbnZlcnNlLFxuICAgICAgZmlyc3RJbnZlcnNlID0gaW52ZXJzZSxcbiAgICAgIGxhc3RJbnZlcnNlID0gaW52ZXJzZTtcblxuICBpZiAoaW52ZXJzZSAmJiBpbnZlcnNlLmNoYWluZWQpIHtcbiAgICBmaXJzdEludmVyc2UgPSBpbnZlcnNlLmJvZHlbMF0ucHJvZ3JhbTtcblxuICAgIC8vIFdhbGsgdGhlIGludmVyc2UgY2hhaW4gdG8gZmluZCB0aGUgbGFzdCBpbnZlcnNlIHRoYXQgaXMgYWN0dWFsbHkgaW4gdGhlIGNoYWluLlxuICAgIHdoaWxlIChsYXN0SW52ZXJzZS5jaGFpbmVkKSB7XG4gICAgICBsYXN0SW52ZXJzZSA9IGxhc3RJbnZlcnNlLmJvZHlbbGFzdEludmVyc2UuYm9keS5sZW5ndGggLSAxXS5wcm9ncmFtO1xuICAgIH1cbiAgfVxuXG4gIHZhciBzdHJpcCA9IHtcbiAgICBvcGVuOiBibG9jay5vcGVuU3RyaXAub3BlbixcbiAgICBjbG9zZTogYmxvY2suY2xvc2VTdHJpcC5jbG9zZSxcblxuICAgIC8vIERldGVybWluZSB0aGUgc3RhbmRhbG9uZSBjYW5kaWFjeS4gQmFzaWNhbGx5IGZsYWcgb3VyIGNvbnRlbnQgYXMgYmVpbmcgcG9zc2libHkgc3RhbmRhbG9uZVxuICAgIC8vIHNvIG91ciBwYXJlbnQgY2FuIGRldGVybWluZSBpZiB3ZSBhY3R1YWxseSBhcmUgc3RhbmRhbG9uZVxuICAgIG9wZW5TdGFuZGFsb25lOiBpc05leHRXaGl0ZXNwYWNlKHByb2dyYW0uYm9keSksXG4gICAgY2xvc2VTdGFuZGFsb25lOiBpc1ByZXZXaGl0ZXNwYWNlKChmaXJzdEludmVyc2UgfHwgcHJvZ3JhbSkuYm9keSlcbiAgfTtcblxuICBpZiAoYmxvY2sub3BlblN0cmlwLmNsb3NlKSB7XG4gICAgb21pdFJpZ2h0KHByb2dyYW0uYm9keSwgbnVsbCwgdHJ1ZSk7XG4gIH1cblxuICBpZiAoaW52ZXJzZSkge1xuICAgIHZhciBpbnZlcnNlU3RyaXAgPSBibG9jay5pbnZlcnNlU3RyaXA7XG5cbiAgICBpZiAoaW52ZXJzZVN0cmlwLm9wZW4pIHtcbiAgICAgIG9taXRMZWZ0KHByb2dyYW0uYm9keSwgbnVsbCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgaWYgKGludmVyc2VTdHJpcC5jbG9zZSkge1xuICAgICAgb21pdFJpZ2h0KGZpcnN0SW52ZXJzZS5ib2R5LCBudWxsLCB0cnVlKTtcbiAgICB9XG4gICAgaWYgKGJsb2NrLmNsb3NlU3RyaXAub3Blbikge1xuICAgICAgb21pdExlZnQobGFzdEludmVyc2UuYm9keSwgbnVsbCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLy8gRmluZCBzdGFuZGFsb25lIGVsc2Ugc3RhdG1lbnRzXG4gICAgaWYgKCF0aGlzLm9wdGlvbnMuaWdub3JlU3RhbmRhbG9uZSAmJiBpc1ByZXZXaGl0ZXNwYWNlKHByb2dyYW0uYm9keSkgJiYgaXNOZXh0V2hpdGVzcGFjZShmaXJzdEludmVyc2UuYm9keSkpIHtcbiAgICAgIG9taXRMZWZ0KHByb2dyYW0uYm9keSk7XG4gICAgICBvbWl0UmlnaHQoZmlyc3RJbnZlcnNlLmJvZHkpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChibG9jay5jbG9zZVN0cmlwLm9wZW4pIHtcbiAgICBvbWl0TGVmdChwcm9ncmFtLmJvZHksIG51bGwsIHRydWUpO1xuICB9XG5cbiAgcmV0dXJuIHN0cmlwO1xufTtcblxuV2hpdGVzcGFjZUNvbnRyb2wucHJvdG90eXBlLkRlY29yYXRvciA9IFdoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5NdXN0YWNoZVN0YXRlbWVudCA9IGZ1bmN0aW9uIChtdXN0YWNoZSkge1xuICByZXR1cm4gbXVzdGFjaGUuc3RyaXA7XG59O1xuXG5XaGl0ZXNwYWNlQ29udHJvbC5wcm90b3R5cGUuUGFydGlhbFN0YXRlbWVudCA9IFdoaXRlc3BhY2VDb250cm9sLnByb3RvdHlwZS5Db21tZW50U3RhdGVtZW50ID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgdmFyIHN0cmlwID0gbm9kZS5zdHJpcCB8fCB7fTtcbiAgcmV0dXJuIHtcbiAgICBpbmxpbmVTdGFuZGFsb25lOiB0cnVlLFxuICAgIG9wZW46IHN0cmlwLm9wZW4sXG4gICAgY2xvc2U6IHN0cmlwLmNsb3NlXG4gIH07XG59O1xuXG5mdW5jdGlvbiBpc1ByZXZXaGl0ZXNwYWNlKGJvZHksIGksIGlzUm9vdCkge1xuICBpZiAoaSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgaSA9IGJvZHkubGVuZ3RoO1xuICB9XG5cbiAgLy8gTm9kZXMgdGhhdCBlbmQgd2l0aCBuZXdsaW5lcyBhcmUgY29uc2lkZXJlZCB3aGl0ZXNwYWNlIChidXQgYXJlIHNwZWNpYWxcbiAgLy8gY2FzZWQgZm9yIHN0cmlwIG9wZXJhdGlvbnMpXG4gIHZhciBwcmV2ID0gYm9keVtpIC0gMV0sXG4gICAgICBzaWJsaW5nID0gYm9keVtpIC0gMl07XG4gIGlmICghcHJldikge1xuICAgIHJldHVybiBpc1Jvb3Q7XG4gIH1cblxuICBpZiAocHJldi50eXBlID09PSAnQ29udGVudFN0YXRlbWVudCcpIHtcbiAgICByZXR1cm4gKHNpYmxpbmcgfHwgIWlzUm9vdCA/IC9cXHI/XFxuXFxzKj8kLyA6IC8oXnxcXHI/XFxuKVxccyo/JC8pLnRlc3QocHJldi5vcmlnaW5hbCk7XG4gIH1cbn1cbmZ1bmN0aW9uIGlzTmV4dFdoaXRlc3BhY2UoYm9keSwgaSwgaXNSb290KSB7XG4gIGlmIChpID09PSB1bmRlZmluZWQpIHtcbiAgICBpID0gLTE7XG4gIH1cblxuICB2YXIgbmV4dCA9IGJvZHlbaSArIDFdLFxuICAgICAgc2libGluZyA9IGJvZHlbaSArIDJdO1xuICBpZiAoIW5leHQpIHtcbiAgICByZXR1cm4gaXNSb290O1xuICB9XG5cbiAgaWYgKG5leHQudHlwZSA9PT0gJ0NvbnRlbnRTdGF0ZW1lbnQnKSB7XG4gICAgcmV0dXJuIChzaWJsaW5nIHx8ICFpc1Jvb3QgPyAvXlxccyo/XFxyP1xcbi8gOiAvXlxccyo/KFxccj9cXG58JCkvKS50ZXN0KG5leHQub3JpZ2luYWwpO1xuICB9XG59XG5cbi8vIE1hcmtzIHRoZSBub2RlIHRvIHRoZSByaWdodCBvZiB0aGUgcG9zaXRpb24gYXMgb21pdHRlZC5cbi8vIEkuZS4ge3tmb299fScgJyB3aWxsIG1hcmsgdGhlICcgJyBub2RlIGFzIG9taXR0ZWQuXG4vL1xuLy8gSWYgaSBpcyB1bmRlZmluZWQsIHRoZW4gdGhlIGZpcnN0IGNoaWxkIHdpbGwgYmUgbWFya2VkIGFzIHN1Y2guXG4vL1xuLy8gSWYgbXVsaXRwbGUgaXMgdHJ1dGh5IHRoZW4gYWxsIHdoaXRlc3BhY2Ugd2lsbCBiZSBzdHJpcHBlZCBvdXQgdW50aWwgbm9uLXdoaXRlc3BhY2Vcbi8vIGNvbnRlbnQgaXMgbWV0LlxuZnVuY3Rpb24gb21pdFJpZ2h0KGJvZHksIGksIG11bHRpcGxlKSB7XG4gIHZhciBjdXJyZW50ID0gYm9keVtpID09IG51bGwgPyAwIDogaSArIDFdO1xuICBpZiAoIWN1cnJlbnQgfHwgY3VycmVudC50eXBlICE9PSAnQ29udGVudFN0YXRlbWVudCcgfHwgIW11bHRpcGxlICYmIGN1cnJlbnQucmlnaHRTdHJpcHBlZCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBvcmlnaW5hbCA9IGN1cnJlbnQudmFsdWU7XG4gIGN1cnJlbnQudmFsdWUgPSBjdXJyZW50LnZhbHVlLnJlcGxhY2UobXVsdGlwbGUgPyAvXlxccysvIDogL15bIFxcdF0qXFxyP1xcbj8vLCAnJyk7XG4gIGN1cnJlbnQucmlnaHRTdHJpcHBlZCA9IGN1cnJlbnQudmFsdWUgIT09IG9yaWdpbmFsO1xufVxuXG4vLyBNYXJrcyB0aGUgbm9kZSB0byB0aGUgbGVmdCBvZiB0aGUgcG9zaXRpb24gYXMgb21pdHRlZC5cbi8vIEkuZS4gJyAne3tmb299fSB3aWxsIG1hcmsgdGhlICcgJyBub2RlIGFzIG9taXR0ZWQuXG4vL1xuLy8gSWYgaSBpcyB1bmRlZmluZWQgdGhlbiB0aGUgbGFzdCBjaGlsZCB3aWxsIGJlIG1hcmtlZCBhcyBzdWNoLlxuLy9cbi8vIElmIG11bGl0cGxlIGlzIHRydXRoeSB0aGVuIGFsbCB3aGl0ZXNwYWNlIHdpbGwgYmUgc3RyaXBwZWQgb3V0IHVudGlsIG5vbi13aGl0ZXNwYWNlXG4vLyBjb250ZW50IGlzIG1ldC5cbmZ1bmN0aW9uIG9taXRMZWZ0KGJvZHksIGksIG11bHRpcGxlKSB7XG4gIHZhciBjdXJyZW50ID0gYm9keVtpID09IG51bGwgPyBib2R5Lmxlbmd0aCAtIDEgOiBpIC0gMV07XG4gIGlmICghY3VycmVudCB8fCBjdXJyZW50LnR5cGUgIT09ICdDb250ZW50U3RhdGVtZW50JyB8fCAhbXVsdGlwbGUgJiYgY3VycmVudC5sZWZ0U3RyaXBwZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBXZSBvbWl0IHRoZSBsYXN0IG5vZGUgaWYgaXQncyB3aGl0ZXNwYWNlIG9ubHkgYW5kIG5vdCBwcmVjZWRlZCBieSBhIG5vbi1jb250ZW50IG5vZGUuXG4gIHZhciBvcmlnaW5hbCA9IGN1cnJlbnQudmFsdWU7XG4gIGN1cnJlbnQudmFsdWUgPSBjdXJyZW50LnZhbHVlLnJlcGxhY2UobXVsdGlwbGUgPyAvXFxzKyQvIDogL1sgXFx0XSskLywgJycpO1xuICBjdXJyZW50LmxlZnRTdHJpcHBlZCA9IGN1cnJlbnQudmFsdWUgIT09IG9yaWdpbmFsO1xuICByZXR1cm4gY3VycmVudC5sZWZ0U3RyaXBwZWQ7XG59XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IFdoaXRlc3BhY2VDb250cm9sO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMk52YlhCcGJHVnlMM2RvYVhSbGMzQmhZMlV0WTI5dWRISnZiQzVxY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN096czdPM1ZDUVVGdlFpeFhRVUZYT3pzN08wRkJSUzlDTEZOQlFWTXNhVUpCUVdsQ0xFZEJRV1U3VFVGQlpDeFBRVUZQTEhsRVFVRkhMRVZCUVVVN08wRkJRM0pETEUxQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1QwRkJUeXhEUVVGRE8wTkJRM2hDTzBGQlEwUXNhVUpCUVdsQ0xFTkJRVU1zVTBGQlV5eEhRVUZITERCQ1FVRmhMRU5CUVVNN08wRkJSVFZETEdsQ1FVRnBRaXhEUVVGRExGTkJRVk1zUTBGQlF5eFBRVUZQTEVkQlFVY3NWVUZCVXl4UFFVRlBMRVZCUVVVN1FVRkRkRVFzVFVGQlRTeFpRVUZaTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExHZENRVUZuUWl4RFFVRkRPenRCUVVWd1JDeE5RVUZKTEUxQlFVMHNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU03UVVGRE9VSXNUVUZCU1N4RFFVRkRMRlZCUVZVc1IwRkJSeXhKUVVGSkxFTkJRVU03TzBGQlJYWkNMRTFCUVVrc1NVRkJTU3hIUVVGSExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTTdRVUZEZUVJc1QwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRCUVVNelF5eFJRVUZKTEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMjVDTEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZET3p0QlFVVXZRaXhSUVVGSkxFTkJRVU1zUzBGQlN5eEZRVUZGTzBGQlExWXNaVUZCVXp0TFFVTldPenRCUVVWRUxGRkJRVWtzYVVKQlFXbENMRWRCUVVjc1owSkJRV2RDTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1JVRkJSU3hOUVVGTkxFTkJRVU03VVVGRGRrUXNhVUpCUVdsQ0xFZEJRVWNzWjBKQlFXZENMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zUlVGQlJTeE5RVUZOTEVOQlFVTTdVVUZEY2tRc1kwRkJZeXhIUVVGSExFdEJRVXNzUTBGQlF5eGpRVUZqTEVsQlFVa3NhVUpCUVdsQ08xRkJRekZFTEdWQlFXVXNSMEZCUnl4TFFVRkxMRU5CUVVNc1pVRkJaU3hKUVVGSkxHbENRVUZwUWp0UlFVTTFSQ3huUWtGQlowSXNSMEZEWkN4TFFVRkxMRU5CUVVNc1owSkJRV2RDTEVsQlFVa3NhVUpCUVdsQ0xFbEJRVWtzYVVKQlFXbENMRU5CUVVNN08wRkJSWEpGTEZGQlFVa3NTMEZCU3l4RFFVRkRMRXRCUVVzc1JVRkJSVHRCUVVObUxHVkJRVk1zUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8wdEJRekZDTzBGQlEwUXNVVUZCU1N4TFFVRkxMRU5CUVVNc1NVRkJTU3hGUVVGRk8wRkJRMlFzWTBGQlVTeERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03UzBGRGVrSTdPMEZCUlVRc1VVRkJTU3haUVVGWkxFbEJRVWtzWjBKQlFXZENMRVZCUVVVN1FVRkRjRU1zWlVGQlV5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenM3UVVGRmJrSXNWVUZCU1N4UlFVRlJMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zUTBGQlF5eEZRVUZGT3p0QlFVVnlRaXhaUVVGSkxFOUJRVThzUTBGQlF5eEpRVUZKTEV0QlFVc3NhMEpCUVd0Q0xFVkJRVVU3TzBGQlJYWkRMR2xDUVVGUExFTkJRVU1zVFVGQlRTeEhRVUZITEZkQlFWY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU0xUkR0UFFVTkdPMHRCUTBZN1FVRkRSQ3hSUVVGSkxGbEJRVmtzU1VGQlNTeGpRVUZqTEVWQlFVVTdRVUZEYkVNc1pVRkJVeXhEUVVGRExFTkJRVU1zVDBGQlR5eERRVUZETEU5QlFVOHNTVUZCU1N4UFFVRlBMRU5CUVVNc1QwRkJUeXhEUVVGQkxFTkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdPenRCUVVkeVJDeGpRVUZSTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8wdEJRMjVDTzBGQlEwUXNVVUZCU1N4WlFVRlpMRWxCUVVrc1pVRkJaU3hGUVVGRk96dEJRVVZ1UXl4bFFVRlRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZET3p0QlFVVnVRaXhqUVVGUkxFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNUMEZCVHl4SlFVRkpMRTlCUVU4c1EwRkJReXhQUVVGUExFTkJRVUVzUTBGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0TFFVTnlSRHRIUVVOR096dEJRVVZFTEZOQlFVOHNUMEZCVHl4RFFVRkRPME5CUTJoQ0xFTkJRVU03TzBGQlJVWXNhVUpCUVdsQ0xFTkJRVU1zVTBGQlV5eERRVUZETEdOQlFXTXNSMEZCUnl4cFFrRkJhVUlzUTBGQlF5eFRRVUZUTEVOQlFVTXNZMEZCWXl4SFFVRkhMR2xDUVVGcFFpeERRVUZETEZOQlFWTXNRMEZCUXl4eFFrRkJjVUlzUjBGQlJ5eFZRVU0xU1N4TFFVRkxMRVZCUTB3N1FVRkRRU3hOUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRCUVVNelFpeE5RVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6czdPMEZCUnpOQ0xFMUJRVWtzVDBGQlR5eEhRVUZITEV0QlFVc3NRMEZCUXl4UFFVRlBMRWxCUVVrc1MwRkJTeXhEUVVGRExFOUJRVTg3VFVGRE1VTXNUMEZCVHl4SFFVRkhMRXRCUVVzc1EwRkJReXhQUVVGUExFbEJRVWtzUzBGQlN5eERRVUZETEU5QlFVODdUVUZEZUVNc1dVRkJXU3hIUVVGSExFOUJRVTg3VFVGRGRFSXNWMEZCVnl4SFFVRkhMRTlCUVU4c1EwRkJRenM3UVVGRmVFSXNUVUZCU1N4UFFVRlBMRWxCUVVrc1QwRkJUeXhEUVVGRExFOUJRVThzUlVGQlJUdEJRVU01UWl4blFrRkJXU3hIUVVGSExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRE96czdRVUZIZGtNc1YwRkJUeXhYUVVGWExFTkJRVU1zVDBGQlR5eEZRVUZGTzBGQlF6RkNMR2xDUVVGWExFZEJRVWNzVjBGQlZ5eERRVUZETEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4UFFVRlBMRU5CUVVNN1MwRkRja1U3UjBGRFJqczdRVUZGUkN4TlFVRkpMRXRCUVVzc1IwRkJSenRCUVVOV0xGRkJRVWtzUlVGQlJTeExRVUZMTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrN1FVRkRNVUlzVTBGQlN5eEZRVUZGTEV0QlFVc3NRMEZCUXl4VlFVRlZMRU5CUVVNc1MwRkJTenM3T3p0QlFVazNRaXhyUWtGQll5eEZRVUZGTEdkQ1FVRm5RaXhEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTTdRVUZET1VNc2JVSkJRV1VzUlVGQlJTeG5Ra0ZCWjBJc1EwRkJReXhEUVVGRExGbEJRVmtzU1VGQlNTeFBRVUZQTEVOQlFVRXNRMEZCUlN4SlFVRkpMRU5CUVVNN1IwRkRiRVVzUTBGQlF6czdRVUZGUml4TlFVRkpMRXRCUVVzc1EwRkJReXhUUVVGVExFTkJRVU1zUzBGQlN5eEZRVUZGTzBGQlEzcENMR0ZCUVZNc1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeEZRVUZGTEVsQlFVa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRIUVVOeVF6czdRVUZGUkN4TlFVRkpMRTlCUVU4c1JVRkJSVHRCUVVOWUxGRkJRVWtzV1VGQldTeEhRVUZITEV0QlFVc3NRMEZCUXl4WlFVRlpMRU5CUVVNN08wRkJSWFJETEZGQlFVa3NXVUZCV1N4RFFVRkRMRWxCUVVrc1JVRkJSVHRCUVVOeVFpeGpRVUZSTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1JVRkJSU3hKUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdTMEZEY0VNN08wRkJSVVFzVVVGQlNTeFpRVUZaTEVOQlFVTXNTMEZCU3l4RlFVRkZPMEZCUTNSQ0xHVkJRVk1zUTBGQlF5eFpRVUZaTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dExRVU14UXp0QlFVTkVMRkZCUVVrc1MwRkJTeXhEUVVGRExGVkJRVlVzUTBGQlF5eEpRVUZKTEVWQlFVVTdRVUZEZWtJc1kwRkJVU3hEUVVGRExGZEJRVmNzUTBGQlF5eEpRVUZKTEVWQlFVVXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8wdEJRM2hET3pzN1FVRkhSQ3hSUVVORkxFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4blFrRkJaMElzU1VGRE9VSXNaMEpCUVdkQ0xFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVTTVRaXhuUWtGQlowSXNRMEZCUXl4WlFVRlpMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRMjVETzBGQlEwRXNZMEZCVVN4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEJRVU4yUWl4bFFVRlRMRU5CUVVNc1dVRkJXU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzB0QlF6bENPMGRCUTBZc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RlFVRkZPMEZCUTJoRExGbEJRVkVzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dEhRVU53UXpzN1FVRkZSQ3hUUVVGUExFdEJRVXNzUTBGQlF6dERRVU5rTEVOQlFVTTdPMEZCUlVZc2FVSkJRV2xDTEVOQlFVTXNVMEZCVXl4RFFVRkRMRk5CUVZNc1IwRkJSeXhwUWtGQmFVSXNRMEZCUXl4VFFVRlRMRU5CUVVNc2FVSkJRV2xDTEVkQlFVY3NWVUZEZEVZc1VVRkJVU3hGUVVOU08wRkJRMEVzVTBGQlR5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRPME5CUTNaQ0xFTkJRVU03TzBGQlJVWXNhVUpCUVdsQ0xFTkJRVU1zVTBGQlV5eERRVUZETEdkQ1FVRm5RaXhIUVVGSExHbENRVUZwUWl4RFFVRkRMRk5CUVZNc1EwRkJReXhuUWtGQlowSXNSMEZCUnl4VlFVTTFSaXhKUVVGSkxFVkJRMG83TzBGQlJVRXNUVUZCU1N4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzU1VGQlNTeEZRVUZGTEVOQlFVTTdRVUZETjBJc1UwRkJUenRCUVVOTUxHOUNRVUZuUWl4RlFVRkZMRWxCUVVrN1FVRkRkRUlzVVVGQlNTeEZRVUZGTEV0QlFVc3NRMEZCUXl4SlFVRkpPMEZCUTJoQ0xGTkJRVXNzUlVGQlJTeExRVUZMTEVOQlFVTXNTMEZCU3p0SFFVTnVRaXhEUVVGRE8wTkJRMGdzUTBGQlF6czdRVUZGUml4VFFVRlRMR2RDUVVGblFpeERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRVZCUVVVc1RVRkJUU3hGUVVGRk8wRkJRM3BETEUxQlFVa3NRMEZCUXl4TFFVRkxMRk5CUVZNc1JVRkJSVHRCUVVOdVFpeExRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJRenRIUVVOcVFqczdPenRCUVVsRUxFMUJRVWtzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8wMUJRM0JDTEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlEzaENMRTFCUVVrc1EwRkJReXhKUVVGSkxFVkJRVVU3UVVGRFZDeFhRVUZQTEUxQlFVMHNRMEZCUXp0SFFVTm1PenRCUVVWRUxFMUJRVWtzU1VGQlNTeERRVUZETEVsQlFVa3NTMEZCU3l4clFrRkJhMElzUlVGQlJUdEJRVU53UXl4WFFVRlBMRU5CUVVNc1QwRkJUeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEZsQlFWa3NSMEZCUnl4blFrRkJaMElzUTBGQlFTeERRVUZGTEVsQlFVa3NRMEZEYUVVc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGRFpDeERRVUZETzBkQlEwZzdRMEZEUmp0QlFVTkVMRk5CUVZNc1owSkJRV2RDTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1JVRkJSU3hOUVVGTkxFVkJRVVU3UVVGRGVrTXNUVUZCU1N4RFFVRkRMRXRCUVVzc1UwRkJVeXhGUVVGRk8wRkJRMjVDTEV0QlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRIUVVOU096dEJRVVZFTEUxQlFVa3NTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzAxQlEzQkNMRTlCUVU4c1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTNoQ0xFMUJRVWtzUTBGQlF5eEpRVUZKTEVWQlFVVTdRVUZEVkN4WFFVRlBMRTFCUVUwc1EwRkJRenRIUVVObU96dEJRVVZFTEUxQlFVa3NTVUZCU1N4RFFVRkRMRWxCUVVrc1MwRkJTeXhyUWtGQmEwSXNSVUZCUlR0QlFVTndReXhYUVVGUExFTkJRVU1zVDBGQlR5eEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRmxCUVZrc1IwRkJSeXhuUWtGQlowSXNRMEZCUVN4RFFVRkZMRWxCUVVrc1EwRkRhRVVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZEWkN4RFFVRkRPMGRCUTBnN1EwRkRSanM3T3pzN096czdPMEZCVTBRc1UwRkJVeXhUUVVGVExFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTXNSVUZCUlN4UlFVRlJMRVZCUVVVN1FVRkRjRU1zVFVGQlNTeFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTU3hKUVVGSkxFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVNeFF5eE5RVU5GTEVOQlFVTXNUMEZCVHl4SlFVTlNMRTlCUVU4c1EwRkJReXhKUVVGSkxFdEJRVXNzYTBKQlFXdENMRWxCUTJ4RExFTkJRVU1zVVVGQlVTeEpRVUZKTEU5QlFVOHNRMEZCUXl4aFFVRmhMRUZCUVVNc1JVRkRjRU03UVVGRFFTeFhRVUZQTzBkQlExSTdPMEZCUlVRc1RVRkJTU3hSUVVGUkxFZEJRVWNzVDBGQlR5eERRVUZETEV0QlFVc3NRMEZCUXp0QlFVTTNRaXhUUVVGUExFTkJRVU1zUzBGQlN5eEhRVUZITEU5QlFVOHNRMEZCUXl4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVOdVF5eFJRVUZSTEVkQlFVY3NUVUZCVFN4SFFVRkhMR1ZCUVdVc1JVRkRia01zUlVGQlJTeERRVU5JTEVOQlFVTTdRVUZEUml4VFFVRlBMRU5CUVVNc1lVRkJZU3hIUVVGSExFOUJRVThzUTBGQlF5eExRVUZMTEV0QlFVc3NVVUZCVVN4RFFVRkRPME5CUTNCRU96czdPenM3T3pzN1FVRlRSQ3hUUVVGVExGRkJRVkVzUTBGQlF5eEpRVUZKTEVWQlFVVXNRMEZCUXl4RlFVRkZMRkZCUVZFc1JVRkJSVHRCUVVOdVF5eE5RVUZKTEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhKUVVGSkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEZUVRc1RVRkRSU3hEUVVGRExFOUJRVThzU1VGRFVpeFBRVUZQTEVOQlFVTXNTVUZCU1N4TFFVRkxMR3RDUVVGclFpeEpRVU5zUXl4RFFVRkRMRkZCUVZFc1NVRkJTU3hQUVVGUExFTkJRVU1zV1VGQldTeEJRVUZETEVWQlEyNURPMEZCUTBFc1YwRkJUenRIUVVOU096czdRVUZIUkN4TlFVRkpMRkZCUVZFc1IwRkJSeXhQUVVGUExFTkJRVU1zUzBGQlN5eERRVUZETzBGQlF6ZENMRk5CUVU4c1EwRkJReXhMUVVGTExFZEJRVWNzVDBGQlR5eERRVUZETEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1VVRkJVU3hIUVVGSExFMUJRVTBzUjBGQlJ5eFRRVUZUTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNN1FVRkRla1VzVTBGQlR5eERRVUZETEZsQlFWa3NSMEZCUnl4UFFVRlBMRU5CUVVNc1MwRkJTeXhMUVVGTExGRkJRVkVzUTBGQlF6dEJRVU5zUkN4VFFVRlBMRTlCUVU4c1EwRkJReXhaUVVGWkxFTkJRVU03UTBGRE4wSTdPM0ZDUVVWakxHbENRVUZwUWlJc0ltWnBiR1VpT2lKM2FHbDBaWE53WVdObExXTnZiblJ5YjJ3dWFuTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdWbWx6YVhSdmNpQm1jbTl0SUNjdUwzWnBjMmwwYjNJbk8xeHVYRzVtZFc1amRHbHZiaUJYYUdsMFpYTndZV05sUTI5dWRISnZiQ2h2Y0hScGIyNXpJRDBnZTMwcElIdGNiaUFnZEdocGN5NXZjSFJwYjI1eklEMGdiM0IwYVc5dWN6dGNibjFjYmxkb2FYUmxjM0JoWTJWRGIyNTBjbTlzTG5CeWIzUnZkSGx3WlNBOUlHNWxkeUJXYVhOcGRHOXlLQ2s3WEc1Y2JsZG9hWFJsYzNCaFkyVkRiMjUwY205c0xuQnliM1J2ZEhsd1pTNVFjbTluY21GdElEMGdablZ1WTNScGIyNG9jSEp2WjNKaGJTa2dlMXh1SUNCamIyNXpkQ0JrYjFOMFlXNWtZV3h2Ym1VZ1BTQWhkR2hwY3k1dmNIUnBiMjV6TG1sbmJtOXlaVk4wWVc1a1lXeHZibVU3WEc1Y2JpQWdiR1YwSUdselVtOXZkQ0E5SUNGMGFHbHpMbWx6VW05dmRGTmxaVzQ3WEc0Z0lIUm9hWE11YVhOU2IyOTBVMlZsYmlBOUlIUnlkV1U3WEc1Y2JpQWdiR1YwSUdKdlpIa2dQU0J3Y205bmNtRnRMbUp2WkhrN1hHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd0xDQnNJRDBnWW05a2VTNXNaVzVuZEdnN0lHa2dQQ0JzT3lCcEt5c3BJSHRjYmlBZ0lDQnNaWFFnWTNWeWNtVnVkQ0E5SUdKdlpIbGJhVjBzWEc0Z0lDQWdJQ0J6ZEhKcGNDQTlJSFJvYVhNdVlXTmpaWEIwS0dOMWNuSmxiblFwTzF4dVhHNGdJQ0FnYVdZZ0tDRnpkSEpwY0NrZ2UxeHVJQ0FnSUNBZ1kyOXVkR2x1ZFdVN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYkdWMElGOXBjMUJ5WlhaWGFHbDBaWE53WVdObElEMGdhWE5RY21WMlYyaHBkR1Z6Y0dGalpTaGliMlI1TENCcExDQnBjMUp2YjNRcExGeHVJQ0FnSUNBZ1gybHpUbVY0ZEZkb2FYUmxjM0JoWTJVZ1BTQnBjMDVsZUhSWGFHbDBaWE53WVdObEtHSnZaSGtzSUdrc0lHbHpVbTl2ZENrc1hHNGdJQ0FnSUNCdmNHVnVVM1JoYm1SaGJHOXVaU0E5SUhOMGNtbHdMbTl3Wlc1VGRHRnVaR0ZzYjI1bElDWW1JRjlwYzFCeVpYWlhhR2wwWlhOd1lXTmxMRnh1SUNBZ0lDQWdZMnh2YzJWVGRHRnVaR0ZzYjI1bElEMGdjM1J5YVhBdVkyeHZjMlZUZEdGdVpHRnNiMjVsSUNZbUlGOXBjMDVsZUhSWGFHbDBaWE53WVdObExGeHVJQ0FnSUNBZ2FXNXNhVzVsVTNSaGJtUmhiRzl1WlNBOVhHNGdJQ0FnSUNBZ0lITjBjbWx3TG1sdWJHbHVaVk4wWVc1a1lXeHZibVVnSmlZZ1gybHpVSEpsZGxkb2FYUmxjM0JoWTJVZ0ppWWdYMmx6VG1WNGRGZG9hWFJsYzNCaFkyVTdYRzVjYmlBZ0lDQnBaaUFvYzNSeWFYQXVZMnh2YzJVcElIdGNiaUFnSUNBZ0lHOXRhWFJTYVdkb2RDaGliMlI1TENCcExDQjBjblZsS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdhV1lnS0hOMGNtbHdMbTl3Wlc0cElIdGNiaUFnSUNBZ0lHOXRhWFJNWldaMEtHSnZaSGtzSUdrc0lIUnlkV1VwTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNoa2IxTjBZVzVrWVd4dmJtVWdKaVlnYVc1c2FXNWxVM1JoYm1SaGJHOXVaU2tnZTF4dUlDQWdJQ0FnYjIxcGRGSnBaMmgwS0dKdlpIa3NJR2twTzF4dVhHNGdJQ0FnSUNCcFppQW9iMjFwZEV4bFpuUW9ZbTlrZVN3Z2FTa3BJSHRjYmlBZ0lDQWdJQ0FnTHk4Z1NXWWdkMlVnWVhKbElHOXVJR0VnYzNSaGJtUmhiRzl1WlNCdWIyUmxMQ0J6WVhabElIUm9aU0JwYm1SbGJuUWdhVzVtYnlCbWIzSWdjR0Z5ZEdsaGJITmNiaUFnSUNBZ0lDQWdhV1lnS0dOMWNuSmxiblF1ZEhsd1pTQTlQVDBnSjFCaGNuUnBZV3hUZEdGMFpXMWxiblFuS1NCN1hHNGdJQ0FnSUNBZ0lDQWdMeThnVUhWc2JDQnZkWFFnZEdobElIZG9hWFJsYzNCaFkyVWdabkp2YlNCMGFHVWdabWx1WVd3Z2JHbHVaVnh1SUNBZ0lDQWdJQ0FnSUdOMWNuSmxiblF1YVc1a1pXNTBJRDBnTHloYklGeGNkRjBySkNrdkxtVjRaV01vWW05a2VWdHBJQzBnTVYwdWIzSnBaMmx1WVd3cFd6RmRPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2hrYjFOMFlXNWtZV3h2Ym1VZ0ppWWdiM0JsYmxOMFlXNWtZV3h2Ym1VcElIdGNiaUFnSUNBZ0lHOXRhWFJTYVdkb2RDZ29ZM1Z5Y21WdWRDNXdjbTluY21GdElIeDhJR04xY25KbGJuUXVhVzUyWlhKelpTa3VZbTlrZVNrN1hHNWNiaUFnSUNBZ0lDOHZJRk4wY21sd0lHOTFkQ0IwYUdVZ2NISmxkbWx2ZFhNZ1kyOXVkR1Z1ZENCdWIyUmxJR2xtSUdsMEozTWdkMmhwZEdWemNHRmpaU0J2Ym14NVhHNGdJQ0FnSUNCdmJXbDBUR1ZtZENoaWIyUjVMQ0JwS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdhV1lnS0dSdlUzUmhibVJoYkc5dVpTQW1KaUJqYkc5elpWTjBZVzVrWVd4dmJtVXBJSHRjYmlBZ0lDQWdJQzh2SUVGc2QyRjVjeUJ6ZEhKcGNDQjBhR1VnYm1WNGRDQnViMlJsWEc0Z0lDQWdJQ0J2YldsMFVtbG5hSFFvWW05a2VTd2dhU2s3WEc1Y2JpQWdJQ0FnSUc5dGFYUk1aV1owS0NoamRYSnlaVzUwTG1sdWRtVnljMlVnZkh3Z1kzVnljbVZ1ZEM1d2NtOW5jbUZ0S1M1aWIyUjVLVHRjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0J5WlhSMWNtNGdjSEp2WjNKaGJUdGNibjA3WEc1Y2JsZG9hWFJsYzNCaFkyVkRiMjUwY205c0xuQnliM1J2ZEhsd1pTNUNiRzlqYTFOMFlYUmxiV1Z1ZENBOUlGZG9hWFJsYzNCaFkyVkRiMjUwY205c0xuQnliM1J2ZEhsd1pTNUVaV052Y21GMGIzSkNiRzlqYXlBOUlGZG9hWFJsYzNCaFkyVkRiMjUwY205c0xuQnliM1J2ZEhsd1pTNVFZWEowYVdGc1FteHZZMnRUZEdGMFpXMWxiblFnUFNCbWRXNWpkR2x2YmloY2JpQWdZbXh2WTJ0Y2Jpa2dlMXh1SUNCMGFHbHpMbUZqWTJWd2RDaGliRzlqYXk1d2NtOW5jbUZ0S1R0Y2JpQWdkR2hwY3k1aFkyTmxjSFFvWW14dlkyc3VhVzUyWlhKelpTazdYRzVjYmlBZ0x5OGdSbWx1WkNCMGFHVWdhVzUyWlhKelpTQndjbTluY21GdElIUm9ZWFFnYVhNZ2FXNTJiMnhsWkNCM2FYUm9JSGRvYVhSbGMzQmhZMlVnYzNSeWFYQndhVzVuTGx4dUlDQnNaWFFnY0hKdlozSmhiU0E5SUdKc2IyTnJMbkJ5YjJkeVlXMGdmSHdnWW14dlkyc3VhVzUyWlhKelpTeGNiaUFnSUNCcGJuWmxjbk5sSUQwZ1lteHZZMnN1Y0hKdlozSmhiU0FtSmlCaWJHOWpheTVwYm5abGNuTmxMRnh1SUNBZ0lHWnBjbk4wU1c1MlpYSnpaU0E5SUdsdWRtVnljMlVzWEc0Z0lDQWdiR0Z6ZEVsdWRtVnljMlVnUFNCcGJuWmxjbk5sTzF4dVhHNGdJR2xtSUNocGJuWmxjbk5sSUNZbUlHbHVkbVZ5YzJVdVkyaGhhVzVsWkNrZ2UxeHVJQ0FnSUdacGNuTjBTVzUyWlhKelpTQTlJR2x1ZG1WeWMyVXVZbTlrZVZzd1hTNXdjbTluY21GdE8xeHVYRzRnSUNBZ0x5OGdWMkZzYXlCMGFHVWdhVzUyWlhKelpTQmphR0ZwYmlCMGJ5Qm1hVzVrSUhSb1pTQnNZWE4wSUdsdWRtVnljMlVnZEdoaGRDQnBjeUJoWTNSMVlXeHNlU0JwYmlCMGFHVWdZMmhoYVc0dVhHNGdJQ0FnZDJocGJHVWdLR3hoYzNSSmJuWmxjbk5sTG1Ob1lXbHVaV1FwSUh0Y2JpQWdJQ0FnSUd4aGMzUkpiblpsY25ObElEMGdiR0Z6ZEVsdWRtVnljMlV1WW05a2VWdHNZWE4wU1c1MlpYSnpaUzVpYjJSNUxteGxibWQwYUNBdElERmRMbkJ5YjJkeVlXMDdYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdiR1YwSUhOMGNtbHdJRDBnZTF4dUlDQWdJRzl3Wlc0NklHSnNiMk5yTG05d1pXNVRkSEpwY0M1dmNHVnVMRnh1SUNBZ0lHTnNiM05sT2lCaWJHOWpheTVqYkc5elpWTjBjbWx3TG1Oc2IzTmxMRnh1WEc0Z0lDQWdMeThnUkdWMFpYSnRhVzVsSUhSb1pTQnpkR0Z1WkdGc2IyNWxJR05oYm1ScFlXTjVMaUJDWVhOcFkyRnNiSGtnWm14aFp5QnZkWElnWTI5dWRHVnVkQ0JoY3lCaVpXbHVaeUJ3YjNOemFXSnNlU0J6ZEdGdVpHRnNiMjVsWEc0Z0lDQWdMeThnYzI4Z2IzVnlJSEJoY21WdWRDQmpZVzRnWkdWMFpYSnRhVzVsSUdsbUlIZGxJR0ZqZEhWaGJHeDVJR0Z5WlNCemRHRnVaR0ZzYjI1bFhHNGdJQ0FnYjNCbGJsTjBZVzVrWVd4dmJtVTZJR2x6VG1WNGRGZG9hWFJsYzNCaFkyVW9jSEp2WjNKaGJTNWliMlI1S1N4Y2JpQWdJQ0JqYkc5elpWTjBZVzVrWVd4dmJtVTZJR2x6VUhKbGRsZG9hWFJsYzNCaFkyVW9LR1pwY25OMFNXNTJaWEp6WlNCOGZDQndjbTluY21GdEtTNWliMlI1S1Z4dUlDQjlPMXh1WEc0Z0lHbG1JQ2hpYkc5amF5NXZjR1Z1VTNSeWFYQXVZMnh2YzJVcElIdGNiaUFnSUNCdmJXbDBVbWxuYUhRb2NISnZaM0poYlM1aWIyUjVMQ0J1ZFd4c0xDQjBjblZsS1R0Y2JpQWdmVnh1WEc0Z0lHbG1JQ2hwYm5abGNuTmxLU0I3WEc0Z0lDQWdiR1YwSUdsdWRtVnljMlZUZEhKcGNDQTlJR0pzYjJOckxtbHVkbVZ5YzJWVGRISnBjRHRjYmx4dUlDQWdJR2xtSUNocGJuWmxjbk5sVTNSeWFYQXViM0JsYmlrZ2UxeHVJQ0FnSUNBZ2IyMXBkRXhsWm5Rb2NISnZaM0poYlM1aWIyUjVMQ0J1ZFd4c0xDQjBjblZsS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb2FXNTJaWEp6WlZOMGNtbHdMbU5zYjNObEtTQjdYRzRnSUNBZ0lDQnZiV2wwVW1sbmFIUW9abWx5YzNSSmJuWmxjbk5sTG1KdlpIa3NJRzUxYkd3c0lIUnlkV1VwTzF4dUlDQWdJSDFjYmlBZ0lDQnBaaUFvWW14dlkyc3VZMnh2YzJWVGRISnBjQzV2Y0dWdUtTQjdYRzRnSUNBZ0lDQnZiV2wwVEdWbWRDaHNZWE4wU1c1MlpYSnpaUzVpYjJSNUxDQnVkV3hzTENCMGNuVmxLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJHYVc1a0lITjBZVzVrWVd4dmJtVWdaV3h6WlNCemRHRjBiV1Z1ZEhOY2JpQWdJQ0JwWmlBb1hHNGdJQ0FnSUNBaGRHaHBjeTV2Y0hScGIyNXpMbWxuYm05eVpWTjBZVzVrWVd4dmJtVWdKaVpjYmlBZ0lDQWdJR2x6VUhKbGRsZG9hWFJsYzNCaFkyVW9jSEp2WjNKaGJTNWliMlI1S1NBbUpseHVJQ0FnSUNBZ2FYTk9aWGgwVjJocGRHVnpjR0ZqWlNobWFYSnpkRWx1ZG1WeWMyVXVZbTlrZVNsY2JpQWdJQ0FwSUh0Y2JpQWdJQ0FnSUc5dGFYUk1aV1owS0hCeWIyZHlZVzB1WW05a2VTazdYRzRnSUNBZ0lDQnZiV2wwVW1sbmFIUW9abWx5YzNSSmJuWmxjbk5sTG1KdlpIa3BPMXh1SUNBZ0lIMWNiaUFnZlNCbGJITmxJR2xtSUNoaWJHOWpheTVqYkc5elpWTjBjbWx3TG05d1pXNHBJSHRjYmlBZ0lDQnZiV2wwVEdWbWRDaHdjbTluY21GdExtSnZaSGtzSUc1MWJHd3NJSFJ5ZFdVcE8xeHVJQ0I5WEc1Y2JpQWdjbVYwZFhKdUlITjBjbWx3TzF4dWZUdGNibHh1VjJocGRHVnpjR0ZqWlVOdmJuUnliMnd1Y0hKdmRHOTBlWEJsTGtSbFkyOXlZWFJ2Y2lBOUlGZG9hWFJsYzNCaFkyVkRiMjUwY205c0xuQnliM1J2ZEhsd1pTNU5kWE4wWVdOb1pWTjBZWFJsYldWdWRDQTlJR1oxYm1OMGFXOXVLRnh1SUNCdGRYTjBZV05vWlZ4dUtTQjdYRzRnSUhKbGRIVnliaUJ0ZFhOMFlXTm9aUzV6ZEhKcGNEdGNibjA3WEc1Y2JsZG9hWFJsYzNCaFkyVkRiMjUwY205c0xuQnliM1J2ZEhsd1pTNVFZWEowYVdGc1UzUmhkR1Z0Wlc1MElEMGdWMmhwZEdWemNHRmpaVU52Ym5SeWIyd3VjSEp2ZEc5MGVYQmxMa052YlcxbGJuUlRkR0YwWlcxbGJuUWdQU0JtZFc1amRHbHZiaWhjYmlBZ2JtOWtaVnh1S1NCN1hHNGdJQzhxSUdsemRHRnVZblZzSUdsbmJtOXlaU0J1WlhoMElDb3ZYRzRnSUd4bGRDQnpkSEpwY0NBOUlHNXZaR1V1YzNSeWFYQWdmSHdnZTMwN1hHNGdJSEpsZEhWeWJpQjdYRzRnSUNBZ2FXNXNhVzVsVTNSaGJtUmhiRzl1WlRvZ2RISjFaU3hjYmlBZ0lDQnZjR1Z1T2lCemRISnBjQzV2Y0dWdUxGeHVJQ0FnSUdOc2IzTmxPaUJ6ZEhKcGNDNWpiRzl6WlZ4dUlDQjlPMXh1ZlR0Y2JseHVablZ1WTNScGIyNGdhWE5RY21WMlYyaHBkR1Z6Y0dGalpTaGliMlI1TENCcExDQnBjMUp2YjNRcElIdGNiaUFnYVdZZ0tHa2dQVDA5SUhWdVpHVm1hVzVsWkNrZ2UxeHVJQ0FnSUdrZ1BTQmliMlI1TG14bGJtZDBhRHRjYmlBZ2ZWeHVYRzRnSUM4dklFNXZaR1Z6SUhSb1lYUWdaVzVrSUhkcGRHZ2dibVYzYkdsdVpYTWdZWEpsSUdOdmJuTnBaR1Z5WldRZ2QyaHBkR1Z6Y0dGalpTQW9ZblYwSUdGeVpTQnpjR1ZqYVdGc1hHNGdJQzh2SUdOaGMyVmtJR1p2Y2lCemRISnBjQ0J2Y0dWeVlYUnBiMjV6S1Z4dUlDQnNaWFFnY0hKbGRpQTlJR0p2WkhsYmFTQXRJREZkTEZ4dUlDQWdJSE5wWW14cGJtY2dQU0JpYjJSNVcya2dMU0F5WFR0Y2JpQWdhV1lnS0NGd2NtVjJLU0I3WEc0Z0lDQWdjbVYwZFhKdUlHbHpVbTl2ZER0Y2JpQWdmVnh1WEc0Z0lHbG1JQ2h3Y21WMkxuUjVjR1VnUFQwOUlDZERiMjUwWlc1MFUzUmhkR1Z0Wlc1MEp5a2dlMXh1SUNBZ0lISmxkSFZ5YmlBb2MybGliR2x1WnlCOGZDQWhhWE5TYjI5MElEOGdMMXhjY2o5Y1hHNWNYSE1xUHlRdklEb2dMeWhlZkZ4Y2NqOWNYRzRwWEZ4ektqOGtMeWt1ZEdWemRDaGNiaUFnSUNBZ0lIQnlaWFl1YjNKcFoybHVZV3hjYmlBZ0lDQXBPMXh1SUNCOVhHNTlYRzVtZFc1amRHbHZiaUJwYzA1bGVIUlhhR2wwWlhOd1lXTmxLR0p2Wkhrc0lHa3NJR2x6VW05dmRDa2dlMXh1SUNCcFppQW9hU0E5UFQwZ2RXNWtaV1pwYm1Wa0tTQjdYRzRnSUNBZ2FTQTlJQzB4TzF4dUlDQjlYRzVjYmlBZ2JHVjBJRzVsZUhRZ1BTQmliMlI1VzJrZ0t5QXhYU3hjYmlBZ0lDQnphV0pzYVc1bklEMGdZbTlrZVZ0cElDc2dNbDA3WEc0Z0lHbG1JQ2doYm1WNGRDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCcGMxSnZiM1E3WEc0Z0lIMWNibHh1SUNCcFppQW9ibVY0ZEM1MGVYQmxJRDA5UFNBblEyOXVkR1Z1ZEZOMFlYUmxiV1Z1ZENjcElIdGNiaUFnSUNCeVpYUjFjbTRnS0hOcFlteHBibWNnZkh3Z0lXbHpVbTl2ZENBL0lDOWVYRnh6S2o5Y1hISS9YRnh1THlBNklDOWVYRnh6S2o4b1hGeHlQMXhjYm53a0tTOHBMblJsYzNRb1hHNGdJQ0FnSUNCdVpYaDBMbTl5YVdkcGJtRnNYRzRnSUNBZ0tUdGNiaUFnZlZ4dWZWeHVYRzR2THlCTllYSnJjeUIwYUdVZ2JtOWtaU0IwYnlCMGFHVWdjbWxuYUhRZ2IyWWdkR2hsSUhCdmMybDBhVzl1SUdGeklHOXRhWFIwWldRdVhHNHZMeUJKTG1VdUlIdDdabTl2ZlgwbklDY2dkMmxzYkNCdFlYSnJJSFJvWlNBbklDY2dibTlrWlNCaGN5QnZiV2wwZEdWa0xseHVMeTljYmk4dklFbG1JR2tnYVhNZ2RXNWtaV1pwYm1Wa0xDQjBhR1Z1SUhSb1pTQm1hWEp6ZENCamFHbHNaQ0IzYVd4c0lHSmxJRzFoY210bFpDQmhjeUJ6ZFdOb0xseHVMeTljYmk4dklFbG1JRzExYkdsMGNHeGxJR2x6SUhSeWRYUm9lU0IwYUdWdUlHRnNiQ0IzYUdsMFpYTndZV05sSUhkcGJHd2dZbVVnYzNSeWFYQndaV1FnYjNWMElIVnVkR2xzSUc1dmJpMTNhR2wwWlhOd1lXTmxYRzR2THlCamIyNTBaVzUwSUdseklHMWxkQzVjYm1aMWJtTjBhVzl1SUc5dGFYUlNhV2RvZENoaWIyUjVMQ0JwTENCdGRXeDBhWEJzWlNrZ2UxeHVJQ0JzWlhRZ1kzVnljbVZ1ZENBOUlHSnZaSGxiYVNBOVBTQnVkV3hzSUQ4Z01DQTZJR2tnS3lBeFhUdGNiaUFnYVdZZ0tGeHVJQ0FnSUNGamRYSnlaVzUwSUh4OFhHNGdJQ0FnWTNWeWNtVnVkQzUwZVhCbElDRTlQU0FuUTI5dWRHVnVkRk4wWVhSbGJXVnVkQ2NnZkh4Y2JpQWdJQ0FvSVcxMWJIUnBjR3hsSUNZbUlHTjFjbkpsYm5RdWNtbG5hSFJUZEhKcGNIQmxaQ2xjYmlBZ0tTQjdYRzRnSUNBZ2NtVjBkWEp1TzF4dUlDQjlYRzVjYmlBZ2JHVjBJRzl5YVdkcGJtRnNJRDBnWTNWeWNtVnVkQzUyWVd4MVpUdGNiaUFnWTNWeWNtVnVkQzUyWVd4MVpTQTlJR04xY25KbGJuUXVkbUZzZFdVdWNtVndiR0ZqWlNoY2JpQWdJQ0J0ZFd4MGFYQnNaU0EvSUM5ZVhGeHpLeThnT2lBdlhsc2dYRngwWFNwY1hISS9YRnh1UHk4c1hHNGdJQ0FnSnlkY2JpQWdLVHRjYmlBZ1kzVnljbVZ1ZEM1eWFXZG9kRk4wY21sd2NHVmtJRDBnWTNWeWNtVnVkQzUyWVd4MVpTQWhQVDBnYjNKcFoybHVZV3c3WEc1OVhHNWNiaTh2SUUxaGNtdHpJSFJvWlNCdWIyUmxJSFJ2SUhSb1pTQnNaV1owSUc5bUlIUm9aU0J3YjNOcGRHbHZiaUJoY3lCdmJXbDBkR1ZrTGx4dUx5OGdTUzVsTGlBbklDZDdlMlp2YjMxOUlIZHBiR3dnYldGeWF5QjBhR1VnSnlBbklHNXZaR1VnWVhNZ2IyMXBkSFJsWkM1Y2JpOHZYRzR2THlCSlppQnBJR2x6SUhWdVpHVm1hVzVsWkNCMGFHVnVJSFJvWlNCc1lYTjBJR05vYVd4a0lIZHBiR3dnWW1VZ2JXRnlhMlZrSUdGeklITjFZMmd1WEc0dkwxeHVMeThnU1dZZ2JYVnNhWFJ3YkdVZ2FYTWdkSEoxZEdoNUlIUm9aVzRnWVd4c0lIZG9hWFJsYzNCaFkyVWdkMmxzYkNCaVpTQnpkSEpwY0hCbFpDQnZkWFFnZFc1MGFXd2dibTl1TFhkb2FYUmxjM0JoWTJWY2JpOHZJR052Ym5SbGJuUWdhWE1nYldWMExseHVablZ1WTNScGIyNGdiMjFwZEV4bFpuUW9ZbTlrZVN3Z2FTd2diWFZzZEdsd2JHVXBJSHRjYmlBZ2JHVjBJR04xY25KbGJuUWdQU0JpYjJSNVcya2dQVDBnYm5Wc2JDQS9JR0p2WkhrdWJHVnVaM1JvSUMwZ01TQTZJR2tnTFNBeFhUdGNiaUFnYVdZZ0tGeHVJQ0FnSUNGamRYSnlaVzUwSUh4OFhHNGdJQ0FnWTNWeWNtVnVkQzUwZVhCbElDRTlQU0FuUTI5dWRHVnVkRk4wWVhSbGJXVnVkQ2NnZkh4Y2JpQWdJQ0FvSVcxMWJIUnBjR3hsSUNZbUlHTjFjbkpsYm5RdWJHVm1kRk4wY21sd2NHVmtLVnh1SUNBcElIdGNiaUFnSUNCeVpYUjFjbTQ3WEc0Z0lIMWNibHh1SUNBdkx5QlhaU0J2YldsMElIUm9aU0JzWVhOMElHNXZaR1VnYVdZZ2FYUW5jeUIzYUdsMFpYTndZV05sSUc5dWJIa2dZVzVrSUc1dmRDQndjbVZqWldSbFpDQmllU0JoSUc1dmJpMWpiMjUwWlc1MElHNXZaR1V1WEc0Z0lHeGxkQ0J2Y21sbmFXNWhiQ0E5SUdOMWNuSmxiblF1ZG1Gc2RXVTdYRzRnSUdOMWNuSmxiblF1ZG1Gc2RXVWdQU0JqZFhKeVpXNTBMblpoYkhWbExuSmxjR3hoWTJVb2JYVnNkR2x3YkdVZ1B5QXZYRnh6S3lRdklEb2dMMXNnWEZ4MFhTc2tMeXdnSnljcE8xeHVJQ0JqZFhKeVpXNTBMbXhsWm5SVGRISnBjSEJsWkNBOUlHTjFjbkpsYm5RdWRtRnNkV1VnSVQwOUlHOXlhV2RwYm1Gc08xeHVJQ0J5WlhSMWNtNGdZM1Z5Y21WdWRDNXNaV1owVTNSeWFYQndaV1E3WEc1OVhHNWNibVY0Y0c5eWRDQmtaV1poZFd4MElGZG9hWFJsYzNCaFkyVkRiMjUwY205c08xeHVJbDE5XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzLlNvdXJjZUxvY2F0aW9uID0gU291cmNlTG9jYXRpb247XG5leHBvcnRzLmlkID0gaWQ7XG5leHBvcnRzLnN0cmlwRmxhZ3MgPSBzdHJpcEZsYWdzO1xuZXhwb3J0cy5zdHJpcENvbW1lbnQgPSBzdHJpcENvbW1lbnQ7XG5leHBvcnRzLnByZXBhcmVQYXRoID0gcHJlcGFyZVBhdGg7XG5leHBvcnRzLnByZXBhcmVNdXN0YWNoZSA9IHByZXBhcmVNdXN0YWNoZTtcbmV4cG9ydHMucHJlcGFyZVJhd0Jsb2NrID0gcHJlcGFyZVJhd0Jsb2NrO1xuZXhwb3J0cy5wcmVwYXJlQmxvY2sgPSBwcmVwYXJlQmxvY2s7XG5leHBvcnRzLnByZXBhcmVQcm9ncmFtID0gcHJlcGFyZVByb2dyYW07XG5leHBvcnRzLnByZXBhcmVQYXJ0aWFsQmxvY2sgPSBwcmVwYXJlUGFydGlhbEJsb2NrO1xuLy8gaXN0YW5idWwgaWdub3JlIG5leHRcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG52YXIgX2V4Y2VwdGlvbiA9IHJlcXVpcmUoJy4uL2V4Y2VwdGlvbicpO1xuXG52YXIgX2V4Y2VwdGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9leGNlcHRpb24pO1xuXG5mdW5jdGlvbiB2YWxpZGF0ZUNsb3NlKG9wZW4sIGNsb3NlKSB7XG4gIGNsb3NlID0gY2xvc2UucGF0aCA/IGNsb3NlLnBhdGgub3JpZ2luYWwgOiBjbG9zZTtcblxuICBpZiAob3Blbi5wYXRoLm9yaWdpbmFsICE9PSBjbG9zZSkge1xuICAgIHZhciBlcnJvck5vZGUgPSB7IGxvYzogb3Blbi5wYXRoLmxvYyB9O1xuXG4gICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10ob3Blbi5wYXRoLm9yaWdpbmFsICsgXCIgZG9lc24ndCBtYXRjaCBcIiArIGNsb3NlLCBlcnJvck5vZGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIFNvdXJjZUxvY2F0aW9uKHNvdXJjZSwgbG9jSW5mbykge1xuICB0aGlzLnNvdXJjZSA9IHNvdXJjZTtcbiAgdGhpcy5zdGFydCA9IHtcbiAgICBsaW5lOiBsb2NJbmZvLmZpcnN0X2xpbmUsXG4gICAgY29sdW1uOiBsb2NJbmZvLmZpcnN0X2NvbHVtblxuICB9O1xuICB0aGlzLmVuZCA9IHtcbiAgICBsaW5lOiBsb2NJbmZvLmxhc3RfbGluZSxcbiAgICBjb2x1bW46IGxvY0luZm8ubGFzdF9jb2x1bW5cbiAgfTtcbn1cblxuZnVuY3Rpb24gaWQodG9rZW4pIHtcbiAgaWYgKC9eXFxbLipcXF0kLy50ZXN0KHRva2VuKSkge1xuICAgIHJldHVybiB0b2tlbi5zdWJzdHJpbmcoMSwgdG9rZW4ubGVuZ3RoIC0gMSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHRva2VuO1xuICB9XG59XG5cbmZ1bmN0aW9uIHN0cmlwRmxhZ3Mob3BlbiwgY2xvc2UpIHtcbiAgcmV0dXJuIHtcbiAgICBvcGVuOiBvcGVuLmNoYXJBdCgyKSA9PT0gJ34nLFxuICAgIGNsb3NlOiBjbG9zZS5jaGFyQXQoY2xvc2UubGVuZ3RoIC0gMykgPT09ICd+J1xuICB9O1xufVxuXG5mdW5jdGlvbiBzdHJpcENvbW1lbnQoY29tbWVudCkge1xuICByZXR1cm4gY29tbWVudC5yZXBsYWNlKC9eXFx7XFx7fj8hLT8tPy8sICcnKS5yZXBsYWNlKC8tPy0/fj9cXH1cXH0kLywgJycpO1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlUGF0aChkYXRhLCBwYXJ0cywgbG9jKSB7XG4gIGxvYyA9IHRoaXMubG9jSW5mbyhsb2MpO1xuXG4gIHZhciBvcmlnaW5hbCA9IGRhdGEgPyAnQCcgOiAnJyxcbiAgICAgIGRpZyA9IFtdLFxuICAgICAgZGVwdGggPSAwO1xuXG4gIGZvciAodmFyIGkgPSAwLCBsID0gcGFydHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFyIHBhcnQgPSBwYXJ0c1tpXS5wYXJ0LFxuXG4gICAgLy8gSWYgd2UgaGF2ZSBbXSBzeW50YXggdGhlbiB3ZSBkbyBub3QgdHJlYXQgcGF0aCByZWZlcmVuY2VzIGFzIG9wZXJhdG9ycyxcbiAgICAvLyBpLmUuIGZvby5bdGhpc10gcmVzb2x2ZXMgdG8gYXBwcm94aW1hdGVseSBjb250ZXh0LmZvb1sndGhpcyddXG4gICAgaXNMaXRlcmFsID0gcGFydHNbaV0ub3JpZ2luYWwgIT09IHBhcnQ7XG4gICAgb3JpZ2luYWwgKz0gKHBhcnRzW2ldLnNlcGFyYXRvciB8fCAnJykgKyBwYXJ0O1xuXG4gICAgaWYgKCFpc0xpdGVyYWwgJiYgKHBhcnQgPT09ICcuLicgfHwgcGFydCA9PT0gJy4nIHx8IHBhcnQgPT09ICd0aGlzJykpIHtcbiAgICAgIGlmIChkaWcubGVuZ3RoID4gMCkge1xuICAgICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnSW52YWxpZCBwYXRoOiAnICsgb3JpZ2luYWwsIHsgbG9jOiBsb2MgfSk7XG4gICAgICB9IGVsc2UgaWYgKHBhcnQgPT09ICcuLicpIHtcbiAgICAgICAgZGVwdGgrKztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZGlnLnB1c2gocGFydCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnUGF0aEV4cHJlc3Npb24nLFxuICAgIGRhdGE6IGRhdGEsXG4gICAgZGVwdGg6IGRlcHRoLFxuICAgIHBhcnRzOiBkaWcsXG4gICAgb3JpZ2luYWw6IG9yaWdpbmFsLFxuICAgIGxvYzogbG9jXG4gIH07XG59XG5cbmZ1bmN0aW9uIHByZXBhcmVNdXN0YWNoZShwYXRoLCBwYXJhbXMsIGhhc2gsIG9wZW4sIHN0cmlwLCBsb2NJbmZvKSB7XG4gIC8vIE11c3QgdXNlIGNoYXJBdCB0byBzdXBwb3J0IElFIHByZS0xMFxuICB2YXIgZXNjYXBlRmxhZyA9IG9wZW4uY2hhckF0KDMpIHx8IG9wZW4uY2hhckF0KDIpLFxuICAgICAgZXNjYXBlZCA9IGVzY2FwZUZsYWcgIT09ICd7JyAmJiBlc2NhcGVGbGFnICE9PSAnJic7XG5cbiAgdmFyIGRlY29yYXRvciA9IC9cXCovLnRlc3Qob3Blbik7XG4gIHJldHVybiB7XG4gICAgdHlwZTogZGVjb3JhdG9yID8gJ0RlY29yYXRvcicgOiAnTXVzdGFjaGVTdGF0ZW1lbnQnLFxuICAgIHBhdGg6IHBhdGgsXG4gICAgcGFyYW1zOiBwYXJhbXMsXG4gICAgaGFzaDogaGFzaCxcbiAgICBlc2NhcGVkOiBlc2NhcGVkLFxuICAgIHN0cmlwOiBzdHJpcCxcbiAgICBsb2M6IHRoaXMubG9jSW5mbyhsb2NJbmZvKVxuICB9O1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlUmF3QmxvY2sob3BlblJhd0Jsb2NrLCBjb250ZW50cywgY2xvc2UsIGxvY0luZm8pIHtcbiAgdmFsaWRhdGVDbG9zZShvcGVuUmF3QmxvY2ssIGNsb3NlKTtcblxuICBsb2NJbmZvID0gdGhpcy5sb2NJbmZvKGxvY0luZm8pO1xuICB2YXIgcHJvZ3JhbSA9IHtcbiAgICB0eXBlOiAnUHJvZ3JhbScsXG4gICAgYm9keTogY29udGVudHMsXG4gICAgc3RyaXA6IHt9LFxuICAgIGxvYzogbG9jSW5mb1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgdHlwZTogJ0Jsb2NrU3RhdGVtZW50JyxcbiAgICBwYXRoOiBvcGVuUmF3QmxvY2sucGF0aCxcbiAgICBwYXJhbXM6IG9wZW5SYXdCbG9jay5wYXJhbXMsXG4gICAgaGFzaDogb3BlblJhd0Jsb2NrLmhhc2gsXG4gICAgcHJvZ3JhbTogcHJvZ3JhbSxcbiAgICBvcGVuU3RyaXA6IHt9LFxuICAgIGludmVyc2VTdHJpcDoge30sXG4gICAgY2xvc2VTdHJpcDoge30sXG4gICAgbG9jOiBsb2NJbmZvXG4gIH07XG59XG5cbmZ1bmN0aW9uIHByZXBhcmVCbG9jayhvcGVuQmxvY2ssIHByb2dyYW0sIGludmVyc2VBbmRQcm9ncmFtLCBjbG9zZSwgaW52ZXJ0ZWQsIGxvY0luZm8pIHtcbiAgaWYgKGNsb3NlICYmIGNsb3NlLnBhdGgpIHtcbiAgICB2YWxpZGF0ZUNsb3NlKG9wZW5CbG9jaywgY2xvc2UpO1xuICB9XG5cbiAgdmFyIGRlY29yYXRvciA9IC9cXCovLnRlc3Qob3BlbkJsb2NrLm9wZW4pO1xuXG4gIHByb2dyYW0uYmxvY2tQYXJhbXMgPSBvcGVuQmxvY2suYmxvY2tQYXJhbXM7XG5cbiAgdmFyIGludmVyc2UgPSB1bmRlZmluZWQsXG4gICAgICBpbnZlcnNlU3RyaXAgPSB1bmRlZmluZWQ7XG5cbiAgaWYgKGludmVyc2VBbmRQcm9ncmFtKSB7XG4gICAgaWYgKGRlY29yYXRvcikge1xuICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1VuZXhwZWN0ZWQgaW52ZXJzZSBibG9jayBvbiBkZWNvcmF0b3InLCBpbnZlcnNlQW5kUHJvZ3JhbSk7XG4gICAgfVxuXG4gICAgaWYgKGludmVyc2VBbmRQcm9ncmFtLmNoYWluKSB7XG4gICAgICBpbnZlcnNlQW5kUHJvZ3JhbS5wcm9ncmFtLmJvZHlbMF0uY2xvc2VTdHJpcCA9IGNsb3NlLnN0cmlwO1xuICAgIH1cblxuICAgIGludmVyc2VTdHJpcCA9IGludmVyc2VBbmRQcm9ncmFtLnN0cmlwO1xuICAgIGludmVyc2UgPSBpbnZlcnNlQW5kUHJvZ3JhbS5wcm9ncmFtO1xuICB9XG5cbiAgaWYgKGludmVydGVkKSB7XG4gICAgaW52ZXJ0ZWQgPSBpbnZlcnNlO1xuICAgIGludmVyc2UgPSBwcm9ncmFtO1xuICAgIHByb2dyYW0gPSBpbnZlcnRlZDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdHlwZTogZGVjb3JhdG9yID8gJ0RlY29yYXRvckJsb2NrJyA6ICdCbG9ja1N0YXRlbWVudCcsXG4gICAgcGF0aDogb3BlbkJsb2NrLnBhdGgsXG4gICAgcGFyYW1zOiBvcGVuQmxvY2sucGFyYW1zLFxuICAgIGhhc2g6IG9wZW5CbG9jay5oYXNoLFxuICAgIHByb2dyYW06IHByb2dyYW0sXG4gICAgaW52ZXJzZTogaW52ZXJzZSxcbiAgICBvcGVuU3RyaXA6IG9wZW5CbG9jay5zdHJpcCxcbiAgICBpbnZlcnNlU3RyaXA6IGludmVyc2VTdHJpcCxcbiAgICBjbG9zZVN0cmlwOiBjbG9zZSAmJiBjbG9zZS5zdHJpcCxcbiAgICBsb2M6IHRoaXMubG9jSW5mbyhsb2NJbmZvKVxuICB9O1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlUHJvZ3JhbShzdGF0ZW1lbnRzLCBsb2MpIHtcbiAgaWYgKCFsb2MgJiYgc3RhdGVtZW50cy5sZW5ndGgpIHtcbiAgICB2YXIgZmlyc3RMb2MgPSBzdGF0ZW1lbnRzWzBdLmxvYyxcbiAgICAgICAgbGFzdExvYyA9IHN0YXRlbWVudHNbc3RhdGVtZW50cy5sZW5ndGggLSAxXS5sb2M7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChmaXJzdExvYyAmJiBsYXN0TG9jKSB7XG4gICAgICBsb2MgPSB7XG4gICAgICAgIHNvdXJjZTogZmlyc3RMb2Muc291cmNlLFxuICAgICAgICBzdGFydDoge1xuICAgICAgICAgIGxpbmU6IGZpcnN0TG9jLnN0YXJ0LmxpbmUsXG4gICAgICAgICAgY29sdW1uOiBmaXJzdExvYy5zdGFydC5jb2x1bW5cbiAgICAgICAgfSxcbiAgICAgICAgZW5kOiB7XG4gICAgICAgICAgbGluZTogbGFzdExvYy5lbmQubGluZSxcbiAgICAgICAgICBjb2x1bW46IGxhc3RMb2MuZW5kLmNvbHVtblxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdHlwZTogJ1Byb2dyYW0nLFxuICAgIGJvZHk6IHN0YXRlbWVudHMsXG4gICAgc3RyaXA6IHt9LFxuICAgIGxvYzogbG9jXG4gIH07XG59XG5cbmZ1bmN0aW9uIHByZXBhcmVQYXJ0aWFsQmxvY2sob3BlbiwgcHJvZ3JhbSwgY2xvc2UsIGxvY0luZm8pIHtcbiAgdmFsaWRhdGVDbG9zZShvcGVuLCBjbG9zZSk7XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnUGFydGlhbEJsb2NrU3RhdGVtZW50JyxcbiAgICBuYW1lOiBvcGVuLnBhdGgsXG4gICAgcGFyYW1zOiBvcGVuLnBhcmFtcyxcbiAgICBoYXNoOiBvcGVuLmhhc2gsXG4gICAgcHJvZ3JhbTogcHJvZ3JhbSxcbiAgICBvcGVuU3RyaXA6IG9wZW4uc3RyaXAsXG4gICAgY2xvc2VTdHJpcDogY2xvc2UgJiYgY2xvc2Uuc3RyaXAsXG4gICAgbG9jOiB0aGlzLmxvY0luZm8obG9jSW5mbylcbiAgfTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwyTnZiWEJwYkdWeUwyaGxiSEJsY25NdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3T3pzN096czdPenM3T3pzN2VVSkJRWE5DTEdOQlFXTTdPenM3UVVGRmNFTXNVMEZCVXl4aFFVRmhMRU5CUVVNc1NVRkJTU3hGUVVGRkxFdEJRVXNzUlVGQlJUdEJRVU5zUXl4UFFVRkxMRWRCUVVjc1MwRkJTeXhEUVVGRExFbEJRVWtzUjBGQlJ5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1IwRkJSeXhMUVVGTExFTkJRVU03TzBGQlJXcEVMRTFCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEV0QlFVc3NTMEZCU3l4RlFVRkZPMEZCUTJoRExGRkJRVWtzVTBGQlV5eEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTTdPMEZCUlhaRExGVkJRVTBzTWtKQlEwb3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFZEJRVWNzYVVKQlFXbENMRWRCUVVjc1MwRkJTeXhGUVVNNVF5eFRRVUZUTEVOQlExWXNRMEZCUXp0SFFVTklPME5CUTBZN08wRkJSVTBzVTBGQlV5eGpRVUZqTEVOQlFVTXNUVUZCVFN4RlFVRkZMRTlCUVU4c1JVRkJSVHRCUVVNNVF5eE5RVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRTFCUVUwc1EwRkJRenRCUVVOeVFpeE5RVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhPMEZCUTFnc1VVRkJTU3hGUVVGRkxFOUJRVThzUTBGQlF5eFZRVUZWTzBGQlEzaENMRlZCUVUwc1JVRkJSU3hQUVVGUExFTkJRVU1zV1VGQldUdEhRVU0zUWl4RFFVRkRPMEZCUTBZc1RVRkJTU3hEUVVGRExFZEJRVWNzUjBGQlJ6dEJRVU5VTEZGQlFVa3NSVUZCUlN4UFFVRlBMRU5CUVVNc1UwRkJVenRCUVVOMlFpeFZRVUZOTEVWQlFVVXNUMEZCVHl4RFFVRkRMRmRCUVZjN1IwRkROVUlzUTBGQlF6dERRVU5JT3p0QlFVVk5MRk5CUVZNc1JVRkJSU3hEUVVGRExFdEJRVXNzUlVGQlJUdEJRVU40UWl4TlFVRkpMRlZCUVZVc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVWQlFVVTdRVUZETVVJc1YwRkJUeXhMUVVGTExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNSVUZCUlN4TFFVRkxMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzBkQlF6ZERMRTFCUVUwN1FVRkRUQ3hYUVVGUExFdEJRVXNzUTBGQlF6dEhRVU5rTzBOQlEwWTdPMEZCUlUwc1UwRkJVeXhWUVVGVkxFTkJRVU1zU1VGQlNTeEZRVUZGTEV0QlFVc3NSVUZCUlR0QlFVTjBReXhUUVVGUE8wRkJRMHdzVVVGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUjBGQlJ6dEJRVU0xUWl4VFFVRkxMRVZCUVVVc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhMUVVGTExFZEJRVWM3UjBGRE9VTXNRMEZCUXp0RFFVTklPenRCUVVWTkxGTkJRVk1zV1VGQldTeERRVUZETEU5QlFVOHNSVUZCUlR0QlFVTndReXhUUVVGUExFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTXNZMEZCWXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFOUJRVThzUTBGQlF5eGhRVUZoTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNN1EwRkRka1U3TzBGQlJVMHNVMEZCVXl4WFFVRlhMRU5CUVVNc1NVRkJTU3hGUVVGRkxFdEJRVXNzUlVGQlJTeEhRVUZITEVWQlFVVTdRVUZETlVNc1MwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN08wRkJSWGhDTEUxQlFVa3NVVUZCVVN4SFFVRkhMRWxCUVVrc1IwRkJSeXhIUVVGSExFZEJRVWNzUlVGQlJUdE5RVU0xUWl4SFFVRkhMRWRCUVVjc1JVRkJSVHROUVVOU0xFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVTTdPMEZCUlZvc1QwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRCUVVNMVF5eFJRVUZKTEVsQlFVa3NSMEZCUnl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNUczdPenRCUVVkMFFpeGhRVUZUTEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExGRkJRVkVzUzBGQlN5eEpRVUZKTEVOQlFVTTdRVUZEZWtNc1dVRkJVU3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRk5CUVZNc1NVRkJTU3hGUVVGRkxFTkJRVUVzUjBGQlNTeEpRVUZKTEVOQlFVTTdPMEZCUlRsRExGRkJRVWtzUTBGQlF5eFRRVUZUTEV0QlFVc3NTVUZCU1N4TFFVRkxMRWxCUVVrc1NVRkJTU3hKUVVGSkxFdEJRVXNzUjBGQlJ5eEpRVUZKTEVsQlFVa3NTMEZCU3l4TlFVRk5MRU5CUVVFc1FVRkJReXhGUVVGRk8wRkJRM0JGTEZWQlFVa3NSMEZCUnl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFVkJRVVU3UVVGRGJFSXNZMEZCVFN3eVFrRkJZeXhuUWtGQlowSXNSMEZCUnl4UlFVRlJMRVZCUVVVc1JVRkJSU3hIUVVGSExFVkJRVWdzUjBGQlJ5eEZRVUZGTEVOQlFVTXNRMEZCUXp0UFFVTXpSQ3hOUVVGTkxFbEJRVWtzU1VGQlNTeExRVUZMTEVsQlFVa3NSVUZCUlR0QlFVTjRRaXhoUVVGTExFVkJRVVVzUTBGQlF6dFBRVU5VTzB0QlEwWXNUVUZCVFR0QlFVTk1MRk5CUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdTMEZEYUVJN1IwRkRSanM3UVVGRlJDeFRRVUZQTzBGQlEwd3NVVUZCU1N4RlFVRkZMR2RDUVVGblFqdEJRVU4wUWl4UlFVRkpMRVZCUVVvc1NVRkJTVHRCUVVOS0xGTkJRVXNzUlVGQlRDeExRVUZMTzBGQlEwd3NVMEZCU3l4RlFVRkZMRWRCUVVjN1FVRkRWaXhaUVVGUkxFVkJRVklzVVVGQlVUdEJRVU5TTEU5QlFVY3NSVUZCU0N4SFFVRkhPMGRCUTBvc1EwRkJRenREUVVOSU96dEJRVVZOTEZOQlFWTXNaVUZCWlN4RFFVRkRMRWxCUVVrc1JVRkJSU3hOUVVGTkxFVkJRVVVzU1VGQlNTeEZRVUZGTEVsQlFVa3NSVUZCUlN4TFFVRkxMRVZCUVVVc1QwRkJUeXhGUVVGRk96dEJRVVY0UlN4TlFVRkpMRlZCUVZVc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETzAxQlF5OURMRTlCUVU4c1IwRkJSeXhWUVVGVkxFdEJRVXNzUjBGQlJ5eEpRVUZKTEZWQlFWVXNTMEZCU3l4SFFVRkhMRU5CUVVNN08wRkJSWEpFTEUxQlFVa3NVMEZCVXl4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdRVUZEYUVNc1UwRkJUenRCUVVOTUxGRkJRVWtzUlVGQlJTeFRRVUZUTEVkQlFVY3NWMEZCVnl4SFFVRkhMRzFDUVVGdFFqdEJRVU51UkN4UlFVRkpMRVZCUVVvc1NVRkJTVHRCUVVOS0xGVkJRVTBzUlVGQlRpeE5RVUZOTzBGQlEwNHNVVUZCU1N4RlFVRktMRWxCUVVrN1FVRkRTaXhYUVVGUExFVkJRVkFzVDBGQlR6dEJRVU5RTEZOQlFVc3NSVUZCVEN4TFFVRkxPMEZCUTB3c1QwRkJSeXhGUVVGRkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNUMEZCVHl4RFFVRkRPMGRCUXpOQ0xFTkJRVU03UTBGRFNEczdRVUZGVFN4VFFVRlRMR1ZCUVdVc1EwRkJReXhaUVVGWkxFVkJRVVVzVVVGQlVTeEZRVUZGTEV0QlFVc3NSVUZCUlN4UFFVRlBMRVZCUVVVN1FVRkRkRVVzWlVGQllTeERRVUZETEZsQlFWa3NSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenM3UVVGRmJrTXNVMEZCVHl4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdRVUZEYUVNc1RVRkJTU3hQUVVGUExFZEJRVWM3UVVGRFdpeFJRVUZKTEVWQlFVVXNVMEZCVXp0QlFVTm1MRkZCUVVrc1JVRkJSU3hSUVVGUk8wRkJRMlFzVTBGQlN5eEZRVUZGTEVWQlFVVTdRVUZEVkN4UFFVRkhMRVZCUVVVc1QwRkJUenRIUVVOaUxFTkJRVU03TzBGQlJVWXNVMEZCVHp0QlFVTk1MRkZCUVVrc1JVRkJSU3huUWtGQlowSTdRVUZEZEVJc1VVRkJTU3hGUVVGRkxGbEJRVmtzUTBGQlF5eEpRVUZKTzBGQlEzWkNMRlZCUVUwc1JVRkJSU3haUVVGWkxFTkJRVU1zVFVGQlRUdEJRVU16UWl4UlFVRkpMRVZCUVVVc1dVRkJXU3hEUVVGRExFbEJRVWs3UVVGRGRrSXNWMEZCVHl4RlFVRlFMRTlCUVU4N1FVRkRVQ3hoUVVGVExFVkJRVVVzUlVGQlJUdEJRVU5pTEdkQ1FVRlpMRVZCUVVVc1JVRkJSVHRCUVVOb1FpeGpRVUZWTEVWQlFVVXNSVUZCUlR0QlFVTmtMRTlCUVVjc1JVRkJSU3hQUVVGUE8wZEJRMklzUTBGQlF6dERRVU5JT3p0QlFVVk5MRk5CUVZNc1dVRkJXU3hEUVVNeFFpeFRRVUZUTEVWQlExUXNUMEZCVHl4RlFVTlFMR2xDUVVGcFFpeEZRVU5xUWl4TFFVRkxMRVZCUTB3c1VVRkJVU3hGUVVOU0xFOUJRVThzUlVGRFVEdEJRVU5CTEUxQlFVa3NTMEZCU3l4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFVkJRVVU3UVVGRGRrSXNhVUpCUVdFc1EwRkJReXhUUVVGVExFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdSMEZEYWtNN08wRkJSVVFzVFVGQlNTeFRRVUZUTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdPMEZCUlRGRExGTkJRVThzUTBGQlF5eFhRVUZYTEVkQlFVY3NVMEZCVXl4RFFVRkRMRmRCUVZjc1EwRkJRenM3UVVGRk5VTXNUVUZCU1N4UFFVRlBMRmxCUVVFN1RVRkJSU3haUVVGWkxGbEJRVUVzUTBGQlF6czdRVUZGTVVJc1RVRkJTU3hwUWtGQmFVSXNSVUZCUlR0QlFVTnlRaXhSUVVGSkxGTkJRVk1zUlVGQlJUdEJRVU5pTEZsQlFVMHNNa0pCUTBvc2RVTkJRWFZETEVWQlEzWkRMR2xDUVVGcFFpeERRVU5zUWl4RFFVRkRPMHRCUTBnN08wRkJSVVFzVVVGQlNTeHBRa0ZCYVVJc1EwRkJReXhMUVVGTExFVkJRVVU3UVVGRE0wSXNkVUpCUVdsQ0xFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhWUVVGVkxFZEJRVWNzUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXp0TFFVTTFSRHM3UVVGRlJDeG5Ra0ZCV1N4SFFVRkhMR2xDUVVGcFFpeERRVUZETEV0QlFVc3NRMEZCUXp0QlFVTjJReXhYUVVGUExFZEJRVWNzYVVKQlFXbENMRU5CUVVNc1QwRkJUeXhEUVVGRE8wZEJRM0pET3p0QlFVVkVMRTFCUVVrc1VVRkJVU3hGUVVGRk8wRkJRMW9zV1VGQlVTeEhRVUZITEU5QlFVOHNRMEZCUXp0QlFVTnVRaXhYUVVGUExFZEJRVWNzVDBGQlR5eERRVUZETzBGQlEyeENMRmRCUVU4c1IwRkJSeXhSUVVGUkxFTkJRVU03UjBGRGNFSTdPMEZCUlVRc1UwRkJUenRCUVVOTUxGRkJRVWtzUlVGQlJTeFRRVUZUTEVkQlFVY3NaMEpCUVdkQ0xFZEJRVWNzWjBKQlFXZENPMEZCUTNKRUxGRkJRVWtzUlVGQlJTeFRRVUZUTEVOQlFVTXNTVUZCU1R0QlFVTndRaXhWUVVGTkxFVkJRVVVzVTBGQlV5eERRVUZETEUxQlFVMDdRVUZEZUVJc1VVRkJTU3hGUVVGRkxGTkJRVk1zUTBGQlF5eEpRVUZKTzBGQlEzQkNMRmRCUVU4c1JVRkJVQ3hQUVVGUE8wRkJRMUFzVjBGQlR5eEZRVUZRTEU5QlFVODdRVUZEVUN4aFFVRlRMRVZCUVVVc1UwRkJVeXhEUVVGRExFdEJRVXM3UVVGRE1VSXNaMEpCUVZrc1JVRkJXaXhaUVVGWk8wRkJRMW9zWTBGQlZTeEZRVUZGTEV0QlFVc3NTVUZCU1N4TFFVRkxMRU5CUVVNc1MwRkJTenRCUVVOb1F5eFBRVUZITEVWQlFVVXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhQUVVGUExFTkJRVU03UjBGRE0wSXNRMEZCUXp0RFFVTklPenRCUVVWTkxGTkJRVk1zWTBGQll5eERRVUZETEZWQlFWVXNSVUZCUlN4SFFVRkhMRVZCUVVVN1FVRkRPVU1zVFVGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4VlFVRlZMRU5CUVVNc1RVRkJUU3hGUVVGRk8wRkJRemRDTEZGQlFVMHNVVUZCVVN4SFFVRkhMRlZCUVZVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITzFGQlEyaERMRTlCUVU4c1IwRkJSeXhWUVVGVkxFTkJRVU1zVlVGQlZTeERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU03T3p0QlFVZHNSQ3hSUVVGSkxGRkJRVkVzU1VGQlNTeFBRVUZQTEVWQlFVVTdRVUZEZGtJc1UwRkJSeXhIUVVGSE8wRkJRMG9zWTBGQlRTeEZRVUZGTEZGQlFWRXNRMEZCUXl4TlFVRk5PMEZCUTNaQ0xHRkJRVXNzUlVGQlJUdEJRVU5NTEdOQlFVa3NSVUZCUlN4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWs3UVVGRGVrSXNaMEpCUVUwc1JVRkJSU3hSUVVGUkxFTkJRVU1zUzBGQlN5eERRVUZETEUxQlFVMDdVMEZET1VJN1FVRkRSQ3hYUVVGSExFVkJRVVU3UVVGRFNDeGpRVUZKTEVWQlFVVXNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSk8wRkJRM1JDTEdkQ1FVRk5MRVZCUVVVc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eE5RVUZOTzFOQlF6TkNPMDlCUTBZc1EwRkJRenRMUVVOSU8wZEJRMFk3TzBGQlJVUXNVMEZCVHp0QlFVTk1MRkZCUVVrc1JVRkJSU3hUUVVGVE8wRkJRMllzVVVGQlNTeEZRVUZGTEZWQlFWVTdRVUZEYUVJc1UwRkJTeXhGUVVGRkxFVkJRVVU3UVVGRFZDeFBRVUZITEVWQlFVVXNSMEZCUnp0SFFVTlVMRU5CUVVNN1EwRkRTRHM3UVVGRlRTeFRRVUZUTEcxQ1FVRnRRaXhEUVVGRExFbEJRVWtzUlVGQlJTeFBRVUZQTEVWQlFVVXNTMEZCU3l4RlFVRkZMRTlCUVU4c1JVRkJSVHRCUVVOcVJTeGxRVUZoTEVOQlFVTXNTVUZCU1N4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE96dEJRVVV6UWl4VFFVRlBPMEZCUTB3c1VVRkJTU3hGUVVGRkxIVkNRVUYxUWp0QlFVTTNRaXhSUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEVsQlFVazdRVUZEWml4VlFVRk5MRVZCUVVVc1NVRkJTU3hEUVVGRExFMUJRVTA3UVVGRGJrSXNVVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhKUVVGSk8wRkJRMllzVjBGQlR5eEZRVUZRTEU5QlFVODdRVUZEVUN4aFFVRlRMRVZCUVVVc1NVRkJTU3hEUVVGRExFdEJRVXM3UVVGRGNrSXNZMEZCVlN4RlFVRkZMRXRCUVVzc1NVRkJTU3hMUVVGTExFTkJRVU1zUzBGQlN6dEJRVU5vUXl4UFFVRkhMRVZCUVVVc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTTdSMEZETTBJc1EwRkJRenREUVVOSUlpd2labWxzWlNJNkltaGxiSEJsY25NdWFuTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdSWGhqWlhCMGFXOXVJR1p5YjIwZ0p5NHVMMlY0WTJWd2RHbHZiaWM3WEc1Y2JtWjFibU4wYVc5dUlIWmhiR2xrWVhSbFEyeHZjMlVvYjNCbGJpd2dZMnh2YzJVcElIdGNiaUFnWTJ4dmMyVWdQU0JqYkc5elpTNXdZWFJvSUQ4Z1kyeHZjMlV1Y0dGMGFDNXZjbWxuYVc1aGJDQTZJR05zYjNObE8xeHVYRzRnSUdsbUlDaHZjR1Z1TG5CaGRHZ3ViM0pwWjJsdVlXd2dJVDA5SUdOc2IzTmxLU0I3WEc0Z0lDQWdiR1YwSUdWeWNtOXlUbTlrWlNBOUlIc2diRzlqT2lCdmNHVnVMbkJoZEdndWJHOWpJSDA3WEc1Y2JpQWdJQ0IwYUhKdmR5QnVaWGNnUlhoalpYQjBhVzl1S0Z4dUlDQWdJQ0FnYjNCbGJpNXdZWFJvTG05eWFXZHBibUZzSUNzZ1hDSWdaRzlsYzI0bmRDQnRZWFJqYUNCY0lpQXJJR05zYjNObExGeHVJQ0FnSUNBZ1pYSnliM0pPYjJSbFhHNGdJQ0FnS1R0Y2JpQWdmVnh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1UyOTFjbU5sVEc5allYUnBiMjRvYzI5MWNtTmxMQ0JzYjJOSmJtWnZLU0I3WEc0Z0lIUm9hWE11YzI5MWNtTmxJRDBnYzI5MWNtTmxPMXh1SUNCMGFHbHpMbk4wWVhKMElEMGdlMXh1SUNBZ0lHeHBibVU2SUd4dlkwbHVabTh1Wm1seWMzUmZiR2x1WlN4Y2JpQWdJQ0JqYjJ4MWJXNDZJR3h2WTBsdVptOHVabWx5YzNSZlkyOXNkVzF1WEc0Z0lIMDdYRzRnSUhSb2FYTXVaVzVrSUQwZ2UxeHVJQ0FnSUd4cGJtVTZJR3h2WTBsdVptOHViR0Z6ZEY5c2FXNWxMRnh1SUNBZ0lHTnZiSFZ0YmpvZ2JHOWpTVzVtYnk1c1lYTjBYMk52YkhWdGJseHVJQ0I5TzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdhV1FvZEc5clpXNHBJSHRjYmlBZ2FXWWdLQzllWEZ4YkxpcGNYRjBrTHk1MFpYTjBLSFJ2YTJWdUtTa2dlMXh1SUNBZ0lISmxkSFZ5YmlCMGIydGxiaTV6ZFdKemRISnBibWNvTVN3Z2RHOXJaVzR1YkdWdVozUm9JQzBnTVNrN1hHNGdJSDBnWld4elpTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSdmEyVnVPMXh1SUNCOVhHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ6ZEhKcGNFWnNZV2R6S0c5d1pXNHNJR05zYjNObEtTQjdYRzRnSUhKbGRIVnliaUI3WEc0Z0lDQWdiM0JsYmpvZ2IzQmxiaTVqYUdGeVFYUW9NaWtnUFQwOUlDZCtKeXhjYmlBZ0lDQmpiRzl6WlRvZ1kyeHZjMlV1WTJoaGNrRjBLR05zYjNObExteGxibWQwYUNBdElETXBJRDA5UFNBbmZpZGNiaUFnZlR0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSE4wY21sd1EyOXRiV1Z1ZENoamIyMXRaVzUwS1NCN1hHNGdJSEpsZEhWeWJpQmpiMjF0Wlc1MExuSmxjR3hoWTJVb0wxNWNYSHRjWEh0K1B5RXRQeTAvTHl3Z0p5Y3BMbkpsY0d4aFkyVW9MeTAvTFQ5K1AxeGNmVnhjZlNRdkxDQW5KeWs3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQndjbVZ3WVhKbFVHRjBhQ2hrWVhSaExDQndZWEowY3l3Z2JHOWpLU0I3WEc0Z0lHeHZZeUE5SUhSb2FYTXViRzlqU1c1bWJ5aHNiMk1wTzF4dVhHNGdJR3hsZENCdmNtbG5hVzVoYkNBOUlHUmhkR0VnUHlBblFDY2dPaUFuSnl4Y2JpQWdJQ0JrYVdjZ1BTQmJYU3hjYmlBZ0lDQmtaWEIwYUNBOUlEQTdYRzVjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREFzSUd3Z1BTQndZWEowY3k1c1pXNW5kR2c3SUdrZ1BDQnNPeUJwS3lzcElIdGNiaUFnSUNCc1pYUWdjR0Z5ZENBOUlIQmhjblJ6VzJsZExuQmhjblFzWEc0Z0lDQWdJQ0F2THlCSlppQjNaU0JvWVhabElGdGRJSE41Ym5SaGVDQjBhR1Z1SUhkbElHUnZJRzV2ZENCMGNtVmhkQ0J3WVhSb0lISmxabVZ5Wlc1alpYTWdZWE1nYjNCbGNtRjBiM0p6TEZ4dUlDQWdJQ0FnTHk4Z2FTNWxMaUJtYjI4dVczUm9hWE5kSUhKbGMyOXNkbVZ6SUhSdklHRndjSEp2ZUdsdFlYUmxiSGtnWTI5dWRHVjRkQzVtYjI5YkozUm9hWE1uWFZ4dUlDQWdJQ0FnYVhOTWFYUmxjbUZzSUQwZ2NHRnlkSE5iYVYwdWIzSnBaMmx1WVd3Z0lUMDlJSEJoY25RN1hHNGdJQ0FnYjNKcFoybHVZV3dnS3owZ0tIQmhjblJ6VzJsZExuTmxjR0Z5WVhSdmNpQjhmQ0FuSnlrZ0t5QndZWEowTzF4dVhHNGdJQ0FnYVdZZ0tDRnBjMHhwZEdWeVlXd2dKaVlnS0hCaGNuUWdQVDA5SUNjdUxpY2dmSHdnY0dGeWRDQTlQVDBnSnk0bklIeDhJSEJoY25RZ1BUMDlJQ2QwYUdsekp5a3BJSHRjYmlBZ0lDQWdJR2xtSUNoa2FXY3ViR1Z1WjNSb0lENGdNQ2tnZTF4dUlDQWdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYaGpaWEIwYVc5dUtDZEpiblpoYkdsa0lIQmhkR2c2SUNjZ0t5QnZjbWxuYVc1aGJDd2dleUJzYjJNZ2ZTazdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLSEJoY25RZ1BUMDlJQ2N1TGljcElIdGNiaUFnSUNBZ0lDQWdaR1Z3ZEdnckt6dGNiaUFnSUNBZ0lIMWNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnWkdsbkxuQjFjMmdvY0dGeWRDazdYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdjbVYwZFhKdUlIdGNiaUFnSUNCMGVYQmxPaUFuVUdGMGFFVjRjSEpsYzNOcGIyNG5MRnh1SUNBZ0lHUmhkR0VzWEc0Z0lDQWdaR1Z3ZEdnc1hHNGdJQ0FnY0dGeWRITTZJR1JwWnl4Y2JpQWdJQ0J2Y21sbmFXNWhiQ3hjYmlBZ0lDQnNiMk5jYmlBZ2ZUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhCeVpYQmhjbVZOZFhOMFlXTm9aU2h3WVhSb0xDQndZWEpoYlhNc0lHaGhjMmdzSUc5d1pXNHNJSE4wY21sd0xDQnNiMk5KYm1adktTQjdYRzRnSUM4dklFMTFjM1FnZFhObElHTm9ZWEpCZENCMGJ5QnpkWEJ3YjNKMElFbEZJSEJ5WlMweE1GeHVJQ0JzWlhRZ1pYTmpZWEJsUm14aFp5QTlJRzl3Wlc0dVkyaGhja0YwS0RNcElIeDhJRzl3Wlc0dVkyaGhja0YwS0RJcExGeHVJQ0FnSUdWelkyRndaV1FnUFNCbGMyTmhjR1ZHYkdGbklDRTlQU0FuZXljZ0ppWWdaWE5qWVhCbFJteGhaeUFoUFQwZ0p5WW5PMXh1WEc0Z0lHeGxkQ0JrWldOdmNtRjBiM0lnUFNBdlhGd3FMeTUwWlhOMEtHOXdaVzRwTzF4dUlDQnlaWFIxY200Z2UxeHVJQ0FnSUhSNWNHVTZJR1JsWTI5eVlYUnZjaUEvSUNkRVpXTnZjbUYwYjNJbklEb2dKMDExYzNSaFkyaGxVM1JoZEdWdFpXNTBKeXhjYmlBZ0lDQndZWFJvTEZ4dUlDQWdJSEJoY21GdGN5eGNiaUFnSUNCb1lYTm9MRnh1SUNBZ0lHVnpZMkZ3WldRc1hHNGdJQ0FnYzNSeWFYQXNYRzRnSUNBZ2JHOWpPaUIwYUdsekxteHZZMGx1Wm04b2JHOWpTVzVtYnlsY2JpQWdmVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlIQnlaWEJoY21WU1lYZENiRzlqYXlodmNHVnVVbUYzUW14dlkyc3NJR052Ym5SbGJuUnpMQ0JqYkc5elpTd2diRzlqU1c1bWJ5a2dlMXh1SUNCMllXeHBaR0YwWlVOc2IzTmxLRzl3Wlc1U1lYZENiRzlqYXl3Z1kyeHZjMlVwTzF4dVhHNGdJR3h2WTBsdVptOGdQU0IwYUdsekxteHZZMGx1Wm04b2JHOWpTVzVtYnlrN1hHNGdJR3hsZENCd2NtOW5jbUZ0SUQwZ2UxeHVJQ0FnSUhSNWNHVTZJQ2RRY205bmNtRnRKeXhjYmlBZ0lDQmliMlI1T2lCamIyNTBaVzUwY3l4Y2JpQWdJQ0J6ZEhKcGNEb2dlMzBzWEc0Z0lDQWdiRzlqT2lCc2IyTkpibVp2WEc0Z0lIMDdYRzVjYmlBZ2NtVjBkWEp1SUh0Y2JpQWdJQ0IwZVhCbE9pQW5RbXh2WTJ0VGRHRjBaVzFsYm5RbkxGeHVJQ0FnSUhCaGRHZzZJRzl3Wlc1U1lYZENiRzlqYXk1d1lYUm9MRnh1SUNBZ0lIQmhjbUZ0Y3pvZ2IzQmxibEpoZDBKc2IyTnJMbkJoY21GdGN5eGNiaUFnSUNCb1lYTm9PaUJ2Y0dWdVVtRjNRbXh2WTJzdWFHRnphQ3hjYmlBZ0lDQndjbTluY21GdExGeHVJQ0FnSUc5d1pXNVRkSEpwY0RvZ2UzMHNYRzRnSUNBZ2FXNTJaWEp6WlZOMGNtbHdPaUI3ZlN4Y2JpQWdJQ0JqYkc5elpWTjBjbWx3T2lCN2ZTeGNiaUFnSUNCc2IyTTZJR3h2WTBsdVptOWNiaUFnZlR0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSEJ5WlhCaGNtVkNiRzlqYXloY2JpQWdiM0JsYmtKc2IyTnJMRnh1SUNCd2NtOW5jbUZ0TEZ4dUlDQnBiblpsY25ObFFXNWtVSEp2WjNKaGJTeGNiaUFnWTJ4dmMyVXNYRzRnSUdsdWRtVnlkR1ZrTEZ4dUlDQnNiMk5KYm1adlhHNHBJSHRjYmlBZ2FXWWdLR05zYjNObElDWW1JR05zYjNObExuQmhkR2dwSUh0Y2JpQWdJQ0IyWVd4cFpHRjBaVU5zYjNObEtHOXdaVzVDYkc5amF5d2dZMnh2YzJVcE8xeHVJQ0I5WEc1Y2JpQWdiR1YwSUdSbFkyOXlZWFJ2Y2lBOUlDOWNYQ292TG5SbGMzUW9iM0JsYmtKc2IyTnJMbTl3Wlc0cE8xeHVYRzRnSUhCeWIyZHlZVzB1WW14dlkydFFZWEpoYlhNZ1BTQnZjR1Z1UW14dlkyc3VZbXh2WTJ0UVlYSmhiWE03WEc1Y2JpQWdiR1YwSUdsdWRtVnljMlVzSUdsdWRtVnljMlZUZEhKcGNEdGNibHh1SUNCcFppQW9hVzUyWlhKelpVRnVaRkJ5YjJkeVlXMHBJSHRjYmlBZ0lDQnBaaUFvWkdWamIzSmhkRzl5S1NCN1hHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYaGpaWEIwYVc5dUtGeHVJQ0FnSUNBZ0lDQW5WVzVsZUhCbFkzUmxaQ0JwYm5abGNuTmxJR0pzYjJOcklHOXVJR1JsWTI5eVlYUnZjaWNzWEc0Z0lDQWdJQ0FnSUdsdWRtVnljMlZCYm1SUWNtOW5jbUZ0WEc0Z0lDQWdJQ0FwTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNocGJuWmxjbk5sUVc1a1VISnZaM0poYlM1amFHRnBiaWtnZTF4dUlDQWdJQ0FnYVc1MlpYSnpaVUZ1WkZCeWIyZHlZVzB1Y0hKdlozSmhiUzVpYjJSNVd6QmRMbU5zYjNObFUzUnlhWEFnUFNCamJHOXpaUzV6ZEhKcGNEdGNiaUFnSUNCOVhHNWNiaUFnSUNCcGJuWmxjbk5sVTNSeWFYQWdQU0JwYm5abGNuTmxRVzVrVUhKdlozSmhiUzV6ZEhKcGNEdGNiaUFnSUNCcGJuWmxjbk5sSUQwZ2FXNTJaWEp6WlVGdVpGQnliMmR5WVcwdWNISnZaM0poYlR0Y2JpQWdmVnh1WEc0Z0lHbG1JQ2hwYm5abGNuUmxaQ2tnZTF4dUlDQWdJR2x1ZG1WeWRHVmtJRDBnYVc1MlpYSnpaVHRjYmlBZ0lDQnBiblpsY25ObElEMGdjSEp2WjNKaGJUdGNiaUFnSUNCd2NtOW5jbUZ0SUQwZ2FXNTJaWEowWldRN1hHNGdJSDFjYmx4dUlDQnlaWFIxY200Z2UxeHVJQ0FnSUhSNWNHVTZJR1JsWTI5eVlYUnZjaUEvSUNkRVpXTnZjbUYwYjNKQ2JHOWpheWNnT2lBblFteHZZMnRUZEdGMFpXMWxiblFuTEZ4dUlDQWdJSEJoZEdnNklHOXdaVzVDYkc5amF5NXdZWFJvTEZ4dUlDQWdJSEJoY21GdGN6b2diM0JsYmtKc2IyTnJMbkJoY21GdGN5eGNiaUFnSUNCb1lYTm9PaUJ2Y0dWdVFteHZZMnN1YUdGemFDeGNiaUFnSUNCd2NtOW5jbUZ0TEZ4dUlDQWdJR2x1ZG1WeWMyVXNYRzRnSUNBZ2IzQmxibE4wY21sd09pQnZjR1Z1UW14dlkyc3VjM1J5YVhBc1hHNGdJQ0FnYVc1MlpYSnpaVk4wY21sd0xGeHVJQ0FnSUdOc2IzTmxVM1J5YVhBNklHTnNiM05sSUNZbUlHTnNiM05sTG5OMGNtbHdMRnh1SUNBZ0lHeHZZem9nZEdocGN5NXNiMk5KYm1adktHeHZZMGx1Wm04cFhHNGdJSDA3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQndjbVZ3WVhKbFVISnZaM0poYlNoemRHRjBaVzFsYm5SekxDQnNiMk1wSUh0Y2JpQWdhV1lnS0NGc2IyTWdKaVlnYzNSaGRHVnRaVzUwY3k1c1pXNW5kR2dwSUh0Y2JpQWdJQ0JqYjI1emRDQm1hWEp6ZEV4dll5QTlJSE4wWVhSbGJXVnVkSE5iTUYwdWJHOWpMRnh1SUNBZ0lDQWdiR0Z6ZEV4dll5QTlJSE4wWVhSbGJXVnVkSE5iYzNSaGRHVnRaVzUwY3k1c1pXNW5kR2dnTFNBeFhTNXNiMk03WEc1Y2JpQWdJQ0F2S2lCcGMzUmhibUoxYkNCcFoyNXZjbVVnWld4elpTQXFMMXh1SUNBZ0lHbG1JQ2htYVhKemRFeHZZeUFtSmlCc1lYTjBURzlqS1NCN1hHNGdJQ0FnSUNCc2IyTWdQU0I3WEc0Z0lDQWdJQ0FnSUhOdmRYSmpaVG9nWm1seWMzUk1iMk11YzI5MWNtTmxMRnh1SUNBZ0lDQWdJQ0J6ZEdGeWREb2dlMXh1SUNBZ0lDQWdJQ0FnSUd4cGJtVTZJR1pwY25OMFRHOWpMbk4wWVhKMExteHBibVVzWEc0Z0lDQWdJQ0FnSUNBZ1kyOXNkVzF1T2lCbWFYSnpkRXh2WXk1emRHRnlkQzVqYjJ4MWJXNWNiaUFnSUNBZ0lDQWdmU3hjYmlBZ0lDQWdJQ0FnWlc1a09pQjdYRzRnSUNBZ0lDQWdJQ0FnYkdsdVpUb2diR0Z6ZEV4dll5NWxibVF1YkdsdVpTeGNiaUFnSUNBZ0lDQWdJQ0JqYjJ4MWJXNDZJR3hoYzNSTWIyTXVaVzVrTG1OdmJIVnRibHh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5TzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUhKbGRIVnliaUI3WEc0Z0lDQWdkSGx3WlRvZ0oxQnliMmR5WVcwbkxGeHVJQ0FnSUdKdlpIazZJSE4wWVhSbGJXVnVkSE1zWEc0Z0lDQWdjM1J5YVhBNklIdDlMRnh1SUNBZ0lHeHZZem9nYkc5alhHNGdJSDA3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQndjbVZ3WVhKbFVHRnlkR2xoYkVKc2IyTnJLRzl3Wlc0c0lIQnliMmR5WVcwc0lHTnNiM05sTENCc2IyTkpibVp2S1NCN1hHNGdJSFpoYkdsa1lYUmxRMnh2YzJVb2IzQmxiaXdnWTJ4dmMyVXBPMXh1WEc0Z0lISmxkSFZ5YmlCN1hHNGdJQ0FnZEhsd1pUb2dKMUJoY25ScFlXeENiRzlqYTFOMFlYUmxiV1Z1ZENjc1hHNGdJQ0FnYm1GdFpUb2diM0JsYmk1d1lYUm9MRnh1SUNBZ0lIQmhjbUZ0Y3pvZ2IzQmxiaTV3WVhKaGJYTXNYRzRnSUNBZ2FHRnphRG9nYjNCbGJpNW9ZWE5vTEZ4dUlDQWdJSEJ5YjJkeVlXMHNYRzRnSUNBZ2IzQmxibE4wY21sd09pQnZjR1Z1TG5OMGNtbHdMRnh1SUNBZ0lHTnNiM05sVTNSeWFYQTZJR05zYjNObElDWW1JR05zYjNObExuTjBjbWx3TEZ4dUlDQWdJR3h2WXpvZ2RHaHBjeTVzYjJOSmJtWnZLR3h2WTBsdVptOHBYRzRnSUgwN1hHNTlYRzRpWFgwPVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5wYXJzZVdpdGhvdXRQcm9jZXNzaW5nID0gcGFyc2VXaXRob3V0UHJvY2Vzc2luZztcbmV4cG9ydHMucGFyc2UgPSBwYXJzZTtcbi8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikgeyBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gZWxzZSB7IHZhciBuZXdPYmogPSB7fTsgaWYgKG9iaiAhPSBudWxsKSB7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSBuZXdPYmpbJ2RlZmF1bHQnXSA9IG9iajsgcmV0dXJuIG5ld09iajsgfSB9XG5cbi8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxudmFyIF9wYXJzZXIgPSByZXF1aXJlKCcuL3BhcnNlcicpO1xuXG52YXIgX3BhcnNlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9wYXJzZXIpO1xuXG52YXIgX3doaXRlc3BhY2VDb250cm9sID0gcmVxdWlyZSgnLi93aGl0ZXNwYWNlLWNvbnRyb2wnKTtcblxudmFyIF93aGl0ZXNwYWNlQ29udHJvbDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF93aGl0ZXNwYWNlQ29udHJvbCk7XG5cbnZhciBfaGVscGVycyA9IHJlcXVpcmUoJy4vaGVscGVycycpO1xuXG52YXIgSGVscGVycyA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKF9oZWxwZXJzKTtcblxudmFyIF91dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG5cbmV4cG9ydHMucGFyc2VyID0gX3BhcnNlcjJbJ2RlZmF1bHQnXTtcblxudmFyIHl5ID0ge307XG5fdXRpbHMuZXh0ZW5kKHl5LCBIZWxwZXJzKTtcblxuZnVuY3Rpb24gcGFyc2VXaXRob3V0UHJvY2Vzc2luZyhpbnB1dCwgb3B0aW9ucykge1xuICAvLyBKdXN0IHJldHVybiBpZiBhbiBhbHJlYWR5LWNvbXBpbGVkIEFTVCB3YXMgcGFzc2VkIGluLlxuICBpZiAoaW5wdXQudHlwZSA9PT0gJ1Byb2dyYW0nKSB7XG4gICAgcmV0dXJuIGlucHV0O1xuICB9XG5cbiAgX3BhcnNlcjJbJ2RlZmF1bHQnXS55eSA9IHl5O1xuXG4gIC8vIEFsdGVyaW5nIHRoZSBzaGFyZWQgb2JqZWN0IGhlcmUsIGJ1dCB0aGlzIGlzIG9rIGFzIHBhcnNlciBpcyBhIHN5bmMgb3BlcmF0aW9uXG4gIHl5LmxvY0luZm8gPSBmdW5jdGlvbiAobG9jSW5mbykge1xuICAgIHJldHVybiBuZXcgeXkuU291cmNlTG9jYXRpb24ob3B0aW9ucyAmJiBvcHRpb25zLnNyY05hbWUsIGxvY0luZm8pO1xuICB9O1xuXG4gIHZhciBhc3QgPSBfcGFyc2VyMlsnZGVmYXVsdCddLnBhcnNlKGlucHV0KTtcblxuICByZXR1cm4gYXN0O1xufVxuXG5mdW5jdGlvbiBwYXJzZShpbnB1dCwgb3B0aW9ucykge1xuICB2YXIgYXN0ID0gcGFyc2VXaXRob3V0UHJvY2Vzc2luZyhpbnB1dCwgb3B0aW9ucyk7XG4gIHZhciBzdHJpcCA9IG5ldyBfd2hpdGVzcGFjZUNvbnRyb2wyWydkZWZhdWx0J10ob3B0aW9ucyk7XG5cbiAgcmV0dXJuIHN0cmlwLmFjY2VwdChhc3QpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJOdmJYQnBiR1Z5TDJKaGMyVXVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3T3pzN096czdPenM3T3p0elFrRkJiVUlzVlVGQlZUczdPenRwUTBGRFF5eHpRa0ZCYzBJN096czdkVUpCUXpOQ0xGZEJRVmM3TzBsQlFYaENMRTlCUVU4N08zRkNRVU5KTEZWQlFWVTdPMUZCUlhoQ0xFMUJRVTA3TzBGQlJXWXNTVUZCU1N4RlFVRkZMRWRCUVVjc1JVRkJSU3hEUVVGRE8wRkJRMW9zWTBGQlR5eEZRVUZGTEVWQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVVNN08wRkJSV0lzVTBGQlV5eHpRa0ZCYzBJc1EwRkJReXhMUVVGTExFVkJRVVVzVDBGQlR5eEZRVUZGT3p0QlFVVnlSQ3hOUVVGSkxFdEJRVXNzUTBGQlF5eEpRVUZKTEV0QlFVc3NVMEZCVXl4RlFVRkZPMEZCUXpWQ0xGZEJRVThzUzBGQlN5eERRVUZETzBkQlEyUTdPMEZCUlVRc2MwSkJRVThzUlVGQlJTeEhRVUZITEVWQlFVVXNRMEZCUXpzN08wRkJSMllzU1VGQlJTeERRVUZETEU5QlFVOHNSMEZCUnl4VlFVRlRMRTlCUVU4c1JVRkJSVHRCUVVNM1FpeFhRVUZQTEVsQlFVa3NSVUZCUlN4RFFVRkRMR05CUVdNc1EwRkJReXhQUVVGUExFbEJRVWtzVDBGQlR5eERRVUZETEU5QlFVOHNSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenRIUVVOdVJTeERRVUZET3p0QlFVVkdMRTFCUVVrc1IwRkJSeXhIUVVGSExHOUNRVUZQTEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenM3UVVGRk9VSXNVMEZCVHl4SFFVRkhMRU5CUVVNN1EwRkRXanM3UVVGRlRTeFRRVUZUTEV0QlFVc3NRMEZCUXl4TFFVRkxMRVZCUVVVc1QwRkJUeXhGUVVGRk8wRkJRM0JETEUxQlFVa3NSMEZCUnl4SFFVRkhMSE5DUVVGelFpeERRVUZETEV0QlFVc3NSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenRCUVVOcVJDeE5RVUZKTEV0QlFVc3NSMEZCUnl4dFEwRkJjMElzVDBGQlR5eERRVUZETEVOQlFVTTdPMEZCUlRORExGTkJRVThzUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenREUVVNeFFpSXNJbVpwYkdVaU9pSmlZWE5sTG1weklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElIQmhjbk5sY2lCbWNtOXRJQ2N1TDNCaGNuTmxjaWM3WEc1cGJYQnZjblFnVjJocGRHVnpjR0ZqWlVOdmJuUnliMndnWm5KdmJTQW5MaTkzYUdsMFpYTndZV05sTFdOdmJuUnliMnduTzF4dWFXMXdiM0owSUNvZ1lYTWdTR1ZzY0dWeWN5Qm1jbTl0SUNjdUwyaGxiSEJsY25Nbk8xeHVhVzF3YjNKMElIc2daWGgwWlc1a0lIMGdabkp2YlNBbkxpNHZkWFJwYkhNbk8xeHVYRzVsZUhCdmNuUWdleUJ3WVhKelpYSWdmVHRjYmx4dWJHVjBJSGw1SUQwZ2UzMDdYRzVsZUhSbGJtUW9lWGtzSUVobGJIQmxjbk1wTzF4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2NHRnljMlZYYVhSb2IzVjBVSEp2WTJWemMybHVaeWhwYm5CMWRDd2diM0IwYVc5dWN5a2dlMXh1SUNBdkx5QktkWE4wSUhKbGRIVnliaUJwWmlCaGJpQmhiSEpsWVdSNUxXTnZiWEJwYkdWa0lFRlRWQ0IzWVhNZ2NHRnpjMlZrSUdsdUxseHVJQ0JwWmlBb2FXNXdkWFF1ZEhsd1pTQTlQVDBnSjFCeWIyZHlZVzBuS1NCN1hHNGdJQ0FnY21WMGRYSnVJR2x1Y0hWME8xeHVJQ0I5WEc1Y2JpQWdjR0Z5YzJWeUxubDVJRDBnZVhrN1hHNWNiaUFnTHk4Z1FXeDBaWEpwYm1jZ2RHaGxJSE5vWVhKbFpDQnZZbXBsWTNRZ2FHVnlaU3dnWW5WMElIUm9hWE1nYVhNZ2Iyc2dZWE1nY0dGeWMyVnlJR2x6SUdFZ2MzbHVZeUJ2Y0dWeVlYUnBiMjVjYmlBZ2VYa3ViRzlqU1c1bWJ5QTlJR1oxYm1OMGFXOXVLR3h2WTBsdVptOHBJSHRjYmlBZ0lDQnlaWFIxY200Z2JtVjNJSGw1TGxOdmRYSmpaVXh2WTJGMGFXOXVLRzl3ZEdsdmJuTWdKaVlnYjNCMGFXOXVjeTV6Y21OT1lXMWxMQ0JzYjJOSmJtWnZLVHRjYmlBZ2ZUdGNibHh1SUNCc1pYUWdZWE4wSUQwZ2NHRnljMlZ5TG5CaGNuTmxLR2x1Y0hWMEtUdGNibHh1SUNCeVpYUjFjbTRnWVhOME8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnY0dGeWMyVW9hVzV3ZFhRc0lHOXdkR2x2Ym5NcElIdGNiaUFnYkdWMElHRnpkQ0E5SUhCaGNuTmxWMmwwYUc5MWRGQnliMk5sYzNOcGJtY29hVzV3ZFhRc0lHOXdkR2x2Ym5NcE8xeHVJQ0JzWlhRZ2MzUnlhWEFnUFNCdVpYY2dWMmhwZEdWemNHRmpaVU52Ym5SeWIyd29iM0IwYVc5dWN5azdYRzVjYmlBZ2NtVjBkWEp1SUhOMGNtbHdMbUZqWTJWd2RDaGhjM1FwTzF4dWZWeHVJbDE5XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBuZXctY2FwICovXG5cbid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMuQ29tcGlsZXIgPSBDb21waWxlcjtcbmV4cG9ydHMucHJlY29tcGlsZSA9IHByZWNvbXBpbGU7XG5leHBvcnRzLmNvbXBpbGUgPSBjb21waWxlO1xuLy8gaXN0YW5idWwgaWdub3JlIG5leHRcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG52YXIgX2V4Y2VwdGlvbiA9IHJlcXVpcmUoJy4uL2V4Y2VwdGlvbicpO1xuXG52YXIgX2V4Y2VwdGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9leGNlcHRpb24pO1xuXG52YXIgX3V0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcblxudmFyIF9hc3QgPSByZXF1aXJlKCcuL2FzdCcpO1xuXG52YXIgX2FzdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9hc3QpO1xuXG52YXIgc2xpY2UgPSBbXS5zbGljZTtcblxuZnVuY3Rpb24gQ29tcGlsZXIoKSB7fVxuXG4vLyB0aGUgZm91bmRIZWxwZXIgcmVnaXN0ZXIgd2lsbCBkaXNhbWJpZ3VhdGUgaGVscGVyIGxvb2t1cCBmcm9tIGZpbmRpbmcgYVxuLy8gZnVuY3Rpb24gaW4gYSBjb250ZXh0LiBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgbXVzdGFjaGUgY29tcGF0aWJpbGl0eSwgd2hpY2hcbi8vIHJlcXVpcmVzIHRoYXQgY29udGV4dCBmdW5jdGlvbnMgaW4gYmxvY2tzIGFyZSBldmFsdWF0ZWQgYnkgYmxvY2tIZWxwZXJNaXNzaW5nLFxuLy8gYW5kIHRoZW4gcHJvY2VlZCBhcyBpZiB0aGUgcmVzdWx0aW5nIHZhbHVlIHdhcyBwcm92aWRlZCB0byBibG9ja0hlbHBlck1pc3NpbmcuXG5cbkNvbXBpbGVyLnByb3RvdHlwZSA9IHtcbiAgY29tcGlsZXI6IENvbXBpbGVyLFxuXG4gIGVxdWFsczogZnVuY3Rpb24gZXF1YWxzKG90aGVyKSB7XG4gICAgdmFyIGxlbiA9IHRoaXMub3Bjb2Rlcy5sZW5ndGg7XG4gICAgaWYgKG90aGVyLm9wY29kZXMubGVuZ3RoICE9PSBsZW4pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICB2YXIgb3Bjb2RlID0gdGhpcy5vcGNvZGVzW2ldLFxuICAgICAgICAgIG90aGVyT3Bjb2RlID0gb3RoZXIub3Bjb2Rlc1tpXTtcbiAgICAgIGlmIChvcGNvZGUub3Bjb2RlICE9PSBvdGhlck9wY29kZS5vcGNvZGUgfHwgIWFyZ0VxdWFscyhvcGNvZGUuYXJncywgb3RoZXJPcGNvZGUuYXJncykpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFdlIGtub3cgdGhhdCBsZW5ndGggaXMgdGhlIHNhbWUgYmV0d2VlbiB0aGUgdHdvIGFycmF5cyBiZWNhdXNlIHRoZXkgYXJlIGRpcmVjdGx5IHRpZWRcbiAgICAvLyB0byB0aGUgb3Bjb2RlIGJlaGF2aW9yIGFib3ZlLlxuICAgIGxlbiA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGlmICghdGhpcy5jaGlsZHJlbltpXS5lcXVhbHMob3RoZXIuY2hpbGRyZW5baV0pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcblxuICBndWlkOiAwLFxuXG4gIGNvbXBpbGU6IGZ1bmN0aW9uIGNvbXBpbGUocHJvZ3JhbSwgb3B0aW9ucykge1xuICAgIHRoaXMuc291cmNlTm9kZSA9IFtdO1xuICAgIHRoaXMub3Bjb2RlcyA9IFtdO1xuICAgIHRoaXMuY2hpbGRyZW4gPSBbXTtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMuc3RyaW5nUGFyYW1zID0gb3B0aW9ucy5zdHJpbmdQYXJhbXM7XG4gICAgdGhpcy50cmFja0lkcyA9IG9wdGlvbnMudHJhY2tJZHM7XG5cbiAgICBvcHRpb25zLmJsb2NrUGFyYW1zID0gb3B0aW9ucy5ibG9ja1BhcmFtcyB8fCBbXTtcblxuICAgIG9wdGlvbnMua25vd25IZWxwZXJzID0gX3V0aWxzLmV4dGVuZChPYmplY3QuY3JlYXRlKG51bGwpLCB7XG4gICAgICBoZWxwZXJNaXNzaW5nOiB0cnVlLFxuICAgICAgYmxvY2tIZWxwZXJNaXNzaW5nOiB0cnVlLFxuICAgICAgZWFjaDogdHJ1ZSxcbiAgICAgICdpZic6IHRydWUsXG4gICAgICB1bmxlc3M6IHRydWUsXG4gICAgICAnd2l0aCc6IHRydWUsXG4gICAgICBsb2c6IHRydWUsXG4gICAgICBsb29rdXA6IHRydWVcbiAgICB9LCBvcHRpb25zLmtub3duSGVscGVycyk7XG5cbiAgICByZXR1cm4gdGhpcy5hY2NlcHQocHJvZ3JhbSk7XG4gIH0sXG5cbiAgY29tcGlsZVByb2dyYW06IGZ1bmN0aW9uIGNvbXBpbGVQcm9ncmFtKHByb2dyYW0pIHtcbiAgICB2YXIgY2hpbGRDb21waWxlciA9IG5ldyB0aGlzLmNvbXBpbGVyKCksXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbmV3LWNhcFxuICAgIHJlc3VsdCA9IGNoaWxkQ29tcGlsZXIuY29tcGlsZShwcm9ncmFtLCB0aGlzLm9wdGlvbnMpLFxuICAgICAgICBndWlkID0gdGhpcy5ndWlkKys7XG5cbiAgICB0aGlzLnVzZVBhcnRpYWwgPSB0aGlzLnVzZVBhcnRpYWwgfHwgcmVzdWx0LnVzZVBhcnRpYWw7XG5cbiAgICB0aGlzLmNoaWxkcmVuW2d1aWRdID0gcmVzdWx0O1xuICAgIHRoaXMudXNlRGVwdGhzID0gdGhpcy51c2VEZXB0aHMgfHwgcmVzdWx0LnVzZURlcHRocztcblxuICAgIHJldHVybiBndWlkO1xuICB9LFxuXG4gIGFjY2VwdDogZnVuY3Rpb24gYWNjZXB0KG5vZGUpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogU2FuaXR5IGNvZGUgKi9cbiAgICBpZiAoIXRoaXNbbm9kZS50eXBlXSkge1xuICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1Vua25vd24gdHlwZTogJyArIG5vZGUudHlwZSwgbm9kZSk7XG4gICAgfVxuXG4gICAgdGhpcy5zb3VyY2VOb2RlLnVuc2hpZnQobm9kZSk7XG4gICAgdmFyIHJldCA9IHRoaXNbbm9kZS50eXBlXShub2RlKTtcbiAgICB0aGlzLnNvdXJjZU5vZGUuc2hpZnQoKTtcbiAgICByZXR1cm4gcmV0O1xuICB9LFxuXG4gIFByb2dyYW06IGZ1bmN0aW9uIFByb2dyYW0ocHJvZ3JhbSkge1xuICAgIHRoaXMub3B0aW9ucy5ibG9ja1BhcmFtcy51bnNoaWZ0KHByb2dyYW0uYmxvY2tQYXJhbXMpO1xuXG4gICAgdmFyIGJvZHkgPSBwcm9ncmFtLmJvZHksXG4gICAgICAgIGJvZHlMZW5ndGggPSBib2R5Lmxlbmd0aDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJvZHlMZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5hY2NlcHQoYm9keVtpXSk7XG4gICAgfVxuXG4gICAgdGhpcy5vcHRpb25zLmJsb2NrUGFyYW1zLnNoaWZ0KCk7XG5cbiAgICB0aGlzLmlzU2ltcGxlID0gYm9keUxlbmd0aCA9PT0gMTtcbiAgICB0aGlzLmJsb2NrUGFyYW1zID0gcHJvZ3JhbS5ibG9ja1BhcmFtcyA/IHByb2dyYW0uYmxvY2tQYXJhbXMubGVuZ3RoIDogMDtcblxuICAgIHJldHVybiB0aGlzO1xuICB9LFxuXG4gIEJsb2NrU3RhdGVtZW50OiBmdW5jdGlvbiBCbG9ja1N0YXRlbWVudChibG9jaykge1xuICAgIHRyYW5zZm9ybUxpdGVyYWxUb1BhdGgoYmxvY2spO1xuXG4gICAgdmFyIHByb2dyYW0gPSBibG9jay5wcm9ncmFtLFxuICAgICAgICBpbnZlcnNlID0gYmxvY2suaW52ZXJzZTtcblxuICAgIHByb2dyYW0gPSBwcm9ncmFtICYmIHRoaXMuY29tcGlsZVByb2dyYW0ocHJvZ3JhbSk7XG4gICAgaW52ZXJzZSA9IGludmVyc2UgJiYgdGhpcy5jb21waWxlUHJvZ3JhbShpbnZlcnNlKTtcblxuICAgIHZhciB0eXBlID0gdGhpcy5jbGFzc2lmeVNleHByKGJsb2NrKTtcblxuICAgIGlmICh0eXBlID09PSAnaGVscGVyJykge1xuICAgICAgdGhpcy5oZWxwZXJTZXhwcihibG9jaywgcHJvZ3JhbSwgaW52ZXJzZSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnc2ltcGxlJykge1xuICAgICAgdGhpcy5zaW1wbGVTZXhwcihibG9jayk7XG5cbiAgICAgIC8vIG5vdyB0aGF0IHRoZSBzaW1wbGUgbXVzdGFjaGUgaXMgcmVzb2x2ZWQsIHdlIG5lZWQgdG9cbiAgICAgIC8vIGV2YWx1YXRlIGl0IGJ5IGV4ZWN1dGluZyBgYmxvY2tIZWxwZXJNaXNzaW5nYFxuICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hQcm9ncmFtJywgcHJvZ3JhbSk7XG4gICAgICB0aGlzLm9wY29kZSgncHVzaFByb2dyYW0nLCBpbnZlcnNlKTtcbiAgICAgIHRoaXMub3Bjb2RlKCdlbXB0eUhhc2gnKTtcbiAgICAgIHRoaXMub3Bjb2RlKCdibG9ja1ZhbHVlJywgYmxvY2sucGF0aC5vcmlnaW5hbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYW1iaWd1b3VzU2V4cHIoYmxvY2ssIHByb2dyYW0sIGludmVyc2UpO1xuXG4gICAgICAvLyBub3cgdGhhdCB0aGUgc2ltcGxlIG11c3RhY2hlIGlzIHJlc29sdmVkLCB3ZSBuZWVkIHRvXG4gICAgICAvLyBldmFsdWF0ZSBpdCBieSBleGVjdXRpbmcgYGJsb2NrSGVscGVyTWlzc2luZ2BcbiAgICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIHByb2dyYW0pO1xuICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hQcm9ncmFtJywgaW52ZXJzZSk7XG4gICAgICB0aGlzLm9wY29kZSgnZW1wdHlIYXNoJyk7XG4gICAgICB0aGlzLm9wY29kZSgnYW1iaWd1b3VzQmxvY2tWYWx1ZScpO1xuICAgIH1cblxuICAgIHRoaXMub3Bjb2RlKCdhcHBlbmQnKTtcbiAgfSxcblxuICBEZWNvcmF0b3JCbG9jazogZnVuY3Rpb24gRGVjb3JhdG9yQmxvY2soZGVjb3JhdG9yKSB7XG4gICAgdmFyIHByb2dyYW0gPSBkZWNvcmF0b3IucHJvZ3JhbSAmJiB0aGlzLmNvbXBpbGVQcm9ncmFtKGRlY29yYXRvci5wcm9ncmFtKTtcbiAgICB2YXIgcGFyYW1zID0gdGhpcy5zZXR1cEZ1bGxNdXN0YWNoZVBhcmFtcyhkZWNvcmF0b3IsIHByb2dyYW0sIHVuZGVmaW5lZCksXG4gICAgICAgIHBhdGggPSBkZWNvcmF0b3IucGF0aDtcblxuICAgIHRoaXMudXNlRGVjb3JhdG9ycyA9IHRydWU7XG4gICAgdGhpcy5vcGNvZGUoJ3JlZ2lzdGVyRGVjb3JhdG9yJywgcGFyYW1zLmxlbmd0aCwgcGF0aC5vcmlnaW5hbCk7XG4gIH0sXG5cbiAgUGFydGlhbFN0YXRlbWVudDogZnVuY3Rpb24gUGFydGlhbFN0YXRlbWVudChwYXJ0aWFsKSB7XG4gICAgdGhpcy51c2VQYXJ0aWFsID0gdHJ1ZTtcblxuICAgIHZhciBwcm9ncmFtID0gcGFydGlhbC5wcm9ncmFtO1xuICAgIGlmIChwcm9ncmFtKSB7XG4gICAgICBwcm9ncmFtID0gdGhpcy5jb21waWxlUHJvZ3JhbShwYXJ0aWFsLnByb2dyYW0pO1xuICAgIH1cblxuICAgIHZhciBwYXJhbXMgPSBwYXJ0aWFsLnBhcmFtcztcbiAgICBpZiAocGFyYW1zLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdVbnN1cHBvcnRlZCBudW1iZXIgb2YgcGFydGlhbCBhcmd1bWVudHM6ICcgKyBwYXJhbXMubGVuZ3RoLCBwYXJ0aWFsKTtcbiAgICB9IGVsc2UgaWYgKCFwYXJhbXMubGVuZ3RoKSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmV4cGxpY2l0UGFydGlhbENvbnRleHQpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hMaXRlcmFsJywgJ3VuZGVmaW5lZCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyYW1zLnB1c2goeyB0eXBlOiAnUGF0aEV4cHJlc3Npb24nLCBwYXJ0czogW10sIGRlcHRoOiAwIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBwYXJ0aWFsTmFtZSA9IHBhcnRpYWwubmFtZS5vcmlnaW5hbCxcbiAgICAgICAgaXNEeW5hbWljID0gcGFydGlhbC5uYW1lLnR5cGUgPT09ICdTdWJFeHByZXNzaW9uJztcbiAgICBpZiAoaXNEeW5hbWljKSB7XG4gICAgICB0aGlzLmFjY2VwdChwYXJ0aWFsLm5hbWUpO1xuICAgIH1cblxuICAgIHRoaXMuc2V0dXBGdWxsTXVzdGFjaGVQYXJhbXMocGFydGlhbCwgcHJvZ3JhbSwgdW5kZWZpbmVkLCB0cnVlKTtcblxuICAgIHZhciBpbmRlbnQgPSBwYXJ0aWFsLmluZGVudCB8fCAnJztcbiAgICBpZiAodGhpcy5vcHRpb25zLnByZXZlbnRJbmRlbnQgJiYgaW5kZW50KSB7XG4gICAgICB0aGlzLm9wY29kZSgnYXBwZW5kQ29udGVudCcsIGluZGVudCk7XG4gICAgICBpbmRlbnQgPSAnJztcbiAgICB9XG5cbiAgICB0aGlzLm9wY29kZSgnaW52b2tlUGFydGlhbCcsIGlzRHluYW1pYywgcGFydGlhbE5hbWUsIGluZGVudCk7XG4gICAgdGhpcy5vcGNvZGUoJ2FwcGVuZCcpO1xuICB9LFxuICBQYXJ0aWFsQmxvY2tTdGF0ZW1lbnQ6IGZ1bmN0aW9uIFBhcnRpYWxCbG9ja1N0YXRlbWVudChwYXJ0aWFsQmxvY2spIHtcbiAgICB0aGlzLlBhcnRpYWxTdGF0ZW1lbnQocGFydGlhbEJsb2NrKTtcbiAgfSxcblxuICBNdXN0YWNoZVN0YXRlbWVudDogZnVuY3Rpb24gTXVzdGFjaGVTdGF0ZW1lbnQobXVzdGFjaGUpIHtcbiAgICB0aGlzLlN1YkV4cHJlc3Npb24obXVzdGFjaGUpO1xuXG4gICAgaWYgKG11c3RhY2hlLmVzY2FwZWQgJiYgIXRoaXMub3B0aW9ucy5ub0VzY2FwZSkge1xuICAgICAgdGhpcy5vcGNvZGUoJ2FwcGVuZEVzY2FwZWQnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGNvZGUoJ2FwcGVuZCcpO1xuICAgIH1cbiAgfSxcbiAgRGVjb3JhdG9yOiBmdW5jdGlvbiBEZWNvcmF0b3IoZGVjb3JhdG9yKSB7XG4gICAgdGhpcy5EZWNvcmF0b3JCbG9jayhkZWNvcmF0b3IpO1xuICB9LFxuXG4gIENvbnRlbnRTdGF0ZW1lbnQ6IGZ1bmN0aW9uIENvbnRlbnRTdGF0ZW1lbnQoY29udGVudCkge1xuICAgIGlmIChjb250ZW50LnZhbHVlKSB7XG4gICAgICB0aGlzLm9wY29kZSgnYXBwZW5kQ29udGVudCcsIGNvbnRlbnQudmFsdWUpO1xuICAgIH1cbiAgfSxcblxuICBDb21tZW50U3RhdGVtZW50OiBmdW5jdGlvbiBDb21tZW50U3RhdGVtZW50KCkge30sXG5cbiAgU3ViRXhwcmVzc2lvbjogZnVuY3Rpb24gU3ViRXhwcmVzc2lvbihzZXhwcikge1xuICAgIHRyYW5zZm9ybUxpdGVyYWxUb1BhdGgoc2V4cHIpO1xuICAgIHZhciB0eXBlID0gdGhpcy5jbGFzc2lmeVNleHByKHNleHByKTtcblxuICAgIGlmICh0eXBlID09PSAnc2ltcGxlJykge1xuICAgICAgdGhpcy5zaW1wbGVTZXhwcihzZXhwcik7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnaGVscGVyJykge1xuICAgICAgdGhpcy5oZWxwZXJTZXhwcihzZXhwcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYW1iaWd1b3VzU2V4cHIoc2V4cHIpO1xuICAgIH1cbiAgfSxcbiAgYW1iaWd1b3VzU2V4cHI6IGZ1bmN0aW9uIGFtYmlndW91c1NleHByKHNleHByLCBwcm9ncmFtLCBpbnZlcnNlKSB7XG4gICAgdmFyIHBhdGggPSBzZXhwci5wYXRoLFxuICAgICAgICBuYW1lID0gcGF0aC5wYXJ0c1swXSxcbiAgICAgICAgaXNCbG9jayA9IHByb2dyYW0gIT0gbnVsbCB8fCBpbnZlcnNlICE9IG51bGw7XG5cbiAgICB0aGlzLm9wY29kZSgnZ2V0Q29udGV4dCcsIHBhdGguZGVwdGgpO1xuXG4gICAgdGhpcy5vcGNvZGUoJ3B1c2hQcm9ncmFtJywgcHJvZ3JhbSk7XG4gICAgdGhpcy5vcGNvZGUoJ3B1c2hQcm9ncmFtJywgaW52ZXJzZSk7XG5cbiAgICBwYXRoLnN0cmljdCA9IHRydWU7XG4gICAgdGhpcy5hY2NlcHQocGF0aCk7XG5cbiAgICB0aGlzLm9wY29kZSgnaW52b2tlQW1iaWd1b3VzJywgbmFtZSwgaXNCbG9jayk7XG4gIH0sXG5cbiAgc2ltcGxlU2V4cHI6IGZ1bmN0aW9uIHNpbXBsZVNleHByKHNleHByKSB7XG4gICAgdmFyIHBhdGggPSBzZXhwci5wYXRoO1xuICAgIHBhdGguc3RyaWN0ID0gdHJ1ZTtcbiAgICB0aGlzLmFjY2VwdChwYXRoKTtcbiAgICB0aGlzLm9wY29kZSgncmVzb2x2ZVBvc3NpYmxlTGFtYmRhJyk7XG4gIH0sXG5cbiAgaGVscGVyU2V4cHI6IGZ1bmN0aW9uIGhlbHBlclNleHByKHNleHByLCBwcm9ncmFtLCBpbnZlcnNlKSB7XG4gICAgdmFyIHBhcmFtcyA9IHRoaXMuc2V0dXBGdWxsTXVzdGFjaGVQYXJhbXMoc2V4cHIsIHByb2dyYW0sIGludmVyc2UpLFxuICAgICAgICBwYXRoID0gc2V4cHIucGF0aCxcbiAgICAgICAgbmFtZSA9IHBhdGgucGFydHNbMF07XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmtub3duSGVscGVyc1tuYW1lXSkge1xuICAgICAgdGhpcy5vcGNvZGUoJ2ludm9rZUtub3duSGVscGVyJywgcGFyYW1zLmxlbmd0aCwgbmFtZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm9wdGlvbnMua25vd25IZWxwZXJzT25seSkge1xuICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1lvdSBzcGVjaWZpZWQga25vd25IZWxwZXJzT25seSwgYnV0IHVzZWQgdGhlIHVua25vd24gaGVscGVyICcgKyBuYW1lLCBzZXhwcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhdGguc3RyaWN0ID0gdHJ1ZTtcbiAgICAgIHBhdGguZmFsc3kgPSB0cnVlO1xuXG4gICAgICB0aGlzLmFjY2VwdChwYXRoKTtcbiAgICAgIHRoaXMub3Bjb2RlKCdpbnZva2VIZWxwZXInLCBwYXJhbXMubGVuZ3RoLCBwYXRoLm9yaWdpbmFsLCBfYXN0MlsnZGVmYXVsdCddLmhlbHBlcnMuc2ltcGxlSWQocGF0aCkpO1xuICAgIH1cbiAgfSxcblxuICBQYXRoRXhwcmVzc2lvbjogZnVuY3Rpb24gUGF0aEV4cHJlc3Npb24ocGF0aCkge1xuICAgIHRoaXMuYWRkRGVwdGgocGF0aC5kZXB0aCk7XG4gICAgdGhpcy5vcGNvZGUoJ2dldENvbnRleHQnLCBwYXRoLmRlcHRoKTtcblxuICAgIHZhciBuYW1lID0gcGF0aC5wYXJ0c1swXSxcbiAgICAgICAgc2NvcGVkID0gX2FzdDJbJ2RlZmF1bHQnXS5oZWxwZXJzLnNjb3BlZElkKHBhdGgpLFxuICAgICAgICBibG9ja1BhcmFtSWQgPSAhcGF0aC5kZXB0aCAmJiAhc2NvcGVkICYmIHRoaXMuYmxvY2tQYXJhbUluZGV4KG5hbWUpO1xuXG4gICAgaWYgKGJsb2NrUGFyYW1JZCkge1xuICAgICAgdGhpcy5vcGNvZGUoJ2xvb2t1cEJsb2NrUGFyYW0nLCBibG9ja1BhcmFtSWQsIHBhdGgucGFydHMpO1xuICAgIH0gZWxzZSBpZiAoIW5hbWUpIHtcbiAgICAgIC8vIENvbnRleHQgcmVmZXJlbmNlLCBpLmUuIGB7e2ZvbyAufX1gIG9yIGB7e2ZvbyAuLn19YFxuICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hDb250ZXh0Jyk7XG4gICAgfSBlbHNlIGlmIChwYXRoLmRhdGEpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5kYXRhID0gdHJ1ZTtcbiAgICAgIHRoaXMub3Bjb2RlKCdsb29rdXBEYXRhJywgcGF0aC5kZXB0aCwgcGF0aC5wYXJ0cywgcGF0aC5zdHJpY3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wY29kZSgnbG9va3VwT25Db250ZXh0JywgcGF0aC5wYXJ0cywgcGF0aC5mYWxzeSwgcGF0aC5zdHJpY3QsIHNjb3BlZCk7XG4gICAgfVxuICB9LFxuXG4gIFN0cmluZ0xpdGVyYWw6IGZ1bmN0aW9uIFN0cmluZ0xpdGVyYWwoc3RyaW5nKSB7XG4gICAgdGhpcy5vcGNvZGUoJ3B1c2hTdHJpbmcnLCBzdHJpbmcudmFsdWUpO1xuICB9LFxuXG4gIE51bWJlckxpdGVyYWw6IGZ1bmN0aW9uIE51bWJlckxpdGVyYWwobnVtYmVyKSB7XG4gICAgdGhpcy5vcGNvZGUoJ3B1c2hMaXRlcmFsJywgbnVtYmVyLnZhbHVlKTtcbiAgfSxcblxuICBCb29sZWFuTGl0ZXJhbDogZnVuY3Rpb24gQm9vbGVhbkxpdGVyYWwoYm9vbCkge1xuICAgIHRoaXMub3Bjb2RlKCdwdXNoTGl0ZXJhbCcsIGJvb2wudmFsdWUpO1xuICB9LFxuXG4gIFVuZGVmaW5lZExpdGVyYWw6IGZ1bmN0aW9uIFVuZGVmaW5lZExpdGVyYWwoKSB7XG4gICAgdGhpcy5vcGNvZGUoJ3B1c2hMaXRlcmFsJywgJ3VuZGVmaW5lZCcpO1xuICB9LFxuXG4gIE51bGxMaXRlcmFsOiBmdW5jdGlvbiBOdWxsTGl0ZXJhbCgpIHtcbiAgICB0aGlzLm9wY29kZSgncHVzaExpdGVyYWwnLCAnbnVsbCcpO1xuICB9LFxuXG4gIEhhc2g6IGZ1bmN0aW9uIEhhc2goaGFzaCkge1xuICAgIHZhciBwYWlycyA9IGhhc2gucGFpcnMsXG4gICAgICAgIGkgPSAwLFxuICAgICAgICBsID0gcGFpcnMubGVuZ3RoO1xuXG4gICAgdGhpcy5vcGNvZGUoJ3B1c2hIYXNoJyk7XG5cbiAgICBmb3IgKDsgaSA8IGw7IGkrKykge1xuICAgICAgdGhpcy5wdXNoUGFyYW0ocGFpcnNbaV0udmFsdWUpO1xuICAgIH1cbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICB0aGlzLm9wY29kZSgnYXNzaWduVG9IYXNoJywgcGFpcnNbaV0ua2V5KTtcbiAgICB9XG4gICAgdGhpcy5vcGNvZGUoJ3BvcEhhc2gnKTtcbiAgfSxcblxuICAvLyBIRUxQRVJTXG4gIG9wY29kZTogZnVuY3Rpb24gb3Bjb2RlKG5hbWUpIHtcbiAgICB0aGlzLm9wY29kZXMucHVzaCh7XG4gICAgICBvcGNvZGU6IG5hbWUsXG4gICAgICBhcmdzOiBzbGljZS5jYWxsKGFyZ3VtZW50cywgMSksXG4gICAgICBsb2M6IHRoaXMuc291cmNlTm9kZVswXS5sb2NcbiAgICB9KTtcbiAgfSxcblxuICBhZGREZXB0aDogZnVuY3Rpb24gYWRkRGVwdGgoZGVwdGgpIHtcbiAgICBpZiAoIWRlcHRoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy51c2VEZXB0aHMgPSB0cnVlO1xuICB9LFxuXG4gIGNsYXNzaWZ5U2V4cHI6IGZ1bmN0aW9uIGNsYXNzaWZ5U2V4cHIoc2V4cHIpIHtcbiAgICB2YXIgaXNTaW1wbGUgPSBfYXN0MlsnZGVmYXVsdCddLmhlbHBlcnMuc2ltcGxlSWQoc2V4cHIucGF0aCk7XG5cbiAgICB2YXIgaXNCbG9ja1BhcmFtID0gaXNTaW1wbGUgJiYgISF0aGlzLmJsb2NrUGFyYW1JbmRleChzZXhwci5wYXRoLnBhcnRzWzBdKTtcblxuICAgIC8vIGEgbXVzdGFjaGUgaXMgYW4gZWxpZ2libGUgaGVscGVyIGlmOlxuICAgIC8vICogaXRzIGlkIGlzIHNpbXBsZSAoYSBzaW5nbGUgcGFydCwgbm90IGB0aGlzYCBvciBgLi5gKVxuICAgIHZhciBpc0hlbHBlciA9ICFpc0Jsb2NrUGFyYW0gJiYgX2FzdDJbJ2RlZmF1bHQnXS5oZWxwZXJzLmhlbHBlckV4cHJlc3Npb24oc2V4cHIpO1xuXG4gICAgLy8gaWYgYSBtdXN0YWNoZSBpcyBhbiBlbGlnaWJsZSBoZWxwZXIgYnV0IG5vdCBhIGRlZmluaXRlXG4gICAgLy8gaGVscGVyLCBpdCBpcyBhbWJpZ3VvdXMsIGFuZCB3aWxsIGJlIHJlc29sdmVkIGluIGEgbGF0ZXJcbiAgICAvLyBwYXNzIG9yIGF0IHJ1bnRpbWUuXG4gICAgdmFyIGlzRWxpZ2libGUgPSAhaXNCbG9ja1BhcmFtICYmIChpc0hlbHBlciB8fCBpc1NpbXBsZSk7XG5cbiAgICAvLyBpZiBhbWJpZ3VvdXMsIHdlIGNhbiBwb3NzaWJseSByZXNvbHZlIHRoZSBhbWJpZ3VpdHkgbm93XG4gICAgLy8gQW4gZWxpZ2libGUgaGVscGVyIGlzIG9uZSB0aGF0IGRvZXMgbm90IGhhdmUgYSBjb21wbGV4IHBhdGgsIGkuZS4gYHRoaXMuZm9vYCwgYC4uL2Zvb2AgZXRjLlxuICAgIGlmIChpc0VsaWdpYmxlICYmICFpc0hlbHBlcikge1xuICAgICAgdmFyIF9uYW1lID0gc2V4cHIucGF0aC5wYXJ0c1swXSxcbiAgICAgICAgICBvcHRpb25zID0gdGhpcy5vcHRpb25zO1xuICAgICAgaWYgKG9wdGlvbnMua25vd25IZWxwZXJzW19uYW1lXSkge1xuICAgICAgICBpc0hlbHBlciA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKG9wdGlvbnMua25vd25IZWxwZXJzT25seSkge1xuICAgICAgICBpc0VsaWdpYmxlID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGlzSGVscGVyKSB7XG4gICAgICByZXR1cm4gJ2hlbHBlcic7XG4gICAgfSBlbHNlIGlmIChpc0VsaWdpYmxlKSB7XG4gICAgICByZXR1cm4gJ2FtYmlndW91cyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnc2ltcGxlJztcbiAgICB9XG4gIH0sXG5cbiAgcHVzaFBhcmFtczogZnVuY3Rpb24gcHVzaFBhcmFtcyhwYXJhbXMpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgbCA9IHBhcmFtcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIHRoaXMucHVzaFBhcmFtKHBhcmFtc1tpXSk7XG4gICAgfVxuICB9LFxuXG4gIHB1c2hQYXJhbTogZnVuY3Rpb24gcHVzaFBhcmFtKHZhbCkge1xuICAgIHZhciB2YWx1ZSA9IHZhbC52YWx1ZSAhPSBudWxsID8gdmFsLnZhbHVlIDogdmFsLm9yaWdpbmFsIHx8ICcnO1xuXG4gICAgaWYgKHRoaXMuc3RyaW5nUGFyYW1zKSB7XG4gICAgICBpZiAodmFsdWUucmVwbGFjZSkge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL14oXFwuP1xcLlxcLykqL2csICcnKS5yZXBsYWNlKC9cXC8vZywgJy4nKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbC5kZXB0aCkge1xuICAgICAgICB0aGlzLmFkZERlcHRoKHZhbC5kZXB0aCk7XG4gICAgICB9XG4gICAgICB0aGlzLm9wY29kZSgnZ2V0Q29udGV4dCcsIHZhbC5kZXB0aCB8fCAwKTtcbiAgICAgIHRoaXMub3Bjb2RlKCdwdXNoU3RyaW5nUGFyYW0nLCB2YWx1ZSwgdmFsLnR5cGUpO1xuXG4gICAgICBpZiAodmFsLnR5cGUgPT09ICdTdWJFeHByZXNzaW9uJykge1xuICAgICAgICAvLyBTdWJFeHByZXNzaW9ucyBnZXQgZXZhbHVhdGVkIGFuZCBwYXNzZWQgaW5cbiAgICAgICAgLy8gaW4gc3RyaW5nIHBhcmFtcyBtb2RlLlxuICAgICAgICB0aGlzLmFjY2VwdCh2YWwpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy50cmFja0lkcykge1xuICAgICAgICB2YXIgYmxvY2tQYXJhbUluZGV4ID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAodmFsLnBhcnRzICYmICFfYXN0MlsnZGVmYXVsdCddLmhlbHBlcnMuc2NvcGVkSWQodmFsKSAmJiAhdmFsLmRlcHRoKSB7XG4gICAgICAgICAgYmxvY2tQYXJhbUluZGV4ID0gdGhpcy5ibG9ja1BhcmFtSW5kZXgodmFsLnBhcnRzWzBdKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYmxvY2tQYXJhbUluZGV4KSB7XG4gICAgICAgICAgdmFyIGJsb2NrUGFyYW1DaGlsZCA9IHZhbC5wYXJ0cy5zbGljZSgxKS5qb2luKCcuJyk7XG4gICAgICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hJZCcsICdCbG9ja1BhcmFtJywgYmxvY2tQYXJhbUluZGV4LCBibG9ja1BhcmFtQ2hpbGQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhbHVlID0gdmFsLm9yaWdpbmFsIHx8IHZhbHVlO1xuICAgICAgICAgIGlmICh2YWx1ZS5yZXBsYWNlKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL150aGlzKD86XFwufCQpLywgJycpLnJlcGxhY2UoL15cXC5cXC8vLCAnJykucmVwbGFjZSgvXlxcLiQvLCAnJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5vcGNvZGUoJ3B1c2hJZCcsIHZhbC50eXBlLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuYWNjZXB0KHZhbCk7XG4gICAgfVxuICB9LFxuXG4gIHNldHVwRnVsbE11c3RhY2hlUGFyYW1zOiBmdW5jdGlvbiBzZXR1cEZ1bGxNdXN0YWNoZVBhcmFtcyhzZXhwciwgcHJvZ3JhbSwgaW52ZXJzZSwgb21pdEVtcHR5KSB7XG4gICAgdmFyIHBhcmFtcyA9IHNleHByLnBhcmFtcztcbiAgICB0aGlzLnB1c2hQYXJhbXMocGFyYW1zKTtcblxuICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIHByb2dyYW0pO1xuICAgIHRoaXMub3Bjb2RlKCdwdXNoUHJvZ3JhbScsIGludmVyc2UpO1xuXG4gICAgaWYgKHNleHByLmhhc2gpIHtcbiAgICAgIHRoaXMuYWNjZXB0KHNleHByLmhhc2gpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wY29kZSgnZW1wdHlIYXNoJywgb21pdEVtcHR5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyYW1zO1xuICB9LFxuXG4gIGJsb2NrUGFyYW1JbmRleDogZnVuY3Rpb24gYmxvY2tQYXJhbUluZGV4KG5hbWUpIHtcbiAgICBmb3IgKHZhciBkZXB0aCA9IDAsIGxlbiA9IHRoaXMub3B0aW9ucy5ibG9ja1BhcmFtcy5sZW5ndGg7IGRlcHRoIDwgbGVuOyBkZXB0aCsrKSB7XG4gICAgICB2YXIgYmxvY2tQYXJhbXMgPSB0aGlzLm9wdGlvbnMuYmxvY2tQYXJhbXNbZGVwdGhdLFxuICAgICAgICAgIHBhcmFtID0gYmxvY2tQYXJhbXMgJiYgX3V0aWxzLmluZGV4T2YoYmxvY2tQYXJhbXMsIG5hbWUpO1xuICAgICAgaWYgKGJsb2NrUGFyYW1zICYmIHBhcmFtID49IDApIHtcbiAgICAgICAgcmV0dXJuIFtkZXB0aCwgcGFyYW1dO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gcHJlY29tcGlsZShpbnB1dCwgb3B0aW9ucywgZW52KSB7XG4gIGlmIChpbnB1dCA9PSBudWxsIHx8IHR5cGVvZiBpbnB1dCAhPT0gJ3N0cmluZycgJiYgaW5wdXQudHlwZSAhPT0gJ1Byb2dyYW0nKSB7XG4gICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ1lvdSBtdXN0IHBhc3MgYSBzdHJpbmcgb3IgSGFuZGxlYmFycyBBU1QgdG8gSGFuZGxlYmFycy5wcmVjb21waWxlLiBZb3UgcGFzc2VkICcgKyBpbnB1dCk7XG4gIH1cblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgaWYgKCEoJ2RhdGEnIGluIG9wdGlvbnMpKSB7XG4gICAgb3B0aW9ucy5kYXRhID0gdHJ1ZTtcbiAgfVxuICBpZiAob3B0aW9ucy5jb21wYXQpIHtcbiAgICBvcHRpb25zLnVzZURlcHRocyA9IHRydWU7XG4gIH1cblxuICB2YXIgYXN0ID0gZW52LnBhcnNlKGlucHV0LCBvcHRpb25zKSxcbiAgICAgIGVudmlyb25tZW50ID0gbmV3IGVudi5Db21waWxlcigpLmNvbXBpbGUoYXN0LCBvcHRpb25zKTtcbiAgcmV0dXJuIG5ldyBlbnYuSmF2YVNjcmlwdENvbXBpbGVyKCkuY29tcGlsZShlbnZpcm9ubWVudCwgb3B0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIGNvbXBpbGUoaW5wdXQsIG9wdGlvbnMsIGVudikge1xuICBpZiAob3B0aW9ucyA9PT0gdW5kZWZpbmVkKSBvcHRpb25zID0ge307XG5cbiAgaWYgKGlucHV0ID09IG51bGwgfHwgdHlwZW9mIGlucHV0ICE9PSAnc3RyaW5nJyAmJiBpbnB1dC50eXBlICE9PSAnUHJvZ3JhbScpIHtcbiAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgnWW91IG11c3QgcGFzcyBhIHN0cmluZyBvciBIYW5kbGViYXJzIEFTVCB0byBIYW5kbGViYXJzLmNvbXBpbGUuIFlvdSBwYXNzZWQgJyArIGlucHV0KTtcbiAgfVxuXG4gIG9wdGlvbnMgPSBfdXRpbHMuZXh0ZW5kKHt9LCBvcHRpb25zKTtcbiAgaWYgKCEoJ2RhdGEnIGluIG9wdGlvbnMpKSB7XG4gICAgb3B0aW9ucy5kYXRhID0gdHJ1ZTtcbiAgfVxuICBpZiAob3B0aW9ucy5jb21wYXQpIHtcbiAgICBvcHRpb25zLnVzZURlcHRocyA9IHRydWU7XG4gIH1cblxuICB2YXIgY29tcGlsZWQgPSB1bmRlZmluZWQ7XG5cbiAgZnVuY3Rpb24gY29tcGlsZUlucHV0KCkge1xuICAgIHZhciBhc3QgPSBlbnYucGFyc2UoaW5wdXQsIG9wdGlvbnMpLFxuICAgICAgICBlbnZpcm9ubWVudCA9IG5ldyBlbnYuQ29tcGlsZXIoKS5jb21waWxlKGFzdCwgb3B0aW9ucyksXG4gICAgICAgIHRlbXBsYXRlU3BlYyA9IG5ldyBlbnYuSmF2YVNjcmlwdENvbXBpbGVyKCkuY29tcGlsZShlbnZpcm9ubWVudCwgb3B0aW9ucywgdW5kZWZpbmVkLCB0cnVlKTtcbiAgICByZXR1cm4gZW52LnRlbXBsYXRlKHRlbXBsYXRlU3BlYyk7XG4gIH1cblxuICAvLyBUZW1wbGF0ZSBpcyBvbmx5IGNvbXBpbGVkIG9uIGZpcnN0IHVzZSBhbmQgY2FjaGVkIGFmdGVyIHRoYXQgcG9pbnQuXG4gIGZ1bmN0aW9uIHJldChjb250ZXh0LCBleGVjT3B0aW9ucykge1xuICAgIGlmICghY29tcGlsZWQpIHtcbiAgICAgIGNvbXBpbGVkID0gY29tcGlsZUlucHV0KCk7XG4gICAgfVxuICAgIHJldHVybiBjb21waWxlZC5jYWxsKHRoaXMsIGNvbnRleHQsIGV4ZWNPcHRpb25zKTtcbiAgfVxuICByZXQuX3NldHVwID0gZnVuY3Rpb24gKHNldHVwT3B0aW9ucykge1xuICAgIGlmICghY29tcGlsZWQpIHtcbiAgICAgIGNvbXBpbGVkID0gY29tcGlsZUlucHV0KCk7XG4gICAgfVxuICAgIHJldHVybiBjb21waWxlZC5fc2V0dXAoc2V0dXBPcHRpb25zKTtcbiAgfTtcbiAgcmV0Ll9jaGlsZCA9IGZ1bmN0aW9uIChpLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7XG4gICAgaWYgKCFjb21waWxlZCkge1xuICAgICAgY29tcGlsZWQgPSBjb21waWxlSW5wdXQoKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbXBpbGVkLl9jaGlsZChpLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKTtcbiAgfTtcbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gYXJnRXF1YWxzKGEsIGIpIHtcbiAgaWYgKGEgPT09IGIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmIChfdXRpbHMuaXNBcnJheShhKSAmJiBfdXRpbHMuaXNBcnJheShiKSAmJiBhLmxlbmd0aCA9PT0gYi5sZW5ndGgpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICghYXJnRXF1YWxzKGFbaV0sIGJbaV0pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtTGl0ZXJhbFRvUGF0aChzZXhwcikge1xuICBpZiAoIXNleHByLnBhdGgucGFydHMpIHtcbiAgICB2YXIgbGl0ZXJhbCA9IHNleHByLnBhdGg7XG4gICAgLy8gQ2FzdGluZyB0byBzdHJpbmcgaGVyZSB0byBtYWtlIGZhbHNlIGFuZCAwIGxpdGVyYWwgdmFsdWVzIHBsYXkgbmljZWx5IHdpdGggdGhlIHJlc3RcbiAgICAvLyBvZiB0aGUgc3lzdGVtLlxuICAgIHNleHByLnBhdGggPSB7XG4gICAgICB0eXBlOiAnUGF0aEV4cHJlc3Npb24nLFxuICAgICAgZGF0YTogZmFsc2UsXG4gICAgICBkZXB0aDogMCxcbiAgICAgIHBhcnRzOiBbbGl0ZXJhbC5vcmlnaW5hbCArICcnXSxcbiAgICAgIG9yaWdpbmFsOiBsaXRlcmFsLm9yaWdpbmFsICsgJycsXG4gICAgICBsb2M6IGxpdGVyYWwubG9jXG4gICAgfTtcbiAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJOdmJYQnBiR1Z5TDJOdmJYQnBiR1Z5TG1weklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN096czdPenM3T3pzN096dDVRa0ZGYzBJc1kwRkJZenM3T3p0eFFrRkRTeXhWUVVGVk96dHRRa0ZEYmtNc1QwRkJUenM3T3p0QlFVVjJRaXhKUVVGTkxFdEJRVXNzUjBGQlJ5eEZRVUZGTEVOQlFVTXNTMEZCU3l4RFFVRkRPenRCUVVWb1FpeFRRVUZUTEZGQlFWRXNSMEZCUnl4RlFVRkZPenM3T3pzN08wRkJUemRDTEZGQlFWRXNRMEZCUXl4VFFVRlRMRWRCUVVjN1FVRkRia0lzVlVGQlVTeEZRVUZGTEZGQlFWRTdPMEZCUld4Q0xGRkJRVTBzUlVGQlJTeG5Ra0ZCVXl4TFFVRkxMRVZCUVVVN1FVRkRkRUlzVVVGQlNTeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFTkJRVU03UVVGRE9VSXNVVUZCU1N4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUzBGQlN5eEhRVUZITEVWQlFVVTdRVUZEYUVNc1lVRkJUeXhMUVVGTExFTkJRVU03UzBGRFpEczdRVUZGUkN4VFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NSMEZCUnl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8wRkJRelZDTEZWQlFVa3NUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETzFWQlF6RkNMRmRCUVZjc1IwRkJSeXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTJwRExGVkJRMFVzVFVGQlRTeERRVUZETEUxQlFVMHNTMEZCU3l4WFFVRlhMRU5CUVVNc1RVRkJUU3hKUVVOd1F5eERRVUZETEZOQlFWTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hGUVVGRkxGZEJRVmNzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZEZWtNN1FVRkRRU3hsUVVGUExFdEJRVXNzUTBGQlF6dFBRVU5rTzB0QlEwWTdPenM3UVVGSlJDeFBRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU03UVVGRE0wSXNVMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVkQlFVY3NSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRCUVVNMVFpeFZRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTzBGQlF5OURMR1ZCUVU4c1MwRkJTeXhEUVVGRE8wOUJRMlE3UzBGRFJqczdRVUZGUkN4WFFVRlBMRWxCUVVrc1EwRkJRenRIUVVOaU96dEJRVVZFTEUxQlFVa3NSVUZCUlN4RFFVRkRPenRCUVVWUUxGTkJRVThzUlVGQlJTeHBRa0ZCVXl4UFFVRlBMRVZCUVVVc1QwRkJUeXhGUVVGRk8wRkJRMnhETEZGQlFVa3NRMEZCUXl4VlFVRlZMRWRCUVVjc1JVRkJSU3hEUVVGRE8wRkJRM0pDTEZGQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1JVRkJSU3hEUVVGRE8wRkJRMnhDTEZGQlFVa3NRMEZCUXl4UlFVRlJMRWRCUVVjc1JVRkJSU3hEUVVGRE8wRkJRMjVDTEZGQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1QwRkJUeXhEUVVGRE8wRkJRM1pDTEZGQlFVa3NRMEZCUXl4WlFVRlpMRWRCUVVjc1QwRkJUeXhEUVVGRExGbEJRVmtzUTBGQlF6dEJRVU42UXl4UlFVRkpMRU5CUVVNc1VVRkJVU3hIUVVGSExFOUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTTdPMEZCUldwRExGZEJRVThzUTBGQlF5eFhRVUZYTEVkQlFVY3NUMEZCVHl4RFFVRkRMRmRCUVZjc1NVRkJTU3hGUVVGRkxFTkJRVU03TzBGQlJXaEVMRmRCUVU4c1EwRkJReXhaUVVGWkxFZEJRVWNzWTBGRGNrSXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGRGJrSTdRVUZEUlN4dFFrRkJZU3hGUVVGRkxFbEJRVWs3UVVGRGJrSXNkMEpCUVd0Q0xFVkJRVVVzU1VGQlNUdEJRVU40UWl4VlFVRkpMRVZCUVVVc1NVRkJTVHRCUVVOV0xGbEJRVWtzU1VGQlNUdEJRVU5TTEZsQlFVMHNSVUZCUlN4SlFVRkpPMEZCUTFvc1kwRkJUU3hKUVVGSk8wRkJRMVlzVTBGQlJ5eEZRVUZGTEVsQlFVazdRVUZEVkN4WlFVRk5MRVZCUVVVc1NVRkJTVHRMUVVOaUxFVkJRMFFzVDBGQlR5eERRVUZETEZsQlFWa3NRMEZEY2tJc1EwRkJRenM3UVVGRlJpeFhRVUZQTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03UjBGRE4wSTdPMEZCUlVRc1owSkJRV01zUlVGQlJTeDNRa0ZCVXl4UFFVRlBMRVZCUVVVN1FVRkRhRU1zVVVGQlNTeGhRVUZoTEVkQlFVY3NTVUZCU1N4SlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRk96dEJRVU55UXl4VlFVRk5MRWRCUVVjc1lVRkJZU3hEUVVGRExFOUJRVThzUTBGQlF5eFBRVUZQTEVWQlFVVXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJRenRSUVVOeVJDeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRE96dEJRVVZ5UWl4UlFVRkpMRU5CUVVNc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF5eFZRVUZWTEVsQlFVa3NUVUZCVFN4RFFVRkRMRlZCUVZVc1EwRkJRenM3UVVGRmRrUXNVVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eE5RVUZOTEVOQlFVTTdRVUZETjBJc1VVRkJTU3hEUVVGRExGTkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNVMEZCVXl4SlFVRkpMRTFCUVUwc1EwRkJReXhUUVVGVExFTkJRVU03TzBGQlJYQkVMRmRCUVU4c1NVRkJTU3hEUVVGRE8wZEJRMkk3TzBGQlJVUXNVVUZCVFN4RlFVRkZMR2RDUVVGVExFbEJRVWtzUlVGQlJUczdRVUZGY2tJc1VVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVN1FVRkRjRUlzV1VGQlRTd3lRa0ZCWXl4blFrRkJaMElzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE8wdEJRM3BFT3p0QlFVVkVMRkZCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMEZCUXpsQ0xGRkJRVWtzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdRVUZEYUVNc1VVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXp0QlFVTjRRaXhYUVVGUExFZEJRVWNzUTBGQlF6dEhRVU5hT3p0QlFVVkVMRk5CUVU4c1JVRkJSU3hwUWtGQlV5eFBRVUZQTEVWQlFVVTdRVUZEZWtJc1VVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFhRVUZYTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTlCUVU4c1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF6czdRVUZGZEVRc1VVRkJTU3hKUVVGSkxFZEJRVWNzVDBGQlR5eERRVUZETEVsQlFVazdVVUZEY2tJc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTTdRVUZETTBJc1UwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRlZCUVZVc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdEJRVU51UXl4VlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMHRCUTNSQ096dEJRVVZFTEZGQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1YwRkJWeXhEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZET3p0QlFVVnFReXhSUVVGSkxFTkJRVU1zVVVGQlVTeEhRVUZITEZWQlFWVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1FVRkRha01zVVVGQlNTeERRVUZETEZkQlFWY3NSMEZCUnl4UFFVRlBMRU5CUVVNc1YwRkJWeXhIUVVGSExFOUJRVThzUTBGQlF5eFhRVUZYTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJRenM3UVVGRmVFVXNWMEZCVHl4SlFVRkpMRU5CUVVNN1IwRkRZanM3UVVGRlJDeG5Ra0ZCWXl4RlFVRkZMSGRDUVVGVExFdEJRVXNzUlVGQlJUdEJRVU01UWl3d1FrRkJjMElzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXpzN1FVRkZPVUlzVVVGQlNTeFBRVUZQTEVkQlFVY3NTMEZCU3l4RFFVRkRMRTlCUVU4N1VVRkRla0lzVDBGQlR5eEhRVUZITEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNN08wRkJSVEZDTEZkQlFVOHNSMEZCUnl4UFFVRlBMRWxCUVVrc1NVRkJTU3hEUVVGRExHTkJRV01zUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0QlFVTnNSQ3hYUVVGUExFZEJRVWNzVDBGQlR5eEpRVUZKTEVsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03TzBGQlJXeEVMRkZCUVVrc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eGhRVUZoTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN08wRkJSWEpETEZGQlFVa3NTVUZCU1N4TFFVRkxMRkZCUVZFc1JVRkJSVHRCUVVOeVFpeFZRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRXRCUVVzc1JVRkJSU3hQUVVGUExFVkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTTdTMEZETTBNc1RVRkJUU3hKUVVGSkxFbEJRVWtzUzBGQlN5eFJRVUZSTEVWQlFVVTdRVUZETlVJc1ZVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXpzN096dEJRVWw0UWl4VlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExHRkJRV0VzUlVGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXp0QlFVTndReXhWUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEdGQlFXRXNSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenRCUVVOd1F5eFZRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRE8wRkJRM3BDTEZWQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1dVRkJXU3hGUVVGRkxFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1MwRkRhRVFzVFVGQlRUdEJRVU5NTEZWQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1MwRkJTeXhGUVVGRkxFOUJRVThzUlVGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXpzN096dEJRVWszUXl4VlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExHRkJRV0VzUlVGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXp0QlFVTndReXhWUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEdGQlFXRXNSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenRCUVVOd1F5eFZRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRE8wRkJRM3BDTEZWQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNRMEZCUXp0TFFVTndRenM3UVVGRlJDeFJRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRE8wZEJRM1pDT3p0QlFVVkVMR2RDUVVGakxFVkJRVUVzZDBKQlFVTXNVMEZCVXl4RlFVRkZPMEZCUTNoQ0xGRkJRVWtzVDBGQlR5eEhRVUZITEZOQlFWTXNRMEZCUXl4UFFVRlBMRWxCUVVrc1NVRkJTU3hEUVVGRExHTkJRV01zUTBGQlF5eFRRVUZUTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1FVRkRNVVVzVVVGQlNTeE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMSFZDUVVGMVFpeERRVUZETEZOQlFWTXNSVUZCUlN4UFFVRlBMRVZCUVVVc1UwRkJVeXhEUVVGRE8xRkJRM1JGTEVsQlFVa3NSMEZCUnl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRE96dEJRVVY0UWl4UlFVRkpMRU5CUVVNc1lVRkJZU3hIUVVGSExFbEJRVWtzUTBGQlF6dEJRVU14UWl4UlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExHMUNRVUZ0UWl4RlFVRkZMRTFCUVUwc1EwRkJReXhOUVVGTkxFVkJRVVVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRPMGRCUTJoRk96dEJRVVZFTEd0Q1FVRm5RaXhGUVVGRkxEQkNRVUZUTEU5QlFVOHNSVUZCUlR0QlFVTnNReXhSUVVGSkxFTkJRVU1zVlVGQlZTeEhRVUZITEVsQlFVa3NRMEZCUXpzN1FVRkZka0lzVVVGQlNTeFBRVUZQTEVkQlFVY3NUMEZCVHl4RFFVRkRMRTlCUVU4c1EwRkJRenRCUVVNNVFpeFJRVUZKTEU5QlFVOHNSVUZCUlR0QlFVTllMR0ZCUVU4c1IwRkJSeXhKUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEU5QlFVOHNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRMUVVOb1JEczdRVUZGUkN4UlFVRkpMRTFCUVUwc1IwRkJSeXhQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETzBGQlF6VkNMRkZCUVVrc1RVRkJUU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVWQlFVVTdRVUZEY2tJc1dVRkJUU3d5UWtGRFNpd3lRMEZCTWtNc1IwRkJSeXhOUVVGTkxFTkJRVU1zVFVGQlRTeEZRVU16UkN4UFFVRlBMRU5CUTFJc1EwRkJRenRMUVVOSUxFMUJRVTBzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRVZCUVVVN1FVRkRla0lzVlVGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMSE5DUVVGelFpeEZRVUZGTzBGQlEzWkRMRmxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zWVVGQllTeEZRVUZGTEZkQlFWY3NRMEZCUXl4RFFVRkRPMDlCUTNwRExFMUJRVTA3UVVGRFRDeGpRVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1NVRkJTU3hGUVVGRkxHZENRVUZuUWl4RlFVRkZMRXRCUVVzc1JVRkJSU3hGUVVGRkxFVkJRVVVzUzBGQlN5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNN1QwRkRPVVE3UzBGRFJqczdRVUZGUkN4UlFVRkpMRmRCUVZjc1IwRkJSeXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRTdVVUZEY2tNc1UwRkJVeXhIUVVGSExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4TFFVRkxMR1ZCUVdVc1EwRkJRenRCUVVOd1JDeFJRVUZKTEZOQlFWTXNSVUZCUlR0QlFVTmlMRlZCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMHRCUXpOQ096dEJRVVZFTEZGQlFVa3NRMEZCUXl4MVFrRkJkVUlzUTBGQlF5eFBRVUZQTEVWQlFVVXNUMEZCVHl4RlFVRkZMRk5CUVZNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6czdRVUZGYUVVc1VVRkJTU3hOUVVGTkxFZEJRVWNzVDBGQlR5eERRVUZETEUxQlFVMHNTVUZCU1N4RlFVRkZMRU5CUVVNN1FVRkRiRU1zVVVGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMR0ZCUVdFc1NVRkJTU3hOUVVGTkxFVkJRVVU3UVVGRGVFTXNWVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhsUVVGbExFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTTdRVUZEY2tNc1dVRkJUU3hIUVVGSExFVkJRVVVzUTBGQlF6dExRVU5pT3p0QlFVVkVMRkZCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zWlVGQlpTeEZRVUZGTEZOQlFWTXNSVUZCUlN4WFFVRlhMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU03UVVGRE4wUXNVVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF6dEhRVU4yUWp0QlFVTkVMSFZDUVVGeFFpeEZRVUZGTEN0Q1FVRlRMRmxCUVZrc1JVRkJSVHRCUVVNMVF5eFJRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTTdSMEZEY2tNN08wRkJSVVFzYlVKQlFXbENMRVZCUVVVc01rSkJRVk1zVVVGQlVTeEZRVUZGTzBGQlEzQkRMRkZCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdPMEZCUlRkQ0xGRkJRVWtzVVVGQlVTeERRVUZETEU5QlFVOHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVVVGQlVTeEZRVUZGTzBGQlF6bERMRlZCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zWlVGQlpTeERRVUZETEVOQlFVTTdTMEZET1VJc1RVRkJUVHRCUVVOTUxGVkJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1MwRkRka0k3UjBGRFJqdEJRVU5FTEZkQlFWTXNSVUZCUVN4dFFrRkJReXhUUVVGVExFVkJRVVU3UVVGRGJrSXNVVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF6dEhRVU5vUXpzN1FVRkZSQ3hyUWtGQlowSXNSVUZCUlN3d1FrRkJVeXhQUVVGUExFVkJRVVU3UVVGRGJFTXNVVUZCU1N4UFFVRlBMRU5CUVVNc1MwRkJTeXhGUVVGRk8wRkJRMnBDTEZWQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1pVRkJaU3hGUVVGRkxFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0TFFVTTNRenRIUVVOR096dEJRVVZFTEd0Q1FVRm5RaXhGUVVGRkxEUkNRVUZYTEVWQlFVVTdPMEZCUlM5Q0xHVkJRV0VzUlVGQlJTeDFRa0ZCVXl4TFFVRkxMRVZCUVVVN1FVRkROMElzTUVKQlFYTkNMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03UVVGRE9VSXNVVUZCU1N4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXpzN1FVRkZja01zVVVGQlNTeEpRVUZKTEV0QlFVc3NVVUZCVVN4RlFVRkZPMEZCUTNKQ0xGVkJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1MwRkRla0lzVFVGQlRTeEpRVUZKTEVsQlFVa3NTMEZCU3l4UlFVRlJMRVZCUVVVN1FVRkROVUlzVlVGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRMUVVONlFpeE5RVUZOTzBGQlEwd3NWVUZCU1N4RFFVRkRMR05CUVdNc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dExRVU0xUWp0SFFVTkdPMEZCUTBRc1owSkJRV01zUlVGQlJTeDNRa0ZCVXl4TFFVRkxMRVZCUVVVc1QwRkJUeXhGUVVGRkxFOUJRVThzUlVGQlJUdEJRVU5vUkN4UlFVRkpMRWxCUVVrc1IwRkJSeXhMUVVGTExFTkJRVU1zU1VGQlNUdFJRVU51UWl4SlFVRkpMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEY0VJc1QwRkJUeXhIUVVGSExFOUJRVThzU1VGQlNTeEpRVUZKTEVsQlFVa3NUMEZCVHl4SlFVRkpMRWxCUVVrc1EwRkJRenM3UVVGRkwwTXNVVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhaUVVGWkxFVkJRVVVzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPenRCUVVWMFF5eFJRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMR0ZCUVdFc1JVRkJSU3hQUVVGUExFTkJRVU1zUTBGQlF6dEJRVU53UXl4UlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExHRkJRV0VzUlVGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXpzN1FVRkZjRU1zVVVGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNN1FVRkRia0lzVVVGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenM3UVVGRmJFSXNVVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhwUWtGQmFVSXNSVUZCUlN4SlFVRkpMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU03UjBGREwwTTdPMEZCUlVRc1lVRkJWeXhGUVVGRkxIRkNRVUZUTEV0QlFVc3NSVUZCUlR0QlFVTXpRaXhSUVVGSkxFbEJRVWtzUjBGQlJ5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRPMEZCUTNSQ0xGRkJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRPMEZCUTI1Q0xGRkJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1FVRkRiRUlzVVVGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4MVFrRkJkVUlzUTBGQlF5eERRVUZETzBkQlEzUkRPenRCUVVWRUxHRkJRVmNzUlVGQlJTeHhRa0ZCVXl4TFFVRkxMRVZCUVVVc1QwRkJUeXhGUVVGRkxFOUJRVThzUlVGQlJUdEJRVU0zUXl4UlFVRkpMRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zZFVKQlFYVkNMRU5CUVVNc1MwRkJTeXhGUVVGRkxFOUJRVThzUlVGQlJTeFBRVUZQTEVOQlFVTTdVVUZEYUVVc1NVRkJTU3hIUVVGSExFdEJRVXNzUTBGQlF5eEpRVUZKTzFGQlEycENMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPenRCUVVWMlFpeFJRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1dVRkJXU3hEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTzBGQlEyNURMRlZCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zYlVKQlFXMUNMRVZCUVVVc1RVRkJUU3hEUVVGRExFMUJRVTBzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0TFFVTjJSQ3hOUVVGTkxFbEJRVWtzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4blFrRkJaMElzUlVGQlJUdEJRVU40UXl4WlFVRk5MREpDUVVOS0xEaEVRVUU0UkN4SFFVRkhMRWxCUVVrc1JVRkRja1VzUzBGQlN5eERRVU5PTEVOQlFVTTdTMEZEU0N4TlFVRk5PMEZCUTB3c1ZVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTTdRVUZEYmtJc1ZVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTTdPMEZCUld4Q0xGVkJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1FVRkRiRUlzVlVGQlNTeERRVUZETEUxQlFVMHNRMEZEVkN4alFVRmpMRVZCUTJRc1RVRkJUU3hEUVVGRExFMUJRVTBzUlVGRFlpeEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVTmlMR2xDUVVGSkxFOUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUXpOQ0xFTkJRVU03UzBGRFNEdEhRVU5HT3p0QlFVVkVMR2RDUVVGakxFVkJRVVVzZDBKQlFWTXNTVUZCU1N4RlFVRkZPMEZCUXpkQ0xGRkJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wRkJRekZDTEZGQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1dVRkJXU3hGUVVGRkxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXpzN1FVRkZkRU1zVVVGQlNTeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRGRFSXNUVUZCVFN4SFFVRkhMR2xDUVVGSkxFOUJRVThzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRPMUZCUTI1RExGbEJRVmtzUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhOUVVGTkxFbEJRVWtzU1VGQlNTeERRVUZETEdWQlFXVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenM3UVVGRmRFVXNVVUZCU1N4WlFVRlpMRVZCUVVVN1FVRkRhRUlzVlVGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4clFrRkJhMElzUlVGQlJTeFpRVUZaTEVWQlFVVXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wdEJRek5FTEUxQlFVMHNTVUZCU1N4RFFVRkRMRWxCUVVrc1JVRkJSVHM3UVVGRmFFSXNWVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhoUVVGaExFTkJRVU1zUTBGQlF6dExRVU0xUWl4TlFVRk5MRWxCUVVrc1NVRkJTU3hEUVVGRExFbEJRVWtzUlVGQlJUdEJRVU53UWl4VlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTTdRVUZEZWtJc1ZVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eFpRVUZaTEVWQlFVVXNTVUZCU1N4RFFVRkRMRXRCUVVzc1JVRkJSU3hKUVVGSkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRMUVVOb1JTeE5RVUZOTzBGQlEwd3NWVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkRWQ3hwUWtGQmFVSXNSVUZEYWtJc1NVRkJTU3hEUVVGRExFdEJRVXNzUlVGRFZpeEpRVUZKTEVOQlFVTXNTMEZCU3l4RlFVTldMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRMWdzVFVGQlRTeERRVU5RTEVOQlFVTTdTMEZEU0R0SFFVTkdPenRCUVVWRUxHVkJRV0VzUlVGQlJTeDFRa0ZCVXl4TlFVRk5MRVZCUVVVN1FVRkRPVUlzVVVGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4WlFVRlpMRVZCUVVVc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzBkQlEzcERPenRCUVVWRUxHVkJRV0VzUlVGQlJTeDFRa0ZCVXl4TlFVRk5MRVZCUVVVN1FVRkRPVUlzVVVGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4aFFVRmhMRVZCUVVVc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzBkQlF6RkRPenRCUVVWRUxHZENRVUZqTEVWQlFVVXNkMEpCUVZNc1NVRkJTU3hGUVVGRk8wRkJRemRDTEZGQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1lVRkJZU3hGUVVGRkxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0SFFVTjRRenM3UVVGRlJDeHJRa0ZCWjBJc1JVRkJSU3cwUWtGQlZ6dEJRVU16UWl4UlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExHRkJRV0VzUlVGQlJTeFhRVUZYTEVOQlFVTXNRMEZCUXp0SFFVTjZRenM3UVVGRlJDeGhRVUZYTEVWQlFVVXNkVUpCUVZjN1FVRkRkRUlzVVVGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4aFFVRmhMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU03UjBGRGNFTTdPMEZCUlVRc1RVRkJTU3hGUVVGRkxHTkJRVk1zU1VGQlNTeEZRVUZGTzBGQlEyNUNMRkZCUVVrc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTzFGQlEzQkNMRU5CUVVNc1IwRkJSeXhEUVVGRE8xRkJRMHdzUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNN08wRkJSVzVDTEZGQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU03TzBGQlJYaENMRmRCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0QlFVTnFRaXhWUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dExRVU5vUXp0QlFVTkVMRmRCUVU4c1EwRkJReXhGUVVGRkxFVkJRVVU3UVVGRFZpeFZRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMR05CUVdNc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1MwRkRNME03UVVGRFJDeFJRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8wZEJRM2hDT3pzN1FVRkhSQ3hSUVVGTkxFVkJRVVVzWjBKQlFWTXNTVUZCU1N4RlFVRkZPMEZCUTNKQ0xGRkJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRPMEZCUTJoQ0xGbEJRVTBzUlVGQlJTeEpRVUZKTzBGQlExb3NWVUZCU1N4RlFVRkZMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zVTBGQlV5eEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFVTTVRaXhUUVVGSExFVkJRVVVzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSE8wdEJRelZDTEVOQlFVTXNRMEZCUXp0SFFVTktPenRCUVVWRUxGVkJRVkVzUlVGQlJTeHJRa0ZCVXl4TFFVRkxMRVZCUVVVN1FVRkRlRUlzVVVGQlNTeERRVUZETEV0QlFVc3NSVUZCUlR0QlFVTldMR0ZCUVU4N1MwRkRVanM3UVVGRlJDeFJRVUZKTEVOQlFVTXNVMEZCVXl4SFFVRkhMRWxCUVVrc1EwRkJRenRIUVVOMlFqczdRVUZGUkN4bFFVRmhMRVZCUVVVc2RVSkJRVk1zUzBGQlN5eEZRVUZGTzBGQlF6ZENMRkZCUVVrc1VVRkJVU3hIUVVGSExHbENRVUZKTEU5QlFVOHNRMEZCUXl4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZET3p0QlFVVm9SQ3hSUVVGSkxGbEJRVmtzUjBGQlJ5eFJRVUZSTEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhsUVVGbExFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6czdPenRCUVVrelJTeFJRVUZKTEZGQlFWRXNSMEZCUnl4RFFVRkRMRmxCUVZrc1NVRkJTU3hwUWtGQlNTeFBRVUZQTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdPenM3TzBGQlMzQkZMRkZCUVVrc1ZVRkJWU3hIUVVGSExFTkJRVU1zV1VGQldTeExRVUZMTEZGQlFWRXNTVUZCU1N4UlFVRlJMRU5CUVVFc1FVRkJReXhEUVVGRE96czdPMEZCU1hwRUxGRkJRVWtzVlVGQlZTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZPMEZCUXpOQ0xGVkJRVWtzUzBGQlNTeEhRVUZITEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF6dFZRVU0xUWl4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF6dEJRVU42UWl4VlFVRkpMRTlCUVU4c1EwRkJReXhaUVVGWkxFTkJRVU1zUzBGQlNTeERRVUZETEVWQlFVVTdRVUZET1VJc1owSkJRVkVzUjBGQlJ5eEpRVUZKTEVOQlFVTTdUMEZEYWtJc1RVRkJUU3hKUVVGSkxFOUJRVThzUTBGQlF5eG5Ra0ZCWjBJc1JVRkJSVHRCUVVOdVF5eHJRa0ZCVlN4SFFVRkhMRXRCUVVzc1EwRkJRenRQUVVOd1FqdExRVU5HT3p0QlFVVkVMRkZCUVVrc1VVRkJVU3hGUVVGRk8wRkJRMW9zWVVGQlR5eFJRVUZSTEVOQlFVTTdTMEZEYWtJc1RVRkJUU3hKUVVGSkxGVkJRVlVzUlVGQlJUdEJRVU55UWl4aFFVRlBMRmRCUVZjc1EwRkJRenRMUVVOd1FpeE5RVUZOTzBGQlEwd3NZVUZCVHl4UlFVRlJMRU5CUVVNN1MwRkRha0k3UjBGRFJqczdRVUZGUkN4WlFVRlZMRVZCUVVVc2IwSkJRVk1zVFVGQlRTeEZRVUZGTzBGQlF6TkNMRk5CUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1FVRkROME1zVlVGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dExRVU16UWp0SFFVTkdPenRCUVVWRUxGZEJRVk1zUlVGQlJTeHRRa0ZCVXl4SFFVRkhMRVZCUVVVN1FVRkRka0lzVVVGQlNTeExRVUZMTEVkQlFVY3NSMEZCUnl4RFFVRkRMRXRCUVVzc1NVRkJTU3hKUVVGSkxFZEJRVWNzUjBGQlJ5eERRVUZETEV0QlFVc3NSMEZCUnl4SFFVRkhMRU5CUVVNc1VVRkJVU3hKUVVGSkxFVkJRVVVzUTBGQlF6czdRVUZGTDBRc1VVRkJTU3hKUVVGSkxFTkJRVU1zV1VGQldTeEZRVUZGTzBGQlEzSkNMRlZCUVVrc1MwRkJTeXhEUVVGRExFOUJRVThzUlVGQlJUdEJRVU5xUWl4aFFVRkxMRWRCUVVjc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eGpRVUZqTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExFdEJRVXNzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0UFFVTXZSRHM3UVVGRlJDeFZRVUZKTEVkQlFVY3NRMEZCUXl4TFFVRkxMRVZCUVVVN1FVRkRZaXhaUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRQUVVNeFFqdEJRVU5FTEZWQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1dVRkJXU3hGUVVGRkxFZEJRVWNzUTBGQlF5eExRVUZMTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRNVU1zVlVGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4cFFrRkJhVUlzUlVGQlJTeExRVUZMTEVWQlFVVXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE96dEJRVVZvUkN4VlFVRkpMRWRCUVVjc1EwRkJReXhKUVVGSkxFdEJRVXNzWlVGQlpTeEZRVUZGT3pzN1FVRkhhRU1zV1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRQUVVOc1FqdExRVU5HTEUxQlFVMDdRVUZEVEN4VlFVRkpMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVU3UVVGRGFrSXNXVUZCU1N4bFFVRmxMRmxCUVVFc1EwRkJRenRCUVVOd1FpeFpRVUZKTEVkQlFVY3NRMEZCUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhwUWtGQlNTeFBRVUZQTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEV0QlFVc3NSVUZCUlR0QlFVTjZSQ3g1UWtGQlpTeEhRVUZITEVsQlFVa3NRMEZCUXl4bFFVRmxMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMU5CUTNSRU8wRkJRMFFzV1VGQlNTeGxRVUZsTEVWQlFVVTdRVUZEYmtJc1kwRkJTU3hsUVVGbExFZEJRVWNzUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUTI1RUxHTkJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNVVUZCVVN4RlFVRkZMRmxCUVZrc1JVRkJSU3hsUVVGbExFVkJRVVVzWlVGQlpTeERRVUZETEVOQlFVTTdVMEZEZGtVc1RVRkJUVHRCUVVOTUxHVkJRVXNzUjBGQlJ5eEhRVUZITEVOQlFVTXNVVUZCVVN4SlFVRkpMRXRCUVVzc1EwRkJRenRCUVVNNVFpeGpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVN1FVRkRha0lzYVVKQlFVc3NSMEZCUnl4TFFVRkxMRU5CUTFZc1QwRkJUeXhEUVVGRExHVkJRV1VzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZETlVJc1QwRkJUeXhEUVVGRExFOUJRVThzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZEY0VJc1QwRkJUeXhEUVVGRExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXp0WFFVTjRRanM3UVVGRlJDeGpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRkZCUVZFc1JVRkJSU3hIUVVGSExFTkJRVU1zU1VGQlNTeEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMU5CUTNoRE8wOUJRMFk3UVVGRFJDeFZRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8wdEJRMnhDTzBkQlEwWTdPMEZCUlVRc2VVSkJRWFZDTEVWQlFVVXNhVU5CUVZNc1MwRkJTeXhGUVVGRkxFOUJRVThzUlVGQlJTeFBRVUZQTEVWQlFVVXNVMEZCVXl4RlFVRkZPMEZCUTNCRkxGRkJRVWtzVFVGQlRTeEhRVUZITEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNN1FVRkRNVUlzVVVGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenM3UVVGRmVFSXNVVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhoUVVGaExFVkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTTdRVUZEY0VNc1VVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eGhRVUZoTEVWQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVVNN08wRkJSWEJETEZGQlFVa3NTMEZCU3l4RFFVRkRMRWxCUVVrc1JVRkJSVHRCUVVOa0xGVkJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wdEJRM3BDTEUxQlFVMDdRVUZEVEN4VlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExGZEJRVmNzUlVGQlJTeFRRVUZUTEVOQlFVTXNRMEZCUXp0TFFVTnlRenM3UVVGRlJDeFhRVUZQTEUxQlFVMHNRMEZCUXp0SFFVTm1PenRCUVVWRUxHbENRVUZsTEVWQlFVVXNlVUpCUVZNc1NVRkJTU3hGUVVGRk8wRkJRemxDTEZOQlEwVXNTVUZCU1N4TFFVRkxMRWRCUVVjc1EwRkJReXhGUVVGRkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRmRCUVZjc1EwRkJReXhOUVVGTkxFVkJRM0JFTEV0QlFVc3NSMEZCUnl4SFFVRkhMRVZCUTFnc1MwRkJTeXhGUVVGRkxFVkJRMUE3UVVGRFFTeFZRVUZKTEZkQlFWY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExGZEJRVmNzUTBGQlF5eExRVUZMTEVOQlFVTTdWVUZETDBNc1MwRkJTeXhIUVVGSExGZEJRVmNzU1VGQlNTeGxRVUZSTEZkQlFWY3NSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRCUVVOd1JDeFZRVUZKTEZkQlFWY3NTVUZCU1N4TFFVRkxMRWxCUVVrc1EwRkJReXhGUVVGRk8wRkJRemRDTEdWQlFVOHNRMEZCUXl4TFFVRkxMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03VDBGRGRrSTdTMEZEUmp0SFFVTkdPME5CUTBZc1EwRkJRenM3UVVGRlN5eFRRVUZUTEZWQlFWVXNRMEZCUXl4TFFVRkxMRVZCUVVVc1QwRkJUeXhGUVVGRkxFZEJRVWNzUlVGQlJUdEJRVU01UXl4TlFVTkZMRXRCUVVzc1NVRkJTU3hKUVVGSkxFbEJRMW9zVDBGQlR5eExRVUZMTEV0QlFVc3NVVUZCVVN4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFdEJRVXNzVTBGQlV5eEJRVUZETEVWQlEzWkVPMEZCUTBFc1ZVRkJUU3d5UWtGRFNpeG5Sa0ZCWjBZc1IwRkRPVVVzUzBGQlN5eERRVU5TTEVOQlFVTTdSMEZEU0RzN1FVRkZSQ3hUUVVGUExFZEJRVWNzVDBGQlR5eEpRVUZKTEVWQlFVVXNRMEZCUXp0QlFVTjRRaXhOUVVGSkxFVkJRVVVzVFVGQlRTeEpRVUZKTEU5QlFVOHNRMEZCUVN4QlFVRkRMRVZCUVVVN1FVRkRlRUlzVjBGQlR5eERRVUZETEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNN1IwRkRja0k3UVVGRFJDeE5RVUZKTEU5QlFVOHNRMEZCUXl4TlFVRk5MRVZCUVVVN1FVRkRiRUlzVjBGQlR5eERRVUZETEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNN1IwRkRNVUk3TzBGQlJVUXNUVUZCU1N4SFFVRkhMRWRCUVVjc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEVWQlFVVXNUMEZCVHl4RFFVRkRPMDFCUTJwRExGZEJRVmNzUjBGQlJ5eEpRVUZKTEVkQlFVY3NRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPMEZCUTNwRUxGTkJRVThzU1VGQlNTeEhRVUZITEVOQlFVTXNhMEpCUVd0Q0xFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNWMEZCVnl4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRE8wTkJRMjVGT3p0QlFVVk5MRk5CUVZNc1QwRkJUeXhEUVVGRExFdEJRVXNzUlVGQlJTeFBRVUZQTEVWQlFVOHNSMEZCUnl4RlFVRkZPMDFCUVc1Q0xFOUJRVThzWjBKQlFWQXNUMEZCVHl4SFFVRkhMRVZCUVVVN08wRkJRM3BETEUxQlEwVXNTMEZCU3l4SlFVRkpMRWxCUVVrc1NVRkRXaXhQUVVGUExFdEJRVXNzUzBGQlN5eFJRVUZSTEVsQlFVa3NTMEZCU3l4RFFVRkRMRWxCUVVrc1MwRkJTeXhUUVVGVExFRkJRVU1zUlVGRGRrUTdRVUZEUVN4VlFVRk5MREpDUVVOS0xEWkZRVUUyUlN4SFFVTXpSU3hMUVVGTExFTkJRMUlzUTBGQlF6dEhRVU5JT3p0QlFVVkVMRk5CUVU4c1IwRkJSeXhqUVVGUExFVkJRVVVzUlVGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXp0QlFVTTVRaXhOUVVGSkxFVkJRVVVzVFVGQlRTeEpRVUZKTEU5QlFVOHNRMEZCUVN4QlFVRkRMRVZCUVVVN1FVRkRlRUlzVjBGQlR5eERRVUZETEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNN1IwRkRja0k3UVVGRFJDeE5RVUZKTEU5QlFVOHNRMEZCUXl4TlFVRk5MRVZCUVVVN1FVRkRiRUlzVjBGQlR5eERRVUZETEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNN1IwRkRNVUk3TzBGQlJVUXNUVUZCU1N4UlFVRlJMRmxCUVVFc1EwRkJRenM3UVVGRllpeFhRVUZUTEZsQlFWa3NSMEZCUnp0QlFVTjBRaXhSUVVGSkxFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRXRCUVVzc1JVRkJSU3hQUVVGUExFTkJRVU03VVVGRGFrTXNWMEZCVnl4SFFVRkhMRWxCUVVrc1IwRkJSeXhEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETEU5QlFVOHNRMEZCUXl4SFFVRkhMRVZCUVVVc1QwRkJUeXhEUVVGRE8xRkJRM1JFTEZsQlFWa3NSMEZCUnl4SlFVRkpMRWRCUVVjc1EwRkJReXhyUWtGQmEwSXNSVUZCUlN4RFFVRkRMRTlCUVU4c1EwRkRha1FzVjBGQlZ5eEZRVU5ZTEU5QlFVOHNSVUZEVUN4VFFVRlRMRVZCUTFRc1NVRkJTU3hEUVVOTUxFTkJRVU03UVVGRFNpeFhRVUZQTEVkQlFVY3NRMEZCUXl4UlFVRlJMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU03UjBGRGJrTTdPenRCUVVkRUxGZEJRVk1zUjBGQlJ5eERRVUZETEU5QlFVOHNSVUZCUlN4WFFVRlhMRVZCUVVVN1FVRkRha01zVVVGQlNTeERRVUZETEZGQlFWRXNSVUZCUlR0QlFVTmlMR05CUVZFc1IwRkJSeXhaUVVGWkxFVkJRVVVzUTBGQlF6dExRVU16UWp0QlFVTkVMRmRCUVU4c1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVWQlFVVXNUMEZCVHl4RlFVRkZMRmRCUVZjc1EwRkJReXhEUVVGRE8wZEJRMnhFTzBGQlEwUXNTMEZCUnl4RFFVRkRMRTFCUVUwc1IwRkJSeXhWUVVGVExGbEJRVmtzUlVGQlJUdEJRVU5zUXl4UlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRk8wRkJRMklzWTBGQlVTeEhRVUZITEZsQlFWa3NSVUZCUlN4RFFVRkRPMHRCUXpOQ08wRkJRMFFzVjBGQlR5eFJRVUZSTEVOQlFVTXNUVUZCVFN4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE8wZEJRM1JETEVOQlFVTTdRVUZEUml4TFFVRkhMRU5CUVVNc1RVRkJUU3hIUVVGSExGVkJRVk1zUTBGQlF5eEZRVUZGTEVsQlFVa3NSVUZCUlN4WFFVRlhMRVZCUVVVc1RVRkJUU3hGUVVGRk8wRkJRMnhFTEZGQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVN1FVRkRZaXhqUVVGUkxFZEJRVWNzV1VGQldTeEZRVUZGTEVOQlFVTTdTMEZETTBJN1FVRkRSQ3hYUVVGUExGRkJRVkVzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1JVRkJSU3hYUVVGWExFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTTdSMEZEZEVRc1EwRkJRenRCUVVOR0xGTkJRVThzUjBGQlJ5eERRVUZETzBOQlExbzdPMEZCUlVRc1UwRkJVeXhUUVVGVExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlR0QlFVTjJRaXhOUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVWQlFVVTdRVUZEV0N4WFFVRlBMRWxCUVVrc1EwRkJRenRIUVVOaU96dEJRVVZFTEUxQlFVa3NaVUZCVVN4RFFVRkRMRU5CUVVNc1NVRkJTU3hsUVVGUkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4TlFVRk5MRXRCUVVzc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJUdEJRVU55UkN4VFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdEJRVU5xUXl4VlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJUdEJRVU14UWl4bFFVRlBMRXRCUVVzc1EwRkJRenRQUVVOa08wdEJRMFk3UVVGRFJDeFhRVUZQTEVsQlFVa3NRMEZCUXp0SFFVTmlPME5CUTBZN08wRkJSVVFzVTBGQlV5eHpRa0ZCYzBJc1EwRkJReXhMUVVGTExFVkJRVVU3UVVGRGNrTXNUVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eEZRVUZGTzBGQlEzSkNMRkZCUVVrc1QwRkJUeXhIUVVGSExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTTdPenRCUVVkNlFpeFRRVUZMTEVOQlFVTXNTVUZCU1N4SFFVRkhPMEZCUTFnc1ZVRkJTU3hGUVVGRkxHZENRVUZuUWp0QlFVTjBRaXhWUVVGSkxFVkJRVVVzUzBGQlN6dEJRVU5ZTEZkQlFVc3NSVUZCUlN4RFFVRkRPMEZCUTFJc1YwRkJTeXhGUVVGRkxFTkJRVU1zVDBGQlR5eERRVUZETEZGQlFWRXNSMEZCUnl4RlFVRkZMRU5CUVVNN1FVRkRPVUlzWTBGQlVTeEZRVUZGTEU5QlFVOHNRMEZCUXl4UlFVRlJMRWRCUVVjc1JVRkJSVHRCUVVNdlFpeFRRVUZITEVWQlFVVXNUMEZCVHl4RFFVRkRMRWRCUVVjN1MwRkRha0lzUTBGQlF6dEhRVU5JTzBOQlEwWWlMQ0ptYVd4bElqb2lZMjl0Y0dsc1pYSXVhbk1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpQmxjMnhwYm5RdFpHbHpZV0pzWlNCdVpYY3RZMkZ3SUNvdlhHNWNibWx0Y0c5eWRDQkZlR05sY0hScGIyNGdabkp2YlNBbkxpNHZaWGhqWlhCMGFXOXVKenRjYm1sdGNHOXlkQ0I3SUdselFYSnlZWGtzSUdsdVpHVjRUMllzSUdWNGRHVnVaQ0I5SUdaeWIyMGdKeTR1TDNWMGFXeHpKenRjYm1sdGNHOXlkQ0JCVTFRZ1puSnZiU0FuTGk5aGMzUW5PMXh1WEc1amIyNXpkQ0J6YkdsalpTQTlJRnRkTG5Oc2FXTmxPMXh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnUTI5dGNHbHNaWElvS1NCN2ZWeHVYRzR2THlCMGFHVWdabTkxYm1SSVpXeHdaWElnY21WbmFYTjBaWElnZDJsc2JDQmthWE5oYldKcFozVmhkR1VnYUdWc2NHVnlJR3h2YjJ0MWNDQm1jbTl0SUdacGJtUnBibWNnWVZ4dUx5OGdablZ1WTNScGIyNGdhVzRnWVNCamIyNTBaWGgwTGlCVWFHbHpJR2x6SUc1bFkyVnpjMkZ5ZVNCbWIzSWdiWFZ6ZEdGamFHVWdZMjl0Y0dGMGFXSnBiR2wwZVN3Z2QyaHBZMmhjYmk4dklISmxjWFZwY21WeklIUm9ZWFFnWTI5dWRHVjRkQ0JtZFc1amRHbHZibk1nYVc0Z1lteHZZMnR6SUdGeVpTQmxkbUZzZFdGMFpXUWdZbmtnWW14dlkydElaV3h3WlhKTmFYTnphVzVuTEZ4dUx5OGdZVzVrSUhSb1pXNGdjSEp2WTJWbFpDQmhjeUJwWmlCMGFHVWdjbVZ6ZFd4MGFXNW5JSFpoYkhWbElIZGhjeUJ3Y205MmFXUmxaQ0IwYnlCaWJHOWphMGhsYkhCbGNrMXBjM05wYm1jdVhHNWNia052YlhCcGJHVnlMbkJ5YjNSdmRIbHdaU0E5SUh0Y2JpQWdZMjl0Y0dsc1pYSTZJRU52YlhCcGJHVnlMRnh1WEc0Z0lHVnhkV0ZzY3pvZ1puVnVZM1JwYjI0b2IzUm9aWElwSUh0Y2JpQWdJQ0JzWlhRZ2JHVnVJRDBnZEdocGN5NXZjR052WkdWekxteGxibWQwYUR0Y2JpQWdJQ0JwWmlBb2IzUm9aWEl1YjNCamIyUmxjeTVzWlc1bmRHZ2dJVDA5SUd4bGJpa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJSDFjYmx4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnYkdWdU95QnBLeXNwSUh0Y2JpQWdJQ0FnSUd4bGRDQnZjR052WkdVZ1BTQjBhR2x6TG05d1kyOWtaWE5iYVYwc1hHNGdJQ0FnSUNBZ0lHOTBhR1Z5VDNCamIyUmxJRDBnYjNSb1pYSXViM0JqYjJSbGMxdHBYVHRjYmlBZ0lDQWdJR2xtSUNoY2JpQWdJQ0FnSUNBZ2IzQmpiMlJsTG05d1kyOWtaU0FoUFQwZ2IzUm9aWEpQY0dOdlpHVXViM0JqYjJSbElIeDhYRzRnSUNBZ0lDQWdJQ0ZoY21kRmNYVmhiSE1vYjNCamIyUmxMbUZ5WjNNc0lHOTBhR1Z5VDNCamIyUmxMbUZ5WjNNcFhHNGdJQ0FnSUNBcElIdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJQzh2SUZkbElHdHViM2NnZEdoaGRDQnNaVzVuZEdnZ2FYTWdkR2hsSUhOaGJXVWdZbVYwZDJWbGJpQjBhR1VnZEhkdklHRnljbUY1Y3lCaVpXTmhkWE5sSUhSb1pYa2dZWEpsSUdScGNtVmpkR3g1SUhScFpXUmNiaUFnSUNBdkx5QjBieUIwYUdVZ2IzQmpiMlJsSUdKbGFHRjJhVzl5SUdGaWIzWmxMbHh1SUNBZ0lHeGxiaUE5SUhSb2FYTXVZMmhwYkdSeVpXNHViR1Z1WjNSb08xeHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2JHVnVPeUJwS3lzcElIdGNiaUFnSUNBZ0lHbG1JQ2doZEdocGN5NWphR2xzWkhKbGJsdHBYUzVsY1hWaGJITW9iM1JvWlhJdVkyaHBiR1J5Wlc1YmFWMHBLU0I3WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJtWVd4elpUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnZEhKMVpUdGNiaUFnZlN4Y2JseHVJQ0JuZFdsa09pQXdMRnh1WEc0Z0lHTnZiWEJwYkdVNklHWjFibU4wYVc5dUtIQnliMmR5WVcwc0lHOXdkR2x2Ym5NcElIdGNiaUFnSUNCMGFHbHpMbk52ZFhKalpVNXZaR1VnUFNCYlhUdGNiaUFnSUNCMGFHbHpMbTl3WTI5a1pYTWdQU0JiWFR0Y2JpQWdJQ0IwYUdsekxtTm9hV3hrY21WdUlEMGdXMTA3WEc0Z0lDQWdkR2hwY3k1dmNIUnBiMjV6SUQwZ2IzQjBhVzl1Y3p0Y2JpQWdJQ0IwYUdsekxuTjBjbWx1WjFCaGNtRnRjeUE5SUc5d2RHbHZibk11YzNSeWFXNW5VR0Z5WVcxek8xeHVJQ0FnSUhSb2FYTXVkSEpoWTJ0SlpITWdQU0J2Y0hScGIyNXpMblJ5WVdOclNXUnpPMXh1WEc0Z0lDQWdiM0IwYVc5dWN5NWliRzlqYTFCaGNtRnRjeUE5SUc5d2RHbHZibk11WW14dlkydFFZWEpoYlhNZ2ZId2dXMTA3WEc1Y2JpQWdJQ0J2Y0hScGIyNXpMbXR1YjNkdVNHVnNjR1Z5Y3lBOUlHVjRkR1Z1WkNoY2JpQWdJQ0FnSUU5aWFtVmpkQzVqY21WaGRHVW9iblZzYkNrc1hHNGdJQ0FnSUNCN1hHNGdJQ0FnSUNBZ0lHaGxiSEJsY2sxcGMzTnBibWM2SUhSeWRXVXNYRzRnSUNBZ0lDQWdJR0pzYjJOclNHVnNjR1Z5VFdsemMybHVaem9nZEhKMVpTeGNiaUFnSUNBZ0lDQWdaV0ZqYURvZ2RISjFaU3hjYmlBZ0lDQWdJQ0FnYVdZNklIUnlkV1VzWEc0Z0lDQWdJQ0FnSUhWdWJHVnpjem9nZEhKMVpTeGNiaUFnSUNBZ0lDQWdkMmwwYURvZ2RISjFaU3hjYmlBZ0lDQWdJQ0FnYkc5bk9pQjBjblZsTEZ4dUlDQWdJQ0FnSUNCc2IyOXJkWEE2SUhSeWRXVmNiaUFnSUNBZ0lIMHNYRzRnSUNBZ0lDQnZjSFJwYjI1ekxtdHViM2R1U0dWc2NHVnljMXh1SUNBZ0lDazdYRzVjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVoWTJObGNIUW9jSEp2WjNKaGJTazdYRzRnSUgwc1hHNWNiaUFnWTI5dGNHbHNaVkJ5YjJkeVlXMDZJR1oxYm1OMGFXOXVLSEJ5YjJkeVlXMHBJSHRjYmlBZ0lDQnNaWFFnWTJocGJHUkRiMjF3YVd4bGNpQTlJRzVsZHlCMGFHbHpMbU52YlhCcGJHVnlLQ2tzSUM4dklHVnpiR2x1ZEMxa2FYTmhZbXhsTFd4cGJtVWdibVYzTFdOaGNGeHVJQ0FnSUNBZ2NtVnpkV3gwSUQwZ1kyaHBiR1JEYjIxd2FXeGxjaTVqYjIxd2FXeGxLSEJ5YjJkeVlXMHNJSFJvYVhNdWIzQjBhVzl1Y3lrc1hHNGdJQ0FnSUNCbmRXbGtJRDBnZEdocGN5NW5kV2xrS3lzN1hHNWNiaUFnSUNCMGFHbHpMblZ6WlZCaGNuUnBZV3dnUFNCMGFHbHpMblZ6WlZCaGNuUnBZV3dnZkh3Z2NtVnpkV3gwTG5WelpWQmhjblJwWVd3N1hHNWNiaUFnSUNCMGFHbHpMbU5vYVd4a2NtVnVXMmQxYVdSZElEMGdjbVZ6ZFd4ME8xeHVJQ0FnSUhSb2FYTXVkWE5sUkdWd2RHaHpJRDBnZEdocGN5NTFjMlZFWlhCMGFITWdmSHdnY21WemRXeDBMblZ6WlVSbGNIUm9jenRjYmx4dUlDQWdJSEpsZEhWeWJpQm5kV2xrTzF4dUlDQjlMRnh1WEc0Z0lHRmpZMlZ3ZERvZ1puVnVZM1JwYjI0b2JtOWtaU2tnZTF4dUlDQWdJQzhxSUdsemRHRnVZblZzSUdsbmJtOXlaU0J1WlhoME9pQlRZVzVwZEhrZ1kyOWtaU0FxTDF4dUlDQWdJR2xtSUNnaGRHaHBjMXR1YjJSbExuUjVjR1ZkS1NCN1hHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYaGpaWEIwYVc5dUtDZFZibXR1YjNkdUlIUjVjR1U2SUNjZ0t5QnViMlJsTG5SNWNHVXNJRzV2WkdVcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhSb2FYTXVjMjkxY21ObFRtOWtaUzUxYm5Ob2FXWjBLRzV2WkdVcE8xeHVJQ0FnSUd4bGRDQnlaWFFnUFNCMGFHbHpXMjV2WkdVdWRIbHdaVjBvYm05a1pTazdYRzRnSUNBZ2RHaHBjeTV6YjNWeVkyVk9iMlJsTG5Ob2FXWjBLQ2s3WEc0Z0lDQWdjbVYwZFhKdUlISmxkRHRjYmlBZ2ZTeGNibHh1SUNCUWNtOW5jbUZ0T2lCbWRXNWpkR2x2Ymlod2NtOW5jbUZ0S1NCN1hHNGdJQ0FnZEdocGN5NXZjSFJwYjI1ekxtSnNiMk5yVUdGeVlXMXpMblZ1YzJocFpuUW9jSEp2WjNKaGJTNWliRzlqYTFCaGNtRnRjeWs3WEc1Y2JpQWdJQ0JzWlhRZ1ltOWtlU0E5SUhCeWIyZHlZVzB1WW05a2VTeGNiaUFnSUNBZ0lHSnZaSGxNWlc1bmRHZ2dQU0JpYjJSNUxteGxibWQwYUR0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUdKdlpIbE1aVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJQ0FnZEdocGN5NWhZMk5sY0hRb1ltOWtlVnRwWFNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnZEdocGN5NXZjSFJwYjI1ekxtSnNiMk5yVUdGeVlXMXpMbk5vYVdaMEtDazdYRzVjYmlBZ0lDQjBhR2x6TG1selUybHRjR3hsSUQwZ1ltOWtlVXhsYm1kMGFDQTlQVDBnTVR0Y2JpQWdJQ0IwYUdsekxtSnNiMk5yVUdGeVlXMXpJRDBnY0hKdlozSmhiUzVpYkc5amExQmhjbUZ0Y3lBL0lIQnliMmR5WVcwdVlteHZZMnRRWVhKaGJYTXViR1Z1WjNSb0lEb2dNRHRjYmx4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TzF4dUlDQjlMRnh1WEc0Z0lFSnNiMk5yVTNSaGRHVnRaVzUwT2lCbWRXNWpkR2x2YmloaWJHOWpheWtnZTF4dUlDQWdJSFJ5WVc1elptOXliVXhwZEdWeVlXeFViMUJoZEdnb1lteHZZMnNwTzF4dVhHNGdJQ0FnYkdWMElIQnliMmR5WVcwZ1BTQmliRzlqYXk1d2NtOW5jbUZ0TEZ4dUlDQWdJQ0FnYVc1MlpYSnpaU0E5SUdKc2IyTnJMbWx1ZG1WeWMyVTdYRzVjYmlBZ0lDQndjbTluY21GdElEMGdjSEp2WjNKaGJTQW1KaUIwYUdsekxtTnZiWEJwYkdWUWNtOW5jbUZ0S0hCeWIyZHlZVzBwTzF4dUlDQWdJR2x1ZG1WeWMyVWdQU0JwYm5abGNuTmxJQ1ltSUhSb2FYTXVZMjl0Y0dsc1pWQnliMmR5WVcwb2FXNTJaWEp6WlNrN1hHNWNiaUFnSUNCc1pYUWdkSGx3WlNBOUlIUm9hWE11WTJ4aGMzTnBabmxUWlhod2NpaGliRzlqYXlrN1hHNWNiaUFnSUNCcFppQW9kSGx3WlNBOVBUMGdKMmhsYkhCbGNpY3BJSHRjYmlBZ0lDQWdJSFJvYVhNdWFHVnNjR1Z5VTJWNGNISW9ZbXh2WTJzc0lIQnliMmR5WVcwc0lHbHVkbVZ5YzJVcE8xeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb2RIbHdaU0E5UFQwZ0ozTnBiWEJzWlNjcElIdGNiaUFnSUNBZ0lIUm9hWE11YzJsdGNHeGxVMlY0Y0hJb1lteHZZMnNwTzF4dVhHNGdJQ0FnSUNBdkx5QnViM2NnZEdoaGRDQjBhR1VnYzJsdGNHeGxJRzExYzNSaFkyaGxJR2x6SUhKbGMyOXNkbVZrTENCM1pTQnVaV1ZrSUhSdlhHNGdJQ0FnSUNBdkx5QmxkbUZzZFdGMFpTQnBkQ0JpZVNCbGVHVmpkWFJwYm1jZ1lHSnNiMk5yU0dWc2NHVnlUV2x6YzJsdVoyQmNiaUFnSUNBZ0lIUm9hWE11YjNCamIyUmxLQ2R3ZFhOb1VISnZaM0poYlNjc0lIQnliMmR5WVcwcE8xeHVJQ0FnSUNBZ2RHaHBjeTV2Y0dOdlpHVW9KM0IxYzJoUWNtOW5jbUZ0Snl3Z2FXNTJaWEp6WlNrN1hHNGdJQ0FnSUNCMGFHbHpMbTl3WTI5a1pTZ25aVzF3ZEhsSVlYTm9KeWs3WEc0Z0lDQWdJQ0IwYUdsekxtOXdZMjlrWlNnbllteHZZMnRXWVd4MVpTY3NJR0pzYjJOckxuQmhkR2d1YjNKcFoybHVZV3dwTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQjBhR2x6TG1GdFltbG5kVzkxYzFObGVIQnlLR0pzYjJOckxDQndjbTluY21GdExDQnBiblpsY25ObEtUdGNibHh1SUNBZ0lDQWdMeThnYm05M0lIUm9ZWFFnZEdobElITnBiWEJzWlNCdGRYTjBZV05vWlNCcGN5QnlaWE52YkhabFpDd2dkMlVnYm1WbFpDQjBiMXh1SUNBZ0lDQWdMeThnWlhaaGJIVmhkR1VnYVhRZ1lua2daWGhsWTNWMGFXNW5JR0JpYkc5amEwaGxiSEJsY2sxcGMzTnBibWRnWEc0Z0lDQWdJQ0IwYUdsekxtOXdZMjlrWlNnbmNIVnphRkJ5YjJkeVlXMG5MQ0J3Y205bmNtRnRLVHRjYmlBZ0lDQWdJSFJvYVhNdWIzQmpiMlJsS0Nkd2RYTm9VSEp2WjNKaGJTY3NJR2x1ZG1WeWMyVXBPMXh1SUNBZ0lDQWdkR2hwY3k1dmNHTnZaR1VvSjJWdGNIUjVTR0Z6YUNjcE8xeHVJQ0FnSUNBZ2RHaHBjeTV2Y0dOdlpHVW9KMkZ0WW1sbmRXOTFjMEpzYjJOclZtRnNkV1VuS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IwYUdsekxtOXdZMjlrWlNnbllYQndaVzVrSnlrN1hHNGdJSDBzWEc1Y2JpQWdSR1ZqYjNKaGRHOXlRbXh2WTJzb1pHVmpiM0poZEc5eUtTQjdYRzRnSUNBZ2JHVjBJSEJ5YjJkeVlXMGdQU0JrWldOdmNtRjBiM0l1Y0hKdlozSmhiU0FtSmlCMGFHbHpMbU52YlhCcGJHVlFjbTluY21GdEtHUmxZMjl5WVhSdmNpNXdjbTluY21GdEtUdGNiaUFnSUNCc1pYUWdjR0Z5WVcxeklEMGdkR2hwY3k1elpYUjFjRVoxYkd4TmRYTjBZV05vWlZCaGNtRnRjeWhrWldOdmNtRjBiM0lzSUhCeWIyZHlZVzBzSUhWdVpHVm1hVzVsWkNrc1hHNGdJQ0FnSUNCd1lYUm9JRDBnWkdWamIzSmhkRzl5TG5CaGRHZzdYRzVjYmlBZ0lDQjBhR2x6TG5WelpVUmxZMjl5WVhSdmNuTWdQU0IwY25WbE8xeHVJQ0FnSUhSb2FYTXViM0JqYjJSbEtDZHlaV2RwYzNSbGNrUmxZMjl5WVhSdmNpY3NJSEJoY21GdGN5NXNaVzVuZEdnc0lIQmhkR2d1YjNKcFoybHVZV3dwTzF4dUlDQjlMRnh1WEc0Z0lGQmhjblJwWVd4VGRHRjBaVzFsYm5RNklHWjFibU4wYVc5dUtIQmhjblJwWVd3cElIdGNiaUFnSUNCMGFHbHpMblZ6WlZCaGNuUnBZV3dnUFNCMGNuVmxPMXh1WEc0Z0lDQWdiR1YwSUhCeWIyZHlZVzBnUFNCd1lYSjBhV0ZzTG5CeWIyZHlZVzA3WEc0Z0lDQWdhV1lnS0hCeWIyZHlZVzBwSUh0Y2JpQWdJQ0FnSUhCeWIyZHlZVzBnUFNCMGFHbHpMbU52YlhCcGJHVlFjbTluY21GdEtIQmhjblJwWVd3dWNISnZaM0poYlNrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYkdWMElIQmhjbUZ0Y3lBOUlIQmhjblJwWVd3dWNHRnlZVzF6TzF4dUlDQWdJR2xtSUNod1lYSmhiWE11YkdWdVozUm9JRDRnTVNrZ2UxeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVjRZMlZ3ZEdsdmJpaGNiaUFnSUNBZ0lDQWdKMVZ1YzNWd2NHOXlkR1ZrSUc1MWJXSmxjaUJ2WmlCd1lYSjBhV0ZzSUdGeVozVnRaVzUwY3pvZ0p5QXJJSEJoY21GdGN5NXNaVzVuZEdnc1hHNGdJQ0FnSUNBZ0lIQmhjblJwWVd4Y2JpQWdJQ0FnSUNrN1hHNGdJQ0FnZlNCbGJITmxJR2xtSUNnaGNHRnlZVzF6TG14bGJtZDBhQ2tnZTF4dUlDQWdJQ0FnYVdZZ0tIUm9hWE11YjNCMGFXOXVjeTVsZUhCc2FXTnBkRkJoY25ScFlXeERiMjUwWlhoMEtTQjdYRzRnSUNBZ0lDQWdJSFJvYVhNdWIzQmpiMlJsS0Nkd2RYTm9UR2wwWlhKaGJDY3NJQ2QxYm1SbFptbHVaV1FuS1R0Y2JpQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUhCaGNtRnRjeTV3ZFhOb0tIc2dkSGx3WlRvZ0oxQmhkR2hGZUhCeVpYTnphVzl1Snl3Z2NHRnlkSE02SUZ0ZExDQmtaWEIwYURvZ01DQjlLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQnNaWFFnY0dGeWRHbGhiRTVoYldVZ1BTQndZWEowYVdGc0xtNWhiV1V1YjNKcFoybHVZV3dzWEc0Z0lDQWdJQ0JwYzBSNWJtRnRhV01nUFNCd1lYSjBhV0ZzTG01aGJXVXVkSGx3WlNBOVBUMGdKMU4xWWtWNGNISmxjM05wYjI0bk8xeHVJQ0FnSUdsbUlDaHBjMFI1Ym1GdGFXTXBJSHRjYmlBZ0lDQWdJSFJvYVhNdVlXTmpaWEIwS0hCaGNuUnBZV3d1Ym1GdFpTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2RHaHBjeTV6WlhSMWNFWjFiR3hOZFhOMFlXTm9aVkJoY21GdGN5aHdZWEowYVdGc0xDQndjbTluY21GdExDQjFibVJsWm1sdVpXUXNJSFJ5ZFdVcE8xeHVYRzRnSUNBZ2JHVjBJR2x1WkdWdWRDQTlJSEJoY25ScFlXd3VhVzVrWlc1MElIeDhJQ2NuTzF4dUlDQWdJR2xtSUNoMGFHbHpMbTl3ZEdsdmJuTXVjSEpsZG1WdWRFbHVaR1Z1ZENBbUppQnBibVJsYm5RcElIdGNiaUFnSUNBZ0lIUm9hWE11YjNCamIyUmxLQ2RoY0hCbGJtUkRiMjUwWlc1MEp5d2dhVzVrWlc1MEtUdGNiaUFnSUNBZ0lHbHVaR1Z1ZENBOUlDY25PMXh1SUNBZ0lIMWNibHh1SUNBZ0lIUm9hWE11YjNCamIyUmxLQ2RwYm5admEyVlFZWEowYVdGc0p5d2dhWE5FZVc1aGJXbGpMQ0J3WVhKMGFXRnNUbUZ0WlN3Z2FXNWtaVzUwS1R0Y2JpQWdJQ0IwYUdsekxtOXdZMjlrWlNnbllYQndaVzVrSnlrN1hHNGdJSDBzWEc0Z0lGQmhjblJwWVd4Q2JHOWphMU4wWVhSbGJXVnVkRG9nWm5WdVkzUnBiMjRvY0dGeWRHbGhiRUpzYjJOcktTQjdYRzRnSUNBZ2RHaHBjeTVRWVhKMGFXRnNVM1JoZEdWdFpXNTBLSEJoY25ScFlXeENiRzlqYXlrN1hHNGdJSDBzWEc1Y2JpQWdUWFZ6ZEdGamFHVlRkR0YwWlcxbGJuUTZJR1oxYm1OMGFXOXVLRzExYzNSaFkyaGxLU0I3WEc0Z0lDQWdkR2hwY3k1VGRXSkZlSEJ5WlhOemFXOXVLRzExYzNSaFkyaGxLVHRjYmx4dUlDQWdJR2xtSUNodGRYTjBZV05vWlM1bGMyTmhjR1ZrSUNZbUlDRjBhR2x6TG05d2RHbHZibk11Ym05RmMyTmhjR1VwSUh0Y2JpQWdJQ0FnSUhSb2FYTXViM0JqYjJSbEtDZGhjSEJsYm1SRmMyTmhjR1ZrSnlrN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSFJvYVhNdWIzQmpiMlJsS0NkaGNIQmxibVFuS1R0Y2JpQWdJQ0I5WEc0Z0lIMHNYRzRnSUVSbFkyOXlZWFJ2Y2loa1pXTnZjbUYwYjNJcElIdGNiaUFnSUNCMGFHbHpMa1JsWTI5eVlYUnZja0pzYjJOcktHUmxZMjl5WVhSdmNpazdYRzRnSUgwc1hHNWNiaUFnUTI5dWRHVnVkRk4wWVhSbGJXVnVkRG9nWm5WdVkzUnBiMjRvWTI5dWRHVnVkQ2tnZTF4dUlDQWdJR2xtSUNoamIyNTBaVzUwTG5aaGJIVmxLU0I3WEc0Z0lDQWdJQ0IwYUdsekxtOXdZMjlrWlNnbllYQndaVzVrUTI5dWRHVnVkQ2NzSUdOdmJuUmxiblF1ZG1Gc2RXVXBPMXh1SUNBZ0lIMWNiaUFnZlN4Y2JseHVJQ0JEYjIxdFpXNTBVM1JoZEdWdFpXNTBPaUJtZFc1amRHbHZiaWdwSUh0OUxGeHVYRzRnSUZOMVlrVjRjSEpsYzNOcGIyNDZJR1oxYm1OMGFXOXVLSE5sZUhCeUtTQjdYRzRnSUNBZ2RISmhibk5tYjNKdFRHbDBaWEpoYkZSdlVHRjBhQ2h6Wlhod2NpazdYRzRnSUNBZ2JHVjBJSFI1Y0dVZ1BTQjBhR2x6TG1Oc1lYTnphV1o1VTJWNGNISW9jMlY0Y0hJcE8xeHVYRzRnSUNBZ2FXWWdLSFI1Y0dVZ1BUMDlJQ2R6YVcxd2JHVW5LU0I3WEc0Z0lDQWdJQ0IwYUdsekxuTnBiWEJzWlZObGVIQnlLSE5sZUhCeUtUdGNiaUFnSUNCOUlHVnNjMlVnYVdZZ0tIUjVjR1VnUFQwOUlDZG9aV3h3WlhJbktTQjdYRzRnSUNBZ0lDQjBhR2x6TG1obGJIQmxjbE5sZUhCeUtITmxlSEJ5S1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdkR2hwY3k1aGJXSnBaM1Z2ZFhOVFpYaHdjaWh6Wlhod2NpazdYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dUlDQmhiV0pwWjNWdmRYTlRaWGh3Y2pvZ1puVnVZM1JwYjI0b2MyVjRjSElzSUhCeWIyZHlZVzBzSUdsdWRtVnljMlVwSUh0Y2JpQWdJQ0JzWlhRZ2NHRjBhQ0E5SUhObGVIQnlMbkJoZEdnc1hHNGdJQ0FnSUNCdVlXMWxJRDBnY0dGMGFDNXdZWEowYzFzd1hTeGNiaUFnSUNBZ0lHbHpRbXh2WTJzZ1BTQndjbTluY21GdElDRTlJRzUxYkd3Z2ZId2dhVzUyWlhKelpTQWhQU0J1ZFd4c08xeHVYRzRnSUNBZ2RHaHBjeTV2Y0dOdlpHVW9KMmRsZEVOdmJuUmxlSFFuTENCd1lYUm9MbVJsY0hSb0tUdGNibHh1SUNBZ0lIUm9hWE11YjNCamIyUmxLQ2R3ZFhOb1VISnZaM0poYlNjc0lIQnliMmR5WVcwcE8xeHVJQ0FnSUhSb2FYTXViM0JqYjJSbEtDZHdkWE5vVUhKdlozSmhiU2NzSUdsdWRtVnljMlVwTzF4dVhHNGdJQ0FnY0dGMGFDNXpkSEpwWTNRZ1BTQjBjblZsTzF4dUlDQWdJSFJvYVhNdVlXTmpaWEIwS0hCaGRHZ3BPMXh1WEc0Z0lDQWdkR2hwY3k1dmNHTnZaR1VvSjJsdWRtOXJaVUZ0WW1sbmRXOTFjeWNzSUc1aGJXVXNJR2x6UW14dlkyc3BPMXh1SUNCOUxGeHVYRzRnSUhOcGJYQnNaVk5sZUhCeU9pQm1kVzVqZEdsdmJpaHpaWGh3Y2lrZ2UxeHVJQ0FnSUd4bGRDQndZWFJvSUQwZ2MyVjRjSEl1Y0dGMGFEdGNiaUFnSUNCd1lYUm9Mbk4wY21samRDQTlJSFJ5ZFdVN1hHNGdJQ0FnZEdocGN5NWhZMk5sY0hRb2NHRjBhQ2s3WEc0Z0lDQWdkR2hwY3k1dmNHTnZaR1VvSjNKbGMyOXNkbVZRYjNOemFXSnNaVXhoYldKa1lTY3BPMXh1SUNCOUxGeHVYRzRnSUdobGJIQmxjbE5sZUhCeU9pQm1kVzVqZEdsdmJpaHpaWGh3Y2l3Z2NISnZaM0poYlN3Z2FXNTJaWEp6WlNrZ2UxeHVJQ0FnSUd4bGRDQndZWEpoYlhNZ1BTQjBhR2x6TG5ObGRIVndSblZzYkUxMWMzUmhZMmhsVUdGeVlXMXpLSE5sZUhCeUxDQndjbTluY21GdExDQnBiblpsY25ObEtTeGNiaUFnSUNBZ0lIQmhkR2dnUFNCelpYaHdjaTV3WVhSb0xGeHVJQ0FnSUNBZ2JtRnRaU0E5SUhCaGRHZ3VjR0Z5ZEhOYk1GMDdYRzVjYmlBZ0lDQnBaaUFvZEdocGN5NXZjSFJwYjI1ekxtdHViM2R1U0dWc2NHVnljMXR1WVcxbFhTa2dlMXh1SUNBZ0lDQWdkR2hwY3k1dmNHTnZaR1VvSjJsdWRtOXJaVXR1YjNkdVNHVnNjR1Z5Snl3Z2NHRnlZVzF6TG14bGJtZDBhQ3dnYm1GdFpTazdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaDBhR2x6TG05d2RHbHZibk11YTI1dmQyNUlaV3h3WlhKelQyNXNlU2tnZTF4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUVWNFkyVndkR2x2YmloY2JpQWdJQ0FnSUNBZ0oxbHZkU0J6Y0dWamFXWnBaV1FnYTI1dmQyNUlaV3h3WlhKelQyNXNlU3dnWW5WMElIVnpaV1FnZEdobElIVnVhMjV2ZDI0Z2FHVnNjR1Z5SUNjZ0t5QnVZVzFsTEZ4dUlDQWdJQ0FnSUNCelpYaHdjbHh1SUNBZ0lDQWdLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2NHRjBhQzV6ZEhKcFkzUWdQU0IwY25WbE8xeHVJQ0FnSUNBZ2NHRjBhQzVtWVd4emVTQTlJSFJ5ZFdVN1hHNWNiaUFnSUNBZ0lIUm9hWE11WVdOalpYQjBLSEJoZEdncE8xeHVJQ0FnSUNBZ2RHaHBjeTV2Y0dOdlpHVW9YRzRnSUNBZ0lDQWdJQ2RwYm5admEyVklaV3h3WlhJbkxGeHVJQ0FnSUNBZ0lDQndZWEpoYlhNdWJHVnVaM1JvTEZ4dUlDQWdJQ0FnSUNCd1lYUm9MbTl5YVdkcGJtRnNMRnh1SUNBZ0lDQWdJQ0JCVTFRdWFHVnNjR1Z5Y3k1emFXMXdiR1ZKWkNod1lYUm9LVnh1SUNBZ0lDQWdLVHRjYmlBZ0lDQjlYRzRnSUgwc1hHNWNiaUFnVUdGMGFFVjRjSEpsYzNOcGIyNDZJR1oxYm1OMGFXOXVLSEJoZEdncElIdGNiaUFnSUNCMGFHbHpMbUZrWkVSbGNIUm9LSEJoZEdndVpHVndkR2dwTzF4dUlDQWdJSFJvYVhNdWIzQmpiMlJsS0NkblpYUkRiMjUwWlhoMEp5d2djR0YwYUM1a1pYQjBhQ2s3WEc1Y2JpQWdJQ0JzWlhRZ2JtRnRaU0E5SUhCaGRHZ3VjR0Z5ZEhOYk1GMHNYRzRnSUNBZ0lDQnpZMjl3WldRZ1BTQkJVMVF1YUdWc2NHVnljeTV6WTI5d1pXUkpaQ2h3WVhSb0tTeGNiaUFnSUNBZ0lHSnNiMk5yVUdGeVlXMUpaQ0E5SUNGd1lYUm9MbVJsY0hSb0lDWW1JQ0Z6WTI5d1pXUWdKaVlnZEdocGN5NWliRzlqYTFCaGNtRnRTVzVrWlhnb2JtRnRaU2s3WEc1Y2JpQWdJQ0JwWmlBb1lteHZZMnRRWVhKaGJVbGtLU0I3WEc0Z0lDQWdJQ0IwYUdsekxtOXdZMjlrWlNnbmJHOXZhM1Z3UW14dlkydFFZWEpoYlNjc0lHSnNiMk5yVUdGeVlXMUpaQ3dnY0dGMGFDNXdZWEowY3lrN1hHNGdJQ0FnZlNCbGJITmxJR2xtSUNnaGJtRnRaU2tnZTF4dUlDQWdJQ0FnTHk4Z1EyOXVkR1Y0ZENCeVpXWmxjbVZ1WTJVc0lHa3VaUzRnWUh0N1ptOXZJQzU5ZldBZ2IzSWdZSHQ3Wm05dklDNHVmWDFnWEc0Z0lDQWdJQ0IwYUdsekxtOXdZMjlrWlNnbmNIVnphRU52Ym5SbGVIUW5LVHRjYmlBZ0lDQjlJR1ZzYzJVZ2FXWWdLSEJoZEdndVpHRjBZU2tnZTF4dUlDQWdJQ0FnZEdocGN5NXZjSFJwYjI1ekxtUmhkR0VnUFNCMGNuVmxPMXh1SUNBZ0lDQWdkR2hwY3k1dmNHTnZaR1VvSjJ4dmIydDFjRVJoZEdFbkxDQndZWFJvTG1SbGNIUm9MQ0J3WVhSb0xuQmhjblJ6TENCd1lYUm9Mbk4wY21samRDazdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhSb2FYTXViM0JqYjJSbEtGeHVJQ0FnSUNBZ0lDQW5iRzl2YTNWd1QyNURiMjUwWlhoMEp5eGNiaUFnSUNBZ0lDQWdjR0YwYUM1d1lYSjBjeXhjYmlBZ0lDQWdJQ0FnY0dGMGFDNW1ZV3h6ZVN4Y2JpQWdJQ0FnSUNBZ2NHRjBhQzV6ZEhKcFkzUXNYRzRnSUNBZ0lDQWdJSE5qYjNCbFpGeHVJQ0FnSUNBZ0tUdGNiaUFnSUNCOVhHNGdJSDBzWEc1Y2JpQWdVM1J5YVc1blRHbDBaWEpoYkRvZ1puVnVZM1JwYjI0b2MzUnlhVzVuS1NCN1hHNGdJQ0FnZEdocGN5NXZjR052WkdVb0ozQjFjMmhUZEhKcGJtY25MQ0J6ZEhKcGJtY3VkbUZzZFdVcE8xeHVJQ0I5TEZ4dVhHNGdJRTUxYldKbGNreHBkR1Z5WVd3NklHWjFibU4wYVc5dUtHNTFiV0psY2lrZ2UxeHVJQ0FnSUhSb2FYTXViM0JqYjJSbEtDZHdkWE5vVEdsMFpYSmhiQ2NzSUc1MWJXSmxjaTUyWVd4MVpTazdYRzRnSUgwc1hHNWNiaUFnUW05dmJHVmhia3hwZEdWeVlXdzZJR1oxYm1OMGFXOXVLR0p2YjJ3cElIdGNiaUFnSUNCMGFHbHpMbTl3WTI5a1pTZ25jSFZ6YUV4cGRHVnlZV3duTENCaWIyOXNMblpoYkhWbEtUdGNiaUFnZlN4Y2JseHVJQ0JWYm1SbFptbHVaV1JNYVhSbGNtRnNPaUJtZFc1amRHbHZiaWdwSUh0Y2JpQWdJQ0IwYUdsekxtOXdZMjlrWlNnbmNIVnphRXhwZEdWeVlXd25MQ0FuZFc1a1pXWnBibVZrSnlrN1hHNGdJSDBzWEc1Y2JpQWdUblZzYkV4cGRHVnlZV3c2SUdaMWJtTjBhVzl1S0NrZ2UxeHVJQ0FnSUhSb2FYTXViM0JqYjJSbEtDZHdkWE5vVEdsMFpYSmhiQ2NzSUNkdWRXeHNKeWs3WEc0Z0lIMHNYRzVjYmlBZ1NHRnphRG9nWm5WdVkzUnBiMjRvYUdGemFDa2dlMXh1SUNBZ0lHeGxkQ0J3WVdseWN5QTlJR2hoYzJndWNHRnBjbk1zWEc0Z0lDQWdJQ0JwSUQwZ01DeGNiaUFnSUNBZ0lHd2dQU0J3WVdseWN5NXNaVzVuZEdnN1hHNWNiaUFnSUNCMGFHbHpMbTl3WTI5a1pTZ25jSFZ6YUVoaGMyZ25LVHRjYmx4dUlDQWdJR1p2Y2lBb095QnBJRHdnYkRzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0IwYUdsekxuQjFjMmhRWVhKaGJTaHdZV2x5YzF0cFhTNTJZV3gxWlNrN1hHNGdJQ0FnZlZ4dUlDQWdJSGRvYVd4bElDaHBMUzBwSUh0Y2JpQWdJQ0FnSUhSb2FYTXViM0JqYjJSbEtDZGhjM05wWjI1VWIwaGhjMmduTENCd1lXbHljMXRwWFM1clpYa3BPMXh1SUNBZ0lIMWNiaUFnSUNCMGFHbHpMbTl3WTI5a1pTZ25jRzl3U0dGemFDY3BPMXh1SUNCOUxGeHVYRzRnSUM4dklFaEZURkJGVWxOY2JpQWdiM0JqYjJSbE9pQm1kVzVqZEdsdmJpaHVZVzFsS1NCN1hHNGdJQ0FnZEdocGN5NXZjR052WkdWekxuQjFjMmdvZTF4dUlDQWdJQ0FnYjNCamIyUmxPaUJ1WVcxbExGeHVJQ0FnSUNBZ1lYSm5jem9nYzJ4cFkyVXVZMkZzYkNoaGNtZDFiV1Z1ZEhNc0lERXBMRnh1SUNBZ0lDQWdiRzlqT2lCMGFHbHpMbk52ZFhKalpVNXZaR1ZiTUYwdWJHOWpYRzRnSUNBZ2ZTazdYRzRnSUgwc1hHNWNiaUFnWVdSa1JHVndkR2c2SUdaMWJtTjBhVzl1S0dSbGNIUm9LU0I3WEc0Z0lDQWdhV1lnS0NGa1pYQjBhQ2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIUm9hWE11ZFhObFJHVndkR2h6SUQwZ2RISjFaVHRjYmlBZ2ZTeGNibHh1SUNCamJHRnpjMmxtZVZObGVIQnlPaUJtZFc1amRHbHZiaWh6Wlhod2Npa2dlMXh1SUNBZ0lHeGxkQ0JwYzFOcGJYQnNaU0E5SUVGVFZDNW9aV3h3WlhKekxuTnBiWEJzWlVsa0tITmxlSEJ5TG5CaGRHZ3BPMXh1WEc0Z0lDQWdiR1YwSUdselFteHZZMnRRWVhKaGJTQTlJR2x6VTJsdGNHeGxJQ1ltSUNFaGRHaHBjeTVpYkc5amExQmhjbUZ0U1c1a1pYZ29jMlY0Y0hJdWNHRjBhQzV3WVhKMGMxc3dYU2s3WEc1Y2JpQWdJQ0F2THlCaElHMTFjM1JoWTJobElHbHpJR0Z1SUdWc2FXZHBZbXhsSUdobGJIQmxjaUJwWmpwY2JpQWdJQ0F2THlBcUlHbDBjeUJwWkNCcGN5QnphVzF3YkdVZ0tHRWdjMmx1WjJ4bElIQmhjblFzSUc1dmRDQmdkR2hwYzJBZ2IzSWdZQzR1WUNsY2JpQWdJQ0JzWlhRZ2FYTklaV3h3WlhJZ1BTQWhhWE5DYkc5amExQmhjbUZ0SUNZbUlFRlRWQzVvWld4d1pYSnpMbWhsYkhCbGNrVjRjSEpsYzNOcGIyNG9jMlY0Y0hJcE8xeHVYRzRnSUNBZ0x5OGdhV1lnWVNCdGRYTjBZV05vWlNCcGN5QmhiaUJsYkdsbmFXSnNaU0JvWld4d1pYSWdZblYwSUc1dmRDQmhJR1JsWm1sdWFYUmxYRzRnSUNBZ0x5OGdhR1ZzY0dWeUxDQnBkQ0JwY3lCaGJXSnBaM1Z2ZFhNc0lHRnVaQ0IzYVd4c0lHSmxJSEpsYzI5c2RtVmtJR2x1SUdFZ2JHRjBaWEpjYmlBZ0lDQXZMeUJ3WVhOeklHOXlJR0YwSUhKMWJuUnBiV1V1WEc0Z0lDQWdiR1YwSUdselJXeHBaMmxpYkdVZ1BTQWhhWE5DYkc5amExQmhjbUZ0SUNZbUlDaHBjMGhsYkhCbGNpQjhmQ0JwYzFOcGJYQnNaU2s3WEc1Y2JpQWdJQ0F2THlCcFppQmhiV0pwWjNWdmRYTXNJSGRsSUdOaGJpQndiM056YVdKc2VTQnlaWE52YkhabElIUm9aU0JoYldKcFozVnBkSGtnYm05M1hHNGdJQ0FnTHk4Z1FXNGdaV3hwWjJsaWJHVWdhR1ZzY0dWeUlHbHpJRzl1WlNCMGFHRjBJR1J2WlhNZ2JtOTBJR2hoZG1VZ1lTQmpiMjF3YkdWNElIQmhkR2dzSUdrdVpTNGdZSFJvYVhNdVptOXZZQ3dnWUM0dUwyWnZiMkFnWlhSakxseHVJQ0FnSUdsbUlDaHBjMFZzYVdkcFlteGxJQ1ltSUNGcGMwaGxiSEJsY2lrZ2UxeHVJQ0FnSUNBZ2JHVjBJRzVoYldVZ1BTQnpaWGh3Y2k1d1lYUm9MbkJoY25Seld6QmRMRnh1SUNBZ0lDQWdJQ0J2Y0hScGIyNXpJRDBnZEdocGN5NXZjSFJwYjI1ek8xeHVJQ0FnSUNBZ2FXWWdLRzl3ZEdsdmJuTXVhMjV2ZDI1SVpXeHdaWEp6VzI1aGJXVmRLU0I3WEc0Z0lDQWdJQ0FnSUdselNHVnNjR1Z5SUQwZ2RISjFaVHRjYmlBZ0lDQWdJSDBnWld4elpTQnBaaUFvYjNCMGFXOXVjeTVyYm05M2JraGxiSEJsY25OUGJteDVLU0I3WEc0Z0lDQWdJQ0FnSUdselJXeHBaMmxpYkdVZ1BTQm1ZV3h6WlR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb2FYTklaV3h3WlhJcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlBbmFHVnNjR1Z5Snp0Y2JpQWdJQ0I5SUdWc2MyVWdhV1lnS0dselJXeHBaMmxpYkdVcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlBbllXMWlhV2QxYjNWekp6dGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnY21WMGRYSnVJQ2R6YVcxd2JHVW5PMXh1SUNBZ0lIMWNiaUFnZlN4Y2JseHVJQ0J3ZFhOb1VHRnlZVzF6T2lCbWRXNWpkR2x2Ymlod1lYSmhiWE1wSUh0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Dd2diQ0E5SUhCaGNtRnRjeTVzWlc1bmRHZzdJR2tnUENCc095QnBLeXNwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVjSFZ6YUZCaGNtRnRLSEJoY21GdGMxdHBYU2s3WEc0Z0lDQWdmVnh1SUNCOUxGeHVYRzRnSUhCMWMyaFFZWEpoYlRvZ1puVnVZM1JwYjI0b2RtRnNLU0I3WEc0Z0lDQWdiR1YwSUhaaGJIVmxJRDBnZG1Gc0xuWmhiSFZsSUNFOUlHNTFiR3dnUHlCMllXd3VkbUZzZFdVZ09pQjJZV3d1YjNKcFoybHVZV3dnZkh3Z0p5YzdYRzVjYmlBZ0lDQnBaaUFvZEdocGN5NXpkSEpwYm1kUVlYSmhiWE1wSUh0Y2JpQWdJQ0FnSUdsbUlDaDJZV3gxWlM1eVpYQnNZV05sS1NCN1hHNGdJQ0FnSUNBZ0lIWmhiSFZsSUQwZ2RtRnNkV1V1Y21Wd2JHRmpaU2d2WGloY1hDNC9YRnd1WEZ3dktTb3ZaeXdnSnljcExuSmxjR3hoWTJVb0wxeGNMeTluTENBbkxpY3BPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0JwWmlBb2RtRnNMbVJsY0hSb0tTQjdYRzRnSUNBZ0lDQWdJSFJvYVhNdVlXUmtSR1Z3ZEdnb2RtRnNMbVJsY0hSb0tUdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lIUm9hWE11YjNCamIyUmxLQ2RuWlhSRGIyNTBaWGgwSnl3Z2RtRnNMbVJsY0hSb0lIeDhJREFwTzF4dUlDQWdJQ0FnZEdocGN5NXZjR052WkdVb0ozQjFjMmhUZEhKcGJtZFFZWEpoYlNjc0lIWmhiSFZsTENCMllXd3VkSGx3WlNrN1hHNWNiaUFnSUNBZ0lHbG1JQ2gyWVd3dWRIbHdaU0E5UFQwZ0oxTjFZa1Y0Y0hKbGMzTnBiMjRuS1NCN1hHNGdJQ0FnSUNBZ0lDOHZJRk4xWWtWNGNISmxjM05wYjI1eklHZGxkQ0JsZG1Gc2RXRjBaV1FnWVc1a0lIQmhjM05sWkNCcGJseHVJQ0FnSUNBZ0lDQXZMeUJwYmlCemRISnBibWNnY0dGeVlXMXpJRzF2WkdVdVhHNGdJQ0FnSUNBZ0lIUm9hWE11WVdOalpYQjBLSFpoYkNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJR2xtSUNoMGFHbHpMblJ5WVdOclNXUnpLU0I3WEc0Z0lDQWdJQ0FnSUd4bGRDQmliRzlqYTFCaGNtRnRTVzVrWlhnN1hHNGdJQ0FnSUNBZ0lHbG1JQ2gyWVd3dWNHRnlkSE1nSmlZZ0lVRlRWQzVvWld4d1pYSnpMbk5qYjNCbFpFbGtLSFpoYkNrZ0ppWWdJWFpoYkM1a1pYQjBhQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lHSnNiMk5yVUdGeVlXMUpibVJsZUNBOUlIUm9hWE11WW14dlkydFFZWEpoYlVsdVpHVjRLSFpoYkM1d1lYSjBjMXN3WFNrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdhV1lnS0dKc2IyTnJVR0Z5WVcxSmJtUmxlQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lHeGxkQ0JpYkc5amExQmhjbUZ0UTJocGJHUWdQU0IyWVd3dWNHRnlkSE11YzJ4cFkyVW9NU2t1YW05cGJpZ25MaWNwTzF4dUlDQWdJQ0FnSUNBZ0lIUm9hWE11YjNCamIyUmxLQ2R3ZFhOb1NXUW5MQ0FuUW14dlkydFFZWEpoYlNjc0lHSnNiMk5yVUdGeVlXMUpibVJsZUN3Z1lteHZZMnRRWVhKaGJVTm9hV3hrS1R0Y2JpQWdJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ0lDQjJZV3gxWlNBOUlIWmhiQzV2Y21sbmFXNWhiQ0I4ZkNCMllXeDFaVHRjYmlBZ0lDQWdJQ0FnSUNCcFppQW9kbUZzZFdVdWNtVndiR0ZqWlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJQ0FnZG1Gc2RXVWdQU0IyWVd4MVpWeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBdWNtVndiR0ZqWlNndlhuUm9hWE1vUHpwY1hDNThKQ2t2TENBbkp5bGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0xuSmxjR3hoWTJVb0wxNWNYQzVjWEM4dkxDQW5KeWxjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdMbkpsY0d4aFkyVW9MMTVjWEM0a0x5d2dKeWNwTzF4dUlDQWdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0FnSUhSb2FYTXViM0JqYjJSbEtDZHdkWE5vU1dRbkxDQjJZV3d1ZEhsd1pTd2dkbUZzZFdVcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQjBhR2x6TG1GalkyVndkQ2gyWVd3cE8xeHVJQ0FnSUgxY2JpQWdmU3hjYmx4dUlDQnpaWFIxY0VaMWJHeE5kWE4wWVdOb1pWQmhjbUZ0Y3pvZ1puVnVZM1JwYjI0b2MyVjRjSElzSUhCeWIyZHlZVzBzSUdsdWRtVnljMlVzSUc5dGFYUkZiWEIwZVNrZ2UxeHVJQ0FnSUd4bGRDQndZWEpoYlhNZ1BTQnpaWGh3Y2k1d1lYSmhiWE03WEc0Z0lDQWdkR2hwY3k1d2RYTm9VR0Z5WVcxektIQmhjbUZ0Y3lrN1hHNWNiaUFnSUNCMGFHbHpMbTl3WTI5a1pTZ25jSFZ6YUZCeWIyZHlZVzBuTENCd2NtOW5jbUZ0S1R0Y2JpQWdJQ0IwYUdsekxtOXdZMjlrWlNnbmNIVnphRkJ5YjJkeVlXMG5MQ0JwYm5abGNuTmxLVHRjYmx4dUlDQWdJR2xtSUNoelpYaHdjaTVvWVhOb0tTQjdYRzRnSUNBZ0lDQjBhR2x6TG1GalkyVndkQ2h6Wlhod2NpNW9ZWE5vS1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdkR2hwY3k1dmNHTnZaR1VvSjJWdGNIUjVTR0Z6YUNjc0lHOXRhWFJGYlhCMGVTazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUhCaGNtRnRjenRjYmlBZ2ZTeGNibHh1SUNCaWJHOWphMUJoY21GdFNXNWtaWGc2SUdaMWJtTjBhVzl1S0c1aGJXVXBJSHRjYmlBZ0lDQm1iM0lnS0Z4dUlDQWdJQ0FnYkdWMElHUmxjSFJvSUQwZ01Dd2diR1Z1SUQwZ2RHaHBjeTV2Y0hScGIyNXpMbUpzYjJOclVHRnlZVzF6TG14bGJtZDBhRHRjYmlBZ0lDQWdJR1JsY0hSb0lEd2diR1Z1TzF4dUlDQWdJQ0FnWkdWd2RHZ3JLMXh1SUNBZ0lDa2dlMXh1SUNBZ0lDQWdiR1YwSUdKc2IyTnJVR0Z5WVcxeklEMGdkR2hwY3k1dmNIUnBiMjV6TG1Kc2IyTnJVR0Z5WVcxelcyUmxjSFJvWFN4Y2JpQWdJQ0FnSUNBZ2NHRnlZVzBnUFNCaWJHOWphMUJoY21GdGN5QW1KaUJwYm1SbGVFOW1LR0pzYjJOclVHRnlZVzF6TENCdVlXMWxLVHRjYmlBZ0lDQWdJR2xtSUNoaWJHOWphMUJoY21GdGN5QW1KaUJ3WVhKaGJTQStQU0F3S1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCYlpHVndkR2dzSUhCaGNtRnRYVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUgxY2JuMDdYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ3Y21WamIyMXdhV3hsS0dsdWNIVjBMQ0J2Y0hScGIyNXpMQ0JsYm5ZcElIdGNiaUFnYVdZZ0tGeHVJQ0FnSUdsdWNIVjBJRDA5SUc1MWJHd2dmSHhjYmlBZ0lDQW9kSGx3Wlc5bUlHbHVjSFYwSUNFOVBTQW5jM1J5YVc1bkp5QW1KaUJwYm5CMWRDNTBlWEJsSUNFOVBTQW5VSEp2WjNKaGJTY3BYRzRnSUNrZ2UxeHVJQ0FnSUhSb2NtOTNJRzVsZHlCRmVHTmxjSFJwYjI0b1hHNGdJQ0FnSUNBbldXOTFJRzExYzNRZ2NHRnpjeUJoSUhOMGNtbHVaeUJ2Y2lCSVlXNWtiR1ZpWVhKeklFRlRWQ0IwYnlCSVlXNWtiR1ZpWVhKekxuQnlaV052YlhCcGJHVXVJRmx2ZFNCd1lYTnpaV1FnSnlBclhHNGdJQ0FnSUNBZ0lHbHVjSFYwWEc0Z0lDQWdLVHRjYmlBZ2ZWeHVYRzRnSUc5d2RHbHZibk1nUFNCdmNIUnBiMjV6SUh4OElIdDlPMXh1SUNCcFppQW9JU2duWkdGMFlTY2dhVzRnYjNCMGFXOXVjeWtwSUh0Y2JpQWdJQ0J2Y0hScGIyNXpMbVJoZEdFZ1BTQjBjblZsTzF4dUlDQjlYRzRnSUdsbUlDaHZjSFJwYjI1ekxtTnZiWEJoZENrZ2UxeHVJQ0FnSUc5d2RHbHZibk11ZFhObFJHVndkR2h6SUQwZ2RISjFaVHRjYmlBZ2ZWeHVYRzRnSUd4bGRDQmhjM1FnUFNCbGJuWXVjR0Z5YzJVb2FXNXdkWFFzSUc5d2RHbHZibk1wTEZ4dUlDQWdJR1Z1ZG1seWIyNXRaVzUwSUQwZ2JtVjNJR1Z1ZGk1RGIyMXdhV3hsY2lncExtTnZiWEJwYkdVb1lYTjBMQ0J2Y0hScGIyNXpLVHRjYmlBZ2NtVjBkWEp1SUc1bGR5Qmxibll1U21GMllWTmpjbWx3ZEVOdmJYQnBiR1Z5S0NrdVkyOXRjR2xzWlNobGJuWnBjbTl1YldWdWRDd2diM0IwYVc5dWN5azdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCamIyMXdhV3hsS0dsdWNIVjBMQ0J2Y0hScGIyNXpJRDBnZTMwc0lHVnVkaWtnZTF4dUlDQnBaaUFvWEc0Z0lDQWdhVzV3ZFhRZ1BUMGdiblZzYkNCOGZGeHVJQ0FnSUNoMGVYQmxiMllnYVc1d2RYUWdJVDA5SUNkemRISnBibWNuSUNZbUlHbHVjSFYwTG5SNWNHVWdJVDA5SUNkUWNtOW5jbUZ0SnlsY2JpQWdLU0I3WEc0Z0lDQWdkR2h5YjNjZ2JtVjNJRVY0WTJWd2RHbHZiaWhjYmlBZ0lDQWdJQ2RaYjNVZ2JYVnpkQ0J3WVhOeklHRWdjM1J5YVc1bklHOXlJRWhoYm1Sc1pXSmhjbk1nUVZOVUlIUnZJRWhoYm1Sc1pXSmhjbk11WTI5dGNHbHNaUzRnV1c5MUlIQmhjM05sWkNBbklDdGNiaUFnSUNBZ0lDQWdhVzV3ZFhSY2JpQWdJQ0FwTzF4dUlDQjlYRzVjYmlBZ2IzQjBhVzl1Y3lBOUlHVjRkR1Z1WkNoN2ZTd2diM0IwYVc5dWN5azdYRzRnSUdsbUlDZ2hLQ2RrWVhSaEp5QnBiaUJ2Y0hScGIyNXpLU2tnZTF4dUlDQWdJRzl3ZEdsdmJuTXVaR0YwWVNBOUlIUnlkV1U3WEc0Z0lIMWNiaUFnYVdZZ0tHOXdkR2x2Ym5NdVkyOXRjR0YwS1NCN1hHNGdJQ0FnYjNCMGFXOXVjeTUxYzJWRVpYQjBhSE1nUFNCMGNuVmxPMXh1SUNCOVhHNWNiaUFnYkdWMElHTnZiWEJwYkdWa08xeHVYRzRnSUdaMWJtTjBhVzl1SUdOdmJYQnBiR1ZKYm5CMWRDZ3BJSHRjYmlBZ0lDQnNaWFFnWVhOMElEMGdaVzUyTG5CaGNuTmxLR2x1Y0hWMExDQnZjSFJwYjI1ektTeGNiaUFnSUNBZ0lHVnVkbWx5YjI1dFpXNTBJRDBnYm1WM0lHVnVkaTVEYjIxd2FXeGxjaWdwTG1OdmJYQnBiR1VvWVhOMExDQnZjSFJwYjI1ektTeGNiaUFnSUNBZ0lIUmxiWEJzWVhSbFUzQmxZeUE5SUc1bGR5Qmxibll1U21GMllWTmpjbWx3ZEVOdmJYQnBiR1Z5S0NrdVkyOXRjR2xzWlNoY2JpQWdJQ0FnSUNBZ1pXNTJhWEp2Ym0xbGJuUXNYRzRnSUNBZ0lDQWdJRzl3ZEdsdmJuTXNYRzRnSUNBZ0lDQWdJSFZ1WkdWbWFXNWxaQ3hjYmlBZ0lDQWdJQ0FnZEhKMVpWeHVJQ0FnSUNBZ0tUdGNiaUFnSUNCeVpYUjFjbTRnWlc1MkxuUmxiWEJzWVhSbEtIUmxiWEJzWVhSbFUzQmxZeWs3WEc0Z0lIMWNibHh1SUNBdkx5QlVaVzF3YkdGMFpTQnBjeUJ2Ym14NUlHTnZiWEJwYkdWa0lHOXVJR1pwY25OMElIVnpaU0JoYm1RZ1kyRmphR1ZrSUdGbWRHVnlJSFJvWVhRZ2NHOXBiblF1WEc0Z0lHWjFibU4wYVc5dUlISmxkQ2hqYjI1MFpYaDBMQ0JsZUdWalQzQjBhVzl1Y3lrZ2UxeHVJQ0FnSUdsbUlDZ2hZMjl0Y0dsc1pXUXBJSHRjYmlBZ0lDQWdJR052YlhCcGJHVmtJRDBnWTI5dGNHbHNaVWx1Y0hWMEtDazdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJqYjIxd2FXeGxaQzVqWVd4c0tIUm9hWE1zSUdOdmJuUmxlSFFzSUdWNFpXTlBjSFJwYjI1ektUdGNiaUFnZlZ4dUlDQnlaWFF1WDNObGRIVndJRDBnWm5WdVkzUnBiMjRvYzJWMGRYQlBjSFJwYjI1ektTQjdYRzRnSUNBZ2FXWWdLQ0ZqYjIxd2FXeGxaQ2tnZTF4dUlDQWdJQ0FnWTI5dGNHbHNaV1FnUFNCamIyMXdhV3hsU1c1d2RYUW9LVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUdOdmJYQnBiR1ZrTGw5elpYUjFjQ2h6WlhSMWNFOXdkR2x2Ym5NcE8xeHVJQ0I5TzF4dUlDQnlaWFF1WDJOb2FXeGtJRDBnWm5WdVkzUnBiMjRvYVN3Z1pHRjBZU3dnWW14dlkydFFZWEpoYlhNc0lHUmxjSFJvY3lrZ2UxeHVJQ0FnSUdsbUlDZ2hZMjl0Y0dsc1pXUXBJSHRjYmlBZ0lDQWdJR052YlhCcGJHVmtJRDBnWTI5dGNHbHNaVWx1Y0hWMEtDazdYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUJqYjIxd2FXeGxaQzVmWTJocGJHUW9hU3dnWkdGMFlTd2dZbXh2WTJ0UVlYSmhiWE1zSUdSbGNIUm9jeWs3WEc0Z0lIMDdYRzRnSUhKbGRIVnliaUJ5WlhRN1hHNTlYRzVjYm1aMWJtTjBhVzl1SUdGeVowVnhkV0ZzY3loaExDQmlLU0I3WEc0Z0lHbG1JQ2hoSUQwOVBTQmlLU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUnlkV1U3WEc0Z0lIMWNibHh1SUNCcFppQW9hWE5CY25KaGVTaGhLU0FtSmlCcGMwRnljbUY1S0dJcElDWW1JR0V1YkdWdVozUm9JRDA5UFNCaUxteGxibWQwYUNrZ2UxeHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z1lTNXNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJQ0FnYVdZZ0tDRmhjbWRGY1hWaGJITW9ZVnRwWFN3Z1lsdHBYU2twSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdaaGJITmxPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnZEhKMVpUdGNiaUFnZlZ4dWZWeHVYRzVtZFc1amRHbHZiaUIwY21GdWMyWnZjbTFNYVhSbGNtRnNWRzlRWVhSb0tITmxlSEJ5S1NCN1hHNGdJR2xtSUNnaGMyVjRjSEl1Y0dGMGFDNXdZWEowY3lrZ2UxeHVJQ0FnSUd4bGRDQnNhWFJsY21Gc0lEMGdjMlY0Y0hJdWNHRjBhRHRjYmlBZ0lDQXZMeUJEWVhOMGFXNW5JSFJ2SUhOMGNtbHVaeUJvWlhKbElIUnZJRzFoYTJVZ1ptRnNjMlVnWVc1a0lEQWdiR2wwWlhKaGJDQjJZV3gxWlhNZ2NHeGhlU0J1YVdObGJIa2dkMmwwYUNCMGFHVWdjbVZ6ZEZ4dUlDQWdJQzh2SUc5bUlIUm9aU0J6ZVhOMFpXMHVYRzRnSUNBZ2MyVjRjSEl1Y0dGMGFDQTlJSHRjYmlBZ0lDQWdJSFI1Y0dVNklDZFFZWFJvUlhod2NtVnpjMmx2Ymljc1hHNGdJQ0FnSUNCa1lYUmhPaUJtWVd4elpTeGNiaUFnSUNBZ0lHUmxjSFJvT2lBd0xGeHVJQ0FnSUNBZ2NHRnlkSE02SUZ0c2FYUmxjbUZzTG05eWFXZHBibUZzSUNzZ0p5ZGRMRnh1SUNBZ0lDQWdiM0pwWjJsdVlXdzZJR3hwZEdWeVlXd3ViM0pwWjJsdVlXd2dLeUFuSnl4Y2JpQWdJQ0FnSUd4dll6b2diR2wwWlhKaGJDNXNiMk5jYmlBZ0lDQjlPMXh1SUNCOVhHNTlYRzRpWFgwPVxuIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgaW50VG9DaGFyTWFwID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8nLnNwbGl0KCcnKTtcblxuLyoqXG4gKiBFbmNvZGUgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2Ugb2YgMCB0byA2MyB0byBhIHNpbmdsZSBiYXNlIDY0IGRpZ2l0LlxuICovXG5leHBvcnRzLmVuY29kZSA9IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgaWYgKDAgPD0gbnVtYmVyICYmIG51bWJlciA8IGludFRvQ2hhck1hcC5sZW5ndGgpIHtcbiAgICByZXR1cm4gaW50VG9DaGFyTWFwW251bWJlcl07XG4gIH1cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk11c3QgYmUgYmV0d2VlbiAwIGFuZCA2MzogXCIgKyBudW1iZXIpO1xufTtcblxuLyoqXG4gKiBEZWNvZGUgYSBzaW5nbGUgYmFzZSA2NCBjaGFyYWN0ZXIgY29kZSBkaWdpdCB0byBhbiBpbnRlZ2VyLiBSZXR1cm5zIC0xIG9uXG4gKiBmYWlsdXJlLlxuICovXG5leHBvcnRzLmRlY29kZSA9IGZ1bmN0aW9uIChjaGFyQ29kZSkge1xuICB2YXIgYmlnQSA9IDY1OyAgICAgLy8gJ0EnXG4gIHZhciBiaWdaID0gOTA7ICAgICAvLyAnWidcblxuICB2YXIgbGl0dGxlQSA9IDk3OyAgLy8gJ2EnXG4gIHZhciBsaXR0bGVaID0gMTIyOyAvLyAneidcblxuICB2YXIgemVybyA9IDQ4OyAgICAgLy8gJzAnXG4gIHZhciBuaW5lID0gNTc7ICAgICAvLyAnOSdcblxuICB2YXIgcGx1cyA9IDQzOyAgICAgLy8gJysnXG4gIHZhciBzbGFzaCA9IDQ3OyAgICAvLyAnLydcblxuICB2YXIgbGl0dGxlT2Zmc2V0ID0gMjY7XG4gIHZhciBudW1iZXJPZmZzZXQgPSA1MjtcblxuICAvLyAwIC0gMjU6IEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaXG4gIGlmIChiaWdBIDw9IGNoYXJDb2RlICYmIGNoYXJDb2RlIDw9IGJpZ1opIHtcbiAgICByZXR1cm4gKGNoYXJDb2RlIC0gYmlnQSk7XG4gIH1cblxuICAvLyAyNiAtIDUxOiBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5elxuICBpZiAobGl0dGxlQSA8PSBjaGFyQ29kZSAmJiBjaGFyQ29kZSA8PSBsaXR0bGVaKSB7XG4gICAgcmV0dXJuIChjaGFyQ29kZSAtIGxpdHRsZUEgKyBsaXR0bGVPZmZzZXQpO1xuICB9XG5cbiAgLy8gNTIgLSA2MTogMDEyMzQ1Njc4OVxuICBpZiAoemVybyA8PSBjaGFyQ29kZSAmJiBjaGFyQ29kZSA8PSBuaW5lKSB7XG4gICAgcmV0dXJuIChjaGFyQ29kZSAtIHplcm8gKyBudW1iZXJPZmZzZXQpO1xuICB9XG5cbiAgLy8gNjI6ICtcbiAgaWYgKGNoYXJDb2RlID09IHBsdXMpIHtcbiAgICByZXR1cm4gNjI7XG4gIH1cblxuICAvLyA2MzogL1xuICBpZiAoY2hhckNvZGUgPT0gc2xhc2gpIHtcbiAgICByZXR1cm4gNjM7XG4gIH1cblxuICAvLyBJbnZhbGlkIGJhc2U2NCBkaWdpdC5cbiAgcmV0dXJuIC0xO1xufTtcbiIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKlxuICogQmFzZWQgb24gdGhlIEJhc2UgNjQgVkxRIGltcGxlbWVudGF0aW9uIGluIENsb3N1cmUgQ29tcGlsZXI6XG4gKiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nsb3N1cmUtY29tcGlsZXIvc291cmNlL2Jyb3dzZS90cnVuay9zcmMvY29tL2dvb2dsZS9kZWJ1Z2dpbmcvc291cmNlbWFwL0Jhc2U2NFZMUS5qYXZhXG4gKlxuICogQ29weXJpZ2h0IDIwMTEgVGhlIENsb3N1cmUgQ29tcGlsZXIgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZVxuICogbWV0OlxuICpcbiAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlXG4gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZ1xuICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkXG4gKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKiAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzXG4gKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWRcbiAqICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTXG4gKiBcIkFTIElTXCIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UXG4gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1JcbiAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUXG4gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCxcbiAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1RcbiAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLFxuICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZXG4gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0VcbiAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKi9cblxudmFyIGJhc2U2NCA9IHJlcXVpcmUoJy4vYmFzZTY0Jyk7XG5cbi8vIEEgc2luZ2xlIGJhc2UgNjQgZGlnaXQgY2FuIGNvbnRhaW4gNiBiaXRzIG9mIGRhdGEuIEZvciB0aGUgYmFzZSA2NCB2YXJpYWJsZVxuLy8gbGVuZ3RoIHF1YW50aXRpZXMgd2UgdXNlIGluIHRoZSBzb3VyY2UgbWFwIHNwZWMsIHRoZSBmaXJzdCBiaXQgaXMgdGhlIHNpZ24sXG4vLyB0aGUgbmV4dCBmb3VyIGJpdHMgYXJlIHRoZSBhY3R1YWwgdmFsdWUsIGFuZCB0aGUgNnRoIGJpdCBpcyB0aGVcbi8vIGNvbnRpbnVhdGlvbiBiaXQuIFRoZSBjb250aW51YXRpb24gYml0IHRlbGxzIHVzIHdoZXRoZXIgdGhlcmUgYXJlIG1vcmVcbi8vIGRpZ2l0cyBpbiB0aGlzIHZhbHVlIGZvbGxvd2luZyB0aGlzIGRpZ2l0LlxuLy9cbi8vICAgQ29udGludWF0aW9uXG4vLyAgIHwgICAgU2lnblxuLy8gICB8ICAgIHxcbi8vICAgViAgICBWXG4vLyAgIDEwMTAxMVxuXG52YXIgVkxRX0JBU0VfU0hJRlQgPSA1O1xuXG4vLyBiaW5hcnk6IDEwMDAwMFxudmFyIFZMUV9CQVNFID0gMSA8PCBWTFFfQkFTRV9TSElGVDtcblxuLy8gYmluYXJ5OiAwMTExMTFcbnZhciBWTFFfQkFTRV9NQVNLID0gVkxRX0JBU0UgLSAxO1xuXG4vLyBiaW5hcnk6IDEwMDAwMFxudmFyIFZMUV9DT05USU5VQVRJT05fQklUID0gVkxRX0JBU0U7XG5cbi8qKlxuICogQ29udmVydHMgZnJvbSBhIHR3by1jb21wbGVtZW50IHZhbHVlIHRvIGEgdmFsdWUgd2hlcmUgdGhlIHNpZ24gYml0IGlzXG4gKiBwbGFjZWQgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdC4gIEZvciBleGFtcGxlLCBhcyBkZWNpbWFsczpcbiAqICAgMSBiZWNvbWVzIDIgKDEwIGJpbmFyeSksIC0xIGJlY29tZXMgMyAoMTEgYmluYXJ5KVxuICogICAyIGJlY29tZXMgNCAoMTAwIGJpbmFyeSksIC0yIGJlY29tZXMgNSAoMTAxIGJpbmFyeSlcbiAqL1xuZnVuY3Rpb24gdG9WTFFTaWduZWQoYVZhbHVlKSB7XG4gIHJldHVybiBhVmFsdWUgPCAwXG4gICAgPyAoKC1hVmFsdWUpIDw8IDEpICsgMVxuICAgIDogKGFWYWx1ZSA8PCAxKSArIDA7XG59XG5cbi8qKlxuICogQ29udmVydHMgdG8gYSB0d28tY29tcGxlbWVudCB2YWx1ZSBmcm9tIGEgdmFsdWUgd2hlcmUgdGhlIHNpZ24gYml0IGlzXG4gKiBwbGFjZWQgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdC4gIEZvciBleGFtcGxlLCBhcyBkZWNpbWFsczpcbiAqICAgMiAoMTAgYmluYXJ5KSBiZWNvbWVzIDEsIDMgKDExIGJpbmFyeSkgYmVjb21lcyAtMVxuICogICA0ICgxMDAgYmluYXJ5KSBiZWNvbWVzIDIsIDUgKDEwMSBiaW5hcnkpIGJlY29tZXMgLTJcbiAqL1xuZnVuY3Rpb24gZnJvbVZMUVNpZ25lZChhVmFsdWUpIHtcbiAgdmFyIGlzTmVnYXRpdmUgPSAoYVZhbHVlICYgMSkgPT09IDE7XG4gIHZhciBzaGlmdGVkID0gYVZhbHVlID4+IDE7XG4gIHJldHVybiBpc05lZ2F0aXZlXG4gICAgPyAtc2hpZnRlZFxuICAgIDogc2hpZnRlZDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBiYXNlIDY0IFZMUSBlbmNvZGVkIHZhbHVlLlxuICovXG5leHBvcnRzLmVuY29kZSA9IGZ1bmN0aW9uIGJhc2U2NFZMUV9lbmNvZGUoYVZhbHVlKSB7XG4gIHZhciBlbmNvZGVkID0gXCJcIjtcbiAgdmFyIGRpZ2l0O1xuXG4gIHZhciB2bHEgPSB0b1ZMUVNpZ25lZChhVmFsdWUpO1xuXG4gIGRvIHtcbiAgICBkaWdpdCA9IHZscSAmIFZMUV9CQVNFX01BU0s7XG4gICAgdmxxID4+Pj0gVkxRX0JBU0VfU0hJRlQ7XG4gICAgaWYgKHZscSA+IDApIHtcbiAgICAgIC8vIFRoZXJlIGFyZSBzdGlsbCBtb3JlIGRpZ2l0cyBpbiB0aGlzIHZhbHVlLCBzbyB3ZSBtdXN0IG1ha2Ugc3VyZSB0aGVcbiAgICAgIC8vIGNvbnRpbnVhdGlvbiBiaXQgaXMgbWFya2VkLlxuICAgICAgZGlnaXQgfD0gVkxRX0NPTlRJTlVBVElPTl9CSVQ7XG4gICAgfVxuICAgIGVuY29kZWQgKz0gYmFzZTY0LmVuY29kZShkaWdpdCk7XG4gIH0gd2hpbGUgKHZscSA+IDApO1xuXG4gIHJldHVybiBlbmNvZGVkO1xufTtcblxuLyoqXG4gKiBEZWNvZGVzIHRoZSBuZXh0IGJhc2UgNjQgVkxRIHZhbHVlIGZyb20gdGhlIGdpdmVuIHN0cmluZyBhbmQgcmV0dXJucyB0aGVcbiAqIHZhbHVlIGFuZCB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nIHZpYSB0aGUgb3V0IHBhcmFtZXRlci5cbiAqL1xuZXhwb3J0cy5kZWNvZGUgPSBmdW5jdGlvbiBiYXNlNjRWTFFfZGVjb2RlKGFTdHIsIGFJbmRleCwgYU91dFBhcmFtKSB7XG4gIHZhciBzdHJMZW4gPSBhU3RyLmxlbmd0aDtcbiAgdmFyIHJlc3VsdCA9IDA7XG4gIHZhciBzaGlmdCA9IDA7XG4gIHZhciBjb250aW51YXRpb24sIGRpZ2l0O1xuXG4gIGRvIHtcbiAgICBpZiAoYUluZGV4ID49IHN0ckxlbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgbW9yZSBkaWdpdHMgaW4gYmFzZSA2NCBWTFEgdmFsdWUuXCIpO1xuICAgIH1cblxuICAgIGRpZ2l0ID0gYmFzZTY0LmRlY29kZShhU3RyLmNoYXJDb2RlQXQoYUluZGV4KyspKTtcbiAgICBpZiAoZGlnaXQgPT09IC0xKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJhc2U2NCBkaWdpdDogXCIgKyBhU3RyLmNoYXJBdChhSW5kZXggLSAxKSk7XG4gICAgfVxuXG4gICAgY29udGludWF0aW9uID0gISEoZGlnaXQgJiBWTFFfQ09OVElOVUFUSU9OX0JJVCk7XG4gICAgZGlnaXQgJj0gVkxRX0JBU0VfTUFTSztcbiAgICByZXN1bHQgPSByZXN1bHQgKyAoZGlnaXQgPDwgc2hpZnQpO1xuICAgIHNoaWZ0ICs9IFZMUV9CQVNFX1NISUZUO1xuICB9IHdoaWxlIChjb250aW51YXRpb24pO1xuXG4gIGFPdXRQYXJhbS52YWx1ZSA9IGZyb21WTFFTaWduZWQocmVzdWx0KTtcbiAgYU91dFBhcmFtLnJlc3QgPSBhSW5kZXg7XG59O1xuIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG4vKipcbiAqIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIGdldHRpbmcgdmFsdWVzIGZyb20gcGFyYW1ldGVyL29wdGlvbnNcbiAqIG9iamVjdHMuXG4gKlxuICogQHBhcmFtIGFyZ3MgVGhlIG9iamVjdCB3ZSBhcmUgZXh0cmFjdGluZyB2YWx1ZXMgZnJvbVxuICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHdlIGFyZSBnZXR0aW5nLlxuICogQHBhcmFtIGRlZmF1bHRWYWx1ZSBBbiBvcHRpb25hbCB2YWx1ZSB0byByZXR1cm4gaWYgdGhlIHByb3BlcnR5IGlzIG1pc3NpbmdcbiAqIGZyb20gdGhlIG9iamVjdC4gSWYgdGhpcyBpcyBub3Qgc3BlY2lmaWVkIGFuZCB0aGUgcHJvcGVydHkgaXMgbWlzc2luZywgYW5cbiAqIGVycm9yIHdpbGwgYmUgdGhyb3duLlxuICovXG5mdW5jdGlvbiBnZXRBcmcoYUFyZ3MsIGFOYW1lLCBhRGVmYXVsdFZhbHVlKSB7XG4gIGlmIChhTmFtZSBpbiBhQXJncykge1xuICAgIHJldHVybiBhQXJnc1thTmFtZV07XG4gIH0gZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMykge1xuICAgIHJldHVybiBhRGVmYXVsdFZhbHVlO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignXCInICsgYU5hbWUgKyAnXCIgaXMgYSByZXF1aXJlZCBhcmd1bWVudC4nKTtcbiAgfVxufVxuZXhwb3J0cy5nZXRBcmcgPSBnZXRBcmc7XG5cbnZhciB1cmxSZWdleHAgPSAvXig/OihbXFx3K1xcLS5dKyk6KT9cXC9cXC8oPzooXFx3KzpcXHcrKUApPyhbXFx3Li1dKikoPzo6KFxcZCspKT8oLiopJC87XG52YXIgZGF0YVVybFJlZ2V4cCA9IC9eZGF0YTouK1xcLC4rJC87XG5cbmZ1bmN0aW9uIHVybFBhcnNlKGFVcmwpIHtcbiAgdmFyIG1hdGNoID0gYVVybC5tYXRjaCh1cmxSZWdleHApO1xuICBpZiAoIW1hdGNoKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzY2hlbWU6IG1hdGNoWzFdLFxuICAgIGF1dGg6IG1hdGNoWzJdLFxuICAgIGhvc3Q6IG1hdGNoWzNdLFxuICAgIHBvcnQ6IG1hdGNoWzRdLFxuICAgIHBhdGg6IG1hdGNoWzVdXG4gIH07XG59XG5leHBvcnRzLnVybFBhcnNlID0gdXJsUGFyc2U7XG5cbmZ1bmN0aW9uIHVybEdlbmVyYXRlKGFQYXJzZWRVcmwpIHtcbiAgdmFyIHVybCA9ICcnO1xuICBpZiAoYVBhcnNlZFVybC5zY2hlbWUpIHtcbiAgICB1cmwgKz0gYVBhcnNlZFVybC5zY2hlbWUgKyAnOic7XG4gIH1cbiAgdXJsICs9ICcvLyc7XG4gIGlmIChhUGFyc2VkVXJsLmF1dGgpIHtcbiAgICB1cmwgKz0gYVBhcnNlZFVybC5hdXRoICsgJ0AnO1xuICB9XG4gIGlmIChhUGFyc2VkVXJsLmhvc3QpIHtcbiAgICB1cmwgKz0gYVBhcnNlZFVybC5ob3N0O1xuICB9XG4gIGlmIChhUGFyc2VkVXJsLnBvcnQpIHtcbiAgICB1cmwgKz0gXCI6XCIgKyBhUGFyc2VkVXJsLnBvcnRcbiAgfVxuICBpZiAoYVBhcnNlZFVybC5wYXRoKSB7XG4gICAgdXJsICs9IGFQYXJzZWRVcmwucGF0aDtcbiAgfVxuICByZXR1cm4gdXJsO1xufVxuZXhwb3J0cy51cmxHZW5lcmF0ZSA9IHVybEdlbmVyYXRlO1xuXG4vKipcbiAqIE5vcm1hbGl6ZXMgYSBwYXRoLCBvciB0aGUgcGF0aCBwb3J0aW9uIG9mIGEgVVJMOlxuICpcbiAqIC0gUmVwbGFjZXMgY29uc2VjdXRpdmUgc2xhc2hlcyB3aXRoIG9uZSBzbGFzaC5cbiAqIC0gUmVtb3ZlcyB1bm5lY2Vzc2FyeSAnLicgcGFydHMuXG4gKiAtIFJlbW92ZXMgdW5uZWNlc3NhcnkgJzxkaXI+Ly4uJyBwYXJ0cy5cbiAqXG4gKiBCYXNlZCBvbiBjb2RlIGluIHRoZSBOb2RlLmpzICdwYXRoJyBjb3JlIG1vZHVsZS5cbiAqXG4gKiBAcGFyYW0gYVBhdGggVGhlIHBhdGggb3IgdXJsIHRvIG5vcm1hbGl6ZS5cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplKGFQYXRoKSB7XG4gIHZhciBwYXRoID0gYVBhdGg7XG4gIHZhciB1cmwgPSB1cmxQYXJzZShhUGF0aCk7XG4gIGlmICh1cmwpIHtcbiAgICBpZiAoIXVybC5wYXRoKSB7XG4gICAgICByZXR1cm4gYVBhdGg7XG4gICAgfVxuICAgIHBhdGggPSB1cmwucGF0aDtcbiAgfVxuICB2YXIgaXNBYnNvbHV0ZSA9IGV4cG9ydHMuaXNBYnNvbHV0ZShwYXRoKTtcblxuICB2YXIgcGFydHMgPSBwYXRoLnNwbGl0KC9cXC8rLyk7XG4gIGZvciAodmFyIHBhcnQsIHVwID0gMCwgaSA9IHBhcnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgcGFydCA9IHBhcnRzW2ldO1xuICAgIGlmIChwYXJ0ID09PSAnLicpIHtcbiAgICAgIHBhcnRzLnNwbGljZShpLCAxKTtcbiAgICB9IGVsc2UgaWYgKHBhcnQgPT09ICcuLicpIHtcbiAgICAgIHVwKys7XG4gICAgfSBlbHNlIGlmICh1cCA+IDApIHtcbiAgICAgIGlmIChwYXJ0ID09PSAnJykge1xuICAgICAgICAvLyBUaGUgZmlyc3QgcGFydCBpcyBibGFuayBpZiB0aGUgcGF0aCBpcyBhYnNvbHV0ZS4gVHJ5aW5nIHRvIGdvXG4gICAgICAgIC8vIGFib3ZlIHRoZSByb290IGlzIGEgbm8tb3AuIFRoZXJlZm9yZSB3ZSBjYW4gcmVtb3ZlIGFsbCAnLi4nIHBhcnRzXG4gICAgICAgIC8vIGRpcmVjdGx5IGFmdGVyIHRoZSByb290LlxuICAgICAgICBwYXJ0cy5zcGxpY2UoaSArIDEsIHVwKTtcbiAgICAgICAgdXAgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFydHMuc3BsaWNlKGksIDIpO1xuICAgICAgICB1cC0tO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBwYXRoID0gcGFydHMuam9pbignLycpO1xuXG4gIGlmIChwYXRoID09PSAnJykge1xuICAgIHBhdGggPSBpc0Fic29sdXRlID8gJy8nIDogJy4nO1xuICB9XG5cbiAgaWYgKHVybCkge1xuICAgIHVybC5wYXRoID0gcGF0aDtcbiAgICByZXR1cm4gdXJsR2VuZXJhdGUodXJsKTtcbiAgfVxuICByZXR1cm4gcGF0aDtcbn1cbmV4cG9ydHMubm9ybWFsaXplID0gbm9ybWFsaXplO1xuXG4vKipcbiAqIEpvaW5zIHR3byBwYXRocy9VUkxzLlxuICpcbiAqIEBwYXJhbSBhUm9vdCBUaGUgcm9vdCBwYXRoIG9yIFVSTC5cbiAqIEBwYXJhbSBhUGF0aCBUaGUgcGF0aCBvciBVUkwgdG8gYmUgam9pbmVkIHdpdGggdGhlIHJvb3QuXG4gKlxuICogLSBJZiBhUGF0aCBpcyBhIFVSTCBvciBhIGRhdGEgVVJJLCBhUGF0aCBpcyByZXR1cm5lZCwgdW5sZXNzIGFQYXRoIGlzIGFcbiAqICAgc2NoZW1lLXJlbGF0aXZlIFVSTDogVGhlbiB0aGUgc2NoZW1lIG9mIGFSb290LCBpZiBhbnksIGlzIHByZXBlbmRlZFxuICogICBmaXJzdC5cbiAqIC0gT3RoZXJ3aXNlIGFQYXRoIGlzIGEgcGF0aC4gSWYgYVJvb3QgaXMgYSBVUkwsIHRoZW4gaXRzIHBhdGggcG9ydGlvblxuICogICBpcyB1cGRhdGVkIHdpdGggdGhlIHJlc3VsdCBhbmQgYVJvb3QgaXMgcmV0dXJuZWQuIE90aGVyd2lzZSB0aGUgcmVzdWx0XG4gKiAgIGlzIHJldHVybmVkLlxuICogICAtIElmIGFQYXRoIGlzIGFic29sdXRlLCB0aGUgcmVzdWx0IGlzIGFQYXRoLlxuICogICAtIE90aGVyd2lzZSB0aGUgdHdvIHBhdGhzIGFyZSBqb2luZWQgd2l0aCBhIHNsYXNoLlxuICogLSBKb2luaW5nIGZvciBleGFtcGxlICdodHRwOi8vJyBhbmQgJ3d3dy5leGFtcGxlLmNvbScgaXMgYWxzbyBzdXBwb3J0ZWQuXG4gKi9cbmZ1bmN0aW9uIGpvaW4oYVJvb3QsIGFQYXRoKSB7XG4gIGlmIChhUm9vdCA9PT0gXCJcIikge1xuICAgIGFSb290ID0gXCIuXCI7XG4gIH1cbiAgaWYgKGFQYXRoID09PSBcIlwiKSB7XG4gICAgYVBhdGggPSBcIi5cIjtcbiAgfVxuICB2YXIgYVBhdGhVcmwgPSB1cmxQYXJzZShhUGF0aCk7XG4gIHZhciBhUm9vdFVybCA9IHVybFBhcnNlKGFSb290KTtcbiAgaWYgKGFSb290VXJsKSB7XG4gICAgYVJvb3QgPSBhUm9vdFVybC5wYXRoIHx8ICcvJztcbiAgfVxuXG4gIC8vIGBqb2luKGZvbywgJy8vd3d3LmV4YW1wbGUub3JnJylgXG4gIGlmIChhUGF0aFVybCAmJiAhYVBhdGhVcmwuc2NoZW1lKSB7XG4gICAgaWYgKGFSb290VXJsKSB7XG4gICAgICBhUGF0aFVybC5zY2hlbWUgPSBhUm9vdFVybC5zY2hlbWU7XG4gICAgfVxuICAgIHJldHVybiB1cmxHZW5lcmF0ZShhUGF0aFVybCk7XG4gIH1cblxuICBpZiAoYVBhdGhVcmwgfHwgYVBhdGgubWF0Y2goZGF0YVVybFJlZ2V4cCkpIHtcbiAgICByZXR1cm4gYVBhdGg7XG4gIH1cblxuICAvLyBgam9pbignaHR0cDovLycsICd3d3cuZXhhbXBsZS5jb20nKWBcbiAgaWYgKGFSb290VXJsICYmICFhUm9vdFVybC5ob3N0ICYmICFhUm9vdFVybC5wYXRoKSB7XG4gICAgYVJvb3RVcmwuaG9zdCA9IGFQYXRoO1xuICAgIHJldHVybiB1cmxHZW5lcmF0ZShhUm9vdFVybCk7XG4gIH1cblxuICB2YXIgam9pbmVkID0gYVBhdGguY2hhckF0KDApID09PSAnLydcbiAgICA/IGFQYXRoXG4gICAgOiBub3JtYWxpemUoYVJvb3QucmVwbGFjZSgvXFwvKyQvLCAnJykgKyAnLycgKyBhUGF0aCk7XG5cbiAgaWYgKGFSb290VXJsKSB7XG4gICAgYVJvb3RVcmwucGF0aCA9IGpvaW5lZDtcbiAgICByZXR1cm4gdXJsR2VuZXJhdGUoYVJvb3RVcmwpO1xuICB9XG4gIHJldHVybiBqb2luZWQ7XG59XG5leHBvcnRzLmpvaW4gPSBqb2luO1xuXG5leHBvcnRzLmlzQWJzb2x1dGUgPSBmdW5jdGlvbiAoYVBhdGgpIHtcbiAgcmV0dXJuIGFQYXRoLmNoYXJBdCgwKSA9PT0gJy8nIHx8IHVybFJlZ2V4cC50ZXN0KGFQYXRoKTtcbn07XG5cbi8qKlxuICogTWFrZSBhIHBhdGggcmVsYXRpdmUgdG8gYSBVUkwgb3IgYW5vdGhlciBwYXRoLlxuICpcbiAqIEBwYXJhbSBhUm9vdCBUaGUgcm9vdCBwYXRoIG9yIFVSTC5cbiAqIEBwYXJhbSBhUGF0aCBUaGUgcGF0aCBvciBVUkwgdG8gYmUgbWFkZSByZWxhdGl2ZSB0byBhUm9vdC5cbiAqL1xuZnVuY3Rpb24gcmVsYXRpdmUoYVJvb3QsIGFQYXRoKSB7XG4gIGlmIChhUm9vdCA9PT0gXCJcIikge1xuICAgIGFSb290ID0gXCIuXCI7XG4gIH1cblxuICBhUm9vdCA9IGFSb290LnJlcGxhY2UoL1xcLyQvLCAnJyk7XG5cbiAgLy8gSXQgaXMgcG9zc2libGUgZm9yIHRoZSBwYXRoIHRvIGJlIGFib3ZlIHRoZSByb290LiBJbiB0aGlzIGNhc2UsIHNpbXBseVxuICAvLyBjaGVja2luZyB3aGV0aGVyIHRoZSByb290IGlzIGEgcHJlZml4IG9mIHRoZSBwYXRoIHdvbid0IHdvcmsuIEluc3RlYWQsIHdlXG4gIC8vIG5lZWQgdG8gcmVtb3ZlIGNvbXBvbmVudHMgZnJvbSB0aGUgcm9vdCBvbmUgYnkgb25lLCB1bnRpbCBlaXRoZXIgd2UgZmluZFxuICAvLyBhIHByZWZpeCB0aGF0IGZpdHMsIG9yIHdlIHJ1biBvdXQgb2YgY29tcG9uZW50cyB0byByZW1vdmUuXG4gIHZhciBsZXZlbCA9IDA7XG4gIHdoaWxlIChhUGF0aC5pbmRleE9mKGFSb290ICsgJy8nKSAhPT0gMCkge1xuICAgIHZhciBpbmRleCA9IGFSb290Lmxhc3RJbmRleE9mKFwiL1wiKTtcbiAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICByZXR1cm4gYVBhdGg7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIG9ubHkgcGFydCBvZiB0aGUgcm9vdCB0aGF0IGlzIGxlZnQgaXMgdGhlIHNjaGVtZSAoaS5lLiBodHRwOi8vLFxuICAgIC8vIGZpbGU6Ly8vLCBldGMuKSwgb25lIG9yIG1vcmUgc2xhc2hlcyAoLyksIG9yIHNpbXBseSBub3RoaW5nIGF0IGFsbCwgd2VcbiAgICAvLyBoYXZlIGV4aGF1c3RlZCBhbGwgY29tcG9uZW50cywgc28gdGhlIHBhdGggaXMgbm90IHJlbGF0aXZlIHRvIHRoZSByb290LlxuICAgIGFSb290ID0gYVJvb3Quc2xpY2UoMCwgaW5kZXgpO1xuICAgIGlmIChhUm9vdC5tYXRjaCgvXihbXlxcL10rOlxcLyk/XFwvKiQvKSkge1xuICAgICAgcmV0dXJuIGFQYXRoO1xuICAgIH1cblxuICAgICsrbGV2ZWw7XG4gIH1cblxuICAvLyBNYWtlIHN1cmUgd2UgYWRkIGEgXCIuLi9cIiBmb3IgZWFjaCBjb21wb25lbnQgd2UgcmVtb3ZlZCBmcm9tIHRoZSByb290LlxuICByZXR1cm4gQXJyYXkobGV2ZWwgKyAxKS5qb2luKFwiLi4vXCIpICsgYVBhdGguc3Vic3RyKGFSb290Lmxlbmd0aCArIDEpO1xufVxuZXhwb3J0cy5yZWxhdGl2ZSA9IHJlbGF0aXZlO1xuXG52YXIgc3VwcG9ydHNOdWxsUHJvdG8gPSAoZnVuY3Rpb24gKCkge1xuICB2YXIgb2JqID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgcmV0dXJuICEoJ19fcHJvdG9fXycgaW4gb2JqKTtcbn0oKSk7XG5cbmZ1bmN0aW9uIGlkZW50aXR5IChzKSB7XG4gIHJldHVybiBzO1xufVxuXG4vKipcbiAqIEJlY2F1c2UgYmVoYXZpb3IgZ29lcyB3YWNreSB3aGVuIHlvdSBzZXQgYF9fcHJvdG9fX2Agb24gb2JqZWN0cywgd2VcbiAqIGhhdmUgdG8gcHJlZml4IGFsbCB0aGUgc3RyaW5ncyBpbiBvdXIgc2V0IHdpdGggYW4gYXJiaXRyYXJ5IGNoYXJhY3Rlci5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvc291cmNlLW1hcC9wdWxsLzMxIGFuZFxuICogaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvc291cmNlLW1hcC9pc3N1ZXMvMzBcbiAqXG4gKiBAcGFyYW0gU3RyaW5nIGFTdHJcbiAqL1xuZnVuY3Rpb24gdG9TZXRTdHJpbmcoYVN0cikge1xuICBpZiAoaXNQcm90b1N0cmluZyhhU3RyKSkge1xuICAgIHJldHVybiAnJCcgKyBhU3RyO1xuICB9XG5cbiAgcmV0dXJuIGFTdHI7XG59XG5leHBvcnRzLnRvU2V0U3RyaW5nID0gc3VwcG9ydHNOdWxsUHJvdG8gPyBpZGVudGl0eSA6IHRvU2V0U3RyaW5nO1xuXG5mdW5jdGlvbiBmcm9tU2V0U3RyaW5nKGFTdHIpIHtcbiAgaWYgKGlzUHJvdG9TdHJpbmcoYVN0cikpIHtcbiAgICByZXR1cm4gYVN0ci5zbGljZSgxKTtcbiAgfVxuXG4gIHJldHVybiBhU3RyO1xufVxuZXhwb3J0cy5mcm9tU2V0U3RyaW5nID0gc3VwcG9ydHNOdWxsUHJvdG8gPyBpZGVudGl0eSA6IGZyb21TZXRTdHJpbmc7XG5cbmZ1bmN0aW9uIGlzUHJvdG9TdHJpbmcocykge1xuICBpZiAoIXMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgbGVuZ3RoID0gcy5sZW5ndGg7XG5cbiAgaWYgKGxlbmd0aCA8IDkgLyogXCJfX3Byb3RvX19cIi5sZW5ndGggKi8pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAocy5jaGFyQ29kZUF0KGxlbmd0aCAtIDEpICE9PSA5NSAgLyogJ18nICovIHx8XG4gICAgICBzLmNoYXJDb2RlQXQobGVuZ3RoIC0gMikgIT09IDk1ICAvKiAnXycgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSAzKSAhPT0gMTExIC8qICdvJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDQpICE9PSAxMTYgLyogJ3QnICovIHx8XG4gICAgICBzLmNoYXJDb2RlQXQobGVuZ3RoIC0gNSkgIT09IDExMSAvKiAnbycgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSA2KSAhPT0gMTE0IC8qICdyJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDcpICE9PSAxMTIgLyogJ3AnICovIHx8XG4gICAgICBzLmNoYXJDb2RlQXQobGVuZ3RoIC0gOCkgIT09IDk1ICAvKiAnXycgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSA5KSAhPT0gOTUgIC8qICdfJyAqLykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGZvciAodmFyIGkgPSBsZW5ndGggLSAxMDsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZiAocy5jaGFyQ29kZUF0KGkpICE9PSAzNiAvKiAnJCcgKi8pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBDb21wYXJhdG9yIGJldHdlZW4gdHdvIG1hcHBpbmdzIHdoZXJlIHRoZSBvcmlnaW5hbCBwb3NpdGlvbnMgYXJlIGNvbXBhcmVkLlxuICpcbiAqIE9wdGlvbmFsbHkgcGFzcyBpbiBgdHJ1ZWAgYXMgYG9ubHlDb21wYXJlR2VuZXJhdGVkYCB0byBjb25zaWRlciB0d29cbiAqIG1hcHBpbmdzIHdpdGggdGhlIHNhbWUgb3JpZ2luYWwgc291cmNlL2xpbmUvY29sdW1uLCBidXQgZGlmZmVyZW50IGdlbmVyYXRlZFxuICogbGluZSBhbmQgY29sdW1uIHRoZSBzYW1lLiBVc2VmdWwgd2hlbiBzZWFyY2hpbmcgZm9yIGEgbWFwcGluZyB3aXRoIGFcbiAqIHN0dWJiZWQgb3V0IG1hcHBpbmcuXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zKG1hcHBpbmdBLCBtYXBwaW5nQiwgb25seUNvbXBhcmVPcmlnaW5hbCkge1xuICB2YXIgY21wID0gc3RyY21wKG1hcHBpbmdBLnNvdXJjZSwgbWFwcGluZ0Iuc291cmNlKTtcbiAgaWYgKGNtcCAhPT0gMCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBtYXBwaW5nQS5vcmlnaW5hbExpbmUgLSBtYXBwaW5nQi5vcmlnaW5hbExpbmU7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxDb2x1bW4gLSBtYXBwaW5nQi5vcmlnaW5hbENvbHVtbjtcbiAgaWYgKGNtcCAhPT0gMCB8fCBvbmx5Q29tcGFyZU9yaWdpbmFsKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZENvbHVtbiAtIG1hcHBpbmdCLmdlbmVyYXRlZENvbHVtbjtcbiAgaWYgKGNtcCAhPT0gMCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBtYXBwaW5nQS5nZW5lcmF0ZWRMaW5lIC0gbWFwcGluZ0IuZ2VuZXJhdGVkTGluZTtcbiAgaWYgKGNtcCAhPT0gMCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICByZXR1cm4gc3RyY21wKG1hcHBpbmdBLm5hbWUsIG1hcHBpbmdCLm5hbWUpO1xufVxuZXhwb3J0cy5jb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyA9IGNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zO1xuXG4vKipcbiAqIENvbXBhcmF0b3IgYmV0d2VlbiB0d28gbWFwcGluZ3Mgd2l0aCBkZWZsYXRlZCBzb3VyY2UgYW5kIG5hbWUgaW5kaWNlcyB3aGVyZVxuICogdGhlIGdlbmVyYXRlZCBwb3NpdGlvbnMgYXJlIGNvbXBhcmVkLlxuICpcbiAqIE9wdGlvbmFsbHkgcGFzcyBpbiBgdHJ1ZWAgYXMgYG9ubHlDb21wYXJlR2VuZXJhdGVkYCB0byBjb25zaWRlciB0d29cbiAqIG1hcHBpbmdzIHdpdGggdGhlIHNhbWUgZ2VuZXJhdGVkIGxpbmUgYW5kIGNvbHVtbiwgYnV0IGRpZmZlcmVudFxuICogc291cmNlL25hbWUvb3JpZ2luYWwgbGluZSBhbmQgY29sdW1uIHRoZSBzYW1lLiBVc2VmdWwgd2hlbiBzZWFyY2hpbmcgZm9yIGFcbiAqIG1hcHBpbmcgd2l0aCBhIHN0dWJiZWQgb3V0IG1hcHBpbmcuXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkKG1hcHBpbmdBLCBtYXBwaW5nQiwgb25seUNvbXBhcmVHZW5lcmF0ZWQpIHtcbiAgdmFyIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZExpbmUgLSBtYXBwaW5nQi5nZW5lcmF0ZWRMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZENvbHVtbiAtIG1hcHBpbmdCLmdlbmVyYXRlZENvbHVtbjtcbiAgaWYgKGNtcCAhPT0gMCB8fCBvbmx5Q29tcGFyZUdlbmVyYXRlZCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBzdHJjbXAobWFwcGluZ0Euc291cmNlLCBtYXBwaW5nQi5zb3VyY2UpO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsTGluZSAtIG1hcHBpbmdCLm9yaWdpbmFsTGluZTtcbiAgaWYgKGNtcCAhPT0gMCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBtYXBwaW5nQS5vcmlnaW5hbENvbHVtbiAtIG1hcHBpbmdCLm9yaWdpbmFsQ29sdW1uO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIHJldHVybiBzdHJjbXAobWFwcGluZ0EubmFtZSwgbWFwcGluZ0IubmFtZSk7XG59XG5leHBvcnRzLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkID0gY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zRGVmbGF0ZWQ7XG5cbmZ1bmN0aW9uIHN0cmNtcChhU3RyMSwgYVN0cjIpIHtcbiAgaWYgKGFTdHIxID09PSBhU3RyMikge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgaWYgKGFTdHIxID09PSBudWxsKSB7XG4gICAgcmV0dXJuIDE7IC8vIGFTdHIyICE9PSBudWxsXG4gIH1cblxuICBpZiAoYVN0cjIgPT09IG51bGwpIHtcbiAgICByZXR1cm4gLTE7IC8vIGFTdHIxICE9PSBudWxsXG4gIH1cblxuICBpZiAoYVN0cjEgPiBhU3RyMikge1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgcmV0dXJuIC0xO1xufVxuXG4vKipcbiAqIENvbXBhcmF0b3IgYmV0d2VlbiB0d28gbWFwcGluZ3Mgd2l0aCBpbmZsYXRlZCBzb3VyY2UgYW5kIG5hbWUgc3RyaW5ncyB3aGVyZVxuICogdGhlIGdlbmVyYXRlZCBwb3NpdGlvbnMgYXJlIGNvbXBhcmVkLlxuICovXG5mdW5jdGlvbiBjb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZChtYXBwaW5nQSwgbWFwcGluZ0IpIHtcbiAgdmFyIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZExpbmUgLSBtYXBwaW5nQi5nZW5lcmF0ZWRMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZENvbHVtbiAtIG1hcHBpbmdCLmdlbmVyYXRlZENvbHVtbjtcbiAgaWYgKGNtcCAhPT0gMCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBzdHJjbXAobWFwcGluZ0Euc291cmNlLCBtYXBwaW5nQi5zb3VyY2UpO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsTGluZSAtIG1hcHBpbmdCLm9yaWdpbmFsTGluZTtcbiAgaWYgKGNtcCAhPT0gMCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBtYXBwaW5nQS5vcmlnaW5hbENvbHVtbiAtIG1hcHBpbmdCLm9yaWdpbmFsQ29sdW1uO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIHJldHVybiBzdHJjbXAobWFwcGluZ0EubmFtZSwgbWFwcGluZ0IubmFtZSk7XG59XG5leHBvcnRzLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0luZmxhdGVkID0gY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQ7XG5cbi8qKlxuICogU3RyaXAgYW55IEpTT04gWFNTSSBhdm9pZGFuY2UgcHJlZml4IGZyb20gdGhlIHN0cmluZyAoYXMgZG9jdW1lbnRlZFxuICogaW4gdGhlIHNvdXJjZSBtYXBzIHNwZWNpZmljYXRpb24pLCBhbmQgdGhlbiBwYXJzZSB0aGUgc3RyaW5nIGFzXG4gKiBKU09OLlxuICovXG5mdW5jdGlvbiBwYXJzZVNvdXJjZU1hcElucHV0KHN0cikge1xuICByZXR1cm4gSlNPTi5wYXJzZShzdHIucmVwbGFjZSgvXlxcKV19J1teXFxuXSpcXG4vLCAnJykpO1xufVxuZXhwb3J0cy5wYXJzZVNvdXJjZU1hcElucHV0ID0gcGFyc2VTb3VyY2VNYXBJbnB1dDtcblxuLyoqXG4gKiBDb21wdXRlIHRoZSBVUkwgb2YgYSBzb3VyY2UgZ2l2ZW4gdGhlIHRoZSBzb3VyY2Ugcm9vdCwgdGhlIHNvdXJjZSdzXG4gKiBVUkwsIGFuZCB0aGUgc291cmNlIG1hcCdzIFVSTC5cbiAqL1xuZnVuY3Rpb24gY29tcHV0ZVNvdXJjZVVSTChzb3VyY2VSb290LCBzb3VyY2VVUkwsIHNvdXJjZU1hcFVSTCkge1xuICBzb3VyY2VVUkwgPSBzb3VyY2VVUkwgfHwgJyc7XG5cbiAgaWYgKHNvdXJjZVJvb3QpIHtcbiAgICAvLyBUaGlzIGZvbGxvd3Mgd2hhdCBDaHJvbWUgZG9lcy5cbiAgICBpZiAoc291cmNlUm9vdFtzb3VyY2VSb290Lmxlbmd0aCAtIDFdICE9PSAnLycgJiYgc291cmNlVVJMWzBdICE9PSAnLycpIHtcbiAgICAgIHNvdXJjZVJvb3QgKz0gJy8nO1xuICAgIH1cbiAgICAvLyBUaGUgc3BlYyBzYXlzOlxuICAgIC8vICAgTGluZSA0OiBBbiBvcHRpb25hbCBzb3VyY2Ugcm9vdCwgdXNlZnVsIGZvciByZWxvY2F0aW5nIHNvdXJjZVxuICAgIC8vICAgZmlsZXMgb24gYSBzZXJ2ZXIgb3IgcmVtb3ZpbmcgcmVwZWF0ZWQgdmFsdWVzIGluIHRoZVxuICAgIC8vICAg4oCcc291cmNlc+KAnSBlbnRyeS4gIFRoaXMgdmFsdWUgaXMgcHJlcGVuZGVkIHRvIHRoZSBpbmRpdmlkdWFsXG4gICAgLy8gICBlbnRyaWVzIGluIHRoZSDigJxzb3VyY2XigJ0gZmllbGQuXG4gICAgc291cmNlVVJMID0gc291cmNlUm9vdCArIHNvdXJjZVVSTDtcbiAgfVxuXG4gIC8vIEhpc3RvcmljYWxseSwgU291cmNlTWFwQ29uc3VtZXIgZGlkIG5vdCB0YWtlIHRoZSBzb3VyY2VNYXBVUkwgYXNcbiAgLy8gYSBwYXJhbWV0ZXIuICBUaGlzIG1vZGUgaXMgc3RpbGwgc29tZXdoYXQgc3VwcG9ydGVkLCB3aGljaCBpcyB3aHlcbiAgLy8gdGhpcyBjb2RlIGJsb2NrIGlzIGNvbmRpdGlvbmFsLiAgSG93ZXZlciwgaXQncyBwcmVmZXJhYmxlIHRvIHBhc3NcbiAgLy8gdGhlIHNvdXJjZSBtYXAgVVJMIHRvIFNvdXJjZU1hcENvbnN1bWVyLCBzbyB0aGF0IHRoaXMgZnVuY3Rpb25cbiAgLy8gY2FuIGltcGxlbWVudCB0aGUgc291cmNlIFVSTCByZXNvbHV0aW9uIGFsZ29yaXRobSBhcyBvdXRsaW5lZCBpblxuICAvLyB0aGUgc3BlYy4gIFRoaXMgYmxvY2sgaXMgYmFzaWNhbGx5IHRoZSBlcXVpdmFsZW50IG9mOlxuICAvLyAgICBuZXcgVVJMKHNvdXJjZVVSTCwgc291cmNlTWFwVVJMKS50b1N0cmluZygpXG4gIC8vIC4uLiBleGNlcHQgaXQgYXZvaWRzIHVzaW5nIFVSTCwgd2hpY2ggd2Fzbid0IGF2YWlsYWJsZSBpbiB0aGVcbiAgLy8gb2xkZXIgcmVsZWFzZXMgb2Ygbm9kZSBzdGlsbCBzdXBwb3J0ZWQgYnkgdGhpcyBsaWJyYXJ5LlxuICAvL1xuICAvLyBUaGUgc3BlYyBzYXlzOlxuICAvLyAgIElmIHRoZSBzb3VyY2VzIGFyZSBub3QgYWJzb2x1dGUgVVJMcyBhZnRlciBwcmVwZW5kaW5nIG9mIHRoZVxuICAvLyAgIOKAnHNvdXJjZVJvb3TigJ0sIHRoZSBzb3VyY2VzIGFyZSByZXNvbHZlZCByZWxhdGl2ZSB0byB0aGVcbiAgLy8gICBTb3VyY2VNYXAgKGxpa2UgcmVzb2x2aW5nIHNjcmlwdCBzcmMgaW4gYSBodG1sIGRvY3VtZW50KS5cbiAgaWYgKHNvdXJjZU1hcFVSTCkge1xuICAgIHZhciBwYXJzZWQgPSB1cmxQYXJzZShzb3VyY2VNYXBVUkwpO1xuICAgIGlmICghcGFyc2VkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJzb3VyY2VNYXBVUkwgY291bGQgbm90IGJlIHBhcnNlZFwiKTtcbiAgICB9XG4gICAgaWYgKHBhcnNlZC5wYXRoKSB7XG4gICAgICAvLyBTdHJpcCB0aGUgbGFzdCBwYXRoIGNvbXBvbmVudCwgYnV0IGtlZXAgdGhlIFwiL1wiLlxuICAgICAgdmFyIGluZGV4ID0gcGFyc2VkLnBhdGgubGFzdEluZGV4T2YoJy8nKTtcbiAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgIHBhcnNlZC5wYXRoID0gcGFyc2VkLnBhdGguc3Vic3RyaW5nKDAsIGluZGV4ICsgMSk7XG4gICAgICB9XG4gICAgfVxuICAgIHNvdXJjZVVSTCA9IGpvaW4odXJsR2VuZXJhdGUocGFyc2VkKSwgc291cmNlVVJMKTtcbiAgfVxuXG4gIHJldHVybiBub3JtYWxpemUoc291cmNlVVJMKTtcbn1cbmV4cG9ydHMuY29tcHV0ZVNvdXJjZVVSTCA9IGNvbXB1dGVTb3VyY2VVUkw7XG4iLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbnZhciB1dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG52YXIgaGFzID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBoYXNOYXRpdmVNYXAgPSB0eXBlb2YgTWFwICE9PSBcInVuZGVmaW5lZFwiO1xuXG4vKipcbiAqIEEgZGF0YSBzdHJ1Y3R1cmUgd2hpY2ggaXMgYSBjb21iaW5hdGlvbiBvZiBhbiBhcnJheSBhbmQgYSBzZXQuIEFkZGluZyBhIG5ld1xuICogbWVtYmVyIGlzIE8oMSksIHRlc3RpbmcgZm9yIG1lbWJlcnNoaXAgaXMgTygxKSwgYW5kIGZpbmRpbmcgdGhlIGluZGV4IG9mIGFuXG4gKiBlbGVtZW50IGlzIE8oMSkuIFJlbW92aW5nIGVsZW1lbnRzIGZyb20gdGhlIHNldCBpcyBub3Qgc3VwcG9ydGVkLiBPbmx5XG4gKiBzdHJpbmdzIGFyZSBzdXBwb3J0ZWQgZm9yIG1lbWJlcnNoaXAuXG4gKi9cbmZ1bmN0aW9uIEFycmF5U2V0KCkge1xuICB0aGlzLl9hcnJheSA9IFtdO1xuICB0aGlzLl9zZXQgPSBoYXNOYXRpdmVNYXAgPyBuZXcgTWFwKCkgOiBPYmplY3QuY3JlYXRlKG51bGwpO1xufVxuXG4vKipcbiAqIFN0YXRpYyBtZXRob2QgZm9yIGNyZWF0aW5nIEFycmF5U2V0IGluc3RhbmNlcyBmcm9tIGFuIGV4aXN0aW5nIGFycmF5LlxuICovXG5BcnJheVNldC5mcm9tQXJyYXkgPSBmdW5jdGlvbiBBcnJheVNldF9mcm9tQXJyYXkoYUFycmF5LCBhQWxsb3dEdXBsaWNhdGVzKSB7XG4gIHZhciBzZXQgPSBuZXcgQXJyYXlTZXQoKTtcbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGFBcnJheS5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIHNldC5hZGQoYUFycmF5W2ldLCBhQWxsb3dEdXBsaWNhdGVzKTtcbiAgfVxuICByZXR1cm4gc2V0O1xufTtcblxuLyoqXG4gKiBSZXR1cm4gaG93IG1hbnkgdW5pcXVlIGl0ZW1zIGFyZSBpbiB0aGlzIEFycmF5U2V0LiBJZiBkdXBsaWNhdGVzIGhhdmUgYmVlblxuICogYWRkZWQsIHRoYW4gdGhvc2UgZG8gbm90IGNvdW50IHRvd2FyZHMgdGhlIHNpemUuXG4gKlxuICogQHJldHVybnMgTnVtYmVyXG4gKi9cbkFycmF5U2V0LnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24gQXJyYXlTZXRfc2l6ZSgpIHtcbiAgcmV0dXJuIGhhc05hdGl2ZU1hcCA/IHRoaXMuX3NldC5zaXplIDogT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcy5fc2V0KS5sZW5ndGg7XG59O1xuXG4vKipcbiAqIEFkZCB0aGUgZ2l2ZW4gc3RyaW5nIHRvIHRoaXMgc2V0LlxuICpcbiAqIEBwYXJhbSBTdHJpbmcgYVN0clxuICovXG5BcnJheVNldC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gQXJyYXlTZXRfYWRkKGFTdHIsIGFBbGxvd0R1cGxpY2F0ZXMpIHtcbiAgdmFyIHNTdHIgPSBoYXNOYXRpdmVNYXAgPyBhU3RyIDogdXRpbC50b1NldFN0cmluZyhhU3RyKTtcbiAgdmFyIGlzRHVwbGljYXRlID0gaGFzTmF0aXZlTWFwID8gdGhpcy5oYXMoYVN0cikgOiBoYXMuY2FsbCh0aGlzLl9zZXQsIHNTdHIpO1xuICB2YXIgaWR4ID0gdGhpcy5fYXJyYXkubGVuZ3RoO1xuICBpZiAoIWlzRHVwbGljYXRlIHx8IGFBbGxvd0R1cGxpY2F0ZXMpIHtcbiAgICB0aGlzLl9hcnJheS5wdXNoKGFTdHIpO1xuICB9XG4gIGlmICghaXNEdXBsaWNhdGUpIHtcbiAgICBpZiAoaGFzTmF0aXZlTWFwKSB7XG4gICAgICB0aGlzLl9zZXQuc2V0KGFTdHIsIGlkeCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3NldFtzU3RyXSA9IGlkeDtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogSXMgdGhlIGdpdmVuIHN0cmluZyBhIG1lbWJlciBvZiB0aGlzIHNldD9cbiAqXG4gKiBAcGFyYW0gU3RyaW5nIGFTdHJcbiAqL1xuQXJyYXlTZXQucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uIEFycmF5U2V0X2hhcyhhU3RyKSB7XG4gIGlmIChoYXNOYXRpdmVNYXApIHtcbiAgICByZXR1cm4gdGhpcy5fc2V0LmhhcyhhU3RyKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgc1N0ciA9IHV0aWwudG9TZXRTdHJpbmcoYVN0cik7XG4gICAgcmV0dXJuIGhhcy5jYWxsKHRoaXMuX3NldCwgc1N0cik7XG4gIH1cbn07XG5cbi8qKlxuICogV2hhdCBpcyB0aGUgaW5kZXggb2YgdGhlIGdpdmVuIHN0cmluZyBpbiB0aGUgYXJyYXk/XG4gKlxuICogQHBhcmFtIFN0cmluZyBhU3RyXG4gKi9cbkFycmF5U2V0LnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rpb24gQXJyYXlTZXRfaW5kZXhPZihhU3RyKSB7XG4gIGlmIChoYXNOYXRpdmVNYXApIHtcbiAgICB2YXIgaWR4ID0gdGhpcy5fc2V0LmdldChhU3RyKTtcbiAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgICAgcmV0dXJuIGlkeDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIHNTdHIgPSB1dGlsLnRvU2V0U3RyaW5nKGFTdHIpO1xuICAgIGlmIChoYXMuY2FsbCh0aGlzLl9zZXQsIHNTdHIpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2V0W3NTdHJdO1xuICAgIH1cbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcignXCInICsgYVN0ciArICdcIiBpcyBub3QgaW4gdGhlIHNldC4nKTtcbn07XG5cbi8qKlxuICogV2hhdCBpcyB0aGUgZWxlbWVudCBhdCB0aGUgZ2l2ZW4gaW5kZXg/XG4gKlxuICogQHBhcmFtIE51bWJlciBhSWR4XG4gKi9cbkFycmF5U2V0LnByb3RvdHlwZS5hdCA9IGZ1bmN0aW9uIEFycmF5U2V0X2F0KGFJZHgpIHtcbiAgaWYgKGFJZHggPj0gMCAmJiBhSWR4IDwgdGhpcy5fYXJyYXkubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FycmF5W2FJZHhdO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcignTm8gZWxlbWVudCBpbmRleGVkIGJ5ICcgKyBhSWR4KTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgYXJyYXkgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBzZXQgKHdoaWNoIGhhcyB0aGUgcHJvcGVyIGluZGljZXNcbiAqIGluZGljYXRlZCBieSBpbmRleE9mKS4gTm90ZSB0aGF0IHRoaXMgaXMgYSBjb3B5IG9mIHRoZSBpbnRlcm5hbCBhcnJheSB1c2VkXG4gKiBmb3Igc3RvcmluZyB0aGUgbWVtYmVycyBzbyB0aGF0IG5vIG9uZSBjYW4gbWVzcyB3aXRoIGludGVybmFsIHN0YXRlLlxuICovXG5BcnJheVNldC5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uIEFycmF5U2V0X3RvQXJyYXkoKSB7XG4gIHJldHVybiB0aGlzLl9hcnJheS5zbGljZSgpO1xufTtcblxuZXhwb3J0cy5BcnJheVNldCA9IEFycmF5U2V0O1xuIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDE0IE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xuXG4vKipcbiAqIERldGVybWluZSB3aGV0aGVyIG1hcHBpbmdCIGlzIGFmdGVyIG1hcHBpbmdBIHdpdGggcmVzcGVjdCB0byBnZW5lcmF0ZWRcbiAqIHBvc2l0aW9uLlxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZWRQb3NpdGlvbkFmdGVyKG1hcHBpbmdBLCBtYXBwaW5nQikge1xuICAvLyBPcHRpbWl6ZWQgZm9yIG1vc3QgY29tbW9uIGNhc2VcbiAgdmFyIGxpbmVBID0gbWFwcGluZ0EuZ2VuZXJhdGVkTGluZTtcbiAgdmFyIGxpbmVCID0gbWFwcGluZ0IuZ2VuZXJhdGVkTGluZTtcbiAgdmFyIGNvbHVtbkEgPSBtYXBwaW5nQS5nZW5lcmF0ZWRDb2x1bW47XG4gIHZhciBjb2x1bW5CID0gbWFwcGluZ0IuZ2VuZXJhdGVkQ29sdW1uO1xuICByZXR1cm4gbGluZUIgPiBsaW5lQSB8fCBsaW5lQiA9PSBsaW5lQSAmJiBjb2x1bW5CID49IGNvbHVtbkEgfHxcbiAgICAgICAgIHV0aWwuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQobWFwcGluZ0EsIG1hcHBpbmdCKSA8PSAwO1xufVxuXG4vKipcbiAqIEEgZGF0YSBzdHJ1Y3R1cmUgdG8gcHJvdmlkZSBhIHNvcnRlZCB2aWV3IG9mIGFjY3VtdWxhdGVkIG1hcHBpbmdzIGluIGFcbiAqIHBlcmZvcm1hbmNlIGNvbnNjaW91cyBtYW5uZXIuIEl0IHRyYWRlcyBhIG5lZ2xpYmFibGUgb3ZlcmhlYWQgaW4gZ2VuZXJhbFxuICogY2FzZSBmb3IgYSBsYXJnZSBzcGVlZHVwIGluIGNhc2Ugb2YgbWFwcGluZ3MgYmVpbmcgYWRkZWQgaW4gb3JkZXIuXG4gKi9cbmZ1bmN0aW9uIE1hcHBpbmdMaXN0KCkge1xuICB0aGlzLl9hcnJheSA9IFtdO1xuICB0aGlzLl9zb3J0ZWQgPSB0cnVlO1xuICAvLyBTZXJ2ZXMgYXMgaW5maW11bVxuICB0aGlzLl9sYXN0ID0ge2dlbmVyYXRlZExpbmU6IC0xLCBnZW5lcmF0ZWRDb2x1bW46IDB9O1xufVxuXG4vKipcbiAqIEl0ZXJhdGUgdGhyb3VnaCBpbnRlcm5hbCBpdGVtcy4gVGhpcyBtZXRob2QgdGFrZXMgdGhlIHNhbWUgYXJndW1lbnRzIHRoYXRcbiAqIGBBcnJheS5wcm90b3R5cGUuZm9yRWFjaGAgdGFrZXMuXG4gKlxuICogTk9URTogVGhlIG9yZGVyIG9mIHRoZSBtYXBwaW5ncyBpcyBOT1QgZ3VhcmFudGVlZC5cbiAqL1xuTWFwcGluZ0xpc3QucHJvdG90eXBlLnVuc29ydGVkRm9yRWFjaCA9XG4gIGZ1bmN0aW9uIE1hcHBpbmdMaXN0X2ZvckVhY2goYUNhbGxiYWNrLCBhVGhpc0FyZykge1xuICAgIHRoaXMuX2FycmF5LmZvckVhY2goYUNhbGxiYWNrLCBhVGhpc0FyZyk7XG4gIH07XG5cbi8qKlxuICogQWRkIHRoZSBnaXZlbiBzb3VyY2UgbWFwcGluZy5cbiAqXG4gKiBAcGFyYW0gT2JqZWN0IGFNYXBwaW5nXG4gKi9cbk1hcHBpbmdMaXN0LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBNYXBwaW5nTGlzdF9hZGQoYU1hcHBpbmcpIHtcbiAgaWYgKGdlbmVyYXRlZFBvc2l0aW9uQWZ0ZXIodGhpcy5fbGFzdCwgYU1hcHBpbmcpKSB7XG4gICAgdGhpcy5fbGFzdCA9IGFNYXBwaW5nO1xuICAgIHRoaXMuX2FycmF5LnB1c2goYU1hcHBpbmcpO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuX3NvcnRlZCA9IGZhbHNlO1xuICAgIHRoaXMuX2FycmF5LnB1c2goYU1hcHBpbmcpO1xuICB9XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGZsYXQsIHNvcnRlZCBhcnJheSBvZiBtYXBwaW5ncy4gVGhlIG1hcHBpbmdzIGFyZSBzb3J0ZWQgYnlcbiAqIGdlbmVyYXRlZCBwb3NpdGlvbi5cbiAqXG4gKiBXQVJOSU5HOiBUaGlzIG1ldGhvZCByZXR1cm5zIGludGVybmFsIGRhdGEgd2l0aG91dCBjb3B5aW5nLCBmb3JcbiAqIHBlcmZvcm1hbmNlLiBUaGUgcmV0dXJuIHZhbHVlIG11c3QgTk9UIGJlIG11dGF0ZWQsIGFuZCBzaG91bGQgYmUgdHJlYXRlZCBhc1xuICogYW4gaW1tdXRhYmxlIGJvcnJvdy4gSWYgeW91IHdhbnQgdG8gdGFrZSBvd25lcnNoaXAsIHlvdSBtdXN0IG1ha2UgeW91ciBvd25cbiAqIGNvcHkuXG4gKi9cbk1hcHBpbmdMaXN0LnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gTWFwcGluZ0xpc3RfdG9BcnJheSgpIHtcbiAgaWYgKCF0aGlzLl9zb3J0ZWQpIHtcbiAgICB0aGlzLl9hcnJheS5zb3J0KHV0aWwuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQpO1xuICAgIHRoaXMuX3NvcnRlZCA9IHRydWU7XG4gIH1cbiAgcmV0dXJuIHRoaXMuX2FycmF5O1xufTtcblxuZXhwb3J0cy5NYXBwaW5nTGlzdCA9IE1hcHBpbmdMaXN0O1xuIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgYmFzZTY0VkxRID0gcmVxdWlyZSgnLi9iYXNlNjQtdmxxJyk7XG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xudmFyIEFycmF5U2V0ID0gcmVxdWlyZSgnLi9hcnJheS1zZXQnKS5BcnJheVNldDtcbnZhciBNYXBwaW5nTGlzdCA9IHJlcXVpcmUoJy4vbWFwcGluZy1saXN0JykuTWFwcGluZ0xpc3Q7XG5cbi8qKlxuICogQW4gaW5zdGFuY2Ugb2YgdGhlIFNvdXJjZU1hcEdlbmVyYXRvciByZXByZXNlbnRzIGEgc291cmNlIG1hcCB3aGljaCBpc1xuICogYmVpbmcgYnVpbHQgaW5jcmVtZW50YWxseS4gWW91IG1heSBwYXNzIGFuIG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmdcbiAqIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGZpbGU6IFRoZSBmaWxlbmFtZSBvZiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS5cbiAqICAgLSBzb3VyY2VSb290OiBBIHJvb3QgZm9yIGFsbCByZWxhdGl2ZSBVUkxzIGluIHRoaXMgc291cmNlIG1hcC5cbiAqL1xuZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yKGFBcmdzKSB7XG4gIGlmICghYUFyZ3MpIHtcbiAgICBhQXJncyA9IHt9O1xuICB9XG4gIHRoaXMuX2ZpbGUgPSB1dGlsLmdldEFyZyhhQXJncywgJ2ZpbGUnLCBudWxsKTtcbiAgdGhpcy5fc291cmNlUm9vdCA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlUm9vdCcsIG51bGwpO1xuICB0aGlzLl9za2lwVmFsaWRhdGlvbiA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc2tpcFZhbGlkYXRpb24nLCBmYWxzZSk7XG4gIHRoaXMuX3NvdXJjZXMgPSBuZXcgQXJyYXlTZXQoKTtcbiAgdGhpcy5fbmFtZXMgPSBuZXcgQXJyYXlTZXQoKTtcbiAgdGhpcy5fbWFwcGluZ3MgPSBuZXcgTWFwcGluZ0xpc3QoKTtcbiAgdGhpcy5fc291cmNlc0NvbnRlbnRzID0gbnVsbDtcbn1cblxuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBTb3VyY2VNYXBHZW5lcmF0b3IgYmFzZWQgb24gYSBTb3VyY2VNYXBDb25zdW1lclxuICpcbiAqIEBwYXJhbSBhU291cmNlTWFwQ29uc3VtZXIgVGhlIFNvdXJjZU1hcC5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLmZyb21Tb3VyY2VNYXAgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfZnJvbVNvdXJjZU1hcChhU291cmNlTWFwQ29uc3VtZXIpIHtcbiAgICB2YXIgc291cmNlUm9vdCA9IGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VSb290O1xuICAgIHZhciBnZW5lcmF0b3IgPSBuZXcgU291cmNlTWFwR2VuZXJhdG9yKHtcbiAgICAgIGZpbGU6IGFTb3VyY2VNYXBDb25zdW1lci5maWxlLFxuICAgICAgc291cmNlUm9vdDogc291cmNlUm9vdFxuICAgIH0pO1xuICAgIGFTb3VyY2VNYXBDb25zdW1lci5lYWNoTWFwcGluZyhmdW5jdGlvbiAobWFwcGluZykge1xuICAgICAgdmFyIG5ld01hcHBpbmcgPSB7XG4gICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgIGxpbmU6IG1hcHBpbmcuZ2VuZXJhdGVkTGluZSxcbiAgICAgICAgICBjb2x1bW46IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGlmIChtYXBwaW5nLnNvdXJjZSAhPSBudWxsKSB7XG4gICAgICAgIG5ld01hcHBpbmcuc291cmNlID0gbWFwcGluZy5zb3VyY2U7XG4gICAgICAgIGlmIChzb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgICAgICBuZXdNYXBwaW5nLnNvdXJjZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgbmV3TWFwcGluZy5zb3VyY2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgbmV3TWFwcGluZy5vcmlnaW5hbCA9IHtcbiAgICAgICAgICBsaW5lOiBtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICBjb2x1bW46IG1hcHBpbmcub3JpZ2luYWxDb2x1bW5cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAobWFwcGluZy5uYW1lICE9IG51bGwpIHtcbiAgICAgICAgICBuZXdNYXBwaW5nLm5hbWUgPSBtYXBwaW5nLm5hbWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZ2VuZXJhdG9yLmFkZE1hcHBpbmcobmV3TWFwcGluZyk7XG4gICAgfSk7XG4gICAgYVNvdXJjZU1hcENvbnN1bWVyLnNvdXJjZXMuZm9yRWFjaChmdW5jdGlvbiAoc291cmNlRmlsZSkge1xuICAgICAgdmFyIHNvdXJjZVJlbGF0aXZlID0gc291cmNlRmlsZTtcbiAgICAgIGlmIChzb3VyY2VSb290ICE9PSBudWxsKSB7XG4gICAgICAgIHNvdXJjZVJlbGF0aXZlID0gdXRpbC5yZWxhdGl2ZShzb3VyY2VSb290LCBzb3VyY2VGaWxlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFnZW5lcmF0b3IuX3NvdXJjZXMuaGFzKHNvdXJjZVJlbGF0aXZlKSkge1xuICAgICAgICBnZW5lcmF0b3IuX3NvdXJjZXMuYWRkKHNvdXJjZVJlbGF0aXZlKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGNvbnRlbnQgPSBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlQ29udGVudEZvcihzb3VyY2VGaWxlKTtcbiAgICAgIGlmIChjb250ZW50ICE9IG51bGwpIHtcbiAgICAgICAgZ2VuZXJhdG9yLnNldFNvdXJjZUNvbnRlbnQoc291cmNlRmlsZSwgY29udGVudCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGdlbmVyYXRvcjtcbiAgfTtcblxuLyoqXG4gKiBBZGQgYSBzaW5nbGUgbWFwcGluZyBmcm9tIG9yaWdpbmFsIHNvdXJjZSBsaW5lIGFuZCBjb2x1bW4gdG8gdGhlIGdlbmVyYXRlZFxuICogc291cmNlJ3MgbGluZSBhbmQgY29sdW1uIGZvciB0aGlzIHNvdXJjZSBtYXAgYmVpbmcgY3JlYXRlZC4gVGhlIG1hcHBpbmdcbiAqIG9iamVjdCBzaG91bGQgaGF2ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGdlbmVyYXRlZDogQW4gb2JqZWN0IHdpdGggdGhlIGdlbmVyYXRlZCBsaW5lIGFuZCBjb2x1bW4gcG9zaXRpb25zLlxuICogICAtIG9yaWdpbmFsOiBBbiBvYmplY3Qgd2l0aCB0aGUgb3JpZ2luYWwgbGluZSBhbmQgY29sdW1uIHBvc2l0aW9ucy5cbiAqICAgLSBzb3VyY2U6IFRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZSAocmVsYXRpdmUgdG8gdGhlIHNvdXJjZVJvb3QpLlxuICogICAtIG5hbWU6IEFuIG9wdGlvbmFsIG9yaWdpbmFsIHRva2VuIG5hbWUgZm9yIHRoaXMgbWFwcGluZy5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5hZGRNYXBwaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX2FkZE1hcHBpbmcoYUFyZ3MpIHtcbiAgICB2YXIgZ2VuZXJhdGVkID0gdXRpbC5nZXRBcmcoYUFyZ3MsICdnZW5lcmF0ZWQnKTtcbiAgICB2YXIgb3JpZ2luYWwgPSB1dGlsLmdldEFyZyhhQXJncywgJ29yaWdpbmFsJywgbnVsbCk7XG4gICAgdmFyIHNvdXJjZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJywgbnVsbCk7XG4gICAgdmFyIG5hbWUgPSB1dGlsLmdldEFyZyhhQXJncywgJ25hbWUnLCBudWxsKTtcblxuICAgIGlmICghdGhpcy5fc2tpcFZhbGlkYXRpb24pIHtcbiAgICAgIHRoaXMuX3ZhbGlkYXRlTWFwcGluZyhnZW5lcmF0ZWQsIG9yaWdpbmFsLCBzb3VyY2UsIG5hbWUpO1xuICAgIH1cblxuICAgIGlmIChzb3VyY2UgIT0gbnVsbCkge1xuICAgICAgc291cmNlID0gU3RyaW5nKHNvdXJjZSk7XG4gICAgICBpZiAoIXRoaXMuX3NvdXJjZXMuaGFzKHNvdXJjZSkpIHtcbiAgICAgICAgdGhpcy5fc291cmNlcy5hZGQoc291cmNlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobmFtZSAhPSBudWxsKSB7XG4gICAgICBuYW1lID0gU3RyaW5nKG5hbWUpO1xuICAgICAgaWYgKCF0aGlzLl9uYW1lcy5oYXMobmFtZSkpIHtcbiAgICAgICAgdGhpcy5fbmFtZXMuYWRkKG5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX21hcHBpbmdzLmFkZCh7XG4gICAgICBnZW5lcmF0ZWRMaW5lOiBnZW5lcmF0ZWQubGluZSxcbiAgICAgIGdlbmVyYXRlZENvbHVtbjogZ2VuZXJhdGVkLmNvbHVtbixcbiAgICAgIG9yaWdpbmFsTGluZTogb3JpZ2luYWwgIT0gbnVsbCAmJiBvcmlnaW5hbC5saW5lLFxuICAgICAgb3JpZ2luYWxDb2x1bW46IG9yaWdpbmFsICE9IG51bGwgJiYgb3JpZ2luYWwuY29sdW1uLFxuICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICBuYW1lOiBuYW1lXG4gICAgfSk7XG4gIH07XG5cbi8qKlxuICogU2V0IHRoZSBzb3VyY2UgY29udGVudCBmb3IgYSBzb3VyY2UgZmlsZS5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5zZXRTb3VyY2VDb250ZW50ID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX3NldFNvdXJjZUNvbnRlbnQoYVNvdXJjZUZpbGUsIGFTb3VyY2VDb250ZW50KSB7XG4gICAgdmFyIHNvdXJjZSA9IGFTb3VyY2VGaWxlO1xuICAgIGlmICh0aGlzLl9zb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgIHNvdXJjZSA9IHV0aWwucmVsYXRpdmUodGhpcy5fc291cmNlUm9vdCwgc291cmNlKTtcbiAgICB9XG5cbiAgICBpZiAoYVNvdXJjZUNvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgLy8gQWRkIHRoZSBzb3VyY2UgY29udGVudCB0byB0aGUgX3NvdXJjZXNDb250ZW50cyBtYXAuXG4gICAgICAvLyBDcmVhdGUgYSBuZXcgX3NvdXJjZXNDb250ZW50cyBtYXAgaWYgdGhlIHByb3BlcnR5IGlzIG51bGwuXG4gICAgICBpZiAoIXRoaXMuX3NvdXJjZXNDb250ZW50cykge1xuICAgICAgICB0aGlzLl9zb3VyY2VzQ29udGVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgfVxuICAgICAgdGhpcy5fc291cmNlc0NvbnRlbnRzW3V0aWwudG9TZXRTdHJpbmcoc291cmNlKV0gPSBhU291cmNlQ29udGVudDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX3NvdXJjZXNDb250ZW50cykge1xuICAgICAgLy8gUmVtb3ZlIHRoZSBzb3VyY2UgZmlsZSBmcm9tIHRoZSBfc291cmNlc0NvbnRlbnRzIG1hcC5cbiAgICAgIC8vIElmIHRoZSBfc291cmNlc0NvbnRlbnRzIG1hcCBpcyBlbXB0eSwgc2V0IHRoZSBwcm9wZXJ0eSB0byBudWxsLlxuICAgICAgZGVsZXRlIHRoaXMuX3NvdXJjZXNDb250ZW50c1t1dGlsLnRvU2V0U3RyaW5nKHNvdXJjZSldO1xuICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuX3NvdXJjZXNDb250ZW50cykubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuX3NvdXJjZXNDb250ZW50cyA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIEFwcGxpZXMgdGhlIG1hcHBpbmdzIG9mIGEgc3ViLXNvdXJjZS1tYXAgZm9yIGEgc3BlY2lmaWMgc291cmNlIGZpbGUgdG8gdGhlXG4gKiBzb3VyY2UgbWFwIGJlaW5nIGdlbmVyYXRlZC4gRWFjaCBtYXBwaW5nIHRvIHRoZSBzdXBwbGllZCBzb3VyY2UgZmlsZSBpc1xuICogcmV3cml0dGVuIHVzaW5nIHRoZSBzdXBwbGllZCBzb3VyY2UgbWFwLiBOb3RlOiBUaGUgcmVzb2x1dGlvbiBmb3IgdGhlXG4gKiByZXN1bHRpbmcgbWFwcGluZ3MgaXMgdGhlIG1pbmltaXVtIG9mIHRoaXMgbWFwIGFuZCB0aGUgc3VwcGxpZWQgbWFwLlxuICpcbiAqIEBwYXJhbSBhU291cmNlTWFwQ29uc3VtZXIgVGhlIHNvdXJjZSBtYXAgdG8gYmUgYXBwbGllZC5cbiAqIEBwYXJhbSBhU291cmNlRmlsZSBPcHRpb25hbC4gVGhlIGZpbGVuYW1lIG9mIHRoZSBzb3VyY2UgZmlsZS5cbiAqICAgICAgICBJZiBvbWl0dGVkLCBTb3VyY2VNYXBDb25zdW1lcidzIGZpbGUgcHJvcGVydHkgd2lsbCBiZSB1c2VkLlxuICogQHBhcmFtIGFTb3VyY2VNYXBQYXRoIE9wdGlvbmFsLiBUaGUgZGlybmFtZSBvZiB0aGUgcGF0aCB0byB0aGUgc291cmNlIG1hcFxuICogICAgICAgIHRvIGJlIGFwcGxpZWQuIElmIHJlbGF0aXZlLCBpdCBpcyByZWxhdGl2ZSB0byB0aGUgU291cmNlTWFwQ29uc3VtZXIuXG4gKiAgICAgICAgVGhpcyBwYXJhbWV0ZXIgaXMgbmVlZGVkIHdoZW4gdGhlIHR3byBzb3VyY2UgbWFwcyBhcmVuJ3QgaW4gdGhlIHNhbWVcbiAqICAgICAgICBkaXJlY3RvcnksIGFuZCB0aGUgc291cmNlIG1hcCB0byBiZSBhcHBsaWVkIGNvbnRhaW5zIHJlbGF0aXZlIHNvdXJjZVxuICogICAgICAgIHBhdGhzLiBJZiBzbywgdGhvc2UgcmVsYXRpdmUgc291cmNlIHBhdGhzIG5lZWQgdG8gYmUgcmV3cml0dGVuXG4gKiAgICAgICAgcmVsYXRpdmUgdG8gdGhlIFNvdXJjZU1hcEdlbmVyYXRvci5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5hcHBseVNvdXJjZU1hcCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9hcHBseVNvdXJjZU1hcChhU291cmNlTWFwQ29uc3VtZXIsIGFTb3VyY2VGaWxlLCBhU291cmNlTWFwUGF0aCkge1xuICAgIHZhciBzb3VyY2VGaWxlID0gYVNvdXJjZUZpbGU7XG4gICAgLy8gSWYgYVNvdXJjZUZpbGUgaXMgb21pdHRlZCwgd2Ugd2lsbCB1c2UgdGhlIGZpbGUgcHJvcGVydHkgb2YgdGhlIFNvdXJjZU1hcFxuICAgIGlmIChhU291cmNlRmlsZSA9PSBudWxsKSB7XG4gICAgICBpZiAoYVNvdXJjZU1hcENvbnN1bWVyLmZpbGUgPT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1NvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuYXBwbHlTb3VyY2VNYXAgcmVxdWlyZXMgZWl0aGVyIGFuIGV4cGxpY2l0IHNvdXJjZSBmaWxlLCAnICtcbiAgICAgICAgICAnb3IgdGhlIHNvdXJjZSBtYXBcXCdzIFwiZmlsZVwiIHByb3BlcnR5LiBCb3RoIHdlcmUgb21pdHRlZC4nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBzb3VyY2VGaWxlID0gYVNvdXJjZU1hcENvbnN1bWVyLmZpbGU7XG4gICAgfVxuICAgIHZhciBzb3VyY2VSb290ID0gdGhpcy5fc291cmNlUm9vdDtcbiAgICAvLyBNYWtlIFwic291cmNlRmlsZVwiIHJlbGF0aXZlIGlmIGFuIGFic29sdXRlIFVybCBpcyBwYXNzZWQuXG4gICAgaWYgKHNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgc291cmNlRmlsZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgc291cmNlRmlsZSk7XG4gICAgfVxuICAgIC8vIEFwcGx5aW5nIHRoZSBTb3VyY2VNYXAgY2FuIGFkZCBhbmQgcmVtb3ZlIGl0ZW1zIGZyb20gdGhlIHNvdXJjZXMgYW5kXG4gICAgLy8gdGhlIG5hbWVzIGFycmF5LlxuICAgIHZhciBuZXdTb3VyY2VzID0gbmV3IEFycmF5U2V0KCk7XG4gICAgdmFyIG5ld05hbWVzID0gbmV3IEFycmF5U2V0KCk7XG5cbiAgICAvLyBGaW5kIG1hcHBpbmdzIGZvciB0aGUgXCJzb3VyY2VGaWxlXCJcbiAgICB0aGlzLl9tYXBwaW5ncy51bnNvcnRlZEZvckVhY2goZnVuY3Rpb24gKG1hcHBpbmcpIHtcbiAgICAgIGlmIChtYXBwaW5nLnNvdXJjZSA9PT0gc291cmNlRmlsZSAmJiBtYXBwaW5nLm9yaWdpbmFsTGluZSAhPSBudWxsKSB7XG4gICAgICAgIC8vIENoZWNrIGlmIGl0IGNhbiBiZSBtYXBwZWQgYnkgdGhlIHNvdXJjZSBtYXAsIHRoZW4gdXBkYXRlIHRoZSBtYXBwaW5nLlxuICAgICAgICB2YXIgb3JpZ2luYWwgPSBhU291cmNlTWFwQ29uc3VtZXIub3JpZ2luYWxQb3NpdGlvbkZvcih7XG4gICAgICAgICAgbGluZTogbWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgICAgY29sdW1uOiBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAob3JpZ2luYWwuc291cmNlICE9IG51bGwpIHtcbiAgICAgICAgICAvLyBDb3B5IG1hcHBpbmdcbiAgICAgICAgICBtYXBwaW5nLnNvdXJjZSA9IG9yaWdpbmFsLnNvdXJjZTtcbiAgICAgICAgICBpZiAoYVNvdXJjZU1hcFBhdGggIT0gbnVsbCkge1xuICAgICAgICAgICAgbWFwcGluZy5zb3VyY2UgPSB1dGlsLmpvaW4oYVNvdXJjZU1hcFBhdGgsIG1hcHBpbmcuc291cmNlKVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICAgICAgICBtYXBwaW5nLnNvdXJjZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgbWFwcGluZy5zb3VyY2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsTGluZSA9IG9yaWdpbmFsLmxpbmU7XG4gICAgICAgICAgbWFwcGluZy5vcmlnaW5hbENvbHVtbiA9IG9yaWdpbmFsLmNvbHVtbjtcbiAgICAgICAgICBpZiAob3JpZ2luYWwubmFtZSAhPSBudWxsKSB7XG4gICAgICAgICAgICBtYXBwaW5nLm5hbWUgPSBvcmlnaW5hbC5uYW1lO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgc291cmNlID0gbWFwcGluZy5zb3VyY2U7XG4gICAgICBpZiAoc291cmNlICE9IG51bGwgJiYgIW5ld1NvdXJjZXMuaGFzKHNvdXJjZSkpIHtcbiAgICAgICAgbmV3U291cmNlcy5hZGQoc291cmNlKTtcbiAgICAgIH1cblxuICAgICAgdmFyIG5hbWUgPSBtYXBwaW5nLm5hbWU7XG4gICAgICBpZiAobmFtZSAhPSBudWxsICYmICFuZXdOYW1lcy5oYXMobmFtZSkpIHtcbiAgICAgICAgbmV3TmFtZXMuYWRkKG5hbWUpO1xuICAgICAgfVxuXG4gICAgfSwgdGhpcyk7XG4gICAgdGhpcy5fc291cmNlcyA9IG5ld1NvdXJjZXM7XG4gICAgdGhpcy5fbmFtZXMgPSBuZXdOYW1lcztcblxuICAgIC8vIENvcHkgc291cmNlc0NvbnRlbnRzIG9mIGFwcGxpZWQgbWFwLlxuICAgIGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VzLmZvckVhY2goZnVuY3Rpb24gKHNvdXJjZUZpbGUpIHtcbiAgICAgIHZhciBjb250ZW50ID0gYVNvdXJjZU1hcENvbnN1bWVyLnNvdXJjZUNvbnRlbnRGb3Ioc291cmNlRmlsZSk7XG4gICAgICBpZiAoY29udGVudCAhPSBudWxsKSB7XG4gICAgICAgIGlmIChhU291cmNlTWFwUGF0aCAhPSBudWxsKSB7XG4gICAgICAgICAgc291cmNlRmlsZSA9IHV0aWwuam9pbihhU291cmNlTWFwUGF0aCwgc291cmNlRmlsZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICAgIHNvdXJjZUZpbGUgPSB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3QsIHNvdXJjZUZpbGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0U291cmNlQ29udGVudChzb3VyY2VGaWxlLCBjb250ZW50KTtcbiAgICAgIH1cbiAgICB9LCB0aGlzKTtcbiAgfTtcblxuLyoqXG4gKiBBIG1hcHBpbmcgY2FuIGhhdmUgb25lIG9mIHRoZSB0aHJlZSBsZXZlbHMgb2YgZGF0YTpcbiAqXG4gKiAgIDEuIEp1c3QgdGhlIGdlbmVyYXRlZCBwb3NpdGlvbi5cbiAqICAgMi4gVGhlIEdlbmVyYXRlZCBwb3NpdGlvbiwgb3JpZ2luYWwgcG9zaXRpb24sIGFuZCBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIDMuIEdlbmVyYXRlZCBhbmQgb3JpZ2luYWwgcG9zaXRpb24sIG9yaWdpbmFsIHNvdXJjZSwgYXMgd2VsbCBhcyBhIG5hbWVcbiAqICAgICAgdG9rZW4uXG4gKlxuICogVG8gbWFpbnRhaW4gY29uc2lzdGVuY3ksIHdlIHZhbGlkYXRlIHRoYXQgYW55IG5ldyBtYXBwaW5nIGJlaW5nIGFkZGVkIGZhbGxzXG4gKiBpbiB0byBvbmUgb2YgdGhlc2UgY2F0ZWdvcmllcy5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fdmFsaWRhdGVNYXBwaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX3ZhbGlkYXRlTWFwcGluZyhhR2VuZXJhdGVkLCBhT3JpZ2luYWwsIGFTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYU5hbWUpIHtcbiAgICAvLyBXaGVuIGFPcmlnaW5hbCBpcyB0cnV0aHkgYnV0IGhhcyBlbXB0eSB2YWx1ZXMgZm9yIC5saW5lIGFuZCAuY29sdW1uLFxuICAgIC8vIGl0IGlzIG1vc3QgbGlrZWx5IGEgcHJvZ3JhbW1lciBlcnJvci4gSW4gdGhpcyBjYXNlIHdlIHRocm93IGEgdmVyeVxuICAgIC8vIHNwZWNpZmljIGVycm9yIG1lc3NhZ2UgdG8gdHJ5IHRvIGd1aWRlIHRoZW0gdGhlIHJpZ2h0IHdheS5cbiAgICAvLyBGb3IgZXhhbXBsZTogaHR0cHM6Ly9naXRodWIuY29tL1BvbHltZXIvcG9seW1lci1idW5kbGVyL3B1bGwvNTE5XG4gICAgaWYgKGFPcmlnaW5hbCAmJiB0eXBlb2YgYU9yaWdpbmFsLmxpbmUgIT09ICdudW1iZXInICYmIHR5cGVvZiBhT3JpZ2luYWwuY29sdW1uICE9PSAnbnVtYmVyJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnb3JpZ2luYWwubGluZSBhbmQgb3JpZ2luYWwuY29sdW1uIGFyZSBub3QgbnVtYmVycyAtLSB5b3UgcHJvYmFibHkgbWVhbnQgdG8gb21pdCAnICtcbiAgICAgICAgICAgICd0aGUgb3JpZ2luYWwgbWFwcGluZyBlbnRpcmVseSBhbmQgb25seSBtYXAgdGhlIGdlbmVyYXRlZCBwb3NpdGlvbi4gSWYgc28sIHBhc3MgJyArXG4gICAgICAgICAgICAnbnVsbCBmb3IgdGhlIG9yaWdpbmFsIG1hcHBpbmcgaW5zdGVhZCBvZiBhbiBvYmplY3Qgd2l0aCBlbXB0eSBvciBudWxsIHZhbHVlcy4nXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGFHZW5lcmF0ZWQgJiYgJ2xpbmUnIGluIGFHZW5lcmF0ZWQgJiYgJ2NvbHVtbicgaW4gYUdlbmVyYXRlZFxuICAgICAgICAmJiBhR2VuZXJhdGVkLmxpbmUgPiAwICYmIGFHZW5lcmF0ZWQuY29sdW1uID49IDBcbiAgICAgICAgJiYgIWFPcmlnaW5hbCAmJiAhYVNvdXJjZSAmJiAhYU5hbWUpIHtcbiAgICAgIC8vIENhc2UgMS5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWxzZSBpZiAoYUdlbmVyYXRlZCAmJiAnbGluZScgaW4gYUdlbmVyYXRlZCAmJiAnY29sdW1uJyBpbiBhR2VuZXJhdGVkXG4gICAgICAgICAgICAgJiYgYU9yaWdpbmFsICYmICdsaW5lJyBpbiBhT3JpZ2luYWwgJiYgJ2NvbHVtbicgaW4gYU9yaWdpbmFsXG4gICAgICAgICAgICAgJiYgYUdlbmVyYXRlZC5saW5lID4gMCAmJiBhR2VuZXJhdGVkLmNvbHVtbiA+PSAwXG4gICAgICAgICAgICAgJiYgYU9yaWdpbmFsLmxpbmUgPiAwICYmIGFPcmlnaW5hbC5jb2x1bW4gPj0gMFxuICAgICAgICAgICAgICYmIGFTb3VyY2UpIHtcbiAgICAgIC8vIENhc2VzIDIgYW5kIDMuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG1hcHBpbmc6ICcgKyBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGdlbmVyYXRlZDogYUdlbmVyYXRlZCxcbiAgICAgICAgc291cmNlOiBhU291cmNlLFxuICAgICAgICBvcmlnaW5hbDogYU9yaWdpbmFsLFxuICAgICAgICBuYW1lOiBhTmFtZVxuICAgICAgfSkpO1xuICAgIH1cbiAgfTtcblxuLyoqXG4gKiBTZXJpYWxpemUgdGhlIGFjY3VtdWxhdGVkIG1hcHBpbmdzIGluIHRvIHRoZSBzdHJlYW0gb2YgYmFzZSA2NCBWTFFzXG4gKiBzcGVjaWZpZWQgYnkgdGhlIHNvdXJjZSBtYXAgZm9ybWF0LlxuICovXG5Tb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLl9zZXJpYWxpemVNYXBwaW5ncyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9zZXJpYWxpemVNYXBwaW5ncygpIHtcbiAgICB2YXIgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuICAgIHZhciBwcmV2aW91c0dlbmVyYXRlZExpbmUgPSAxO1xuICAgIHZhciBwcmV2aW91c09yaWdpbmFsQ29sdW1uID0gMDtcbiAgICB2YXIgcHJldmlvdXNPcmlnaW5hbExpbmUgPSAwO1xuICAgIHZhciBwcmV2aW91c05hbWUgPSAwO1xuICAgIHZhciBwcmV2aW91c1NvdXJjZSA9IDA7XG4gICAgdmFyIHJlc3VsdCA9ICcnO1xuICAgIHZhciBuZXh0O1xuICAgIHZhciBtYXBwaW5nO1xuICAgIHZhciBuYW1lSWR4O1xuICAgIHZhciBzb3VyY2VJZHg7XG5cbiAgICB2YXIgbWFwcGluZ3MgPSB0aGlzLl9tYXBwaW5ncy50b0FycmF5KCk7XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IG1hcHBpbmdzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBtYXBwaW5nID0gbWFwcGluZ3NbaV07XG4gICAgICBuZXh0ID0gJydcblxuICAgICAgaWYgKG1hcHBpbmcuZ2VuZXJhdGVkTGluZSAhPT0gcHJldmlvdXNHZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgIHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uID0gMDtcbiAgICAgICAgd2hpbGUgKG1hcHBpbmcuZ2VuZXJhdGVkTGluZSAhPT0gcHJldmlvdXNHZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgICAgbmV4dCArPSAnOyc7XG4gICAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRMaW5lKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICBpZiAoIXV0aWwuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQobWFwcGluZywgbWFwcGluZ3NbaSAtIDFdKSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5leHQgKz0gJywnO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIG5leHQgKz0gYmFzZTY0VkxRLmVuY29kZShtYXBwaW5nLmdlbmVyYXRlZENvbHVtblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBwcmV2aW91c0dlbmVyYXRlZENvbHVtbik7XG4gICAgICBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uO1xuXG4gICAgICBpZiAobWFwcGluZy5zb3VyY2UgIT0gbnVsbCkge1xuICAgICAgICBzb3VyY2VJZHggPSB0aGlzLl9zb3VyY2VzLmluZGV4T2YobWFwcGluZy5zb3VyY2UpO1xuICAgICAgICBuZXh0ICs9IGJhc2U2NFZMUS5lbmNvZGUoc291cmNlSWR4IC0gcHJldmlvdXNTb3VyY2UpO1xuICAgICAgICBwcmV2aW91c1NvdXJjZSA9IHNvdXJjZUlkeDtcblxuICAgICAgICAvLyBsaW5lcyBhcmUgc3RvcmVkIDAtYmFzZWQgaW4gU291cmNlTWFwIHNwZWMgdmVyc2lvbiAzXG4gICAgICAgIG5leHQgKz0gYmFzZTY0VkxRLmVuY29kZShtYXBwaW5nLm9yaWdpbmFsTGluZSAtIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBwcmV2aW91c09yaWdpbmFsTGluZSk7XG4gICAgICAgIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gbWFwcGluZy5vcmlnaW5hbExpbmUgLSAxO1xuXG4gICAgICAgIG5leHQgKz0gYmFzZTY0VkxRLmVuY29kZShtYXBwaW5nLm9yaWdpbmFsQ29sdW1uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gcHJldmlvdXNPcmlnaW5hbENvbHVtbik7XG4gICAgICAgIHByZXZpb3VzT3JpZ2luYWxDb2x1bW4gPSBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uO1xuXG4gICAgICAgIGlmIChtYXBwaW5nLm5hbWUgIT0gbnVsbCkge1xuICAgICAgICAgIG5hbWVJZHggPSB0aGlzLl9uYW1lcy5pbmRleE9mKG1hcHBpbmcubmFtZSk7XG4gICAgICAgICAgbmV4dCArPSBiYXNlNjRWTFEuZW5jb2RlKG5hbWVJZHggLSBwcmV2aW91c05hbWUpO1xuICAgICAgICAgIHByZXZpb3VzTmFtZSA9IG5hbWVJZHg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmVzdWx0ICs9IG5leHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fZ2VuZXJhdGVTb3VyY2VzQ29udGVudCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9nZW5lcmF0ZVNvdXJjZXNDb250ZW50KGFTb3VyY2VzLCBhU291cmNlUm9vdCkge1xuICAgIHJldHVybiBhU291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgaWYgKCF0aGlzLl9zb3VyY2VzQ29udGVudHMpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBpZiAoYVNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICBzb3VyY2UgPSB1dGlsLnJlbGF0aXZlKGFTb3VyY2VSb290LCBzb3VyY2UpO1xuICAgICAgfVxuICAgICAgdmFyIGtleSA9IHV0aWwudG9TZXRTdHJpbmcoc291cmNlKTtcbiAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5fc291cmNlc0NvbnRlbnRzLCBrZXkpXG4gICAgICAgID8gdGhpcy5fc291cmNlc0NvbnRlbnRzW2tleV1cbiAgICAgICAgOiBudWxsO1xuICAgIH0sIHRoaXMpO1xuICB9O1xuXG4vKipcbiAqIEV4dGVybmFsaXplIHRoZSBzb3VyY2UgbWFwLlxuICovXG5Tb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLnRvSlNPTiA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl90b0pTT04oKSB7XG4gICAgdmFyIG1hcCA9IHtcbiAgICAgIHZlcnNpb246IHRoaXMuX3ZlcnNpb24sXG4gICAgICBzb3VyY2VzOiB0aGlzLl9zb3VyY2VzLnRvQXJyYXkoKSxcbiAgICAgIG5hbWVzOiB0aGlzLl9uYW1lcy50b0FycmF5KCksXG4gICAgICBtYXBwaW5nczogdGhpcy5fc2VyaWFsaXplTWFwcGluZ3MoKVxuICAgIH07XG4gICAgaWYgKHRoaXMuX2ZpbGUgIT0gbnVsbCkge1xuICAgICAgbWFwLmZpbGUgPSB0aGlzLl9maWxlO1xuICAgIH1cbiAgICBpZiAodGhpcy5fc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICBtYXAuc291cmNlUm9vdCA9IHRoaXMuX3NvdXJjZVJvb3Q7XG4gICAgfVxuICAgIGlmICh0aGlzLl9zb3VyY2VzQ29udGVudHMpIHtcbiAgICAgIG1hcC5zb3VyY2VzQ29udGVudCA9IHRoaXMuX2dlbmVyYXRlU291cmNlc0NvbnRlbnQobWFwLnNvdXJjZXMsIG1hcC5zb3VyY2VSb290KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWFwO1xuICB9O1xuXG4vKipcbiAqIFJlbmRlciB0aGUgc291cmNlIG1hcCBiZWluZyBnZW5lcmF0ZWQgdG8gYSBzdHJpbmcuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUudG9TdHJpbmcgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMudG9KU09OKCkpO1xuICB9O1xuXG5leHBvcnRzLlNvdXJjZU1hcEdlbmVyYXRvciA9IFNvdXJjZU1hcEdlbmVyYXRvcjtcbiIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cblxuZXhwb3J0cy5HUkVBVEVTVF9MT1dFUl9CT1VORCA9IDE7XG5leHBvcnRzLkxFQVNUX1VQUEVSX0JPVU5EID0gMjtcblxuLyoqXG4gKiBSZWN1cnNpdmUgaW1wbGVtZW50YXRpb24gb2YgYmluYXJ5IHNlYXJjaC5cbiAqXG4gKiBAcGFyYW0gYUxvdyBJbmRpY2VzIGhlcmUgYW5kIGxvd2VyIGRvIG5vdCBjb250YWluIHRoZSBuZWVkbGUuXG4gKiBAcGFyYW0gYUhpZ2ggSW5kaWNlcyBoZXJlIGFuZCBoaWdoZXIgZG8gbm90IGNvbnRhaW4gdGhlIG5lZWRsZS5cbiAqIEBwYXJhbSBhTmVlZGxlIFRoZSBlbGVtZW50IGJlaW5nIHNlYXJjaGVkIGZvci5cbiAqIEBwYXJhbSBhSGF5c3RhY2sgVGhlIG5vbi1lbXB0eSBhcnJheSBiZWluZyBzZWFyY2hlZC5cbiAqIEBwYXJhbSBhQ29tcGFyZSBGdW5jdGlvbiB3aGljaCB0YWtlcyB0d28gZWxlbWVudHMgYW5kIHJldHVybnMgLTEsIDAsIG9yIDEuXG4gKiBAcGFyYW0gYUJpYXMgRWl0aGVyICdiaW5hcnlTZWFyY2guR1JFQVRFU1RfTE9XRVJfQk9VTkQnIG9yXG4gKiAgICAgJ2JpbmFyeVNlYXJjaC5MRUFTVF9VUFBFUl9CT1VORCcuIFNwZWNpZmllcyB3aGV0aGVyIHRvIHJldHVybiB0aGVcbiAqICAgICBjbG9zZXN0IGVsZW1lbnQgdGhhdCBpcyBzbWFsbGVyIHRoYW4gb3IgZ3JlYXRlciB0aGFuIHRoZSBvbmUgd2UgYXJlXG4gKiAgICAgc2VhcmNoaW5nIGZvciwgcmVzcGVjdGl2ZWx5LCBpZiB0aGUgZXhhY3QgZWxlbWVudCBjYW5ub3QgYmUgZm91bmQuXG4gKi9cbmZ1bmN0aW9uIHJlY3Vyc2l2ZVNlYXJjaChhTG93LCBhSGlnaCwgYU5lZWRsZSwgYUhheXN0YWNrLCBhQ29tcGFyZSwgYUJpYXMpIHtcbiAgLy8gVGhpcyBmdW5jdGlvbiB0ZXJtaW5hdGVzIHdoZW4gb25lIG9mIHRoZSBmb2xsb3dpbmcgaXMgdHJ1ZTpcbiAgLy9cbiAgLy8gICAxLiBXZSBmaW5kIHRoZSBleGFjdCBlbGVtZW50IHdlIGFyZSBsb29raW5nIGZvci5cbiAgLy9cbiAgLy8gICAyLiBXZSBkaWQgbm90IGZpbmQgdGhlIGV4YWN0IGVsZW1lbnQsIGJ1dCB3ZSBjYW4gcmV0dXJuIHRoZSBpbmRleCBvZlxuICAvLyAgICAgIHRoZSBuZXh0LWNsb3Nlc3QgZWxlbWVudC5cbiAgLy9cbiAgLy8gICAzLiBXZSBkaWQgbm90IGZpbmQgdGhlIGV4YWN0IGVsZW1lbnQsIGFuZCB0aGVyZSBpcyBubyBuZXh0LWNsb3Nlc3RcbiAgLy8gICAgICBlbGVtZW50IHRoYW4gdGhlIG9uZSB3ZSBhcmUgc2VhcmNoaW5nIGZvciwgc28gd2UgcmV0dXJuIC0xLlxuICB2YXIgbWlkID0gTWF0aC5mbG9vcigoYUhpZ2ggLSBhTG93KSAvIDIpICsgYUxvdztcbiAgdmFyIGNtcCA9IGFDb21wYXJlKGFOZWVkbGUsIGFIYXlzdGFja1ttaWRdLCB0cnVlKTtcbiAgaWYgKGNtcCA9PT0gMCkge1xuICAgIC8vIEZvdW5kIHRoZSBlbGVtZW50IHdlIGFyZSBsb29raW5nIGZvci5cbiAgICByZXR1cm4gbWlkO1xuICB9XG4gIGVsc2UgaWYgKGNtcCA+IDApIHtcbiAgICAvLyBPdXIgbmVlZGxlIGlzIGdyZWF0ZXIgdGhhbiBhSGF5c3RhY2tbbWlkXS5cbiAgICBpZiAoYUhpZ2ggLSBtaWQgPiAxKSB7XG4gICAgICAvLyBUaGUgZWxlbWVudCBpcyBpbiB0aGUgdXBwZXIgaGFsZi5cbiAgICAgIHJldHVybiByZWN1cnNpdmVTZWFyY2gobWlkLCBhSGlnaCwgYU5lZWRsZSwgYUhheXN0YWNrLCBhQ29tcGFyZSwgYUJpYXMpO1xuICAgIH1cblxuICAgIC8vIFRoZSBleGFjdCBuZWVkbGUgZWxlbWVudCB3YXMgbm90IGZvdW5kIGluIHRoaXMgaGF5c3RhY2suIERldGVybWluZSBpZlxuICAgIC8vIHdlIGFyZSBpbiB0ZXJtaW5hdGlvbiBjYXNlICgzKSBvciAoMikgYW5kIHJldHVybiB0aGUgYXBwcm9wcmlhdGUgdGhpbmcuXG4gICAgaWYgKGFCaWFzID09IGV4cG9ydHMuTEVBU1RfVVBQRVJfQk9VTkQpIHtcbiAgICAgIHJldHVybiBhSGlnaCA8IGFIYXlzdGFjay5sZW5ndGggPyBhSGlnaCA6IC0xO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbWlkO1xuICAgIH1cbiAgfVxuICBlbHNlIHtcbiAgICAvLyBPdXIgbmVlZGxlIGlzIGxlc3MgdGhhbiBhSGF5c3RhY2tbbWlkXS5cbiAgICBpZiAobWlkIC0gYUxvdyA+IDEpIHtcbiAgICAgIC8vIFRoZSBlbGVtZW50IGlzIGluIHRoZSBsb3dlciBoYWxmLlxuICAgICAgcmV0dXJuIHJlY3Vyc2l2ZVNlYXJjaChhTG93LCBtaWQsIGFOZWVkbGUsIGFIYXlzdGFjaywgYUNvbXBhcmUsIGFCaWFzKTtcbiAgICB9XG5cbiAgICAvLyB3ZSBhcmUgaW4gdGVybWluYXRpb24gY2FzZSAoMykgb3IgKDIpIGFuZCByZXR1cm4gdGhlIGFwcHJvcHJpYXRlIHRoaW5nLlxuICAgIGlmIChhQmlhcyA9PSBleHBvcnRzLkxFQVNUX1VQUEVSX0JPVU5EKSB7XG4gICAgICByZXR1cm4gbWlkO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYUxvdyA8IDAgPyAtMSA6IGFMb3c7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBiaW5hcnkgc2VhcmNoIHdoaWNoIHdpbGwgYWx3YXlzIHRyeSBhbmQgcmV0dXJuXG4gKiB0aGUgaW5kZXggb2YgdGhlIGNsb3Nlc3QgZWxlbWVudCBpZiB0aGVyZSBpcyBubyBleGFjdCBoaXQuIFRoaXMgaXMgYmVjYXVzZVxuICogbWFwcGluZ3MgYmV0d2VlbiBvcmlnaW5hbCBhbmQgZ2VuZXJhdGVkIGxpbmUvY29sIHBhaXJzIGFyZSBzaW5nbGUgcG9pbnRzLFxuICogYW5kIHRoZXJlIGlzIGFuIGltcGxpY2l0IHJlZ2lvbiBiZXR3ZWVuIGVhY2ggb2YgdGhlbSwgc28gYSBtaXNzIGp1c3QgbWVhbnNcbiAqIHRoYXQgeW91IGFyZW4ndCBvbiB0aGUgdmVyeSBzdGFydCBvZiBhIHJlZ2lvbi5cbiAqXG4gKiBAcGFyYW0gYU5lZWRsZSBUaGUgZWxlbWVudCB5b3UgYXJlIGxvb2tpbmcgZm9yLlxuICogQHBhcmFtIGFIYXlzdGFjayBUaGUgYXJyYXkgdGhhdCBpcyBiZWluZyBzZWFyY2hlZC5cbiAqIEBwYXJhbSBhQ29tcGFyZSBBIGZ1bmN0aW9uIHdoaWNoIHRha2VzIHRoZSBuZWVkbGUgYW5kIGFuIGVsZW1lbnQgaW4gdGhlXG4gKiAgICAgYXJyYXkgYW5kIHJldHVybnMgLTEsIDAsIG9yIDEgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIG5lZWRsZSBpcyBsZXNzXG4gKiAgICAgdGhhbiwgZXF1YWwgdG8sIG9yIGdyZWF0ZXIgdGhhbiB0aGUgZWxlbWVudCwgcmVzcGVjdGl2ZWx5LlxuICogQHBhcmFtIGFCaWFzIEVpdGhlciAnYmluYXJ5U2VhcmNoLkdSRUFURVNUX0xPV0VSX0JPVU5EJyBvclxuICogICAgICdiaW5hcnlTZWFyY2guTEVBU1RfVVBQRVJfQk9VTkQnLiBTcGVjaWZpZXMgd2hldGhlciB0byByZXR1cm4gdGhlXG4gKiAgICAgY2xvc2VzdCBlbGVtZW50IHRoYXQgaXMgc21hbGxlciB0aGFuIG9yIGdyZWF0ZXIgdGhhbiB0aGUgb25lIHdlIGFyZVxuICogICAgIHNlYXJjaGluZyBmb3IsIHJlc3BlY3RpdmVseSwgaWYgdGhlIGV4YWN0IGVsZW1lbnQgY2Fubm90IGJlIGZvdW5kLlxuICogICAgIERlZmF1bHRzIHRvICdiaW5hcnlTZWFyY2guR1JFQVRFU1RfTE9XRVJfQk9VTkQnLlxuICovXG5leHBvcnRzLnNlYXJjaCA9IGZ1bmN0aW9uIHNlYXJjaChhTmVlZGxlLCBhSGF5c3RhY2ssIGFDb21wYXJlLCBhQmlhcykge1xuICBpZiAoYUhheXN0YWNrLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIHZhciBpbmRleCA9IHJlY3Vyc2l2ZVNlYXJjaCgtMSwgYUhheXN0YWNrLmxlbmd0aCwgYU5lZWRsZSwgYUhheXN0YWNrLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYUNvbXBhcmUsIGFCaWFzIHx8IGV4cG9ydHMuR1JFQVRFU1RfTE9XRVJfQk9VTkQpO1xuICBpZiAoaW5kZXggPCAwKSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG5cbiAgLy8gV2UgaGF2ZSBmb3VuZCBlaXRoZXIgdGhlIGV4YWN0IGVsZW1lbnQsIG9yIHRoZSBuZXh0LWNsb3Nlc3QgZWxlbWVudCB0aGFuXG4gIC8vIHRoZSBvbmUgd2UgYXJlIHNlYXJjaGluZyBmb3IuIEhvd2V2ZXIsIHRoZXJlIG1heSBiZSBtb3JlIHRoYW4gb25lIHN1Y2hcbiAgLy8gZWxlbWVudC4gTWFrZSBzdXJlIHdlIGFsd2F5cyByZXR1cm4gdGhlIHNtYWxsZXN0IG9mIHRoZXNlLlxuICB3aGlsZSAoaW5kZXggLSAxID49IDApIHtcbiAgICBpZiAoYUNvbXBhcmUoYUhheXN0YWNrW2luZGV4XSwgYUhheXN0YWNrW2luZGV4IC0gMV0sIHRydWUpICE9PSAwKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgLS1pbmRleDtcbiAgfVxuXG4gIHJldHVybiBpbmRleDtcbn07XG4iLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbi8vIEl0IHR1cm5zIG91dCB0aGF0IHNvbWUgKG1vc3Q/KSBKYXZhU2NyaXB0IGVuZ2luZXMgZG9uJ3Qgc2VsZi1ob3N0XG4vLyBgQXJyYXkucHJvdG90eXBlLnNvcnRgLiBUaGlzIG1ha2VzIHNlbnNlIGJlY2F1c2UgQysrIHdpbGwgbGlrZWx5IHJlbWFpblxuLy8gZmFzdGVyIHRoYW4gSlMgd2hlbiBkb2luZyByYXcgQ1BVLWludGVuc2l2ZSBzb3J0aW5nLiBIb3dldmVyLCB3aGVuIHVzaW5nIGFcbi8vIGN1c3RvbSBjb21wYXJhdG9yIGZ1bmN0aW9uLCBjYWxsaW5nIGJhY2sgYW5kIGZvcnRoIGJldHdlZW4gdGhlIFZNJ3MgQysrIGFuZFxuLy8gSklUJ2QgSlMgaXMgcmF0aGVyIHNsb3cgKmFuZCogbG9zZXMgSklUIHR5cGUgaW5mb3JtYXRpb24sIHJlc3VsdGluZyBpblxuLy8gd29yc2UgZ2VuZXJhdGVkIGNvZGUgZm9yIHRoZSBjb21wYXJhdG9yIGZ1bmN0aW9uIHRoYW4gd291bGQgYmUgb3B0aW1hbC4gSW5cbi8vIGZhY3QsIHdoZW4gc29ydGluZyB3aXRoIGEgY29tcGFyYXRvciwgdGhlc2UgY29zdHMgb3V0d2VpZ2ggdGhlIGJlbmVmaXRzIG9mXG4vLyBzb3J0aW5nIGluIEMrKy4gQnkgdXNpbmcgb3VyIG93biBKUy1pbXBsZW1lbnRlZCBRdWljayBTb3J0IChiZWxvdyksIHdlIGdldFxuLy8gYSB+MzUwMG1zIG1lYW4gc3BlZWQtdXAgaW4gYGJlbmNoL2JlbmNoLmh0bWxgLlxuXG4vKipcbiAqIFN3YXAgdGhlIGVsZW1lbnRzIGluZGV4ZWQgYnkgYHhgIGFuZCBgeWAgaW4gdGhlIGFycmF5IGBhcnlgLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGFyeVxuICogICAgICAgIFRoZSBhcnJheS5cbiAqIEBwYXJhbSB7TnVtYmVyfSB4XG4gKiAgICAgICAgVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBpdGVtLlxuICogQHBhcmFtIHtOdW1iZXJ9IHlcbiAqICAgICAgICBUaGUgaW5kZXggb2YgdGhlIHNlY29uZCBpdGVtLlxuICovXG5mdW5jdGlvbiBzd2FwKGFyeSwgeCwgeSkge1xuICB2YXIgdGVtcCA9IGFyeVt4XTtcbiAgYXJ5W3hdID0gYXJ5W3ldO1xuICBhcnlbeV0gPSB0ZW1wO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSByYW5kb20gaW50ZWdlciB3aXRoaW4gdGhlIHJhbmdlIGBsb3cgLi4gaGlnaGAgaW5jbHVzaXZlLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBsb3dcbiAqICAgICAgICBUaGUgbG93ZXIgYm91bmQgb24gdGhlIHJhbmdlLlxuICogQHBhcmFtIHtOdW1iZXJ9IGhpZ2hcbiAqICAgICAgICBUaGUgdXBwZXIgYm91bmQgb24gdGhlIHJhbmdlLlxuICovXG5mdW5jdGlvbiByYW5kb21JbnRJblJhbmdlKGxvdywgaGlnaCkge1xuICByZXR1cm4gTWF0aC5yb3VuZChsb3cgKyAoTWF0aC5yYW5kb20oKSAqIChoaWdoIC0gbG93KSkpO1xufVxuXG4vKipcbiAqIFRoZSBRdWljayBTb3J0IGFsZ29yaXRobS5cbiAqXG4gKiBAcGFyYW0ge0FycmF5fSBhcnlcbiAqICAgICAgICBBbiBhcnJheSB0byBzb3J0LlxuICogQHBhcmFtIHtmdW5jdGlvbn0gY29tcGFyYXRvclxuICogICAgICAgIEZ1bmN0aW9uIHRvIHVzZSB0byBjb21wYXJlIHR3byBpdGVtcy5cbiAqIEBwYXJhbSB7TnVtYmVyfSBwXG4gKiAgICAgICAgU3RhcnQgaW5kZXggb2YgdGhlIGFycmF5XG4gKiBAcGFyYW0ge051bWJlcn0gclxuICogICAgICAgIEVuZCBpbmRleCBvZiB0aGUgYXJyYXlcbiAqL1xuZnVuY3Rpb24gZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBwLCByKSB7XG4gIC8vIElmIG91ciBsb3dlciBib3VuZCBpcyBsZXNzIHRoYW4gb3VyIHVwcGVyIGJvdW5kLCB3ZSAoMSkgcGFydGl0aW9uIHRoZVxuICAvLyBhcnJheSBpbnRvIHR3byBwaWVjZXMgYW5kICgyKSByZWN1cnNlIG9uIGVhY2ggaGFsZi4gSWYgaXQgaXMgbm90LCB0aGlzIGlzXG4gIC8vIHRoZSBlbXB0eSBhcnJheSBhbmQgb3VyIGJhc2UgY2FzZS5cblxuICBpZiAocCA8IHIpIHtcbiAgICAvLyAoMSkgUGFydGl0aW9uaW5nLlxuICAgIC8vXG4gICAgLy8gVGhlIHBhcnRpdGlvbmluZyBjaG9vc2VzIGEgcGl2b3QgYmV0d2VlbiBgcGAgYW5kIGByYCBhbmQgbW92ZXMgYWxsXG4gICAgLy8gZWxlbWVudHMgdGhhdCBhcmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBwaXZvdCB0byB0aGUgYmVmb3JlIGl0LCBhbmRcbiAgICAvLyBhbGwgdGhlIGVsZW1lbnRzIHRoYXQgYXJlIGdyZWF0ZXIgdGhhbiBpdCBhZnRlciBpdC4gVGhlIGVmZmVjdCBpcyB0aGF0XG4gICAgLy8gb25jZSBwYXJ0aXRpb24gaXMgZG9uZSwgdGhlIHBpdm90IGlzIGluIHRoZSBleGFjdCBwbGFjZSBpdCB3aWxsIGJlIHdoZW5cbiAgICAvLyB0aGUgYXJyYXkgaXMgcHV0IGluIHNvcnRlZCBvcmRlciwgYW5kIGl0IHdpbGwgbm90IG5lZWQgdG8gYmUgbW92ZWRcbiAgICAvLyBhZ2Fpbi4gVGhpcyBydW5zIGluIE8obikgdGltZS5cblxuICAgIC8vIEFsd2F5cyBjaG9vc2UgYSByYW5kb20gcGl2b3Qgc28gdGhhdCBhbiBpbnB1dCBhcnJheSB3aGljaCBpcyByZXZlcnNlXG4gICAgLy8gc29ydGVkIGRvZXMgbm90IGNhdXNlIE8obl4yKSBydW5uaW5nIHRpbWUuXG4gICAgdmFyIHBpdm90SW5kZXggPSByYW5kb21JbnRJblJhbmdlKHAsIHIpO1xuICAgIHZhciBpID0gcCAtIDE7XG5cbiAgICBzd2FwKGFyeSwgcGl2b3RJbmRleCwgcik7XG4gICAgdmFyIHBpdm90ID0gYXJ5W3JdO1xuXG4gICAgLy8gSW1tZWRpYXRlbHkgYWZ0ZXIgYGpgIGlzIGluY3JlbWVudGVkIGluIHRoaXMgbG9vcCwgdGhlIGZvbGxvd2luZyBob2xkXG4gICAgLy8gdHJ1ZTpcbiAgICAvL1xuICAgIC8vICAgKiBFdmVyeSBlbGVtZW50IGluIGBhcnlbcCAuLiBpXWAgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBwaXZvdC5cbiAgICAvL1xuICAgIC8vICAgKiBFdmVyeSBlbGVtZW50IGluIGBhcnlbaSsxIC4uIGotMV1gIGlzIGdyZWF0ZXIgdGhhbiB0aGUgcGl2b3QuXG4gICAgZm9yICh2YXIgaiA9IHA7IGogPCByOyBqKyspIHtcbiAgICAgIGlmIChjb21wYXJhdG9yKGFyeVtqXSwgcGl2b3QpIDw9IDApIHtcbiAgICAgICAgaSArPSAxO1xuICAgICAgICBzd2FwKGFyeSwgaSwgaik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dhcChhcnksIGkgKyAxLCBqKTtcbiAgICB2YXIgcSA9IGkgKyAxO1xuXG4gICAgLy8gKDIpIFJlY3Vyc2Ugb24gZWFjaCBoYWxmLlxuXG4gICAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBwLCBxIC0gMSk7XG4gICAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBxICsgMSwgcik7XG4gIH1cbn1cblxuLyoqXG4gKiBTb3J0IHRoZSBnaXZlbiBhcnJheSBpbi1wbGFjZSB3aXRoIHRoZSBnaXZlbiBjb21wYXJhdG9yIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGFyeVxuICogICAgICAgIEFuIGFycmF5IHRvIHNvcnQuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjb21wYXJhdG9yXG4gKiAgICAgICAgRnVuY3Rpb24gdG8gdXNlIHRvIGNvbXBhcmUgdHdvIGl0ZW1zLlxuICovXG5leHBvcnRzLnF1aWNrU29ydCA9IGZ1bmN0aW9uIChhcnksIGNvbXBhcmF0b3IpIHtcbiAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCAwLCBhcnkubGVuZ3RoIC0gMSk7XG59O1xuIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xudmFyIGJpbmFyeVNlYXJjaCA9IHJlcXVpcmUoJy4vYmluYXJ5LXNlYXJjaCcpO1xudmFyIEFycmF5U2V0ID0gcmVxdWlyZSgnLi9hcnJheS1zZXQnKS5BcnJheVNldDtcbnZhciBiYXNlNjRWTFEgPSByZXF1aXJlKCcuL2Jhc2U2NC12bHEnKTtcbnZhciBxdWlja1NvcnQgPSByZXF1aXJlKCcuL3F1aWNrLXNvcnQnKS5xdWlja1NvcnQ7XG5cbmZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyKGFTb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpIHtcbiAgdmFyIHNvdXJjZU1hcCA9IGFTb3VyY2VNYXA7XG4gIGlmICh0eXBlb2YgYVNvdXJjZU1hcCA9PT0gJ3N0cmluZycpIHtcbiAgICBzb3VyY2VNYXAgPSB1dGlsLnBhcnNlU291cmNlTWFwSW5wdXQoYVNvdXJjZU1hcCk7XG4gIH1cblxuICByZXR1cm4gc291cmNlTWFwLnNlY3Rpb25zICE9IG51bGxcbiAgICA/IG5ldyBJbmRleGVkU291cmNlTWFwQ29uc3VtZXIoc291cmNlTWFwLCBhU291cmNlTWFwVVJMKVxuICAgIDogbmV3IEJhc2ljU291cmNlTWFwQ29uc3VtZXIoc291cmNlTWFwLCBhU291cmNlTWFwVVJMKTtcbn1cblxuU291cmNlTWFwQ29uc3VtZXIuZnJvbVNvdXJjZU1hcCA9IGZ1bmN0aW9uKGFTb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpIHtcbiAgcmV0dXJuIEJhc2ljU291cmNlTWFwQ29uc3VtZXIuZnJvbVNvdXJjZU1hcChhU291cmNlTWFwLCBhU291cmNlTWFwVVJMKTtcbn1cblxuLyoqXG4gKiBUaGUgdmVyc2lvbiBvZiB0aGUgc291cmNlIG1hcHBpbmcgc3BlYyB0aGF0IHdlIGFyZSBjb25zdW1pbmcuXG4gKi9cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8vIGBfX2dlbmVyYXRlZE1hcHBpbmdzYCBhbmQgYF9fb3JpZ2luYWxNYXBwaW5nc2AgYXJlIGFycmF5cyB0aGF0IGhvbGQgdGhlXG4vLyBwYXJzZWQgbWFwcGluZyBjb29yZGluYXRlcyBmcm9tIHRoZSBzb3VyY2UgbWFwJ3MgXCJtYXBwaW5nc1wiIGF0dHJpYnV0ZS4gVGhleVxuLy8gYXJlIGxhemlseSBpbnN0YW50aWF0ZWQsIGFjY2Vzc2VkIHZpYSB0aGUgYF9nZW5lcmF0ZWRNYXBwaW5nc2AgYW5kXG4vLyBgX29yaWdpbmFsTWFwcGluZ3NgIGdldHRlcnMgcmVzcGVjdGl2ZWx5LCBhbmQgd2Ugb25seSBwYXJzZSB0aGUgbWFwcGluZ3Ncbi8vIGFuZCBjcmVhdGUgdGhlc2UgYXJyYXlzIG9uY2UgcXVlcmllZCBmb3IgYSBzb3VyY2UgbG9jYXRpb24uIFdlIGp1bXAgdGhyb3VnaFxuLy8gdGhlc2UgaG9vcHMgYmVjYXVzZSB0aGVyZSBjYW4gYmUgbWFueSB0aG91c2FuZHMgb2YgbWFwcGluZ3MsIGFuZCBwYXJzaW5nXG4vLyB0aGVtIGlzIGV4cGVuc2l2ZSwgc28gd2Ugb25seSB3YW50IHRvIGRvIGl0IGlmIHdlIG11c3QuXG4vL1xuLy8gRWFjaCBvYmplY3QgaW4gdGhlIGFycmF5cyBpcyBvZiB0aGUgZm9ybTpcbi8vXG4vLyAgICAge1xuLy8gICAgICAgZ2VuZXJhdGVkTGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgY29kZSxcbi8vICAgICAgIGdlbmVyYXRlZENvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBjb2RlLFxuLy8gICAgICAgc291cmNlOiBUaGUgcGF0aCB0byB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGUgdGhhdCBnZW5lcmF0ZWQgdGhpc1xuLy8gICAgICAgICAgICAgICBjaHVuayBvZiBjb2RlLFxuLy8gICAgICAgb3JpZ2luYWxMaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSB0aGF0XG4vLyAgICAgICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRzIHRvIHRoaXMgY2h1bmsgb2YgZ2VuZXJhdGVkIGNvZGUsXG4vLyAgICAgICBvcmlnaW5hbENvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSB0aGF0XG4vLyAgICAgICAgICAgICAgICAgICAgICAgY29ycmVzcG9uZHMgdG8gdGhpcyBjaHVuayBvZiBnZW5lcmF0ZWQgY29kZSxcbi8vICAgICAgIG5hbWU6IFRoZSBuYW1lIG9mIHRoZSBvcmlnaW5hbCBzeW1ib2wgd2hpY2ggZ2VuZXJhdGVkIHRoaXMgY2h1bmsgb2Zcbi8vICAgICAgICAgICAgIGNvZGUuXG4vLyAgICAgfVxuLy9cbi8vIEFsbCBwcm9wZXJ0aWVzIGV4Y2VwdCBmb3IgYGdlbmVyYXRlZExpbmVgIGFuZCBgZ2VuZXJhdGVkQ29sdW1uYCBjYW4gYmVcbi8vIGBudWxsYC5cbi8vXG4vLyBgX2dlbmVyYXRlZE1hcHBpbmdzYCBpcyBvcmRlcmVkIGJ5IHRoZSBnZW5lcmF0ZWQgcG9zaXRpb25zLlxuLy9cbi8vIGBfb3JpZ2luYWxNYXBwaW5nc2AgaXMgb3JkZXJlZCBieSB0aGUgb3JpZ2luYWwgcG9zaXRpb25zLlxuXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX19nZW5lcmF0ZWRNYXBwaW5ncyA9IG51bGw7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLCAnX2dlbmVyYXRlZE1hcHBpbmdzJywge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICghdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzKSB7XG4gICAgICB0aGlzLl9wYXJzZU1hcHBpbmdzKHRoaXMuX21hcHBpbmdzLCB0aGlzLnNvdXJjZVJvb3QpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3M7XG4gIH1cbn0pO1xuXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX19vcmlnaW5hbE1hcHBpbmdzID0gbnVsbDtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUsICdfb3JpZ2luYWxNYXBwaW5ncycsIHtcbiAgY29uZmlndXJhYmxlOiB0cnVlLFxuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXRoaXMuX19vcmlnaW5hbE1hcHBpbmdzKSB7XG4gICAgICB0aGlzLl9wYXJzZU1hcHBpbmdzKHRoaXMuX21hcHBpbmdzLCB0aGlzLnNvdXJjZVJvb3QpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncztcbiAgfVxufSk7XG5cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fY2hhcklzTWFwcGluZ1NlcGFyYXRvciA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2NoYXJJc01hcHBpbmdTZXBhcmF0b3IoYVN0ciwgaW5kZXgpIHtcbiAgICB2YXIgYyA9IGFTdHIuY2hhckF0KGluZGV4KTtcbiAgICByZXR1cm4gYyA9PT0gXCI7XCIgfHwgYyA9PT0gXCIsXCI7XG4gIH07XG5cbi8qKlxuICogUGFyc2UgdGhlIG1hcHBpbmdzIGluIGEgc3RyaW5nIGluIHRvIGEgZGF0YSBzdHJ1Y3R1cmUgd2hpY2ggd2UgY2FuIGVhc2lseVxuICogcXVlcnkgKHRoZSBvcmRlcmVkIGFycmF5cyBpbiB0aGUgYHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5nc2AgYW5kXG4gKiBgdGhpcy5fX29yaWdpbmFsTWFwcGluZ3NgIHByb3BlcnRpZXMpLlxuICovXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3BhcnNlTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiU3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCBfcGFyc2VNYXBwaW5nc1wiKTtcbiAgfTtcblxuU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSID0gMTtcblNvdXJjZU1hcENvbnN1bWVyLk9SSUdJTkFMX09SREVSID0gMjtcblxuU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQgPSAxO1xuU291cmNlTWFwQ29uc3VtZXIuTEVBU1RfVVBQRVJfQk9VTkQgPSAyO1xuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciBlYWNoIG1hcHBpbmcgYmV0d2VlbiBhbiBvcmlnaW5hbCBzb3VyY2UvbGluZS9jb2x1bW4gYW5kIGFcbiAqIGdlbmVyYXRlZCBsaW5lL2NvbHVtbiBpbiB0aGlzIHNvdXJjZSBtYXAuXG4gKlxuICogQHBhcmFtIEZ1bmN0aW9uIGFDYWxsYmFja1xuICogICAgICAgIFRoZSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aXRoIGVhY2ggbWFwcGluZy5cbiAqIEBwYXJhbSBPYmplY3QgYUNvbnRleHRcbiAqICAgICAgICBPcHRpb25hbC4gSWYgc3BlY2lmaWVkLCB0aGlzIG9iamVjdCB3aWxsIGJlIHRoZSB2YWx1ZSBvZiBgdGhpc2AgZXZlcnlcbiAqICAgICAgICB0aW1lIHRoYXQgYGFDYWxsYmFja2AgaXMgY2FsbGVkLlxuICogQHBhcmFtIGFPcmRlclxuICogICAgICAgIEVpdGhlciBgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSYCBvclxuICogICAgICAgIGBTb3VyY2VNYXBDb25zdW1lci5PUklHSU5BTF9PUkRFUmAuIFNwZWNpZmllcyB3aGV0aGVyIHlvdSB3YW50IHRvXG4gKiAgICAgICAgaXRlcmF0ZSBvdmVyIHRoZSBtYXBwaW5ncyBzb3J0ZWQgYnkgdGhlIGdlbmVyYXRlZCBmaWxlJ3MgbGluZS9jb2x1bW5cbiAqICAgICAgICBvcmRlciBvciB0aGUgb3JpZ2luYWwncyBzb3VyY2UvbGluZS9jb2x1bW4gb3JkZXIsIHJlc3BlY3RpdmVseS4gRGVmYXVsdHMgdG9cbiAqICAgICAgICBgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSYC5cbiAqL1xuU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmVhY2hNYXBwaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfZWFjaE1hcHBpbmcoYUNhbGxiYWNrLCBhQ29udGV4dCwgYU9yZGVyKSB7XG4gICAgdmFyIGNvbnRleHQgPSBhQ29udGV4dCB8fCBudWxsO1xuICAgIHZhciBvcmRlciA9IGFPcmRlciB8fCBTb3VyY2VNYXBDb25zdW1lci5HRU5FUkFURURfT1JERVI7XG5cbiAgICB2YXIgbWFwcGluZ3M7XG4gICAgc3dpdGNoIChvcmRlcikge1xuICAgIGNhc2UgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSOlxuICAgICAgbWFwcGluZ3MgPSB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5ncztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU291cmNlTWFwQ29uc3VtZXIuT1JJR0lOQUxfT1JERVI6XG4gICAgICBtYXBwaW5ncyA9IHRoaXMuX29yaWdpbmFsTWFwcGluZ3M7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBvcmRlciBvZiBpdGVyYXRpb24uXCIpO1xuICAgIH1cblxuICAgIHZhciBzb3VyY2VSb290ID0gdGhpcy5zb3VyY2VSb290O1xuICAgIG1hcHBpbmdzLm1hcChmdW5jdGlvbiAobWFwcGluZykge1xuICAgICAgdmFyIHNvdXJjZSA9IG1hcHBpbmcuc291cmNlID09PSBudWxsID8gbnVsbCA6IHRoaXMuX3NvdXJjZXMuYXQobWFwcGluZy5zb3VyY2UpO1xuICAgICAgc291cmNlID0gdXRpbC5jb21wdXRlU291cmNlVVJMKHNvdXJjZVJvb3QsIHNvdXJjZSwgdGhpcy5fc291cmNlTWFwVVJMKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICBnZW5lcmF0ZWRMaW5lOiBtYXBwaW5nLmdlbmVyYXRlZExpbmUsXG4gICAgICAgIGdlbmVyYXRlZENvbHVtbjogbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4sXG4gICAgICAgIG9yaWdpbmFsTGluZTogbWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgIG9yaWdpbmFsQ29sdW1uOiBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uLFxuICAgICAgICBuYW1lOiBtYXBwaW5nLm5hbWUgPT09IG51bGwgPyBudWxsIDogdGhpcy5fbmFtZXMuYXQobWFwcGluZy5uYW1lKVxuICAgICAgfTtcbiAgICB9LCB0aGlzKS5mb3JFYWNoKGFDYWxsYmFjaywgY29udGV4dCk7XG4gIH07XG5cbi8qKlxuICogUmV0dXJucyBhbGwgZ2VuZXJhdGVkIGxpbmUgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgdGhlIG9yaWdpbmFsIHNvdXJjZSxcbiAqIGxpbmUsIGFuZCBjb2x1bW4gcHJvdmlkZWQuIElmIG5vIGNvbHVtbiBpcyBwcm92aWRlZCwgcmV0dXJucyBhbGwgbWFwcGluZ3NcbiAqIGNvcnJlc3BvbmRpbmcgdG8gYSBlaXRoZXIgdGhlIGxpbmUgd2UgYXJlIHNlYXJjaGluZyBmb3Igb3IgdGhlIG5leHRcbiAqIGNsb3Nlc3QgbGluZSB0aGF0IGhhcyBhbnkgbWFwcGluZ3MuIE90aGVyd2lzZSwgcmV0dXJucyBhbGwgbWFwcGluZ3NcbiAqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIGxpbmUgYW5kIGVpdGhlciB0aGUgY29sdW1uIHdlIGFyZSBzZWFyY2hpbmcgZm9yXG4gKiBvciB0aGUgbmV4dCBjbG9zZXN0IGNvbHVtbiB0aGF0IGhhcyBhbnkgb2Zmc2V0cy5cbiAqXG4gKiBUaGUgb25seSBhcmd1bWVudCBpcyBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIGZpbGVuYW1lIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UuICBUaGUgbGluZSBudW1iZXIgaXMgMS1iYXNlZC5cbiAqICAgLSBjb2x1bW46IE9wdGlvbmFsLiB0aGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLlxuICogICAgVGhlIGNvbHVtbiBudW1iZXIgaXMgMC1iYXNlZC5cbiAqXG4gKiBhbmQgYW4gYXJyYXkgb2Ygb2JqZWN0cyBpcyByZXR1cm5lZCwgZWFjaCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLCBvciBudWxsLiAgVGhlXG4gKiAgICBsaW5lIG51bWJlciBpcyAxLWJhc2VkLlxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UsIG9yIG51bGwuXG4gKiAgICBUaGUgY29sdW1uIG51bWJlciBpcyAwLWJhc2VkLlxuICovXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuYWxsR2VuZXJhdGVkUG9zaXRpb25zRm9yID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfYWxsR2VuZXJhdGVkUG9zaXRpb25zRm9yKGFBcmdzKSB7XG4gICAgdmFyIGxpbmUgPSB1dGlsLmdldEFyZyhhQXJncywgJ2xpbmUnKTtcblxuICAgIC8vIFdoZW4gdGhlcmUgaXMgbm8gZXhhY3QgbWF0Y2gsIEJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9maW5kTWFwcGluZ1xuICAgIC8vIHJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBjbG9zZXN0IG1hcHBpbmcgbGVzcyB0aGFuIHRoZSBuZWVkbGUuIEJ5XG4gICAgLy8gc2V0dGluZyBuZWVkbGUub3JpZ2luYWxDb2x1bW4gdG8gMCwgd2UgdGh1cyBmaW5kIHRoZSBsYXN0IG1hcHBpbmcgZm9yXG4gICAgLy8gdGhlIGdpdmVuIGxpbmUsIHByb3ZpZGVkIHN1Y2ggYSBtYXBwaW5nIGV4aXN0cy5cbiAgICB2YXIgbmVlZGxlID0ge1xuICAgICAgc291cmNlOiB1dGlsLmdldEFyZyhhQXJncywgJ3NvdXJjZScpLFxuICAgICAgb3JpZ2luYWxMaW5lOiBsaW5lLFxuICAgICAgb3JpZ2luYWxDb2x1bW46IHV0aWwuZ2V0QXJnKGFBcmdzLCAnY29sdW1uJywgMClcbiAgICB9O1xuXG4gICAgbmVlZGxlLnNvdXJjZSA9IHRoaXMuX2ZpbmRTb3VyY2VJbmRleChuZWVkbGUuc291cmNlKTtcbiAgICBpZiAobmVlZGxlLnNvdXJjZSA8IDApIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICB2YXIgbWFwcGluZ3MgPSBbXTtcblxuICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmRNYXBwaW5nKG5lZWRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3JpZ2luYWxMaW5lXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvcmlnaW5hbENvbHVtblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWwuY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJ5U2VhcmNoLkxFQVNUX1VQUEVSX0JPVU5EKTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgdmFyIG1hcHBpbmcgPSB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzW2luZGV4XTtcblxuICAgICAgaWYgKGFBcmdzLmNvbHVtbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHZhciBvcmlnaW5hbExpbmUgPSBtYXBwaW5nLm9yaWdpbmFsTGluZTtcblxuICAgICAgICAvLyBJdGVyYXRlIHVudGlsIGVpdGhlciB3ZSBydW4gb3V0IG9mIG1hcHBpbmdzLCBvciB3ZSBydW4gaW50b1xuICAgICAgICAvLyBhIG1hcHBpbmcgZm9yIGEgZGlmZmVyZW50IGxpbmUgdGhhbiB0aGUgb25lIHdlIGZvdW5kLiBTaW5jZVxuICAgICAgICAvLyBtYXBwaW5ncyBhcmUgc29ydGVkLCB0aGlzIGlzIGd1YXJhbnRlZWQgdG8gZmluZCBhbGwgbWFwcGluZ3MgZm9yXG4gICAgICAgIC8vIHRoZSBsaW5lIHdlIGZvdW5kLlxuICAgICAgICB3aGlsZSAobWFwcGluZyAmJiBtYXBwaW5nLm9yaWdpbmFsTGluZSA9PT0gb3JpZ2luYWxMaW5lKSB7XG4gICAgICAgICAgbWFwcGluZ3MucHVzaCh7XG4gICAgICAgICAgICBsaW5lOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkTGluZScsIG51bGwpLFxuICAgICAgICAgICAgY29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkQ29sdW1uJywgbnVsbCksXG4gICAgICAgICAgICBsYXN0Q29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnbGFzdEdlbmVyYXRlZENvbHVtbicsIG51bGwpXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBtYXBwaW5nID0gdGhpcy5fb3JpZ2luYWxNYXBwaW5nc1srK2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIG9yaWdpbmFsQ29sdW1uID0gbWFwcGluZy5vcmlnaW5hbENvbHVtbjtcblxuICAgICAgICAvLyBJdGVyYXRlIHVudGlsIGVpdGhlciB3ZSBydW4gb3V0IG9mIG1hcHBpbmdzLCBvciB3ZSBydW4gaW50b1xuICAgICAgICAvLyBhIG1hcHBpbmcgZm9yIGEgZGlmZmVyZW50IGxpbmUgdGhhbiB0aGUgb25lIHdlIHdlcmUgc2VhcmNoaW5nIGZvci5cbiAgICAgICAgLy8gU2luY2UgbWFwcGluZ3MgYXJlIHNvcnRlZCwgdGhpcyBpcyBndWFyYW50ZWVkIHRvIGZpbmQgYWxsIG1hcHBpbmdzIGZvclxuICAgICAgICAvLyB0aGUgbGluZSB3ZSBhcmUgc2VhcmNoaW5nIGZvci5cbiAgICAgICAgd2hpbGUgKG1hcHBpbmcgJiZcbiAgICAgICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxMaW5lID09PSBsaW5lICYmXG4gICAgICAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uID09IG9yaWdpbmFsQ29sdW1uKSB7XG4gICAgICAgICAgbWFwcGluZ3MucHVzaCh7XG4gICAgICAgICAgICBsaW5lOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkTGluZScsIG51bGwpLFxuICAgICAgICAgICAgY29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkQ29sdW1uJywgbnVsbCksXG4gICAgICAgICAgICBsYXN0Q29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnbGFzdEdlbmVyYXRlZENvbHVtbicsIG51bGwpXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBtYXBwaW5nID0gdGhpcy5fb3JpZ2luYWxNYXBwaW5nc1srK2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtYXBwaW5ncztcbiAgfTtcblxuZXhwb3J0cy5Tb3VyY2VNYXBDb25zdW1lciA9IFNvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIEEgQmFzaWNTb3VyY2VNYXBDb25zdW1lciBpbnN0YW5jZSByZXByZXNlbnRzIGEgcGFyc2VkIHNvdXJjZSBtYXAgd2hpY2ggd2UgY2FuXG4gKiBxdWVyeSBmb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG9yaWdpbmFsIGZpbGUgcG9zaXRpb25zIGJ5IGdpdmluZyBpdCBhIGZpbGVcbiAqIHBvc2l0aW9uIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLlxuICpcbiAqIFRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIHJhdyBzb3VyY2UgbWFwIChlaXRoZXIgYXMgYSBKU09OIHN0cmluZywgb3JcbiAqIGFscmVhZHkgcGFyc2VkIHRvIGFuIG9iamVjdCkuIEFjY29yZGluZyB0byB0aGUgc3BlYywgc291cmNlIG1hcHMgaGF2ZSB0aGVcbiAqIGZvbGxvd2luZyBhdHRyaWJ1dGVzOlxuICpcbiAqICAgLSB2ZXJzaW9uOiBXaGljaCB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UgbWFwIHNwZWMgdGhpcyBtYXAgaXMgZm9sbG93aW5nLlxuICogICAtIHNvdXJjZXM6IEFuIGFycmF5IG9mIFVSTHMgdG8gdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlcy5cbiAqICAgLSBuYW1lczogQW4gYXJyYXkgb2YgaWRlbnRpZmllcnMgd2hpY2ggY2FuIGJlIHJlZmVycmVuY2VkIGJ5IGluZGl2aWR1YWwgbWFwcGluZ3MuXG4gKiAgIC0gc291cmNlUm9vdDogT3B0aW9uYWwuIFRoZSBVUkwgcm9vdCBmcm9tIHdoaWNoIGFsbCBzb3VyY2VzIGFyZSByZWxhdGl2ZS5cbiAqICAgLSBzb3VyY2VzQ29udGVudDogT3B0aW9uYWwuIEFuIGFycmF5IG9mIGNvbnRlbnRzIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZXMuXG4gKiAgIC0gbWFwcGluZ3M6IEEgc3RyaW5nIG9mIGJhc2U2NCBWTFFzIHdoaWNoIGNvbnRhaW4gdGhlIGFjdHVhbCBtYXBwaW5ncy5cbiAqICAgLSBmaWxlOiBPcHRpb25hbC4gVGhlIGdlbmVyYXRlZCBmaWxlIHRoaXMgc291cmNlIG1hcCBpcyBhc3NvY2lhdGVkIHdpdGguXG4gKlxuICogSGVyZSBpcyBhbiBleGFtcGxlIHNvdXJjZSBtYXAsIHRha2VuIGZyb20gdGhlIHNvdXJjZSBtYXAgc3BlY1swXTpcbiAqXG4gKiAgICAge1xuICogICAgICAgdmVyc2lvbiA6IDMsXG4gKiAgICAgICBmaWxlOiBcIm91dC5qc1wiLFxuICogICAgICAgc291cmNlUm9vdCA6IFwiXCIsXG4gKiAgICAgICBzb3VyY2VzOiBbXCJmb28uanNcIiwgXCJiYXIuanNcIl0sXG4gKiAgICAgICBuYW1lczogW1wic3JjXCIsIFwibWFwc1wiLCBcImFyZVwiLCBcImZ1blwiXSxcbiAqICAgICAgIG1hcHBpbmdzOiBcIkFBLEFCOztBQkNERTtcIlxuICogICAgIH1cbiAqXG4gKiBUaGUgc2Vjb25kIHBhcmFtZXRlciwgaWYgZ2l2ZW4sIGlzIGEgc3RyaW5nIHdob3NlIHZhbHVlIGlzIHRoZSBVUkxcbiAqIGF0IHdoaWNoIHRoZSBzb3VyY2UgbWFwIHdhcyBmb3VuZC4gIFRoaXMgVVJMIGlzIHVzZWQgdG8gY29tcHV0ZSB0aGVcbiAqIHNvdXJjZXMgYXJyYXkuXG4gKlxuICogWzBdOiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFVMVJHQWVoUXdSeXBVVG92RjFLUmxwaU9GemUwYi1fMmdjNmZBSDBLWTBrL2VkaXQ/cGxpPTEjXG4gKi9cbmZ1bmN0aW9uIEJhc2ljU291cmNlTWFwQ29uc3VtZXIoYVNvdXJjZU1hcCwgYVNvdXJjZU1hcFVSTCkge1xuICB2YXIgc291cmNlTWFwID0gYVNvdXJjZU1hcDtcbiAgaWYgKHR5cGVvZiBhU291cmNlTWFwID09PSAnc3RyaW5nJykge1xuICAgIHNvdXJjZU1hcCA9IHV0aWwucGFyc2VTb3VyY2VNYXBJbnB1dChhU291cmNlTWFwKTtcbiAgfVxuXG4gIHZhciB2ZXJzaW9uID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAndmVyc2lvbicpO1xuICB2YXIgc291cmNlcyA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3NvdXJjZXMnKTtcbiAgLy8gU2FzcyAzLjMgbGVhdmVzIG91dCB0aGUgJ25hbWVzJyBhcnJheSwgc28gd2UgZGV2aWF0ZSBmcm9tIHRoZSBzcGVjICh3aGljaFxuICAvLyByZXF1aXJlcyB0aGUgYXJyYXkpIHRvIHBsYXkgbmljZSBoZXJlLlxuICB2YXIgbmFtZXMgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICduYW1lcycsIFtdKTtcbiAgdmFyIHNvdXJjZVJvb3QgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdzb3VyY2VSb290JywgbnVsbCk7XG4gIHZhciBzb3VyY2VzQ29udGVudCA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3NvdXJjZXNDb250ZW50JywgbnVsbCk7XG4gIHZhciBtYXBwaW5ncyA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ21hcHBpbmdzJyk7XG4gIHZhciBmaWxlID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnZmlsZScsIG51bGwpO1xuXG4gIC8vIE9uY2UgYWdhaW4sIFNhc3MgZGV2aWF0ZXMgZnJvbSB0aGUgc3BlYyBhbmQgc3VwcGxpZXMgdGhlIHZlcnNpb24gYXMgYVxuICAvLyBzdHJpbmcgcmF0aGVyIHRoYW4gYSBudW1iZXIsIHNvIHdlIHVzZSBsb29zZSBlcXVhbGl0eSBjaGVja2luZyBoZXJlLlxuICBpZiAodmVyc2lvbiAhPSB0aGlzLl92ZXJzaW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCB2ZXJzaW9uOiAnICsgdmVyc2lvbik7XG4gIH1cblxuICBpZiAoc291cmNlUm9vdCkge1xuICAgIHNvdXJjZVJvb3QgPSB1dGlsLm5vcm1hbGl6ZShzb3VyY2VSb290KTtcbiAgfVxuXG4gIHNvdXJjZXMgPSBzb3VyY2VzXG4gICAgLm1hcChTdHJpbmcpXG4gICAgLy8gU29tZSBzb3VyY2UgbWFwcyBwcm9kdWNlIHJlbGF0aXZlIHNvdXJjZSBwYXRocyBsaWtlIFwiLi9mb28uanNcIiBpbnN0ZWFkIG9mXG4gICAgLy8gXCJmb28uanNcIi4gIE5vcm1hbGl6ZSB0aGVzZSBmaXJzdCBzbyB0aGF0IGZ1dHVyZSBjb21wYXJpc29ucyB3aWxsIHN1Y2NlZWQuXG4gICAgLy8gU2VlIGJ1Z3ppbC5sYS8xMDkwNzY4LlxuICAgIC5tYXAodXRpbC5ub3JtYWxpemUpXG4gICAgLy8gQWx3YXlzIGVuc3VyZSB0aGF0IGFic29sdXRlIHNvdXJjZXMgYXJlIGludGVybmFsbHkgc3RvcmVkIHJlbGF0aXZlIHRvXG4gICAgLy8gdGhlIHNvdXJjZSByb290LCBpZiB0aGUgc291cmNlIHJvb3QgaXMgYWJzb2x1dGUuIE5vdCBkb2luZyB0aGlzIHdvdWxkXG4gICAgLy8gYmUgcGFydGljdWxhcmx5IHByb2JsZW1hdGljIHdoZW4gdGhlIHNvdXJjZSByb290IGlzIGEgcHJlZml4IG9mIHRoZVxuICAgIC8vIHNvdXJjZSAodmFsaWQsIGJ1dCB3aHk/PykuIFNlZSBnaXRodWIgaXNzdWUgIzE5OSBhbmQgYnVnemlsLmxhLzExODg5ODIuXG4gICAgLm1hcChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICByZXR1cm4gc291cmNlUm9vdCAmJiB1dGlsLmlzQWJzb2x1dGUoc291cmNlUm9vdCkgJiYgdXRpbC5pc0Fic29sdXRlKHNvdXJjZSlcbiAgICAgICAgPyB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3QsIHNvdXJjZSlcbiAgICAgICAgOiBzb3VyY2U7XG4gICAgfSk7XG5cbiAgLy8gUGFzcyBgdHJ1ZWAgYmVsb3cgdG8gYWxsb3cgZHVwbGljYXRlIG5hbWVzIGFuZCBzb3VyY2VzLiBXaGlsZSBzb3VyY2UgbWFwc1xuICAvLyBhcmUgaW50ZW5kZWQgdG8gYmUgY29tcHJlc3NlZCBhbmQgZGVkdXBsaWNhdGVkLCB0aGUgVHlwZVNjcmlwdCBjb21waWxlclxuICAvLyBzb21ldGltZXMgZ2VuZXJhdGVzIHNvdXJjZSBtYXBzIHdpdGggZHVwbGljYXRlcyBpbiB0aGVtLiBTZWUgR2l0aHViIGlzc3VlXG4gIC8vICM3MiBhbmQgYnVnemlsLmxhLzg4OTQ5Mi5cbiAgdGhpcy5fbmFtZXMgPSBBcnJheVNldC5mcm9tQXJyYXkobmFtZXMubWFwKFN0cmluZyksIHRydWUpO1xuICB0aGlzLl9zb3VyY2VzID0gQXJyYXlTZXQuZnJvbUFycmF5KHNvdXJjZXMsIHRydWUpO1xuXG4gIHRoaXMuX2Fic29sdXRlU291cmNlcyA9IHRoaXMuX3NvdXJjZXMudG9BcnJheSgpLm1hcChmdW5jdGlvbiAocykge1xuICAgIHJldHVybiB1dGlsLmNvbXB1dGVTb3VyY2VVUkwoc291cmNlUm9vdCwgcywgYVNvdXJjZU1hcFVSTCk7XG4gIH0pO1xuXG4gIHRoaXMuc291cmNlUm9vdCA9IHNvdXJjZVJvb3Q7XG4gIHRoaXMuc291cmNlc0NvbnRlbnQgPSBzb3VyY2VzQ29udGVudDtcbiAgdGhpcy5fbWFwcGluZ3MgPSBtYXBwaW5ncztcbiAgdGhpcy5fc291cmNlTWFwVVJMID0gYVNvdXJjZU1hcFVSTDtcbiAgdGhpcy5maWxlID0gZmlsZTtcbn1cblxuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSk7XG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5jb25zdW1lciA9IFNvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gdG8gZmluZCB0aGUgaW5kZXggb2YgYSBzb3VyY2UuICBSZXR1cm5zIC0xIGlmIG5vdFxuICogZm91bmQuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9maW5kU291cmNlSW5kZXggPSBmdW5jdGlvbihhU291cmNlKSB7XG4gIHZhciByZWxhdGl2ZVNvdXJjZSA9IGFTb3VyY2U7XG4gIGlmICh0aGlzLnNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgIHJlbGF0aXZlU291cmNlID0gdXRpbC5yZWxhdGl2ZSh0aGlzLnNvdXJjZVJvb3QsIHJlbGF0aXZlU291cmNlKTtcbiAgfVxuXG4gIGlmICh0aGlzLl9zb3VyY2VzLmhhcyhyZWxhdGl2ZVNvdXJjZSkpIHtcbiAgICByZXR1cm4gdGhpcy5fc291cmNlcy5pbmRleE9mKHJlbGF0aXZlU291cmNlKTtcbiAgfVxuXG4gIC8vIE1heWJlIGFTb3VyY2UgaXMgYW4gYWJzb2x1dGUgVVJMIGFzIHJldHVybmVkIGJ5IHxzb3VyY2VzfC4gIEluXG4gIC8vIHRoaXMgY2FzZSB3ZSBjYW4ndCBzaW1wbHkgdW5kbyB0aGUgdHJhbnNmb3JtLlxuICB2YXIgaTtcbiAgZm9yIChpID0gMDsgaSA8IHRoaXMuX2Fic29sdXRlU291cmNlcy5sZW5ndGg7ICsraSkge1xuICAgIGlmICh0aGlzLl9hYnNvbHV0ZVNvdXJjZXNbaV0gPT0gYVNvdXJjZSkge1xuICAgICAgcmV0dXJuIGk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIC0xO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgYSBCYXNpY1NvdXJjZU1hcENvbnN1bWVyIGZyb20gYSBTb3VyY2VNYXBHZW5lcmF0b3IuXG4gKlxuICogQHBhcmFtIFNvdXJjZU1hcEdlbmVyYXRvciBhU291cmNlTWFwXG4gKiAgICAgICAgVGhlIHNvdXJjZSBtYXAgdGhhdCB3aWxsIGJlIGNvbnN1bWVkLlxuICogQHBhcmFtIFN0cmluZyBhU291cmNlTWFwVVJMXG4gKiAgICAgICAgVGhlIFVSTCBhdCB3aGljaCB0aGUgc291cmNlIG1hcCBjYW4gYmUgZm91bmQgKG9wdGlvbmFsKVxuICogQHJldHVybnMgQmFzaWNTb3VyY2VNYXBDb25zdW1lclxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLmZyb21Tb3VyY2VNYXAgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9mcm9tU291cmNlTWFwKGFTb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpIHtcbiAgICB2YXIgc21jID0gT2JqZWN0LmNyZWF0ZShCYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSk7XG5cbiAgICB2YXIgbmFtZXMgPSBzbWMuX25hbWVzID0gQXJyYXlTZXQuZnJvbUFycmF5KGFTb3VyY2VNYXAuX25hbWVzLnRvQXJyYXkoKSwgdHJ1ZSk7XG4gICAgdmFyIHNvdXJjZXMgPSBzbWMuX3NvdXJjZXMgPSBBcnJheVNldC5mcm9tQXJyYXkoYVNvdXJjZU1hcC5fc291cmNlcy50b0FycmF5KCksIHRydWUpO1xuICAgIHNtYy5zb3VyY2VSb290ID0gYVNvdXJjZU1hcC5fc291cmNlUm9vdDtcbiAgICBzbWMuc291cmNlc0NvbnRlbnQgPSBhU291cmNlTWFwLl9nZW5lcmF0ZVNvdXJjZXNDb250ZW50KHNtYy5fc291cmNlcy50b0FycmF5KCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbWMuc291cmNlUm9vdCk7XG4gICAgc21jLmZpbGUgPSBhU291cmNlTWFwLl9maWxlO1xuICAgIHNtYy5fc291cmNlTWFwVVJMID0gYVNvdXJjZU1hcFVSTDtcbiAgICBzbWMuX2Fic29sdXRlU291cmNlcyA9IHNtYy5fc291cmNlcy50b0FycmF5KCkubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgICByZXR1cm4gdXRpbC5jb21wdXRlU291cmNlVVJMKHNtYy5zb3VyY2VSb290LCBzLCBhU291cmNlTWFwVVJMKTtcbiAgICB9KTtcblxuICAgIC8vIEJlY2F1c2Ugd2UgYXJlIG1vZGlmeWluZyB0aGUgZW50cmllcyAoYnkgY29udmVydGluZyBzdHJpbmcgc291cmNlcyBhbmRcbiAgICAvLyBuYW1lcyB0byBpbmRpY2VzIGludG8gdGhlIHNvdXJjZXMgYW5kIG5hbWVzIEFycmF5U2V0cyksIHdlIGhhdmUgdG8gbWFrZVxuICAgIC8vIGEgY29weSBvZiB0aGUgZW50cnkgb3IgZWxzZSBiYWQgdGhpbmdzIGhhcHBlbi4gU2hhcmVkIG11dGFibGUgc3RhdGVcbiAgICAvLyBzdHJpa2VzIGFnYWluISBTZWUgZ2l0aHViIGlzc3VlICMxOTEuXG5cbiAgICB2YXIgZ2VuZXJhdGVkTWFwcGluZ3MgPSBhU291cmNlTWFwLl9tYXBwaW5ncy50b0FycmF5KCkuc2xpY2UoKTtcbiAgICB2YXIgZGVzdEdlbmVyYXRlZE1hcHBpbmdzID0gc21jLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBbXTtcbiAgICB2YXIgZGVzdE9yaWdpbmFsTWFwcGluZ3MgPSBzbWMuX19vcmlnaW5hbE1hcHBpbmdzID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZ2VuZXJhdGVkTWFwcGluZ3MubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzcmNNYXBwaW5nID0gZ2VuZXJhdGVkTWFwcGluZ3NbaV07XG4gICAgICB2YXIgZGVzdE1hcHBpbmcgPSBuZXcgTWFwcGluZztcbiAgICAgIGRlc3RNYXBwaW5nLmdlbmVyYXRlZExpbmUgPSBzcmNNYXBwaW5nLmdlbmVyYXRlZExpbmU7XG4gICAgICBkZXN0TWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4gPSBzcmNNYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcblxuICAgICAgaWYgKHNyY01hcHBpbmcuc291cmNlKSB7XG4gICAgICAgIGRlc3RNYXBwaW5nLnNvdXJjZSA9IHNvdXJjZXMuaW5kZXhPZihzcmNNYXBwaW5nLnNvdXJjZSk7XG4gICAgICAgIGRlc3RNYXBwaW5nLm9yaWdpbmFsTGluZSA9IHNyY01hcHBpbmcub3JpZ2luYWxMaW5lO1xuICAgICAgICBkZXN0TWFwcGluZy5vcmlnaW5hbENvbHVtbiA9IHNyY01hcHBpbmcub3JpZ2luYWxDb2x1bW47XG5cbiAgICAgICAgaWYgKHNyY01hcHBpbmcubmFtZSkge1xuICAgICAgICAgIGRlc3RNYXBwaW5nLm5hbWUgPSBuYW1lcy5pbmRleE9mKHNyY01hcHBpbmcubmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBkZXN0T3JpZ2luYWxNYXBwaW5ncy5wdXNoKGRlc3RNYXBwaW5nKTtcbiAgICAgIH1cblxuICAgICAgZGVzdEdlbmVyYXRlZE1hcHBpbmdzLnB1c2goZGVzdE1hcHBpbmcpO1xuICAgIH1cblxuICAgIHF1aWNrU29ydChzbWMuX19vcmlnaW5hbE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zKTtcblxuICAgIHJldHVybiBzbWM7XG4gIH07XG5cbi8qKlxuICogVGhlIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXBwaW5nIHNwZWMgdGhhdCB3ZSBhcmUgY29uc3VtaW5nLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogVGhlIGxpc3Qgb2Ygb3JpZ2luYWwgc291cmNlcy5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KEJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLCAnc291cmNlcycsIHtcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Fic29sdXRlU291cmNlcy5zbGljZSgpO1xuICB9XG59KTtcblxuLyoqXG4gKiBQcm92aWRlIHRoZSBKSVQgd2l0aCBhIG5pY2Ugc2hhcGUgLyBoaWRkZW4gY2xhc3MuXG4gKi9cbmZ1bmN0aW9uIE1hcHBpbmcoKSB7XG4gIHRoaXMuZ2VuZXJhdGVkTGluZSA9IDA7XG4gIHRoaXMuZ2VuZXJhdGVkQ29sdW1uID0gMDtcbiAgdGhpcy5zb3VyY2UgPSBudWxsO1xuICB0aGlzLm9yaWdpbmFsTGluZSA9IG51bGw7XG4gIHRoaXMub3JpZ2luYWxDb2x1bW4gPSBudWxsO1xuICB0aGlzLm5hbWUgPSBudWxsO1xufVxuXG4vKipcbiAqIFBhcnNlIHRoZSBtYXBwaW5ncyBpbiBhIHN0cmluZyBpbiB0byBhIGRhdGEgc3RydWN0dXJlIHdoaWNoIHdlIGNhbiBlYXNpbHlcbiAqIHF1ZXJ5ICh0aGUgb3JkZXJlZCBhcnJheXMgaW4gdGhlIGB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3NgIGFuZFxuICogYHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzYCBwcm9wZXJ0aWVzKS5cbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3BhcnNlTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgdmFyIGdlbmVyYXRlZExpbmUgPSAxO1xuICAgIHZhciBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IDA7XG4gICAgdmFyIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gMDtcbiAgICB2YXIgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IDA7XG4gICAgdmFyIHByZXZpb3VzU291cmNlID0gMDtcbiAgICB2YXIgcHJldmlvdXNOYW1lID0gMDtcbiAgICB2YXIgbGVuZ3RoID0gYVN0ci5sZW5ndGg7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgY2FjaGVkU2VnbWVudHMgPSB7fTtcbiAgICB2YXIgdGVtcCA9IHt9O1xuICAgIHZhciBvcmlnaW5hbE1hcHBpbmdzID0gW107XG4gICAgdmFyIGdlbmVyYXRlZE1hcHBpbmdzID0gW107XG4gICAgdmFyIG1hcHBpbmcsIHN0ciwgc2VnbWVudCwgZW5kLCB2YWx1ZTtcblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKGFTdHIuY2hhckF0KGluZGV4KSA9PT0gJzsnKSB7XG4gICAgICAgIGdlbmVyYXRlZExpbmUrKztcbiAgICAgICAgaW5kZXgrKztcbiAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoYVN0ci5jaGFyQXQoaW5kZXgpID09PSAnLCcpIHtcbiAgICAgICAgaW5kZXgrKztcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBtYXBwaW5nID0gbmV3IE1hcHBpbmcoKTtcbiAgICAgICAgbWFwcGluZy5nZW5lcmF0ZWRMaW5lID0gZ2VuZXJhdGVkTGluZTtcblxuICAgICAgICAvLyBCZWNhdXNlIGVhY2ggb2Zmc2V0IGlzIGVuY29kZWQgcmVsYXRpdmUgdG8gdGhlIHByZXZpb3VzIG9uZSxcbiAgICAgICAgLy8gbWFueSBzZWdtZW50cyBvZnRlbiBoYXZlIHRoZSBzYW1lIGVuY29kaW5nLiBXZSBjYW4gZXhwbG9pdCB0aGlzXG4gICAgICAgIC8vIGZhY3QgYnkgY2FjaGluZyB0aGUgcGFyc2VkIHZhcmlhYmxlIGxlbmd0aCBmaWVsZHMgb2YgZWFjaCBzZWdtZW50LFxuICAgICAgICAvLyBhbGxvd2luZyB1cyB0byBhdm9pZCBhIHNlY29uZCBwYXJzZSBpZiB3ZSBlbmNvdW50ZXIgdGhlIHNhbWVcbiAgICAgICAgLy8gc2VnbWVudCBhZ2Fpbi5cbiAgICAgICAgZm9yIChlbmQgPSBpbmRleDsgZW5kIDwgbGVuZ3RoOyBlbmQrKykge1xuICAgICAgICAgIGlmICh0aGlzLl9jaGFySXNNYXBwaW5nU2VwYXJhdG9yKGFTdHIsIGVuZCkpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdHIgPSBhU3RyLnNsaWNlKGluZGV4LCBlbmQpO1xuXG4gICAgICAgIHNlZ21lbnQgPSBjYWNoZWRTZWdtZW50c1tzdHJdO1xuICAgICAgICBpZiAoc2VnbWVudCkge1xuICAgICAgICAgIGluZGV4ICs9IHN0ci5sZW5ndGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VnbWVudCA9IFtdO1xuICAgICAgICAgIHdoaWxlIChpbmRleCA8IGVuZCkge1xuICAgICAgICAgICAgYmFzZTY0VkxRLmRlY29kZShhU3RyLCBpbmRleCwgdGVtcCk7XG4gICAgICAgICAgICB2YWx1ZSA9IHRlbXAudmFsdWU7XG4gICAgICAgICAgICBpbmRleCA9IHRlbXAucmVzdDtcbiAgICAgICAgICAgIHNlZ21lbnQucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZvdW5kIGEgc291cmNlLCBidXQgbm8gbGluZSBhbmQgY29sdW1uJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZvdW5kIGEgc291cmNlIGFuZCBsaW5lLCBidXQgbm8gY29sdW1uJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FjaGVkU2VnbWVudHNbc3RyXSA9IHNlZ21lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBHZW5lcmF0ZWQgY29sdW1uLlxuICAgICAgICBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiA9IHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uICsgc2VnbWVudFswXTtcbiAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcblxuICAgICAgICBpZiAoc2VnbWVudC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgLy8gT3JpZ2luYWwgc291cmNlLlxuICAgICAgICAgIG1hcHBpbmcuc291cmNlID0gcHJldmlvdXNTb3VyY2UgKyBzZWdtZW50WzFdO1xuICAgICAgICAgIHByZXZpb3VzU291cmNlICs9IHNlZ21lbnRbMV07XG5cbiAgICAgICAgICAvLyBPcmlnaW5hbCBsaW5lLlxuICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxMaW5lID0gcHJldmlvdXNPcmlnaW5hbExpbmUgKyBzZWdtZW50WzJdO1xuICAgICAgICAgIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gbWFwcGluZy5vcmlnaW5hbExpbmU7XG4gICAgICAgICAgLy8gTGluZXMgYXJlIHN0b3JlZCAwLWJhc2VkXG4gICAgICAgICAgbWFwcGluZy5vcmlnaW5hbExpbmUgKz0gMTtcblxuICAgICAgICAgIC8vIE9yaWdpbmFsIGNvbHVtbi5cbiAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uID0gcHJldmlvdXNPcmlnaW5hbENvbHVtbiArIHNlZ21lbnRbM107XG4gICAgICAgICAgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IG1hcHBpbmcub3JpZ2luYWxDb2x1bW47XG5cbiAgICAgICAgICBpZiAoc2VnbWVudC5sZW5ndGggPiA0KSB7XG4gICAgICAgICAgICAvLyBPcmlnaW5hbCBuYW1lLlxuICAgICAgICAgICAgbWFwcGluZy5uYW1lID0gcHJldmlvdXNOYW1lICsgc2VnbWVudFs0XTtcbiAgICAgICAgICAgIHByZXZpb3VzTmFtZSArPSBzZWdtZW50WzRdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGdlbmVyYXRlZE1hcHBpbmdzLnB1c2gobWFwcGluZyk7XG4gICAgICAgIGlmICh0eXBlb2YgbWFwcGluZy5vcmlnaW5hbExpbmUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgb3JpZ2luYWxNYXBwaW5ncy5wdXNoKG1hcHBpbmcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcXVpY2tTb3J0KGdlbmVyYXRlZE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkKTtcbiAgICB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBnZW5lcmF0ZWRNYXBwaW5ncztcblxuICAgIHF1aWNrU29ydChvcmlnaW5hbE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zKTtcbiAgICB0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncyA9IG9yaWdpbmFsTWFwcGluZ3M7XG4gIH07XG5cbi8qKlxuICogRmluZCB0aGUgbWFwcGluZyB0aGF0IGJlc3QgbWF0Y2hlcyB0aGUgaHlwb3RoZXRpY2FsIFwibmVlZGxlXCIgbWFwcGluZyB0aGF0XG4gKiB3ZSBhcmUgc2VhcmNoaW5nIGZvciBpbiB0aGUgZ2l2ZW4gXCJoYXlzdGFja1wiIG9mIG1hcHBpbmdzLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fZmluZE1hcHBpbmcgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9maW5kTWFwcGluZyhhTmVlZGxlLCBhTWFwcGluZ3MsIGFMaW5lTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYUNvbHVtbk5hbWUsIGFDb21wYXJhdG9yLCBhQmlhcykge1xuICAgIC8vIFRvIHJldHVybiB0aGUgcG9zaXRpb24gd2UgYXJlIHNlYXJjaGluZyBmb3IsIHdlIG11c3QgZmlyc3QgZmluZCB0aGVcbiAgICAvLyBtYXBwaW5nIGZvciB0aGUgZ2l2ZW4gcG9zaXRpb24gYW5kIHRoZW4gcmV0dXJuIHRoZSBvcHBvc2l0ZSBwb3NpdGlvbiBpdFxuICAgIC8vIHBvaW50cyB0by4gQmVjYXVzZSB0aGUgbWFwcGluZ3MgYXJlIHNvcnRlZCwgd2UgY2FuIHVzZSBiaW5hcnkgc2VhcmNoIHRvXG4gICAgLy8gZmluZCB0aGUgYmVzdCBtYXBwaW5nLlxuXG4gICAgaWYgKGFOZWVkbGVbYUxpbmVOYW1lXSA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdMaW5lIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDEsIGdvdCAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICsgYU5lZWRsZVthTGluZU5hbWVdKTtcbiAgICB9XG4gICAgaWYgKGFOZWVkbGVbYUNvbHVtbk5hbWVdIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQ29sdW1uIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAsIGdvdCAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICsgYU5lZWRsZVthQ29sdW1uTmFtZV0pO1xuICAgIH1cblxuICAgIHJldHVybiBiaW5hcnlTZWFyY2guc2VhcmNoKGFOZWVkbGUsIGFNYXBwaW5ncywgYUNvbXBhcmF0b3IsIGFCaWFzKTtcbiAgfTtcblxuLyoqXG4gKiBDb21wdXRlIHRoZSBsYXN0IGNvbHVtbiBmb3IgZWFjaCBnZW5lcmF0ZWQgbWFwcGluZy4gVGhlIGxhc3QgY29sdW1uIGlzXG4gKiBpbmNsdXNpdmUuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmNvbXB1dGVDb2x1bW5TcGFucyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2NvbXB1dGVDb2x1bW5TcGFucygpIHtcbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3MubGVuZ3RoOyArK2luZGV4KSB7XG4gICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzW2luZGV4XTtcblxuICAgICAgLy8gTWFwcGluZ3MgZG8gbm90IGNvbnRhaW4gYSBmaWVsZCBmb3IgdGhlIGxhc3QgZ2VuZXJhdGVkIGNvbHVtbnQuIFdlXG4gICAgICAvLyBjYW4gY29tZSB1cCB3aXRoIGFuIG9wdGltaXN0aWMgZXN0aW1hdGUsIGhvd2V2ZXIsIGJ5IGFzc3VtaW5nIHRoYXRcbiAgICAgIC8vIG1hcHBpbmdzIGFyZSBjb250aWd1b3VzIChpLmUuIGdpdmVuIHR3byBjb25zZWN1dGl2ZSBtYXBwaW5ncywgdGhlXG4gICAgICAvLyBmaXJzdCBtYXBwaW5nIGVuZHMgd2hlcmUgdGhlIHNlY29uZCBvbmUgc3RhcnRzKS5cbiAgICAgIGlmIChpbmRleCArIDEgPCB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5ncy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIG5leHRNYXBwaW5nID0gdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3NbaW5kZXggKyAxXTtcblxuICAgICAgICBpZiAobWFwcGluZy5nZW5lcmF0ZWRMaW5lID09PSBuZXh0TWFwcGluZy5nZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgICAgbWFwcGluZy5sYXN0R2VuZXJhdGVkQ29sdW1uID0gbmV4dE1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uIC0gMTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUaGUgbGFzdCBtYXBwaW5nIGZvciBlYWNoIGxpbmUgc3BhbnMgdGhlIGVudGlyZSBsaW5lLlxuICAgICAgbWFwcGluZy5sYXN0R2VuZXJhdGVkQ29sdW1uID0gSW5maW5pdHk7XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIG9yaWdpbmFsIHNvdXJjZSwgbGluZSwgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgdGhlIGdlbmVyYXRlZFxuICogc291cmNlJ3MgbGluZSBhbmQgY29sdW1uIHBvc2l0aW9ucyBwcm92aWRlZC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0XG4gKiB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLiAgVGhlIGxpbmUgbnVtYmVyXG4gKiAgICAgaXMgMS1iYXNlZC5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLiAgVGhlIGNvbHVtblxuICogICAgIG51bWJlciBpcyAwLWJhc2VkLlxuICogICAtIGJpYXM6IEVpdGhlciAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnIG9yXG4gKiAgICAgJ1NvdXJjZU1hcENvbnN1bWVyLkxFQVNUX1VQUEVSX0JPVU5EJy4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZVxuICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAqICAgICBEZWZhdWx0cyB0byAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlLCBvciBudWxsLlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLCBvciBudWxsLiAgVGhlXG4gKiAgICAgbGluZSBudW1iZXIgaXMgMS1iYXNlZC5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UsIG9yIG51bGwuICBUaGVcbiAqICAgICBjb2x1bW4gbnVtYmVyIGlzIDAtYmFzZWQuXG4gKiAgIC0gbmFtZTogVGhlIG9yaWdpbmFsIGlkZW50aWZpZXIsIG9yIG51bGwuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLm9yaWdpbmFsUG9zaXRpb25Gb3IgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9vcmlnaW5hbFBvc2l0aW9uRm9yKGFBcmdzKSB7XG4gICAgdmFyIG5lZWRsZSA9IHtcbiAgICAgIGdlbmVyYXRlZExpbmU6IHV0aWwuZ2V0QXJnKGFBcmdzLCAnbGluZScpLFxuICAgICAgZ2VuZXJhdGVkQ29sdW1uOiB1dGlsLmdldEFyZyhhQXJncywgJ2NvbHVtbicpXG4gICAgfTtcblxuICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmRNYXBwaW5nKFxuICAgICAgbmVlZGxlLFxuICAgICAgdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3MsXG4gICAgICBcImdlbmVyYXRlZExpbmVcIixcbiAgICAgIFwiZ2VuZXJhdGVkQ29sdW1uXCIsXG4gICAgICB1dGlsLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkLFxuICAgICAgdXRpbC5nZXRBcmcoYUFyZ3MsICdiaWFzJywgU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQpXG4gICAgKTtcblxuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzW2luZGV4XTtcblxuICAgICAgaWYgKG1hcHBpbmcuZ2VuZXJhdGVkTGluZSA9PT0gbmVlZGxlLmdlbmVyYXRlZExpbmUpIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdzb3VyY2UnLCBudWxsKTtcbiAgICAgICAgaWYgKHNvdXJjZSAhPT0gbnVsbCkge1xuICAgICAgICAgIHNvdXJjZSA9IHRoaXMuX3NvdXJjZXMuYXQoc291cmNlKTtcbiAgICAgICAgICBzb3VyY2UgPSB1dGlsLmNvbXB1dGVTb3VyY2VVUkwodGhpcy5zb3VyY2VSb290LCBzb3VyY2UsIHRoaXMuX3NvdXJjZU1hcFVSTCk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG5hbWUgPSB1dGlsLmdldEFyZyhtYXBwaW5nLCAnbmFtZScsIG51bGwpO1xuICAgICAgICBpZiAobmFtZSAhPT0gbnVsbCkge1xuICAgICAgICAgIG5hbWUgPSB0aGlzLl9uYW1lcy5hdChuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICAgIGxpbmU6IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdvcmlnaW5hbExpbmUnLCBudWxsKSxcbiAgICAgICAgICBjb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdvcmlnaW5hbENvbHVtbicsIG51bGwpLFxuICAgICAgICAgIG5hbWU6IG5hbWVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgc291cmNlOiBudWxsLFxuICAgICAgbGluZTogbnVsbCxcbiAgICAgIGNvbHVtbjogbnVsbCxcbiAgICAgIG5hbWU6IG51bGxcbiAgICB9O1xuICB9O1xuXG4vKipcbiAqIFJldHVybiB0cnVlIGlmIHdlIGhhdmUgdGhlIHNvdXJjZSBjb250ZW50IGZvciBldmVyeSBzb3VyY2UgaW4gdGhlIHNvdXJjZVxuICogbWFwLCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmhhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzID1cbiAgZnVuY3Rpb24gQmFzaWNTb3VyY2VNYXBDb25zdW1lcl9oYXNDb250ZW50c09mQWxsU291cmNlcygpIHtcbiAgICBpZiAoIXRoaXMuc291cmNlc0NvbnRlbnQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc291cmNlc0NvbnRlbnQubGVuZ3RoID49IHRoaXMuX3NvdXJjZXMuc2l6ZSgpICYmXG4gICAgICAhdGhpcy5zb3VyY2VzQ29udGVudC5zb21lKGZ1bmN0aW9uIChzYykgeyByZXR1cm4gc2MgPT0gbnVsbDsgfSk7XG4gIH07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgb3JpZ2luYWwgc291cmNlIGNvbnRlbnQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIHRoZSB1cmwgb2YgdGhlXG4gKiBvcmlnaW5hbCBzb3VyY2UgZmlsZS4gUmV0dXJucyBudWxsIGlmIG5vIG9yaWdpbmFsIHNvdXJjZSBjb250ZW50IGlzXG4gKiBhdmFpbGFibGUuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLnNvdXJjZUNvbnRlbnRGb3IgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9zb3VyY2VDb250ZW50Rm9yKGFTb3VyY2UsIG51bGxPbk1pc3NpbmcpIHtcbiAgICBpZiAoIXRoaXMuc291cmNlc0NvbnRlbnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmRTb3VyY2VJbmRleChhU291cmNlKTtcbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuc291cmNlc0NvbnRlbnRbaW5kZXhdO1xuICAgIH1cblxuICAgIHZhciByZWxhdGl2ZVNvdXJjZSA9IGFTb3VyY2U7XG4gICAgaWYgKHRoaXMuc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICByZWxhdGl2ZVNvdXJjZSA9IHV0aWwucmVsYXRpdmUodGhpcy5zb3VyY2VSb290LCByZWxhdGl2ZVNvdXJjZSk7XG4gICAgfVxuXG4gICAgdmFyIHVybDtcbiAgICBpZiAodGhpcy5zb3VyY2VSb290ICE9IG51bGxcbiAgICAgICAgJiYgKHVybCA9IHV0aWwudXJsUGFyc2UodGhpcy5zb3VyY2VSb290KSkpIHtcbiAgICAgIC8vIFhYWDogZmlsZTovLyBVUklzIGFuZCBhYnNvbHV0ZSBwYXRocyBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3IgZm9yXG4gICAgICAvLyBtYW55IHVzZXJzLiBXZSBjYW4gaGVscCB0aGVtIG91dCB3aGVuIHRoZXkgZXhwZWN0IGZpbGU6Ly8gVVJJcyB0b1xuICAgICAgLy8gYmVoYXZlIGxpa2UgaXQgd291bGQgaWYgdGhleSB3ZXJlIHJ1bm5pbmcgYSBsb2NhbCBIVFRQIHNlcnZlci4gU2VlXG4gICAgICAvLyBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD04ODU1OTcuXG4gICAgICB2YXIgZmlsZVVyaUFic1BhdGggPSByZWxhdGl2ZVNvdXJjZS5yZXBsYWNlKC9eZmlsZTpcXC9cXC8vLCBcIlwiKTtcbiAgICAgIGlmICh1cmwuc2NoZW1lID09IFwiZmlsZVwiXG4gICAgICAgICAgJiYgdGhpcy5fc291cmNlcy5oYXMoZmlsZVVyaUFic1BhdGgpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNvdXJjZXNDb250ZW50W3RoaXMuX3NvdXJjZXMuaW5kZXhPZihmaWxlVXJpQWJzUGF0aCldXG4gICAgICB9XG5cbiAgICAgIGlmICgoIXVybC5wYXRoIHx8IHVybC5wYXRoID09IFwiL1wiKVxuICAgICAgICAgICYmIHRoaXMuX3NvdXJjZXMuaGFzKFwiL1wiICsgcmVsYXRpdmVTb3VyY2UpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNvdXJjZXNDb250ZW50W3RoaXMuX3NvdXJjZXMuaW5kZXhPZihcIi9cIiArIHJlbGF0aXZlU291cmNlKV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHJlY3Vyc2l2ZWx5IGZyb21cbiAgICAvLyBJbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLnNvdXJjZUNvbnRlbnRGb3IuIEluIHRoYXQgY2FzZSwgd2VcbiAgICAvLyBkb24ndCB3YW50IHRvIHRocm93IGlmIHdlIGNhbid0IGZpbmQgdGhlIHNvdXJjZSAtIHdlIGp1c3Qgd2FudCB0b1xuICAgIC8vIHJldHVybiBudWxsLCBzbyB3ZSBwcm92aWRlIGEgZmxhZyB0byBleGl0IGdyYWNlZnVsbHkuXG4gICAgaWYgKG51bGxPbk1pc3NpbmcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignXCInICsgcmVsYXRpdmVTb3VyY2UgKyAnXCIgaXMgbm90IGluIHRoZSBTb3VyY2VNYXAuJyk7XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGdlbmVyYXRlZCBsaW5lIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHRoZSBvcmlnaW5hbCBzb3VyY2UsXG4gKiBsaW5lLCBhbmQgY29sdW1uIHBvc2l0aW9ucyBwcm92aWRlZC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0IHdpdGhcbiAqIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gc291cmNlOiBUaGUgZmlsZW5hbWUgb2YgdGhlIG9yaWdpbmFsIHNvdXJjZS5cbiAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZS4gIFRoZSBsaW5lIG51bWJlclxuICogICAgIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLiAgVGhlIGNvbHVtblxuICogICAgIG51bWJlciBpcyAwLWJhc2VkLlxuICogICAtIGJpYXM6IEVpdGhlciAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnIG9yXG4gKiAgICAgJ1NvdXJjZU1hcENvbnN1bWVyLkxFQVNUX1VQUEVSX0JPVU5EJy4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZVxuICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAqICAgICBEZWZhdWx0cyB0byAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC4gIFRoZVxuICogICAgIGxpbmUgbnVtYmVyIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC5cbiAqICAgICBUaGUgY29sdW1uIG51bWJlciBpcyAwLWJhc2VkLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5nZW5lcmF0ZWRQb3NpdGlvbkZvciA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2dlbmVyYXRlZFBvc2l0aW9uRm9yKGFBcmdzKSB7XG4gICAgdmFyIHNvdXJjZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJyk7XG4gICAgc291cmNlID0gdGhpcy5fZmluZFNvdXJjZUluZGV4KHNvdXJjZSk7XG4gICAgaWYgKHNvdXJjZSA8IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxpbmU6IG51bGwsXG4gICAgICAgIGNvbHVtbjogbnVsbCxcbiAgICAgICAgbGFzdENvbHVtbjogbnVsbFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgbmVlZGxlID0ge1xuICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICBvcmlnaW5hbExpbmU6IHV0aWwuZ2V0QXJnKGFBcmdzLCAnbGluZScpLFxuICAgICAgb3JpZ2luYWxDb2x1bW46IHV0aWwuZ2V0QXJnKGFBcmdzLCAnY29sdW1uJylcbiAgICB9O1xuXG4gICAgdmFyIGluZGV4ID0gdGhpcy5fZmluZE1hcHBpbmcoXG4gICAgICBuZWVkbGUsXG4gICAgICB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzLFxuICAgICAgXCJvcmlnaW5hbExpbmVcIixcbiAgICAgIFwib3JpZ2luYWxDb2x1bW5cIixcbiAgICAgIHV0aWwuY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMsXG4gICAgICB1dGlsLmdldEFyZyhhQXJncywgJ2JpYXMnLCBTb3VyY2VNYXBDb25zdW1lci5HUkVBVEVTVF9MT1dFUl9CT1VORClcbiAgICApO1xuXG4gICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgIHZhciBtYXBwaW5nID0gdGhpcy5fb3JpZ2luYWxNYXBwaW5nc1tpbmRleF07XG5cbiAgICAgIGlmIChtYXBwaW5nLnNvdXJjZSA9PT0gbmVlZGxlLnNvdXJjZSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxpbmU6IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRMaW5lJywgbnVsbCksXG4gICAgICAgICAgY29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkQ29sdW1uJywgbnVsbCksXG4gICAgICAgICAgbGFzdENvbHVtbjogdXRpbC5nZXRBcmcobWFwcGluZywgJ2xhc3RHZW5lcmF0ZWRDb2x1bW4nLCBudWxsKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBsaW5lOiBudWxsLFxuICAgICAgY29sdW1uOiBudWxsLFxuICAgICAgbGFzdENvbHVtbjogbnVsbFxuICAgIH07XG4gIH07XG5cbmV4cG9ydHMuQmFzaWNTb3VyY2VNYXBDb25zdW1lciA9IEJhc2ljU291cmNlTWFwQ29uc3VtZXI7XG5cbi8qKlxuICogQW4gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyIGluc3RhbmNlIHJlcHJlc2VudHMgYSBwYXJzZWQgc291cmNlIG1hcCB3aGljaFxuICogd2UgY2FuIHF1ZXJ5IGZvciBpbmZvcm1hdGlvbi4gSXQgZGlmZmVycyBmcm9tIEJhc2ljU291cmNlTWFwQ29uc3VtZXIgaW5cbiAqIHRoYXQgaXQgdGFrZXMgXCJpbmRleGVkXCIgc291cmNlIG1hcHMgKGkuZS4gb25lcyB3aXRoIGEgXCJzZWN0aW9uc1wiIGZpZWxkKSBhc1xuICogaW5wdXQuXG4gKlxuICogVGhlIGZpcnN0IHBhcmFtZXRlciBpcyBhIHJhdyBzb3VyY2UgbWFwIChlaXRoZXIgYXMgYSBKU09OIHN0cmluZywgb3IgYWxyZWFkeVxuICogcGFyc2VkIHRvIGFuIG9iamVjdCkuIEFjY29yZGluZyB0byB0aGUgc3BlYyBmb3IgaW5kZXhlZCBzb3VyY2UgbWFwcywgdGhleVxuICogaGF2ZSB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6XG4gKlxuICogICAtIHZlcnNpb246IFdoaWNoIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXAgc3BlYyB0aGlzIG1hcCBpcyBmb2xsb3dpbmcuXG4gKiAgIC0gZmlsZTogT3B0aW9uYWwuIFRoZSBnZW5lcmF0ZWQgZmlsZSB0aGlzIHNvdXJjZSBtYXAgaXMgYXNzb2NpYXRlZCB3aXRoLlxuICogICAtIHNlY3Rpb25zOiBBIGxpc3Qgb2Ygc2VjdGlvbiBkZWZpbml0aW9ucy5cbiAqXG4gKiBFYWNoIHZhbHVlIHVuZGVyIHRoZSBcInNlY3Rpb25zXCIgZmllbGQgaGFzIHR3byBmaWVsZHM6XG4gKiAgIC0gb2Zmc2V0OiBUaGUgb2Zmc2V0IGludG8gdGhlIG9yaWdpbmFsIHNwZWNpZmllZCBhdCB3aGljaCB0aGlzIHNlY3Rpb25cbiAqICAgICAgIGJlZ2lucyB0byBhcHBseSwgZGVmaW5lZCBhcyBhbiBvYmplY3Qgd2l0aCBhIFwibGluZVwiIGFuZCBcImNvbHVtblwiXG4gKiAgICAgICBmaWVsZC5cbiAqICAgLSBtYXA6IEEgc291cmNlIG1hcCBkZWZpbml0aW9uLiBUaGlzIHNvdXJjZSBtYXAgY291bGQgYWxzbyBiZSBpbmRleGVkLFxuICogICAgICAgYnV0IGRvZXNuJ3QgaGF2ZSB0byBiZS5cbiAqXG4gKiBJbnN0ZWFkIG9mIHRoZSBcIm1hcFwiIGZpZWxkLCBpdCdzIGFsc28gcG9zc2libGUgdG8gaGF2ZSBhIFwidXJsXCIgZmllbGRcbiAqIHNwZWNpZnlpbmcgYSBVUkwgdG8gcmV0cmlldmUgYSBzb3VyY2UgbWFwIGZyb20sIGJ1dCB0aGF0J3MgY3VycmVudGx5XG4gKiB1bnN1cHBvcnRlZC5cbiAqXG4gKiBIZXJlJ3MgYW4gZXhhbXBsZSBzb3VyY2UgbWFwLCB0YWtlbiBmcm9tIHRoZSBzb3VyY2UgbWFwIHNwZWNbMF0sIGJ1dFxuICogbW9kaWZpZWQgdG8gb21pdCBhIHNlY3Rpb24gd2hpY2ggdXNlcyB0aGUgXCJ1cmxcIiBmaWVsZC5cbiAqXG4gKiAge1xuICogICAgdmVyc2lvbiA6IDMsXG4gKiAgICBmaWxlOiBcImFwcC5qc1wiLFxuICogICAgc2VjdGlvbnM6IFt7XG4gKiAgICAgIG9mZnNldDoge2xpbmU6MTAwLCBjb2x1bW46MTB9LFxuICogICAgICBtYXA6IHtcbiAqICAgICAgICB2ZXJzaW9uIDogMyxcbiAqICAgICAgICBmaWxlOiBcInNlY3Rpb24uanNcIixcbiAqICAgICAgICBzb3VyY2VzOiBbXCJmb28uanNcIiwgXCJiYXIuanNcIl0sXG4gKiAgICAgICAgbmFtZXM6IFtcInNyY1wiLCBcIm1hcHNcIiwgXCJhcmVcIiwgXCJmdW5cIl0sXG4gKiAgICAgICAgbWFwcGluZ3M6IFwiQUFBQSxFOztBQkNERTtcIlxuICogICAgICB9XG4gKiAgICB9XSxcbiAqICB9XG4gKlxuICogVGhlIHNlY29uZCBwYXJhbWV0ZXIsIGlmIGdpdmVuLCBpcyBhIHN0cmluZyB3aG9zZSB2YWx1ZSBpcyB0aGUgVVJMXG4gKiBhdCB3aGljaCB0aGUgc291cmNlIG1hcCB3YXMgZm91bmQuICBUaGlzIFVSTCBpcyB1c2VkIHRvIGNvbXB1dGUgdGhlXG4gKiBzb3VyY2VzIGFycmF5LlxuICpcbiAqIFswXTogaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZG9jdW1lbnQvZC8xVTFSR0FlaFF3UnlwVVRvdkYxS1JscGlPRnplMGItXzJnYzZmQUgwS1kway9lZGl0I2hlYWRpbmc9aC41MzVlczN4ZXByZ3RcbiAqL1xuZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyKGFTb3VyY2VNYXAsIGFTb3VyY2VNYXBVUkwpIHtcbiAgdmFyIHNvdXJjZU1hcCA9IGFTb3VyY2VNYXA7XG4gIGlmICh0eXBlb2YgYVNvdXJjZU1hcCA9PT0gJ3N0cmluZycpIHtcbiAgICBzb3VyY2VNYXAgPSB1dGlsLnBhcnNlU291cmNlTWFwSW5wdXQoYVNvdXJjZU1hcCk7XG4gIH1cblxuICB2YXIgdmVyc2lvbiA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3ZlcnNpb24nKTtcbiAgdmFyIHNlY3Rpb25zID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnc2VjdGlvbnMnKTtcblxuICBpZiAodmVyc2lvbiAhPSB0aGlzLl92ZXJzaW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCB2ZXJzaW9uOiAnICsgdmVyc2lvbik7XG4gIH1cblxuICB0aGlzLl9zb3VyY2VzID0gbmV3IEFycmF5U2V0KCk7XG4gIHRoaXMuX25hbWVzID0gbmV3IEFycmF5U2V0KCk7XG5cbiAgdmFyIGxhc3RPZmZzZXQgPSB7XG4gICAgbGluZTogLTEsXG4gICAgY29sdW1uOiAwXG4gIH07XG4gIHRoaXMuX3NlY3Rpb25zID0gc2VjdGlvbnMubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgaWYgKHMudXJsKSB7XG4gICAgICAvLyBUaGUgdXJsIGZpZWxkIHdpbGwgcmVxdWlyZSBzdXBwb3J0IGZvciBhc3luY2hyb25pY2l0eS5cbiAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL2lzc3Vlcy8xNlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTdXBwb3J0IGZvciB1cmwgZmllbGQgaW4gc2VjdGlvbnMgbm90IGltcGxlbWVudGVkLicpO1xuICAgIH1cbiAgICB2YXIgb2Zmc2V0ID0gdXRpbC5nZXRBcmcocywgJ29mZnNldCcpO1xuICAgIHZhciBvZmZzZXRMaW5lID0gdXRpbC5nZXRBcmcob2Zmc2V0LCAnbGluZScpO1xuICAgIHZhciBvZmZzZXRDb2x1bW4gPSB1dGlsLmdldEFyZyhvZmZzZXQsICdjb2x1bW4nKTtcblxuICAgIGlmIChvZmZzZXRMaW5lIDwgbGFzdE9mZnNldC5saW5lIHx8XG4gICAgICAgIChvZmZzZXRMaW5lID09PSBsYXN0T2Zmc2V0LmxpbmUgJiYgb2Zmc2V0Q29sdW1uIDwgbGFzdE9mZnNldC5jb2x1bW4pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NlY3Rpb24gb2Zmc2V0cyBtdXN0IGJlIG9yZGVyZWQgYW5kIG5vbi1vdmVybGFwcGluZy4nKTtcbiAgICB9XG4gICAgbGFzdE9mZnNldCA9IG9mZnNldDtcblxuICAgIHJldHVybiB7XG4gICAgICBnZW5lcmF0ZWRPZmZzZXQ6IHtcbiAgICAgICAgLy8gVGhlIG9mZnNldCBmaWVsZHMgYXJlIDAtYmFzZWQsIGJ1dCB3ZSB1c2UgMS1iYXNlZCBpbmRpY2VzIHdoZW5cbiAgICAgICAgLy8gZW5jb2RpbmcvZGVjb2RpbmcgZnJvbSBWTFEuXG4gICAgICAgIGdlbmVyYXRlZExpbmU6IG9mZnNldExpbmUgKyAxLFxuICAgICAgICBnZW5lcmF0ZWRDb2x1bW46IG9mZnNldENvbHVtbiArIDFcbiAgICAgIH0sXG4gICAgICBjb25zdW1lcjogbmV3IFNvdXJjZU1hcENvbnN1bWVyKHV0aWwuZ2V0QXJnKHMsICdtYXAnKSwgYVNvdXJjZU1hcFVSTClcbiAgICB9XG4gIH0pO1xufVxuXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUpO1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFNvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UgbWFwcGluZyBzcGVjIHRoYXQgd2UgYXJlIGNvbnN1bWluZy5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogVGhlIGxpc3Qgb2Ygb3JpZ2luYWwgc291cmNlcy5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUsICdzb3VyY2VzJywge1xuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc291cmNlcyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGhpcy5fc2VjdGlvbnNbaV0uY29uc3VtZXIuc291cmNlcy5sZW5ndGg7IGorKykge1xuICAgICAgICBzb3VyY2VzLnB1c2godGhpcy5fc2VjdGlvbnNbaV0uY29uc3VtZXIuc291cmNlc1tqXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzb3VyY2VzO1xuICB9XG59KTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBzb3VyY2UsIGxpbmUsIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHRoZSBnZW5lcmF0ZWRcbiAqIHNvdXJjZSdzIGxpbmUgYW5kIGNvbHVtbiBwb3NpdGlvbnMgcHJvdmlkZWQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIGFuIG9iamVjdFxuICogd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS4gIFRoZSBsaW5lIG51bWJlclxuICogICAgIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS4gIFRoZSBjb2x1bW5cbiAqICAgICBudW1iZXIgaXMgMC1iYXNlZC5cbiAqXG4gKiBhbmQgYW4gb2JqZWN0IGlzIHJldHVybmVkIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICpcbiAqICAgLSBzb3VyY2U6IFRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZSwgb3IgbnVsbC5cbiAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSwgb3IgbnVsbC4gIFRoZVxuICogICAgIGxpbmUgbnVtYmVyIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLCBvciBudWxsLiAgVGhlXG4gKiAgICAgY29sdW1uIG51bWJlciBpcyAwLWJhc2VkLlxuICogICAtIG5hbWU6IFRoZSBvcmlnaW5hbCBpZGVudGlmaWVyLCBvciBudWxsLlxuICovXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLm9yaWdpbmFsUG9zaXRpb25Gb3IgPVxuICBmdW5jdGlvbiBJbmRleGVkU291cmNlTWFwQ29uc3VtZXJfb3JpZ2luYWxQb3NpdGlvbkZvcihhQXJncykge1xuICAgIHZhciBuZWVkbGUgPSB7XG4gICAgICBnZW5lcmF0ZWRMaW5lOiB1dGlsLmdldEFyZyhhQXJncywgJ2xpbmUnKSxcbiAgICAgIGdlbmVyYXRlZENvbHVtbjogdXRpbC5nZXRBcmcoYUFyZ3MsICdjb2x1bW4nKVxuICAgIH07XG5cbiAgICAvLyBGaW5kIHRoZSBzZWN0aW9uIGNvbnRhaW5pbmcgdGhlIGdlbmVyYXRlZCBwb3NpdGlvbiB3ZSdyZSB0cnlpbmcgdG8gbWFwXG4gICAgLy8gdG8gYW4gb3JpZ2luYWwgcG9zaXRpb24uXG4gICAgdmFyIHNlY3Rpb25JbmRleCA9IGJpbmFyeVNlYXJjaC5zZWFyY2gobmVlZGxlLCB0aGlzLl9zZWN0aW9ucyxcbiAgICAgIGZ1bmN0aW9uKG5lZWRsZSwgc2VjdGlvbikge1xuICAgICAgICB2YXIgY21wID0gbmVlZGxlLmdlbmVyYXRlZExpbmUgLSBzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lO1xuICAgICAgICBpZiAoY21wKSB7XG4gICAgICAgICAgcmV0dXJuIGNtcDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAobmVlZGxlLmdlbmVyYXRlZENvbHVtbiAtXG4gICAgICAgICAgICAgICAgc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkQ29sdW1uKTtcbiAgICAgIH0pO1xuICAgIHZhciBzZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNbc2VjdGlvbkluZGV4XTtcblxuICAgIGlmICghc2VjdGlvbikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc291cmNlOiBudWxsLFxuICAgICAgICBsaW5lOiBudWxsLFxuICAgICAgICBjb2x1bW46IG51bGwsXG4gICAgICAgIG5hbWU6IG51bGxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlY3Rpb24uY29uc3VtZXIub3JpZ2luYWxQb3NpdGlvbkZvcih7XG4gICAgICBsaW5lOiBuZWVkbGUuZ2VuZXJhdGVkTGluZSAtXG4gICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lIC0gMSksXG4gICAgICBjb2x1bW46IG5lZWRsZS5nZW5lcmF0ZWRDb2x1bW4gLVxuICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSA9PT0gbmVlZGxlLmdlbmVyYXRlZExpbmVcbiAgICAgICAgID8gc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkQ29sdW1uIC0gMVxuICAgICAgICAgOiAwKSxcbiAgICAgIGJpYXM6IGFBcmdzLmJpYXNcbiAgICB9KTtcbiAgfTtcblxuLyoqXG4gKiBSZXR1cm4gdHJ1ZSBpZiB3ZSBoYXZlIHRoZSBzb3VyY2UgY29udGVudCBmb3IgZXZlcnkgc291cmNlIGluIHRoZSBzb3VyY2VcbiAqIG1hcCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmhhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzID1cbiAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyX2hhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzKCkge1xuICAgIHJldHVybiB0aGlzLl9zZWN0aW9ucy5ldmVyeShmdW5jdGlvbiAocykge1xuICAgICAgcmV0dXJuIHMuY29uc3VtZXIuaGFzQ29udGVudHNPZkFsbFNvdXJjZXMoKTtcbiAgICB9KTtcbiAgfTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBzb3VyY2UgY29udGVudC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgdGhlIHVybCBvZiB0aGVcbiAqIG9yaWdpbmFsIHNvdXJjZSBmaWxlLiBSZXR1cm5zIG51bGwgaWYgbm8gb3JpZ2luYWwgc291cmNlIGNvbnRlbnQgaXNcbiAqIGF2YWlsYWJsZS5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5zb3VyY2VDb250ZW50Rm9yID1cbiAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyX3NvdXJjZUNvbnRlbnRGb3IoYVNvdXJjZSwgbnVsbE9uTWlzc2luZykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNbaV07XG5cbiAgICAgIHZhciBjb250ZW50ID0gc2VjdGlvbi5jb25zdW1lci5zb3VyY2VDb250ZW50Rm9yKGFTb3VyY2UsIHRydWUpO1xuICAgICAgaWYgKGNvbnRlbnQpIHtcbiAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChudWxsT25NaXNzaW5nKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1wiJyArIGFTb3VyY2UgKyAnXCIgaXMgbm90IGluIHRoZSBTb3VyY2VNYXAuJyk7XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGdlbmVyYXRlZCBsaW5lIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHRoZSBvcmlnaW5hbCBzb3VyY2UsXG4gKiBsaW5lLCBhbmQgY29sdW1uIHBvc2l0aW9ucyBwcm92aWRlZC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0IHdpdGhcbiAqIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gc291cmNlOiBUaGUgZmlsZW5hbWUgb2YgdGhlIG9yaWdpbmFsIHNvdXJjZS5cbiAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZS4gIFRoZSBsaW5lIG51bWJlclxuICogICAgIGlzIDEtYmFzZWQuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLiAgVGhlIGNvbHVtblxuICogICAgIG51bWJlciBpcyAwLWJhc2VkLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC4gIFRoZVxuICogICAgIGxpbmUgbnVtYmVyIGlzIDEtYmFzZWQuIFxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UsIG9yIG51bGwuXG4gKiAgICAgVGhlIGNvbHVtbiBudW1iZXIgaXMgMC1iYXNlZC5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5nZW5lcmF0ZWRQb3NpdGlvbkZvciA9XG4gIGZ1bmN0aW9uIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcl9nZW5lcmF0ZWRQb3NpdGlvbkZvcihhQXJncykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzZWN0aW9uID0gdGhpcy5fc2VjdGlvbnNbaV07XG5cbiAgICAgIC8vIE9ubHkgY29uc2lkZXIgdGhpcyBzZWN0aW9uIGlmIHRoZSByZXF1ZXN0ZWQgc291cmNlIGlzIGluIHRoZSBsaXN0IG9mXG4gICAgICAvLyBzb3VyY2VzIG9mIHRoZSBjb25zdW1lci5cbiAgICAgIGlmIChzZWN0aW9uLmNvbnN1bWVyLl9maW5kU291cmNlSW5kZXgodXRpbC5nZXRBcmcoYUFyZ3MsICdzb3VyY2UnKSkgPT09IC0xKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdmFyIGdlbmVyYXRlZFBvc2l0aW9uID0gc2VjdGlvbi5jb25zdW1lci5nZW5lcmF0ZWRQb3NpdGlvbkZvcihhQXJncyk7XG4gICAgICBpZiAoZ2VuZXJhdGVkUG9zaXRpb24pIHtcbiAgICAgICAgdmFyIHJldCA9IHtcbiAgICAgICAgICBsaW5lOiBnZW5lcmF0ZWRQb3NpdGlvbi5saW5lICtcbiAgICAgICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lIC0gMSksXG4gICAgICAgICAgY29sdW1uOiBnZW5lcmF0ZWRQb3NpdGlvbi5jb2x1bW4gK1xuICAgICAgICAgICAgKHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZExpbmUgPT09IGdlbmVyYXRlZFBvc2l0aW9uLmxpbmVcbiAgICAgICAgICAgICA/IHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbiAtIDFcbiAgICAgICAgICAgICA6IDApXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiByZXQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmU6IG51bGwsXG4gICAgICBjb2x1bW46IG51bGxcbiAgICB9O1xuICB9O1xuXG4vKipcbiAqIFBhcnNlIHRoZSBtYXBwaW5ncyBpbiBhIHN0cmluZyBpbiB0byBhIGRhdGEgc3RydWN0dXJlIHdoaWNoIHdlIGNhbiBlYXNpbHlcbiAqIHF1ZXJ5ICh0aGUgb3JkZXJlZCBhcnJheXMgaW4gdGhlIGB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3NgIGFuZFxuICogYHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzYCBwcm9wZXJ0aWVzKS5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fcGFyc2VNYXBwaW5ncyA9XG4gIGZ1bmN0aW9uIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzID0gW107XG4gICAgdGhpcy5fX29yaWdpbmFsTWFwcGluZ3MgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3NlY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgc2VjdGlvbiA9IHRoaXMuX3NlY3Rpb25zW2ldO1xuICAgICAgdmFyIHNlY3Rpb25NYXBwaW5ncyA9IHNlY3Rpb24uY29uc3VtZXIuX2dlbmVyYXRlZE1hcHBpbmdzO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzZWN0aW9uTWFwcGluZ3MubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIG1hcHBpbmcgPSBzZWN0aW9uTWFwcGluZ3Nbal07XG5cbiAgICAgICAgdmFyIHNvdXJjZSA9IHNlY3Rpb24uY29uc3VtZXIuX3NvdXJjZXMuYXQobWFwcGluZy5zb3VyY2UpO1xuICAgICAgICBzb3VyY2UgPSB1dGlsLmNvbXB1dGVTb3VyY2VVUkwoc2VjdGlvbi5jb25zdW1lci5zb3VyY2VSb290LCBzb3VyY2UsIHRoaXMuX3NvdXJjZU1hcFVSTCk7XG4gICAgICAgIHRoaXMuX3NvdXJjZXMuYWRkKHNvdXJjZSk7XG4gICAgICAgIHNvdXJjZSA9IHRoaXMuX3NvdXJjZXMuaW5kZXhPZihzb3VyY2UpO1xuXG4gICAgICAgIHZhciBuYW1lID0gbnVsbDtcbiAgICAgICAgaWYgKG1hcHBpbmcubmFtZSkge1xuICAgICAgICAgIG5hbWUgPSBzZWN0aW9uLmNvbnN1bWVyLl9uYW1lcy5hdChtYXBwaW5nLm5hbWUpO1xuICAgICAgICAgIHRoaXMuX25hbWVzLmFkZChuYW1lKTtcbiAgICAgICAgICBuYW1lID0gdGhpcy5fbmFtZXMuaW5kZXhPZihuYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSBtYXBwaW5ncyBjb21pbmcgZnJvbSB0aGUgY29uc3VtZXIgZm9yIHRoZSBzZWN0aW9uIGhhdmVcbiAgICAgICAgLy8gZ2VuZXJhdGVkIHBvc2l0aW9ucyByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIHNlY3Rpb24sIHNvIHdlXG4gICAgICAgIC8vIG5lZWQgdG8gb2Zmc2V0IHRoZW0gdG8gYmUgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBjb25jYXRlbmF0ZWRcbiAgICAgICAgLy8gZ2VuZXJhdGVkIGZpbGUuXG4gICAgICAgIHZhciBhZGp1c3RlZE1hcHBpbmcgPSB7XG4gICAgICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICAgICAgZ2VuZXJhdGVkTGluZTogbWFwcGluZy5nZW5lcmF0ZWRMaW5lICtcbiAgICAgICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lIC0gMSksXG4gICAgICAgICAgZ2VuZXJhdGVkQ29sdW1uOiBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiArXG4gICAgICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSA9PT0gbWFwcGluZy5nZW5lcmF0ZWRMaW5lXG4gICAgICAgICAgICA/IHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbiAtIDFcbiAgICAgICAgICAgIDogMCksXG4gICAgICAgICAgb3JpZ2luYWxMaW5lOiBtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICBvcmlnaW5hbENvbHVtbjogbWFwcGluZy5vcmlnaW5hbENvbHVtbixcbiAgICAgICAgICBuYW1lOiBuYW1lXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzLnB1c2goYWRqdXN0ZWRNYXBwaW5nKTtcbiAgICAgICAgaWYgKHR5cGVvZiBhZGp1c3RlZE1hcHBpbmcub3JpZ2luYWxMaW5lID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzLnB1c2goYWRqdXN0ZWRNYXBwaW5nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHF1aWNrU29ydCh0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MsIHV0aWwuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zRGVmbGF0ZWQpO1xuICAgIHF1aWNrU29ydCh0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncywgdXRpbC5jb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyk7XG4gIH07XG5cbmV4cG9ydHMuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyID0gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyO1xuIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgU291cmNlTWFwR2VuZXJhdG9yID0gcmVxdWlyZSgnLi9zb3VyY2UtbWFwLWdlbmVyYXRvcicpLlNvdXJjZU1hcEdlbmVyYXRvcjtcbnZhciB1dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG5cbi8vIE1hdGNoZXMgYSBXaW5kb3dzLXN0eWxlIGBcXHJcXG5gIG5ld2xpbmUgb3IgYSBgXFxuYCBuZXdsaW5lIHVzZWQgYnkgYWxsIG90aGVyXG4vLyBvcGVyYXRpbmcgc3lzdGVtcyB0aGVzZSBkYXlzIChjYXB0dXJpbmcgdGhlIHJlc3VsdCkuXG52YXIgUkVHRVhfTkVXTElORSA9IC8oXFxyP1xcbikvO1xuXG4vLyBOZXdsaW5lIGNoYXJhY3RlciBjb2RlIGZvciBjaGFyQ29kZUF0KCkgY29tcGFyaXNvbnNcbnZhciBORVdMSU5FX0NPREUgPSAxMDtcblxuLy8gUHJpdmF0ZSBzeW1ib2wgZm9yIGlkZW50aWZ5aW5nIGBTb3VyY2VOb2RlYHMgd2hlbiBtdWx0aXBsZSB2ZXJzaW9ucyBvZlxuLy8gdGhlIHNvdXJjZS1tYXAgbGlicmFyeSBhcmUgbG9hZGVkLiBUaGlzIE1VU1QgTk9UIENIQU5HRSBhY3Jvc3Ncbi8vIHZlcnNpb25zIVxudmFyIGlzU291cmNlTm9kZSA9IFwiJCQkaXNTb3VyY2VOb2RlJCQkXCI7XG5cbi8qKlxuICogU291cmNlTm9kZXMgcHJvdmlkZSBhIHdheSB0byBhYnN0cmFjdCBvdmVyIGludGVycG9sYXRpbmcvY29uY2F0ZW5hdGluZ1xuICogc25pcHBldHMgb2YgZ2VuZXJhdGVkIEphdmFTY3JpcHQgc291cmNlIGNvZGUgd2hpbGUgbWFpbnRhaW5pbmcgdGhlIGxpbmUgYW5kXG4gKiBjb2x1bW4gaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBvcmlnaW5hbCBzb3VyY2UgY29kZS5cbiAqXG4gKiBAcGFyYW0gYUxpbmUgVGhlIG9yaWdpbmFsIGxpbmUgbnVtYmVyLlxuICogQHBhcmFtIGFDb2x1bW4gVGhlIG9yaWdpbmFsIGNvbHVtbiBudW1iZXIuXG4gKiBAcGFyYW0gYVNvdXJjZSBUaGUgb3JpZ2luYWwgc291cmNlJ3MgZmlsZW5hbWUuXG4gKiBAcGFyYW0gYUNodW5rcyBPcHRpb25hbC4gQW4gYXJyYXkgb2Ygc3RyaW5ncyB3aGljaCBhcmUgc25pcHBldHMgb2ZcbiAqICAgICAgICBnZW5lcmF0ZWQgSlMsIG9yIG90aGVyIFNvdXJjZU5vZGVzLlxuICogQHBhcmFtIGFOYW1lIFRoZSBvcmlnaW5hbCBpZGVudGlmaWVyLlxuICovXG5mdW5jdGlvbiBTb3VyY2VOb2RlKGFMaW5lLCBhQ29sdW1uLCBhU291cmNlLCBhQ2h1bmtzLCBhTmFtZSkge1xuICB0aGlzLmNoaWxkcmVuID0gW107XG4gIHRoaXMuc291cmNlQ29udGVudHMgPSB7fTtcbiAgdGhpcy5saW5lID0gYUxpbmUgPT0gbnVsbCA/IG51bGwgOiBhTGluZTtcbiAgdGhpcy5jb2x1bW4gPSBhQ29sdW1uID09IG51bGwgPyBudWxsIDogYUNvbHVtbjtcbiAgdGhpcy5zb3VyY2UgPSBhU291cmNlID09IG51bGwgPyBudWxsIDogYVNvdXJjZTtcbiAgdGhpcy5uYW1lID0gYU5hbWUgPT0gbnVsbCA/IG51bGwgOiBhTmFtZTtcbiAgdGhpc1tpc1NvdXJjZU5vZGVdID0gdHJ1ZTtcbiAgaWYgKGFDaHVua3MgIT0gbnVsbCkgdGhpcy5hZGQoYUNodW5rcyk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIFNvdXJjZU5vZGUgZnJvbSBnZW5lcmF0ZWQgY29kZSBhbmQgYSBTb3VyY2VNYXBDb25zdW1lci5cbiAqXG4gKiBAcGFyYW0gYUdlbmVyYXRlZENvZGUgVGhlIGdlbmVyYXRlZCBjb2RlXG4gKiBAcGFyYW0gYVNvdXJjZU1hcENvbnN1bWVyIFRoZSBTb3VyY2VNYXAgZm9yIHRoZSBnZW5lcmF0ZWQgY29kZVxuICogQHBhcmFtIGFSZWxhdGl2ZVBhdGggT3B0aW9uYWwuIFRoZSBwYXRoIHRoYXQgcmVsYXRpdmUgc291cmNlcyBpbiB0aGVcbiAqICAgICAgICBTb3VyY2VNYXBDb25zdW1lciBzaG91bGQgYmUgcmVsYXRpdmUgdG8uXG4gKi9cblNvdXJjZU5vZGUuZnJvbVN0cmluZ1dpdGhTb3VyY2VNYXAgPVxuICBmdW5jdGlvbiBTb3VyY2VOb2RlX2Zyb21TdHJpbmdXaXRoU291cmNlTWFwKGFHZW5lcmF0ZWRDb2RlLCBhU291cmNlTWFwQ29uc3VtZXIsIGFSZWxhdGl2ZVBhdGgpIHtcbiAgICAvLyBUaGUgU291cmNlTm9kZSB3ZSB3YW50IHRvIGZpbGwgd2l0aCB0aGUgZ2VuZXJhdGVkIGNvZGVcbiAgICAvLyBhbmQgdGhlIFNvdXJjZU1hcFxuICAgIHZhciBub2RlID0gbmV3IFNvdXJjZU5vZGUoKTtcblxuICAgIC8vIEFsbCBldmVuIGluZGljZXMgb2YgdGhpcyBhcnJheSBhcmUgb25lIGxpbmUgb2YgdGhlIGdlbmVyYXRlZCBjb2RlLFxuICAgIC8vIHdoaWxlIGFsbCBvZGQgaW5kaWNlcyBhcmUgdGhlIG5ld2xpbmVzIGJldHdlZW4gdHdvIGFkamFjZW50IGxpbmVzXG4gICAgLy8gKHNpbmNlIGBSRUdFWF9ORVdMSU5FYCBjYXB0dXJlcyBpdHMgbWF0Y2gpLlxuICAgIC8vIFByb2Nlc3NlZCBmcmFnbWVudHMgYXJlIGFjY2Vzc2VkIGJ5IGNhbGxpbmcgYHNoaWZ0TmV4dExpbmVgLlxuICAgIHZhciByZW1haW5pbmdMaW5lcyA9IGFHZW5lcmF0ZWRDb2RlLnNwbGl0KFJFR0VYX05FV0xJTkUpO1xuICAgIHZhciByZW1haW5pbmdMaW5lc0luZGV4ID0gMDtcbiAgICB2YXIgc2hpZnROZXh0TGluZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGxpbmVDb250ZW50cyA9IGdldE5leHRMaW5lKCk7XG4gICAgICAvLyBUaGUgbGFzdCBsaW5lIG9mIGEgZmlsZSBtaWdodCBub3QgaGF2ZSBhIG5ld2xpbmUuXG4gICAgICB2YXIgbmV3TGluZSA9IGdldE5leHRMaW5lKCkgfHwgXCJcIjtcbiAgICAgIHJldHVybiBsaW5lQ29udGVudHMgKyBuZXdMaW5lO1xuXG4gICAgICBmdW5jdGlvbiBnZXROZXh0TGluZSgpIHtcbiAgICAgICAgcmV0dXJuIHJlbWFpbmluZ0xpbmVzSW5kZXggPCByZW1haW5pbmdMaW5lcy5sZW5ndGggP1xuICAgICAgICAgICAgcmVtYWluaW5nTGluZXNbcmVtYWluaW5nTGluZXNJbmRleCsrXSA6IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gV2UgbmVlZCB0byByZW1lbWJlciB0aGUgcG9zaXRpb24gb2YgXCJyZW1haW5pbmdMaW5lc1wiXG4gICAgdmFyIGxhc3RHZW5lcmF0ZWRMaW5lID0gMSwgbGFzdEdlbmVyYXRlZENvbHVtbiA9IDA7XG5cbiAgICAvLyBUaGUgZ2VuZXJhdGUgU291cmNlTm9kZXMgd2UgbmVlZCBhIGNvZGUgcmFuZ2UuXG4gICAgLy8gVG8gZXh0cmFjdCBpdCBjdXJyZW50IGFuZCBsYXN0IG1hcHBpbmcgaXMgdXNlZC5cbiAgICAvLyBIZXJlIHdlIHN0b3JlIHRoZSBsYXN0IG1hcHBpbmcuXG4gICAgdmFyIGxhc3RNYXBwaW5nID0gbnVsbDtcblxuICAgIGFTb3VyY2VNYXBDb25zdW1lci5lYWNoTWFwcGluZyhmdW5jdGlvbiAobWFwcGluZykge1xuICAgICAgaWYgKGxhc3RNYXBwaW5nICE9PSBudWxsKSB7XG4gICAgICAgIC8vIFdlIGFkZCB0aGUgY29kZSBmcm9tIFwibGFzdE1hcHBpbmdcIiB0byBcIm1hcHBpbmdcIjpcbiAgICAgICAgLy8gRmlyc3QgY2hlY2sgaWYgdGhlcmUgaXMgYSBuZXcgbGluZSBpbiBiZXR3ZWVuLlxuICAgICAgICBpZiAobGFzdEdlbmVyYXRlZExpbmUgPCBtYXBwaW5nLmdlbmVyYXRlZExpbmUpIHtcbiAgICAgICAgICAvLyBBc3NvY2lhdGUgZmlyc3QgbGluZSB3aXRoIFwibGFzdE1hcHBpbmdcIlxuICAgICAgICAgIGFkZE1hcHBpbmdXaXRoQ29kZShsYXN0TWFwcGluZywgc2hpZnROZXh0TGluZSgpKTtcbiAgICAgICAgICBsYXN0R2VuZXJhdGVkTGluZSsrO1xuICAgICAgICAgIGxhc3RHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuICAgICAgICAgIC8vIFRoZSByZW1haW5pbmcgY29kZSBpcyBhZGRlZCB3aXRob3V0IG1hcHBpbmdcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBUaGVyZSBpcyBubyBuZXcgbGluZSBpbiBiZXR3ZWVuLlxuICAgICAgICAgIC8vIEFzc29jaWF0ZSB0aGUgY29kZSBiZXR3ZWVuIFwibGFzdEdlbmVyYXRlZENvbHVtblwiIGFuZFxuICAgICAgICAgIC8vIFwibWFwcGluZy5nZW5lcmF0ZWRDb2x1bW5cIiB3aXRoIFwibGFzdE1hcHBpbmdcIlxuICAgICAgICAgIHZhciBuZXh0TGluZSA9IHJlbWFpbmluZ0xpbmVzW3JlbWFpbmluZ0xpbmVzSW5kZXhdIHx8ICcnO1xuICAgICAgICAgIHZhciBjb2RlID0gbmV4dExpbmUuc3Vic3RyKDAsIG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uIC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uKTtcbiAgICAgICAgICByZW1haW5pbmdMaW5lc1tyZW1haW5pbmdMaW5lc0luZGV4XSA9IG5leHRMaW5lLnN1YnN0cihtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEdlbmVyYXRlZENvbHVtbik7XG4gICAgICAgICAgbGFzdEdlbmVyYXRlZENvbHVtbiA9IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uO1xuICAgICAgICAgIGFkZE1hcHBpbmdXaXRoQ29kZShsYXN0TWFwcGluZywgY29kZSk7XG4gICAgICAgICAgLy8gTm8gbW9yZSByZW1haW5pbmcgY29kZSwgY29udGludWVcbiAgICAgICAgICBsYXN0TWFwcGluZyA9IG1hcHBpbmc7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBXZSBhZGQgdGhlIGdlbmVyYXRlZCBjb2RlIHVudGlsIHRoZSBmaXJzdCBtYXBwaW5nXG4gICAgICAvLyB0byB0aGUgU291cmNlTm9kZSB3aXRob3V0IGFueSBtYXBwaW5nLlxuICAgICAgLy8gRWFjaCBsaW5lIGlzIGFkZGVkIGFzIHNlcGFyYXRlIHN0cmluZy5cbiAgICAgIHdoaWxlIChsYXN0R2VuZXJhdGVkTGluZSA8IG1hcHBpbmcuZ2VuZXJhdGVkTGluZSkge1xuICAgICAgICBub2RlLmFkZChzaGlmdE5leHRMaW5lKCkpO1xuICAgICAgICBsYXN0R2VuZXJhdGVkTGluZSsrO1xuICAgICAgfVxuICAgICAgaWYgKGxhc3RHZW5lcmF0ZWRDb2x1bW4gPCBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbikge1xuICAgICAgICB2YXIgbmV4dExpbmUgPSByZW1haW5pbmdMaW5lc1tyZW1haW5pbmdMaW5lc0luZGV4XSB8fCAnJztcbiAgICAgICAgbm9kZS5hZGQobmV4dExpbmUuc3Vic3RyKDAsIG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uKSk7XG4gICAgICAgIHJlbWFpbmluZ0xpbmVzW3JlbWFpbmluZ0xpbmVzSW5kZXhdID0gbmV4dExpbmUuc3Vic3RyKG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uKTtcbiAgICAgICAgbGFzdEdlbmVyYXRlZENvbHVtbiA9IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uO1xuICAgICAgfVxuICAgICAgbGFzdE1hcHBpbmcgPSBtYXBwaW5nO1xuICAgIH0sIHRoaXMpO1xuICAgIC8vIFdlIGhhdmUgcHJvY2Vzc2VkIGFsbCBtYXBwaW5ncy5cbiAgICBpZiAocmVtYWluaW5nTGluZXNJbmRleCA8IHJlbWFpbmluZ0xpbmVzLmxlbmd0aCkge1xuICAgICAgaWYgKGxhc3RNYXBwaW5nKSB7XG4gICAgICAgIC8vIEFzc29jaWF0ZSB0aGUgcmVtYWluaW5nIGNvZGUgaW4gdGhlIGN1cnJlbnQgbGluZSB3aXRoIFwibGFzdE1hcHBpbmdcIlxuICAgICAgICBhZGRNYXBwaW5nV2l0aENvZGUobGFzdE1hcHBpbmcsIHNoaWZ0TmV4dExpbmUoKSk7XG4gICAgICB9XG4gICAgICAvLyBhbmQgYWRkIHRoZSByZW1haW5pbmcgbGluZXMgd2l0aG91dCBhbnkgbWFwcGluZ1xuICAgICAgbm9kZS5hZGQocmVtYWluaW5nTGluZXMuc3BsaWNlKHJlbWFpbmluZ0xpbmVzSW5kZXgpLmpvaW4oXCJcIikpO1xuICAgIH1cblxuICAgIC8vIENvcHkgc291cmNlc0NvbnRlbnQgaW50byBTb3VyY2VOb2RlXG4gICAgYVNvdXJjZU1hcENvbnN1bWVyLnNvdXJjZXMuZm9yRWFjaChmdW5jdGlvbiAoc291cmNlRmlsZSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlQ29udGVudEZvcihzb3VyY2VGaWxlKTtcbiAgICAgIGlmIChjb250ZW50ICE9IG51bGwpIHtcbiAgICAgICAgaWYgKGFSZWxhdGl2ZVBhdGggIT0gbnVsbCkge1xuICAgICAgICAgIHNvdXJjZUZpbGUgPSB1dGlsLmpvaW4oYVJlbGF0aXZlUGF0aCwgc291cmNlRmlsZSk7XG4gICAgICAgIH1cbiAgICAgICAgbm9kZS5zZXRTb3VyY2VDb250ZW50KHNvdXJjZUZpbGUsIGNvbnRlbnQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5vZGU7XG5cbiAgICBmdW5jdGlvbiBhZGRNYXBwaW5nV2l0aENvZGUobWFwcGluZywgY29kZSkge1xuICAgICAgaWYgKG1hcHBpbmcgPT09IG51bGwgfHwgbWFwcGluZy5zb3VyY2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBub2RlLmFkZChjb2RlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBzb3VyY2UgPSBhUmVsYXRpdmVQYXRoXG4gICAgICAgICAgPyB1dGlsLmpvaW4oYVJlbGF0aXZlUGF0aCwgbWFwcGluZy5zb3VyY2UpXG4gICAgICAgICAgOiBtYXBwaW5nLnNvdXJjZTtcbiAgICAgICAgbm9kZS5hZGQobmV3IFNvdXJjZU5vZGUobWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxDb2x1bW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZy5uYW1lKSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIEFkZCBhIGNodW5rIG9mIGdlbmVyYXRlZCBKUyB0byB0aGlzIHNvdXJjZSBub2RlLlxuICpcbiAqIEBwYXJhbSBhQ2h1bmsgQSBzdHJpbmcgc25pcHBldCBvZiBnZW5lcmF0ZWQgSlMgY29kZSwgYW5vdGhlciBpbnN0YW5jZSBvZlxuICogICAgICAgIFNvdXJjZU5vZGUsIG9yIGFuIGFycmF5IHdoZXJlIGVhY2ggbWVtYmVyIGlzIG9uZSBvZiB0aG9zZSB0aGluZ3MuXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfYWRkKGFDaHVuaykge1xuICBpZiAoQXJyYXkuaXNBcnJheShhQ2h1bmspKSB7XG4gICAgYUNodW5rLmZvckVhY2goZnVuY3Rpb24gKGNodW5rKSB7XG4gICAgICB0aGlzLmFkZChjaHVuayk7XG4gICAgfSwgdGhpcyk7XG4gIH1cbiAgZWxzZSBpZiAoYUNodW5rW2lzU291cmNlTm9kZV0gfHwgdHlwZW9mIGFDaHVuayA9PT0gXCJzdHJpbmdcIikge1xuICAgIGlmIChhQ2h1bmspIHtcbiAgICAgIHRoaXMuY2hpbGRyZW4ucHVzaChhQ2h1bmspO1xuICAgIH1cbiAgfVxuICBlbHNlIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgXCJFeHBlY3RlZCBhIFNvdXJjZU5vZGUsIHN0cmluZywgb3IgYW4gYXJyYXkgb2YgU291cmNlTm9kZXMgYW5kIHN0cmluZ3MuIEdvdCBcIiArIGFDaHVua1xuICAgICk7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIEFkZCBhIGNodW5rIG9mIGdlbmVyYXRlZCBKUyB0byB0aGUgYmVnaW5uaW5nIG9mIHRoaXMgc291cmNlIG5vZGUuXG4gKlxuICogQHBhcmFtIGFDaHVuayBBIHN0cmluZyBzbmlwcGV0IG9mIGdlbmVyYXRlZCBKUyBjb2RlLCBhbm90aGVyIGluc3RhbmNlIG9mXG4gKiAgICAgICAgU291cmNlTm9kZSwgb3IgYW4gYXJyYXkgd2hlcmUgZWFjaCBtZW1iZXIgaXMgb25lIG9mIHRob3NlIHRoaW5ncy5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUucHJlcGVuZCA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfcHJlcGVuZChhQ2h1bmspIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYUNodW5rKSkge1xuICAgIGZvciAodmFyIGkgPSBhQ2h1bmsubGVuZ3RoLTE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB0aGlzLnByZXBlbmQoYUNodW5rW2ldKTtcbiAgICB9XG4gIH1cbiAgZWxzZSBpZiAoYUNodW5rW2lzU291cmNlTm9kZV0gfHwgdHlwZW9mIGFDaHVuayA9PT0gXCJzdHJpbmdcIikge1xuICAgIHRoaXMuY2hpbGRyZW4udW5zaGlmdChhQ2h1bmspO1xuICB9XG4gIGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICBcIkV4cGVjdGVkIGEgU291cmNlTm9kZSwgc3RyaW5nLCBvciBhbiBhcnJheSBvZiBTb3VyY2VOb2RlcyBhbmQgc3RyaW5ncy4gR290IFwiICsgYUNodW5rXG4gICAgKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogV2FsayBvdmVyIHRoZSB0cmVlIG9mIEpTIHNuaXBwZXRzIGluIHRoaXMgbm9kZSBhbmQgaXRzIGNoaWxkcmVuLiBUaGVcbiAqIHdhbGtpbmcgZnVuY3Rpb24gaXMgY2FsbGVkIG9uY2UgZm9yIGVhY2ggc25pcHBldCBvZiBKUyBhbmQgaXMgcGFzc2VkIHRoYXRcbiAqIHNuaXBwZXQgYW5kIHRoZSBpdHMgb3JpZ2luYWwgYXNzb2NpYXRlZCBzb3VyY2UncyBsaW5lL2NvbHVtbiBsb2NhdGlvbi5cbiAqXG4gKiBAcGFyYW0gYUZuIFRoZSB0cmF2ZXJzYWwgZnVuY3Rpb24uXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLndhbGsgPSBmdW5jdGlvbiBTb3VyY2VOb2RlX3dhbGsoYUZuKSB7XG4gIHZhciBjaHVuaztcbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBjaHVuayA9IHRoaXMuY2hpbGRyZW5baV07XG4gICAgaWYgKGNodW5rW2lzU291cmNlTm9kZV0pIHtcbiAgICAgIGNodW5rLndhbGsoYUZuKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBpZiAoY2h1bmsgIT09ICcnKSB7XG4gICAgICAgIGFGbihjaHVuaywgeyBzb3VyY2U6IHRoaXMuc291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgbGluZTogdGhpcy5saW5lLFxuICAgICAgICAgICAgICAgICAgICAgY29sdW1uOiB0aGlzLmNvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogTGlrZSBgU3RyaW5nLnByb3RvdHlwZS5qb2luYCBleGNlcHQgZm9yIFNvdXJjZU5vZGVzLiBJbnNlcnRzIGBhU3RyYCBiZXR3ZWVuXG4gKiBlYWNoIG9mIGB0aGlzLmNoaWxkcmVuYC5cbiAqXG4gKiBAcGFyYW0gYVNlcCBUaGUgc2VwYXJhdG9yLlxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS5qb2luID0gZnVuY3Rpb24gU291cmNlTm9kZV9qb2luKGFTZXApIHtcbiAgdmFyIG5ld0NoaWxkcmVuO1xuICB2YXIgaTtcbiAgdmFyIGxlbiA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoO1xuICBpZiAobGVuID4gMCkge1xuICAgIG5ld0NoaWxkcmVuID0gW107XG4gICAgZm9yIChpID0gMDsgaSA8IGxlbi0xOyBpKyspIHtcbiAgICAgIG5ld0NoaWxkcmVuLnB1c2godGhpcy5jaGlsZHJlbltpXSk7XG4gICAgICBuZXdDaGlsZHJlbi5wdXNoKGFTZXApO1xuICAgIH1cbiAgICBuZXdDaGlsZHJlbi5wdXNoKHRoaXMuY2hpbGRyZW5baV0pO1xuICAgIHRoaXMuY2hpbGRyZW4gPSBuZXdDaGlsZHJlbjtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogQ2FsbCBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2Ugb24gdGhlIHZlcnkgcmlnaHQtbW9zdCBzb3VyY2Ugc25pcHBldC4gVXNlZnVsXG4gKiBmb3IgdHJpbW1pbmcgd2hpdGVzcGFjZSBmcm9tIHRoZSBlbmQgb2YgYSBzb3VyY2Ugbm9kZSwgZXRjLlxuICpcbiAqIEBwYXJhbSBhUGF0dGVybiBUaGUgcGF0dGVybiB0byByZXBsYWNlLlxuICogQHBhcmFtIGFSZXBsYWNlbWVudCBUaGUgdGhpbmcgdG8gcmVwbGFjZSB0aGUgcGF0dGVybiB3aXRoLlxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS5yZXBsYWNlUmlnaHQgPSBmdW5jdGlvbiBTb3VyY2VOb2RlX3JlcGxhY2VSaWdodChhUGF0dGVybiwgYVJlcGxhY2VtZW50KSB7XG4gIHZhciBsYXN0Q2hpbGQgPSB0aGlzLmNoaWxkcmVuW3RoaXMuY2hpbGRyZW4ubGVuZ3RoIC0gMV07XG4gIGlmIChsYXN0Q2hpbGRbaXNTb3VyY2VOb2RlXSkge1xuICAgIGxhc3RDaGlsZC5yZXBsYWNlUmlnaHQoYVBhdHRlcm4sIGFSZXBsYWNlbWVudCk7XG4gIH1cbiAgZWxzZSBpZiAodHlwZW9mIGxhc3RDaGlsZCA9PT0gJ3N0cmluZycpIHtcbiAgICB0aGlzLmNoaWxkcmVuW3RoaXMuY2hpbGRyZW4ubGVuZ3RoIC0gMV0gPSBsYXN0Q2hpbGQucmVwbGFjZShhUGF0dGVybiwgYVJlcGxhY2VtZW50KTtcbiAgfVxuICBlbHNlIHtcbiAgICB0aGlzLmNoaWxkcmVuLnB1c2goJycucmVwbGFjZShhUGF0dGVybiwgYVJlcGxhY2VtZW50KSk7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIFNldCB0aGUgc291cmNlIGNvbnRlbnQgZm9yIGEgc291cmNlIGZpbGUuIFRoaXMgd2lsbCBiZSBhZGRlZCB0byB0aGUgU291cmNlTWFwR2VuZXJhdG9yXG4gKiBpbiB0aGUgc291cmNlc0NvbnRlbnQgZmllbGQuXG4gKlxuICogQHBhcmFtIGFTb3VyY2VGaWxlIFRoZSBmaWxlbmFtZSBvZiB0aGUgc291cmNlIGZpbGVcbiAqIEBwYXJhbSBhU291cmNlQ29udGVudCBUaGUgY29udGVudCBvZiB0aGUgc291cmNlIGZpbGVcbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUuc2V0U291cmNlQ29udGVudCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU5vZGVfc2V0U291cmNlQ29udGVudChhU291cmNlRmlsZSwgYVNvdXJjZUNvbnRlbnQpIHtcbiAgICB0aGlzLnNvdXJjZUNvbnRlbnRzW3V0aWwudG9TZXRTdHJpbmcoYVNvdXJjZUZpbGUpXSA9IGFTb3VyY2VDb250ZW50O1xuICB9O1xuXG4vKipcbiAqIFdhbGsgb3ZlciB0aGUgdHJlZSBvZiBTb3VyY2VOb2Rlcy4gVGhlIHdhbGtpbmcgZnVuY3Rpb24gaXMgY2FsbGVkIGZvciBlYWNoXG4gKiBzb3VyY2UgZmlsZSBjb250ZW50IGFuZCBpcyBwYXNzZWQgdGhlIGZpbGVuYW1lIGFuZCBzb3VyY2UgY29udGVudC5cbiAqXG4gKiBAcGFyYW0gYUZuIFRoZSB0cmF2ZXJzYWwgZnVuY3Rpb24uXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLndhbGtTb3VyY2VDb250ZW50cyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU5vZGVfd2Fsa1NvdXJjZUNvbnRlbnRzKGFGbikge1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5jaGlsZHJlbltpXVtpc1NvdXJjZU5vZGVdKSB7XG4gICAgICAgIHRoaXMuY2hpbGRyZW5baV0ud2Fsa1NvdXJjZUNvbnRlbnRzKGFGbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHNvdXJjZXMgPSBPYmplY3Qua2V5cyh0aGlzLnNvdXJjZUNvbnRlbnRzKTtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gc291cmNlcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgYUZuKHV0aWwuZnJvbVNldFN0cmluZyhzb3VyY2VzW2ldKSwgdGhpcy5zb3VyY2VDb250ZW50c1tzb3VyY2VzW2ldXSk7XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIFJldHVybiB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgc291cmNlIG5vZGUuIFdhbGtzIG92ZXIgdGhlIHRyZWVcbiAqIGFuZCBjb25jYXRlbmF0ZXMgYWxsIHRoZSB2YXJpb3VzIHNuaXBwZXRzIHRvZ2V0aGVyIHRvIG9uZSBzdHJpbmcuXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gU291cmNlTm9kZV90b1N0cmluZygpIHtcbiAgdmFyIHN0ciA9IFwiXCI7XG4gIHRoaXMud2FsayhmdW5jdGlvbiAoY2h1bmspIHtcbiAgICBzdHIgKz0gY2h1bms7XG4gIH0pO1xuICByZXR1cm4gc3RyO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBzb3VyY2Ugbm9kZSBhbG9uZyB3aXRoIGEgc291cmNlXG4gKiBtYXAuXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLnRvU3RyaW5nV2l0aFNvdXJjZU1hcCA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfdG9TdHJpbmdXaXRoU291cmNlTWFwKGFBcmdzKSB7XG4gIHZhciBnZW5lcmF0ZWQgPSB7XG4gICAgY29kZTogXCJcIixcbiAgICBsaW5lOiAxLFxuICAgIGNvbHVtbjogMFxuICB9O1xuICB2YXIgbWFwID0gbmV3IFNvdXJjZU1hcEdlbmVyYXRvcihhQXJncyk7XG4gIHZhciBzb3VyY2VNYXBwaW5nQWN0aXZlID0gZmFsc2U7XG4gIHZhciBsYXN0T3JpZ2luYWxTb3VyY2UgPSBudWxsO1xuICB2YXIgbGFzdE9yaWdpbmFsTGluZSA9IG51bGw7XG4gIHZhciBsYXN0T3JpZ2luYWxDb2x1bW4gPSBudWxsO1xuICB2YXIgbGFzdE9yaWdpbmFsTmFtZSA9IG51bGw7XG4gIHRoaXMud2FsayhmdW5jdGlvbiAoY2h1bmssIG9yaWdpbmFsKSB7XG4gICAgZ2VuZXJhdGVkLmNvZGUgKz0gY2h1bms7XG4gICAgaWYgKG9yaWdpbmFsLnNvdXJjZSAhPT0gbnVsbFxuICAgICAgICAmJiBvcmlnaW5hbC5saW5lICE9PSBudWxsXG4gICAgICAgICYmIG9yaWdpbmFsLmNvbHVtbiAhPT0gbnVsbCkge1xuICAgICAgaWYobGFzdE9yaWdpbmFsU291cmNlICE9PSBvcmlnaW5hbC5zb3VyY2VcbiAgICAgICAgIHx8IGxhc3RPcmlnaW5hbExpbmUgIT09IG9yaWdpbmFsLmxpbmVcbiAgICAgICAgIHx8IGxhc3RPcmlnaW5hbENvbHVtbiAhPT0gb3JpZ2luYWwuY29sdW1uXG4gICAgICAgICB8fCBsYXN0T3JpZ2luYWxOYW1lICE9PSBvcmlnaW5hbC5uYW1lKSB7XG4gICAgICAgIG1hcC5hZGRNYXBwaW5nKHtcbiAgICAgICAgICBzb3VyY2U6IG9yaWdpbmFsLnNvdXJjZSxcbiAgICAgICAgICBvcmlnaW5hbDoge1xuICAgICAgICAgICAgbGluZTogb3JpZ2luYWwubGluZSxcbiAgICAgICAgICAgIGNvbHVtbjogb3JpZ2luYWwuY29sdW1uXG4gICAgICAgICAgfSxcbiAgICAgICAgICBnZW5lcmF0ZWQ6IHtcbiAgICAgICAgICAgIGxpbmU6IGdlbmVyYXRlZC5saW5lLFxuICAgICAgICAgICAgY29sdW1uOiBnZW5lcmF0ZWQuY29sdW1uXG4gICAgICAgICAgfSxcbiAgICAgICAgICBuYW1lOiBvcmlnaW5hbC5uYW1lXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgbGFzdE9yaWdpbmFsU291cmNlID0gb3JpZ2luYWwuc291cmNlO1xuICAgICAgbGFzdE9yaWdpbmFsTGluZSA9IG9yaWdpbmFsLmxpbmU7XG4gICAgICBsYXN0T3JpZ2luYWxDb2x1bW4gPSBvcmlnaW5hbC5jb2x1bW47XG4gICAgICBsYXN0T3JpZ2luYWxOYW1lID0gb3JpZ2luYWwubmFtZTtcbiAgICAgIHNvdXJjZU1hcHBpbmdBY3RpdmUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoc291cmNlTWFwcGluZ0FjdGl2ZSkge1xuICAgICAgbWFwLmFkZE1hcHBpbmcoe1xuICAgICAgICBnZW5lcmF0ZWQ6IHtcbiAgICAgICAgICBsaW5lOiBnZW5lcmF0ZWQubGluZSxcbiAgICAgICAgICBjb2x1bW46IGdlbmVyYXRlZC5jb2x1bW5cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBsYXN0T3JpZ2luYWxTb3VyY2UgPSBudWxsO1xuICAgICAgc291cmNlTWFwcGluZ0FjdGl2ZSA9IGZhbHNlO1xuICAgIH1cbiAgICBmb3IgKHZhciBpZHggPSAwLCBsZW5ndGggPSBjaHVuay5sZW5ndGg7IGlkeCA8IGxlbmd0aDsgaWR4KyspIHtcbiAgICAgIGlmIChjaHVuay5jaGFyQ29kZUF0KGlkeCkgPT09IE5FV0xJTkVfQ09ERSkge1xuICAgICAgICBnZW5lcmF0ZWQubGluZSsrO1xuICAgICAgICBnZW5lcmF0ZWQuY29sdW1uID0gMDtcbiAgICAgICAgLy8gTWFwcGluZ3MgZW5kIGF0IGVvbFxuICAgICAgICBpZiAoaWR4ICsgMSA9PT0gbGVuZ3RoKSB7XG4gICAgICAgICAgbGFzdE9yaWdpbmFsU291cmNlID0gbnVsbDtcbiAgICAgICAgICBzb3VyY2VNYXBwaW5nQWN0aXZlID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSBpZiAoc291cmNlTWFwcGluZ0FjdGl2ZSkge1xuICAgICAgICAgIG1hcC5hZGRNYXBwaW5nKHtcbiAgICAgICAgICAgIHNvdXJjZTogb3JpZ2luYWwuc291cmNlLFxuICAgICAgICAgICAgb3JpZ2luYWw6IHtcbiAgICAgICAgICAgICAgbGluZTogb3JpZ2luYWwubGluZSxcbiAgICAgICAgICAgICAgY29sdW1uOiBvcmlnaW5hbC5jb2x1bW5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZW5lcmF0ZWQ6IHtcbiAgICAgICAgICAgICAgbGluZTogZ2VuZXJhdGVkLmxpbmUsXG4gICAgICAgICAgICAgIGNvbHVtbjogZ2VuZXJhdGVkLmNvbHVtblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5hbWU6IG9yaWdpbmFsLm5hbWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ2VuZXJhdGVkLmNvbHVtbisrO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHRoaXMud2Fsa1NvdXJjZUNvbnRlbnRzKGZ1bmN0aW9uIChzb3VyY2VGaWxlLCBzb3VyY2VDb250ZW50KSB7XG4gICAgbWFwLnNldFNvdXJjZUNvbnRlbnQoc291cmNlRmlsZSwgc291cmNlQ29udGVudCk7XG4gIH0pO1xuXG4gIHJldHVybiB7IGNvZGU6IGdlbmVyYXRlZC5jb2RlLCBtYXA6IG1hcCB9O1xufTtcblxuZXhwb3J0cy5Tb3VyY2VOb2RlID0gU291cmNlTm9kZTtcbiIsIi8qXG4gKiBDb3B5cmlnaHQgMjAwOS0yMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRS50eHQgb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cbmV4cG9ydHMuU291cmNlTWFwR2VuZXJhdG9yID0gcmVxdWlyZSgnLi9saWIvc291cmNlLW1hcC1nZW5lcmF0b3InKS5Tb3VyY2VNYXBHZW5lcmF0b3I7XG5leHBvcnRzLlNvdXJjZU1hcENvbnN1bWVyID0gcmVxdWlyZSgnLi9saWIvc291cmNlLW1hcC1jb25zdW1lcicpLlNvdXJjZU1hcENvbnN1bWVyO1xuZXhwb3J0cy5Tb3VyY2VOb2RlID0gcmVxdWlyZSgnLi9saWIvc291cmNlLW5vZGUnKS5Tb3VyY2VOb2RlO1xuIiwiLyogZ2xvYmFsIGRlZmluZSAqL1xuJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX3V0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcblxudmFyIFNvdXJjZU5vZGUgPSB1bmRlZmluZWQ7XG5cbnRyeSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGlmICh0eXBlb2YgZGVmaW5lICE9PSAnZnVuY3Rpb24nIHx8ICFkZWZpbmUuYW1kKSB7XG4gICAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCB0aGlzIGluIEFNRCBlbnZpcm9ubWVudHMuIEZvciB0aGVzZSBlbnZpcm9ubWVudHMsIHdlIGFzdXNtZSB0aGF0XG4gICAgLy8gdGhleSBhcmUgcnVubmluZyBvbiB0aGUgYnJvd3NlciBhbmQgdGh1cyBoYXZlIG5vIG5lZWQgZm9yIHRoZSBzb3VyY2UtbWFwIGxpYnJhcnkuXG4gICAgdmFyIFNvdXJjZU1hcCA9IHJlcXVpcmUoJ3NvdXJjZS1tYXAnKTtcbiAgICBTb3VyY2VOb2RlID0gU291cmNlTWFwLlNvdXJjZU5vZGU7XG4gIH1cbn0gY2F0Y2ggKGVycikge31cbi8qIE5PUCAqL1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWY6IHRlc3RlZCBidXQgbm90IGNvdmVyZWQgaW4gaXN0YW5idWwgZHVlIHRvIGRpc3QgYnVpbGQgICovXG5pZiAoIVNvdXJjZU5vZGUpIHtcbiAgU291cmNlTm9kZSA9IGZ1bmN0aW9uIChsaW5lLCBjb2x1bW4sIHNyY0ZpbGUsIGNodW5rcykge1xuICAgIHRoaXMuc3JjID0gJyc7XG4gICAgaWYgKGNodW5rcykge1xuICAgICAgdGhpcy5hZGQoY2h1bmtzKTtcbiAgICB9XG4gIH07XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIFNvdXJjZU5vZGUucHJvdG90eXBlID0ge1xuICAgIGFkZDogZnVuY3Rpb24gYWRkKGNodW5rcykge1xuICAgICAgaWYgKF91dGlscy5pc0FycmF5KGNodW5rcykpIHtcbiAgICAgICAgY2h1bmtzID0gY2h1bmtzLmpvaW4oJycpO1xuICAgICAgfVxuICAgICAgdGhpcy5zcmMgKz0gY2h1bmtzO1xuICAgIH0sXG4gICAgcHJlcGVuZDogZnVuY3Rpb24gcHJlcGVuZChjaHVua3MpIHtcbiAgICAgIGlmIChfdXRpbHMuaXNBcnJheShjaHVua3MpKSB7XG4gICAgICAgIGNodW5rcyA9IGNodW5rcy5qb2luKCcnKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc3JjID0gY2h1bmtzICsgdGhpcy5zcmM7XG4gICAgfSxcbiAgICB0b1N0cmluZ1dpdGhTb3VyY2VNYXA6IGZ1bmN0aW9uIHRvU3RyaW5nV2l0aFNvdXJjZU1hcCgpIHtcbiAgICAgIHJldHVybiB7IGNvZGU6IHRoaXMudG9TdHJpbmcoKSB9O1xuICAgIH0sXG4gICAgdG9TdHJpbmc6IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgICAgcmV0dXJuIHRoaXMuc3JjO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gY2FzdENodW5rKGNodW5rLCBjb2RlR2VuLCBsb2MpIHtcbiAgaWYgKF91dGlscy5pc0FycmF5KGNodW5rKSkge1xuICAgIHZhciByZXQgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBjaHVuay5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgcmV0LnB1c2goY29kZUdlbi53cmFwKGNodW5rW2ldLCBsb2MpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgY2h1bmsgPT09ICdib29sZWFuJyB8fCB0eXBlb2YgY2h1bmsgPT09ICdudW1iZXInKSB7XG4gICAgLy8gSGFuZGxlIHByaW1pdGl2ZXMgdGhhdCB0aGUgU291cmNlTm9kZSB3aWxsIHRocm93IHVwIG9uXG4gICAgcmV0dXJuIGNodW5rICsgJyc7XG4gIH1cbiAgcmV0dXJuIGNodW5rO1xufVxuXG5mdW5jdGlvbiBDb2RlR2VuKHNyY0ZpbGUpIHtcbiAgdGhpcy5zcmNGaWxlID0gc3JjRmlsZTtcbiAgdGhpcy5zb3VyY2UgPSBbXTtcbn1cblxuQ29kZUdlbi5wcm90b3R5cGUgPSB7XG4gIGlzRW1wdHk6IGZ1bmN0aW9uIGlzRW1wdHkoKSB7XG4gICAgcmV0dXJuICF0aGlzLnNvdXJjZS5sZW5ndGg7XG4gIH0sXG4gIHByZXBlbmQ6IGZ1bmN0aW9uIHByZXBlbmQoc291cmNlLCBsb2MpIHtcbiAgICB0aGlzLnNvdXJjZS51bnNoaWZ0KHRoaXMud3JhcChzb3VyY2UsIGxvYykpO1xuICB9LFxuICBwdXNoOiBmdW5jdGlvbiBwdXNoKHNvdXJjZSwgbG9jKSB7XG4gICAgdGhpcy5zb3VyY2UucHVzaCh0aGlzLndyYXAoc291cmNlLCBsb2MpKTtcbiAgfSxcblxuICBtZXJnZTogZnVuY3Rpb24gbWVyZ2UoKSB7XG4gICAgdmFyIHNvdXJjZSA9IHRoaXMuZW1wdHkoKTtcbiAgICB0aGlzLmVhY2goZnVuY3Rpb24gKGxpbmUpIHtcbiAgICAgIHNvdXJjZS5hZGQoWycgICcsIGxpbmUsICdcXG4nXSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfSxcblxuICBlYWNoOiBmdW5jdGlvbiBlYWNoKGl0ZXIpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gdGhpcy5zb3VyY2UubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGl0ZXIodGhpcy5zb3VyY2VbaV0pO1xuICAgIH1cbiAgfSxcblxuICBlbXB0eTogZnVuY3Rpb24gZW1wdHkoKSB7XG4gICAgdmFyIGxvYyA9IHRoaXMuY3VycmVudExvY2F0aW9uIHx8IHsgc3RhcnQ6IHt9IH07XG4gICAgcmV0dXJuIG5ldyBTb3VyY2VOb2RlKGxvYy5zdGFydC5saW5lLCBsb2Muc3RhcnQuY29sdW1uLCB0aGlzLnNyY0ZpbGUpO1xuICB9LFxuICB3cmFwOiBmdW5jdGlvbiB3cmFwKGNodW5rKSB7XG4gICAgdmFyIGxvYyA9IGFyZ3VtZW50cy5sZW5ndGggPD0gMSB8fCBhcmd1bWVudHNbMV0gPT09IHVuZGVmaW5lZCA/IHRoaXMuY3VycmVudExvY2F0aW9uIHx8IHsgc3RhcnQ6IHt9IH0gOiBhcmd1bWVudHNbMV07XG5cbiAgICBpZiAoY2h1bmsgaW5zdGFuY2VvZiBTb3VyY2VOb2RlKSB7XG4gICAgICByZXR1cm4gY2h1bms7XG4gICAgfVxuXG4gICAgY2h1bmsgPSBjYXN0Q2h1bmsoY2h1bmssIHRoaXMsIGxvYyk7XG5cbiAgICByZXR1cm4gbmV3IFNvdXJjZU5vZGUobG9jLnN0YXJ0LmxpbmUsIGxvYy5zdGFydC5jb2x1bW4sIHRoaXMuc3JjRmlsZSwgY2h1bmspO1xuICB9LFxuXG4gIGZ1bmN0aW9uQ2FsbDogZnVuY3Rpb24gZnVuY3Rpb25DYWxsKGZuLCB0eXBlLCBwYXJhbXMpIHtcbiAgICBwYXJhbXMgPSB0aGlzLmdlbmVyYXRlTGlzdChwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLndyYXAoW2ZuLCB0eXBlID8gJy4nICsgdHlwZSArICcoJyA6ICcoJywgcGFyYW1zLCAnKSddKTtcbiAgfSxcblxuICBxdW90ZWRTdHJpbmc6IGZ1bmN0aW9uIHF1b3RlZFN0cmluZyhzdHIpIHtcbiAgICByZXR1cm4gJ1wiJyArIChzdHIgKyAnJykucmVwbGFjZSgvXFxcXC9nLCAnXFxcXFxcXFwnKS5yZXBsYWNlKC9cIi9nLCAnXFxcXFwiJykucmVwbGFjZSgvXFxuL2csICdcXFxcbicpLnJlcGxhY2UoL1xcci9nLCAnXFxcXHInKS5yZXBsYWNlKC9cXHUyMDI4L2csICdcXFxcdTIwMjgnKSAvLyBQZXIgRWNtYS0yNjIgNy4zICsgNy44LjRcbiAgICAucmVwbGFjZSgvXFx1MjAyOS9nLCAnXFxcXHUyMDI5JykgKyAnXCInO1xuICB9LFxuXG4gIG9iamVjdExpdGVyYWw6IGZ1bmN0aW9uIG9iamVjdExpdGVyYWwob2JqKSB7XG4gICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcblxuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgcGFpcnMgPSBbXTtcblxuICAgIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICB2YXIgdmFsdWUgPSBjYXN0Q2h1bmsob2JqW2tleV0sIF90aGlzKTtcbiAgICAgIGlmICh2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcGFpcnMucHVzaChbX3RoaXMucXVvdGVkU3RyaW5nKGtleSksICc6JywgdmFsdWVdKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHZhciByZXQgPSB0aGlzLmdlbmVyYXRlTGlzdChwYWlycyk7XG4gICAgcmV0LnByZXBlbmQoJ3snKTtcbiAgICByZXQuYWRkKCd9Jyk7XG4gICAgcmV0dXJuIHJldDtcbiAgfSxcblxuICBnZW5lcmF0ZUxpc3Q6IGZ1bmN0aW9uIGdlbmVyYXRlTGlzdChlbnRyaWVzKSB7XG4gICAgdmFyIHJldCA9IHRoaXMuZW1wdHkoKTtcblxuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBlbnRyaWVzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBpZiAoaSkge1xuICAgICAgICByZXQuYWRkKCcsJyk7XG4gICAgICB9XG5cbiAgICAgIHJldC5hZGQoY2FzdENodW5rKGVudHJpZXNbaV0sIHRoaXMpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9LFxuXG4gIGdlbmVyYXRlQXJyYXk6IGZ1bmN0aW9uIGdlbmVyYXRlQXJyYXkoZW50cmllcykge1xuICAgIHZhciByZXQgPSB0aGlzLmdlbmVyYXRlTGlzdChlbnRyaWVzKTtcbiAgICByZXQucHJlcGVuZCgnWycpO1xuICAgIHJldC5hZGQoJ10nKTtcblxuICAgIHJldHVybiByZXQ7XG4gIH1cbn07XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IENvZGVHZW47XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUx5NHVMMnhwWWk5b1lXNWtiR1ZpWVhKekwyTnZiWEJwYkdWeUwyTnZaR1V0WjJWdUxtcHpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdPenM3TzNGQ1FVTjNRaXhWUVVGVk96dEJRVVZzUXl4SlFVRkpMRlZCUVZVc1dVRkJRU3hEUVVGRE96dEJRVVZtTEVsQlFVazdPMEZCUlVZc1RVRkJTU3hQUVVGUExFMUJRVTBzUzBGQlN5eFZRVUZWTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhGUVVGRk96czdRVUZITDBNc1VVRkJTU3hUUVVGVExFZEJRVWNzVDBGQlR5eERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRPMEZCUTNSRExHTkJRVlVzUjBGQlJ5eFRRVUZUTEVOQlFVTXNWVUZCVlN4RFFVRkRPMGRCUTI1RE8wTkJRMFlzUTBGQlF5eFBRVUZQTEVkQlFVY3NSVUZCUlN4RlFVVmlPenM3TzBGQlFVRXNRVUZIUkN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hGUVVGRk8wRkJRMllzV1VGQlZTeEhRVUZITEZWQlFWTXNTVUZCU1N4RlFVRkZMRTFCUVUwc1JVRkJSU3hQUVVGUExFVkJRVVVzVFVGQlRTeEZRVUZGTzBGQlEyNUVMRkZCUVVrc1EwRkJReXhIUVVGSExFZEJRVWNzUlVGQlJTeERRVUZETzBGQlEyUXNVVUZCU1N4TlFVRk5MRVZCUVVVN1FVRkRWaXhWUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMHRCUTJ4Q08wZEJRMFlzUTBGQlF6czdRVUZGUml4WlFVRlZMRU5CUVVNc1UwRkJVeXhIUVVGSE8wRkJRM0pDTEU5QlFVY3NSVUZCUlN4aFFVRlRMRTFCUVUwc1JVRkJSVHRCUVVOd1FpeFZRVUZKTEdWQlFWRXNUVUZCVFN4RFFVRkRMRVZCUVVVN1FVRkRia0lzWTBGQlRTeEhRVUZITEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03VDBGRE1VSTdRVUZEUkN4VlFVRkpMRU5CUVVNc1IwRkJSeXhKUVVGSkxFMUJRVTBzUTBGQlF6dExRVU53UWp0QlFVTkVMRmRCUVU4c1JVRkJSU3hwUWtGQlV5eE5RVUZOTEVWQlFVVTdRVUZEZUVJc1ZVRkJTU3hsUVVGUkxFMUJRVTBzUTBGQlF5eEZRVUZGTzBGQlEyNUNMR05CUVUwc1IwRkJSeXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPMDlCUXpGQ08wRkJRMFFzVlVGQlNTeERRVUZETEVkQlFVY3NSMEZCUnl4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF6dExRVU01UWp0QlFVTkVMSGxDUVVGeFFpeEZRVUZGTEdsRFFVRlhPMEZCUTJoRExHRkJRVThzUlVGQlJTeEpRVUZKTEVWQlFVVXNTVUZCU1N4RFFVRkRMRkZCUVZFc1JVRkJSU3hGUVVGRkxFTkJRVU03UzBGRGJFTTdRVUZEUkN4WlFVRlJMRVZCUVVVc2IwSkJRVmM3UVVGRGJrSXNZVUZCVHl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRE8wdEJRMnBDTzBkQlEwWXNRMEZCUXp0RFFVTklPenRCUVVWRUxGTkJRVk1zVTBGQlV5eERRVUZETEV0QlFVc3NSVUZCUlN4UFFVRlBMRVZCUVVVc1IwRkJSeXhGUVVGRk8wRkJRM1JETEUxQlFVa3NaVUZCVVN4TFFVRkxMRU5CUVVNc1JVRkJSVHRCUVVOc1FpeFJRVUZKTEVkQlFVY3NSMEZCUnl4RlFVRkZMRU5CUVVNN08wRkJSV0lzVTBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1IwRkJSeXhIUVVGSExFdEJRVXNzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4SFFVRkhMRWRCUVVjc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdEJRVU5vUkN4VFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdTMEZEZGtNN1FVRkRSQ3hYUVVGUExFZEJRVWNzUTBGQlF6dEhRVU5hTEUxQlFVMHNTVUZCU1N4UFFVRlBMRXRCUVVzc1MwRkJTeXhUUVVGVExFbEJRVWtzVDBGQlR5eExRVUZMTEV0QlFVc3NVVUZCVVN4RlFVRkZPenRCUVVWc1JTeFhRVUZQTEV0QlFVc3NSMEZCUnl4RlFVRkZMRU5CUVVNN1IwRkRia0k3UVVGRFJDeFRRVUZQTEV0QlFVc3NRMEZCUXp0RFFVTmtPenRCUVVWRUxGTkJRVk1zVDBGQlR5eERRVUZETEU5QlFVOHNSVUZCUlR0QlFVTjRRaXhOUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEU5QlFVOHNRMEZCUXp0QlFVTjJRaXhOUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEVWQlFVVXNRMEZCUXp0RFFVTnNRanM3UVVGRlJDeFBRVUZQTEVOQlFVTXNVMEZCVXl4SFFVRkhPMEZCUTJ4Q0xGTkJRVThzUlVGQlFTeHRRa0ZCUnp0QlFVTlNMRmRCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXp0SFFVTTFRanRCUVVORUxGTkJRVThzUlVGQlJTeHBRa0ZCVXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhGUVVGRk8wRkJRemRDTEZGQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03UjBGRE4wTTdRVUZEUkN4TlFVRkpMRVZCUVVVc1kwRkJVeXhOUVVGTkxFVkJRVVVzUjBGQlJ5eEZRVUZGTzBGQlF6RkNMRkZCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdSMEZETVVNN08wRkJSVVFzVDBGQlN5eEZRVUZGTEdsQ1FVRlhPMEZCUTJoQ0xGRkJRVWtzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJRenRCUVVNeFFpeFJRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRlZCUVZNc1NVRkJTU3hGUVVGRk8wRkJRM1pDTEZsQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1MwRkRhRU1zUTBGQlF5eERRVUZETzBGQlEwZ3NWMEZCVHl4TlFVRk5MRU5CUVVNN1IwRkRaanM3UVVGRlJDeE5RVUZKTEVWQlFVVXNZMEZCVXl4SlFVRkpMRVZCUVVVN1FVRkRia0lzVTBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1IwRkJSeXhIUVVGSExFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdRVUZEZEVRc1ZVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRMUVVOMFFqdEhRVU5HT3p0QlFVVkVMRTlCUVVzc1JVRkJSU3hwUWtGQlZ6dEJRVU5vUWl4UlFVRkpMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zWlVGQlpTeEpRVUZKTEVWQlFVVXNTMEZCU3l4RlFVRkZMRVZCUVVVc1JVRkJSU3hEUVVGRE8wRkJRMmhFTEZkQlFVOHNTVUZCU1N4VlFVRlZMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVWQlFVVXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMGRCUTNaRk8wRkJRMFFzVFVGQlNTeEZRVUZGTEdOQlFWTXNTMEZCU3l4RlFVRXJRenRSUVVFM1F5eEhRVUZITEhsRVFVRkhMRWxCUVVrc1EwRkJReXhsUVVGbExFbEJRVWtzUlVGQlJTeExRVUZMTEVWQlFVVXNSVUZCUlN4RlFVRkZPenRCUVVNdlJDeFJRVUZKTEV0QlFVc3NXVUZCV1N4VlFVRlZMRVZCUVVVN1FVRkRMMElzWVVGQlR5eExRVUZMTEVOQlFVTTdTMEZEWkRzN1FVRkZSQ3hUUVVGTExFZEJRVWNzVTBGQlV5eERRVUZETEV0QlFVc3NSVUZCUlN4SlFVRkpMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03TzBGQlJYQkRMRmRCUVU4c1NVRkJTU3hWUVVGVkxFTkJRMjVDTEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hGUVVOa0xFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN4RlFVTm9RaXhKUVVGSkxFTkJRVU1zVDBGQlR5eEZRVU5hTEV0QlFVc3NRMEZEVGl4RFFVRkRPMGRCUTBnN08wRkJSVVFzWTBGQldTeEZRVUZGTEhOQ1FVRlRMRVZCUVVVc1JVRkJSU3hKUVVGSkxFVkJRVVVzVFVGQlRTeEZRVUZGTzBGQlEzWkRMRlZCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMEZCUTI1RExGZEJRVThzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hKUVVGSkxFZEJRVWNzUjBGQlJ5eEhRVUZITEVsQlFVa3NSMEZCUnl4SFFVRkhMRWRCUVVjc1IwRkJSeXhGUVVGRkxFMUJRVTBzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMGRCUTNCRk96dEJRVVZFTEdOQlFWa3NSVUZCUlN4elFrRkJVeXhIUVVGSExFVkJRVVU3UVVGRE1VSXNWMEZEUlN4SFFVRkhMRWRCUTBnc1EwRkJReXhIUVVGSExFZEJRVWNzUlVGQlJTeERRVUZCTEVOQlEwNHNUMEZCVHl4RFFVRkRMRXRCUVVzc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGRGRFSXNUMEZCVHl4RFFVRkRMRWxCUVVrc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGRGNFSXNUMEZCVHl4RFFVRkRMRXRCUVVzc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGRGNrSXNUMEZCVHl4RFFVRkRMRXRCUVVzc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGRGNrSXNUMEZCVHl4RFFVRkRMRk5CUVZNc1JVRkJSU3hUUVVGVExFTkJRVU03UzBGRE4wSXNUMEZCVHl4RFFVRkRMRk5CUVZNc1JVRkJSU3hUUVVGVExFTkJRVU1zUjBGRGFFTXNSMEZCUnl4RFFVTklPMGRCUTBnN08wRkJSVVFzWlVGQllTeEZRVUZGTEhWQ1FVRlRMRWRCUVVjc1JVRkJSVHM3T3pzN1FVRkRNMElzVVVGQlNTeExRVUZMTEVkQlFVY3NSVUZCUlN4RFFVRkRPenRCUVVWbUxGVkJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1QwRkJUeXhEUVVGRExGVkJRVUVzUjBGQlJ5eEZRVUZKTzBGQlF6bENMRlZCUVVrc1MwRkJTeXhIUVVGSExGTkJRVk1zUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRkZCUVU4c1EwRkJRenRCUVVOMFF5eFZRVUZKTEV0QlFVc3NTMEZCU3l4WFFVRlhMRVZCUVVVN1FVRkRla0lzWVVGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRTFCUVVzc1dVRkJXU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVkQlFVY3NSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRE8wOUJRMnhFTzB0QlEwWXNRMEZCUXl4RFFVRkRPenRCUVVWSUxGRkJRVWtzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03UVVGRGJrTXNUMEZCUnl4RFFVRkRMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dEJRVU5xUWl4UFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBGQlEySXNWMEZCVHl4SFFVRkhMRU5CUVVNN1IwRkRXanM3UVVGRlJDeGpRVUZaTEVWQlFVVXNjMEpCUVZNc1QwRkJUeXhGUVVGRk8wRkJRemxDTEZGQlFVa3NSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF6czdRVUZGZGtJc1UwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSMEZCUnl4SFFVRkhMRTlCUVU4c1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEhRVUZITEVkQlFVY3NSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRCUVVOc1JDeFZRVUZKTEVOQlFVTXNSVUZCUlR0QlFVTk1MRmRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdUMEZEWkRzN1FVRkZSQ3hUUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEZOQlFWTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0TFFVTjBRenM3UVVGRlJDeFhRVUZQTEVkQlFVY3NRMEZCUXp0SFFVTmFPenRCUVVWRUxHVkJRV0VzUlVGQlJTeDFRa0ZCVXl4UFFVRlBMRVZCUVVVN1FVRkRMMElzVVVGQlNTeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dEJRVU55UXl4UFFVRkhMRU5CUVVNc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBGQlEycENMRTlCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdPMEZCUldJc1YwRkJUeXhIUVVGSExFTkJRVU03UjBGRFdqdERRVU5HTEVOQlFVTTdPM0ZDUVVWaExFOUJRVThpTENKbWFXeGxJam9pWTI5a1pTMW5aVzR1YW5NaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SXZLaUJuYkc5aVlXd2daR1ZtYVc1bElDb3ZYRzVwYlhCdmNuUWdleUJwYzBGeWNtRjVJSDBnWm5KdmJTQW5MaTR2ZFhScGJITW5PMXh1WEc1c1pYUWdVMjkxY21ObFRtOWtaVHRjYmx4dWRISjVJSHRjYmlBZ0x5b2dhWE4wWVc1aWRXd2dhV2R1YjNKbElHNWxlSFFnS2k5Y2JpQWdhV1lnS0hSNWNHVnZaaUJrWldacGJtVWdJVDA5SUNkbWRXNWpkR2x2YmljZ2ZId2dJV1JsWm1sdVpTNWhiV1FwSUh0Y2JpQWdJQ0F2THlCWFpTQmtiMjRuZENCemRYQndiM0owSUhSb2FYTWdhVzRnUVUxRUlHVnVkbWx5YjI1dFpXNTBjeTRnUm05eUlIUm9aWE5sSUdWdWRtbHliMjV0Wlc1MGN5d2dkMlVnWVhOMWMyMWxJSFJvWVhSY2JpQWdJQ0F2THlCMGFHVjVJR0Z5WlNCeWRXNXVhVzVuSUc5dUlIUm9aU0JpY205M2MyVnlJR0Z1WkNCMGFIVnpJR2hoZG1VZ2JtOGdibVZsWkNCbWIzSWdkR2hsSUhOdmRYSmpaUzF0WVhBZ2JHbGljbUZ5ZVM1Y2JpQWdJQ0JzWlhRZ1UyOTFjbU5sVFdGd0lEMGdjbVZ4ZFdseVpTZ25jMjkxY21ObExXMWhjQ2NwTzF4dUlDQWdJRk52ZFhKalpVNXZaR1VnUFNCVGIzVnlZMlZOWVhBdVUyOTFjbU5sVG05a1pUdGNiaUFnZlZ4dWZTQmpZWFJqYUNBb1pYSnlLU0I3WEc0Z0lDOHFJRTVQVUNBcUwxeHVmVnh1WEc0dktpQnBjM1JoYm1KMWJDQnBaMjV2Y21VZ2FXWTZJSFJsYzNSbFpDQmlkWFFnYm05MElHTnZkbVZ5WldRZ2FXNGdhWE4wWVc1aWRXd2daSFZsSUhSdklHUnBjM1FnWW5WcGJHUWdJQ292WEc1cFppQW9JVk52ZFhKalpVNXZaR1VwSUh0Y2JpQWdVMjkxY21ObFRtOWtaU0E5SUdaMWJtTjBhVzl1S0d4cGJtVXNJR052YkhWdGJpd2djM0pqUm1sc1pTd2dZMmgxYm10ektTQjdYRzRnSUNBZ2RHaHBjeTV6Y21NZ1BTQW5KenRjYmlBZ0lDQnBaaUFvWTJoMWJtdHpLU0I3WEc0Z0lDQWdJQ0IwYUdsekxtRmtaQ2hqYUhWdWEzTXBPMXh1SUNBZ0lIMWNiaUFnZlR0Y2JpQWdMeW9nYVhOMFlXNWlkV3dnYVdkdWIzSmxJRzVsZUhRZ0tpOWNiaUFnVTI5MWNtTmxUbTlrWlM1d2NtOTBiM1I1Y0dVZ1BTQjdYRzRnSUNBZ1lXUmtPaUJtZFc1amRHbHZiaWhqYUhWdWEzTXBJSHRjYmlBZ0lDQWdJR2xtSUNocGMwRnljbUY1S0dOb2RXNXJjeWtwSUh0Y2JpQWdJQ0FnSUNBZ1kyaDFibXR6SUQwZ1kyaDFibXR6TG1wdmFXNG9KeWNwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnZEdocGN5NXpjbU1nS3owZ1kyaDFibXR6TzF4dUlDQWdJSDBzWEc0Z0lDQWdjSEpsY0dWdVpEb2dablZ1WTNScGIyNG9ZMmgxYm10ektTQjdYRzRnSUNBZ0lDQnBaaUFvYVhOQmNuSmhlU2hqYUhWdWEzTXBLU0I3WEc0Z0lDQWdJQ0FnSUdOb2RXNXJjeUE5SUdOb2RXNXJjeTVxYjJsdUtDY25LVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJSFJvYVhNdWMzSmpJRDBnWTJoMWJtdHpJQ3NnZEdocGN5NXpjbU03WEc0Z0lDQWdmU3hjYmlBZ0lDQjBiMU4wY21sdVoxZHBkR2hUYjNWeVkyVk5ZWEE2SUdaMWJtTjBhVzl1S0NrZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUhzZ1kyOWtaVG9nZEdocGN5NTBiMU4wY21sdVp5Z3BJSDA3WEc0Z0lDQWdmU3hjYmlBZ0lDQjBiMU4wY21sdVp6b2dablZ1WTNScGIyNG9LU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3k1emNtTTdYRzRnSUNBZ2ZWeHVJQ0I5TzF4dWZWeHVYRzVtZFc1amRHbHZiaUJqWVhOMFEyaDFibXNvWTJoMWJtc3NJR052WkdWSFpXNHNJR3h2WXlrZ2UxeHVJQ0JwWmlBb2FYTkJjbkpoZVNoamFIVnVheWtwSUh0Y2JpQWdJQ0JzWlhRZ2NtVjBJRDBnVzEwN1hHNWNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdNQ3dnYkdWdUlEMGdZMmgxYm1zdWJHVnVaM1JvT3lCcElEd2diR1Z1T3lCcEt5c3BJSHRjYmlBZ0lDQWdJSEpsZEM1d2RYTm9LR052WkdWSFpXNHVkM0poY0NoamFIVnVhMXRwWFN3Z2JHOWpLU2s3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCeVpYUTdYRzRnSUgwZ1pXeHpaU0JwWmlBb2RIbHdaVzltSUdOb2RXNXJJRDA5UFNBblltOXZiR1ZoYmljZ2ZId2dkSGx3Wlc5bUlHTm9kVzVySUQwOVBTQW5iblZ0WW1WeUp5a2dlMXh1SUNBZ0lDOHZJRWhoYm1Sc1pTQndjbWx0YVhScGRtVnpJSFJvWVhRZ2RHaGxJRk52ZFhKalpVNXZaR1VnZDJsc2JDQjBhSEp2ZHlCMWNDQnZibHh1SUNBZ0lISmxkSFZ5YmlCamFIVnVheUFySUNjbk8xeHVJQ0I5WEc0Z0lISmxkSFZ5YmlCamFIVnVhenRjYm4xY2JseHVablZ1WTNScGIyNGdRMjlrWlVkbGJpaHpjbU5HYVd4bEtTQjdYRzRnSUhSb2FYTXVjM0pqUm1sc1pTQTlJSE55WTBacGJHVTdYRzRnSUhSb2FYTXVjMjkxY21ObElEMGdXMTA3WEc1OVhHNWNia052WkdWSFpXNHVjSEp2ZEc5MGVYQmxJRDBnZTF4dUlDQnBjMFZ0Y0hSNUtDa2dlMXh1SUNBZ0lISmxkSFZ5YmlBaGRHaHBjeTV6YjNWeVkyVXViR1Z1WjNSb08xeHVJQ0I5TEZ4dUlDQndjbVZ3Wlc1a09pQm1kVzVqZEdsdmJpaHpiM1Z5WTJVc0lHeHZZeWtnZTF4dUlDQWdJSFJvYVhNdWMyOTFjbU5sTG5WdWMyaHBablFvZEdocGN5NTNjbUZ3S0hOdmRYSmpaU3dnYkc5aktTazdYRzRnSUgwc1hHNGdJSEIxYzJnNklHWjFibU4wYVc5dUtITnZkWEpqWlN3Z2JHOWpLU0I3WEc0Z0lDQWdkR2hwY3k1emIzVnlZMlV1Y0hWemFDaDBhR2x6TG5keVlYQW9jMjkxY21ObExDQnNiMk1wS1R0Y2JpQWdmU3hjYmx4dUlDQnRaWEpuWlRvZ1puVnVZM1JwYjI0b0tTQjdYRzRnSUNBZ2JHVjBJSE52ZFhKalpTQTlJSFJvYVhNdVpXMXdkSGtvS1R0Y2JpQWdJQ0IwYUdsekxtVmhZMmdvWm5WdVkzUnBiMjRvYkdsdVpTa2dlMXh1SUNBZ0lDQWdjMjkxY21ObExtRmtaQ2hiSnlBZ0p5d2diR2x1WlN3Z0oxeGNiaWRkS1R0Y2JpQWdJQ0I5S1R0Y2JpQWdJQ0J5WlhSMWNtNGdjMjkxY21ObE8xeHVJQ0I5TEZ4dVhHNGdJR1ZoWTJnNklHWjFibU4wYVc5dUtHbDBaWElwSUh0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Dd2diR1Z1SUQwZ2RHaHBjeTV6YjNWeVkyVXViR1Z1WjNSb095QnBJRHdnYkdWdU95QnBLeXNwSUh0Y2JpQWdJQ0FnSUdsMFpYSW9kR2hwY3k1emIzVnlZMlZiYVYwcE8xeHVJQ0FnSUgxY2JpQWdmU3hjYmx4dUlDQmxiWEIwZVRvZ1puVnVZM1JwYjI0b0tTQjdYRzRnSUNBZ2JHVjBJR3h2WXlBOUlIUm9hWE11WTNWeWNtVnVkRXh2WTJGMGFXOXVJSHg4SUhzZ2MzUmhjblE2SUh0OUlIMDdYRzRnSUNBZ2NtVjBkWEp1SUc1bGR5QlRiM1Z5WTJWT2IyUmxLR3h2WXk1emRHRnlkQzVzYVc1bExDQnNiMk11YzNSaGNuUXVZMjlzZFcxdUxDQjBhR2x6TG5OeVkwWnBiR1VwTzF4dUlDQjlMRnh1SUNCM2NtRndPaUJtZFc1amRHbHZiaWhqYUhWdWF5d2diRzlqSUQwZ2RHaHBjeTVqZFhKeVpXNTBURzlqWVhScGIyNGdmSHdnZXlCemRHRnlkRG9nZTMwZ2ZTa2dlMXh1SUNBZ0lHbG1JQ2hqYUhWdWF5QnBibk4wWVc1alpXOW1JRk52ZFhKalpVNXZaR1VwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJqYUhWdWF6dGNiaUFnSUNCOVhHNWNiaUFnSUNCamFIVnVheUE5SUdOaGMzUkRhSFZ1YXloamFIVnVheXdnZEdocGN5d2diRzlqS1R0Y2JseHVJQ0FnSUhKbGRIVnliaUJ1WlhjZ1UyOTFjbU5sVG05a1pTaGNiaUFnSUNBZ0lHeHZZeTV6ZEdGeWRDNXNhVzVsTEZ4dUlDQWdJQ0FnYkc5akxuTjBZWEowTG1OdmJIVnRiaXhjYmlBZ0lDQWdJSFJvYVhNdWMzSmpSbWxzWlN4Y2JpQWdJQ0FnSUdOb2RXNXJYRzRnSUNBZ0tUdGNiaUFnZlN4Y2JseHVJQ0JtZFc1amRHbHZia05oYkd3NklHWjFibU4wYVc5dUtHWnVMQ0IwZVhCbExDQndZWEpoYlhNcElIdGNiaUFnSUNCd1lYSmhiWE1nUFNCMGFHbHpMbWRsYm1WeVlYUmxUR2x6ZENod1lYSmhiWE1wTzF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG5keVlYQW9XMlp1TENCMGVYQmxJRDhnSnk0bklDc2dkSGx3WlNBcklDY29KeUE2SUNjb0p5d2djR0Z5WVcxekxDQW5LU2RkS1R0Y2JpQWdmU3hjYmx4dUlDQnhkVzkwWldSVGRISnBibWM2SUdaMWJtTjBhVzl1S0hOMGNpa2dlMXh1SUNBZ0lISmxkSFZ5YmlBb1hHNGdJQ0FnSUNBblhDSW5JQ3RjYmlBZ0lDQWdJQ2h6ZEhJZ0t5QW5KeWxjYmlBZ0lDQWdJQ0FnTG5KbGNHeGhZMlVvTDF4Y1hGd3ZaeXdnSjF4Y1hGeGNYRnhjSnlsY2JpQWdJQ0FnSUNBZ0xuSmxjR3hoWTJVb0wxd2lMMmNzSUNkY1hGeGNYQ0luS1Z4dUlDQWdJQ0FnSUNBdWNtVndiR0ZqWlNndlhGeHVMMmNzSUNkY1hGeGNiaWNwWEc0Z0lDQWdJQ0FnSUM1eVpYQnNZV05sS0M5Y1hISXZaeXdnSjF4Y1hGeHlKeWxjYmlBZ0lDQWdJQ0FnTG5KbGNHeGhZMlVvTDF4Y2RUSXdNamd2Wnl3Z0oxeGNYRngxTWpBeU9DY3BJQzh2SUZCbGNpQkZZMjFoTFRJMk1pQTNMak1nS3lBM0xqZ3VORnh1SUNBZ0lDQWdJQ0F1Y21Wd2JHRmpaU2d2WEZ4MU1qQXlPUzluTENBblhGeGNYSFV5TURJNUp5a2dLMXh1SUNBZ0lDQWdKMXdpSjF4dUlDQWdJQ2s3WEc0Z0lIMHNYRzVjYmlBZ2IySnFaV04wVEdsMFpYSmhiRG9nWm5WdVkzUnBiMjRvYjJKcUtTQjdYRzRnSUNBZ2JHVjBJSEJoYVhKeklEMGdXMTA3WEc1Y2JpQWdJQ0JQWW1wbFkzUXVhMlY1Y3lodlltb3BMbVp2Y2tWaFkyZ29hMlY1SUQwK0lIdGNiaUFnSUNBZ0lHeGxkQ0IyWVd4MVpTQTlJR05oYzNSRGFIVnVheWh2WW1wYmEyVjVYU3dnZEdocGN5azdYRzRnSUNBZ0lDQnBaaUFvZG1Gc2RXVWdJVDA5SUNkMWJtUmxabWx1WldRbktTQjdYRzRnSUNBZ0lDQWdJSEJoYVhKekxuQjFjMmdvVzNSb2FYTXVjWFZ2ZEdWa1UzUnlhVzVuS0d0bGVTa3NJQ2M2Snl3Z2RtRnNkV1ZkS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5S1R0Y2JseHVJQ0FnSUd4bGRDQnlaWFFnUFNCMGFHbHpMbWRsYm1WeVlYUmxUR2x6ZENod1lXbHljeWs3WEc0Z0lDQWdjbVYwTG5CeVpYQmxibVFvSjNzbktUdGNiaUFnSUNCeVpYUXVZV1JrS0NkOUp5azdYRzRnSUNBZ2NtVjBkWEp1SUhKbGREdGNiaUFnZlN4Y2JseHVJQ0JuWlc1bGNtRjBaVXhwYzNRNklHWjFibU4wYVc5dUtHVnVkSEpwWlhNcElIdGNiaUFnSUNCc1pYUWdjbVYwSUQwZ2RHaHBjeTVsYlhCMGVTZ3BPMXh1WEc0Z0lDQWdabTl5SUNoc1pYUWdhU0E5SURBc0lHeGxiaUE5SUdWdWRISnBaWE11YkdWdVozUm9PeUJwSUR3Z2JHVnVPeUJwS3lzcElIdGNiaUFnSUNBZ0lHbG1JQ2hwS1NCN1hHNGdJQ0FnSUNBZ0lISmxkQzVoWkdRb0p5d25LVHRjYmlBZ0lDQWdJSDFjYmx4dUlDQWdJQ0FnY21WMExtRmtaQ2hqWVhOMFEyaDFibXNvWlc1MGNtbGxjMXRwWFN3Z2RHaHBjeWtwTzF4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQnlaWFE3WEc0Z0lIMHNYRzVjYmlBZ1oyVnVaWEpoZEdWQmNuSmhlVG9nWm5WdVkzUnBiMjRvWlc1MGNtbGxjeWtnZTF4dUlDQWdJR3hsZENCeVpYUWdQU0IwYUdsekxtZGxibVZ5WVhSbFRHbHpkQ2hsYm5SeWFXVnpLVHRjYmlBZ0lDQnlaWFF1Y0hKbGNHVnVaQ2duV3ljcE8xeHVJQ0FnSUhKbGRDNWhaR1FvSjEwbktUdGNibHh1SUNBZ0lISmxkSFZ5YmlCeVpYUTdYRzRnSUgxY2JuMDdYRzVjYm1WNGNHOXlkQ0JrWldaaGRXeDBJRU52WkdWSFpXNDdYRzRpWFgwPVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuLy8gaXN0YW5idWwgaWdub3JlIG5leHRcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG52YXIgX2Jhc2UgPSByZXF1aXJlKCcuLi9iYXNlJyk7XG5cbnZhciBfZXhjZXB0aW9uID0gcmVxdWlyZSgnLi4vZXhjZXB0aW9uJyk7XG5cbnZhciBfZXhjZXB0aW9uMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2V4Y2VwdGlvbik7XG5cbnZhciBfdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xuXG52YXIgX2NvZGVHZW4gPSByZXF1aXJlKCcuL2NvZGUtZ2VuJyk7XG5cbnZhciBfY29kZUdlbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb2RlR2VuKTtcblxuZnVuY3Rpb24gTGl0ZXJhbCh2YWx1ZSkge1xuICB0aGlzLnZhbHVlID0gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIEphdmFTY3JpcHRDb21waWxlcigpIHt9XG5cbkphdmFTY3JpcHRDb21waWxlci5wcm90b3R5cGUgPSB7XG4gIC8vIFBVQkxJQyBBUEk6IFlvdSBjYW4gb3ZlcnJpZGUgdGhlc2UgbWV0aG9kcyBpbiBhIHN1YmNsYXNzIHRvIHByb3ZpZGVcbiAgLy8gYWx0ZXJuYXRpdmUgY29tcGlsZWQgZm9ybXMgZm9yIG5hbWUgbG9va3VwIGFuZCBidWZmZXJpbmcgc2VtYW50aWNzXG4gIG5hbWVMb29rdXA6IGZ1bmN0aW9uIG5hbWVMb29rdXAocGFyZW50LCBuYW1lIC8qLCAgdHlwZSAqLykge1xuICAgIHJldHVybiB0aGlzLmludGVybmFsTmFtZUxvb2t1cChwYXJlbnQsIG5hbWUpO1xuICB9LFxuICBkZXB0aGVkTG9va3VwOiBmdW5jdGlvbiBkZXB0aGVkTG9va3VwKG5hbWUpIHtcbiAgICByZXR1cm4gW3RoaXMuYWxpYXNhYmxlKCdjb250YWluZXIubG9va3VwJyksICcoZGVwdGhzLCBcIicsIG5hbWUsICdcIiknXTtcbiAgfSxcblxuICBjb21waWxlckluZm86IGZ1bmN0aW9uIGNvbXBpbGVySW5mbygpIHtcbiAgICB2YXIgcmV2aXNpb24gPSBfYmFzZS5DT01QSUxFUl9SRVZJU0lPTixcbiAgICAgICAgdmVyc2lvbnMgPSBfYmFzZS5SRVZJU0lPTl9DSEFOR0VTW3JldmlzaW9uXTtcbiAgICByZXR1cm4gW3JldmlzaW9uLCB2ZXJzaW9uc107XG4gIH0sXG5cbiAgYXBwZW5kVG9CdWZmZXI6IGZ1bmN0aW9uIGFwcGVuZFRvQnVmZmVyKHNvdXJjZSwgbG9jYXRpb24sIGV4cGxpY2l0KSB7XG4gICAgLy8gRm9yY2UgYSBzb3VyY2UgYXMgdGhpcyBzaW1wbGlmaWVzIHRoZSBtZXJnZSBsb2dpYy5cbiAgICBpZiAoIV91dGlscy5pc0FycmF5KHNvdXJjZSkpIHtcbiAgICAgIHNvdXJjZSA9IFtzb3VyY2VdO1xuICAgIH1cbiAgICBzb3VyY2UgPSB0aGlzLnNvdXJjZS53cmFwKHNvdXJjZSwgbG9jYXRpb24pO1xuXG4gICAgaWYgKHRoaXMuZW52aXJvbm1lbnQuaXNTaW1wbGUpIHtcbiAgICAgIHJldHVybiBbJ3JldHVybiAnLCBzb3VyY2UsICc7J107XG4gICAgfSBlbHNlIGlmIChleHBsaWNpdCkge1xuICAgICAgLy8gVGhpcyBpcyBhIGNhc2Ugd2hlcmUgdGhlIGJ1ZmZlciBvcGVyYXRpb24gb2NjdXJzIGFzIGEgY2hpbGQgb2YgYW5vdGhlclxuICAgICAgLy8gY29uc3RydWN0LCBnZW5lcmFsbHkgYnJhY2VzLiBXZSBoYXZlIHRvIGV4cGxpY2l0bHkgb3V0cHV0IHRoZXNlIGJ1ZmZlclxuICAgICAgLy8gb3BlcmF0aW9ucyB0byBlbnN1cmUgdGhhdCB0aGUgZW1pdHRlZCBjb2RlIGdvZXMgaW4gdGhlIGNvcnJlY3QgbG9jYXRpb24uXG4gICAgICByZXR1cm4gWydidWZmZXIgKz0gJywgc291cmNlLCAnOyddO1xuICAgIH0gZWxzZSB7XG4gICAgICBzb3VyY2UuYXBwZW5kVG9CdWZmZXIgPSB0cnVlO1xuICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICB9XG4gIH0sXG5cbiAgaW5pdGlhbGl6ZUJ1ZmZlcjogZnVuY3Rpb24gaW5pdGlhbGl6ZUJ1ZmZlcigpIHtcbiAgICByZXR1cm4gdGhpcy5xdW90ZWRTdHJpbmcoJycpO1xuICB9LFxuICAvLyBFTkQgUFVCTElDIEFQSVxuICBpbnRlcm5hbE5hbWVMb29rdXA6IGZ1bmN0aW9uIGludGVybmFsTmFtZUxvb2t1cChwYXJlbnQsIG5hbWUpIHtcbiAgICB0aGlzLmxvb2t1cFByb3BlcnR5RnVuY3Rpb25Jc1VzZWQgPSB0cnVlO1xuICAgIHJldHVybiBbJ2xvb2t1cFByb3BlcnR5KCcsIHBhcmVudCwgJywnLCBKU09OLnN0cmluZ2lmeShuYW1lKSwgJyknXTtcbiAgfSxcblxuICBsb29rdXBQcm9wZXJ0eUZ1bmN0aW9uSXNVc2VkOiBmYWxzZSxcblxuICBjb21waWxlOiBmdW5jdGlvbiBjb21waWxlKGVudmlyb25tZW50LCBvcHRpb25zLCBjb250ZXh0LCBhc09iamVjdCkge1xuICAgIHRoaXMuZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIHRoaXMuc3RyaW5nUGFyYW1zID0gdGhpcy5vcHRpb25zLnN0cmluZ1BhcmFtcztcbiAgICB0aGlzLnRyYWNrSWRzID0gdGhpcy5vcHRpb25zLnRyYWNrSWRzO1xuICAgIHRoaXMucHJlY29tcGlsZSA9ICFhc09iamVjdDtcblxuICAgIHRoaXMubmFtZSA9IHRoaXMuZW52aXJvbm1lbnQubmFtZTtcbiAgICB0aGlzLmlzQ2hpbGQgPSAhIWNvbnRleHQ7XG4gICAgdGhpcy5jb250ZXh0ID0gY29udGV4dCB8fCB7XG4gICAgICBkZWNvcmF0b3JzOiBbXSxcbiAgICAgIHByb2dyYW1zOiBbXSxcbiAgICAgIGVudmlyb25tZW50czogW11cbiAgICB9O1xuXG4gICAgdGhpcy5wcmVhbWJsZSgpO1xuXG4gICAgdGhpcy5zdGFja1Nsb3QgPSAwO1xuICAgIHRoaXMuc3RhY2tWYXJzID0gW107XG4gICAgdGhpcy5hbGlhc2VzID0ge307XG4gICAgdGhpcy5yZWdpc3RlcnMgPSB7IGxpc3Q6IFtdIH07XG4gICAgdGhpcy5oYXNoZXMgPSBbXTtcbiAgICB0aGlzLmNvbXBpbGVTdGFjayA9IFtdO1xuICAgIHRoaXMuaW5saW5lU3RhY2sgPSBbXTtcbiAgICB0aGlzLmJsb2NrUGFyYW1zID0gW107XG5cbiAgICB0aGlzLmNvbXBpbGVDaGlsZHJlbihlbnZpcm9ubWVudCwgb3B0aW9ucyk7XG5cbiAgICB0aGlzLnVzZURlcHRocyA9IHRoaXMudXNlRGVwdGhzIHx8IGVudmlyb25tZW50LnVzZURlcHRocyB8fCBlbnZpcm9ubWVudC51c2VEZWNvcmF0b3JzIHx8IHRoaXMub3B0aW9ucy5jb21wYXQ7XG4gICAgdGhpcy51c2VCbG9ja1BhcmFtcyA9IHRoaXMudXNlQmxvY2tQYXJhbXMgfHwgZW52aXJvbm1lbnQudXNlQmxvY2tQYXJhbXM7XG5cbiAgICB2YXIgb3Bjb2RlcyA9IGVudmlyb25tZW50Lm9wY29kZXMsXG4gICAgICAgIG9wY29kZSA9IHVuZGVmaW5lZCxcbiAgICAgICAgZmlyc3RMb2MgPSB1bmRlZmluZWQsXG4gICAgICAgIGkgPSB1bmRlZmluZWQsXG4gICAgICAgIGwgPSB1bmRlZmluZWQ7XG5cbiAgICBmb3IgKGkgPSAwLCBsID0gb3Bjb2Rlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIG9wY29kZSA9IG9wY29kZXNbaV07XG5cbiAgICAgIHRoaXMuc291cmNlLmN1cnJlbnRMb2NhdGlvbiA9IG9wY29kZS5sb2M7XG4gICAgICBmaXJzdExvYyA9IGZpcnN0TG9jIHx8IG9wY29kZS5sb2M7XG4gICAgICB0aGlzW29wY29kZS5vcGNvZGVdLmFwcGx5KHRoaXMsIG9wY29kZS5hcmdzKTtcbiAgICB9XG5cbiAgICAvLyBGbHVzaCBhbnkgdHJhaWxpbmcgY29udGVudCB0aGF0IG1pZ2h0IGJlIHBlbmRpbmcuXG4gICAgdGhpcy5zb3VyY2UuY3VycmVudExvY2F0aW9uID0gZmlyc3RMb2M7XG4gICAgdGhpcy5wdXNoU291cmNlKCcnKTtcblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKHRoaXMuc3RhY2tTbG90IHx8IHRoaXMuaW5saW5lU3RhY2subGVuZ3RoIHx8IHRoaXMuY29tcGlsZVN0YWNrLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IF9leGNlcHRpb24yWydkZWZhdWx0J10oJ0NvbXBpbGUgY29tcGxldGVkIHdpdGggY29udGVudCBsZWZ0IG9uIHN0YWNrJyk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmRlY29yYXRvcnMuaXNFbXB0eSgpKSB7XG4gICAgICB0aGlzLnVzZURlY29yYXRvcnMgPSB0cnVlO1xuXG4gICAgICB0aGlzLmRlY29yYXRvcnMucHJlcGVuZChbJ3ZhciBkZWNvcmF0b3JzID0gY29udGFpbmVyLmRlY29yYXRvcnMsICcsIHRoaXMubG9va3VwUHJvcGVydHlGdW5jdGlvblZhckRlY2xhcmF0aW9uKCksICc7XFxuJ10pO1xuICAgICAgdGhpcy5kZWNvcmF0b3JzLnB1c2goJ3JldHVybiBmbjsnKTtcblxuICAgICAgaWYgKGFzT2JqZWN0KSB7XG4gICAgICAgIHRoaXMuZGVjb3JhdG9ycyA9IEZ1bmN0aW9uLmFwcGx5KHRoaXMsIFsnZm4nLCAncHJvcHMnLCAnY29udGFpbmVyJywgJ2RlcHRoMCcsICdkYXRhJywgJ2Jsb2NrUGFyYW1zJywgJ2RlcHRocycsIHRoaXMuZGVjb3JhdG9ycy5tZXJnZSgpXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRlY29yYXRvcnMucHJlcGVuZCgnZnVuY3Rpb24oZm4sIHByb3BzLCBjb250YWluZXIsIGRlcHRoMCwgZGF0YSwgYmxvY2tQYXJhbXMsIGRlcHRocykge1xcbicpO1xuICAgICAgICB0aGlzLmRlY29yYXRvcnMucHVzaCgnfVxcbicpO1xuICAgICAgICB0aGlzLmRlY29yYXRvcnMgPSB0aGlzLmRlY29yYXRvcnMubWVyZ2UoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kZWNvcmF0b3JzID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHZhciBmbiA9IHRoaXMuY3JlYXRlRnVuY3Rpb25Db250ZXh0KGFzT2JqZWN0KTtcbiAgICBpZiAoIXRoaXMuaXNDaGlsZCkge1xuICAgICAgdmFyIHJldCA9IHtcbiAgICAgICAgY29tcGlsZXI6IHRoaXMuY29tcGlsZXJJbmZvKCksXG4gICAgICAgIG1haW46IGZuXG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5kZWNvcmF0b3JzKSB7XG4gICAgICAgIHJldC5tYWluX2QgPSB0aGlzLmRlY29yYXRvcnM7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgY2FtZWxjYXNlXG4gICAgICAgIHJldC51c2VEZWNvcmF0b3JzID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIF9jb250ZXh0ID0gdGhpcy5jb250ZXh0O1xuICAgICAgdmFyIHByb2dyYW1zID0gX2NvbnRleHQucHJvZ3JhbXM7XG4gICAgICB2YXIgZGVjb3JhdG9ycyA9IF9jb250ZXh0LmRlY29yYXRvcnM7XG5cbiAgICAgIGZvciAoaSA9IDAsIGwgPSBwcm9ncmFtcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgaWYgKHByb2dyYW1zW2ldKSB7XG4gICAgICAgICAgcmV0W2ldID0gcHJvZ3JhbXNbaV07XG4gICAgICAgICAgaWYgKGRlY29yYXRvcnNbaV0pIHtcbiAgICAgICAgICAgIHJldFtpICsgJ19kJ10gPSBkZWNvcmF0b3JzW2ldO1xuICAgICAgICAgICAgcmV0LnVzZURlY29yYXRvcnMgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5lbnZpcm9ubWVudC51c2VQYXJ0aWFsKSB7XG4gICAgICAgIHJldC51c2VQYXJ0aWFsID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGF0YSkge1xuICAgICAgICByZXQudXNlRGF0YSA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy51c2VEZXB0aHMpIHtcbiAgICAgICAgcmV0LnVzZURlcHRocyA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy51c2VCbG9ja1BhcmFtcykge1xuICAgICAgICByZXQudXNlQmxvY2tQYXJhbXMgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5jb21wYXQpIHtcbiAgICAgICAgcmV0LmNvbXBhdCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmICghYXNPYmplY3QpIHtcbiAgICAgICAgcmV0LmNvbXBpbGVyID0gSlNPTi5zdHJpbmdpZnkocmV0LmNvbXBpbGVyKTtcblxuICAgICAgICB0aGlzLnNvdXJjZS5jdXJyZW50TG9jYXRpb24gPSB7IHN0YXJ0OiB7IGxpbmU6IDEsIGNvbHVtbjogMCB9IH07XG4gICAgICAgIHJldCA9IHRoaXMub2JqZWN0TGl0ZXJhbChyZXQpO1xuXG4gICAgICAgIGlmIChvcHRpb25zLnNyY05hbWUpIHtcbiAgICAgICAgICByZXQgPSByZXQudG9TdHJpbmdXaXRoU291cmNlTWFwKHsgZmlsZTogb3B0aW9ucy5kZXN0TmFtZSB9KTtcbiAgICAgICAgICByZXQubWFwID0gcmV0Lm1hcCAmJiByZXQubWFwLnRvU3RyaW5nKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0ID0gcmV0LnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldC5jb21waWxlck9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmbjtcbiAgICB9XG4gIH0sXG5cbiAgcHJlYW1ibGU6IGZ1bmN0aW9uIHByZWFtYmxlKCkge1xuICAgIC8vIHRyYWNrIHRoZSBsYXN0IGNvbnRleHQgcHVzaGVkIGludG8gcGxhY2UgdG8gYWxsb3cgc2tpcHBpbmcgdGhlXG4gICAgLy8gZ2V0Q29udGV4dCBvcGNvZGUgd2hlbiBpdCB3b3VsZCBiZSBhIG5vb3BcbiAgICB0aGlzLmxhc3RDb250ZXh0ID0gMDtcbiAgICB0aGlzLnNvdXJjZSA9IG5ldyBfY29kZUdlbjJbJ2RlZmF1bHQnXSh0aGlzLm9wdGlvbnMuc3JjTmFtZSk7XG4gICAgdGhpcy5kZWNvcmF0b3JzID0gbmV3IF9jb2RlR2VuMlsnZGVmYXVsdCddKHRoaXMub3B0aW9ucy5zcmNOYW1lKTtcbiAgfSxcblxuICBjcmVhdGVGdW5jdGlvbkNvbnRleHQ6IGZ1bmN0aW9uIGNyZWF0ZUZ1bmN0aW9uQ29udGV4dChhc09iamVjdCkge1xuICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG5cbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIHZhckRlY2xhcmF0aW9ucyA9ICcnO1xuXG4gICAgdmFyIGxvY2FscyA9IHRoaXMuc3RhY2tWYXJzLmNvbmNhdCh0aGlzLnJlZ2lzdGVycy5saXN0KTtcbiAgICBpZiAobG9jYWxzLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhckRlY2xhcmF0aW9ucyArPSAnLCAnICsgbG9jYWxzLmpvaW4oJywgJyk7XG4gICAgfVxuXG4gICAgLy8gR2VuZXJhdGUgbWluaW1pemVyIGFsaWFzIG1hcHBpbmdzXG4gICAgLy9cbiAgICAvLyBXaGVuIHVzaW5nIHRydWUgU291cmNlTm9kZXMsIHRoaXMgd2lsbCB1cGRhdGUgYWxsIHJlZmVyZW5jZXMgdG8gdGhlIGdpdmVuIGFsaWFzXG4gICAgLy8gYXMgdGhlIHNvdXJjZSBub2RlcyBhcmUgcmV1c2VkIGluIHNpdHUuIEZvciB0aGUgbm9uLXNvdXJjZSBub2RlIGNvbXBpbGF0aW9uIG1vZGUsXG4gICAgLy8gYWxpYXNlcyB3aWxsIG5vdCBiZSB1c2VkLCBidXQgdGhpcyBjYXNlIGlzIGFscmVhZHkgYmVpbmcgcnVuIG9uIHRoZSBjbGllbnQgYW5kXG4gICAgLy8gd2UgYXJlbid0IGNvbmNlcm4gYWJvdXQgbWluaW1pemluZyB0aGUgdGVtcGxhdGUgc2l6ZS5cbiAgICB2YXIgYWxpYXNDb3VudCA9IDA7XG4gICAgT2JqZWN0LmtleXModGhpcy5hbGlhc2VzKS5mb3JFYWNoKGZ1bmN0aW9uIChhbGlhcykge1xuICAgICAgdmFyIG5vZGUgPSBfdGhpcy5hbGlhc2VzW2FsaWFzXTtcbiAgICAgIGlmIChub2RlLmNoaWxkcmVuICYmIG5vZGUucmVmZXJlbmNlQ291bnQgPiAxKSB7XG4gICAgICAgIHZhckRlY2xhcmF0aW9ucyArPSAnLCBhbGlhcycgKyArK2FsaWFzQ291bnQgKyAnPScgKyBhbGlhcztcbiAgICAgICAgbm9kZS5jaGlsZHJlblswXSA9ICdhbGlhcycgKyBhbGlhc0NvdW50O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMubG9va3VwUHJvcGVydHlGdW5jdGlvbklzVXNlZCkge1xuICAgICAgdmFyRGVjbGFyYXRpb25zICs9ICcsICcgKyB0aGlzLmxvb2t1cFByb3BlcnR5RnVuY3Rpb25WYXJEZWNsYXJhdGlvbigpO1xuICAgIH1cblxuICAgIHZhciBwYXJhbXMgPSBbJ2NvbnRhaW5lcicsICdkZXB0aDAnLCAnaGVscGVycycsICdwYXJ0aWFscycsICdkYXRhJ107XG5cbiAgICBpZiAodGhpcy51c2VCbG9ja1BhcmFtcyB8fCB0aGlzLnVzZURlcHRocykge1xuICAgICAgcGFyYW1zLnB1c2goJ2Jsb2NrUGFyYW1zJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLnVzZURlcHRocykge1xuICAgICAgcGFyYW1zLnB1c2goJ2RlcHRocycpO1xuICAgIH1cblxuICAgIC8vIFBlcmZvcm0gYSBzZWNvbmQgcGFzcyBvdmVyIHRoZSBvdXRwdXQgdG8gbWVyZ2UgY29udGVudCB3aGVuIHBvc3NpYmxlXG4gICAgdmFyIHNvdXJjZSA9IHRoaXMubWVyZ2VTb3VyY2UodmFyRGVjbGFyYXRpb25zKTtcblxuICAgIGlmIChhc09iamVjdCkge1xuICAgICAgcGFyYW1zLnB1c2goc291cmNlKTtcblxuICAgICAgcmV0dXJuIEZ1bmN0aW9uLmFwcGx5KHRoaXMsIHBhcmFtcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnNvdXJjZS53cmFwKFsnZnVuY3Rpb24oJywgcGFyYW1zLmpvaW4oJywnKSwgJykge1xcbiAgJywgc291cmNlLCAnfSddKTtcbiAgICB9XG4gIH0sXG4gIG1lcmdlU291cmNlOiBmdW5jdGlvbiBtZXJnZVNvdXJjZSh2YXJEZWNsYXJhdGlvbnMpIHtcbiAgICB2YXIgaXNTaW1wbGUgPSB0aGlzLmVudmlyb25tZW50LmlzU2ltcGxlLFxuICAgICAgICBhcHBlbmRPbmx5ID0gIXRoaXMuZm9yY2VCdWZmZXIsXG4gICAgICAgIGFwcGVuZEZpcnN0ID0gdW5kZWZpbmVkLFxuICAgICAgICBzb3VyY2VTZWVuID0gdW5kZWZpbmVkLFxuICAgICAgICBidWZmZXJTdGFydCA9IHVuZGVmaW5lZCxcbiAgICAgICAgYnVmZmVyRW5kID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuc291cmNlLmVhY2goZnVuY3Rpb24gKGxpbmUpIHtcbiAgICAgIGlmIChsaW5lLmFwcGVuZFRvQnVmZmVyKSB7XG4gICAgICAgIGlmIChidWZmZXJTdGFydCkge1xuICAgICAgICAgIGxpbmUucHJlcGVuZCgnICArICcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJ1ZmZlclN0YXJ0ID0gbGluZTtcbiAgICAgICAgfVxuICAgICAgICBidWZmZXJFbmQgPSBsaW5lO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGJ1ZmZlclN0YXJ0KSB7XG4gICAgICAgICAgaWYgKCFzb3VyY2VTZWVuKSB7XG4gICAgICAgICAgICBhcHBlbmRGaXJzdCA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJ1ZmZlclN0YXJ0LnByZXBlbmQoJ2J1ZmZlciArPSAnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnVmZmVyRW5kLmFkZCgnOycpO1xuICAgICAgICAgIGJ1ZmZlclN0YXJ0ID0gYnVmZmVyRW5kID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgc291cmNlU2VlbiA9IHRydWU7XG4gICAgICAgIGlmICghaXNTaW1wbGUpIHtcbiAgICAgICAgICBhcHBlbmRPbmx5ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChhcHBlbmRPbmx5KSB7XG4gICAgICBpZiAoYnVmZmVyU3RhcnQpIHtcbiAgICAgICAgYnVmZmVyU3RhcnQucHJlcGVuZCgncmV0dXJuICcpO1xuICAgICAgICBidWZmZXJFbmQuYWRkKCc7Jyk7XG4gICAgICB9IGVsc2UgaWYgKCFzb3VyY2VTZWVuKSB7XG4gICAgICAgIHRoaXMuc291cmNlLnB1c2goJ3JldHVybiBcIlwiOycpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXJEZWNsYXJhdGlvbnMgKz0gJywgYnVmZmVyID0gJyArIChhcHBlbmRGaXJzdCA/ICcnIDogdGhpcy5pbml0aWFsaXplQnVmZmVyKCkpO1xuXG4gICAgICBpZiAoYnVmZmVyU3RhcnQpIHtcbiAgICAgICAgYnVmZmVyU3RhcnQucHJlcGVuZCgncmV0dXJuIGJ1ZmZlciArICcpO1xuICAgICAgICBidWZmZXJFbmQuYWRkKCc7Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNvdXJjZS5wdXNoKCdyZXR1cm4gYnVmZmVyOycpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2YXJEZWNsYXJhdGlvbnMpIHtcbiAgICAgIHRoaXMuc291cmNlLnByZXBlbmQoJ3ZhciAnICsgdmFyRGVjbGFyYXRpb25zLnN1YnN0cmluZygyKSArIChhcHBlbmRGaXJzdCA/ICcnIDogJztcXG4nKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc291cmNlLm1lcmdlKCk7XG4gIH0sXG5cbiAgbG9va3VwUHJvcGVydHlGdW5jdGlvblZhckRlY2xhcmF0aW9uOiBmdW5jdGlvbiBsb29rdXBQcm9wZXJ0eUZ1bmN0aW9uVmFyRGVjbGFyYXRpb24oKSB7XG4gICAgcmV0dXJuICdcXG4gICAgICBsb29rdXBQcm9wZXJ0eSA9IGNvbnRhaW5lci5sb29rdXBQcm9wZXJ0eSB8fCBmdW5jdGlvbihwYXJlbnQsIHByb3BlcnR5TmFtZSkge1xcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwYXJlbnQsIHByb3BlcnR5TmFtZSkpIHtcXG4gICAgICAgICAgcmV0dXJuIHBhcmVudFtwcm9wZXJ0eU5hbWVdO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxcbiAgICB9XFxuICAgICcudHJpbSgpO1xuICB9LFxuXG4gIC8vIFtibG9ja1ZhbHVlXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiBoYXNoLCBpbnZlcnNlLCBwcm9ncmFtLCB2YWx1ZVxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHJldHVybiB2YWx1ZSBvZiBibG9ja0hlbHBlck1pc3NpbmdcbiAgLy9cbiAgLy8gVGhlIHB1cnBvc2Ugb2YgdGhpcyBvcGNvZGUgaXMgdG8gdGFrZSBhIGJsb2NrIG9mIHRoZSBmb3JtXG4gIC8vIGB7eyN0aGlzLmZvb319Li4ue3svdGhpcy5mb299fWAsIHJlc29sdmUgdGhlIHZhbHVlIG9mIGBmb29gLCBhbmRcbiAgLy8gcmVwbGFjZSBpdCBvbiB0aGUgc3RhY2sgd2l0aCB0aGUgcmVzdWx0IG9mIHByb3Blcmx5XG4gIC8vIGludm9raW5nIGJsb2NrSGVscGVyTWlzc2luZy5cbiAgYmxvY2tWYWx1ZTogZnVuY3Rpb24gYmxvY2tWYWx1ZShuYW1lKSB7XG4gICAgdmFyIGJsb2NrSGVscGVyTWlzc2luZyA9IHRoaXMuYWxpYXNhYmxlKCdjb250YWluZXIuaG9va3MuYmxvY2tIZWxwZXJNaXNzaW5nJyksXG4gICAgICAgIHBhcmFtcyA9IFt0aGlzLmNvbnRleHROYW1lKDApXTtcbiAgICB0aGlzLnNldHVwSGVscGVyQXJncyhuYW1lLCAwLCBwYXJhbXMpO1xuXG4gICAgdmFyIGJsb2NrTmFtZSA9IHRoaXMucG9wU3RhY2soKTtcbiAgICBwYXJhbXMuc3BsaWNlKDEsIDAsIGJsb2NrTmFtZSk7XG5cbiAgICB0aGlzLnB1c2godGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKGJsb2NrSGVscGVyTWlzc2luZywgJ2NhbGwnLCBwYXJhbXMpKTtcbiAgfSxcblxuICAvLyBbYW1iaWd1b3VzQmxvY2tWYWx1ZV1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogaGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgdmFsdWVcbiAgLy8gQ29tcGlsZXIgdmFsdWUsIGJlZm9yZTogbGFzdEhlbHBlcj12YWx1ZSBvZiBsYXN0IGZvdW5kIGhlbHBlciwgaWYgYW55XG4gIC8vIE9uIHN0YWNrLCBhZnRlciwgaWYgbm8gbGFzdEhlbHBlcjogc2FtZSBhcyBbYmxvY2tWYWx1ZV1cbiAgLy8gT24gc3RhY2ssIGFmdGVyLCBpZiBsYXN0SGVscGVyOiB2YWx1ZVxuICBhbWJpZ3VvdXNCbG9ja1ZhbHVlOiBmdW5jdGlvbiBhbWJpZ3VvdXNCbG9ja1ZhbHVlKCkge1xuICAgIC8vIFdlJ3JlIGJlaW5nIGEgYml0IGNoZWVreSBhbmQgcmV1c2luZyB0aGUgb3B0aW9ucyB2YWx1ZSBmcm9tIHRoZSBwcmlvciBleGVjXG4gICAgdmFyIGJsb2NrSGVscGVyTWlzc2luZyA9IHRoaXMuYWxpYXNhYmxlKCdjb250YWluZXIuaG9va3MuYmxvY2tIZWxwZXJNaXNzaW5nJyksXG4gICAgICAgIHBhcmFtcyA9IFt0aGlzLmNvbnRleHROYW1lKDApXTtcbiAgICB0aGlzLnNldHVwSGVscGVyQXJncygnJywgMCwgcGFyYW1zLCB0cnVlKTtcblxuICAgIHRoaXMuZmx1c2hJbmxpbmUoKTtcblxuICAgIHZhciBjdXJyZW50ID0gdGhpcy50b3BTdGFjaygpO1xuICAgIHBhcmFtcy5zcGxpY2UoMSwgMCwgY3VycmVudCk7XG5cbiAgICB0aGlzLnB1c2hTb3VyY2UoWydpZiAoIScsIHRoaXMubGFzdEhlbHBlciwgJykgeyAnLCBjdXJyZW50LCAnID0gJywgdGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKGJsb2NrSGVscGVyTWlzc2luZywgJ2NhbGwnLCBwYXJhbXMpLCAnfSddKTtcbiAgfSxcblxuICAvLyBbYXBwZW5kQ29udGVudF1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uXG4gIC8vIE9uIHN0YWNrLCBhZnRlcjogLi4uXG4gIC8vXG4gIC8vIEFwcGVuZHMgdGhlIHN0cmluZyB2YWx1ZSBvZiBgY29udGVudGAgdG8gdGhlIGN1cnJlbnQgYnVmZmVyXG4gIGFwcGVuZENvbnRlbnQ6IGZ1bmN0aW9uIGFwcGVuZENvbnRlbnQoY29udGVudCkge1xuICAgIGlmICh0aGlzLnBlbmRpbmdDb250ZW50KSB7XG4gICAgICBjb250ZW50ID0gdGhpcy5wZW5kaW5nQ29udGVudCArIGNvbnRlbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGVuZGluZ0xvY2F0aW9uID0gdGhpcy5zb3VyY2UuY3VycmVudExvY2F0aW9uO1xuICAgIH1cblxuICAgIHRoaXMucGVuZGluZ0NvbnRlbnQgPSBjb250ZW50O1xuICB9LFxuXG4gIC8vIFthcHBlbmRdXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IHZhbHVlLCAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiAuLi5cbiAgLy9cbiAgLy8gQ29lcmNlcyBgdmFsdWVgIHRvIGEgU3RyaW5nIGFuZCBhcHBlbmRzIGl0IHRvIHRoZSBjdXJyZW50IGJ1ZmZlci5cbiAgLy9cbiAgLy8gSWYgYHZhbHVlYCBpcyB0cnV0aHksIG9yIDAsIGl0IGlzIGNvZXJjZWQgaW50byBhIHN0cmluZyBhbmQgYXBwZW5kZWRcbiAgLy8gT3RoZXJ3aXNlLCB0aGUgZW1wdHkgc3RyaW5nIGlzIGFwcGVuZGVkXG4gIGFwcGVuZDogZnVuY3Rpb24gYXBwZW5kKCkge1xuICAgIGlmICh0aGlzLmlzSW5saW5lKCkpIHtcbiAgICAgIHRoaXMucmVwbGFjZVN0YWNrKGZ1bmN0aW9uIChjdXJyZW50KSB7XG4gICAgICAgIHJldHVybiBbJyAhPSBudWxsID8gJywgY3VycmVudCwgJyA6IFwiXCInXTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnB1c2hTb3VyY2UodGhpcy5hcHBlbmRUb0J1ZmZlcih0aGlzLnBvcFN0YWNrKCkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGxvY2FsID0gdGhpcy5wb3BTdGFjaygpO1xuICAgICAgdGhpcy5wdXNoU291cmNlKFsnaWYgKCcsIGxvY2FsLCAnICE9IG51bGwpIHsgJywgdGhpcy5hcHBlbmRUb0J1ZmZlcihsb2NhbCwgdW5kZWZpbmVkLCB0cnVlKSwgJyB9J10pO1xuICAgICAgaWYgKHRoaXMuZW52aXJvbm1lbnQuaXNTaW1wbGUpIHtcbiAgICAgICAgdGhpcy5wdXNoU291cmNlKFsnZWxzZSB7ICcsIHRoaXMuYXBwZW5kVG9CdWZmZXIoXCInJ1wiLCB1bmRlZmluZWQsIHRydWUpLCAnIH0nXSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIC8vIFthcHBlbmRFc2NhcGVkXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiB2YWx1ZSwgLi4uXG4gIC8vIE9uIHN0YWNrLCBhZnRlcjogLi4uXG4gIC8vXG4gIC8vIEVzY2FwZSBgdmFsdWVgIGFuZCBhcHBlbmQgaXQgdG8gdGhlIGJ1ZmZlclxuICBhcHBlbmRFc2NhcGVkOiBmdW5jdGlvbiBhcHBlbmRFc2NhcGVkKCkge1xuICAgIHRoaXMucHVzaFNvdXJjZSh0aGlzLmFwcGVuZFRvQnVmZmVyKFt0aGlzLmFsaWFzYWJsZSgnY29udGFpbmVyLmVzY2FwZUV4cHJlc3Npb24nKSwgJygnLCB0aGlzLnBvcFN0YWNrKCksICcpJ10pKTtcbiAgfSxcblxuICAvLyBbZ2V0Q29udGV4dF1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uXG4gIC8vIE9uIHN0YWNrLCBhZnRlcjogLi4uXG4gIC8vIENvbXBpbGVyIHZhbHVlLCBhZnRlcjogbGFzdENvbnRleHQ9ZGVwdGhcbiAgLy9cbiAgLy8gU2V0IHRoZSB2YWx1ZSBvZiB0aGUgYGxhc3RDb250ZXh0YCBjb21waWxlciB2YWx1ZSB0byB0aGUgZGVwdGhcbiAgZ2V0Q29udGV4dDogZnVuY3Rpb24gZ2V0Q29udGV4dChkZXB0aCkge1xuICAgIHRoaXMubGFzdENvbnRleHQgPSBkZXB0aDtcbiAgfSxcblxuICAvLyBbcHVzaENvbnRleHRdXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLlxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IGN1cnJlbnRDb250ZXh0LCAuLi5cbiAgLy9cbiAgLy8gUHVzaGVzIHRoZSB2YWx1ZSBvZiB0aGUgY3VycmVudCBjb250ZXh0IG9udG8gdGhlIHN0YWNrLlxuICBwdXNoQ29udGV4dDogZnVuY3Rpb24gcHVzaENvbnRleHQoKSB7XG4gICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKHRoaXMuY29udGV4dE5hbWUodGhpcy5sYXN0Q29udGV4dCkpO1xuICB9LFxuXG4gIC8vIFtsb29rdXBPbkNvbnRleHRdXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLlxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IGN1cnJlbnRDb250ZXh0W25hbWVdLCAuLi5cbiAgLy9cbiAgLy8gTG9va3MgdXAgdGhlIHZhbHVlIG9mIGBuYW1lYCBvbiB0aGUgY3VycmVudCBjb250ZXh0IGFuZCBwdXNoZXNcbiAgLy8gaXQgb250byB0aGUgc3RhY2suXG4gIGxvb2t1cE9uQ29udGV4dDogZnVuY3Rpb24gbG9va3VwT25Db250ZXh0KHBhcnRzLCBmYWxzeSwgc3RyaWN0LCBzY29wZWQpIHtcbiAgICB2YXIgaSA9IDA7XG5cbiAgICBpZiAoIXNjb3BlZCAmJiB0aGlzLm9wdGlvbnMuY29tcGF0ICYmICF0aGlzLmxhc3RDb250ZXh0KSB7XG4gICAgICAvLyBUaGUgZGVwdGhlZCBxdWVyeSBpcyBleHBlY3RlZCB0byBoYW5kbGUgdGhlIHVuZGVmaW5lZCBsb2dpYyBmb3IgdGhlIHJvb3QgbGV2ZWwgdGhhdFxuICAgICAgLy8gaXMgaW1wbGVtZW50ZWQgYmVsb3csIHNvIHdlIGV2YWx1YXRlIHRoYXQgZGlyZWN0bHkgaW4gY29tcGF0IG1vZGVcbiAgICAgIHRoaXMucHVzaCh0aGlzLmRlcHRoZWRMb29rdXAocGFydHNbaSsrXSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnB1c2hDb250ZXh0KCk7XG4gICAgfVxuXG4gICAgdGhpcy5yZXNvbHZlUGF0aCgnY29udGV4dCcsIHBhcnRzLCBpLCBmYWxzeSwgc3RyaWN0KTtcbiAgfSxcblxuICAvLyBbbG9va3VwQmxvY2tQYXJhbV1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogLi4uXG4gIC8vIE9uIHN0YWNrLCBhZnRlcjogYmxvY2tQYXJhbVtuYW1lXSwgLi4uXG4gIC8vXG4gIC8vIExvb2tzIHVwIHRoZSB2YWx1ZSBvZiBgcGFydHNgIG9uIHRoZSBnaXZlbiBibG9jayBwYXJhbSBhbmQgcHVzaGVzXG4gIC8vIGl0IG9udG8gdGhlIHN0YWNrLlxuICBsb29rdXBCbG9ja1BhcmFtOiBmdW5jdGlvbiBsb29rdXBCbG9ja1BhcmFtKGJsb2NrUGFyYW1JZCwgcGFydHMpIHtcbiAgICB0aGlzLnVzZUJsb2NrUGFyYW1zID0gdHJ1ZTtcblxuICAgIHRoaXMucHVzaChbJ2Jsb2NrUGFyYW1zWycsIGJsb2NrUGFyYW1JZFswXSwgJ11bJywgYmxvY2tQYXJhbUlkWzFdLCAnXSddKTtcbiAgICB0aGlzLnJlc29sdmVQYXRoKCdjb250ZXh0JywgcGFydHMsIDEpO1xuICB9LFxuXG4gIC8vIFtsb29rdXBEYXRhXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiBkYXRhLCAuLi5cbiAgLy9cbiAgLy8gUHVzaCB0aGUgZGF0YSBsb29rdXAgb3BlcmF0b3JcbiAgbG9va3VwRGF0YTogZnVuY3Rpb24gbG9va3VwRGF0YShkZXB0aCwgcGFydHMsIHN0cmljdCkge1xuICAgIGlmICghZGVwdGgpIHtcbiAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCgnZGF0YScpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwoJ2NvbnRhaW5lci5kYXRhKGRhdGEsICcgKyBkZXB0aCArICcpJyk7XG4gICAgfVxuXG4gICAgdGhpcy5yZXNvbHZlUGF0aCgnZGF0YScsIHBhcnRzLCAwLCB0cnVlLCBzdHJpY3QpO1xuICB9LFxuXG4gIHJlc29sdmVQYXRoOiBmdW5jdGlvbiByZXNvbHZlUGF0aCh0eXBlLCBwYXJ0cywgaSwgZmFsc3ksIHN0cmljdCkge1xuICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG5cbiAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgIGlmICh0aGlzLm9wdGlvbnMuc3RyaWN0IHx8IHRoaXMub3B0aW9ucy5hc3N1bWVPYmplY3RzKSB7XG4gICAgICB0aGlzLnB1c2goc3RyaWN0TG9va3VwKHRoaXMub3B0aW9ucy5zdHJpY3QgJiYgc3RyaWN0LCB0aGlzLCBwYXJ0cywgdHlwZSkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBsZW4gPSBwYXJ0cy5sZW5ndGg7XG4gICAgZm9yICg7IGkgPCBsZW47IGkrKykge1xuICAgICAgLyogZXNsaW50LWRpc2FibGUgbm8tbG9vcC1mdW5jICovXG4gICAgICB0aGlzLnJlcGxhY2VTdGFjayhmdW5jdGlvbiAoY3VycmVudCkge1xuICAgICAgICB2YXIgbG9va3VwID0gX3RoaXMyLm5hbWVMb29rdXAoY3VycmVudCwgcGFydHNbaV0sIHR5cGUpO1xuICAgICAgICAvLyBXZSB3YW50IHRvIGVuc3VyZSB0aGF0IHplcm8gYW5kIGZhbHNlIGFyZSBoYW5kbGVkIHByb3Blcmx5IGlmIHRoZSBjb250ZXh0IChmYWxzeSBmbGFnKVxuICAgICAgICAvLyBuZWVkcyB0byBoYXZlIHRoZSBzcGVjaWFsIGhhbmRsaW5nIGZvciB0aGVzZSB2YWx1ZXMuXG4gICAgICAgIGlmICghZmFsc3kpIHtcbiAgICAgICAgICByZXR1cm4gWycgIT0gbnVsbCA/ICcsIGxvb2t1cCwgJyA6ICcsIGN1cnJlbnRdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIE90aGVyd2lzZSB3ZSBjYW4gdXNlIGdlbmVyaWMgZmFsc3kgaGFuZGxpbmdcbiAgICAgICAgICByZXR1cm4gWycgJiYgJywgbG9va3VwXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLWxvb3AtZnVuYyAqL1xuICAgIH1cbiAgfSxcblxuICAvLyBbcmVzb2x2ZVBvc3NpYmxlTGFtYmRhXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiB2YWx1ZSwgLi4uXG4gIC8vIE9uIHN0YWNrLCBhZnRlcjogcmVzb2x2ZWQgdmFsdWUsIC4uLlxuICAvL1xuICAvLyBJZiB0aGUgYHZhbHVlYCBpcyBhIGxhbWJkYSwgcmVwbGFjZSBpdCBvbiB0aGUgc3RhY2sgYnlcbiAgLy8gdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgbGFtYmRhXG4gIHJlc29sdmVQb3NzaWJsZUxhbWJkYTogZnVuY3Rpb24gcmVzb2x2ZVBvc3NpYmxlTGFtYmRhKCkge1xuICAgIHRoaXMucHVzaChbdGhpcy5hbGlhc2FibGUoJ2NvbnRhaW5lci5sYW1iZGEnKSwgJygnLCB0aGlzLnBvcFN0YWNrKCksICcsICcsIHRoaXMuY29udGV4dE5hbWUoMCksICcpJ10pO1xuICB9LFxuXG4gIC8vIFtwdXNoU3RyaW5nUGFyYW1dXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLlxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHN0cmluZywgY3VycmVudENvbnRleHQsIC4uLlxuICAvL1xuICAvLyBUaGlzIG9wY29kZSBpcyBkZXNpZ25lZCBmb3IgdXNlIGluIHN0cmluZyBtb2RlLCB3aGljaFxuICAvLyBwcm92aWRlcyB0aGUgc3RyaW5nIHZhbHVlIG9mIGEgcGFyYW1ldGVyIGFsb25nIHdpdGggaXRzXG4gIC8vIGRlcHRoIHJhdGhlciB0aGFuIHJlc29sdmluZyBpdCBpbW1lZGlhdGVseS5cbiAgcHVzaFN0cmluZ1BhcmFtOiBmdW5jdGlvbiBwdXNoU3RyaW5nUGFyYW0oc3RyaW5nLCB0eXBlKSB7XG4gICAgdGhpcy5wdXNoQ29udGV4dCgpO1xuICAgIHRoaXMucHVzaFN0cmluZyh0eXBlKTtcblxuICAgIC8vIElmIGl0J3MgYSBzdWJleHByZXNzaW9uLCB0aGUgc3RyaW5nIHJlc3VsdFxuICAgIC8vIHdpbGwgYmUgcHVzaGVkIGFmdGVyIHRoaXMgb3Bjb2RlLlxuICAgIGlmICh0eXBlICE9PSAnU3ViRXhwcmVzc2lvbicpIHtcbiAgICAgIGlmICh0eXBlb2Ygc3RyaW5nID09PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLnB1c2hTdHJpbmcoc3RyaW5nKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbChzdHJpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBlbXB0eUhhc2g6IGZ1bmN0aW9uIGVtcHR5SGFzaChvbWl0RW1wdHkpIHtcbiAgICBpZiAodGhpcy50cmFja0lkcykge1xuICAgICAgdGhpcy5wdXNoKCd7fScpOyAvLyBoYXNoSWRzXG4gICAgfVxuICAgIGlmICh0aGlzLnN0cmluZ1BhcmFtcykge1xuICAgICAgdGhpcy5wdXNoKCd7fScpOyAvLyBoYXNoQ29udGV4dHNcbiAgICAgIHRoaXMucHVzaCgne30nKTsgLy8gaGFzaFR5cGVzXG4gICAgfVxuICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbChvbWl0RW1wdHkgPyAndW5kZWZpbmVkJyA6ICd7fScpO1xuICB9LFxuICBwdXNoSGFzaDogZnVuY3Rpb24gcHVzaEhhc2goKSB7XG4gICAgaWYgKHRoaXMuaGFzaCkge1xuICAgICAgdGhpcy5oYXNoZXMucHVzaCh0aGlzLmhhc2gpO1xuICAgIH1cbiAgICB0aGlzLmhhc2ggPSB7IHZhbHVlczoge30sIHR5cGVzOiBbXSwgY29udGV4dHM6IFtdLCBpZHM6IFtdIH07XG4gIH0sXG4gIHBvcEhhc2g6IGZ1bmN0aW9uIHBvcEhhc2goKSB7XG4gICAgdmFyIGhhc2ggPSB0aGlzLmhhc2g7XG4gICAgdGhpcy5oYXNoID0gdGhpcy5oYXNoZXMucG9wKCk7XG5cbiAgICBpZiAodGhpcy50cmFja0lkcykge1xuICAgICAgdGhpcy5wdXNoKHRoaXMub2JqZWN0TGl0ZXJhbChoYXNoLmlkcykpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdHJpbmdQYXJhbXMpIHtcbiAgICAgIHRoaXMucHVzaCh0aGlzLm9iamVjdExpdGVyYWwoaGFzaC5jb250ZXh0cykpO1xuICAgICAgdGhpcy5wdXNoKHRoaXMub2JqZWN0TGl0ZXJhbChoYXNoLnR5cGVzKSk7XG4gICAgfVxuXG4gICAgdGhpcy5wdXNoKHRoaXMub2JqZWN0TGl0ZXJhbChoYXNoLnZhbHVlcykpO1xuICB9LFxuXG4gIC8vIFtwdXNoU3RyaW5nXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiBxdW90ZWRTdHJpbmcoc3RyaW5nKSwgLi4uXG4gIC8vXG4gIC8vIFB1c2ggYSBxdW90ZWQgdmVyc2lvbiBvZiBgc3RyaW5nYCBvbnRvIHRoZSBzdGFja1xuICBwdXNoU3RyaW5nOiBmdW5jdGlvbiBwdXNoU3RyaW5nKHN0cmluZykge1xuICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCh0aGlzLnF1b3RlZFN0cmluZyhzdHJpbmcpKTtcbiAgfSxcblxuICAvLyBbcHVzaExpdGVyYWxdXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IC4uLlxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHZhbHVlLCAuLi5cbiAgLy9cbiAgLy8gUHVzaGVzIGEgdmFsdWUgb250byB0aGUgc3RhY2suIFRoaXMgb3BlcmF0aW9uIHByZXZlbnRzXG4gIC8vIHRoZSBjb21waWxlciBmcm9tIGNyZWF0aW5nIGEgdGVtcG9yYXJ5IHZhcmlhYmxlIHRvIGhvbGRcbiAgLy8gaXQuXG4gIHB1c2hMaXRlcmFsOiBmdW5jdGlvbiBwdXNoTGl0ZXJhbCh2YWx1ZSkge1xuICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCh2YWx1ZSk7XG4gIH0sXG5cbiAgLy8gW3B1c2hQcm9ncmFtXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiBwcm9ncmFtKGd1aWQpLCAuLi5cbiAgLy9cbiAgLy8gUHVzaCBhIHByb2dyYW0gZXhwcmVzc2lvbiBvbnRvIHRoZSBzdGFjay4gVGhpcyB0YWtlc1xuICAvLyBhIGNvbXBpbGUtdGltZSBndWlkIGFuZCBjb252ZXJ0cyBpdCBpbnRvIGEgcnVudGltZS1hY2Nlc3NpYmxlXG4gIC8vIGV4cHJlc3Npb24uXG4gIHB1c2hQcm9ncmFtOiBmdW5jdGlvbiBwdXNoUHJvZ3JhbShndWlkKSB7XG4gICAgaWYgKGd1aWQgIT0gbnVsbCkge1xuICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKHRoaXMucHJvZ3JhbUV4cHJlc3Npb24oZ3VpZCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwobnVsbCk7XG4gICAgfVxuICB9LFxuXG4gIC8vIFtyZWdpc3RlckRlY29yYXRvcl1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogaGFzaCwgcHJvZ3JhbSwgcGFyYW1zLi4uLCAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiAuLi5cbiAgLy9cbiAgLy8gUG9wcyBvZmYgdGhlIGRlY29yYXRvcidzIHBhcmFtZXRlcnMsIGludm9rZXMgdGhlIGRlY29yYXRvcixcbiAgLy8gYW5kIGluc2VydHMgdGhlIGRlY29yYXRvciBpbnRvIHRoZSBkZWNvcmF0b3JzIGxpc3QuXG4gIHJlZ2lzdGVyRGVjb3JhdG9yOiBmdW5jdGlvbiByZWdpc3RlckRlY29yYXRvcihwYXJhbVNpemUsIG5hbWUpIHtcbiAgICB2YXIgZm91bmREZWNvcmF0b3IgPSB0aGlzLm5hbWVMb29rdXAoJ2RlY29yYXRvcnMnLCBuYW1lLCAnZGVjb3JhdG9yJyksXG4gICAgICAgIG9wdGlvbnMgPSB0aGlzLnNldHVwSGVscGVyQXJncyhuYW1lLCBwYXJhbVNpemUpO1xuXG4gICAgdGhpcy5kZWNvcmF0b3JzLnB1c2goWydmbiA9ICcsIHRoaXMuZGVjb3JhdG9ycy5mdW5jdGlvbkNhbGwoZm91bmREZWNvcmF0b3IsICcnLCBbJ2ZuJywgJ3Byb3BzJywgJ2NvbnRhaW5lcicsIG9wdGlvbnNdKSwgJyB8fCBmbjsnXSk7XG4gIH0sXG5cbiAgLy8gW2ludm9rZUhlbHBlcl1cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogaGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgcGFyYW1zLi4uLCAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiByZXN1bHQgb2YgaGVscGVyIGludm9jYXRpb25cbiAgLy9cbiAgLy8gUG9wcyBvZmYgdGhlIGhlbHBlcidzIHBhcmFtZXRlcnMsIGludm9rZXMgdGhlIGhlbHBlcixcbiAgLy8gYW5kIHB1c2hlcyB0aGUgaGVscGVyJ3MgcmV0dXJuIHZhbHVlIG9udG8gdGhlIHN0YWNrLlxuICAvL1xuICAvLyBJZiB0aGUgaGVscGVyIGlzIG5vdCBmb3VuZCwgYGhlbHBlck1pc3NpbmdgIGlzIGNhbGxlZC5cbiAgaW52b2tlSGVscGVyOiBmdW5jdGlvbiBpbnZva2VIZWxwZXIocGFyYW1TaXplLCBuYW1lLCBpc1NpbXBsZSkge1xuICAgIHZhciBub25IZWxwZXIgPSB0aGlzLnBvcFN0YWNrKCksXG4gICAgICAgIGhlbHBlciA9IHRoaXMuc2V0dXBIZWxwZXIocGFyYW1TaXplLCBuYW1lKTtcblxuICAgIHZhciBwb3NzaWJsZUZ1bmN0aW9uQ2FsbHMgPSBbXTtcblxuICAgIGlmIChpc1NpbXBsZSkge1xuICAgICAgLy8gZGlyZWN0IGNhbGwgdG8gaGVscGVyXG4gICAgICBwb3NzaWJsZUZ1bmN0aW9uQ2FsbHMucHVzaChoZWxwZXIubmFtZSk7XG4gICAgfVxuICAgIC8vIGNhbGwgYSBmdW5jdGlvbiBmcm9tIHRoZSBpbnB1dCBvYmplY3RcbiAgICBwb3NzaWJsZUZ1bmN0aW9uQ2FsbHMucHVzaChub25IZWxwZXIpO1xuICAgIGlmICghdGhpcy5vcHRpb25zLnN0cmljdCkge1xuICAgICAgcG9zc2libGVGdW5jdGlvbkNhbGxzLnB1c2godGhpcy5hbGlhc2FibGUoJ2NvbnRhaW5lci5ob29rcy5oZWxwZXJNaXNzaW5nJykpO1xuICAgIH1cblxuICAgIHZhciBmdW5jdGlvbkxvb2t1cENvZGUgPSBbJygnLCB0aGlzLml0ZW1zU2VwYXJhdGVkQnkocG9zc2libGVGdW5jdGlvbkNhbGxzLCAnfHwnKSwgJyknXTtcbiAgICB2YXIgZnVuY3Rpb25DYWxsID0gdGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKGZ1bmN0aW9uTG9va3VwQ29kZSwgJ2NhbGwnLCBoZWxwZXIuY2FsbFBhcmFtcyk7XG4gICAgdGhpcy5wdXNoKGZ1bmN0aW9uQ2FsbCk7XG4gIH0sXG5cbiAgaXRlbXNTZXBhcmF0ZWRCeTogZnVuY3Rpb24gaXRlbXNTZXBhcmF0ZWRCeShpdGVtcywgc2VwYXJhdG9yKSB7XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIHJlc3VsdC5wdXNoKGl0ZW1zWzBdKTtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICByZXN1bHQucHVzaChzZXBhcmF0b3IsIGl0ZW1zW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSxcbiAgLy8gW2ludm9rZUtub3duSGVscGVyXVxuICAvL1xuICAvLyBPbiBzdGFjaywgYmVmb3JlOiBoYXNoLCBpbnZlcnNlLCBwcm9ncmFtLCBwYXJhbXMuLi4sIC4uLlxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IHJlc3VsdCBvZiBoZWxwZXIgaW52b2NhdGlvblxuICAvL1xuICAvLyBUaGlzIG9wZXJhdGlvbiBpcyB1c2VkIHdoZW4gdGhlIGhlbHBlciBpcyBrbm93biB0byBleGlzdCxcbiAgLy8gc28gYSBgaGVscGVyTWlzc2luZ2AgZmFsbGJhY2sgaXMgbm90IHJlcXVpcmVkLlxuICBpbnZva2VLbm93bkhlbHBlcjogZnVuY3Rpb24gaW52b2tlS25vd25IZWxwZXIocGFyYW1TaXplLCBuYW1lKSB7XG4gICAgdmFyIGhlbHBlciA9IHRoaXMuc2V0dXBIZWxwZXIocGFyYW1TaXplLCBuYW1lKTtcbiAgICB0aGlzLnB1c2godGhpcy5zb3VyY2UuZnVuY3Rpb25DYWxsKGhlbHBlci5uYW1lLCAnY2FsbCcsIGhlbHBlci5jYWxsUGFyYW1zKSk7XG4gIH0sXG5cbiAgLy8gW2ludm9rZUFtYmlndW91c11cbiAgLy9cbiAgLy8gT24gc3RhY2ssIGJlZm9yZTogaGFzaCwgaW52ZXJzZSwgcHJvZ3JhbSwgcGFyYW1zLi4uLCAuLi5cbiAgLy8gT24gc3RhY2ssIGFmdGVyOiByZXN1bHQgb2YgZGlzYW1iaWd1YXRpb25cbiAgLy9cbiAgLy8gVGhpcyBvcGVyYXRpb24gaXMgdXNlZCB3aGVuIGFuIGV4cHJlc3Npb24gbGlrZSBge3tmb299fWBcbiAgLy8gaXMgcHJvdmlkZWQsIGJ1dCB3ZSBkb24ndCBrbm93IGF0IGNvbXBpbGUtdGltZSB3aGV0aGVyIGl0XG4gIC8vIGlzIGEgaGVscGVyIG9yIGEgcGF0aC5cbiAgLy9cbiAgLy8gVGhpcyBvcGVyYXRpb24gZW1pdHMgbW9yZSBjb2RlIHRoYW4gdGhlIG90aGVyIG9wdGlvbnMsXG4gIC8vIGFuZCBjYW4gYmUgYXZvaWRlZCBieSBwYXNzaW5nIHRoZSBga25vd25IZWxwZXJzYCBhbmRcbiAgLy8gYGtub3duSGVscGVyc09ubHlgIGZsYWdzIGF0IGNvbXBpbGUtdGltZS5cbiAgaW52b2tlQW1iaWd1b3VzOiBmdW5jdGlvbiBpbnZva2VBbWJpZ3VvdXMobmFtZSwgaGVscGVyQ2FsbCkge1xuICAgIHRoaXMudXNlUmVnaXN0ZXIoJ2hlbHBlcicpO1xuXG4gICAgdmFyIG5vbkhlbHBlciA9IHRoaXMucG9wU3RhY2soKTtcblxuICAgIHRoaXMuZW1wdHlIYXNoKCk7XG4gICAgdmFyIGhlbHBlciA9IHRoaXMuc2V0dXBIZWxwZXIoMCwgbmFtZSwgaGVscGVyQ2FsbCk7XG5cbiAgICB2YXIgaGVscGVyTmFtZSA9IHRoaXMubGFzdEhlbHBlciA9IHRoaXMubmFtZUxvb2t1cCgnaGVscGVycycsIG5hbWUsICdoZWxwZXInKTtcblxuICAgIHZhciBsb29rdXAgPSBbJygnLCAnKGhlbHBlciA9ICcsIGhlbHBlck5hbWUsICcgfHwgJywgbm9uSGVscGVyLCAnKSddO1xuICAgIGlmICghdGhpcy5vcHRpb25zLnN0cmljdCkge1xuICAgICAgbG9va3VwWzBdID0gJyhoZWxwZXIgPSAnO1xuICAgICAgbG9va3VwLnB1c2goJyAhPSBudWxsID8gaGVscGVyIDogJywgdGhpcy5hbGlhc2FibGUoJ2NvbnRhaW5lci5ob29rcy5oZWxwZXJNaXNzaW5nJykpO1xuICAgIH1cblxuICAgIHRoaXMucHVzaChbJygnLCBsb29rdXAsIGhlbHBlci5wYXJhbXNJbml0ID8gWycpLCgnLCBoZWxwZXIucGFyYW1zSW5pdF0gOiBbXSwgJyksJywgJyh0eXBlb2YgaGVscGVyID09PSAnLCB0aGlzLmFsaWFzYWJsZSgnXCJmdW5jdGlvblwiJyksICcgPyAnLCB0aGlzLnNvdXJjZS5mdW5jdGlvbkNhbGwoJ2hlbHBlcicsICdjYWxsJywgaGVscGVyLmNhbGxQYXJhbXMpLCAnIDogaGVscGVyKSknXSk7XG4gIH0sXG5cbiAgLy8gW2ludm9rZVBhcnRpYWxdXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IGNvbnRleHQsIC4uLlxuICAvLyBPbiBzdGFjayBhZnRlcjogcmVzdWx0IG9mIHBhcnRpYWwgaW52b2NhdGlvblxuICAvL1xuICAvLyBUaGlzIG9wZXJhdGlvbiBwb3BzIG9mZiBhIGNvbnRleHQsIGludm9rZXMgYSBwYXJ0aWFsIHdpdGggdGhhdCBjb250ZXh0LFxuICAvLyBhbmQgcHVzaGVzIHRoZSByZXN1bHQgb2YgdGhlIGludm9jYXRpb24gYmFjay5cbiAgaW52b2tlUGFydGlhbDogZnVuY3Rpb24gaW52b2tlUGFydGlhbChpc0R5bmFtaWMsIG5hbWUsIGluZGVudCkge1xuICAgIHZhciBwYXJhbXMgPSBbXSxcbiAgICAgICAgb3B0aW9ucyA9IHRoaXMuc2V0dXBQYXJhbXMobmFtZSwgMSwgcGFyYW1zKTtcblxuICAgIGlmIChpc0R5bmFtaWMpIHtcbiAgICAgIG5hbWUgPSB0aGlzLnBvcFN0YWNrKCk7XG4gICAgICBkZWxldGUgb3B0aW9ucy5uYW1lO1xuICAgIH1cblxuICAgIGlmIChpbmRlbnQpIHtcbiAgICAgIG9wdGlvbnMuaW5kZW50ID0gSlNPTi5zdHJpbmdpZnkoaW5kZW50KTtcbiAgICB9XG4gICAgb3B0aW9ucy5oZWxwZXJzID0gJ2hlbHBlcnMnO1xuICAgIG9wdGlvbnMucGFydGlhbHMgPSAncGFydGlhbHMnO1xuICAgIG9wdGlvbnMuZGVjb3JhdG9ycyA9ICdjb250YWluZXIuZGVjb3JhdG9ycyc7XG5cbiAgICBpZiAoIWlzRHluYW1pYykge1xuICAgICAgcGFyYW1zLnVuc2hpZnQodGhpcy5uYW1lTG9va3VwKCdwYXJ0aWFscycsIG5hbWUsICdwYXJ0aWFsJykpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJhbXMudW5zaGlmdChuYW1lKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmNvbXBhdCkge1xuICAgICAgb3B0aW9ucy5kZXB0aHMgPSAnZGVwdGhzJztcbiAgICB9XG4gICAgb3B0aW9ucyA9IHRoaXMub2JqZWN0TGl0ZXJhbChvcHRpb25zKTtcbiAgICBwYXJhbXMucHVzaChvcHRpb25zKTtcblxuICAgIHRoaXMucHVzaCh0aGlzLnNvdXJjZS5mdW5jdGlvbkNhbGwoJ2NvbnRhaW5lci5pbnZva2VQYXJ0aWFsJywgJycsIHBhcmFtcykpO1xuICB9LFxuXG4gIC8vIFthc3NpZ25Ub0hhc2hdXG4gIC8vXG4gIC8vIE9uIHN0YWNrLCBiZWZvcmU6IHZhbHVlLCAuLi4sIGhhc2gsIC4uLlxuICAvLyBPbiBzdGFjaywgYWZ0ZXI6IC4uLiwgaGFzaCwgLi4uXG4gIC8vXG4gIC8vIFBvcHMgYSB2YWx1ZSBvZmYgdGhlIHN0YWNrIGFuZCBhc3NpZ25zIGl0IHRvIHRoZSBjdXJyZW50IGhhc2hcbiAgYXNzaWduVG9IYXNoOiBmdW5jdGlvbiBhc3NpZ25Ub0hhc2goa2V5KSB7XG4gICAgdmFyIHZhbHVlID0gdGhpcy5wb3BTdGFjaygpLFxuICAgICAgICBjb250ZXh0ID0gdW5kZWZpbmVkLFxuICAgICAgICB0eXBlID0gdW5kZWZpbmVkLFxuICAgICAgICBpZCA9IHVuZGVmaW5lZDtcblxuICAgIGlmICh0aGlzLnRyYWNrSWRzKSB7XG4gICAgICBpZCA9IHRoaXMucG9wU3RhY2soKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3RyaW5nUGFyYW1zKSB7XG4gICAgICB0eXBlID0gdGhpcy5wb3BTdGFjaygpO1xuICAgICAgY29udGV4dCA9IHRoaXMucG9wU3RhY2soKTtcbiAgICB9XG5cbiAgICB2YXIgaGFzaCA9IHRoaXMuaGFzaDtcbiAgICBpZiAoY29udGV4dCkge1xuICAgICAgaGFzaC5jb250ZXh0c1trZXldID0gY29udGV4dDtcbiAgICB9XG4gICAgaWYgKHR5cGUpIHtcbiAgICAgIGhhc2gudHlwZXNba2V5XSA9IHR5cGU7XG4gICAgfVxuICAgIGlmIChpZCkge1xuICAgICAgaGFzaC5pZHNba2V5XSA9IGlkO1xuICAgIH1cbiAgICBoYXNoLnZhbHVlc1trZXldID0gdmFsdWU7XG4gIH0sXG5cbiAgcHVzaElkOiBmdW5jdGlvbiBwdXNoSWQodHlwZSwgbmFtZSwgY2hpbGQpIHtcbiAgICBpZiAodHlwZSA9PT0gJ0Jsb2NrUGFyYW0nKSB7XG4gICAgICB0aGlzLnB1c2hTdGFja0xpdGVyYWwoJ2Jsb2NrUGFyYW1zWycgKyBuYW1lWzBdICsgJ10ucGF0aFsnICsgbmFtZVsxXSArICddJyArIChjaGlsZCA/ICcgKyAnICsgSlNPTi5zdHJpbmdpZnkoJy4nICsgY2hpbGQpIDogJycpKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdQYXRoRXhwcmVzc2lvbicpIHtcbiAgICAgIHRoaXMucHVzaFN0cmluZyhuYW1lKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdTdWJFeHByZXNzaW9uJykge1xuICAgICAgdGhpcy5wdXNoU3RhY2tMaXRlcmFsKCd0cnVlJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHVzaFN0YWNrTGl0ZXJhbCgnbnVsbCcpO1xuICAgIH1cbiAgfSxcblxuICAvLyBIRUxQRVJTXG5cbiAgY29tcGlsZXI6IEphdmFTY3JpcHRDb21waWxlcixcblxuICBjb21waWxlQ2hpbGRyZW46IGZ1bmN0aW9uIGNvbXBpbGVDaGlsZHJlbihlbnZpcm9ubWVudCwgb3B0aW9ucykge1xuICAgIHZhciBjaGlsZHJlbiA9IGVudmlyb25tZW50LmNoaWxkcmVuLFxuICAgICAgICBjaGlsZCA9IHVuZGVmaW5lZCxcbiAgICAgICAgY29tcGlsZXIgPSB1bmRlZmluZWQ7XG5cbiAgICBmb3IgKHZhciBpID0gMCwgbCA9IGNoaWxkcmVuLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgY2hpbGQgPSBjaGlsZHJlbltpXTtcbiAgICAgIGNvbXBpbGVyID0gbmV3IHRoaXMuY29tcGlsZXIoKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuZXctY2FwXG5cbiAgICAgIHZhciBleGlzdGluZyA9IHRoaXMubWF0Y2hFeGlzdGluZ1Byb2dyYW0oY2hpbGQpO1xuXG4gICAgICBpZiAoZXhpc3RpbmcgPT0gbnVsbCkge1xuICAgICAgICB0aGlzLmNvbnRleHQucHJvZ3JhbXMucHVzaCgnJyk7IC8vIFBsYWNlaG9sZGVyIHRvIHByZXZlbnQgbmFtZSBjb25mbGljdHMgZm9yIG5lc3RlZCBjaGlsZHJlblxuICAgICAgICB2YXIgaW5kZXggPSB0aGlzLmNvbnRleHQucHJvZ3JhbXMubGVuZ3RoO1xuICAgICAgICBjaGlsZC5pbmRleCA9IGluZGV4O1xuICAgICAgICBjaGlsZC5uYW1lID0gJ3Byb2dyYW0nICsgaW5kZXg7XG4gICAgICAgIHRoaXMuY29udGV4dC5wcm9ncmFtc1tpbmRleF0gPSBjb21waWxlci5jb21waWxlKGNoaWxkLCBvcHRpb25zLCB0aGlzLmNvbnRleHQsICF0aGlzLnByZWNvbXBpbGUpO1xuICAgICAgICB0aGlzLmNvbnRleHQuZGVjb3JhdG9yc1tpbmRleF0gPSBjb21waWxlci5kZWNvcmF0b3JzO1xuICAgICAgICB0aGlzLmNvbnRleHQuZW52aXJvbm1lbnRzW2luZGV4XSA9IGNoaWxkO1xuXG4gICAgICAgIHRoaXMudXNlRGVwdGhzID0gdGhpcy51c2VEZXB0aHMgfHwgY29tcGlsZXIudXNlRGVwdGhzO1xuICAgICAgICB0aGlzLnVzZUJsb2NrUGFyYW1zID0gdGhpcy51c2VCbG9ja1BhcmFtcyB8fCBjb21waWxlci51c2VCbG9ja1BhcmFtcztcbiAgICAgICAgY2hpbGQudXNlRGVwdGhzID0gdGhpcy51c2VEZXB0aHM7XG4gICAgICAgIGNoaWxkLnVzZUJsb2NrUGFyYW1zID0gdGhpcy51c2VCbG9ja1BhcmFtcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNoaWxkLmluZGV4ID0gZXhpc3RpbmcuaW5kZXg7XG4gICAgICAgIGNoaWxkLm5hbWUgPSAncHJvZ3JhbScgKyBleGlzdGluZy5pbmRleDtcblxuICAgICAgICB0aGlzLnVzZURlcHRocyA9IHRoaXMudXNlRGVwdGhzIHx8IGV4aXN0aW5nLnVzZURlcHRocztcbiAgICAgICAgdGhpcy51c2VCbG9ja1BhcmFtcyA9IHRoaXMudXNlQmxvY2tQYXJhbXMgfHwgZXhpc3RpbmcudXNlQmxvY2tQYXJhbXM7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBtYXRjaEV4aXN0aW5nUHJvZ3JhbTogZnVuY3Rpb24gbWF0Y2hFeGlzdGluZ1Byb2dyYW0oY2hpbGQpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gdGhpcy5jb250ZXh0LmVudmlyb25tZW50cy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgdmFyIGVudmlyb25tZW50ID0gdGhpcy5jb250ZXh0LmVudmlyb25tZW50c1tpXTtcbiAgICAgIGlmIChlbnZpcm9ubWVudCAmJiBlbnZpcm9ubWVudC5lcXVhbHMoY2hpbGQpKSB7XG4gICAgICAgIHJldHVybiBlbnZpcm9ubWVudDtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgcHJvZ3JhbUV4cHJlc3Npb246IGZ1bmN0aW9uIHByb2dyYW1FeHByZXNzaW9uKGd1aWQpIHtcbiAgICB2YXIgY2hpbGQgPSB0aGlzLmVudmlyb25tZW50LmNoaWxkcmVuW2d1aWRdLFxuICAgICAgICBwcm9ncmFtUGFyYW1zID0gW2NoaWxkLmluZGV4LCAnZGF0YScsIGNoaWxkLmJsb2NrUGFyYW1zXTtcblxuICAgIGlmICh0aGlzLnVzZUJsb2NrUGFyYW1zIHx8IHRoaXMudXNlRGVwdGhzKSB7XG4gICAgICBwcm9ncmFtUGFyYW1zLnB1c2goJ2Jsb2NrUGFyYW1zJyk7XG4gICAgfVxuICAgIGlmICh0aGlzLnVzZURlcHRocykge1xuICAgICAgcHJvZ3JhbVBhcmFtcy5wdXNoKCdkZXB0aHMnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gJ2NvbnRhaW5lci5wcm9ncmFtKCcgKyBwcm9ncmFtUGFyYW1zLmpvaW4oJywgJykgKyAnKSc7XG4gIH0sXG5cbiAgdXNlUmVnaXN0ZXI6IGZ1bmN0aW9uIHVzZVJlZ2lzdGVyKG5hbWUpIHtcbiAgICBpZiAoIXRoaXMucmVnaXN0ZXJzW25hbWVdKSB7XG4gICAgICB0aGlzLnJlZ2lzdGVyc1tuYW1lXSA9IHRydWU7XG4gICAgICB0aGlzLnJlZ2lzdGVycy5saXN0LnB1c2gobmFtZSk7XG4gICAgfVxuICB9LFxuXG4gIHB1c2g6IGZ1bmN0aW9uIHB1c2goZXhwcikge1xuICAgIGlmICghKGV4cHIgaW5zdGFuY2VvZiBMaXRlcmFsKSkge1xuICAgICAgZXhwciA9IHRoaXMuc291cmNlLndyYXAoZXhwcik7XG4gICAgfVxuXG4gICAgdGhpcy5pbmxpbmVTdGFjay5wdXNoKGV4cHIpO1xuICAgIHJldHVybiBleHByO1xuICB9LFxuXG4gIHB1c2hTdGFja0xpdGVyYWw6IGZ1bmN0aW9uIHB1c2hTdGFja0xpdGVyYWwoaXRlbSkge1xuICAgIHRoaXMucHVzaChuZXcgTGl0ZXJhbChpdGVtKSk7XG4gIH0sXG5cbiAgcHVzaFNvdXJjZTogZnVuY3Rpb24gcHVzaFNvdXJjZShzb3VyY2UpIHtcbiAgICBpZiAodGhpcy5wZW5kaW5nQ29udGVudCkge1xuICAgICAgdGhpcy5zb3VyY2UucHVzaCh0aGlzLmFwcGVuZFRvQnVmZmVyKHRoaXMuc291cmNlLnF1b3RlZFN0cmluZyh0aGlzLnBlbmRpbmdDb250ZW50KSwgdGhpcy5wZW5kaW5nTG9jYXRpb24pKTtcbiAgICAgIHRoaXMucGVuZGluZ0NvbnRlbnQgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKHNvdXJjZSkge1xuICAgICAgdGhpcy5zb3VyY2UucHVzaChzb3VyY2UpO1xuICAgIH1cbiAgfSxcblxuICByZXBsYWNlU3RhY2s6IGZ1bmN0aW9uIHJlcGxhY2VTdGFjayhjYWxsYmFjaykge1xuICAgIHZhciBwcmVmaXggPSBbJygnXSxcbiAgICAgICAgc3RhY2sgPSB1bmRlZmluZWQsXG4gICAgICAgIGNyZWF0ZWRTdGFjayA9IHVuZGVmaW5lZCxcbiAgICAgICAgdXNlZExpdGVyYWwgPSB1bmRlZmluZWQ7XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmICghdGhpcy5pc0lubGluZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgX2V4Y2VwdGlvbjJbJ2RlZmF1bHQnXSgncmVwbGFjZVN0YWNrIG9uIG5vbi1pbmxpbmUnKTtcbiAgICB9XG5cbiAgICAvLyBXZSB3YW50IHRvIG1lcmdlIHRoZSBpbmxpbmUgc3RhdGVtZW50IGludG8gdGhlIHJlcGxhY2VtZW50IHN0YXRlbWVudCB2aWEgJywnXG4gICAgdmFyIHRvcCA9IHRoaXMucG9wU3RhY2sodHJ1ZSk7XG5cbiAgICBpZiAodG9wIGluc3RhbmNlb2YgTGl0ZXJhbCkge1xuICAgICAgLy8gTGl0ZXJhbHMgZG8gbm90IG5lZWQgdG8gYmUgaW5saW5lZFxuICAgICAgc3RhY2sgPSBbdG9wLnZhbHVlXTtcbiAgICAgIHByZWZpeCA9IFsnKCcsIHN0YWNrXTtcbiAgICAgIHVzZWRMaXRlcmFsID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gR2V0IG9yIGNyZWF0ZSB0aGUgY3VycmVudCBzdGFjayBuYW1lIGZvciB1c2UgYnkgdGhlIGlubGluZVxuICAgICAgY3JlYXRlZFN0YWNrID0gdHJ1ZTtcbiAgICAgIHZhciBfbmFtZSA9IHRoaXMuaW5jclN0YWNrKCk7XG5cbiAgICAgIHByZWZpeCA9IFsnKCgnLCB0aGlzLnB1c2goX25hbWUpLCAnID0gJywgdG9wLCAnKSddO1xuICAgICAgc3RhY2sgPSB0aGlzLnRvcFN0YWNrKCk7XG4gICAgfVxuXG4gICAgdmFyIGl0ZW0gPSBjYWxsYmFjay5jYWxsKHRoaXMsIHN0YWNrKTtcblxuICAgIGlmICghdXNlZExpdGVyYWwpIHtcbiAgICAgIHRoaXMucG9wU3RhY2soKTtcbiAgICB9XG4gICAgaWYgKGNyZWF0ZWRTdGFjaykge1xuICAgICAgdGhpcy5zdGFja1Nsb3QtLTtcbiAgICB9XG4gICAgdGhpcy5wdXNoKHByZWZpeC5jb25jYXQoaXRlbSwgJyknKSk7XG4gIH0sXG5cbiAgaW5jclN0YWNrOiBmdW5jdGlvbiBpbmNyU3RhY2soKSB7XG4gICAgdGhpcy5zdGFja1Nsb3QrKztcbiAgICBpZiAodGhpcy5zdGFja1Nsb3QgPiB0aGlzLnN0YWNrVmFycy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc3RhY2tWYXJzLnB1c2goJ3N0YWNrJyArIHRoaXMuc3RhY2tTbG90KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudG9wU3RhY2tOYW1lKCk7XG4gIH0sXG4gIHRvcFN0YWNrTmFtZTogZnVuY3Rpb24gdG9wU3RhY2tOYW1lKCkge1xuICAgIHJldHVybiAnc3RhY2snICsgdGhpcy5zdGFja1Nsb3Q7XG4gIH0sXG4gIGZsdXNoSW5saW5lOiBmdW5jdGlvbiBmbHVzaElubGluZSgpIHtcbiAgICB2YXIgaW5saW5lU3RhY2sgPSB0aGlzLmlubGluZVN0YWNrO1xuICAgIHRoaXMuaW5saW5lU3RhY2sgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gaW5saW5lU3RhY2subGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHZhciBlbnRyeSA9IGlubGluZVN0YWNrW2ldO1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoZW50cnkgaW5zdGFuY2VvZiBMaXRlcmFsKSB7XG4gICAgICAgIHRoaXMuY29tcGlsZVN0YWNrLnB1c2goZW50cnkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHN0YWNrID0gdGhpcy5pbmNyU3RhY2soKTtcbiAgICAgICAgdGhpcy5wdXNoU291cmNlKFtzdGFjaywgJyA9ICcsIGVudHJ5LCAnOyddKTtcbiAgICAgICAgdGhpcy5jb21waWxlU3RhY2sucHVzaChzdGFjayk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBpc0lubGluZTogZnVuY3Rpb24gaXNJbmxpbmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5saW5lU3RhY2subGVuZ3RoO1xuICB9LFxuXG4gIHBvcFN0YWNrOiBmdW5jdGlvbiBwb3BTdGFjayh3cmFwcGVkKSB7XG4gICAgdmFyIGlubGluZSA9IHRoaXMuaXNJbmxpbmUoKSxcbiAgICAgICAgaXRlbSA9IChpbmxpbmUgPyB0aGlzLmlubGluZVN0YWNrIDogdGhpcy5jb21waWxlU3RhY2spLnBvcCgpO1xuXG4gICAgaWYgKCF3cmFwcGVkICYmIGl0ZW0gaW5zdGFuY2VvZiBMaXRlcmFsKSB7XG4gICAgICByZXR1cm4gaXRlbS52YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFpbmxpbmUpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgaWYgKCF0aGlzLnN0YWNrU2xvdCkge1xuICAgICAgICAgIHRocm93IG5ldyBfZXhjZXB0aW9uMlsnZGVmYXVsdCddKCdJbnZhbGlkIHN0YWNrIHBvcCcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RhY2tTbG90LS07XG4gICAgICB9XG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG4gIH0sXG5cbiAgdG9wU3RhY2s6IGZ1bmN0aW9uIHRvcFN0YWNrKCkge1xuICAgIHZhciBzdGFjayA9IHRoaXMuaXNJbmxpbmUoKSA/IHRoaXMuaW5saW5lU3RhY2sgOiB0aGlzLmNvbXBpbGVTdGFjayxcbiAgICAgICAgaXRlbSA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xuXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKGl0ZW0gaW5zdGFuY2VvZiBMaXRlcmFsKSB7XG4gICAgICByZXR1cm4gaXRlbS52YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuICB9LFxuXG4gIGNvbnRleHROYW1lOiBmdW5jdGlvbiBjb250ZXh0TmFtZShjb250ZXh0KSB7XG4gICAgaWYgKHRoaXMudXNlRGVwdGhzICYmIGNvbnRleHQpIHtcbiAgICAgIHJldHVybiAnZGVwdGhzWycgKyBjb250ZXh0ICsgJ10nO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJ2RlcHRoJyArIGNvbnRleHQ7XG4gICAgfVxuICB9LFxuXG4gIHF1b3RlZFN0cmluZzogZnVuY3Rpb24gcXVvdGVkU3RyaW5nKHN0cikge1xuICAgIHJldHVybiB0aGlzLnNvdXJjZS5xdW90ZWRTdHJpbmcoc3RyKTtcbiAgfSxcblxuICBvYmplY3RMaXRlcmFsOiBmdW5jdGlvbiBvYmplY3RMaXRlcmFsKG9iaikge1xuICAgIHJldHVybiB0aGlzLnNvdXJjZS5vYmplY3RMaXRlcmFsKG9iaik7XG4gIH0sXG5cbiAgYWxpYXNhYmxlOiBmdW5jdGlvbiBhbGlhc2FibGUobmFtZSkge1xuICAgIHZhciByZXQgPSB0aGlzLmFsaWFzZXNbbmFtZV07XG4gICAgaWYgKHJldCkge1xuICAgICAgcmV0LnJlZmVyZW5jZUNvdW50Kys7XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cblxuICAgIHJldCA9IHRoaXMuYWxpYXNlc1tuYW1lXSA9IHRoaXMuc291cmNlLndyYXAobmFtZSk7XG4gICAgcmV0LmFsaWFzYWJsZSA9IHRydWU7XG4gICAgcmV0LnJlZmVyZW5jZUNvdW50ID0gMTtcblxuICAgIHJldHVybiByZXQ7XG4gIH0sXG5cbiAgc2V0dXBIZWxwZXI6IGZ1bmN0aW9uIHNldHVwSGVscGVyKHBhcmFtU2l6ZSwgbmFtZSwgYmxvY2tIZWxwZXIpIHtcbiAgICB2YXIgcGFyYW1zID0gW10sXG4gICAgICAgIHBhcmFtc0luaXQgPSB0aGlzLnNldHVwSGVscGVyQXJncyhuYW1lLCBwYXJhbVNpemUsIHBhcmFtcywgYmxvY2tIZWxwZXIpO1xuICAgIHZhciBmb3VuZEhlbHBlciA9IHRoaXMubmFtZUxvb2t1cCgnaGVscGVycycsIG5hbWUsICdoZWxwZXInKSxcbiAgICAgICAgY2FsbENvbnRleHQgPSB0aGlzLmFsaWFzYWJsZSh0aGlzLmNvbnRleHROYW1lKDApICsgJyAhPSBudWxsID8gJyArIHRoaXMuY29udGV4dE5hbWUoMCkgKyAnIDogKGNvbnRhaW5lci5udWxsQ29udGV4dCB8fCB7fSknKTtcblxuICAgIHJldHVybiB7XG4gICAgICBwYXJhbXM6IHBhcmFtcyxcbiAgICAgIHBhcmFtc0luaXQ6IHBhcmFtc0luaXQsXG4gICAgICBuYW1lOiBmb3VuZEhlbHBlcixcbiAgICAgIGNhbGxQYXJhbXM6IFtjYWxsQ29udGV4dF0uY29uY2F0KHBhcmFtcylcbiAgICB9O1xuICB9LFxuXG4gIHNldHVwUGFyYW1zOiBmdW5jdGlvbiBzZXR1cFBhcmFtcyhoZWxwZXIsIHBhcmFtU2l6ZSwgcGFyYW1zKSB7XG4gICAgdmFyIG9wdGlvbnMgPSB7fSxcbiAgICAgICAgY29udGV4dHMgPSBbXSxcbiAgICAgICAgdHlwZXMgPSBbXSxcbiAgICAgICAgaWRzID0gW10sXG4gICAgICAgIG9iamVjdEFyZ3MgPSAhcGFyYW1zLFxuICAgICAgICBwYXJhbSA9IHVuZGVmaW5lZDtcblxuICAgIGlmIChvYmplY3RBcmdzKSB7XG4gICAgICBwYXJhbXMgPSBbXTtcbiAgICB9XG5cbiAgICBvcHRpb25zLm5hbWUgPSB0aGlzLnF1b3RlZFN0cmluZyhoZWxwZXIpO1xuICAgIG9wdGlvbnMuaGFzaCA9IHRoaXMucG9wU3RhY2soKTtcblxuICAgIGlmICh0aGlzLnRyYWNrSWRzKSB7XG4gICAgICBvcHRpb25zLmhhc2hJZHMgPSB0aGlzLnBvcFN0YWNrKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnN0cmluZ1BhcmFtcykge1xuICAgICAgb3B0aW9ucy5oYXNoVHlwZXMgPSB0aGlzLnBvcFN0YWNrKCk7XG4gICAgICBvcHRpb25zLmhhc2hDb250ZXh0cyA9IHRoaXMucG9wU3RhY2soKTtcbiAgICB9XG5cbiAgICB2YXIgaW52ZXJzZSA9IHRoaXMucG9wU3RhY2soKSxcbiAgICAgICAgcHJvZ3JhbSA9IHRoaXMucG9wU3RhY2soKTtcblxuICAgIC8vIEF2b2lkIHNldHRpbmcgZm4gYW5kIGludmVyc2UgaWYgbmVpdGhlciBhcmUgc2V0LiBUaGlzIGFsbG93c1xuICAgIC8vIGhlbHBlcnMgdG8gZG8gYSBjaGVjayBmb3IgYGlmIChvcHRpb25zLmZuKWBcbiAgICBpZiAocHJvZ3JhbSB8fCBpbnZlcnNlKSB7XG4gICAgICBvcHRpb25zLmZuID0gcHJvZ3JhbSB8fCAnY29udGFpbmVyLm5vb3AnO1xuICAgICAgb3B0aW9ucy5pbnZlcnNlID0gaW52ZXJzZSB8fCAnY29udGFpbmVyLm5vb3AnO1xuICAgIH1cblxuICAgIC8vIFRoZSBwYXJhbWV0ZXJzIGdvIG9uIHRvIHRoZSBzdGFjayBpbiBvcmRlciAobWFraW5nIHN1cmUgdGhhdCB0aGV5IGFyZSBldmFsdWF0ZWQgaW4gb3JkZXIpXG4gICAgLy8gc28gd2UgbmVlZCB0byBwb3AgdGhlbSBvZmYgdGhlIHN0YWNrIGluIHJldmVyc2Ugb3JkZXJcbiAgICB2YXIgaSA9IHBhcmFtU2l6ZTtcbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICBwYXJhbSA9IHRoaXMucG9wU3RhY2soKTtcbiAgICAgIHBhcmFtc1tpXSA9IHBhcmFtO1xuXG4gICAgICBpZiAodGhpcy50cmFja0lkcykge1xuICAgICAgICBpZHNbaV0gPSB0aGlzLnBvcFN0YWNrKCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zdHJpbmdQYXJhbXMpIHtcbiAgICAgICAgdHlwZXNbaV0gPSB0aGlzLnBvcFN0YWNrKCk7XG4gICAgICAgIGNvbnRleHRzW2ldID0gdGhpcy5wb3BTdGFjaygpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvYmplY3RBcmdzKSB7XG4gICAgICBvcHRpb25zLmFyZ3MgPSB0aGlzLnNvdXJjZS5nZW5lcmF0ZUFycmF5KHBhcmFtcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHJhY2tJZHMpIHtcbiAgICAgIG9wdGlvbnMuaWRzID0gdGhpcy5zb3VyY2UuZ2VuZXJhdGVBcnJheShpZHMpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zdHJpbmdQYXJhbXMpIHtcbiAgICAgIG9wdGlvbnMudHlwZXMgPSB0aGlzLnNvdXJjZS5nZW5lcmF0ZUFycmF5KHR5cGVzKTtcbiAgICAgIG9wdGlvbnMuY29udGV4dHMgPSB0aGlzLnNvdXJjZS5nZW5lcmF0ZUFycmF5KGNvbnRleHRzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmRhdGEpIHtcbiAgICAgIG9wdGlvbnMuZGF0YSA9ICdkYXRhJztcbiAgICB9XG4gICAgaWYgKHRoaXMudXNlQmxvY2tQYXJhbXMpIHtcbiAgICAgIG9wdGlvbnMuYmxvY2tQYXJhbXMgPSAnYmxvY2tQYXJhbXMnO1xuICAgIH1cbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfSxcblxuICBzZXR1cEhlbHBlckFyZ3M6IGZ1bmN0aW9uIHNldHVwSGVscGVyQXJncyhoZWxwZXIsIHBhcmFtU2l6ZSwgcGFyYW1zLCB1c2VSZWdpc3Rlcikge1xuICAgIHZhciBvcHRpb25zID0gdGhpcy5zZXR1cFBhcmFtcyhoZWxwZXIsIHBhcmFtU2l6ZSwgcGFyYW1zKTtcbiAgICBvcHRpb25zLmxvYyA9IEpTT04uc3RyaW5naWZ5KHRoaXMuc291cmNlLmN1cnJlbnRMb2NhdGlvbik7XG4gICAgb3B0aW9ucyA9IHRoaXMub2JqZWN0TGl0ZXJhbChvcHRpb25zKTtcbiAgICBpZiAodXNlUmVnaXN0ZXIpIHtcbiAgICAgIHRoaXMudXNlUmVnaXN0ZXIoJ29wdGlvbnMnKTtcbiAgICAgIHBhcmFtcy5wdXNoKCdvcHRpb25zJyk7XG4gICAgICByZXR1cm4gWydvcHRpb25zPScsIG9wdGlvbnNdO1xuICAgIH0gZWxzZSBpZiAocGFyYW1zKSB7XG4gICAgICBwYXJhbXMucHVzaChvcHRpb25zKTtcbiAgICAgIHJldHVybiAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9wdGlvbnM7XG4gICAgfVxuICB9XG59O1xuXG4oZnVuY3Rpb24gKCkge1xuICB2YXIgcmVzZXJ2ZWRXb3JkcyA9ICgnYnJlYWsgZWxzZSBuZXcgdmFyJyArICcgY2FzZSBmaW5hbGx5IHJldHVybiB2b2lkJyArICcgY2F0Y2ggZm9yIHN3aXRjaCB3aGlsZScgKyAnIGNvbnRpbnVlIGZ1bmN0aW9uIHRoaXMgd2l0aCcgKyAnIGRlZmF1bHQgaWYgdGhyb3cnICsgJyBkZWxldGUgaW4gdHJ5JyArICcgZG8gaW5zdGFuY2VvZiB0eXBlb2YnICsgJyBhYnN0cmFjdCBlbnVtIGludCBzaG9ydCcgKyAnIGJvb2xlYW4gZXhwb3J0IGludGVyZmFjZSBzdGF0aWMnICsgJyBieXRlIGV4dGVuZHMgbG9uZyBzdXBlcicgKyAnIGNoYXIgZmluYWwgbmF0aXZlIHN5bmNocm9uaXplZCcgKyAnIGNsYXNzIGZsb2F0IHBhY2thZ2UgdGhyb3dzJyArICcgY29uc3QgZ290byBwcml2YXRlIHRyYW5zaWVudCcgKyAnIGRlYnVnZ2VyIGltcGxlbWVudHMgcHJvdGVjdGVkIHZvbGF0aWxlJyArICcgZG91YmxlIGltcG9ydCBwdWJsaWMgbGV0IHlpZWxkIGF3YWl0JyArICcgbnVsbCB0cnVlIGZhbHNlJykuc3BsaXQoJyAnKTtcblxuICB2YXIgY29tcGlsZXJXb3JkcyA9IEphdmFTY3JpcHRDb21waWxlci5SRVNFUlZFRF9XT1JEUyA9IHt9O1xuXG4gIGZvciAodmFyIGkgPSAwLCBsID0gcmVzZXJ2ZWRXb3Jkcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBjb21waWxlcldvcmRzW3Jlc2VydmVkV29yZHNbaV1dID0gdHJ1ZTtcbiAgfVxufSkoKTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBNYXkgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uXG4gKi9cbkphdmFTY3JpcHRDb21waWxlci5pc1ZhbGlkSmF2YVNjcmlwdFZhcmlhYmxlTmFtZSA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiAhSmF2YVNjcmlwdENvbXBpbGVyLlJFU0VSVkVEX1dPUkRTW25hbWVdICYmIC9eW2EtekEtWl8kXVswLTlhLXpBLVpfJF0qJC8udGVzdChuYW1lKTtcbn07XG5cbmZ1bmN0aW9uIHN0cmljdExvb2t1cChyZXF1aXJlVGVybWluYWwsIGNvbXBpbGVyLCBwYXJ0cywgdHlwZSkge1xuICB2YXIgc3RhY2sgPSBjb21waWxlci5wb3BTdGFjaygpLFxuICAgICAgaSA9IDAsXG4gICAgICBsZW4gPSBwYXJ0cy5sZW5ndGg7XG4gIGlmIChyZXF1aXJlVGVybWluYWwpIHtcbiAgICBsZW4tLTtcbiAgfVxuXG4gIGZvciAoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBzdGFjayA9IGNvbXBpbGVyLm5hbWVMb29rdXAoc3RhY2ssIHBhcnRzW2ldLCB0eXBlKTtcbiAgfVxuXG4gIGlmIChyZXF1aXJlVGVybWluYWwpIHtcbiAgICByZXR1cm4gW2NvbXBpbGVyLmFsaWFzYWJsZSgnY29udGFpbmVyLnN0cmljdCcpLCAnKCcsIHN0YWNrLCAnLCAnLCBjb21waWxlci5xdW90ZWRTdHJpbmcocGFydHNbaV0pLCAnLCAnLCBKU09OLnN0cmluZ2lmeShjb21waWxlci5zb3VyY2UuY3VycmVudExvY2F0aW9uKSwgJyApJ107XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHN0YWNrO1xuICB9XG59XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IEphdmFTY3JpcHRDb21waWxlcjtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0dUwyeHBZaTlvWVc1a2JHVmlZWEp6TDJOdmJYQnBiR1Z5TDJwaGRtRnpZM0pwY0hRdFkyOXRjR2xzWlhJdWFuTWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3T3p0dlFrRkJiMFFzVTBGQlV6czdlVUpCUTNaRExHTkJRV003T3pzN2NVSkJRMW9zVlVGQlZUczdkVUpCUTJRc1dVRkJXVHM3T3p0QlFVVm9ReXhUUVVGVExFOUJRVThzUTBGQlF5eExRVUZMTEVWQlFVVTdRVUZEZEVJc1RVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTTdRMEZEY0VJN08wRkJSVVFzVTBGQlV5eHJRa0ZCYTBJc1IwRkJSeXhGUVVGRk96dEJRVVZvUXl4clFrRkJhMElzUTBGQlF5eFRRVUZUTEVkQlFVYzdPenRCUVVjM1FpeFpRVUZWTEVWQlFVVXNiMEpCUVZNc1RVRkJUU3hGUVVGRkxFbEJRVWtzWlVGQlpUdEJRVU01UXl4WFFVRlBMRWxCUVVrc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4TlFVRk5MRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03UjBGRE9VTTdRVUZEUkN4bFFVRmhMRVZCUVVVc2RVSkJRVk1zU1VGQlNTeEZRVUZGTzBGQlF6VkNMRmRCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEd0Q1FVRnJRaXhEUVVGRExFVkJRVVVzV1VGQldTeEZRVUZGTEVsQlFVa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRIUVVOMlJUczdRVUZGUkN4alFVRlpMRVZCUVVVc2QwSkJRVmM3UVVGRGRrSXNVVUZCVFN4UlFVRlJMREJDUVVGdlFqdFJRVU5vUXl4UlFVRlJMRWRCUVVjc2RVSkJRV2xDTEZGQlFWRXNRMEZCUXl4RFFVRkRPMEZCUTNoRExGZEJRVThzUTBGQlF5eFJRVUZSTEVWQlFVVXNVVUZCVVN4RFFVRkRMRU5CUVVNN1IwRkROMEk3TzBGQlJVUXNaMEpCUVdNc1JVRkJSU3gzUWtGQlV5eE5RVUZOTEVWQlFVVXNVVUZCVVN4RlFVRkZMRkZCUVZFc1JVRkJSVHM3UVVGRmJrUXNVVUZCU1N4RFFVRkRMR1ZCUVZFc1RVRkJUU3hEUVVGRExFVkJRVVU3UVVGRGNFSXNXVUZCVFN4SFFVRkhMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03UzBGRGJrSTdRVUZEUkN4VlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRkZCUVZFc1EwRkJReXhEUVVGRE96dEJRVVUxUXl4UlFVRkpMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zVVVGQlVTeEZRVUZGTzBGQlF6ZENMR0ZCUVU4c1EwRkJReXhUUVVGVExFVkJRVVVzVFVGQlRTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMHRCUTJwRExFMUJRVTBzU1VGQlNTeFJRVUZSTEVWQlFVVTdPenM3UVVGSmJrSXNZVUZCVHl4RFFVRkRMRmxCUVZrc1JVRkJSU3hOUVVGTkxFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdTMEZEY0VNc1RVRkJUVHRCUVVOTUxGbEJRVTBzUTBGQlF5eGpRVUZqTEVkQlFVY3NTVUZCU1N4RFFVRkRPMEZCUXpkQ0xHRkJRVThzVFVGQlRTeERRVUZETzB0QlEyWTdSMEZEUmpzN1FVRkZSQ3hyUWtGQlowSXNSVUZCUlN3MFFrRkJWenRCUVVNelFpeFhRVUZQTEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU03UjBGRE9VSTdPMEZCUlVRc2IwSkJRV3RDTEVWQlFVVXNORUpCUVZNc1RVRkJUU3hGUVVGRkxFbEJRVWtzUlVGQlJUdEJRVU42UXl4UlFVRkpMRU5CUVVNc05FSkJRVFJDTEVkQlFVY3NTVUZCU1N4RFFVRkRPMEZCUTNwRExGZEJRVThzUTBGQlF5eHBRa0ZCYVVJc1JVRkJSU3hOUVVGTkxFVkJRVVVzUjBGQlJ5eEZRVUZGTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdSMEZEY0VVN08wRkJSVVFzT0VKQlFUUkNMRVZCUVVVc1MwRkJTenM3UVVGRmJrTXNVMEZCVHl4RlFVRkZMR2xDUVVGVExGZEJRVmNzUlVGQlJTeFBRVUZQTEVWQlFVVXNUMEZCVHl4RlFVRkZMRkZCUVZFc1JVRkJSVHRCUVVONlJDeFJRVUZKTEVOQlFVTXNWMEZCVnl4SFFVRkhMRmRCUVZjc1EwRkJRenRCUVVNdlFpeFJRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRTlCUVU4c1EwRkJRenRCUVVOMlFpeFJRVUZKTEVOQlFVTXNXVUZCV1N4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zV1VGQldTeERRVUZETzBGQlF6bERMRkZCUVVrc1EwRkJReXhSUVVGUkxFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4UlFVRlJMRU5CUVVNN1FVRkRkRU1zVVVGQlNTeERRVUZETEZWQlFWVXNSMEZCUnl4RFFVRkRMRkZCUVZFc1EwRkJRenM3UVVGRk5VSXNVVUZCU1N4RFFVRkRMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEVsQlFVa3NRMEZCUXp0QlFVTnNReXhSUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVOQlFVTXNRMEZCUXl4UFFVRlBMRU5CUVVNN1FVRkRla0lzVVVGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4UFFVRlBMRWxCUVVrN1FVRkRlRUlzWjBKQlFWVXNSVUZCUlN4RlFVRkZPMEZCUTJRc1kwRkJVU3hGUVVGRkxFVkJRVVU3UVVGRFdpeHJRa0ZCV1N4RlFVRkZMRVZCUVVVN1MwRkRha0lzUTBGQlF6czdRVUZGUml4UlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU03TzBGQlJXaENMRkZCUVVrc1EwRkJReXhUUVVGVExFZEJRVWNzUTBGQlF5eERRVUZETzBGQlEyNUNMRkZCUVVrc1EwRkJReXhUUVVGVExFZEJRVWNzUlVGQlJTeERRVUZETzBGQlEzQkNMRkZCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzUlVGQlJTeERRVUZETzBGQlEyeENMRkZCUVVrc1EwRkJReXhUUVVGVExFZEJRVWNzUlVGQlJTeEpRVUZKTEVWQlFVVXNSVUZCUlN4RlFVRkZMRU5CUVVNN1FVRkRPVUlzVVVGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4RlFVRkZMRU5CUVVNN1FVRkRha0lzVVVGQlNTeERRVUZETEZsQlFWa3NSMEZCUnl4RlFVRkZMRU5CUVVNN1FVRkRka0lzVVVGQlNTeERRVUZETEZkQlFWY3NSMEZCUnl4RlFVRkZMRU5CUVVNN1FVRkRkRUlzVVVGQlNTeERRVUZETEZkQlFWY3NSMEZCUnl4RlFVRkZMRU5CUVVNN08wRkJSWFJDTEZGQlFVa3NRMEZCUXl4bFFVRmxMRU5CUVVNc1YwRkJWeXhGUVVGRkxFOUJRVThzUTBGQlF5eERRVUZET3p0QlFVVXpReXhSUVVGSkxFTkJRVU1zVTBGQlV5eEhRVU5hTEVsQlFVa3NRMEZCUXl4VFFVRlRMRWxCUTJRc1YwRkJWeXhEUVVGRExGTkJRVk1zU1VGRGNrSXNWMEZCVnl4RFFVRkRMR0ZCUVdFc1NVRkRla0lzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNN1FVRkRkRUlzVVVGQlNTeERRVUZETEdOQlFXTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1kwRkJZeXhKUVVGSkxGZEJRVmNzUTBGQlF5eGpRVUZqTEVOQlFVTTdPMEZCUlhoRkxGRkJRVWtzVDBGQlR5eEhRVUZITEZkQlFWY3NRMEZCUXl4UFFVRlBPMUZCUXk5Q0xFMUJRVTBzV1VGQlFUdFJRVU5PTEZGQlFWRXNXVUZCUVR0UlFVTlNMRU5CUVVNc1dVRkJRVHRSUVVORUxFTkJRVU1zV1VGQlFTeERRVUZET3p0QlFVVktMRk5CUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NUMEZCVHl4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMEZCUXpGRExGbEJRVTBzUjBGQlJ5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN08wRkJSWEJDTEZWQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1pVRkJaU3hIUVVGSExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTTdRVUZEZWtNc1kwRkJVU3hIUVVGSExGRkJRVkVzU1VGQlNTeE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRPMEZCUTJ4RExGVkJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUlVGQlJTeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1MwRkRPVU03T3p0QlFVZEVMRkZCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zWlVGQlpTeEhRVUZITEZGQlFWRXNRMEZCUXp0QlFVTjJReXhSUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRPenM3UVVGSGNFSXNVVUZCU1N4SlFVRkpMRU5CUVVNc1UwRkJVeXhKUVVGSkxFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNUVUZCVFN4SlFVRkpMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zVFVGQlRTeEZRVUZGTzBGQlEzcEZMRmxCUVUwc01rSkJRV01zT0VOQlFUaERMRU5CUVVNc1EwRkJRenRMUVVOeVJUczdRVUZGUkN4UlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eFBRVUZQTEVWQlFVVXNSVUZCUlR0QlFVTTVRaXhWUVVGSkxFTkJRVU1zWVVGQllTeEhRVUZITEVsQlFVa3NRMEZCUXpzN1FVRkZNVUlzVlVGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkRkRUlzZVVOQlFYbERMRVZCUTNwRExFbEJRVWtzUTBGQlF5eHZRMEZCYjBNc1JVRkJSU3hGUVVNelF5eExRVUZMTEVOQlEwNHNRMEZCUXl4RFFVRkRPMEZCUTBnc1ZVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRU5CUVVNN08wRkJSVzVETEZWQlFVa3NVVUZCVVN4RlFVRkZPMEZCUTFvc1dVRkJTU3hEUVVGRExGVkJRVlVzUjBGQlJ5eFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVOeVF5eEpRVUZKTEVWQlEwb3NUMEZCVHl4RlFVTlFMRmRCUVZjc1JVRkRXQ3hSUVVGUkxFVkJRMUlzVFVGQlRTeEZRVU5PTEdGQlFXRXNSVUZEWWl4UlFVRlJMRVZCUTFJc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZEZUVJc1EwRkJReXhEUVVGRE8wOUJRMG9zVFVGQlRUdEJRVU5NTEZsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1QwRkJUeXhEUVVOeVFpeDFSVUZCZFVVc1EwRkRlRVVzUTBGQlF6dEJRVU5HTEZsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzBGQlF6VkNMRmxCUVVrc1EwRkJReXhWUVVGVkxFZEJRVWNzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJRenRQUVVNelF6dExRVU5HTEUxQlFVMDdRVUZEVEN4VlFVRkpMRU5CUVVNc1ZVRkJWU3hIUVVGSExGTkJRVk1zUTBGQlF6dExRVU0zUWpzN1FVRkZSQ3hSUVVGSkxFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNjVUpCUVhGQ0xFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdRVUZET1VNc1VVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVWQlFVVTdRVUZEYWtJc1ZVRkJTU3hIUVVGSExFZEJRVWM3UVVGRFVpeG5Ra0ZCVVN4RlFVRkZMRWxCUVVrc1EwRkJReXhaUVVGWkxFVkJRVVU3UVVGRE4wSXNXVUZCU1N4RlFVRkZMRVZCUVVVN1QwRkRWQ3hEUVVGRE96dEJRVVZHTEZWQlFVa3NTVUZCU1N4RFFVRkRMRlZCUVZVc1JVRkJSVHRCUVVOdVFpeFhRVUZITEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU03UVVGRE4wSXNWMEZCUnl4RFFVRkRMR0ZCUVdFc1IwRkJSeXhKUVVGSkxFTkJRVU03VDBGRE1VSTdPM0ZDUVVVNFFpeEpRVUZKTEVOQlFVTXNUMEZCVHp0VlFVRnlReXhSUVVGUkxGbEJRVklzVVVGQlVUdFZRVUZGTEZWQlFWVXNXVUZCVml4VlFVRlZPenRCUVVNeFFpeFhRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExGRkJRVkVzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdEJRVU16UXl4WlFVRkpMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJUdEJRVU5tTEdGQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdRVUZEY2tJc1kwRkJTU3hWUVVGVkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVTdRVUZEYWtJc1pVRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4VlFVRlZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRE9VSXNaVUZCUnl4RFFVRkRMR0ZCUVdFc1IwRkJSeXhKUVVGSkxFTkJRVU03VjBGRE1VSTdVMEZEUmp0UFFVTkdPenRCUVVWRUxGVkJRVWtzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4VlFVRlZMRVZCUVVVN1FVRkRMMElzVjBGQlJ5eERRVUZETEZWQlFWVXNSMEZCUnl4SlFVRkpMRU5CUVVNN1QwRkRka0k3UVVGRFJDeFZRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hGUVVGRk8wRkJRM0pDTEZkQlFVY3NRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRE8wOUJRM0JDTzBGQlEwUXNWVUZCU1N4SlFVRkpMRU5CUVVNc1UwRkJVeXhGUVVGRk8wRkJRMnhDTEZkQlFVY3NRMEZCUXl4VFFVRlRMRWRCUVVjc1NVRkJTU3hEUVVGRE8wOUJRM1JDTzBGQlEwUXNWVUZCU1N4SlFVRkpMRU5CUVVNc1kwRkJZeXhGUVVGRk8wRkJRM1pDTEZkQlFVY3NRMEZCUXl4alFVRmpMRWRCUVVjc1NVRkJTU3hEUVVGRE8wOUJRek5DTzBGQlEwUXNWVUZCU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUlVGQlJUdEJRVU4yUWl4WFFVRkhMRU5CUVVNc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF6dFBRVU51UWpzN1FVRkZSQ3hWUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTzBGQlEySXNWMEZCUnl4RFFVRkRMRkZCUVZFc1IwRkJSeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenM3UVVGRk5VTXNXVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhsUVVGbExFZEJRVWNzUlVGQlJTeExRVUZMTEVWQlFVVXNSVUZCUlN4SlFVRkpMRVZCUVVVc1EwRkJReXhGUVVGRkxFMUJRVTBzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRPMEZCUTJoRkxGZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE96dEJRVVU1UWl4WlFVRkpMRTlCUVU4c1EwRkJReXhQUVVGUExFVkJRVVU3UVVGRGJrSXNZVUZCUnl4SFFVRkhMRWRCUVVjc1EwRkJReXh4UWtGQmNVSXNRMEZCUXl4RlFVRkZMRWxCUVVrc1JVRkJSU3hQUVVGUExFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTXNRMEZCUXp0QlFVTTFSQ3hoUVVGSExFTkJRVU1zUjBGQlJ5eEhRVUZITEVkQlFVY3NRMEZCUXl4SFFVRkhMRWxCUVVrc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXp0VFFVTjZReXhOUVVGTk8wRkJRMHdzWVVGQlJ5eEhRVUZITEVkQlFVY3NRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJRenRUUVVOMFFqdFBRVU5HTEUxQlFVMDdRVUZEVEN4WFFVRkhMRU5CUVVNc1pVRkJaU3hIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTTdUMEZEY0VNN08wRkJSVVFzWVVGQlR5eEhRVUZITEVOQlFVTTdTMEZEV2l4TlFVRk5PMEZCUTB3c1lVRkJUeXhGUVVGRkxFTkJRVU03UzBGRFdEdEhRVU5HT3p0QlFVVkVMRlZCUVZFc1JVRkJSU3h2UWtGQlZ6czdPMEZCUjI1Q0xGRkJRVWtzUTBGQlF5eFhRVUZYTEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUTNKQ0xGRkJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NlVUpCUVZrc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0QlFVTm9SQ3hSUVVGSkxFTkJRVU1zVlVGQlZTeEhRVUZITEhsQ1FVRlpMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdSMEZEY2tRN08wRkJSVVFzZFVKQlFYRkNMRVZCUVVVc0swSkJRVk1zVVVGQlVTeEZRVUZGT3pzN096dEJRVU40UXl4UlFVRkpMR1ZCUVdVc1IwRkJSeXhGUVVGRkxFTkJRVU03TzBGQlJYcENMRkZCUVVrc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdRVUZEZUVRc1VVRkJTU3hOUVVGTkxFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNSVUZCUlR0QlFVTnlRaXh4UWtGQlpTeEpRVUZKTEVsQlFVa3NSMEZCUnl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzB0QlF6ZERPenM3T3pzN096dEJRVkZFTEZGQlFVa3NWVUZCVlN4SFFVRkhMRU5CUVVNc1EwRkJRenRCUVVOdVFpeFZRVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCUVN4TFFVRkxMRVZCUVVrN1FVRkRla01zVlVGQlNTeEpRVUZKTEVkQlFVY3NUVUZCU3l4UFFVRlBMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03UVVGREwwSXNWVUZCU1N4SlFVRkpMRU5CUVVNc1VVRkJVU3hKUVVGSkxFbEJRVWtzUTBGQlF5eGpRVUZqTEVkQlFVY3NRMEZCUXl4RlFVRkZPMEZCUXpWRExIVkNRVUZsTEVsQlFVa3NVMEZCVXl4SFFVRkhMRVZCUVVVc1ZVRkJWU3hIUVVGSExFZEJRVWNzUjBGQlJ5eExRVUZMTEVOQlFVTTdRVUZETVVRc1dVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4UFFVRlBMRWRCUVVjc1ZVRkJWU3hEUVVGRE8wOUJRM3BETzB0QlEwWXNRMEZCUXl4RFFVRkRPenRCUVVWSUxGRkJRVWtzU1VGQlNTeERRVUZETERSQ1FVRTBRaXhGUVVGRk8wRkJRM0pETEhGQ1FVRmxMRWxCUVVrc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eHZRMEZCYjBNc1JVRkJSU3hEUVVGRE8wdEJRM1pGT3p0QlFVVkVMRkZCUVVrc1RVRkJUU3hIUVVGSExFTkJRVU1zVjBGQlZ5eEZRVUZGTEZGQlFWRXNSVUZCUlN4VFFVRlRMRVZCUVVVc1ZVRkJWU3hGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZET3p0QlFVVndSU3hSUVVGSkxFbEJRVWtzUTBGQlF5eGpRVUZqTEVsQlFVa3NTVUZCU1N4RFFVRkRMRk5CUVZNc1JVRkJSVHRCUVVONlF5eFpRVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhEUVVGRE8wdEJRelZDTzBGQlEwUXNVVUZCU1N4SlFVRkpMRU5CUVVNc1UwRkJVeXhGUVVGRk8wRkJRMnhDTEZsQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03UzBGRGRrSTdPenRCUVVkRUxGRkJRVWtzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1pVRkJaU3hEUVVGRExFTkJRVU03TzBGQlJTOURMRkZCUVVrc1VVRkJVU3hGUVVGRk8wRkJRMW9zV1VGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenM3UVVGRmNFSXNZVUZCVHl4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUXp0TFFVTnlReXhOUVVGTk8wRkJRMHdzWVVGQlR5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVOMFFpeFhRVUZYTEVWQlExZ3NUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGRGFFSXNVMEZCVXl4RlFVTlVMRTFCUVUwc1JVRkRUaXhIUVVGSExFTkJRMG9zUTBGQlF5eERRVUZETzB0QlEwbzdSMEZEUmp0QlFVTkVMR0ZCUVZjc1JVRkJSU3h4UWtGQlV5eGxRVUZsTEVWQlFVVTdRVUZEY2tNc1VVRkJTU3hSUVVGUkxFZEJRVWNzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4UlFVRlJPMUZCUTNSRExGVkJRVlVzUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4WFFVRlhPMUZCUXpsQ0xGZEJRVmNzV1VGQlFUdFJRVU5ZTEZWQlFWVXNXVUZCUVR0UlFVTldMRmRCUVZjc1dVRkJRVHRSUVVOWUxGTkJRVk1zV1VGQlFTeERRVUZETzBGQlExb3NVVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zVlVGQlFTeEpRVUZKTEVWQlFVazdRVUZEZGtJc1ZVRkJTU3hKUVVGSkxFTkJRVU1zWTBGQll5eEZRVUZGTzBGQlEzWkNMRmxCUVVrc1YwRkJWeXhGUVVGRk8wRkJRMllzWTBGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRUUVVOMFFpeE5RVUZOTzBGQlEwd3NjVUpCUVZjc1IwRkJSeXhKUVVGSkxFTkJRVU03VTBGRGNFSTdRVUZEUkN4cFFrRkJVeXhIUVVGSExFbEJRVWtzUTBGQlF6dFBRVU5zUWl4TlFVRk5PMEZCUTB3c1dVRkJTU3hYUVVGWExFVkJRVVU3UVVGRFppeGpRVUZKTEVOQlFVTXNWVUZCVlN4RlFVRkZPMEZCUTJZc2RVSkJRVmNzUjBGQlJ5eEpRVUZKTEVOQlFVTTdWMEZEY0VJc1RVRkJUVHRCUVVOTUxIVkNRVUZYTEVOQlFVTXNUMEZCVHl4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRE8xZEJRMjVETzBGQlEwUXNiVUpCUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZEYmtJc2NVSkJRVmNzUjBGQlJ5eFRRVUZUTEVkQlFVY3NVMEZCVXl4RFFVRkRPMU5CUTNKRE96dEJRVVZFTEd0Q1FVRlZMRWRCUVVjc1NVRkJTU3hEUVVGRE8wRkJRMnhDTEZsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVN1FVRkRZaXh2UWtGQlZTeEhRVUZITEV0QlFVc3NRMEZCUXp0VFFVTndRanRQUVVOR08wdEJRMFlzUTBGQlF5eERRVUZET3p0QlFVVklMRkZCUVVrc1ZVRkJWU3hGUVVGRk8wRkJRMlFzVlVGQlNTeFhRVUZYTEVWQlFVVTdRVUZEWml4dFFrRkJWeXhEUVVGRExFOUJRVThzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXp0QlFVTXZRaXhwUWtGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRQUVVOd1FpeE5RVUZOTEVsQlFVa3NRMEZCUXl4VlFVRlZMRVZCUVVVN1FVRkRkRUlzV1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU03VDBGRGFFTTdTMEZEUml4TlFVRk5PMEZCUTB3c2NVSkJRV1VzU1VGRFlpeGhRVUZoTEVsQlFVa3NWMEZCVnl4SFFVRkhMRVZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRVZCUVVVc1EwRkJRU3hCUVVGRExFTkJRVU03TzBGQlJTOUVMRlZCUVVrc1YwRkJWeXhGUVVGRk8wRkJRMllzYlVKQlFWY3NRMEZCUXl4UFFVRlBMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNRMEZCUXp0QlFVTjRReXhwUWtGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRQUVVOd1FpeE5RVUZOTzBGQlEwd3NXVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1EwRkJRenRQUVVOd1F6dExRVU5HT3p0QlFVVkVMRkZCUVVrc1pVRkJaU3hGUVVGRk8wRkJRMjVDTEZWQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1QwRkJUeXhEUVVOcVFpeE5RVUZOTEVkQlFVY3NaVUZCWlN4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeFhRVUZYTEVkQlFVY3NSVUZCUlN4SFFVRkhMRXRCUVVzc1EwRkJRU3hCUVVGRExFTkJRMjVGTEVOQlFVTTdTMEZEU0RzN1FVRkZSQ3hYUVVGUExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNN1IwRkROVUk3TzBGQlJVUXNjME5CUVc5RExFVkJRVVVzWjBSQlFWYzdRVUZETDBNc1YwRkJUeXcyVUVGUFRDeEpRVUZKTEVWQlFVVXNRMEZCUXp0SFFVTldPenM3T3pzN096czdPenRCUVZkRUxGbEJRVlVzUlVGQlJTeHZRa0ZCVXl4SlFVRkpMRVZCUVVVN1FVRkRla0lzVVVGQlNTeHJRa0ZCYTBJc1IwRkJSeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVU51UXl4dlEwRkJiME1zUTBGRGNrTTdVVUZEUkN4TlFVRk5MRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRha01zVVVGQlNTeERRVUZETEdWQlFXVXNRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJReXhGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZET3p0QlFVVjBReXhSUVVGSkxGTkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN1FVRkRhRU1zVlVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxGTkJRVk1zUTBGQlF5eERRVUZET3p0QlFVVXZRaXhSUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1dVRkJXU3hEUVVGRExHdENRVUZyUWl4RlFVRkZMRTFCUVUwc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETzBkQlEzcEZPenM3T3pzN096dEJRVkZFTEhGQ1FVRnRRaXhGUVVGRkxDdENRVUZYT3p0QlFVVTVRaXhSUVVGSkxHdENRVUZyUWl4SFFVRkhMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRMjVETEc5RFFVRnZReXhEUVVOeVF6dFJRVU5FTEUxQlFVMHNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTnFReXhSUVVGSkxFTkJRVU1zWlVGQlpTeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVc1RVRkJUU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZET3p0QlFVVXhReXhSUVVGSkxFTkJRVU1zVjBGQlZ5eEZRVUZGTEVOQlFVTTdPMEZCUlc1Q0xGRkJRVWtzVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJRenRCUVVNNVFpeFZRVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTTdPMEZCUlRkQ0xGRkJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZEWkN4UFFVRlBMRVZCUTFBc1NVRkJTU3hEUVVGRExGVkJRVlVzUlVGRFppeE5RVUZOTEVWQlEwNHNUMEZCVHl4RlFVTlFMRXRCUVVzc1JVRkRUQ3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEZsQlFWa3NRMEZCUXl4clFrRkJhMElzUlVGQlJTeE5RVUZOTEVWQlFVVXNUVUZCVFN4RFFVRkRMRVZCUXpWRUxFZEJRVWNzUTBGRFNpeERRVUZETEVOQlFVTTdSMEZEU2pzN096czdPenM3UVVGUlJDeGxRVUZoTEVWQlFVVXNkVUpCUVZNc1QwRkJUeXhGUVVGRk8wRkJReTlDTEZGQlFVa3NTVUZCU1N4RFFVRkRMR05CUVdNc1JVRkJSVHRCUVVOMlFpeGhRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMR05CUVdNc1IwRkJSeXhQUVVGUExFTkJRVU03UzBGRGVrTXNUVUZCVFR0QlFVTk1MRlZCUVVrc1EwRkJReXhsUVVGbExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4bFFVRmxMRU5CUVVNN1MwRkRjRVE3TzBGQlJVUXNVVUZCU1N4RFFVRkRMR05CUVdNc1IwRkJSeXhQUVVGUExFTkJRVU03UjBGREwwSTdPenM3T3pzN096czdPMEZCVjBRc1VVRkJUU3hGUVVGRkxHdENRVUZYTzBGQlEycENMRkZCUVVrc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJTeEZRVUZGTzBGQlEyNUNMRlZCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zVlVGQlFTeFBRVUZQTzJWQlFVa3NRMEZCUXl4aFFVRmhMRVZCUVVVc1QwRkJUeXhGUVVGRkxFOUJRVThzUTBGQlF6dFBRVUZCTEVOQlFVTXNRMEZCUXpzN1FVRkZhRVVzVlVGQlNTeERRVUZETEZWQlFWVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1MwRkRka1FzVFVGQlRUdEJRVU5NTEZWQlFVa3NTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF6dEJRVU0xUWl4VlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRMlFzVFVGQlRTeEZRVU5PTEV0QlFVc3NSVUZEVEN4alFVRmpMRVZCUTJRc1NVRkJTU3hEUVVGRExHTkJRV01zUTBGQlF5eExRVUZMTEVWQlFVVXNVMEZCVXl4RlFVRkZMRWxCUVVrc1EwRkJReXhGUVVNelF5eEpRVUZKTEVOQlEwd3NRMEZCUXl4RFFVRkRPMEZCUTBnc1ZVRkJTU3hKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEZGQlFWRXNSVUZCUlR0QlFVTTNRaXhaUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlEyUXNVMEZCVXl4RlFVTlVMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zU1VGQlNTeEZRVUZGTEZOQlFWTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1JVRkRNVU1zU1VGQlNTeERRVU5NTEVOQlFVTXNRMEZCUXp0UFFVTktPMHRCUTBZN1IwRkRSanM3T3pzN096czdRVUZSUkN4bFFVRmhMRVZCUVVVc2VVSkJRVmM3UVVGRGVFSXNVVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkRZaXhKUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEVOQlEyeENMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zTkVKQlFUUkNMRU5CUVVNc1JVRkROVU1zUjBGQlJ5eEZRVU5JTEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVc1JVRkRaaXhIUVVGSExFTkJRMG9zUTBGQlF5eERRVU5JTEVOQlFVTTdSMEZEU0RzN096czdPenM3TzBGQlUwUXNXVUZCVlN4RlFVRkZMRzlDUVVGVExFdEJRVXNzUlVGQlJUdEJRVU14UWl4UlFVRkpMRU5CUVVNc1YwRkJWeXhIUVVGSExFdEJRVXNzUTBGQlF6dEhRVU14UWpzN096czdPenM3UVVGUlJDeGhRVUZYTEVWQlFVVXNkVUpCUVZjN1FVRkRkRUlzVVVGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRExFTkJRVU03UjBGRE0wUTdPenM3T3pzN096dEJRVk5FTEdsQ1FVRmxMRVZCUVVVc2VVSkJRVk1zUzBGQlN5eEZRVUZGTEV0QlFVc3NSVUZCUlN4TlFVRk5MRVZCUVVVc1RVRkJUU3hGUVVGRk8wRkJRM1JFTEZGQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenM3UVVGRlZpeFJRVUZKTEVOQlFVTXNUVUZCVFN4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVFVGQlRTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmRCUVZjc1JVRkJSVHM3TzBGQlIzWkVMRlZCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTMEZETTBNc1RVRkJUVHRCUVVOTUxGVkJRVWtzUTBGQlF5eFhRVUZYTEVWQlFVVXNRMEZCUXp0TFFVTndRanM3UVVGRlJDeFJRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRk5CUVZNc1JVRkJSU3hMUVVGTExFVkJRVVVzUTBGQlF5eEZRVUZGTEV0QlFVc3NSVUZCUlN4TlFVRk5MRU5CUVVNc1EwRkJRenRIUVVOMFJEczdPenM3T3pzN08wRkJVMFFzYTBKQlFXZENMRVZCUVVVc01FSkJRVk1zV1VGQldTeEZRVUZGTEV0QlFVc3NSVUZCUlR0QlFVTTVReXhSUVVGSkxFTkJRVU1zWTBGQll5eEhRVUZITEVsQlFVa3NRMEZCUXpzN1FVRkZNMElzVVVGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMR05CUVdNc1JVRkJSU3haUVVGWkxFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RlFVRkZMRmxCUVZrc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUTNwRkxGRkJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNVMEZCVXl4RlFVRkZMRXRCUVVzc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dEhRVU4yUXpzN096czdPenM3UVVGUlJDeFpRVUZWTEVWQlFVVXNiMEpCUVZNc1MwRkJTeXhGUVVGRkxFdEJRVXNzUlVGQlJTeE5RVUZOTEVWQlFVVTdRVUZEZWtNc1VVRkJTU3hEUVVGRExFdEJRVXNzUlVGQlJUdEJRVU5XTEZWQlFVa3NRMEZCUXl4blFrRkJaMElzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0TFFVTXZRaXhOUVVGTk8wRkJRMHdzVlVGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExIVkNRVUYxUWl4SFFVRkhMRXRCUVVzc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF6dExRVU01UkRzN1FVRkZSQ3hSUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEUxQlFVMHNSVUZCUlN4TFFVRkxMRVZCUVVVc1EwRkJReXhGUVVGRkxFbEJRVWtzUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUXp0SFFVTnNSRHM3UVVGRlJDeGhRVUZYTEVWQlFVVXNjVUpCUVZNc1NVRkJTU3hGUVVGRkxFdEJRVXNzUlVGQlJTeERRVUZETEVWQlFVVXNTMEZCU3l4RlFVRkZMRTFCUVUwc1JVRkJSVHM3T3pzN1FVRkRia1FzVVVGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFCUVUwc1NVRkJTU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEdGQlFXRXNSVUZCUlR0QlFVTnlSQ3hWUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzU1VGQlNTeE5RVUZOTEVWQlFVVXNTVUZCU1N4RlFVRkZMRXRCUVVzc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzBGQlF6RkZMR0ZCUVU4N1MwRkRVanM3UVVGRlJDeFJRVUZKTEVkQlFVY3NSMEZCUnl4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVGRE8wRkJRM1pDTEZkQlFVOHNRMEZCUXl4SFFVRkhMRWRCUVVjc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUczdRVUZGYmtJc1ZVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eFZRVUZCTEU5QlFVOHNSVUZCU1R0QlFVTXpRaXhaUVVGSkxFMUJRVTBzUjBGQlJ5eFBRVUZMTEZWQlFWVXNRMEZCUXl4UFFVRlBMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPenM3UVVGSGRFUXNXVUZCU1N4RFFVRkRMRXRCUVVzc1JVRkJSVHRCUVVOV0xHbENRVUZQTEVOQlFVTXNZVUZCWVN4RlFVRkZMRTFCUVUwc1JVRkJSU3hMUVVGTExFVkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTTdVMEZEYUVRc1RVRkJUVHM3UVVGRlRDeHBRa0ZCVHl4RFFVRkRMRTFCUVUwc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF6dFRRVU42UWp0UFFVTkdMRU5CUVVNc1EwRkJRenM3UzBGRlNqdEhRVU5HT3pzN096czdPenM3UVVGVFJDeDFRa0ZCY1VJc1JVRkJSU3hwUTBGQlZ6dEJRVU5vUXl4UlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRMUlzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4clFrRkJhMElzUTBGQlF5eEZRVU5zUXl4SFFVRkhMRVZCUTBnc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJTeEZRVU5tTEVsQlFVa3NSVUZEU2l4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVU51UWl4SFFVRkhMRU5CUTBvc1EwRkJReXhEUVVGRE8wZEJRMG83T3pzN096czdPenM3UVVGVlJDeHBRa0ZCWlN4RlFVRkZMSGxDUVVGVExFMUJRVTBzUlVGQlJTeEpRVUZKTEVWQlFVVTdRVUZEZEVNc1VVRkJTU3hEUVVGRExGZEJRVmNzUlVGQlJTeERRVUZETzBGQlEyNUNMRkZCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdPenM3UVVGSmRFSXNVVUZCU1N4SlFVRkpMRXRCUVVzc1pVRkJaU3hGUVVGRk8wRkJRelZDTEZWQlFVa3NUMEZCVHl4TlFVRk5MRXRCUVVzc1VVRkJVU3hGUVVGRk8wRkJRemxDTEZsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03VDBGRGVrSXNUVUZCVFR0QlFVTk1MRmxCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRQUVVNdlFqdExRVU5HTzBkQlEwWTdPMEZCUlVRc1YwRkJVeXhGUVVGRkxHMUNRVUZUTEZOQlFWTXNSVUZCUlR0QlFVTTNRaXhSUVVGSkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVTdRVUZEYWtJc1ZVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0TFFVTnFRanRCUVVORUxGRkJRVWtzU1VGQlNTeERRVUZETEZsQlFWa3NSVUZCUlR0QlFVTnlRaXhWUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMEZCUTJoQ0xGVkJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1MwRkRha0k3UVVGRFJDeFJRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zVTBGQlV5eEhRVUZITEZkQlFWY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJRenRIUVVOMlJEdEJRVU5FTEZWQlFWRXNSVUZCUlN4dlFrRkJWenRCUVVOdVFpeFJRVUZKTEVsQlFVa3NRMEZCUXl4SlFVRkpMRVZCUVVVN1FVRkRZaXhWUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03UzBGRE4wSTdRVUZEUkN4UlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFVkJRVVVzVFVGQlRTeEZRVUZGTEVWQlFVVXNSVUZCUlN4TFFVRkxMRVZCUVVVc1JVRkJSU3hGUVVGRkxGRkJRVkVzUlVGQlJTeEZRVUZGTEVWQlFVVXNSMEZCUnl4RlFVRkZMRVZCUVVVc1JVRkJSU3hEUVVGRE8wZEJRemxFTzBGQlEwUXNVMEZCVHl4RlFVRkZMRzFDUVVGWE8wRkJRMnhDTEZGQlFVa3NTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU03UVVGRGNrSXNVVUZCU1N4RFFVRkRMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRPenRCUVVVNVFpeFJRVUZKTEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVN1FVRkRha0lzVlVGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMHRCUTNwRE8wRkJRMFFzVVVGQlNTeEpRVUZKTEVOQlFVTXNXVUZCV1N4RlFVRkZPMEZCUTNKQ0xGVkJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTTNReXhWUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTTdTMEZETTBNN08wRkJSVVFzVVVGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGRCUXpWRE96czdPenM3T3p0QlFWRkVMRmxCUVZVc1JVRkJSU3h2UWtGQlV5eE5RVUZOTEVWQlFVVTdRVUZETTBJc1VVRkJTU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXp0SFFVTnNSRHM3T3pzN096czdPenRCUVZWRUxHRkJRVmNzUlVGQlJTeHhRa0ZCVXl4TFFVRkxMRVZCUVVVN1FVRkRNMElzVVVGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzBkQlF6bENPenM3T3pzN096czdPMEZCVlVRc1lVRkJWeXhGUVVGRkxIRkNRVUZUTEVsQlFVa3NSVUZCUlR0QlFVTXhRaXhSUVVGSkxFbEJRVWtzU1VGQlNTeEpRVUZKTEVWQlFVVTdRVUZEYUVJc1ZVRkJTU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRWxCUVVrc1EwRkJReXhwUWtGQmFVSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8wdEJRM0pFTEUxQlFVMDdRVUZEVEN4VlFVRkpMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1MwRkROMEk3UjBGRFJqczdPenM3T3pzN08wRkJVMFFzYlVKQlFXbENMRVZCUVVFc01rSkJRVU1zVTBGQlV5eEZRVUZGTEVsQlFVa3NSVUZCUlR0QlFVTnFReXhSUVVGSkxHTkJRV01zUjBGQlJ5eEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRmxCUVZrc1JVRkJSU3hKUVVGSkxFVkJRVVVzVjBGQlZ5eERRVUZETzFGQlEyNUZMRTlCUVU4c1IwRkJSeXhKUVVGSkxFTkJRVU1zWlVGQlpTeERRVUZETEVsQlFVa3NSVUZCUlN4VFFVRlRMRU5CUVVNc1EwRkJRenM3UVVGRmJFUXNVVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGRGJrSXNUMEZCVHl4RlFVTlFMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRVU1zV1VGQldTeERRVUZETEdOQlFXTXNSVUZCUlN4RlFVRkZMRVZCUVVVc1EwRkRMME1zU1VGQlNTeEZRVU5LTEU5QlFVOHNSVUZEVUN4WFFVRlhMRVZCUTFnc1QwRkJUeXhEUVVOU0xFTkJRVU1zUlVGRFJpeFRRVUZUTEVOQlExWXNRMEZCUXl4RFFVRkRPMGRCUTBvN096czdPenM3T3pzN08wRkJWMFFzWTBGQldTeEZRVUZGTEhOQ1FVRlRMRk5CUVZNc1JVRkJSU3hKUVVGSkxFVkJRVVVzVVVGQlVTeEZRVUZGTzBGQlEyaEVMRkZCUVVrc1UwRkJVeXhIUVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVTdVVUZETjBJc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTXNVMEZCVXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRE96dEJRVVUzUXl4UlFVRkpMSEZDUVVGeFFpeEhRVUZITEVWQlFVVXNRMEZCUXpzN1FVRkZMMElzVVVGQlNTeFJRVUZSTEVWQlFVVTdPMEZCUlZvc01rSkJRWEZDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dExRVU42UXpzN1FVRkZSQ3g1UWtGQmNVSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU03UVVGRGRFTXNVVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVFVGQlRTeEZRVUZGTzBGQlEzaENMREpDUVVGeFFpeERRVUZETEVsQlFVa3NRMEZEZUVJc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5d3JRa0ZCSzBJc1EwRkJReXhEUVVOb1JDeERRVUZETzB0QlEwZzdPMEZCUlVRc1VVRkJTU3hyUWtGQmEwSXNSMEZCUnl4RFFVTjJRaXhIUVVGSExFVkJRMGdzU1VGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExIRkNRVUZ4UWl4RlFVRkZMRWxCUVVrc1EwRkJReXhGUVVOc1JDeEhRVUZITEVOQlEwb3NRMEZCUXp0QlFVTkdMRkZCUVVrc1dVRkJXU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNXVUZCV1N4RFFVTjZReXhyUWtGQmEwSXNSVUZEYkVJc1RVRkJUU3hGUVVOT0xFMUJRVTBzUTBGQlF5eFZRVUZWTEVOQlEyeENMRU5CUVVNN1FVRkRSaXhSUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRPMGRCUTNwQ096dEJRVVZFTEd0Q1FVRm5RaXhGUVVGRkxEQkNRVUZUTEV0QlFVc3NSVUZCUlN4VFFVRlRMRVZCUVVVN1FVRkRNME1zVVVGQlNTeE5RVUZOTEVkQlFVY3NSVUZCUlN4RFFVRkRPMEZCUTJoQ0xGVkJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGRFSXNVMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3UVVGRGNrTXNXVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1MwRkRiRU03UVVGRFJDeFhRVUZQTEUxQlFVMHNRMEZCUXp0SFFVTm1PenM3T3pzN096dEJRVkZFTEcxQ1FVRnBRaXhGUVVGRkxESkNRVUZUTEZOQlFWTXNSVUZCUlN4SlFVRkpMRVZCUVVVN1FVRkRNME1zVVVGQlNTeE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhUUVVGVExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdRVUZETDBNc1VVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRmxCUVZrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeEZRVUZGTEUxQlFVMHNSVUZCUlN4TlFVRk5MRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU1zUTBGQlF6dEhRVU0zUlRzN096czdPenM3T3pzN096czdRVUZqUkN4cFFrRkJaU3hGUVVGRkxIbENRVUZUTEVsQlFVa3NSVUZCUlN4VlFVRlZMRVZCUVVVN1FVRkRNVU1zVVVGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenM3UVVGRk0wSXNVVUZCU1N4VFFVRlRMRWRCUVVjc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZET3p0QlFVVm9ReXhSUVVGSkxFTkJRVU1zVTBGQlV5eEZRVUZGTEVOQlFVTTdRVUZEYWtJc1VVRkJTU3hOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hGUVVGRkxGVkJRVlVzUTBGQlF5eERRVUZET3p0QlFVVnVSQ3hSUVVGSkxGVkJRVlVzUjBGQlNTeEpRVUZKTEVOQlFVTXNWVUZCVlN4SFFVRkhMRWxCUVVrc1EwRkJReXhWUVVGVkxFTkJRMnBFTEZOQlFWTXNSVUZEVkN4SlFVRkpMRVZCUTBvc1VVRkJVU3hEUVVOVUxFRkJRVU1zUTBGQlF6czdRVUZGU0N4UlFVRkpMRTFCUVUwc1IwRkJSeXhEUVVGRExFZEJRVWNzUlVGQlJTeFpRVUZaTEVWQlFVVXNWVUZCVlN4RlFVRkZMRTFCUVUwc1JVRkJSU3hUUVVGVExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdRVUZEY2tVc1VVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNUVUZCVFN4RlFVRkZPMEZCUTNoQ0xGbEJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4WlFVRlpMRU5CUVVNN1FVRkRla0lzV1VGQlRTeERRVUZETEVsQlFVa3NRMEZEVkN4elFrRkJjMElzUlVGRGRFSXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXdyUWtGQkswSXNRMEZCUXl4RFFVTm9SQ3hEUVVGRE8wdEJRMGc3TzBGQlJVUXNVVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVOU0xFZEJRVWNzUlVGRFNDeE5RVUZOTEVWQlEwNHNUVUZCVFN4RFFVRkRMRlZCUVZVc1IwRkJSeXhEUVVGRExFdEJRVXNzUlVGQlJTeE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRMRWRCUVVjc1JVRkJSU3hGUVVOdVJDeEpRVUZKTEVWQlEwb3NjVUpCUVhGQ0xFVkJRM0pDTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1dVRkJXU3hEUVVGRExFVkJRelZDTEV0QlFVc3NSVUZEVEN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExGbEJRVmtzUTBGQlF5eFJRVUZSTEVWQlFVVXNUVUZCVFN4RlFVRkZMRTFCUVUwc1EwRkJReXhWUVVGVkxFTkJRVU1zUlVGRE4wUXNZVUZCWVN4RFFVTmtMRU5CUVVNc1EwRkJRenRIUVVOS096czdPenM3T3pzN1FVRlRSQ3hsUVVGaExFVkJRVVVzZFVKQlFWTXNVMEZCVXl4RlFVRkZMRWxCUVVrc1JVRkJSU3hOUVVGTkxFVkJRVVU3UVVGREwwTXNVVUZCU1N4TlFVRk5MRWRCUVVjc1JVRkJSVHRSUVVOaUxFOUJRVThzUjBGQlJ5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTTdPMEZCUlRsRExGRkJRVWtzVTBGQlV5eEZRVUZGTzBGQlEySXNWVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF6dEJRVU4yUWl4aFFVRlBMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU03UzBGRGNrSTdPMEZCUlVRc1VVRkJTU3hOUVVGTkxFVkJRVVU3UVVGRFZpeGhRVUZQTEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTMEZEZWtNN1FVRkRSQ3hYUVVGUExFTkJRVU1zVDBGQlR5eEhRVUZITEZOQlFWTXNRMEZCUXp0QlFVTTFRaXhYUVVGUExFTkJRVU1zVVVGQlVTeEhRVUZITEZWQlFWVXNRMEZCUXp0QlFVTTVRaXhYUVVGUExFTkJRVU1zVlVGQlZTeEhRVUZITEhOQ1FVRnpRaXhEUVVGRE96dEJRVVUxUXl4UlFVRkpMRU5CUVVNc1UwRkJVeXhGUVVGRk8wRkJRMlFzV1VGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExGVkJRVlVzUlVGQlJTeEpRVUZKTEVWQlFVVXNVMEZCVXl4RFFVRkRMRU5CUVVNc1EwRkJRenRMUVVNNVJDeE5RVUZOTzBGQlEwd3NXVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dExRVU4wUWpzN1FVRkZSQ3hSUVVGSkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNUVUZCVFN4RlFVRkZPMEZCUTNaQ0xHRkJRVThzUTBGQlF5eE5RVUZOTEVkQlFVY3NVVUZCVVN4RFFVRkRPMHRCUXpOQ08wRkJRMFFzVjBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03UVVGRGRFTXNWVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6czdRVUZGY2tJc1VVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRmxCUVZrc1EwRkJReXg1UWtGQmVVSXNSVUZCUlN4RlFVRkZMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF6dEhRVU0xUlRzN096czdPenM3UVVGUlJDeGpRVUZaTEVWQlFVVXNjMEpCUVZNc1IwRkJSeXhGUVVGRk8wRkJRekZDTEZGQlFVa3NTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVU3VVVGRGVrSXNUMEZCVHl4WlFVRkJPMUZCUTFBc1NVRkJTU3haUVVGQk8xRkJRMG9zUlVGQlJTeFpRVUZCTEVOQlFVTTdPMEZCUlV3c1VVRkJTU3hKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTzBGQlEycENMRkZCUVVVc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdTMEZEZEVJN1FVRkRSQ3hSUVVGSkxFbEJRVWtzUTBGQlF5eFpRVUZaTEVWQlFVVTdRVUZEY2tJc1ZVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXp0QlFVTjJRaXhoUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRPMHRCUXpOQ096dEJRVVZFTEZGQlFVa3NTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU03UVVGRGNrSXNVVUZCU1N4UFFVRlBMRVZCUVVVN1FVRkRXQ3hWUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRTlCUVU4c1EwRkJRenRMUVVNNVFqdEJRVU5FTEZGQlFVa3NTVUZCU1N4RlFVRkZPMEZCUTFJc1ZVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNN1MwRkRlRUk3UVVGRFJDeFJRVUZKTEVWQlFVVXNSVUZCUlR0QlFVTk9MRlZCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRPMHRCUTNCQ08wRkJRMFFzVVVGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhMUVVGTExFTkJRVU03UjBGRE1VSTdPMEZCUlVRc1VVRkJUU3hGUVVGRkxHZENRVUZUTEVsQlFVa3NSVUZCUlN4SlFVRkpMRVZCUVVVc1MwRkJTeXhGUVVGRk8wRkJRMnhETEZGQlFVa3NTVUZCU1N4TFFVRkxMRmxCUVZrc1JVRkJSVHRCUVVONlFpeFZRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRMjVDTEdOQlFXTXNSMEZEV2l4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRMUFzVTBGQlV5eEhRVU5VTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkRVQ3hIUVVGSExFbEJRMFlzUzBGQlN5eEhRVUZITEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFZEJRVWNzUjBGQlJ5eExRVUZMTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVFc1FVRkJReXhEUVVOeVJDeERRVUZETzB0QlEwZ3NUVUZCVFN4SlFVRkpMRWxCUVVrc1MwRkJTeXhuUWtGQlowSXNSVUZCUlR0QlFVTndReXhWUVVGSkxFTkJRVU1zVlVGQlZTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMHRCUTNaQ0xFMUJRVTBzU1VGQlNTeEpRVUZKTEV0QlFVc3NaVUZCWlN4RlFVRkZPMEZCUTI1RExGVkJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dExRVU12UWl4TlFVRk5PMEZCUTB3c1ZVRkJTU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wdEJReTlDTzBkQlEwWTdPenM3UVVGSlJDeFZRVUZSTEVWQlFVVXNhMEpCUVd0Q096dEJRVVUxUWl4cFFrRkJaU3hGUVVGRkxIbENRVUZUTEZkQlFWY3NSVUZCUlN4UFFVRlBMRVZCUVVVN1FVRkRPVU1zVVVGQlNTeFJRVUZSTEVkQlFVY3NWMEZCVnl4RFFVRkRMRkZCUVZFN1VVRkRha01zUzBGQlN5eFpRVUZCTzFGQlEwd3NVVUZCVVN4WlFVRkJMRU5CUVVNN08wRkJSVmdzVTBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExGRkJRVkVzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdEJRVU12UXl4WFFVRkxMRWRCUVVjc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlEzQkNMR05CUVZFc1IwRkJSeXhKUVVGSkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXpzN1FVRkZMMElzVlVGQlNTeFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRMRzlDUVVGdlFpeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPenRCUVVWb1JDeFZRVUZKTEZGQlFWRXNTVUZCU1N4SlFVRkpMRVZCUVVVN1FVRkRjRUlzV1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzBGQlF5OUNMRmxCUVVrc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTFCUVUwc1EwRkJRenRCUVVONlF5eGhRVUZMTEVOQlFVTXNTMEZCU3l4SFFVRkhMRXRCUVVzc1EwRkJRenRCUVVOd1FpeGhRVUZMTEVOQlFVTXNTVUZCU1N4SFFVRkhMRk5CUVZNc1IwRkJSeXhMUVVGTExFTkJRVU03UVVGREwwSXNXVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhSUVVGUkxFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NVVUZCVVN4RFFVRkRMRTlCUVU4c1EwRkROME1zUzBGQlN5eEZRVU5NTEU5QlFVOHNSVUZEVUN4SlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVOYUxFTkJRVU1zU1VGQlNTeERRVUZETEZWQlFWVXNRMEZEYWtJc1EwRkJRenRCUVVOR0xGbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNWVUZCVlN4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExGRkJRVkVzUTBGQlF5eFZRVUZWTEVOQlFVTTdRVUZEY2tRc1dVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFpRVUZaTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRE96dEJRVVY2UXl4WlFVRkpMRU5CUVVNc1UwRkJVeXhIUVVGSExFbEJRVWtzUTBGQlF5eFRRVUZUTEVsQlFVa3NVVUZCVVN4RFFVRkRMRk5CUVZNc1EwRkJRenRCUVVOMFJDeFpRVUZKTEVOQlFVTXNZMEZCWXl4SFFVRkhMRWxCUVVrc1EwRkJReXhqUVVGakxFbEJRVWtzVVVGQlVTeERRVUZETEdOQlFXTXNRMEZCUXp0QlFVTnlSU3hoUVVGTExFTkJRVU1zVTBGQlV5eEhRVUZITEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNN1FVRkRha01zWVVGQlN5eERRVUZETEdOQlFXTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRE8wOUJRelZETEUxQlFVMDdRVUZEVEN4aFFVRkxMRU5CUVVNc1MwRkJTeXhIUVVGSExGRkJRVkVzUTBGQlF5eExRVUZMTEVOQlFVTTdRVUZETjBJc1lVRkJTeXhEUVVGRExFbEJRVWtzUjBGQlJ5eFRRVUZUTEVkQlFVY3NVVUZCVVN4RFFVRkRMRXRCUVVzc1EwRkJRenM3UVVGRmVFTXNXVUZCU1N4RFFVRkRMRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVTBGQlV5eEpRVUZKTEZGQlFWRXNRMEZCUXl4VFFVRlRMRU5CUVVNN1FVRkRkRVFzV1VGQlNTeERRVUZETEdOQlFXTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1kwRkJZeXhKUVVGSkxGRkJRVkVzUTBGQlF5eGpRVUZqTEVOQlFVTTdUMEZEZEVVN1MwRkRSanRIUVVOR08wRkJRMFFzYzBKQlFXOUNMRVZCUVVVc09FSkJRVk1zUzBGQlN5eEZRVUZGTzBGQlEzQkRMRk5CUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExGbEJRVmtzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4SFFVRkhMRWRCUVVjc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdEJRVU53UlN4VlFVRkpMRmRCUVZjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVNdlF5eFZRVUZKTEZkQlFWY3NTVUZCU1N4WFFVRlhMRU5CUVVNc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eEZRVUZGTzBGQlF6VkRMR1ZCUVU4c1YwRkJWeXhEUVVGRE8wOUJRM0JDTzB0QlEwWTdSMEZEUmpzN1FVRkZSQ3h0UWtGQmFVSXNSVUZCUlN3eVFrRkJVeXhKUVVGSkxFVkJRVVU3UVVGRGFFTXNVVUZCU1N4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRPMUZCUTNwRExHRkJRV0VzUjBGQlJ5eERRVUZETEV0QlFVc3NRMEZCUXl4TFFVRkxMRVZCUVVVc1RVRkJUU3hGUVVGRkxFdEJRVXNzUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXpzN1FVRkZNMFFzVVVGQlNTeEpRVUZKTEVOQlFVTXNZMEZCWXl4SlFVRkpMRWxCUVVrc1EwRkJReXhUUVVGVExFVkJRVVU3UVVGRGVrTXNiVUpCUVdFc1EwRkJReXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEVOQlFVTTdTMEZEYmtNN1FVRkRSQ3hSUVVGSkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVWQlFVVTdRVUZEYkVJc2JVSkJRV0VzUTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNN1MwRkRPVUk3TzBGQlJVUXNWMEZCVHl4dlFrRkJiMElzUjBGQlJ5eGhRVUZoTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFZEJRVWNzUTBGQlF6dEhRVU01UkRzN1FVRkZSQ3hoUVVGWExFVkJRVVVzY1VKQlFWTXNTVUZCU1N4RlFVRkZPMEZCUXpGQ0xGRkJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRk8wRkJRM3BDTEZWQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETzBGQlF6VkNMRlZCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRMUVVOb1F6dEhRVU5HT3p0QlFVVkVMRTFCUVVrc1JVRkJSU3hqUVVGVExFbEJRVWtzUlVGQlJUdEJRVU51UWl4UlFVRkpMRVZCUVVVc1NVRkJTU3haUVVGWkxFOUJRVThzUTBGQlFTeEJRVUZETEVWQlFVVTdRVUZET1VJc1ZVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wdEJReTlDT3p0QlFVVkVMRkZCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMEZCUXpWQ0xGZEJRVThzU1VGQlNTeERRVUZETzBkQlEySTdPMEZCUlVRc2EwSkJRV2RDTEVWQlFVVXNNRUpCUVZNc1NVRkJTU3hGUVVGRk8wRkJReTlDTEZGQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0SFFVTTVRanM3UVVGRlJDeFpRVUZWTEVWQlFVVXNiMEpCUVZNc1RVRkJUU3hGUVVGRk8wRkJRek5DTEZGQlFVa3NTVUZCU1N4RFFVRkRMR05CUVdNc1JVRkJSVHRCUVVOMlFpeFZRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkRaQ3hKUVVGSkxFTkJRVU1zWTBGQll5eERRVU5xUWl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExGbEJRVmtzUTBGQlF5eEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRVZCUXpkRExFbEJRVWtzUTBGQlF5eGxRVUZsTEVOQlEzSkNMRU5CUTBZc1EwRkJRenRCUVVOR0xGVkJRVWtzUTBGQlF5eGpRVUZqTEVkQlFVY3NVMEZCVXl4RFFVRkRPMHRCUTJwRE96dEJRVVZFTEZGQlFVa3NUVUZCVFN4RlFVRkZPMEZCUTFZc1ZVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1MwRkRNVUk3UjBGRFJqczdRVUZGUkN4alFVRlpMRVZCUVVVc2MwSkJRVk1zVVVGQlVTeEZRVUZGTzBGQlF5OUNMRkZCUVVrc1RVRkJUU3hIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETzFGQlEyaENMRXRCUVVzc1dVRkJRVHRSUVVOTUxGbEJRVmtzV1VGQlFUdFJRVU5hTEZkQlFWY3NXVUZCUVN4RFFVRkRPenM3UVVGSFpDeFJRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1JVRkJSU3hGUVVGRk8wRkJRM0JDTEZsQlFVMHNNa0pCUVdNc05FSkJRVFJDTEVOQlFVTXNRMEZCUXp0TFFVTnVSRHM3TzBGQlIwUXNVVUZCU1N4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXpzN1FVRkZPVUlzVVVGQlNTeEhRVUZITEZsQlFWa3NUMEZCVHl4RlFVRkZPenRCUVVVeFFpeFhRVUZMTEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03UVVGRGNFSXNXVUZCVFN4SFFVRkhMRU5CUVVNc1IwRkJSeXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzBGQlEzUkNMR2xDUVVGWExFZEJRVWNzU1VGQlNTeERRVUZETzB0QlEzQkNMRTFCUVUwN08wRkJSVXdzYTBKQlFWa3NSMEZCUnl4SlFVRkpMRU5CUVVNN1FVRkRjRUlzVlVGQlNTeExRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRE96dEJRVVUxUWl4WlFVRk5MRWRCUVVjc1EwRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkpMRU5CUVVNc1JVRkJSU3hMUVVGTExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMEZCUTJ4RUxGZEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN1MwRkRla0k3TzBGQlJVUXNVVUZCU1N4SlFVRkpMRWRCUVVjc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN08wRkJSWFJETEZGQlFVa3NRMEZCUXl4WFFVRlhMRVZCUVVVN1FVRkRhRUlzVlVGQlNTeERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRPMHRCUTJwQ08wRkJRMFFzVVVGQlNTeFpRVUZaTEVWQlFVVTdRVUZEYUVJc1ZVRkJTU3hEUVVGRExGTkJRVk1zUlVGQlJTeERRVUZETzB0QlEyeENPMEZCUTBRc1VVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzBkQlEzSkRPenRCUVVWRUxGZEJRVk1zUlVGQlJTeHhRa0ZCVnp0QlFVTndRaXhSUVVGSkxFTkJRVU1zVTBGQlV5eEZRVUZGTEVOQlFVTTdRVUZEYWtJc1VVRkJTU3hKUVVGSkxFTkJRVU1zVTBGQlV5eEhRVUZITEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1RVRkJUU3hGUVVGRk8wRkJRekZETEZWQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRU5CUVVNN1MwRkRMME03UVVGRFJDeFhRVUZQTEVsQlFVa3NRMEZCUXl4WlFVRlpMRVZCUVVVc1EwRkJRenRIUVVNMVFqdEJRVU5FTEdOQlFWa3NSVUZCUlN4M1FrRkJWenRCUVVOMlFpeFhRVUZQTEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRE8wZEJRMnBETzBGQlEwUXNZVUZCVnl4RlFVRkZMSFZDUVVGWE8wRkJRM1JDTEZGQlFVa3NWMEZCVnl4SFFVRkhMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU03UVVGRGJrTXNVVUZCU1N4RFFVRkRMRmRCUVZjc1IwRkJSeXhGUVVGRkxFTkJRVU03UVVGRGRFSXNVMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUjBGQlJ5eEhRVUZITEZkQlFWY3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhIUVVGSExFZEJRVWNzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0QlFVTjBSQ3hWUVVGSkxFdEJRVXNzUjBGQlJ5eFhRVUZYTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN08wRkJSVE5DTEZWQlFVa3NTMEZCU3l4WlFVRlpMRTlCUVU4c1JVRkJSVHRCUVVNMVFpeFpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dFBRVU12UWl4TlFVRk5PMEZCUTB3c1dVRkJTU3hMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEZOQlFWTXNSVUZCUlN4RFFVRkRPMEZCUXpkQ0xGbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXl4TFFVRkxMRVZCUVVVc1MwRkJTeXhGUVVGRkxFdEJRVXNzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMEZCUXpWRExGbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRE8wOUJReTlDTzB0QlEwWTdSMEZEUmp0QlFVTkVMRlZCUVZFc1JVRkJSU3h2UWtGQlZ6dEJRVU51UWl4WFFVRlBMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zVFVGQlRTeERRVUZETzBkQlEyaERPenRCUVVWRUxGVkJRVkVzUlVGQlJTeHJRa0ZCVXl4UFFVRlBMRVZCUVVVN1FVRkRNVUlzVVVGQlNTeE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMRkZCUVZFc1JVRkJSVHRSUVVNeFFpeEpRVUZKTEVkQlFVY3NRMEZCUXl4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExGZEJRVmNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RFFVRkJMRU5CUVVVc1IwRkJSeXhGUVVGRkxFTkJRVU03TzBGQlJTOUVMRkZCUVVrc1EwRkJReXhQUVVGUExFbEJRVWtzU1VGQlNTeFpRVUZaTEU5QlFVOHNSVUZCUlR0QlFVTjJReXhoUVVGUExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTTdTMEZEYmtJc1RVRkJUVHRCUVVOTUxGVkJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVTdPMEZCUlZnc1dVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFRRVUZUTEVWQlFVVTdRVUZEYmtJc1owSkJRVTBzTWtKQlFXTXNiVUpCUVcxQ0xFTkJRVU1zUTBGQlF6dFRRVU14UXp0QlFVTkVMRmxCUVVrc1EwRkJReXhUUVVGVExFVkJRVVVzUTBGQlF6dFBRVU5zUWp0QlFVTkVMR0ZCUVU4c1NVRkJTU3hEUVVGRE8wdEJRMkk3UjBGRFJqczdRVUZGUkN4VlFVRlJMRVZCUVVVc2IwSkJRVmM3UVVGRGJrSXNVVUZCU1N4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJTeEhRVUZITEVsQlFVa3NRMEZCUXl4WFFVRlhMRWRCUVVjc1NVRkJTU3hEUVVGRExGbEJRVms3VVVGRGFFVXNTVUZCU1N4SFFVRkhMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPenM3UVVGSGFrTXNVVUZCU1N4SlFVRkpMRmxCUVZrc1QwRkJUeXhGUVVGRk8wRkJRek5DTEdGQlFVOHNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJRenRMUVVOdVFpeE5RVUZOTzBGQlEwd3NZVUZCVHl4SlFVRkpMRU5CUVVNN1MwRkRZanRIUVVOR096dEJRVVZFTEdGQlFWY3NSVUZCUlN4eFFrRkJVeXhQUVVGUExFVkJRVVU3UVVGRE4wSXNVVUZCU1N4SlFVRkpMRU5CUVVNc1UwRkJVeXhKUVVGSkxFOUJRVThzUlVGQlJUdEJRVU0zUWl4aFFVRlBMRk5CUVZNc1IwRkJSeXhQUVVGUExFZEJRVWNzUjBGQlJ5eERRVUZETzB0QlEyeERMRTFCUVUwN1FVRkRUQ3hoUVVGUExFOUJRVThzUjBGQlJ5eFBRVUZQTEVOQlFVTTdTMEZETVVJN1IwRkRSanM3UVVGRlJDeGpRVUZaTEVWQlFVVXNjMEpCUVZNc1IwRkJSeXhGUVVGRk8wRkJRekZDTEZkQlFVOHNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhaUVVGWkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdSMEZEZEVNN08wRkJSVVFzWlVGQllTeEZRVUZGTEhWQ1FVRlRMRWRCUVVjc1JVRkJSVHRCUVVNelFpeFhRVUZQTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1lVRkJZU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBkQlEzWkRPenRCUVVWRUxGZEJRVk1zUlVGQlJTeHRRa0ZCVXl4SlFVRkpMRVZCUVVVN1FVRkRlRUlzVVVGQlNTeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEJRVU0zUWl4UlFVRkpMRWRCUVVjc1JVRkJSVHRCUVVOUUxGTkJRVWNzUTBGQlF5eGpRVUZqTEVWQlFVVXNRMEZCUXp0QlFVTnlRaXhoUVVGUExFZEJRVWNzUTBGQlF6dExRVU5hT3p0QlFVVkVMRTlCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMEZCUTJ4RUxFOUJRVWNzUTBGQlF5eFRRVUZUTEVkQlFVY3NTVUZCU1N4RFFVRkRPMEZCUTNKQ0xFOUJRVWNzUTBGQlF5eGpRVUZqTEVkQlFVY3NRMEZCUXl4RFFVRkRPenRCUVVWMlFpeFhRVUZQTEVkQlFVY3NRMEZCUXp0SFFVTmFPenRCUVVWRUxHRkJRVmNzUlVGQlJTeHhRa0ZCVXl4VFFVRlRMRVZCUVVVc1NVRkJTU3hGUVVGRkxGZEJRVmNzUlVGQlJUdEJRVU5zUkN4UlFVRkpMRTFCUVUwc1IwRkJSeXhGUVVGRk8xRkJRMklzVlVGQlZTeEhRVUZITEVsQlFVa3NRMEZCUXl4bFFVRmxMRU5CUVVNc1NVRkJTU3hGUVVGRkxGTkJRVk1zUlVGQlJTeE5RVUZOTEVWQlFVVXNWMEZCVnl4RFFVRkRMRU5CUVVNN1FVRkRNVVVzVVVGQlNTeFhRVUZYTEVkQlFVY3NTVUZCU1N4RFFVRkRMRlZCUVZVc1EwRkJReXhUUVVGVExFVkJRVVVzU1VGQlNTeEZRVUZGTEZGQlFWRXNRMEZCUXp0UlFVTXhSQ3hYUVVGWExFZEJRVWNzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZEZGtJc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETEVOQlFVTXNiVUpCUVdNc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGRGJFUXNRMEZCUXl4RFFVTkdMSE5EUVVOR0xFTkJRVU03TzBGQlJVb3NWMEZCVHp0QlFVTk1MRmxCUVUwc1JVRkJSU3hOUVVGTk8wRkJRMlFzWjBKQlFWVXNSVUZCUlN4VlFVRlZPMEZCUTNSQ0xGVkJRVWtzUlVGQlJTeFhRVUZYTzBGQlEycENMR2RDUVVGVkxFVkJRVVVzUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRE8wdEJRM3BETEVOQlFVTTdSMEZEU0RzN1FVRkZSQ3hoUVVGWExFVkJRVVVzY1VKQlFWTXNUVUZCVFN4RlFVRkZMRk5CUVZNc1JVRkJSU3hOUVVGTkxFVkJRVVU3UVVGREwwTXNVVUZCU1N4UFFVRlBMRWRCUVVjc1JVRkJSVHRSUVVOa0xGRkJRVkVzUjBGQlJ5eEZRVUZGTzFGQlEySXNTMEZCU3l4SFFVRkhMRVZCUVVVN1VVRkRWaXhIUVVGSExFZEJRVWNzUlVGQlJUdFJRVU5TTEZWQlFWVXNSMEZCUnl4RFFVRkRMRTFCUVUwN1VVRkRjRUlzUzBGQlN5eFpRVUZCTEVOQlFVTTdPMEZCUlZJc1VVRkJTU3hWUVVGVkxFVkJRVVU3UVVGRFpDeFpRVUZOTEVkQlFVY3NSVUZCUlN4RFFVRkRPMHRCUTJJN08wRkJSVVFzVjBGQlR5eERRVUZETEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzBGQlEzcERMRmRCUVU4c1EwRkJReXhKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRPenRCUVVVdlFpeFJRVUZKTEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVN1FVRkRha0lzWVVGQlR5eERRVUZETEU5QlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU03UzBGRGJrTTdRVUZEUkN4UlFVRkpMRWxCUVVrc1EwRkJReXhaUVVGWkxFVkJRVVU3UVVGRGNrSXNZVUZCVHl4RFFVRkRMRk5CUVZNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdRVUZEY0VNc1lVRkJUeXhEUVVGRExGbEJRVmtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN1MwRkRlRU03TzBGQlJVUXNVVUZCU1N4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJUdFJRVU16UWl4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZET3pzN08wRkJTVFZDTEZGQlFVa3NUMEZCVHl4SlFVRkpMRTlCUVU4c1JVRkJSVHRCUVVOMFFpeGhRVUZQTEVOQlFVTXNSVUZCUlN4SFFVRkhMRTlCUVU4c1NVRkJTU3huUWtGQlowSXNRMEZCUXp0QlFVTjZReXhoUVVGUExFTkJRVU1zVDBGQlR5eEhRVUZITEU5QlFVOHNTVUZCU1N4blFrRkJaMElzUTBGQlF6dExRVU12UXpzN096dEJRVWxFTEZGQlFVa3NRMEZCUXl4SFFVRkhMRk5CUVZNc1EwRkJRenRCUVVOc1FpeFhRVUZQTEVOQlFVTXNSVUZCUlN4RlFVRkZPMEZCUTFZc1YwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXp0QlFVTjRRaXhaUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTMEZCU3l4RFFVRkRPenRCUVVWc1FpeFZRVUZKTEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVN1FVRkRha0lzVjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF6dFBRVU14UWp0QlFVTkVMRlZCUVVrc1NVRkJTU3hEUVVGRExGbEJRVmtzUlVGQlJUdEJRVU55UWl4aFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRPMEZCUXpOQ0xHZENRVUZSTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETzA5QlF5OUNPMHRCUTBZN08wRkJSVVFzVVVGQlNTeFZRVUZWTEVWQlFVVTdRVUZEWkN4aFFVRlBMRU5CUVVNc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNZVUZCWVN4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wdEJRMnhFT3p0QlFVVkVMRkZCUVVrc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJUdEJRVU5xUWl4aFFVRlBMRU5CUVVNc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNZVUZCWVN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8wdEJRemxETzBGQlEwUXNVVUZCU1N4SlFVRkpMRU5CUVVNc1dVRkJXU3hGUVVGRk8wRkJRM0pDTEdGQlFVOHNRMEZCUXl4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eGhRVUZoTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1FVRkRha1FzWVVGQlR5eERRVUZETEZGQlFWRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExHRkJRV0VzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXp0TFFVTjRSRHM3UVVGRlJDeFJRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hGUVVGRk8wRkJRM0pDTEdGQlFVOHNRMEZCUXl4SlFVRkpMRWRCUVVjc1RVRkJUU3hEUVVGRE8wdEJRM1pDTzBGQlEwUXNVVUZCU1N4SlFVRkpMRU5CUVVNc1kwRkJZeXhGUVVGRk8wRkJRM1pDTEdGQlFVOHNRMEZCUXl4WFFVRlhMRWRCUVVjc1lVRkJZU3hEUVVGRE8wdEJRM0pETzBGQlEwUXNWMEZCVHl4UFFVRlBMRU5CUVVNN1IwRkRhRUk3TzBGQlJVUXNhVUpCUVdVc1JVRkJSU3g1UWtGQlV5eE5RVUZOTEVWQlFVVXNVMEZCVXl4RlFVRkZMRTFCUVUwc1JVRkJSU3hYUVVGWExFVkJRVVU3UVVGRGFFVXNVVUZCU1N4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExGZEJRVmNzUTBGQlF5eE5RVUZOTEVWQlFVVXNVMEZCVXl4RlFVRkZMRTFCUVUwc1EwRkJReXhEUVVGRE8wRkJRekZFTEZkQlFVOHNRMEZCUXl4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMR1ZCUVdVc1EwRkJReXhEUVVGRE8wRkJRekZFTEZkQlFVOHNSMEZCUnl4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzBGQlEzUkRMRkZCUVVrc1YwRkJWeXhGUVVGRk8wRkJRMllzVlVGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJRenRCUVVNMVFpeFpRVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRE8wRkJRM1pDTEdGQlFVOHNRMEZCUXl4VlFVRlZMRVZCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU03UzBGRE9VSXNUVUZCVFN4SlFVRkpMRTFCUVUwc1JVRkJSVHRCUVVOcVFpeFpRVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wRkJRM0pDTEdGQlFVOHNSVUZCUlN4RFFVRkRPMHRCUTFnc1RVRkJUVHRCUVVOTUxHRkJRVThzVDBGQlR5eERRVUZETzB0QlEyaENPMGRCUTBZN1EwRkRSaXhEUVVGRE96dEJRVVZHTEVOQlFVTXNXVUZCVnp0QlFVTldMRTFCUVUwc1lVRkJZU3hIUVVGSExFTkJRM0JDTEc5Q1FVRnZRaXhIUVVOd1Fpd3lRa0ZCTWtJc1IwRkRNMElzZVVKQlFYbENMRWRCUTNwQ0xEaENRVUU0UWl4SFFVTTVRaXh0UWtGQmJVSXNSMEZEYmtJc1owSkJRV2RDTEVkQlEyaENMSFZDUVVGMVFpeEhRVU4yUWl3d1FrRkJNRUlzUjBGRE1VSXNhME5CUVd0RExFZEJRMnhETERCQ1FVRXdRaXhIUVVNeFFpeHBRMEZCYVVNc1IwRkRha01zTmtKQlFUWkNMRWRCUXpkQ0xDdENRVUVyUWl4SFFVTXZRaXg1UTBGQmVVTXNSMEZEZWtNc2RVTkJRWFZETEVkQlEzWkRMR3RDUVVGclFpeERRVUZCTEVOQlEyeENMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6czdRVUZGWWl4TlFVRk5MR0ZCUVdFc1IwRkJTU3hyUWtGQmEwSXNRMEZCUXl4alFVRmpMRWRCUVVjc1JVRkJSU3hCUVVGRExFTkJRVU03TzBGQlJTOUVMRTlCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4aFFVRmhMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1FVRkRjRVFzYVVKQlFXRXNRMEZCUXl4aFFVRmhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTTdSMEZEZUVNN1EwRkRSaXhEUVVGQkxFVkJRVWNzUTBGQlF6czdPenM3UVVGTFRDeHJRa0ZCYTBJc1EwRkJReXcyUWtGQk5rSXNSMEZCUnl4VlFVRlRMRWxCUVVrc1JVRkJSVHRCUVVOb1JTeFRRVU5GTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zWTBGQll5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVTjRReXcwUWtGQk5FSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRM1pETzBOQlEwZ3NRMEZCUXpzN1FVRkZSaXhUUVVGVExGbEJRVmtzUTBGQlF5eGxRVUZsTEVWQlFVVXNVVUZCVVN4RlFVRkZMRXRCUVVzc1JVRkJSU3hKUVVGSkxFVkJRVVU3UVVGRE5VUXNUVUZCU1N4TFFVRkxMRWRCUVVjc1VVRkJVU3hEUVVGRExGRkJRVkVzUlVGQlJUdE5RVU0zUWl4RFFVRkRMRWRCUVVjc1EwRkJRenROUVVOTUxFZEJRVWNzUjBGQlJ5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRPMEZCUTNKQ0xFMUJRVWtzWlVGQlpTeEZRVUZGTzBGQlEyNUNMRTlCUVVjc1JVRkJSU3hEUVVGRE8wZEJRMUE3TzBGQlJVUXNVMEZCVHl4RFFVRkRMRWRCUVVjc1IwRkJSeXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzBGQlEyNUNMRk5CUVVzc1IwRkJSeXhSUVVGUkxFTkJRVU1zVlVGQlZTeERRVUZETEV0QlFVc3NSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdSMEZEY0VRN08wRkJSVVFzVFVGQlNTeGxRVUZsTEVWQlFVVTdRVUZEYmtJc1YwRkJUeXhEUVVOTUxGRkJRVkVzUTBGQlF5eFRRVUZUTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zUlVGRGRFTXNSMEZCUnl4RlFVTklMRXRCUVVzc1JVRkRUQ3hKUVVGSkxFVkJRMG9zVVVGQlVTeERRVUZETEZsQlFWa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGREwwSXNTVUZCU1N4RlFVTktMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zVVVGQlVTeERRVUZETEUxQlFVMHNRMEZCUXl4bFFVRmxMRU5CUVVNc1JVRkRMME1zU1VGQlNTeERRVU5NTEVOQlFVTTdSMEZEU0N4TlFVRk5PMEZCUTB3c1YwRkJUeXhMUVVGTExFTkJRVU03UjBGRFpEdERRVU5HT3p0eFFrRkZZeXhyUWtGQmEwSWlMQ0ptYVd4bElqb2lhbUYyWVhOamNtbHdkQzFqYjIxd2FXeGxjaTVxY3lJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCN0lFTlBUVkJKVEVWU1gxSkZWa2xUU1U5T0xDQlNSVlpKVTBsUFRsOURTRUZPUjBWVElIMGdabkp2YlNBbkxpNHZZbUZ6WlNjN1hHNXBiWEJ2Y25RZ1JYaGpaWEIwYVc5dUlHWnliMjBnSnk0dUwyVjRZMlZ3ZEdsdmJpYzdYRzVwYlhCdmNuUWdleUJwYzBGeWNtRjVJSDBnWm5KdmJTQW5MaTR2ZFhScGJITW5PMXh1YVcxd2IzSjBJRU52WkdWSFpXNGdabkp2YlNBbkxpOWpiMlJsTFdkbGJpYzdYRzVjYm1aMWJtTjBhVzl1SUV4cGRHVnlZV3dvZG1Gc2RXVXBJSHRjYmlBZ2RHaHBjeTUyWVd4MVpTQTlJSFpoYkhWbE8xeHVmVnh1WEc1bWRXNWpkR2x2YmlCS1lYWmhVMk55YVhCMFEyOXRjR2xzWlhJb0tTQjdmVnh1WEc1S1lYWmhVMk55YVhCMFEyOXRjR2xzWlhJdWNISnZkRzkwZVhCbElEMGdlMXh1SUNBdkx5QlFWVUpNU1VNZ1FWQkpPaUJaYjNVZ1kyRnVJRzkyWlhKeWFXUmxJSFJvWlhObElHMWxkR2h2WkhNZ2FXNGdZU0J6ZFdKamJHRnpjeUIwYnlCd2NtOTJhV1JsWEc0Z0lDOHZJR0ZzZEdWeWJtRjBhWFpsSUdOdmJYQnBiR1ZrSUdadmNtMXpJR1p2Y2lCdVlXMWxJR3h2YjJ0MWNDQmhibVFnWW5WbVptVnlhVzVuSUhObGJXRnVkR2xqYzF4dUlDQnVZVzFsVEc5dmEzVndPaUJtZFc1amRHbHZiaWh3WVhKbGJuUXNJRzVoYldVZ0x5b3NJQ0IwZVhCbElDb3ZLU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11YVc1MFpYSnVZV3hPWVcxbFRHOXZhM1Z3S0hCaGNtVnVkQ3dnYm1GdFpTazdYRzRnSUgwc1hHNGdJR1JsY0hSb1pXUk1iMjlyZFhBNklHWjFibU4wYVc5dUtHNWhiV1VwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdXM1JvYVhNdVlXeHBZWE5oWW14bEtDZGpiMjUwWVdsdVpYSXViRzl2YTNWd0p5a3NJQ2NvWkdWd2RHaHpMQ0JjSWljc0lHNWhiV1VzSUNkY0lpa25YVHRjYmlBZ2ZTeGNibHh1SUNCamIyMXdhV3hsY2tsdVptODZJR1oxYm1OMGFXOXVLQ2tnZTF4dUlDQWdJR052Ym5OMElISmxkbWx6YVc5dUlEMGdRMDlOVUVsTVJWSmZVa1ZXU1ZOSlQwNHNYRzRnSUNBZ0lDQjJaWEp6YVc5dWN5QTlJRkpGVmtsVFNVOU9YME5JUVU1SFJWTmJjbVYyYVhOcGIyNWRPMXh1SUNBZ0lISmxkSFZ5YmlCYmNtVjJhWE5wYjI0c0lIWmxjbk5wYjI1elhUdGNiaUFnZlN4Y2JseHVJQ0JoY0hCbGJtUlViMEoxWm1abGNqb2dablZ1WTNScGIyNG9jMjkxY21ObExDQnNiMk5oZEdsdmJpd2daWGh3YkdsamFYUXBJSHRjYmlBZ0lDQXZMeUJHYjNKalpTQmhJSE52ZFhKalpTQmhjeUIwYUdseklITnBiWEJzYVdacFpYTWdkR2hsSUcxbGNtZGxJR3h2WjJsakxseHVJQ0FnSUdsbUlDZ2hhWE5CY25KaGVTaHpiM1Z5WTJVcEtTQjdYRzRnSUNBZ0lDQnpiM1Z5WTJVZ1BTQmJjMjkxY21ObFhUdGNiaUFnSUNCOVhHNGdJQ0FnYzI5MWNtTmxJRDBnZEdocGN5NXpiM1Z5WTJVdWQzSmhjQ2h6YjNWeVkyVXNJR3h2WTJGMGFXOXVLVHRjYmx4dUlDQWdJR2xtSUNoMGFHbHpMbVZ1ZG1seWIyNXRaVzUwTG1selUybHRjR3hsS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnV3lkeVpYUjFjbTRnSnl3Z2MyOTFjbU5sTENBbk95ZGRPMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9aWGh3YkdsamFYUXBJSHRjYmlBZ0lDQWdJQzh2SUZSb2FYTWdhWE1nWVNCallYTmxJSGRvWlhKbElIUm9aU0JpZFdabVpYSWdiM0JsY21GMGFXOXVJRzlqWTNWeWN5QmhjeUJoSUdOb2FXeGtJRzltSUdGdWIzUm9aWEpjYmlBZ0lDQWdJQzh2SUdOdmJuTjBjblZqZEN3Z1oyVnVaWEpoYkd4NUlHSnlZV05sY3k0Z1YyVWdhR0YyWlNCMGJ5QmxlSEJzYVdOcGRHeDVJRzkxZEhCMWRDQjBhR1Z6WlNCaWRXWm1aWEpjYmlBZ0lDQWdJQzh2SUc5d1pYSmhkR2x2Ym5NZ2RHOGdaVzV6ZFhKbElIUm9ZWFFnZEdobElHVnRhWFIwWldRZ1kyOWtaU0JuYjJWeklHbHVJSFJvWlNCamIzSnlaV04wSUd4dlkyRjBhVzl1TGx4dUlDQWdJQ0FnY21WMGRYSnVJRnNuWW5WbVptVnlJQ3M5SUNjc0lITnZkWEpqWlN3Z0p6c25YVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2MyOTFjbU5sTG1Gd2NHVnVaRlJ2UW5WbVptVnlJRDBnZEhKMVpUdGNiaUFnSUNBZ0lISmxkSFZ5YmlCemIzVnlZMlU3WEc0Z0lDQWdmVnh1SUNCOUxGeHVYRzRnSUdsdWFYUnBZV3hwZW1WQ2RXWm1aWEk2SUdaMWJtTjBhVzl1S0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxuRjFiM1JsWkZOMGNtbHVaeWduSnlrN1hHNGdJSDBzWEc0Z0lDOHZJRVZPUkNCUVZVSk1TVU1nUVZCSlhHNGdJR2x1ZEdWeWJtRnNUbUZ0WlV4dmIydDFjRG9nWm5WdVkzUnBiMjRvY0dGeVpXNTBMQ0J1WVcxbEtTQjdYRzRnSUNBZ2RHaHBjeTVzYjI5cmRYQlFjbTl3WlhKMGVVWjFibU4wYVc5dVNYTlZjMlZrSUQwZ2RISjFaVHRjYmlBZ0lDQnlaWFIxY200Z1d5ZHNiMjlyZFhCUWNtOXdaWEowZVNnbkxDQndZWEpsYm5Rc0lDY3NKeXdnU2xOUFRpNXpkSEpwYm1kcFpua29ibUZ0WlNrc0lDY3BKMTA3WEc0Z0lIMHNYRzVjYmlBZ2JHOXZhM1Z3VUhKdmNHVnlkSGxHZFc1amRHbHZia2x6VlhObFpEb2dabUZzYzJVc1hHNWNiaUFnWTI5dGNHbHNaVG9nWm5WdVkzUnBiMjRvWlc1MmFYSnZibTFsYm5Rc0lHOXdkR2x2Ym5Nc0lHTnZiblJsZUhRc0lHRnpUMkpxWldOMEtTQjdYRzRnSUNBZ2RHaHBjeTVsYm5acGNtOXViV1Z1ZENBOUlHVnVkbWx5YjI1dFpXNTBPMXh1SUNBZ0lIUm9hWE11YjNCMGFXOXVjeUE5SUc5d2RHbHZibk03WEc0Z0lDQWdkR2hwY3k1emRISnBibWRRWVhKaGJYTWdQU0IwYUdsekxtOXdkR2x2Ym5NdWMzUnlhVzVuVUdGeVlXMXpPMXh1SUNBZ0lIUm9hWE11ZEhKaFkydEpaSE1nUFNCMGFHbHpMbTl3ZEdsdmJuTXVkSEpoWTJ0SlpITTdYRzRnSUNBZ2RHaHBjeTV3Y21WamIyMXdhV3hsSUQwZ0lXRnpUMkpxWldOME8xeHVYRzRnSUNBZ2RHaHBjeTV1WVcxbElEMGdkR2hwY3k1bGJuWnBjbTl1YldWdWRDNXVZVzFsTzF4dUlDQWdJSFJvYVhNdWFYTkRhR2xzWkNBOUlDRWhZMjl1ZEdWNGREdGNiaUFnSUNCMGFHbHpMbU52Ym5SbGVIUWdQU0JqYjI1MFpYaDBJSHg4SUh0Y2JpQWdJQ0FnSUdSbFkyOXlZWFJ2Y25NNklGdGRMRnh1SUNBZ0lDQWdjSEp2WjNKaGJYTTZJRnRkTEZ4dUlDQWdJQ0FnWlc1MmFYSnZibTFsYm5Sek9pQmJYVnh1SUNBZ0lIMDdYRzVjYmlBZ0lDQjBhR2x6TG5CeVpXRnRZbXhsS0NrN1hHNWNiaUFnSUNCMGFHbHpMbk4wWVdOclUyeHZkQ0E5SURBN1hHNGdJQ0FnZEdocGN5NXpkR0ZqYTFaaGNuTWdQU0JiWFR0Y2JpQWdJQ0IwYUdsekxtRnNhV0Z6WlhNZ1BTQjdmVHRjYmlBZ0lDQjBhR2x6TG5KbFoybHpkR1Z5Y3lBOUlIc2diR2x6ZERvZ1cxMGdmVHRjYmlBZ0lDQjBhR2x6TG1oaGMyaGxjeUE5SUZ0ZE8xeHVJQ0FnSUhSb2FYTXVZMjl0Y0dsc1pWTjBZV05ySUQwZ1cxMDdYRzRnSUNBZ2RHaHBjeTVwYm14cGJtVlRkR0ZqYXlBOUlGdGRPMXh1SUNBZ0lIUm9hWE11WW14dlkydFFZWEpoYlhNZ1BTQmJYVHRjYmx4dUlDQWdJSFJvYVhNdVkyOXRjR2xzWlVOb2FXeGtjbVZ1S0dWdWRtbHliMjV0Wlc1MExDQnZjSFJwYjI1ektUdGNibHh1SUNBZ0lIUm9hWE11ZFhObFJHVndkR2h6SUQxY2JpQWdJQ0FnSUhSb2FYTXVkWE5sUkdWd2RHaHpJSHg4WEc0Z0lDQWdJQ0JsYm5acGNtOXViV1Z1ZEM1MWMyVkVaWEIwYUhNZ2ZIeGNiaUFnSUNBZ0lHVnVkbWx5YjI1dFpXNTBMblZ6WlVSbFkyOXlZWFJ2Y25NZ2ZIeGNiaUFnSUNBZ0lIUm9hWE11YjNCMGFXOXVjeTVqYjIxd1lYUTdYRzRnSUNBZ2RHaHBjeTUxYzJWQ2JHOWphMUJoY21GdGN5QTlJSFJvYVhNdWRYTmxRbXh2WTJ0UVlYSmhiWE1nZkh3Z1pXNTJhWEp2Ym0xbGJuUXVkWE5sUW14dlkydFFZWEpoYlhNN1hHNWNiaUFnSUNCc1pYUWdiM0JqYjJSbGN5QTlJR1Z1ZG1seWIyNXRaVzUwTG05d1kyOWtaWE1zWEc0Z0lDQWdJQ0J2Y0dOdlpHVXNYRzRnSUNBZ0lDQm1hWEp6ZEV4dll5eGNiaUFnSUNBZ0lHa3NYRzRnSUNBZ0lDQnNPMXh1WEc0Z0lDQWdabTl5SUNocElEMGdNQ3dnYkNBOUlHOXdZMjlrWlhNdWJHVnVaM1JvT3lCcElEd2diRHNnYVNzcktTQjdYRzRnSUNBZ0lDQnZjR052WkdVZ1BTQnZjR052WkdWelcybGRPMXh1WEc0Z0lDQWdJQ0IwYUdsekxuTnZkWEpqWlM1amRYSnlaVzUwVEc5allYUnBiMjRnUFNCdmNHTnZaR1V1Ykc5ak8xeHVJQ0FnSUNBZ1ptbHljM1JNYjJNZ1BTQm1hWEp6ZEV4dll5QjhmQ0J2Y0dOdlpHVXViRzlqTzF4dUlDQWdJQ0FnZEdocGMxdHZjR052WkdVdWIzQmpiMlJsWFM1aGNIQnNlU2gwYUdsekxDQnZjR052WkdVdVlYSm5jeWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeThnUm14MWMyZ2dZVzU1SUhSeVlXbHNhVzVuSUdOdmJuUmxiblFnZEdoaGRDQnRhV2RvZENCaVpTQndaVzVrYVc1bkxseHVJQ0FnSUhSb2FYTXVjMjkxY21ObExtTjFjbkpsYm5STWIyTmhkR2x2YmlBOUlHWnBjbk4wVEc5ak8xeHVJQ0FnSUhSb2FYTXVjSFZ6YUZOdmRYSmpaU2duSnlrN1hHNWNiaUFnSUNBdktpQnBjM1JoYm1KMWJDQnBaMjV2Y21VZ2JtVjRkQ0FxTDF4dUlDQWdJR2xtSUNoMGFHbHpMbk4wWVdOclUyeHZkQ0I4ZkNCMGFHbHpMbWx1YkdsdVpWTjBZV05yTG14bGJtZDBhQ0I4ZkNCMGFHbHpMbU52YlhCcGJHVlRkR0ZqYXk1c1pXNW5kR2dwSUh0Y2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmVHTmxjSFJwYjI0b0owTnZiWEJwYkdVZ1kyOXRjR3hsZEdWa0lIZHBkR2dnWTI5dWRHVnVkQ0JzWldaMElHOXVJSE4wWVdOckp5azdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2FXWWdLQ0YwYUdsekxtUmxZMjl5WVhSdmNuTXVhWE5GYlhCMGVTZ3BLU0I3WEc0Z0lDQWdJQ0IwYUdsekxuVnpaVVJsWTI5eVlYUnZjbk1nUFNCMGNuVmxPMXh1WEc0Z0lDQWdJQ0IwYUdsekxtUmxZMjl5WVhSdmNuTXVjSEpsY0dWdVpDaGJYRzRnSUNBZ0lDQWdJQ2QyWVhJZ1pHVmpiM0poZEc5eWN5QTlJR052Ym5SaGFXNWxjaTVrWldOdmNtRjBiM0p6TENBbkxGeHVJQ0FnSUNBZ0lDQjBhR2x6TG14dmIydDFjRkJ5YjNCbGNuUjVSblZ1WTNScGIyNVdZWEpFWldOc1lYSmhkR2x2YmlncExGeHVJQ0FnSUNBZ0lDQW5PMXhjYmlkY2JpQWdJQ0FnSUYwcE8xeHVJQ0FnSUNBZ2RHaHBjeTVrWldOdmNtRjBiM0p6TG5CMWMyZ29KM0psZEhWeWJpQm1ianNuS1R0Y2JseHVJQ0FnSUNBZ2FXWWdLR0Z6VDJKcVpXTjBLU0I3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVaR1ZqYjNKaGRHOXljeUE5SUVaMWJtTjBhVzl1TG1Gd2NHeDVLSFJvYVhNc0lGdGNiaUFnSUNBZ0lDQWdJQ0FuWm00bkxGeHVJQ0FnSUNBZ0lDQWdJQ2R3Y205d2N5Y3NYRzRnSUNBZ0lDQWdJQ0FnSjJOdmJuUmhhVzVsY2ljc1hHNGdJQ0FnSUNBZ0lDQWdKMlJsY0hSb01DY3NYRzRnSUNBZ0lDQWdJQ0FnSjJSaGRHRW5MRnh1SUNBZ0lDQWdJQ0FnSUNkaWJHOWphMUJoY21GdGN5Y3NYRzRnSUNBZ0lDQWdJQ0FnSjJSbGNIUm9jeWNzWEc0Z0lDQWdJQ0FnSUNBZ2RHaHBjeTVrWldOdmNtRjBiM0p6TG0xbGNtZGxLQ2xjYmlBZ0lDQWdJQ0FnWFNrN1hHNGdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbVJsWTI5eVlYUnZjbk11Y0hKbGNHVnVaQ2hjYmlBZ0lDQWdJQ0FnSUNBblpuVnVZM1JwYjI0b1ptNHNJSEJ5YjNCekxDQmpiMjUwWVdsdVpYSXNJR1JsY0hSb01Dd2daR0YwWVN3Z1lteHZZMnRRWVhKaGJYTXNJR1JsY0hSb2N5a2dlMXhjYmlkY2JpQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lDQWdkR2hwY3k1a1pXTnZjbUYwYjNKekxuQjFjMmdvSjMxY1hHNG5LVHRjYmlBZ0lDQWdJQ0FnZEdocGN5NWtaV052Y21GMGIzSnpJRDBnZEdocGN5NWtaV052Y21GMGIzSnpMbTFsY21kbEtDazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhSb2FYTXVaR1ZqYjNKaGRHOXljeUE5SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JzWlhRZ1ptNGdQU0IwYUdsekxtTnlaV0YwWlVaMWJtTjBhVzl1UTI5dWRHVjRkQ2hoYzA5aWFtVmpkQ2s3WEc0Z0lDQWdhV1lnS0NGMGFHbHpMbWx6UTJocGJHUXBJSHRjYmlBZ0lDQWdJR3hsZENCeVpYUWdQU0I3WEc0Z0lDQWdJQ0FnSUdOdmJYQnBiR1Z5T2lCMGFHbHpMbU52YlhCcGJHVnlTVzVtYnlncExGeHVJQ0FnSUNBZ0lDQnRZV2x1T2lCbWJseHVJQ0FnSUNBZ2ZUdGNibHh1SUNBZ0lDQWdhV1lnS0hSb2FYTXVaR1ZqYjNKaGRHOXljeWtnZTF4dUlDQWdJQ0FnSUNCeVpYUXViV0ZwYmw5a0lEMGdkR2hwY3k1a1pXTnZjbUYwYjNKek95QXZMeUJsYzJ4cGJuUXRaR2x6WVdKc1pTMXNhVzVsSUdOaGJXVnNZMkZ6WlZ4dUlDQWdJQ0FnSUNCeVpYUXVkWE5sUkdWamIzSmhkRzl5Y3lBOUlIUnlkV1U3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUd4bGRDQjdJSEJ5YjJkeVlXMXpMQ0JrWldOdmNtRjBiM0p6SUgwZ1BTQjBhR2x6TG1OdmJuUmxlSFE3WEc0Z0lDQWdJQ0JtYjNJZ0tHa2dQU0F3TENCc0lEMGdjSEp2WjNKaGJYTXViR1Z1WjNSb095QnBJRHdnYkRzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaHdjbTluY21GdGMxdHBYU2tnZTF4dUlDQWdJQ0FnSUNBZ0lISmxkRnRwWFNBOUlIQnliMmR5WVcxelcybGRPMXh1SUNBZ0lDQWdJQ0FnSUdsbUlDaGtaV052Y21GMGIzSnpXMmxkS1NCN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSYmFTQXJJQ2RmWkNkZElEMGdaR1ZqYjNKaGRHOXljMXRwWFR0Y2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEM1MWMyVkVaV052Y21GMGIzSnpJRDBnZEhKMVpUdGNiaUFnSUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ2FXWWdLSFJvYVhNdVpXNTJhWEp2Ym0xbGJuUXVkWE5sVUdGeWRHbGhiQ2tnZTF4dUlDQWdJQ0FnSUNCeVpYUXVkWE5sVUdGeWRHbGhiQ0E5SUhSeWRXVTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQnBaaUFvZEdocGN5NXZjSFJwYjI1ekxtUmhkR0VwSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBMblZ6WlVSaGRHRWdQU0IwY25WbE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2FXWWdLSFJvYVhNdWRYTmxSR1Z3ZEdoektTQjdYRzRnSUNBZ0lDQWdJSEpsZEM1MWMyVkVaWEIwYUhNZ1BTQjBjblZsTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnYVdZZ0tIUm9hWE11ZFhObFFteHZZMnRRWVhKaGJYTXBJSHRjYmlBZ0lDQWdJQ0FnY21WMExuVnpaVUpzYjJOclVHRnlZVzF6SUQwZ2RISjFaVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJR2xtSUNoMGFHbHpMbTl3ZEdsdmJuTXVZMjl0Y0dGMEtTQjdYRzRnSUNBZ0lDQWdJSEpsZEM1amIyMXdZWFFnUFNCMGNuVmxPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0JwWmlBb0lXRnpUMkpxWldOMEtTQjdYRzRnSUNBZ0lDQWdJSEpsZEM1amIyMXdhV3hsY2lBOUlFcFRUMDR1YzNSeWFXNW5hV1o1S0hKbGRDNWpiMjF3YVd4bGNpazdYRzVjYmlBZ0lDQWdJQ0FnZEdocGN5NXpiM1Z5WTJVdVkzVnljbVZ1ZEV4dlkyRjBhVzl1SUQwZ2V5QnpkR0Z5ZERvZ2V5QnNhVzVsT2lBeExDQmpiMngxYlc0NklEQWdmU0I5TzF4dUlDQWdJQ0FnSUNCeVpYUWdQU0IwYUdsekxtOWlhbVZqZEV4cGRHVnlZV3dvY21WMEtUdGNibHh1SUNBZ0lDQWdJQ0JwWmlBb2IzQjBhVzl1Y3k1emNtTk9ZVzFsS1NCN1hHNGdJQ0FnSUNBZ0lDQWdjbVYwSUQwZ2NtVjBMblJ2VTNSeWFXNW5WMmwwYUZOdmRYSmpaVTFoY0NoN0lHWnBiR1U2SUc5d2RHbHZibk11WkdWemRFNWhiV1VnZlNrN1hHNGdJQ0FnSUNBZ0lDQWdjbVYwTG0xaGNDQTlJSEpsZEM1dFlYQWdKaVlnY21WMExtMWhjQzUwYjFOMGNtbHVaeWdwTzF4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lISmxkQ0E5SUhKbGRDNTBiMU4wY21sdVp5Z3BPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0J5WlhRdVkyOXRjR2xzWlhKUGNIUnBiMjV6SUQwZ2RHaHBjeTV2Y0hScGIyNXpPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0J5WlhSMWNtNGdjbVYwTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z1ptNDdYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dVhHNGdJSEJ5WldGdFlteGxPaUJtZFc1amRHbHZiaWdwSUh0Y2JpQWdJQ0F2THlCMGNtRmpheUIwYUdVZ2JHRnpkQ0JqYjI1MFpYaDBJSEIxYzJobFpDQnBiblJ2SUhCc1lXTmxJSFJ2SUdGc2JHOTNJSE5yYVhCd2FXNW5JSFJvWlZ4dUlDQWdJQzh2SUdkbGRFTnZiblJsZUhRZ2IzQmpiMlJsSUhkb1pXNGdhWFFnZDI5MWJHUWdZbVVnWVNCdWIyOXdYRzRnSUNBZ2RHaHBjeTVzWVhOMFEyOXVkR1Y0ZENBOUlEQTdYRzRnSUNBZ2RHaHBjeTV6YjNWeVkyVWdQU0J1WlhjZ1EyOWtaVWRsYmloMGFHbHpMbTl3ZEdsdmJuTXVjM0pqVG1GdFpTazdYRzRnSUNBZ2RHaHBjeTVrWldOdmNtRjBiM0p6SUQwZ2JtVjNJRU52WkdWSFpXNG9kR2hwY3k1dmNIUnBiMjV6TG5OeVkwNWhiV1VwTzF4dUlDQjlMRnh1WEc0Z0lHTnlaV0YwWlVaMWJtTjBhVzl1UTI5dWRHVjRkRG9nWm5WdVkzUnBiMjRvWVhOUFltcGxZM1FwSUh0Y2JpQWdJQ0JzWlhRZ2RtRnlSR1ZqYkdGeVlYUnBiMjV6SUQwZ0p5YzdYRzVjYmlBZ0lDQnNaWFFnYkc5allXeHpJRDBnZEdocGN5NXpkR0ZqYTFaaGNuTXVZMjl1WTJGMEtIUm9hWE11Y21WbmFYTjBaWEp6TG14cGMzUXBPMXh1SUNBZ0lHbG1JQ2hzYjJOaGJITXViR1Z1WjNSb0lENGdNQ2tnZTF4dUlDQWdJQ0FnZG1GeVJHVmpiR0Z5WVhScGIyNXpJQ3M5SUNjc0lDY2dLeUJzYjJOaGJITXVhbTlwYmlnbkxDQW5LVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJIWlc1bGNtRjBaU0J0YVc1cGJXbDZaWElnWVd4cFlYTWdiV0Z3Y0dsdVozTmNiaUFnSUNBdkwxeHVJQ0FnSUM4dklGZG9aVzRnZFhOcGJtY2dkSEoxWlNCVGIzVnlZMlZPYjJSbGN5d2dkR2hwY3lCM2FXeHNJSFZ3WkdGMFpTQmhiR3dnY21WbVpYSmxibU5sY3lCMGJ5QjBhR1VnWjJsMlpXNGdZV3hwWVhOY2JpQWdJQ0F2THlCaGN5QjBhR1VnYzI5MWNtTmxJRzV2WkdWeklHRnlaU0J5WlhWelpXUWdhVzRnYzJsMGRTNGdSbTl5SUhSb1pTQnViMjR0YzI5MWNtTmxJRzV2WkdVZ1kyOXRjR2xzWVhScGIyNGdiVzlrWlN4Y2JpQWdJQ0F2THlCaGJHbGhjMlZ6SUhkcGJHd2dibTkwSUdKbElIVnpaV1FzSUdKMWRDQjBhR2x6SUdOaGMyVWdhWE1nWVd4eVpXRmtlU0JpWldsdVp5QnlkVzRnYjI0Z2RHaGxJR05zYVdWdWRDQmhibVJjYmlBZ0lDQXZMeUIzWlNCaGNtVnVKM1FnWTI5dVkyVnliaUJoWW05MWRDQnRhVzVwYldsNmFXNW5JSFJvWlNCMFpXMXdiR0YwWlNCemFYcGxMbHh1SUNBZ0lHeGxkQ0JoYkdsaGMwTnZkVzUwSUQwZ01EdGNiaUFnSUNCUFltcGxZM1F1YTJWNWN5aDBhR2x6TG1Gc2FXRnpaWE1wTG1admNrVmhZMmdvWVd4cFlYTWdQVDRnZTF4dUlDQWdJQ0FnYkdWMElHNXZaR1VnUFNCMGFHbHpMbUZzYVdGelpYTmJZV3hwWVhOZE8xeHVJQ0FnSUNBZ2FXWWdLRzV2WkdVdVkyaHBiR1J5Wlc0Z0ppWWdibTlrWlM1eVpXWmxjbVZ1WTJWRGIzVnVkQ0ErSURFcElIdGNiaUFnSUNBZ0lDQWdkbUZ5UkdWamJHRnlZWFJwYjI1eklDczlJQ2NzSUdGc2FXRnpKeUFySUNzcllXeHBZWE5EYjNWdWRDQXJJQ2M5SnlBcklHRnNhV0Z6TzF4dUlDQWdJQ0FnSUNCdWIyUmxMbU5vYVd4a2NtVnVXekJkSUQwZ0oyRnNhV0Z6SnlBcklHRnNhV0Z6UTI5MWJuUTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTazdYRzVjYmlBZ0lDQnBaaUFvZEdocGN5NXNiMjlyZFhCUWNtOXdaWEowZVVaMWJtTjBhVzl1U1hOVmMyVmtLU0I3WEc0Z0lDQWdJQ0IyWVhKRVpXTnNZWEpoZEdsdmJuTWdLejBnSnl3Z0p5QXJJSFJvYVhNdWJHOXZhM1Z3VUhKdmNHVnlkSGxHZFc1amRHbHZibFpoY2tSbFkyeGhjbUYwYVc5dUtDazdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2JHVjBJSEJoY21GdGN5QTlJRnNuWTI5dWRHRnBibVZ5Snl3Z0oyUmxjSFJvTUNjc0lDZG9aV3h3WlhKekp5d2dKM0JoY25ScFlXeHpKeXdnSjJSaGRHRW5YVHRjYmx4dUlDQWdJR2xtSUNoMGFHbHpMblZ6WlVKc2IyTnJVR0Z5WVcxeklIeDhJSFJvYVhNdWRYTmxSR1Z3ZEdoektTQjdYRzRnSUNBZ0lDQndZWEpoYlhNdWNIVnphQ2duWW14dlkydFFZWEpoYlhNbktUdGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tIUm9hWE11ZFhObFJHVndkR2h6S1NCN1hHNGdJQ0FnSUNCd1lYSmhiWE11Y0hWemFDZ25aR1Z3ZEdoekp5azdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5OGdVR1Z5Wm05eWJTQmhJSE5sWTI5dVpDQndZWE56SUc5MlpYSWdkR2hsSUc5MWRIQjFkQ0IwYnlCdFpYSm5aU0JqYjI1MFpXNTBJSGRvWlc0Z2NHOXpjMmxpYkdWY2JpQWdJQ0JzWlhRZ2MyOTFjbU5sSUQwZ2RHaHBjeTV0WlhKblpWTnZkWEpqWlNoMllYSkVaV05zWVhKaGRHbHZibk1wTzF4dVhHNGdJQ0FnYVdZZ0tHRnpUMkpxWldOMEtTQjdYRzRnSUNBZ0lDQndZWEpoYlhNdWNIVnphQ2h6YjNWeVkyVXBPMXh1WEc0Z0lDQWdJQ0J5WlhSMWNtNGdSblZ1WTNScGIyNHVZWEJ3Ykhrb2RHaHBjeXdnY0dGeVlXMXpLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUhSb2FYTXVjMjkxY21ObExuZHlZWEFvVzF4dUlDQWdJQ0FnSUNBblpuVnVZM1JwYjI0b0p5eGNiaUFnSUNBZ0lDQWdjR0Z5WVcxekxtcHZhVzRvSnl3bktTeGNiaUFnSUNBZ0lDQWdKeWtnZTF4Y2JpQWdKeXhjYmlBZ0lDQWdJQ0FnYzI5MWNtTmxMRnh1SUNBZ0lDQWdJQ0FuZlNkY2JpQWdJQ0FnSUYwcE8xeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ2JXVnlaMlZUYjNWeVkyVTZJR1oxYm1OMGFXOXVLSFpoY2tSbFkyeGhjbUYwYVc5dWN5a2dlMXh1SUNBZ0lHeGxkQ0JwYzFOcGJYQnNaU0E5SUhSb2FYTXVaVzUyYVhKdmJtMWxiblF1YVhOVGFXMXdiR1VzWEc0Z0lDQWdJQ0JoY0hCbGJtUlBibXg1SUQwZ0lYUm9hWE11Wm05eVkyVkNkV1ptWlhJc1hHNGdJQ0FnSUNCaGNIQmxibVJHYVhKemRDeGNiaUFnSUNBZ0lITnZkWEpqWlZObFpXNHNYRzRnSUNBZ0lDQmlkV1ptWlhKVGRHRnlkQ3hjYmlBZ0lDQWdJR0oxWm1abGNrVnVaRHRjYmlBZ0lDQjBhR2x6TG5OdmRYSmpaUzVsWVdOb0tHeHBibVVnUFQ0Z2UxeHVJQ0FnSUNBZ2FXWWdLR3hwYm1VdVlYQndaVzVrVkc5Q2RXWm1aWElwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLR0oxWm1abGNsTjBZWEowS1NCN1hHNGdJQ0FnSUNBZ0lDQWdiR2x1WlM1d2NtVndaVzVrS0NjZ0lDc2dKeWs3WEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ1luVm1abVZ5VTNSaGNuUWdQU0JzYVc1bE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJR0oxWm1abGNrVnVaQ0E5SUd4cGJtVTdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQnBaaUFvWW5WbVptVnlVM1JoY25RcElIdGNiaUFnSUNBZ0lDQWdJQ0JwWmlBb0lYTnZkWEpqWlZObFpXNHBJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lHRndjR1Z1WkVacGNuTjBJRDBnZEhKMVpUdGNiaUFnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1luVm1abVZ5VTNSaGNuUXVjSEpsY0dWdVpDZ25ZblZtWm1WeUlDczlJQ2NwTzF4dUlDQWdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdJQ0JpZFdabVpYSkZibVF1WVdSa0tDYzdKeWs3WEc0Z0lDQWdJQ0FnSUNBZ1luVm1abVZ5VTNSaGNuUWdQU0JpZFdabVpYSkZibVFnUFNCMWJtUmxabWx1WldRN1hHNGdJQ0FnSUNBZ0lIMWNibHh1SUNBZ0lDQWdJQ0J6YjNWeVkyVlRaV1Z1SUQwZ2RISjFaVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tDRnBjMU5wYlhCc1pTa2dlMXh1SUNBZ0lDQWdJQ0FnSUdGd2NHVnVaRTl1YkhrZ1BTQm1ZV3h6WlR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwcE8xeHVYRzRnSUNBZ2FXWWdLR0Z3Y0dWdVpFOXViSGtwSUh0Y2JpQWdJQ0FnSUdsbUlDaGlkV1ptWlhKVGRHRnlkQ2tnZTF4dUlDQWdJQ0FnSUNCaWRXWm1aWEpUZEdGeWRDNXdjbVZ3Wlc1a0tDZHlaWFIxY200Z0p5azdYRzRnSUNBZ0lDQWdJR0oxWm1abGNrVnVaQzVoWkdRb0p6c25LVHRjYmlBZ0lDQWdJSDBnWld4elpTQnBaaUFvSVhOdmRYSmpaVk5sWlc0cElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1emIzVnlZMlV1Y0hWemFDZ25jbVYwZFhKdUlGd2lYQ0k3SnlrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSFpoY2tSbFkyeGhjbUYwYVc5dWN5QXJQVnh1SUNBZ0lDQWdJQ0FuTENCaWRXWm1aWElnUFNBbklDc2dLR0Z3Y0dWdVpFWnBjbk4wSUQ4Z0p5Y2dPaUIwYUdsekxtbHVhWFJwWVd4cGVtVkNkV1ptWlhJb0tTazdYRzVjYmlBZ0lDQWdJR2xtSUNoaWRXWm1aWEpUZEdGeWRDa2dlMXh1SUNBZ0lDQWdJQ0JpZFdabVpYSlRkR0Z5ZEM1d2NtVndaVzVrS0NkeVpYUjFjbTRnWW5WbVptVnlJQ3NnSnlrN1hHNGdJQ0FnSUNBZ0lHSjFabVpsY2tWdVpDNWhaR1FvSnpzbktUdGNiaUFnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11YzI5MWNtTmxMbkIxYzJnb0ozSmxkSFZ5YmlCaWRXWm1aWEk3SnlrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tIWmhja1JsWTJ4aGNtRjBhVzl1Y3lrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTV6YjNWeVkyVXVjSEpsY0dWdVpDaGNiaUFnSUNBZ0lDQWdKM1poY2lBbklDc2dkbUZ5UkdWamJHRnlZWFJwYjI1ekxuTjFZbk4wY21sdVp5Z3lLU0FySUNoaGNIQmxibVJHYVhKemRDQS9JQ2NuSURvZ0p6dGNYRzRuS1Z4dUlDQWdJQ0FnS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1emIzVnlZMlV1YldWeVoyVW9LVHRjYmlBZ2ZTeGNibHh1SUNCc2IyOXJkWEJRY205d1pYSjBlVVoxYm1OMGFXOXVWbUZ5UkdWamJHRnlZWFJwYjI0NklHWjFibU4wYVc5dUtDa2dlMXh1SUNBZ0lISmxkSFZ5YmlCZ1hHNGdJQ0FnSUNCc2IyOXJkWEJRY205d1pYSjBlU0E5SUdOdmJuUmhhVzVsY2k1c2IyOXJkWEJRY205d1pYSjBlU0I4ZkNCbWRXNWpkR2x2Ymlod1lYSmxiblFzSUhCeWIzQmxjblI1VG1GdFpTa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb1QySnFaV04wTG5CeWIzUnZkSGx3WlM1b1lYTlBkMjVRY205d1pYSjBlUzVqWVd4c0tIQmhjbVZ1ZEN3Z2NISnZjR1Z5ZEhsT1lXMWxLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCd1lYSmxiblJiY0hKdmNHVnlkSGxPWVcxbFhUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkVzVrWldacGJtVmtYRzRnSUNBZ2ZWeHVJQ0FnSUdBdWRISnBiU2dwTzF4dUlDQjlMRnh1WEc0Z0lDOHZJRnRpYkc5amExWmhiSFZsWFZ4dUlDQXZMMXh1SUNBdkx5QlBiaUJ6ZEdGamF5d2dZbVZtYjNKbE9pQm9ZWE5vTENCcGJuWmxjbk5sTENCd2NtOW5jbUZ0TENCMllXeDFaVnh1SUNBdkx5QlBiaUJ6ZEdGamF5d2dZV1owWlhJNklISmxkSFZ5YmlCMllXeDFaU0J2WmlCaWJHOWphMGhsYkhCbGNrMXBjM05wYm1kY2JpQWdMeTljYmlBZ0x5OGdWR2hsSUhCMWNuQnZjMlVnYjJZZ2RHaHBjeUJ2Y0dOdlpHVWdhWE1nZEc4Z2RHRnJaU0JoSUdKc2IyTnJJRzltSUhSb1pTQm1iM0p0WEc0Z0lDOHZJR0I3ZXlOMGFHbHpMbVp2YjMxOUxpNHVlM3N2ZEdocGN5NW1iMjk5ZldBc0lISmxjMjlzZG1VZ2RHaGxJSFpoYkhWbElHOW1JR0JtYjI5Z0xDQmhibVJjYmlBZ0x5OGdjbVZ3YkdGalpTQnBkQ0J2YmlCMGFHVWdjM1JoWTJzZ2QybDBhQ0IwYUdVZ2NtVnpkV3gwSUc5bUlIQnliM0JsY214NVhHNGdJQzh2SUdsdWRtOXJhVzVuSUdKc2IyTnJTR1ZzY0dWeVRXbHpjMmx1Wnk1Y2JpQWdZbXh2WTJ0V1lXeDFaVG9nWm5WdVkzUnBiMjRvYm1GdFpTa2dlMXh1SUNBZ0lHeGxkQ0JpYkc5amEwaGxiSEJsY2sxcGMzTnBibWNnUFNCMGFHbHpMbUZzYVdGellXSnNaU2hjYmlBZ0lDQWdJQ0FnSjJOdmJuUmhhVzVsY2k1b2IyOXJjeTVpYkc5amEwaGxiSEJsY2sxcGMzTnBibWNuWEc0Z0lDQWdJQ0FwTEZ4dUlDQWdJQ0FnY0dGeVlXMXpJRDBnVzNSb2FYTXVZMjl1ZEdWNGRFNWhiV1VvTUNsZE8xeHVJQ0FnSUhSb2FYTXVjMlYwZFhCSVpXeHdaWEpCY21kektHNWhiV1VzSURBc0lIQmhjbUZ0Y3lrN1hHNWNiaUFnSUNCc1pYUWdZbXh2WTJ0T1lXMWxJRDBnZEdocGN5NXdiM0JUZEdGamF5Z3BPMXh1SUNBZ0lIQmhjbUZ0Y3k1emNHeHBZMlVvTVN3Z01Dd2dZbXh2WTJ0T1lXMWxLVHRjYmx4dUlDQWdJSFJvYVhNdWNIVnphQ2gwYUdsekxuTnZkWEpqWlM1bWRXNWpkR2x2YmtOaGJHd29ZbXh2WTJ0SVpXeHdaWEpOYVhOemFXNW5MQ0FuWTJGc2JDY3NJSEJoY21GdGN5a3BPMXh1SUNCOUxGeHVYRzRnSUM4dklGdGhiV0pwWjNWdmRYTkNiRzlqYTFaaGJIVmxYVnh1SUNBdkwxeHVJQ0F2THlCUGJpQnpkR0ZqYXl3Z1ltVm1iM0psT2lCb1lYTm9MQ0JwYm5abGNuTmxMQ0J3Y205bmNtRnRMQ0IyWVd4MVpWeHVJQ0F2THlCRGIyMXdhV3hsY2lCMllXeDFaU3dnWW1WbWIzSmxPaUJzWVhOMFNHVnNjR1Z5UFhaaGJIVmxJRzltSUd4aGMzUWdabTkxYm1RZ2FHVnNjR1Z5TENCcFppQmhibmxjYmlBZ0x5OGdUMjRnYzNSaFkyc3NJR0ZtZEdWeUxDQnBaaUJ1YnlCc1lYTjBTR1ZzY0dWeU9pQnpZVzFsSUdGeklGdGliRzlqYTFaaGJIVmxYVnh1SUNBdkx5QlBiaUJ6ZEdGamF5d2dZV1owWlhJc0lHbG1JR3hoYzNSSVpXeHdaWEk2SUhaaGJIVmxYRzRnSUdGdFltbG5kVzkxYzBKc2IyTnJWbUZzZFdVNklHWjFibU4wYVc5dUtDa2dlMXh1SUNBZ0lDOHZJRmRsSjNKbElHSmxhVzVuSUdFZ1ltbDBJR05vWldWcmVTQmhibVFnY21WMWMybHVaeUIwYUdVZ2IzQjBhVzl1Y3lCMllXeDFaU0JtY205dElIUm9aU0J3Y21sdmNpQmxlR1ZqWEc0Z0lDQWdiR1YwSUdKc2IyTnJTR1ZzY0dWeVRXbHpjMmx1WnlBOUlIUm9hWE11WVd4cFlYTmhZbXhsS0Z4dUlDQWdJQ0FnSUNBblkyOXVkR0ZwYm1WeUxtaHZiMnR6TG1Kc2IyTnJTR1ZzY0dWeVRXbHpjMmx1WnlkY2JpQWdJQ0FnSUNrc1hHNGdJQ0FnSUNCd1lYSmhiWE1nUFNCYmRHaHBjeTVqYjI1MFpYaDBUbUZ0WlNnd0tWMDdYRzRnSUNBZ2RHaHBjeTV6WlhSMWNFaGxiSEJsY2tGeVozTW9KeWNzSURBc0lIQmhjbUZ0Y3l3Z2RISjFaU2s3WEc1Y2JpQWdJQ0IwYUdsekxtWnNkWE5vU1c1c2FXNWxLQ2s3WEc1Y2JpQWdJQ0JzWlhRZ1kzVnljbVZ1ZENBOUlIUm9hWE11ZEc5d1UzUmhZMnNvS1R0Y2JpQWdJQ0J3WVhKaGJYTXVjM0JzYVdObEtERXNJREFzSUdOMWNuSmxiblFwTzF4dVhHNGdJQ0FnZEdocGN5NXdkWE5vVTI5MWNtTmxLRnRjYmlBZ0lDQWdJQ2RwWmlBb0lTY3NYRzRnSUNBZ0lDQjBhR2x6TG14aGMzUklaV3h3WlhJc1hHNGdJQ0FnSUNBbktTQjdJQ2NzWEc0Z0lDQWdJQ0JqZFhKeVpXNTBMRnh1SUNBZ0lDQWdKeUE5SUNjc1hHNGdJQ0FnSUNCMGFHbHpMbk52ZFhKalpTNW1kVzVqZEdsdmJrTmhiR3dvWW14dlkydElaV3h3WlhKTmFYTnphVzVuTENBblkyRnNiQ2NzSUhCaGNtRnRjeWtzWEc0Z0lDQWdJQ0FuZlNkY2JpQWdJQ0JkS1R0Y2JpQWdmU3hjYmx4dUlDQXZMeUJiWVhCd1pXNWtRMjl1ZEdWdWRGMWNiaUFnTHk5Y2JpQWdMeThnVDI0Z2MzUmhZMnNzSUdKbFptOXlaVG9nTGk0dVhHNGdJQzh2SUU5dUlITjBZV05yTENCaFpuUmxjam9nTGk0dVhHNGdJQzh2WEc0Z0lDOHZJRUZ3Y0dWdVpITWdkR2hsSUhOMGNtbHVaeUIyWVd4MVpTQnZaaUJnWTI5dWRHVnVkR0FnZEc4Z2RHaGxJR04xY25KbGJuUWdZblZtWm1WeVhHNGdJR0Z3Y0dWdVpFTnZiblJsYm5RNklHWjFibU4wYVc5dUtHTnZiblJsYm5RcElIdGNiaUFnSUNCcFppQW9kR2hwY3k1d1pXNWthVzVuUTI5dWRHVnVkQ2tnZTF4dUlDQWdJQ0FnWTI5dWRHVnVkQ0E5SUhSb2FYTXVjR1Z1WkdsdVowTnZiblJsYm5RZ0t5QmpiMjUwWlc1ME8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0IwYUdsekxuQmxibVJwYm1kTWIyTmhkR2x2YmlBOUlIUm9hWE11YzI5MWNtTmxMbU4xY25KbGJuUk1iMk5oZEdsdmJqdGNiaUFnSUNCOVhHNWNiaUFnSUNCMGFHbHpMbkJsYm1ScGJtZERiMjUwWlc1MElEMGdZMjl1ZEdWdWREdGNiaUFnZlN4Y2JseHVJQ0F2THlCYllYQndaVzVrWFZ4dUlDQXZMMXh1SUNBdkx5QlBiaUJ6ZEdGamF5d2dZbVZtYjNKbE9pQjJZV3gxWlN3Z0xpNHVYRzRnSUM4dklFOXVJSE4wWVdOckxDQmhablJsY2pvZ0xpNHVYRzRnSUM4dlhHNGdJQzh2SUVOdlpYSmpaWE1nWUhaaGJIVmxZQ0IwYnlCaElGTjBjbWx1WnlCaGJtUWdZWEJ3Wlc1a2N5QnBkQ0IwYnlCMGFHVWdZM1Z5Y21WdWRDQmlkV1ptWlhJdVhHNGdJQzh2WEc0Z0lDOHZJRWxtSUdCMllXeDFaV0FnYVhNZ2RISjFkR2g1TENCdmNpQXdMQ0JwZENCcGN5QmpiMlZ5WTJWa0lHbHVkRzhnWVNCemRISnBibWNnWVc1a0lHRndjR1Z1WkdWa1hHNGdJQzh2SUU5MGFHVnlkMmx6WlN3Z2RHaGxJR1Z0Y0hSNUlITjBjbWx1WnlCcGN5QmhjSEJsYm1SbFpGeHVJQ0JoY0hCbGJtUTZJR1oxYm1OMGFXOXVLQ2tnZTF4dUlDQWdJR2xtSUNoMGFHbHpMbWx6U1c1c2FXNWxLQ2twSUh0Y2JpQWdJQ0FnSUhSb2FYTXVjbVZ3YkdGalpWTjBZV05yS0dOMWNuSmxiblFnUFQ0Z1d5Y2dJVDBnYm5Wc2JDQS9JQ2NzSUdOMWNuSmxiblFzSUNjZ09pQmNJbHdpSjEwcE8xeHVYRzRnSUNBZ0lDQjBhR2x6TG5CMWMyaFRiM1Z5WTJVb2RHaHBjeTVoY0hCbGJtUlViMEoxWm1abGNpaDBhR2x6TG5CdmNGTjBZV05yS0NrcEtUdGNiaUFnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnYkdWMElHeHZZMkZzSUQwZ2RHaHBjeTV3YjNCVGRHRmpheWdwTzF4dUlDQWdJQ0FnZEdocGN5NXdkWE5vVTI5MWNtTmxLRnRjYmlBZ0lDQWdJQ0FnSjJsbUlDZ25MRnh1SUNBZ0lDQWdJQ0JzYjJOaGJDeGNiaUFnSUNBZ0lDQWdKeUFoUFNCdWRXeHNLU0I3SUNjc1hHNGdJQ0FnSUNBZ0lIUm9hWE11WVhCd1pXNWtWRzlDZFdabVpYSW9iRzlqWVd3c0lIVnVaR1ZtYVc1bFpDd2dkSEoxWlNrc1hHNGdJQ0FnSUNBZ0lDY2dmU2RjYmlBZ0lDQWdJRjBwTzF4dUlDQWdJQ0FnYVdZZ0tIUm9hWE11Wlc1MmFYSnZibTFsYm5RdWFYTlRhVzF3YkdVcElIdGNiaUFnSUNBZ0lDQWdkR2hwY3k1d2RYTm9VMjkxY21ObEtGdGNiaUFnSUNBZ0lDQWdJQ0FuWld4elpTQjdJQ2NzWEc0Z0lDQWdJQ0FnSUNBZ2RHaHBjeTVoY0hCbGJtUlViMEoxWm1abGNpaGNJaWNuWENJc0lIVnVaR1ZtYVc1bFpDd2dkSEoxWlNrc1hHNGdJQ0FnSUNBZ0lDQWdKeUI5SjF4dUlDQWdJQ0FnSUNCZEtUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJSDBzWEc1Y2JpQWdMeThnVzJGd2NHVnVaRVZ6WTJGd1pXUmRYRzRnSUM4dlhHNGdJQzh2SUU5dUlITjBZV05yTENCaVpXWnZjbVU2SUhaaGJIVmxMQ0F1TGk1Y2JpQWdMeThnVDI0Z2MzUmhZMnNzSUdGbWRHVnlPaUF1TGk1Y2JpQWdMeTljYmlBZ0x5OGdSWE5qWVhCbElHQjJZV3gxWldBZ1lXNWtJR0Z3Y0dWdVpDQnBkQ0IwYnlCMGFHVWdZblZtWm1WeVhHNGdJR0Z3Y0dWdVpFVnpZMkZ3WldRNklHWjFibU4wYVc5dUtDa2dlMXh1SUNBZ0lIUm9hWE11Y0hWemFGTnZkWEpqWlNoY2JpQWdJQ0FnSUhSb2FYTXVZWEJ3Wlc1a1ZHOUNkV1ptWlhJb1cxeHVJQ0FnSUNBZ0lDQjBhR2x6TG1Gc2FXRnpZV0pzWlNnblkyOXVkR0ZwYm1WeUxtVnpZMkZ3WlVWNGNISmxjM05wYjI0bktTeGNiaUFnSUNBZ0lDQWdKeWduTEZ4dUlDQWdJQ0FnSUNCMGFHbHpMbkJ2Y0ZOMFlXTnJLQ2tzWEc0Z0lDQWdJQ0FnSUNjcEoxeHVJQ0FnSUNBZ1hTbGNiaUFnSUNBcE8xeHVJQ0I5TEZ4dVhHNGdJQzh2SUZ0blpYUkRiMjUwWlhoMFhWeHVJQ0F2TDF4dUlDQXZMeUJQYmlCemRHRmpheXdnWW1WbWIzSmxPaUF1TGk1Y2JpQWdMeThnVDI0Z2MzUmhZMnNzSUdGbWRHVnlPaUF1TGk1Y2JpQWdMeThnUTI5dGNHbHNaWElnZG1Gc2RXVXNJR0ZtZEdWeU9pQnNZWE4wUTI5dWRHVjRkRDFrWlhCMGFGeHVJQ0F2TDF4dUlDQXZMeUJUWlhRZ2RHaGxJSFpoYkhWbElHOW1JSFJvWlNCZ2JHRnpkRU52Ym5SbGVIUmdJR052YlhCcGJHVnlJSFpoYkhWbElIUnZJSFJvWlNCa1pYQjBhRnh1SUNCblpYUkRiMjUwWlhoME9pQm1kVzVqZEdsdmJpaGtaWEIwYUNrZ2UxeHVJQ0FnSUhSb2FYTXViR0Z6ZEVOdmJuUmxlSFFnUFNCa1pYQjBhRHRjYmlBZ2ZTeGNibHh1SUNBdkx5QmJjSFZ6YUVOdmJuUmxlSFJkWEc0Z0lDOHZYRzRnSUM4dklFOXVJSE4wWVdOckxDQmlaV1p2Y21VNklDNHVMbHh1SUNBdkx5QlBiaUJ6ZEdGamF5d2dZV1owWlhJNklHTjFjbkpsYm5SRGIyNTBaWGgwTENBdUxpNWNiaUFnTHk5Y2JpQWdMeThnVUhWemFHVnpJSFJvWlNCMllXeDFaU0J2WmlCMGFHVWdZM1Z5Y21WdWRDQmpiMjUwWlhoMElHOXVkRzhnZEdobElITjBZV05yTGx4dUlDQndkWE5vUTI5dWRHVjRkRG9nWm5WdVkzUnBiMjRvS1NCN1hHNGdJQ0FnZEdocGN5NXdkWE5vVTNSaFkydE1hWFJsY21Gc0tIUm9hWE11WTI5dWRHVjRkRTVoYldVb2RHaHBjeTVzWVhOMFEyOXVkR1Y0ZENrcE8xeHVJQ0I5TEZ4dVhHNGdJQzh2SUZ0c2IyOXJkWEJQYmtOdmJuUmxlSFJkWEc0Z0lDOHZYRzRnSUM4dklFOXVJSE4wWVdOckxDQmlaV1p2Y21VNklDNHVMbHh1SUNBdkx5QlBiaUJ6ZEdGamF5d2dZV1owWlhJNklHTjFjbkpsYm5SRGIyNTBaWGgwVzI1aGJXVmRMQ0F1TGk1Y2JpQWdMeTljYmlBZ0x5OGdURzl2YTNNZ2RYQWdkR2hsSUhaaGJIVmxJRzltSUdCdVlXMWxZQ0J2YmlCMGFHVWdZM1Z5Y21WdWRDQmpiMjUwWlhoMElHRnVaQ0J3ZFhOb1pYTmNiaUFnTHk4Z2FYUWdiMjUwYnlCMGFHVWdjM1JoWTJzdVhHNGdJR3h2YjJ0MWNFOXVRMjl1ZEdWNGREb2dablZ1WTNScGIyNG9jR0Z5ZEhNc0lHWmhiSE41TENCemRISnBZM1FzSUhOamIzQmxaQ2tnZTF4dUlDQWdJR3hsZENCcElEMGdNRHRjYmx4dUlDQWdJR2xtSUNnaGMyTnZjR1ZrSUNZbUlIUm9hWE11YjNCMGFXOXVjeTVqYjIxd1lYUWdKaVlnSVhSb2FYTXViR0Z6ZEVOdmJuUmxlSFFwSUh0Y2JpQWdJQ0FnSUM4dklGUm9aU0JrWlhCMGFHVmtJSEYxWlhKNUlHbHpJR1Y0Y0dWamRHVmtJSFJ2SUdoaGJtUnNaU0IwYUdVZ2RXNWtaV1pwYm1Wa0lHeHZaMmxqSUdadmNpQjBhR1VnY205dmRDQnNaWFpsYkNCMGFHRjBYRzRnSUNBZ0lDQXZMeUJwY3lCcGJYQnNaVzFsYm5SbFpDQmlaV3h2ZHl3Z2MyOGdkMlVnWlhaaGJIVmhkR1VnZEdoaGRDQmthWEpsWTNSc2VTQnBiaUJqYjIxd1lYUWdiVzlrWlZ4dUlDQWdJQ0FnZEdocGN5NXdkWE5vS0hSb2FYTXVaR1Z3ZEdobFpFeHZiMnQxY0Nod1lYSjBjMXRwS3l0ZEtTazdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhSb2FYTXVjSFZ6YUVOdmJuUmxlSFFvS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IwYUdsekxuSmxjMjlzZG1WUVlYUm9LQ2RqYjI1MFpYaDBKeXdnY0dGeWRITXNJR2tzSUdaaGJITjVMQ0J6ZEhKcFkzUXBPMXh1SUNCOUxGeHVYRzRnSUM4dklGdHNiMjlyZFhCQ2JHOWphMUJoY21GdFhWeHVJQ0F2TDF4dUlDQXZMeUJQYmlCemRHRmpheXdnWW1WbWIzSmxPaUF1TGk1Y2JpQWdMeThnVDI0Z2MzUmhZMnNzSUdGbWRHVnlPaUJpYkc5amExQmhjbUZ0VzI1aGJXVmRMQ0F1TGk1Y2JpQWdMeTljYmlBZ0x5OGdURzl2YTNNZ2RYQWdkR2hsSUhaaGJIVmxJRzltSUdCd1lYSjBjMkFnYjI0Z2RHaGxJR2RwZG1WdUlHSnNiMk5ySUhCaGNtRnRJR0Z1WkNCd2RYTm9aWE5jYmlBZ0x5OGdhWFFnYjI1MGJ5QjBhR1VnYzNSaFkyc3VYRzRnSUd4dmIydDFjRUpzYjJOclVHRnlZVzA2SUdaMWJtTjBhVzl1S0dKc2IyTnJVR0Z5WVcxSlpDd2djR0Z5ZEhNcElIdGNiaUFnSUNCMGFHbHpMblZ6WlVKc2IyTnJVR0Z5WVcxeklEMGdkSEoxWlR0Y2JseHVJQ0FnSUhSb2FYTXVjSFZ6YUNoYkoySnNiMk5yVUdGeVlXMXpXeWNzSUdKc2IyTnJVR0Z5WVcxSlpGc3dYU3dnSjExYkp5d2dZbXh2WTJ0UVlYSmhiVWxrV3pGZExDQW5YU2RkS1R0Y2JpQWdJQ0IwYUdsekxuSmxjMjlzZG1WUVlYUm9LQ2RqYjI1MFpYaDBKeXdnY0dGeWRITXNJREVwTzF4dUlDQjlMRnh1WEc0Z0lDOHZJRnRzYjI5cmRYQkVZWFJoWFZ4dUlDQXZMMXh1SUNBdkx5QlBiaUJ6ZEdGamF5d2dZbVZtYjNKbE9pQXVMaTVjYmlBZ0x5OGdUMjRnYzNSaFkyc3NJR0ZtZEdWeU9pQmtZWFJoTENBdUxpNWNiaUFnTHk5Y2JpQWdMeThnVUhWemFDQjBhR1VnWkdGMFlTQnNiMjlyZFhBZ2IzQmxjbUYwYjNKY2JpQWdiRzl2YTNWd1JHRjBZVG9nWm5WdVkzUnBiMjRvWkdWd2RHZ3NJSEJoY25SekxDQnpkSEpwWTNRcElIdGNiaUFnSUNCcFppQW9JV1JsY0hSb0tTQjdYRzRnSUNBZ0lDQjBhR2x6TG5CMWMyaFRkR0ZqYTB4cGRHVnlZV3dvSjJSaGRHRW5LVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2RHaHBjeTV3ZFhOb1UzUmhZMnRNYVhSbGNtRnNLQ2RqYjI1MFlXbHVaWEl1WkdGMFlTaGtZWFJoTENBbklDc2daR1Z3ZEdnZ0t5QW5LU2NwTzF4dUlDQWdJSDFjYmx4dUlDQWdJSFJvYVhNdWNtVnpiMngyWlZCaGRHZ29KMlJoZEdFbkxDQndZWEowY3l3Z01Dd2dkSEoxWlN3Z2MzUnlhV04wS1R0Y2JpQWdmU3hjYmx4dUlDQnlaWE52YkhabFVHRjBhRG9nWm5WdVkzUnBiMjRvZEhsd1pTd2djR0Z5ZEhNc0lHa3NJR1poYkhONUxDQnpkSEpwWTNRcElIdGNiaUFnSUNCcFppQW9kR2hwY3k1dmNIUnBiMjV6TG5OMGNtbGpkQ0I4ZkNCMGFHbHpMbTl3ZEdsdmJuTXVZWE56ZFcxbFQySnFaV04wY3lrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTV3ZFhOb0tITjBjbWxqZEV4dmIydDFjQ2gwYUdsekxtOXdkR2x2Ym5NdWMzUnlhV04wSUNZbUlITjBjbWxqZEN3Z2RHaHBjeXdnY0dGeWRITXNJSFI1Y0dVcEtUdGNiaUFnSUNBZ0lISmxkSFZ5Ymp0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JzWlhRZ2JHVnVJRDBnY0dGeWRITXViR1Z1WjNSb08xeHVJQ0FnSUdadmNpQW9PeUJwSUR3Z2JHVnVPeUJwS3lzcElIdGNiaUFnSUNBZ0lDOHFJR1Z6YkdsdWRDMWthWE5oWW14bElHNXZMV3h2YjNBdFpuVnVZeUFxTDF4dUlDQWdJQ0FnZEdocGN5NXlaWEJzWVdObFUzUmhZMnNvWTNWeWNtVnVkQ0E5UGlCN1hHNGdJQ0FnSUNBZ0lHeGxkQ0JzYjI5cmRYQWdQU0IwYUdsekxtNWhiV1ZNYjI5cmRYQW9ZM1Z5Y21WdWRDd2djR0Z5ZEhOYmFWMHNJSFI1Y0dVcE8xeHVJQ0FnSUNBZ0lDQXZMeUJYWlNCM1lXNTBJSFJ2SUdWdWMzVnlaU0IwYUdGMElIcGxjbThnWVc1a0lHWmhiSE5sSUdGeVpTQm9ZVzVrYkdWa0lIQnliM0JsY214NUlHbG1JSFJvWlNCamIyNTBaWGgwSUNobVlXeHplU0JtYkdGbktWeHVJQ0FnSUNBZ0lDQXZMeUJ1WldWa2N5QjBieUJvWVhabElIUm9aU0J6Y0dWamFXRnNJR2hoYm1Sc2FXNW5JR1p2Y2lCMGFHVnpaU0IyWVd4MVpYTXVYRzRnSUNBZ0lDQWdJR2xtSUNnaFptRnNjM2twSUh0Y2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1d5Y2dJVDBnYm5Wc2JDQS9JQ2NzSUd4dmIydDFjQ3dnSnlBNklDY3NJR04xY25KbGJuUmRPMXh1SUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0FnSUM4dklFOTBhR1Z5ZDJselpTQjNaU0JqWVc0Z2RYTmxJR2RsYm1WeWFXTWdabUZzYzNrZ2FHRnVaR3hwYm1kY2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z1d5Y2dKaVlnSnl3Z2JHOXZhM1Z3WFR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZTazdYRzRnSUNBZ0lDQXZLaUJsYzJ4cGJuUXRaVzVoWW14bElHNXZMV3h2YjNBdFpuVnVZeUFxTDF4dUlDQWdJSDFjYmlBZ2ZTeGNibHh1SUNBdkx5QmJjbVZ6YjJ4MlpWQnZjM05wWW14bFRHRnRZbVJoWFZ4dUlDQXZMMXh1SUNBdkx5QlBiaUJ6ZEdGamF5d2dZbVZtYjNKbE9pQjJZV3gxWlN3Z0xpNHVYRzRnSUM4dklFOXVJSE4wWVdOckxDQmhablJsY2pvZ2NtVnpiMngyWldRZ2RtRnNkV1VzSUM0dUxseHVJQ0F2TDF4dUlDQXZMeUJKWmlCMGFHVWdZSFpoYkhWbFlDQnBjeUJoSUd4aGJXSmtZU3dnY21Wd2JHRmpaU0JwZENCdmJpQjBhR1VnYzNSaFkyc2dZbmxjYmlBZ0x5OGdkR2hsSUhKbGRIVnliaUIyWVd4MVpTQnZaaUIwYUdVZ2JHRnRZbVJoWEc0Z0lISmxjMjlzZG1WUWIzTnphV0pzWlV4aGJXSmtZVG9nWm5WdVkzUnBiMjRvS1NCN1hHNGdJQ0FnZEdocGN5NXdkWE5vS0Z0Y2JpQWdJQ0FnSUhSb2FYTXVZV3hwWVhOaFlteGxLQ2RqYjI1MFlXbHVaWEl1YkdGdFltUmhKeWtzWEc0Z0lDQWdJQ0FuS0Njc1hHNGdJQ0FnSUNCMGFHbHpMbkJ2Y0ZOMFlXTnJLQ2tzWEc0Z0lDQWdJQ0FuTENBbkxGeHVJQ0FnSUNBZ2RHaHBjeTVqYjI1MFpYaDBUbUZ0WlNnd0tTeGNiaUFnSUNBZ0lDY3BKMXh1SUNBZ0lGMHBPMXh1SUNCOUxGeHVYRzRnSUM4dklGdHdkWE5vVTNSeWFXNW5VR0Z5WVcxZFhHNGdJQzh2WEc0Z0lDOHZJRTl1SUhOMFlXTnJMQ0JpWldadmNtVTZJQzR1TGx4dUlDQXZMeUJQYmlCemRHRmpheXdnWVdaMFpYSTZJSE4wY21sdVp5d2dZM1Z5Y21WdWRFTnZiblJsZUhRc0lDNHVMbHh1SUNBdkwxeHVJQ0F2THlCVWFHbHpJRzl3WTI5a1pTQnBjeUJrWlhOcFoyNWxaQ0JtYjNJZ2RYTmxJR2x1SUhOMGNtbHVaeUJ0YjJSbExDQjNhR2xqYUZ4dUlDQXZMeUJ3Y205MmFXUmxjeUIwYUdVZ2MzUnlhVzVuSUhaaGJIVmxJRzltSUdFZ2NHRnlZVzFsZEdWeUlHRnNiMjVuSUhkcGRHZ2dhWFJ6WEc0Z0lDOHZJR1JsY0hSb0lISmhkR2hsY2lCMGFHRnVJSEpsYzI5c2RtbHVaeUJwZENCcGJXMWxaR2xoZEdWc2VTNWNiaUFnY0hWemFGTjBjbWx1WjFCaGNtRnRPaUJtZFc1amRHbHZiaWh6ZEhKcGJtY3NJSFI1Y0dVcElIdGNiaUFnSUNCMGFHbHpMbkIxYzJoRGIyNTBaWGgwS0NrN1hHNGdJQ0FnZEdocGN5NXdkWE5vVTNSeWFXNW5LSFI1Y0dVcE8xeHVYRzRnSUNBZ0x5OGdTV1lnYVhRbmN5QmhJSE4xWW1WNGNISmxjM05wYjI0c0lIUm9aU0J6ZEhKcGJtY2djbVZ6ZFd4MFhHNGdJQ0FnTHk4Z2QybHNiQ0JpWlNCd2RYTm9aV1FnWVdaMFpYSWdkR2hwY3lCdmNHTnZaR1V1WEc0Z0lDQWdhV1lnS0hSNWNHVWdJVDA5SUNkVGRXSkZlSEJ5WlhOemFXOXVKeWtnZTF4dUlDQWdJQ0FnYVdZZ0tIUjVjR1Z2WmlCemRISnBibWNnUFQwOUlDZHpkSEpwYm1jbktTQjdYRzRnSUNBZ0lDQWdJSFJvYVhNdWNIVnphRk4wY21sdVp5aHpkSEpwYm1jcE8xeHVJQ0FnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTV3ZFhOb1UzUmhZMnRNYVhSbGNtRnNLSE4wY21sdVp5azdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dVhHNGdJR1Z0Y0hSNVNHRnphRG9nWm5WdVkzUnBiMjRvYjIxcGRFVnRjSFI1S1NCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11ZEhKaFkydEpaSE1wSUh0Y2JpQWdJQ0FnSUhSb2FYTXVjSFZ6YUNnbmUzMG5LVHNnTHk4Z2FHRnphRWxrYzF4dUlDQWdJSDFjYmlBZ0lDQnBaaUFvZEdocGN5NXpkSEpwYm1kUVlYSmhiWE1wSUh0Y2JpQWdJQ0FnSUhSb2FYTXVjSFZ6YUNnbmUzMG5LVHNnTHk4Z2FHRnphRU52Ym5SbGVIUnpYRzRnSUNBZ0lDQjBhR2x6TG5CMWMyZ29KM3Q5SnlrN0lDOHZJR2hoYzJoVWVYQmxjMXh1SUNBZ0lIMWNiaUFnSUNCMGFHbHpMbkIxYzJoVGRHRmphMHhwZEdWeVlXd29iMjFwZEVWdGNIUjVJRDhnSjNWdVpHVm1hVzVsWkNjZ09pQW5lMzBuS1R0Y2JpQWdmU3hjYmlBZ2NIVnphRWhoYzJnNklHWjFibU4wYVc5dUtDa2dlMXh1SUNBZ0lHbG1JQ2gwYUdsekxtaGhjMmdwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVhR0Z6YUdWekxuQjFjMmdvZEdocGN5NW9ZWE5vS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdkR2hwY3k1b1lYTm9JRDBnZXlCMllXeDFaWE02SUh0OUxDQjBlWEJsY3pvZ1cxMHNJR052Ym5SbGVIUnpPaUJiWFN3Z2FXUnpPaUJiWFNCOU8xeHVJQ0I5TEZ4dUlDQndiM0JJWVhOb09pQm1kVzVqZEdsdmJpZ3BJSHRjYmlBZ0lDQnNaWFFnYUdGemFDQTlJSFJvYVhNdWFHRnphRHRjYmlBZ0lDQjBhR2x6TG1oaGMyZ2dQU0IwYUdsekxtaGhjMmhsY3k1d2IzQW9LVHRjYmx4dUlDQWdJR2xtSUNoMGFHbHpMblJ5WVdOclNXUnpLU0I3WEc0Z0lDQWdJQ0IwYUdsekxuQjFjMmdvZEdocGN5NXZZbXBsWTNSTWFYUmxjbUZzS0doaGMyZ3VhV1J6S1NrN1hHNGdJQ0FnZlZ4dUlDQWdJR2xtSUNoMGFHbHpMbk4wY21sdVoxQmhjbUZ0Y3lrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTV3ZFhOb0tIUm9hWE11YjJKcVpXTjBUR2wwWlhKaGJDaG9ZWE5vTG1OdmJuUmxlSFJ6S1NrN1hHNGdJQ0FnSUNCMGFHbHpMbkIxYzJnb2RHaHBjeTV2WW1wbFkzUk1hWFJsY21Gc0tHaGhjMmd1ZEhsd1pYTXBLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQjBhR2x6TG5CMWMyZ29kR2hwY3k1dlltcGxZM1JNYVhSbGNtRnNLR2hoYzJndWRtRnNkV1Z6S1NrN1hHNGdJSDBzWEc1Y2JpQWdMeThnVzNCMWMyaFRkSEpwYm1kZFhHNGdJQzh2WEc0Z0lDOHZJRTl1SUhOMFlXTnJMQ0JpWldadmNtVTZJQzR1TGx4dUlDQXZMeUJQYmlCemRHRmpheXdnWVdaMFpYSTZJSEYxYjNSbFpGTjBjbWx1WnloemRISnBibWNwTENBdUxpNWNiaUFnTHk5Y2JpQWdMeThnVUhWemFDQmhJSEYxYjNSbFpDQjJaWEp6YVc5dUlHOW1JR0J6ZEhKcGJtZGdJRzl1ZEc4Z2RHaGxJSE4wWVdOclhHNGdJSEIxYzJoVGRISnBibWM2SUdaMWJtTjBhVzl1S0hOMGNtbHVaeWtnZTF4dUlDQWdJSFJvYVhNdWNIVnphRk4wWVdOclRHbDBaWEpoYkNoMGFHbHpMbkYxYjNSbFpGTjBjbWx1WnloemRISnBibWNwS1R0Y2JpQWdmU3hjYmx4dUlDQXZMeUJiY0hWemFFeHBkR1Z5WVd4ZFhHNGdJQzh2WEc0Z0lDOHZJRTl1SUhOMFlXTnJMQ0JpWldadmNtVTZJQzR1TGx4dUlDQXZMeUJQYmlCemRHRmpheXdnWVdaMFpYSTZJSFpoYkhWbExDQXVMaTVjYmlBZ0x5OWNiaUFnTHk4Z1VIVnphR1Z6SUdFZ2RtRnNkV1VnYjI1MGJ5QjBhR1VnYzNSaFkyc3VJRlJvYVhNZ2IzQmxjbUYwYVc5dUlIQnlaWFpsYm5SelhHNGdJQzh2SUhSb1pTQmpiMjF3YVd4bGNpQm1jbTl0SUdOeVpXRjBhVzVuSUdFZ2RHVnRjRzl5WVhKNUlIWmhjbWxoWW14bElIUnZJR2h2YkdSY2JpQWdMeThnYVhRdVhHNGdJSEIxYzJoTWFYUmxjbUZzT2lCbWRXNWpkR2x2YmloMllXeDFaU2tnZTF4dUlDQWdJSFJvYVhNdWNIVnphRk4wWVdOclRHbDBaWEpoYkNoMllXeDFaU2s3WEc0Z0lIMHNYRzVjYmlBZ0x5OGdXM0IxYzJoUWNtOW5jbUZ0WFZ4dUlDQXZMMXh1SUNBdkx5QlBiaUJ6ZEdGamF5d2dZbVZtYjNKbE9pQXVMaTVjYmlBZ0x5OGdUMjRnYzNSaFkyc3NJR0ZtZEdWeU9pQndjbTluY21GdEtHZDFhV1FwTENBdUxpNWNiaUFnTHk5Y2JpQWdMeThnVUhWemFDQmhJSEJ5YjJkeVlXMGdaWGh3Y21WemMybHZiaUJ2Ym5SdklIUm9aU0J6ZEdGamF5NGdWR2hwY3lCMFlXdGxjMXh1SUNBdkx5QmhJR052YlhCcGJHVXRkR2x0WlNCbmRXbGtJR0Z1WkNCamIyNTJaWEowY3lCcGRDQnBiblJ2SUdFZ2NuVnVkR2x0WlMxaFkyTmxjM05wWW14bFhHNGdJQzh2SUdWNGNISmxjM05wYjI0dVhHNGdJSEIxYzJoUWNtOW5jbUZ0T2lCbWRXNWpkR2x2YmlobmRXbGtLU0I3WEc0Z0lDQWdhV1lnS0dkMWFXUWdJVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdkR2hwY3k1d2RYTm9VM1JoWTJ0TWFYUmxjbUZzS0hSb2FYTXVjSEp2WjNKaGJVVjRjSEpsYzNOcGIyNG9aM1ZwWkNrcE8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0IwYUdsekxuQjFjMmhUZEdGamEweHBkR1Z5WVd3b2JuVnNiQ2s3WEc0Z0lDQWdmVnh1SUNCOUxGeHVYRzRnSUM4dklGdHlaV2RwYzNSbGNrUmxZMjl5WVhSdmNsMWNiaUFnTHk5Y2JpQWdMeThnVDI0Z2MzUmhZMnNzSUdKbFptOXlaVG9nYUdGemFDd2djSEp2WjNKaGJTd2djR0Z5WVcxekxpNHVMQ0F1TGk1Y2JpQWdMeThnVDI0Z2MzUmhZMnNzSUdGbWRHVnlPaUF1TGk1Y2JpQWdMeTljYmlBZ0x5OGdVRzl3Y3lCdlptWWdkR2hsSUdSbFkyOXlZWFJ2Y2lkeklIQmhjbUZ0WlhSbGNuTXNJR2x1ZG05clpYTWdkR2hsSUdSbFkyOXlZWFJ2Y2l4Y2JpQWdMeThnWVc1a0lHbHVjMlZ5ZEhNZ2RHaGxJR1JsWTI5eVlYUnZjaUJwYm5SdklIUm9aU0JrWldOdmNtRjBiM0p6SUd4cGMzUXVYRzRnSUhKbFoybHpkR1Z5UkdWamIzSmhkRzl5S0hCaGNtRnRVMmw2WlN3Z2JtRnRaU2tnZTF4dUlDQWdJR3hsZENCbWIzVnVaRVJsWTI5eVlYUnZjaUE5SUhSb2FYTXVibUZ0WlV4dmIydDFjQ2duWkdWamIzSmhkRzl5Y3ljc0lHNWhiV1VzSUNka1pXTnZjbUYwYjNJbktTeGNiaUFnSUNBZ0lHOXdkR2x2Ym5NZ1BTQjBhR2x6TG5ObGRIVndTR1ZzY0dWeVFYSm5jeWh1WVcxbExDQndZWEpoYlZOcGVtVXBPMXh1WEc0Z0lDQWdkR2hwY3k1a1pXTnZjbUYwYjNKekxuQjFjMmdvVzF4dUlDQWdJQ0FnSjJadUlEMGdKeXhjYmlBZ0lDQWdJSFJvYVhNdVpHVmpiM0poZEc5eWN5NW1kVzVqZEdsdmJrTmhiR3dvWm05MWJtUkVaV052Y21GMGIzSXNJQ2NuTENCYlhHNGdJQ0FnSUNBZ0lDZG1iaWNzWEc0Z0lDQWdJQ0FnSUNkd2NtOXdjeWNzWEc0Z0lDQWdJQ0FnSUNkamIyNTBZV2x1WlhJbkxGeHVJQ0FnSUNBZ0lDQnZjSFJwYjI1elhHNGdJQ0FnSUNCZEtTeGNiaUFnSUNBZ0lDY2dmSHdnWm00N0oxeHVJQ0FnSUYwcE8xeHVJQ0I5TEZ4dVhHNGdJQzh2SUZ0cGJuWnZhMlZJWld4d1pYSmRYRzRnSUM4dlhHNGdJQzh2SUU5dUlITjBZV05yTENCaVpXWnZjbVU2SUdoaGMyZ3NJR2x1ZG1WeWMyVXNJSEJ5YjJkeVlXMHNJSEJoY21GdGN5NHVMaXdnTGk0dVhHNGdJQzh2SUU5dUlITjBZV05yTENCaFpuUmxjam9nY21WemRXeDBJRzltSUdobGJIQmxjaUJwYm5adlkyRjBhVzl1WEc0Z0lDOHZYRzRnSUM4dklGQnZjSE1nYjJabUlIUm9aU0JvWld4d1pYSW5jeUJ3WVhKaGJXVjBaWEp6TENCcGJuWnZhMlZ6SUhSb1pTQm9aV3h3WlhJc1hHNGdJQzh2SUdGdVpDQndkWE5vWlhNZ2RHaGxJR2hsYkhCbGNpZHpJSEpsZEhWeWJpQjJZV3gxWlNCdmJuUnZJSFJvWlNCemRHRmpheTVjYmlBZ0x5OWNiaUFnTHk4Z1NXWWdkR2hsSUdobGJIQmxjaUJwY3lCdWIzUWdabTkxYm1Rc0lHQm9aV3h3WlhKTmFYTnphVzVuWUNCcGN5QmpZV3hzWldRdVhHNGdJR2x1ZG05clpVaGxiSEJsY2pvZ1puVnVZM1JwYjI0b2NHRnlZVzFUYVhwbExDQnVZVzFsTENCcGMxTnBiWEJzWlNrZ2UxeHVJQ0FnSUd4bGRDQnViMjVJWld4d1pYSWdQU0IwYUdsekxuQnZjRk4wWVdOcktDa3NYRzRnSUNBZ0lDQm9aV3h3WlhJZ1BTQjBhR2x6TG5ObGRIVndTR1ZzY0dWeUtIQmhjbUZ0VTJsNlpTd2dibUZ0WlNrN1hHNWNiaUFnSUNCc1pYUWdjRzl6YzJsaWJHVkdkVzVqZEdsdmJrTmhiR3h6SUQwZ1cxMDdYRzVjYmlBZ0lDQnBaaUFvYVhOVGFXMXdiR1VwSUh0Y2JpQWdJQ0FnSUM4dklHUnBjbVZqZENCallXeHNJSFJ2SUdobGJIQmxjbHh1SUNBZ0lDQWdjRzl6YzJsaWJHVkdkVzVqZEdsdmJrTmhiR3h6TG5CMWMyZ29hR1ZzY0dWeUxtNWhiV1VwTzF4dUlDQWdJSDFjYmlBZ0lDQXZMeUJqWVd4c0lHRWdablZ1WTNScGIyNGdabkp2YlNCMGFHVWdhVzV3ZFhRZ2IySnFaV04wWEc0Z0lDQWdjRzl6YzJsaWJHVkdkVzVqZEdsdmJrTmhiR3h6TG5CMWMyZ29ibTl1U0dWc2NHVnlLVHRjYmlBZ0lDQnBaaUFvSVhSb2FYTXViM0IwYVc5dWN5NXpkSEpwWTNRcElIdGNiaUFnSUNBZ0lIQnZjM05wWW14bFJuVnVZM1JwYjI1RFlXeHNjeTV3ZFhOb0tGeHVJQ0FnSUNBZ0lDQjBhR2x6TG1Gc2FXRnpZV0pzWlNnblkyOXVkR0ZwYm1WeUxtaHZiMnR6TG1obGJIQmxjazFwYzNOcGJtY25LVnh1SUNBZ0lDQWdLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnNaWFFnWm5WdVkzUnBiMjVNYjI5cmRYQkRiMlJsSUQwZ1cxeHVJQ0FnSUNBZ0p5Z25MRnh1SUNBZ0lDQWdkR2hwY3k1cGRHVnRjMU5sY0dGeVlYUmxaRUo1S0hCdmMzTnBZbXhsUm5WdVkzUnBiMjVEWVd4c2N5d2dKM3g4Snlrc1hHNGdJQ0FnSUNBbktTZGNiaUFnSUNCZE8xeHVJQ0FnSUd4bGRDQm1kVzVqZEdsdmJrTmhiR3dnUFNCMGFHbHpMbk52ZFhKalpTNW1kVzVqZEdsdmJrTmhiR3dvWEc0Z0lDQWdJQ0JtZFc1amRHbHZia3h2YjJ0MWNFTnZaR1VzWEc0Z0lDQWdJQ0FuWTJGc2JDY3NYRzRnSUNBZ0lDQm9aV3h3WlhJdVkyRnNiRkJoY21GdGMxeHVJQ0FnSUNrN1hHNGdJQ0FnZEdocGN5NXdkWE5vS0daMWJtTjBhVzl1UTJGc2JDazdYRzRnSUgwc1hHNWNiaUFnYVhSbGJYTlRaWEJoY21GMFpXUkNlVG9nWm5WdVkzUnBiMjRvYVhSbGJYTXNJSE5sY0dGeVlYUnZjaWtnZTF4dUlDQWdJR3hsZENCeVpYTjFiSFFnUFNCYlhUdGNiaUFnSUNCeVpYTjFiSFF1Y0hWemFDaHBkR1Z0YzFzd1hTazdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREU3SUdrZ1BDQnBkR1Z0Y3k1c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lDQWdjbVZ6ZFd4MExuQjFjMmdvYzJWd1lYSmhkRzl5TENCcGRHVnRjMXRwWFNrN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnlaWE4xYkhRN1hHNGdJSDBzWEc0Z0lDOHZJRnRwYm5admEyVkxibTkzYmtobGJIQmxjbDFjYmlBZ0x5OWNiaUFnTHk4Z1QyNGdjM1JoWTJzc0lHSmxabTl5WlRvZ2FHRnphQ3dnYVc1MlpYSnpaU3dnY0hKdlozSmhiU3dnY0dGeVlXMXpMaTR1TENBdUxpNWNiaUFnTHk4Z1QyNGdjM1JoWTJzc0lHRm1kR1Z5T2lCeVpYTjFiSFFnYjJZZ2FHVnNjR1Z5SUdsdWRtOWpZWFJwYjI1Y2JpQWdMeTljYmlBZ0x5OGdWR2hwY3lCdmNHVnlZWFJwYjI0Z2FYTWdkWE5sWkNCM2FHVnVJSFJvWlNCb1pXeHdaWElnYVhNZ2EyNXZkMjRnZEc4Z1pYaHBjM1FzWEc0Z0lDOHZJSE52SUdFZ1lHaGxiSEJsY2sxcGMzTnBibWRnSUdaaGJHeGlZV05ySUdseklHNXZkQ0J5WlhGMWFYSmxaQzVjYmlBZ2FXNTJiMnRsUzI1dmQyNUlaV3h3WlhJNklHWjFibU4wYVc5dUtIQmhjbUZ0VTJsNlpTd2dibUZ0WlNrZ2UxeHVJQ0FnSUd4bGRDQm9aV3h3WlhJZ1BTQjBhR2x6TG5ObGRIVndTR1ZzY0dWeUtIQmhjbUZ0VTJsNlpTd2dibUZ0WlNrN1hHNGdJQ0FnZEdocGN5NXdkWE5vS0hSb2FYTXVjMjkxY21ObExtWjFibU4wYVc5dVEyRnNiQ2hvWld4d1pYSXVibUZ0WlN3Z0oyTmhiR3duTENCb1pXeHdaWEl1WTJGc2JGQmhjbUZ0Y3lrcE8xeHVJQ0I5TEZ4dVhHNGdJQzh2SUZ0cGJuWnZhMlZCYldKcFozVnZkWE5kWEc0Z0lDOHZYRzRnSUM4dklFOXVJSE4wWVdOckxDQmlaV1p2Y21VNklHaGhjMmdzSUdsdWRtVnljMlVzSUhCeWIyZHlZVzBzSUhCaGNtRnRjeTR1TGl3Z0xpNHVYRzRnSUM4dklFOXVJSE4wWVdOckxDQmhablJsY2pvZ2NtVnpkV3gwSUc5bUlHUnBjMkZ0WW1sbmRXRjBhVzl1WEc0Z0lDOHZYRzRnSUM4dklGUm9hWE1nYjNCbGNtRjBhVzl1SUdseklIVnpaV1FnZDJobGJpQmhiaUJsZUhCeVpYTnphVzl1SUd4cGEyVWdZSHQ3Wm05dmZYMWdYRzRnSUM4dklHbHpJSEJ5YjNacFpHVmtMQ0JpZFhRZ2QyVWdaRzl1SjNRZ2EyNXZkeUJoZENCamIyMXdhV3hsTFhScGJXVWdkMmhsZEdobGNpQnBkRnh1SUNBdkx5QnBjeUJoSUdobGJIQmxjaUJ2Y2lCaElIQmhkR2d1WEc0Z0lDOHZYRzRnSUM4dklGUm9hWE1nYjNCbGNtRjBhVzl1SUdWdGFYUnpJRzF2Y21VZ1kyOWtaU0IwYUdGdUlIUm9aU0J2ZEdobGNpQnZjSFJwYjI1ekxGeHVJQ0F2THlCaGJtUWdZMkZ1SUdKbElHRjJiMmxrWldRZ1lua2djR0Z6YzJsdVp5QjBhR1VnWUd0dWIzZHVTR1ZzY0dWeWMyQWdZVzVrWEc0Z0lDOHZJR0JyYm05M2JraGxiSEJsY25OUGJteDVZQ0JtYkdGbmN5QmhkQ0JqYjIxd2FXeGxMWFJwYldVdVhHNGdJR2x1ZG05clpVRnRZbWxuZFc5MWN6b2dablZ1WTNScGIyNG9ibUZ0WlN3Z2FHVnNjR1Z5UTJGc2JDa2dlMXh1SUNBZ0lIUm9hWE11ZFhObFVtVm5hWE4wWlhJb0oyaGxiSEJsY2ljcE8xeHVYRzRnSUNBZ2JHVjBJRzV2YmtobGJIQmxjaUE5SUhSb2FYTXVjRzl3VTNSaFkyc29LVHRjYmx4dUlDQWdJSFJvYVhNdVpXMXdkSGxJWVhOb0tDazdYRzRnSUNBZ2JHVjBJR2hsYkhCbGNpQTlJSFJvYVhNdWMyVjBkWEJJWld4d1pYSW9NQ3dnYm1GdFpTd2dhR1ZzY0dWeVEyRnNiQ2s3WEc1Y2JpQWdJQ0JzWlhRZ2FHVnNjR1Z5VG1GdFpTQTlJQ2gwYUdsekxteGhjM1JJWld4d1pYSWdQU0IwYUdsekxtNWhiV1ZNYjI5cmRYQW9YRzRnSUNBZ0lDQW5hR1ZzY0dWeWN5Y3NYRzRnSUNBZ0lDQnVZVzFsTEZ4dUlDQWdJQ0FnSjJobGJIQmxjaWRjYmlBZ0lDQXBLVHRjYmx4dUlDQWdJR3hsZENCc2IyOXJkWEFnUFNCYkp5Z25MQ0FuS0dobGJIQmxjaUE5SUNjc0lHaGxiSEJsY2s1aGJXVXNJQ2NnZkh3Z0p5d2dibTl1U0dWc2NHVnlMQ0FuS1NkZE8xeHVJQ0FnSUdsbUlDZ2hkR2hwY3k1dmNIUnBiMjV6TG5OMGNtbGpkQ2tnZTF4dUlDQWdJQ0FnYkc5dmEzVndXekJkSUQwZ0p5aG9aV3h3WlhJZ1BTQW5PMXh1SUNBZ0lDQWdiRzl2YTNWd0xuQjFjMmdvWEc0Z0lDQWdJQ0FnSUNjZ0lUMGdiblZzYkNBL0lHaGxiSEJsY2lBNklDY3NYRzRnSUNBZ0lDQWdJSFJvYVhNdVlXeHBZWE5oWW14bEtDZGpiMjUwWVdsdVpYSXVhRzl2YTNNdWFHVnNjR1Z5VFdsemMybHVaeWNwWEc0Z0lDQWdJQ0FwTzF4dUlDQWdJSDFjYmx4dUlDQWdJSFJvYVhNdWNIVnphQ2hiWEc0Z0lDQWdJQ0FuS0Njc1hHNGdJQ0FnSUNCc2IyOXJkWEFzWEc0Z0lDQWdJQ0JvWld4d1pYSXVjR0Z5WVcxelNXNXBkQ0EvSUZzbktTd29KeXdnYUdWc2NHVnlMbkJoY21GdGMwbHVhWFJkSURvZ1cxMHNYRzRnSUNBZ0lDQW5LU3duTEZ4dUlDQWdJQ0FnSnloMGVYQmxiMllnYUdWc2NHVnlJRDA5UFNBbkxGeHVJQ0FnSUNBZ2RHaHBjeTVoYkdsaGMyRmliR1VvSjF3aVpuVnVZM1JwYjI1Y0lpY3BMRnh1SUNBZ0lDQWdKeUEvSUNjc1hHNGdJQ0FnSUNCMGFHbHpMbk52ZFhKalpTNW1kVzVqZEdsdmJrTmhiR3dvSjJobGJIQmxjaWNzSUNkallXeHNKeXdnYUdWc2NHVnlMbU5oYkd4UVlYSmhiWE1wTEZ4dUlDQWdJQ0FnSnlBNklHaGxiSEJsY2lrcEoxeHVJQ0FnSUYwcE8xeHVJQ0I5TEZ4dVhHNGdJQzh2SUZ0cGJuWnZhMlZRWVhKMGFXRnNYVnh1SUNBdkwxeHVJQ0F2THlCUGJpQnpkR0ZqYXl3Z1ltVm1iM0psT2lCamIyNTBaWGgwTENBdUxpNWNiaUFnTHk4Z1QyNGdjM1JoWTJzZ1lXWjBaWEk2SUhKbGMzVnNkQ0J2WmlCd1lYSjBhV0ZzSUdsdWRtOWpZWFJwYjI1Y2JpQWdMeTljYmlBZ0x5OGdWR2hwY3lCdmNHVnlZWFJwYjI0Z2NHOXdjeUJ2Wm1ZZ1lTQmpiMjUwWlhoMExDQnBiblp2YTJWeklHRWdjR0Z5ZEdsaGJDQjNhWFJvSUhSb1lYUWdZMjl1ZEdWNGRDeGNiaUFnTHk4Z1lXNWtJSEIxYzJobGN5QjBhR1VnY21WemRXeDBJRzltSUhSb1pTQnBiblp2WTJGMGFXOXVJR0poWTJzdVhHNGdJR2x1ZG05clpWQmhjblJwWVd3NklHWjFibU4wYVc5dUtHbHpSSGx1WVcxcFl5d2dibUZ0WlN3Z2FXNWtaVzUwS1NCN1hHNGdJQ0FnYkdWMElIQmhjbUZ0Y3lBOUlGdGRMRnh1SUNBZ0lDQWdiM0IwYVc5dWN5QTlJSFJvYVhNdWMyVjBkWEJRWVhKaGJYTW9ibUZ0WlN3Z01Td2djR0Z5WVcxektUdGNibHh1SUNBZ0lHbG1JQ2hwYzBSNWJtRnRhV01wSUh0Y2JpQWdJQ0FnSUc1aGJXVWdQU0IwYUdsekxuQnZjRk4wWVdOcktDazdYRzRnSUNBZ0lDQmtaV3hsZEdVZ2IzQjBhVzl1Y3k1dVlXMWxPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2hwYm1SbGJuUXBJSHRjYmlBZ0lDQWdJRzl3ZEdsdmJuTXVhVzVrWlc1MElEMGdTbE5QVGk1emRISnBibWRwWm5rb2FXNWtaVzUwS1R0Y2JpQWdJQ0I5WEc0Z0lDQWdiM0IwYVc5dWN5NW9aV3h3WlhKeklEMGdKMmhsYkhCbGNuTW5PMXh1SUNBZ0lHOXdkR2x2Ym5NdWNHRnlkR2xoYkhNZ1BTQW5jR0Z5ZEdsaGJITW5PMXh1SUNBZ0lHOXdkR2x2Ym5NdVpHVmpiM0poZEc5eWN5QTlJQ2RqYjI1MFlXbHVaWEl1WkdWamIzSmhkRzl5Y3ljN1hHNWNiaUFnSUNCcFppQW9JV2x6UkhsdVlXMXBZeWtnZTF4dUlDQWdJQ0FnY0dGeVlXMXpMblZ1YzJocFpuUW9kR2hwY3k1dVlXMWxURzl2YTNWd0tDZHdZWEowYVdGc2N5Y3NJRzVoYldVc0lDZHdZWEowYVdGc0p5a3BPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCd1lYSmhiWE11ZFc1emFHbG1kQ2h1WVcxbEtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9kR2hwY3k1dmNIUnBiMjV6TG1OdmJYQmhkQ2tnZTF4dUlDQWdJQ0FnYjNCMGFXOXVjeTVrWlhCMGFITWdQU0FuWkdWd2RHaHpKenRjYmlBZ0lDQjlYRzRnSUNBZ2IzQjBhVzl1Y3lBOUlIUm9hWE11YjJKcVpXTjBUR2wwWlhKaGJDaHZjSFJwYjI1ektUdGNiaUFnSUNCd1lYSmhiWE11Y0hWemFDaHZjSFJwYjI1ektUdGNibHh1SUNBZ0lIUm9hWE11Y0hWemFDaDBhR2x6TG5OdmRYSmpaUzVtZFc1amRHbHZia05oYkd3b0oyTnZiblJoYVc1bGNpNXBiblp2YTJWUVlYSjBhV0ZzSnl3Z0p5Y3NJSEJoY21GdGN5a3BPMXh1SUNCOUxGeHVYRzRnSUM4dklGdGhjM05wWjI1VWIwaGhjMmhkWEc0Z0lDOHZYRzRnSUM4dklFOXVJSE4wWVdOckxDQmlaV1p2Y21VNklIWmhiSFZsTENBdUxpNHNJR2hoYzJnc0lDNHVMbHh1SUNBdkx5QlBiaUJ6ZEdGamF5d2dZV1owWlhJNklDNHVMaXdnYUdGemFDd2dMaTR1WEc0Z0lDOHZYRzRnSUM4dklGQnZjSE1nWVNCMllXeDFaU0J2Wm1ZZ2RHaGxJSE4wWVdOcklHRnVaQ0JoYzNOcFoyNXpJR2wwSUhSdklIUm9aU0JqZFhKeVpXNTBJR2hoYzJoY2JpQWdZWE56YVdkdVZHOUlZWE5vT2lCbWRXNWpkR2x2YmloclpYa3BJSHRjYmlBZ0lDQnNaWFFnZG1Gc2RXVWdQU0IwYUdsekxuQnZjRk4wWVdOcktDa3NYRzRnSUNBZ0lDQmpiMjUwWlhoMExGeHVJQ0FnSUNBZ2RIbHdaU3hjYmlBZ0lDQWdJR2xrTzF4dVhHNGdJQ0FnYVdZZ0tIUm9hWE11ZEhKaFkydEpaSE1wSUh0Y2JpQWdJQ0FnSUdsa0lEMGdkR2hwY3k1d2IzQlRkR0ZqYXlncE8xeHVJQ0FnSUgxY2JpQWdJQ0JwWmlBb2RHaHBjeTV6ZEhKcGJtZFFZWEpoYlhNcElIdGNiaUFnSUNBZ0lIUjVjR1VnUFNCMGFHbHpMbkJ2Y0ZOMFlXTnJLQ2s3WEc0Z0lDQWdJQ0JqYjI1MFpYaDBJRDBnZEdocGN5NXdiM0JUZEdGamF5Z3BPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHeGxkQ0JvWVhOb0lEMGdkR2hwY3k1b1lYTm9PMXh1SUNBZ0lHbG1JQ2hqYjI1MFpYaDBLU0I3WEc0Z0lDQWdJQ0JvWVhOb0xtTnZiblJsZUhSelcydGxlVjBnUFNCamIyNTBaWGgwTzF4dUlDQWdJSDFjYmlBZ0lDQnBaaUFvZEhsd1pTa2dlMXh1SUNBZ0lDQWdhR0Z6YUM1MGVYQmxjMXRyWlhsZElEMGdkSGx3WlR0Y2JpQWdJQ0I5WEc0Z0lDQWdhV1lnS0dsa0tTQjdYRzRnSUNBZ0lDQm9ZWE5vTG1sa2MxdHJaWGxkSUQwZ2FXUTdYRzRnSUNBZ2ZWeHVJQ0FnSUdoaGMyZ3VkbUZzZFdWelcydGxlVjBnUFNCMllXeDFaVHRjYmlBZ2ZTeGNibHh1SUNCd2RYTm9TV1E2SUdaMWJtTjBhVzl1S0hSNWNHVXNJRzVoYldVc0lHTm9hV3hrS1NCN1hHNGdJQ0FnYVdZZ0tIUjVjR1VnUFQwOUlDZENiRzlqYTFCaGNtRnRKeWtnZTF4dUlDQWdJQ0FnZEdocGN5NXdkWE5vVTNSaFkydE1hWFJsY21Gc0tGeHVJQ0FnSUNBZ0lDQW5ZbXh2WTJ0UVlYSmhiWE5iSnlBclhHNGdJQ0FnSUNBZ0lDQWdibUZ0WlZzd1hTQXJYRzRnSUNBZ0lDQWdJQ0FnSjEwdWNHRjBhRnNuSUN0Y2JpQWdJQ0FnSUNBZ0lDQnVZVzFsV3pGZElDdGNiaUFnSUNBZ0lDQWdJQ0FuWFNjZ0sxeHVJQ0FnSUNBZ0lDQWdJQ2hqYUdsc1pDQS9JQ2NnS3lBbklDc2dTbE5QVGk1emRISnBibWRwWm5rb0p5NG5JQ3NnWTJocGJHUXBJRG9nSnljcFhHNGdJQ0FnSUNBcE8xeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb2RIbHdaU0E5UFQwZ0oxQmhkR2hGZUhCeVpYTnphVzl1SnlrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTV3ZFhOb1UzUnlhVzVuS0c1aGJXVXBPMXh1SUNBZ0lIMGdaV3h6WlNCcFppQW9kSGx3WlNBOVBUMGdKMU4xWWtWNGNISmxjM05wYjI0bktTQjdYRzRnSUNBZ0lDQjBhR2x6TG5CMWMyaFRkR0ZqYTB4cGRHVnlZV3dvSjNSeWRXVW5LVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2RHaHBjeTV3ZFhOb1UzUmhZMnRNYVhSbGNtRnNLQ2R1ZFd4c0p5azdYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dVhHNGdJQzh2SUVoRlRGQkZVbE5jYmx4dUlDQmpiMjF3YVd4bGNqb2dTbUYyWVZOamNtbHdkRU52YlhCcGJHVnlMRnh1WEc0Z0lHTnZiWEJwYkdWRGFHbHNaSEpsYmpvZ1puVnVZM1JwYjI0b1pXNTJhWEp2Ym0xbGJuUXNJRzl3ZEdsdmJuTXBJSHRjYmlBZ0lDQnNaWFFnWTJocGJHUnlaVzRnUFNCbGJuWnBjbTl1YldWdWRDNWphR2xzWkhKbGJpeGNiaUFnSUNBZ0lHTm9hV3hrTEZ4dUlDQWdJQ0FnWTI5dGNHbHNaWEk3WEc1Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Dd2diQ0E5SUdOb2FXeGtjbVZ1TG14bGJtZDBhRHNnYVNBOElHdzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ1kyaHBiR1FnUFNCamFHbHNaSEpsYmx0cFhUdGNiaUFnSUNBZ0lHTnZiWEJwYkdWeUlEMGdibVYzSUhSb2FYTXVZMjl0Y0dsc1pYSW9LVHNnTHk4Z1pYTnNhVzUwTFdScGMyRmliR1V0YkdsdVpTQnVaWGN0WTJGd1hHNWNiaUFnSUNBZ0lHeGxkQ0JsZUdsemRHbHVaeUE5SUhSb2FYTXViV0YwWTJoRmVHbHpkR2x1WjFCeWIyZHlZVzBvWTJocGJHUXBPMXh1WEc0Z0lDQWdJQ0JwWmlBb1pYaHBjM1JwYm1jZ1BUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ0lDQjBhR2x6TG1OdmJuUmxlSFF1Y0hKdlozSmhiWE11Y0hWemFDZ25KeWs3SUM4dklGQnNZV05sYUc5c1pHVnlJSFJ2SUhCeVpYWmxiblFnYm1GdFpTQmpiMjVtYkdsamRITWdabTl5SUc1bGMzUmxaQ0JqYUdsc1pISmxibHh1SUNBZ0lDQWdJQ0JzWlhRZ2FXNWtaWGdnUFNCMGFHbHpMbU52Ym5SbGVIUXVjSEp2WjNKaGJYTXViR1Z1WjNSb08xeHVJQ0FnSUNBZ0lDQmphR2xzWkM1cGJtUmxlQ0E5SUdsdVpHVjRPMXh1SUNBZ0lDQWdJQ0JqYUdsc1pDNXVZVzFsSUQwZ0ozQnliMmR5WVcwbklDc2dhVzVrWlhnN1hHNGdJQ0FnSUNBZ0lIUm9hWE11WTI5dWRHVjRkQzV3Y205bmNtRnRjMXRwYm1SbGVGMGdQU0JqYjIxd2FXeGxjaTVqYjIxd2FXeGxLRnh1SUNBZ0lDQWdJQ0FnSUdOb2FXeGtMRnh1SUNBZ0lDQWdJQ0FnSUc5d2RHbHZibk1zWEc0Z0lDQWdJQ0FnSUNBZ2RHaHBjeTVqYjI1MFpYaDBMRnh1SUNBZ0lDQWdJQ0FnSUNGMGFHbHpMbkJ5WldOdmJYQnBiR1ZjYmlBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVqYjI1MFpYaDBMbVJsWTI5eVlYUnZjbk5iYVc1a1pYaGRJRDBnWTI5dGNHbHNaWEl1WkdWamIzSmhkRzl5Y3p0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVqYjI1MFpYaDBMbVZ1ZG1seWIyNXRaVzUwYzF0cGJtUmxlRjBnUFNCamFHbHNaRHRjYmx4dUlDQWdJQ0FnSUNCMGFHbHpMblZ6WlVSbGNIUm9jeUE5SUhSb2FYTXVkWE5sUkdWd2RHaHpJSHg4SUdOdmJYQnBiR1Z5TG5WelpVUmxjSFJvY3p0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTUxYzJWQ2JHOWphMUJoY21GdGN5QTlJSFJvYVhNdWRYTmxRbXh2WTJ0UVlYSmhiWE1nZkh3Z1kyOXRjR2xzWlhJdWRYTmxRbXh2WTJ0UVlYSmhiWE03WEc0Z0lDQWdJQ0FnSUdOb2FXeGtMblZ6WlVSbGNIUm9jeUE5SUhSb2FYTXVkWE5sUkdWd2RHaHpPMXh1SUNBZ0lDQWdJQ0JqYUdsc1pDNTFjMlZDYkc5amExQmhjbUZ0Y3lBOUlIUm9hWE11ZFhObFFteHZZMnRRWVhKaGJYTTdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQmphR2xzWkM1cGJtUmxlQ0E5SUdWNGFYTjBhVzVuTG1sdVpHVjRPMXh1SUNBZ0lDQWdJQ0JqYUdsc1pDNXVZVzFsSUQwZ0ozQnliMmR5WVcwbklDc2daWGhwYzNScGJtY3VhVzVrWlhnN1hHNWNiaUFnSUNBZ0lDQWdkR2hwY3k1MWMyVkVaWEIwYUhNZ1BTQjBhR2x6TG5WelpVUmxjSFJvY3lCOGZDQmxlR2x6ZEdsdVp5NTFjMlZFWlhCMGFITTdYRzRnSUNBZ0lDQWdJSFJvYVhNdWRYTmxRbXh2WTJ0UVlYSmhiWE1nUFNCMGFHbHpMblZ6WlVKc2IyTnJVR0Z5WVcxeklIeDhJR1Y0YVhOMGFXNW5MblZ6WlVKc2IyTnJVR0Z5WVcxek8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmU3hjYmlBZ2JXRjBZMmhGZUdsemRHbHVaMUJ5YjJkeVlXMDZJR1oxYm1OMGFXOXVLR05vYVd4a0tTQjdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREFzSUd4bGJpQTlJSFJvYVhNdVkyOXVkR1Y0ZEM1bGJuWnBjbTl1YldWdWRITXViR1Z1WjNSb095QnBJRHdnYkdWdU95QnBLeXNwSUh0Y2JpQWdJQ0FnSUd4bGRDQmxiblpwY205dWJXVnVkQ0E5SUhSb2FYTXVZMjl1ZEdWNGRDNWxiblpwY205dWJXVnVkSE5iYVYwN1hHNGdJQ0FnSUNCcFppQW9aVzUyYVhKdmJtMWxiblFnSmlZZ1pXNTJhWEp2Ym0xbGJuUXVaWEYxWVd4ektHTm9hV3hrS1NrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1pXNTJhWEp2Ym0xbGJuUTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dVhHNGdJSEJ5YjJkeVlXMUZlSEJ5WlhOemFXOXVPaUJtZFc1amRHbHZiaWhuZFdsa0tTQjdYRzRnSUNBZ2JHVjBJR05vYVd4a0lEMGdkR2hwY3k1bGJuWnBjbTl1YldWdWRDNWphR2xzWkhKbGJsdG5kV2xrWFN4Y2JpQWdJQ0FnSUhCeWIyZHlZVzFRWVhKaGJYTWdQU0JiWTJocGJHUXVhVzVrWlhnc0lDZGtZWFJoSnl3Z1kyaHBiR1F1WW14dlkydFFZWEpoYlhOZE8xeHVYRzRnSUNBZ2FXWWdLSFJvYVhNdWRYTmxRbXh2WTJ0UVlYSmhiWE1nZkh3Z2RHaHBjeTUxYzJWRVpYQjBhSE1wSUh0Y2JpQWdJQ0FnSUhCeWIyZHlZVzFRWVhKaGJYTXVjSFZ6YUNnbllteHZZMnRRWVhKaGJYTW5LVHRjYmlBZ0lDQjlYRzRnSUNBZ2FXWWdLSFJvYVhNdWRYTmxSR1Z3ZEdoektTQjdYRzRnSUNBZ0lDQndjbTluY21GdFVHRnlZVzF6TG5CMWMyZ29KMlJsY0hSb2N5Y3BPMXh1SUNBZ0lIMWNibHh1SUNBZ0lISmxkSFZ5YmlBblkyOXVkR0ZwYm1WeUxuQnliMmR5WVcwb0p5QXJJSEJ5YjJkeVlXMVFZWEpoYlhNdWFtOXBiaWduTENBbktTQXJJQ2NwSnp0Y2JpQWdmU3hjYmx4dUlDQjFjMlZTWldkcGMzUmxjam9nWm5WdVkzUnBiMjRvYm1GdFpTa2dlMXh1SUNBZ0lHbG1JQ2doZEdocGN5NXlaV2RwYzNSbGNuTmJibUZ0WlYwcElIdGNiaUFnSUNBZ0lIUm9hWE11Y21WbmFYTjBaWEp6VzI1aGJXVmRJRDBnZEhKMVpUdGNiaUFnSUNBZ0lIUm9hWE11Y21WbmFYTjBaWEp6TG14cGMzUXVjSFZ6YUNodVlXMWxLVHRjYmlBZ0lDQjlYRzRnSUgwc1hHNWNiaUFnY0hWemFEb2dablZ1WTNScGIyNG9aWGh3Y2lrZ2UxeHVJQ0FnSUdsbUlDZ2hLR1Y0Y0hJZ2FXNXpkR0Z1WTJWdlppQk1hWFJsY21Gc0tTa2dlMXh1SUNBZ0lDQWdaWGh3Y2lBOUlIUm9hWE11YzI5MWNtTmxMbmR5WVhBb1pYaHdjaWs3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdkR2hwY3k1cGJteHBibVZUZEdGamF5NXdkWE5vS0dWNGNISXBPMXh1SUNBZ0lISmxkSFZ5YmlCbGVIQnlPMXh1SUNCOUxGeHVYRzRnSUhCMWMyaFRkR0ZqYTB4cGRHVnlZV3c2SUdaMWJtTjBhVzl1S0dsMFpXMHBJSHRjYmlBZ0lDQjBhR2x6TG5CMWMyZ29ibVYzSUV4cGRHVnlZV3dvYVhSbGJTa3BPMXh1SUNCOUxGeHVYRzRnSUhCMWMyaFRiM1Z5WTJVNklHWjFibU4wYVc5dUtITnZkWEpqWlNrZ2UxeHVJQ0FnSUdsbUlDaDBhR2x6TG5CbGJtUnBibWREYjI1MFpXNTBLU0I3WEc0Z0lDQWdJQ0IwYUdsekxuTnZkWEpqWlM1d2RYTm9LRnh1SUNBZ0lDQWdJQ0IwYUdsekxtRndjR1Z1WkZSdlFuVm1abVZ5S0Z4dUlDQWdJQ0FnSUNBZ0lIUm9hWE11YzI5MWNtTmxMbkYxYjNSbFpGTjBjbWx1WnloMGFHbHpMbkJsYm1ScGJtZERiMjUwWlc1MEtTeGNiaUFnSUNBZ0lDQWdJQ0IwYUdsekxuQmxibVJwYm1kTWIyTmhkR2x2Ymx4dUlDQWdJQ0FnSUNBcFhHNGdJQ0FnSUNBcE8xeHVJQ0FnSUNBZ2RHaHBjeTV3Wlc1a2FXNW5RMjl1ZEdWdWRDQTlJSFZ1WkdWbWFXNWxaRHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvYzI5MWNtTmxLU0I3WEc0Z0lDQWdJQ0IwYUdsekxuTnZkWEpqWlM1d2RYTm9LSE52ZFhKalpTazdYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dVhHNGdJSEpsY0d4aFkyVlRkR0ZqYXpvZ1puVnVZM1JwYjI0b1kyRnNiR0poWTJzcElIdGNiaUFnSUNCc1pYUWdjSEpsWm1sNElEMGdXeWNvSjEwc1hHNGdJQ0FnSUNCemRHRmpheXhjYmlBZ0lDQWdJR055WldGMFpXUlRkR0ZqYXl4Y2JpQWdJQ0FnSUhWelpXUk1hWFJsY21Gc08xeHVYRzRnSUNBZ0x5b2dhWE4wWVc1aWRXd2dhV2R1YjNKbElHNWxlSFFnS2k5Y2JpQWdJQ0JwWmlBb0lYUm9hWE11YVhOSmJteHBibVVvS1NrZ2UxeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVjRZMlZ3ZEdsdmJpZ25jbVZ3YkdGalpWTjBZV05ySUc5dUlHNXZiaTFwYm14cGJtVW5LVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQXZMeUJYWlNCM1lXNTBJSFJ2SUcxbGNtZGxJSFJvWlNCcGJteHBibVVnYzNSaGRHVnRaVzUwSUdsdWRHOGdkR2hsSUhKbGNHeGhZMlZ0Wlc1MElITjBZWFJsYldWdWRDQjJhV0VnSnl3blhHNGdJQ0FnYkdWMElIUnZjQ0E5SUhSb2FYTXVjRzl3VTNSaFkyc29kSEoxWlNrN1hHNWNiaUFnSUNCcFppQW9kRzl3SUdsdWMzUmhibU5sYjJZZ1RHbDBaWEpoYkNrZ2UxeHVJQ0FnSUNBZ0x5OGdUR2wwWlhKaGJITWdaRzhnYm05MElHNWxaV1FnZEc4Z1ltVWdhVzVzYVc1bFpGeHVJQ0FnSUNBZ2MzUmhZMnNnUFNCYmRHOXdMblpoYkhWbFhUdGNiaUFnSUNBZ0lIQnlaV1pwZUNBOUlGc25LQ2NzSUhOMFlXTnJYVHRjYmlBZ0lDQWdJSFZ6WldSTWFYUmxjbUZzSUQwZ2RISjFaVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0x5OGdSMlYwSUc5eUlHTnlaV0YwWlNCMGFHVWdZM1Z5Y21WdWRDQnpkR0ZqYXlCdVlXMWxJR1p2Y2lCMWMyVWdZbmtnZEdobElHbHViR2x1WlZ4dUlDQWdJQ0FnWTNKbFlYUmxaRk4wWVdOcklEMGdkSEoxWlR0Y2JpQWdJQ0FnSUd4bGRDQnVZVzFsSUQwZ2RHaHBjeTVwYm1OeVUzUmhZMnNvS1R0Y2JseHVJQ0FnSUNBZ2NISmxabWw0SUQwZ1d5Y29LQ2NzSUhSb2FYTXVjSFZ6YUNodVlXMWxLU3dnSnlBOUlDY3NJSFJ2Y0N3Z0p5a25YVHRjYmlBZ0lDQWdJSE4wWVdOcklEMGdkR2hwY3k1MGIzQlRkR0ZqYXlncE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUd4bGRDQnBkR1Z0SUQwZ1kyRnNiR0poWTJzdVkyRnNiQ2gwYUdsekxDQnpkR0ZqYXlrN1hHNWNiaUFnSUNCcFppQW9JWFZ6WldSTWFYUmxjbUZzS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbkJ2Y0ZOMFlXTnJLQ2s3WEc0Z0lDQWdmVnh1SUNBZ0lHbG1JQ2hqY21WaGRHVmtVM1JoWTJzcElIdGNiaUFnSUNBZ0lIUm9hWE11YzNSaFkydFRiRzkwTFMwN1hHNGdJQ0FnZlZ4dUlDQWdJSFJvYVhNdWNIVnphQ2h3Y21WbWFYZ3VZMjl1WTJGMEtHbDBaVzBzSUNjcEp5a3BPMXh1SUNCOUxGeHVYRzRnSUdsdVkzSlRkR0ZqYXpvZ1puVnVZM1JwYjI0b0tTQjdYRzRnSUNBZ2RHaHBjeTV6ZEdGamExTnNiM1FyS3p0Y2JpQWdJQ0JwWmlBb2RHaHBjeTV6ZEdGamExTnNiM1FnUGlCMGFHbHpMbk4wWVdOclZtRnljeTVzWlc1bmRHZ3BJSHRjYmlBZ0lDQWdJSFJvYVhNdWMzUmhZMnRXWVhKekxuQjFjMmdvSjNOMFlXTnJKeUFySUhSb2FYTXVjM1JoWTJ0VGJHOTBLVHRjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVkRzl3VTNSaFkydE9ZVzFsS0NrN1hHNGdJSDBzWEc0Z0lIUnZjRk4wWVdOclRtRnRaVG9nWm5WdVkzUnBiMjRvS1NCN1hHNGdJQ0FnY21WMGRYSnVJQ2R6ZEdGamF5Y2dLeUIwYUdsekxuTjBZV05yVTJ4dmREdGNiaUFnZlN4Y2JpQWdabXgxYzJoSmJteHBibVU2SUdaMWJtTjBhVzl1S0NrZ2UxeHVJQ0FnSUd4bGRDQnBibXhwYm1WVGRHRmpheUE5SUhSb2FYTXVhVzVzYVc1bFUzUmhZMnM3WEc0Z0lDQWdkR2hwY3k1cGJteHBibVZUZEdGamF5QTlJRnRkTzF4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd0xDQnNaVzRnUFNCcGJteHBibVZUZEdGamF5NXNaVzVuZEdnN0lHa2dQQ0JzWlc0N0lHa3JLeWtnZTF4dUlDQWdJQ0FnYkdWMElHVnVkSEo1SUQwZ2FXNXNhVzVsVTNSaFkydGJhVjA3WEc0Z0lDQWdJQ0F2S2lCcGMzUmhibUoxYkNCcFoyNXZjbVVnYVdZZ0tpOWNiaUFnSUNBZ0lHbG1JQ2hsYm5SeWVTQnBibk4wWVc1alpXOW1JRXhwZEdWeVlXd3BJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5NWpiMjF3YVd4bFUzUmhZMnN1Y0hWemFDaGxiblJ5ZVNrN1hHNGdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCc1pYUWdjM1JoWTJzZ1BTQjBhR2x6TG1sdVkzSlRkR0ZqYXlncE8xeHVJQ0FnSUNBZ0lDQjBhR2x6TG5CMWMyaFRiM1Z5WTJVb1czTjBZV05yTENBbklEMGdKeXdnWlc1MGNua3NJQ2M3SjEwcE8xeHVJQ0FnSUNBZ0lDQjBhR2x6TG1OdmJYQnBiR1ZUZEdGamF5NXdkWE5vS0hOMFlXTnJLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUgwc1hHNGdJR2x6U1c1c2FXNWxPaUJtZFc1amRHbHZiaWdwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1cGJteHBibVZUZEdGamF5NXNaVzVuZEdnN1hHNGdJSDBzWEc1Y2JpQWdjRzl3VTNSaFkyczZJR1oxYm1OMGFXOXVLSGR5WVhCd1pXUXBJSHRjYmlBZ0lDQnNaWFFnYVc1c2FXNWxJRDBnZEdocGN5NXBjMGx1YkdsdVpTZ3BMRnh1SUNBZ0lDQWdhWFJsYlNBOUlDaHBibXhwYm1VZ1B5QjBhR2x6TG1sdWJHbHVaVk4wWVdOcklEb2dkR2hwY3k1amIyMXdhV3hsVTNSaFkyc3BMbkJ2Y0NncE8xeHVYRzRnSUNBZ2FXWWdLQ0YzY21Gd2NHVmtJQ1ltSUdsMFpXMGdhVzV6ZEdGdVkyVnZaaUJNYVhSbGNtRnNLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdhWFJsYlM1MllXeDFaVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2FXWWdLQ0ZwYm14cGJtVXBJSHRjYmlBZ0lDQWdJQ0FnTHlvZ2FYTjBZVzVpZFd3Z2FXZHViM0psSUc1bGVIUWdLaTljYmlBZ0lDQWdJQ0FnYVdZZ0tDRjBhR2x6TG5OMFlXTnJVMnh2ZENrZ2UxeHVJQ0FnSUNBZ0lDQWdJSFJvY205M0lHNWxkeUJGZUdObGNIUnBiMjRvSjBsdWRtRnNhV1FnYzNSaFkyc2djRzl3SnlrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdkR2hwY3k1emRHRmphMU5zYjNRdExUdGNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lISmxkSFZ5YmlCcGRHVnRPMXh1SUNBZ0lIMWNiaUFnZlN4Y2JseHVJQ0IwYjNCVGRHRmphem9nWm5WdVkzUnBiMjRvS1NCN1hHNGdJQ0FnYkdWMElITjBZV05ySUQwZ2RHaHBjeTVwYzBsdWJHbHVaU2dwSUQ4Z2RHaHBjeTVwYm14cGJtVlRkR0ZqYXlBNklIUm9hWE11WTI5dGNHbHNaVk4wWVdOckxGeHVJQ0FnSUNBZ2FYUmxiU0E5SUhOMFlXTnJXM04wWVdOckxteGxibWQwYUNBdElERmRPMXh1WEc0Z0lDQWdMeW9nYVhOMFlXNWlkV3dnYVdkdWIzSmxJR2xtSUNvdlhHNGdJQ0FnYVdZZ0tHbDBaVzBnYVc1emRHRnVZMlZ2WmlCTWFYUmxjbUZzS1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYVhSbGJTNTJZV3gxWlR0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdjbVYwZFhKdUlHbDBaVzA3WEc0Z0lDQWdmVnh1SUNCOUxGeHVYRzRnSUdOdmJuUmxlSFJPWVcxbE9pQm1kVzVqZEdsdmJpaGpiMjUwWlhoMEtTQjdYRzRnSUNBZ2FXWWdLSFJvYVhNdWRYTmxSR1Z3ZEdoeklDWW1JR052Ym5SbGVIUXBJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQW5aR1Z3ZEdoeld5Y2dLeUJqYjI1MFpYaDBJQ3NnSjEwbk8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdKMlJsY0hSb0p5QXJJR052Ym5SbGVIUTdYRzRnSUNBZ2ZWeHVJQ0I5TEZ4dVhHNGdJSEYxYjNSbFpGTjBjbWx1WnpvZ1puVnVZM1JwYjI0b2MzUnlLU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11YzI5MWNtTmxMbkYxYjNSbFpGTjBjbWx1WnloemRISXBPMXh1SUNCOUxGeHVYRzRnSUc5aWFtVmpkRXhwZEdWeVlXdzZJR1oxYm1OMGFXOXVLRzlpYWlrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxuTnZkWEpqWlM1dlltcGxZM1JNYVhSbGNtRnNLRzlpYWlrN1hHNGdJSDBzWEc1Y2JpQWdZV3hwWVhOaFlteGxPaUJtZFc1amRHbHZiaWh1WVcxbEtTQjdYRzRnSUNBZ2JHVjBJSEpsZENBOUlIUm9hWE11WVd4cFlYTmxjMXR1WVcxbFhUdGNiaUFnSUNCcFppQW9jbVYwS1NCN1hHNGdJQ0FnSUNCeVpYUXVjbVZtWlhKbGJtTmxRMjkxYm5Rckt6dGNiaUFnSUNBZ0lISmxkSFZ5YmlCeVpYUTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBJRDBnZEdocGN5NWhiR2xoYzJWelcyNWhiV1ZkSUQwZ2RHaHBjeTV6YjNWeVkyVXVkM0poY0NodVlXMWxLVHRjYmlBZ0lDQnlaWFF1WVd4cFlYTmhZbXhsSUQwZ2RISjFaVHRjYmlBZ0lDQnlaWFF1Y21WbVpYSmxibU5sUTI5MWJuUWdQU0F4TzF4dVhHNGdJQ0FnY21WMGRYSnVJSEpsZER0Y2JpQWdmU3hjYmx4dUlDQnpaWFIxY0VobGJIQmxjam9nWm5WdVkzUnBiMjRvY0dGeVlXMVRhWHBsTENCdVlXMWxMQ0JpYkc5amEwaGxiSEJsY2lrZ2UxeHVJQ0FnSUd4bGRDQndZWEpoYlhNZ1BTQmJYU3hjYmlBZ0lDQWdJSEJoY21GdGMwbHVhWFFnUFNCMGFHbHpMbk5sZEhWd1NHVnNjR1Z5UVhKbmN5aHVZVzFsTENCd1lYSmhiVk5wZW1Vc0lIQmhjbUZ0Y3l3Z1lteHZZMnRJWld4d1pYSXBPMXh1SUNBZ0lHeGxkQ0JtYjNWdVpFaGxiSEJsY2lBOUlIUm9hWE11Ym1GdFpVeHZiMnQxY0NnbmFHVnNjR1Z5Y3ljc0lHNWhiV1VzSUNkb1pXeHdaWEluS1N4Y2JpQWdJQ0FnSUdOaGJHeERiMjUwWlhoMElEMGdkR2hwY3k1aGJHbGhjMkZpYkdVb1hHNGdJQ0FnSUNBZ0lHQWtlM1JvYVhNdVkyOXVkR1Y0ZEU1aGJXVW9NQ2w5SUNFOUlHNTFiR3dnUHlBa2UzUm9hWE11WTI5dWRHVjRkRTVoYldVb1hHNGdJQ0FnSUNBZ0lDQWdNRnh1SUNBZ0lDQWdJQ0FwZlNBNklDaGpiMjUwWVdsdVpYSXViblZzYkVOdmJuUmxlSFFnZkh3Z2UzMHBZRnh1SUNBZ0lDQWdLVHRjYmx4dUlDQWdJSEpsZEhWeWJpQjdYRzRnSUNBZ0lDQndZWEpoYlhNNklIQmhjbUZ0Y3l4Y2JpQWdJQ0FnSUhCaGNtRnRjMGx1YVhRNklIQmhjbUZ0YzBsdWFYUXNYRzRnSUNBZ0lDQnVZVzFsT2lCbWIzVnVaRWhsYkhCbGNpeGNiaUFnSUNBZ0lHTmhiR3hRWVhKaGJYTTZJRnRqWVd4c1EyOXVkR1Y0ZEYwdVkyOXVZMkYwS0hCaGNtRnRjeWxjYmlBZ0lDQjlPMXh1SUNCOUxGeHVYRzRnSUhObGRIVndVR0Z5WVcxek9pQm1kVzVqZEdsdmJpaG9aV3h3WlhJc0lIQmhjbUZ0VTJsNlpTd2djR0Z5WVcxektTQjdYRzRnSUNBZ2JHVjBJRzl3ZEdsdmJuTWdQU0I3ZlN4Y2JpQWdJQ0FnSUdOdmJuUmxlSFJ6SUQwZ1cxMHNYRzRnSUNBZ0lDQjBlWEJsY3lBOUlGdGRMRnh1SUNBZ0lDQWdhV1J6SUQwZ1cxMHNYRzRnSUNBZ0lDQnZZbXBsWTNSQmNtZHpJRDBnSVhCaGNtRnRjeXhjYmlBZ0lDQWdJSEJoY21GdE8xeHVYRzRnSUNBZ2FXWWdLRzlpYW1WamRFRnlaM01wSUh0Y2JpQWdJQ0FnSUhCaGNtRnRjeUE5SUZ0ZE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUc5d2RHbHZibk11Ym1GdFpTQTlJSFJvYVhNdWNYVnZkR1ZrVTNSeWFXNW5LR2hsYkhCbGNpazdYRzRnSUNBZ2IzQjBhVzl1Y3k1b1lYTm9JRDBnZEdocGN5NXdiM0JUZEdGamF5Z3BPMXh1WEc0Z0lDQWdhV1lnS0hSb2FYTXVkSEpoWTJ0SlpITXBJSHRjYmlBZ0lDQWdJRzl3ZEdsdmJuTXVhR0Z6YUVsa2N5QTlJSFJvYVhNdWNHOXdVM1JoWTJzb0tUdGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tIUm9hWE11YzNSeWFXNW5VR0Z5WVcxektTQjdYRzRnSUNBZ0lDQnZjSFJwYjI1ekxtaGhjMmhVZVhCbGN5QTlJSFJvYVhNdWNHOXdVM1JoWTJzb0tUdGNiaUFnSUNBZ0lHOXdkR2x2Ym5NdWFHRnphRU52Ym5SbGVIUnpJRDBnZEdocGN5NXdiM0JUZEdGamF5Z3BPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHeGxkQ0JwYm5abGNuTmxJRDBnZEdocGN5NXdiM0JUZEdGamF5Z3BMRnh1SUNBZ0lDQWdjSEp2WjNKaGJTQTlJSFJvYVhNdWNHOXdVM1JoWTJzb0tUdGNibHh1SUNBZ0lDOHZJRUYyYjJsa0lITmxkSFJwYm1jZ1ptNGdZVzVrSUdsdWRtVnljMlVnYVdZZ2JtVnBkR2hsY2lCaGNtVWdjMlYwTGlCVWFHbHpJR0ZzYkc5M2MxeHVJQ0FnSUM4dklHaGxiSEJsY25NZ2RHOGdaRzhnWVNCamFHVmpheUJtYjNJZ1lHbG1JQ2h2Y0hScGIyNXpMbVp1S1dCY2JpQWdJQ0JwWmlBb2NISnZaM0poYlNCOGZDQnBiblpsY25ObEtTQjdYRzRnSUNBZ0lDQnZjSFJwYjI1ekxtWnVJRDBnY0hKdlozSmhiU0I4ZkNBblkyOXVkR0ZwYm1WeUxtNXZiM0FuTzF4dUlDQWdJQ0FnYjNCMGFXOXVjeTVwYm5abGNuTmxJRDBnYVc1MlpYSnpaU0I4ZkNBblkyOXVkR0ZwYm1WeUxtNXZiM0FuTzF4dUlDQWdJSDFjYmx4dUlDQWdJQzh2SUZSb1pTQndZWEpoYldWMFpYSnpJR2R2SUc5dUlIUnZJSFJvWlNCemRHRmpheUJwYmlCdmNtUmxjaUFvYldGcmFXNW5JSE4xY21VZ2RHaGhkQ0IwYUdWNUlHRnlaU0JsZG1Gc2RXRjBaV1FnYVc0Z2IzSmtaWElwWEc0Z0lDQWdMeThnYzI4Z2QyVWdibVZsWkNCMGJ5QndiM0FnZEdobGJTQnZabVlnZEdobElITjBZV05ySUdsdUlISmxkbVZ5YzJVZ2IzSmtaWEpjYmlBZ0lDQnNaWFFnYVNBOUlIQmhjbUZ0VTJsNlpUdGNiaUFnSUNCM2FHbHNaU0FvYVMwdEtTQjdYRzRnSUNBZ0lDQndZWEpoYlNBOUlIUm9hWE11Y0c5d1UzUmhZMnNvS1R0Y2JpQWdJQ0FnSUhCaGNtRnRjMXRwWFNBOUlIQmhjbUZ0TzF4dVhHNGdJQ0FnSUNCcFppQW9kR2hwY3k1MGNtRmphMGxrY3lrZ2UxeHVJQ0FnSUNBZ0lDQnBaSE5iYVYwZ1BTQjBhR2x6TG5CdmNGTjBZV05yS0NrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCcFppQW9kR2hwY3k1emRISnBibWRRWVhKaGJYTXBJSHRjYmlBZ0lDQWdJQ0FnZEhsd1pYTmJhVjBnUFNCMGFHbHpMbkJ2Y0ZOMFlXTnJLQ2s3WEc0Z0lDQWdJQ0FnSUdOdmJuUmxlSFJ6VzJsZElEMGdkR2hwY3k1d2IzQlRkR0ZqYXlncE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaHZZbXBsWTNSQmNtZHpLU0I3WEc0Z0lDQWdJQ0J2Y0hScGIyNXpMbUZ5WjNNZ1BTQjBhR2x6TG5OdmRYSmpaUzVuWlc1bGNtRjBaVUZ5Y21GNUtIQmhjbUZ0Y3lrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tIUm9hWE11ZEhKaFkydEpaSE1wSUh0Y2JpQWdJQ0FnSUc5d2RHbHZibk11YVdSeklEMGdkR2hwY3k1emIzVnlZMlV1WjJWdVpYSmhkR1ZCY25KaGVTaHBaSE1wTzF4dUlDQWdJSDFjYmlBZ0lDQnBaaUFvZEdocGN5NXpkSEpwYm1kUVlYSmhiWE1wSUh0Y2JpQWdJQ0FnSUc5d2RHbHZibk11ZEhsd1pYTWdQU0IwYUdsekxuTnZkWEpqWlM1blpXNWxjbUYwWlVGeWNtRjVLSFI1Y0dWektUdGNiaUFnSUNBZ0lHOXdkR2x2Ym5NdVkyOXVkR1Y0ZEhNZ1BTQjBhR2x6TG5OdmRYSmpaUzVuWlc1bGNtRjBaVUZ5Y21GNUtHTnZiblJsZUhSektUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9kR2hwY3k1dmNIUnBiMjV6TG1SaGRHRXBJSHRjYmlBZ0lDQWdJRzl3ZEdsdmJuTXVaR0YwWVNBOUlDZGtZWFJoSnp0Y2JpQWdJQ0I5WEc0Z0lDQWdhV1lnS0hSb2FYTXVkWE5sUW14dlkydFFZWEpoYlhNcElIdGNiaUFnSUNBZ0lHOXdkR2x2Ym5NdVlteHZZMnRRWVhKaGJYTWdQU0FuWW14dlkydFFZWEpoYlhNbk8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdiM0IwYVc5dWN6dGNiaUFnZlN4Y2JseHVJQ0J6WlhSMWNFaGxiSEJsY2tGeVozTTZJR1oxYm1OMGFXOXVLR2hsYkhCbGNpd2djR0Z5WVcxVGFYcGxMQ0J3WVhKaGJYTXNJSFZ6WlZKbFoybHpkR1Z5S1NCN1hHNGdJQ0FnYkdWMElHOXdkR2x2Ym5NZ1BTQjBhR2x6TG5ObGRIVndVR0Z5WVcxektHaGxiSEJsY2l3Z2NHRnlZVzFUYVhwbExDQndZWEpoYlhNcE8xeHVJQ0FnSUc5d2RHbHZibk11Ykc5aklEMGdTbE5QVGk1emRISnBibWRwWm5rb2RHaHBjeTV6YjNWeVkyVXVZM1Z5Y21WdWRFeHZZMkYwYVc5dUtUdGNiaUFnSUNCdmNIUnBiMjV6SUQwZ2RHaHBjeTV2WW1wbFkzUk1hWFJsY21Gc0tHOXdkR2x2Ym5NcE8xeHVJQ0FnSUdsbUlDaDFjMlZTWldkcGMzUmxjaWtnZTF4dUlDQWdJQ0FnZEdocGN5NTFjMlZTWldkcGMzUmxjaWduYjNCMGFXOXVjeWNwTzF4dUlDQWdJQ0FnY0dGeVlXMXpMbkIxYzJnb0oyOXdkR2x2Ym5NbktUdGNiaUFnSUNBZ0lISmxkSFZ5YmlCYkoyOXdkR2x2Ym5NOUp5d2diM0IwYVc5dWMxMDdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaHdZWEpoYlhNcElIdGNiaUFnSUNBZ0lIQmhjbUZ0Y3k1d2RYTm9LRzl3ZEdsdmJuTXBPMXh1SUNBZ0lDQWdjbVYwZFhKdUlDY25PMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnYjNCMGFXOXVjenRjYmlBZ0lDQjlYRzRnSUgxY2JuMDdYRzVjYmlobWRXNWpkR2x2YmlncElIdGNiaUFnWTI5dWMzUWdjbVZ6WlhKMlpXUlhiM0prY3lBOUlDaGNiaUFnSUNBblluSmxZV3NnWld4elpTQnVaWGNnZG1GeUp5QXJYRzRnSUNBZ0p5QmpZWE5sSUdacGJtRnNiSGtnY21WMGRYSnVJSFp2YVdRbklDdGNiaUFnSUNBbklHTmhkR05vSUdadmNpQnpkMmwwWTJnZ2QyaHBiR1VuSUN0Y2JpQWdJQ0FuSUdOdmJuUnBiblZsSUdaMWJtTjBhVzl1SUhSb2FYTWdkMmwwYUNjZ0sxeHVJQ0FnSUNjZ1pHVm1ZWFZzZENCcFppQjBhSEp2ZHljZ0sxeHVJQ0FnSUNjZ1pHVnNaWFJsSUdsdUlIUnllU2NnSzF4dUlDQWdJQ2NnWkc4Z2FXNXpkR0Z1WTJWdlppQjBlWEJsYjJZbklDdGNiaUFnSUNBbklHRmljM1J5WVdOMElHVnVkVzBnYVc1MElITm9iM0owSnlBclhHNGdJQ0FnSnlCaWIyOXNaV0Z1SUdWNGNHOXlkQ0JwYm5SbGNtWmhZMlVnYzNSaGRHbGpKeUFyWEc0Z0lDQWdKeUJpZVhSbElHVjRkR1Z1WkhNZ2JHOXVaeUJ6ZFhCbGNpY2dLMXh1SUNBZ0lDY2dZMmhoY2lCbWFXNWhiQ0J1WVhScGRtVWdjM2x1WTJoeWIyNXBlbVZrSnlBclhHNGdJQ0FnSnlCamJHRnpjeUJtYkc5aGRDQndZV05yWVdkbElIUm9jbTkzY3ljZ0sxeHVJQ0FnSUNjZ1kyOXVjM1FnWjI5MGJ5QndjbWwyWVhSbElIUnlZVzV6YVdWdWRDY2dLMXh1SUNBZ0lDY2daR1ZpZFdkblpYSWdhVzF3YkdWdFpXNTBjeUJ3Y205MFpXTjBaV1FnZG05c1lYUnBiR1VuSUN0Y2JpQWdJQ0FuSUdSdmRXSnNaU0JwYlhCdmNuUWdjSFZpYkdsaklHeGxkQ0I1YVdWc1pDQmhkMkZwZENjZ0sxeHVJQ0FnSUNjZ2JuVnNiQ0IwY25WbElHWmhiSE5sSjF4dUlDQXBMbk53YkdsMEtDY2dKeWs3WEc1Y2JpQWdZMjl1YzNRZ1kyOXRjR2xzWlhKWGIzSmtjeUE5SUNoS1lYWmhVMk55YVhCMFEyOXRjR2xzWlhJdVVrVlRSVkpXUlVSZlYwOVNSRk1nUFNCN2ZTazdYRzVjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREFzSUd3Z1BTQnlaWE5sY25abFpGZHZjbVJ6TG14bGJtZDBhRHNnYVNBOElHdzdJR2tyS3lrZ2UxeHVJQ0FnSUdOdmJYQnBiR1Z5VjI5eVpITmJjbVZ6WlhKMlpXUlhiM0prYzF0cFhWMGdQU0IwY25WbE8xeHVJQ0I5WEc1OUtTZ3BPMXh1WEc0dktpcGNiaUFxSUVCa1pYQnlaV05oZEdWa0lFMWhlU0JpWlNCeVpXMXZkbVZrSUdsdUlIUm9aU0J1WlhoMElHMWhhbTl5SUhabGNuTnBiMjVjYmlBcUwxeHVTbUYyWVZOamNtbHdkRU52YlhCcGJHVnlMbWx6Vm1Gc2FXUktZWFpoVTJOeWFYQjBWbUZ5YVdGaWJHVk9ZVzFsSUQwZ1puVnVZM1JwYjI0b2JtRnRaU2tnZTF4dUlDQnlaWFIxY200Z0tGeHVJQ0FnSUNGS1lYWmhVMk55YVhCMFEyOXRjR2xzWlhJdVVrVlRSVkpXUlVSZlYwOVNSRk5iYm1GdFpWMGdKaVpjYmlBZ0lDQXZYbHRoTFhwQkxWcGZKRjFiTUMwNVlTMTZRUzFhWHlSZEtpUXZMblJsYzNRb2JtRnRaU2xjYmlBZ0tUdGNibjA3WEc1Y2JtWjFibU4wYVc5dUlITjBjbWxqZEV4dmIydDFjQ2h5WlhGMWFYSmxWR1Z5YldsdVlXd3NJR052YlhCcGJHVnlMQ0J3WVhKMGN5d2dkSGx3WlNrZ2UxeHVJQ0JzWlhRZ2MzUmhZMnNnUFNCamIyMXdhV3hsY2k1d2IzQlRkR0ZqYXlncExGeHVJQ0FnSUdrZ1BTQXdMRnh1SUNBZ0lHeGxiaUE5SUhCaGNuUnpMbXhsYm1kMGFEdGNiaUFnYVdZZ0tISmxjWFZwY21WVVpYSnRhVzVoYkNrZ2UxeHVJQ0FnSUd4bGJpMHRPMXh1SUNCOVhHNWNiaUFnWm05eUlDZzdJR2tnUENCc1pXNDdJR2tyS3lrZ2UxeHVJQ0FnSUhOMFlXTnJJRDBnWTI5dGNHbHNaWEl1Ym1GdFpVeHZiMnQxY0NoemRHRmpheXdnY0dGeWRITmJhVjBzSUhSNWNHVXBPMXh1SUNCOVhHNWNiaUFnYVdZZ0tISmxjWFZwY21WVVpYSnRhVzVoYkNrZ2UxeHVJQ0FnSUhKbGRIVnliaUJiWEc0Z0lDQWdJQ0JqYjIxd2FXeGxjaTVoYkdsaGMyRmliR1VvSjJOdmJuUmhhVzVsY2k1emRISnBZM1FuS1N4Y2JpQWdJQ0FnSUNjb0p5eGNiaUFnSUNBZ0lITjBZV05yTEZ4dUlDQWdJQ0FnSnl3Z0p5eGNiaUFnSUNBZ0lHTnZiWEJwYkdWeUxuRjFiM1JsWkZOMGNtbHVaeWh3WVhKMGMxdHBYU2tzWEc0Z0lDQWdJQ0FuTENBbkxGeHVJQ0FnSUNBZ1NsTlBUaTV6ZEhKcGJtZHBabmtvWTI5dGNHbHNaWEl1YzI5MWNtTmxMbU4xY25KbGJuUk1iMk5oZEdsdmJpa3NYRzRnSUNBZ0lDQW5JQ2tuWEc0Z0lDQWdYVHRjYmlBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0J5WlhSMWNtNGdjM1JoWTJzN1hHNGdJSDFjYm4xY2JseHVaWGh3YjNKMElHUmxabUYxYkhRZ1NtRjJZVk5qY21sd2RFTnZiWEJwYkdWeU8xeHVJbDE5XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG4vLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbnZhciBfaGFuZGxlYmFyc1J1bnRpbWUgPSByZXF1aXJlKCcuL2hhbmRsZWJhcnMucnVudGltZScpO1xuXG52YXIgX2hhbmRsZWJhcnNSdW50aW1lMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hhbmRsZWJhcnNSdW50aW1lKTtcblxuLy8gQ29tcGlsZXIgaW1wb3J0c1xuXG52YXIgX2hhbmRsZWJhcnNDb21waWxlckFzdCA9IHJlcXVpcmUoJy4vaGFuZGxlYmFycy9jb21waWxlci9hc3QnKTtcblxudmFyIF9oYW5kbGViYXJzQ29tcGlsZXJBc3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaGFuZGxlYmFyc0NvbXBpbGVyQXN0KTtcblxudmFyIF9oYW5kbGViYXJzQ29tcGlsZXJCYXNlID0gcmVxdWlyZSgnLi9oYW5kbGViYXJzL2NvbXBpbGVyL2Jhc2UnKTtcblxudmFyIF9oYW5kbGViYXJzQ29tcGlsZXJDb21waWxlciA9IHJlcXVpcmUoJy4vaGFuZGxlYmFycy9jb21waWxlci9jb21waWxlcicpO1xuXG52YXIgX2hhbmRsZWJhcnNDb21waWxlckphdmFzY3JpcHRDb21waWxlciA9IHJlcXVpcmUoJy4vaGFuZGxlYmFycy9jb21waWxlci9qYXZhc2NyaXB0LWNvbXBpbGVyJyk7XG5cbnZhciBfaGFuZGxlYmFyc0NvbXBpbGVySmF2YXNjcmlwdENvbXBpbGVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hhbmRsZWJhcnNDb21waWxlckphdmFzY3JpcHRDb21waWxlcik7XG5cbnZhciBfaGFuZGxlYmFyc0NvbXBpbGVyVmlzaXRvciA9IHJlcXVpcmUoJy4vaGFuZGxlYmFycy9jb21waWxlci92aXNpdG9yJyk7XG5cbnZhciBfaGFuZGxlYmFyc0NvbXBpbGVyVmlzaXRvcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9oYW5kbGViYXJzQ29tcGlsZXJWaXNpdG9yKTtcblxudmFyIF9oYW5kbGViYXJzTm9Db25mbGljdCA9IHJlcXVpcmUoJy4vaGFuZGxlYmFycy9uby1jb25mbGljdCcpO1xuXG52YXIgX2hhbmRsZWJhcnNOb0NvbmZsaWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hhbmRsZWJhcnNOb0NvbmZsaWN0KTtcblxudmFyIF9jcmVhdGUgPSBfaGFuZGxlYmFyc1J1bnRpbWUyWydkZWZhdWx0J10uY3JlYXRlO1xuZnVuY3Rpb24gY3JlYXRlKCkge1xuICB2YXIgaGIgPSBfY3JlYXRlKCk7XG5cbiAgaGIuY29tcGlsZSA9IGZ1bmN0aW9uIChpbnB1dCwgb3B0aW9ucykge1xuICAgIHJldHVybiBfaGFuZGxlYmFyc0NvbXBpbGVyQ29tcGlsZXIuY29tcGlsZShpbnB1dCwgb3B0aW9ucywgaGIpO1xuICB9O1xuICBoYi5wcmVjb21waWxlID0gZnVuY3Rpb24gKGlucHV0LCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIF9oYW5kbGViYXJzQ29tcGlsZXJDb21waWxlci5wcmVjb21waWxlKGlucHV0LCBvcHRpb25zLCBoYik7XG4gIH07XG5cbiAgaGIuQVNUID0gX2hhbmRsZWJhcnNDb21waWxlckFzdDJbJ2RlZmF1bHQnXTtcbiAgaGIuQ29tcGlsZXIgPSBfaGFuZGxlYmFyc0NvbXBpbGVyQ29tcGlsZXIuQ29tcGlsZXI7XG4gIGhiLkphdmFTY3JpcHRDb21waWxlciA9IF9oYW5kbGViYXJzQ29tcGlsZXJKYXZhc2NyaXB0Q29tcGlsZXIyWydkZWZhdWx0J107XG4gIGhiLlBhcnNlciA9IF9oYW5kbGViYXJzQ29tcGlsZXJCYXNlLnBhcnNlcjtcbiAgaGIucGFyc2UgPSBfaGFuZGxlYmFyc0NvbXBpbGVyQmFzZS5wYXJzZTtcbiAgaGIucGFyc2VXaXRob3V0UHJvY2Vzc2luZyA9IF9oYW5kbGViYXJzQ29tcGlsZXJCYXNlLnBhcnNlV2l0aG91dFByb2Nlc3Npbmc7XG5cbiAgcmV0dXJuIGhiO1xufVxuXG52YXIgaW5zdCA9IGNyZWF0ZSgpO1xuaW5zdC5jcmVhdGUgPSBjcmVhdGU7XG5cbl9oYW5kbGViYXJzTm9Db25mbGljdDJbJ2RlZmF1bHQnXShpbnN0KTtcblxuaW5zdC5WaXNpdG9yID0gX2hhbmRsZWJhcnNDb21waWxlclZpc2l0b3IyWydkZWZhdWx0J107XG5cbmluc3RbJ2RlZmF1bHQnXSA9IGluc3Q7XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IGluc3Q7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYklpNHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMbXB6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3pzN096czdhVU5CUVc5Q0xITkNRVUZ6UWpzN096czdPM0ZEUVVjeFFpd3lRa0ZCTWtJN096czdjME5CUzNCRExEUkNRVUUwUWpzN01FTkJRMWNzWjBOQlFXZERPenR2UkVGREwwTXNNa05CUVRKRE96czdPM2xEUVVOMFJDd3JRa0ZCSzBJN096czdiME5CUlRWQ0xEQkNRVUV3UWpzN096dEJRVVZxUkN4SlFVRkpMRTlCUVU4c1IwRkJSeXdyUWtGQlVTeE5RVUZOTEVOQlFVTTdRVUZETjBJc1UwRkJVeXhOUVVGTkxFZEJRVWM3UVVGRGFFSXNUVUZCU1N4RlFVRkZMRWRCUVVjc1QwRkJUeXhGUVVGRkxFTkJRVU03TzBGQlJXNUNMRWxCUVVVc1EwRkJReXhQUVVGUExFZEJRVWNzVlVGQlV5eExRVUZMTEVWQlFVVXNUMEZCVHl4RlFVRkZPMEZCUTNCRExGZEJRVThzYjBOQlFWRXNTMEZCU3l4RlFVRkZMRTlCUVU4c1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF6dEhRVU53UXl4RFFVRkRPMEZCUTBZc1NVRkJSU3hEUVVGRExGVkJRVlVzUjBGQlJ5eFZRVUZUTEV0QlFVc3NSVUZCUlN4UFFVRlBMRVZCUVVVN1FVRkRka01zVjBGQlR5eDFRMEZCVnl4TFFVRkxMRVZCUVVVc1QwRkJUeXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETzBkQlEzWkRMRU5CUVVNN08wRkJSVVlzU1VGQlJTeERRVUZETEVkQlFVY3NjVU5CUVUwc1EwRkJRenRCUVVOaUxFbEJRVVVzUTBGQlF5eFJRVUZSTEhWRFFVRlhMRU5CUVVNN1FVRkRka0lzU1VGQlJTeERRVUZETEd0Q1FVRnJRaXh2UkVGQmNVSXNRMEZCUXp0QlFVTXpReXhKUVVGRkxFTkJRVU1zVFVGQlRTeHBRMEZCVXl4RFFVRkRPMEZCUTI1Q0xFbEJRVVVzUTBGQlF5eExRVUZMTEdkRFFVRlJMRU5CUVVNN1FVRkRha0lzU1VGQlJTeERRVUZETEhOQ1FVRnpRaXhwUkVGQmVVSXNRMEZCUXpzN1FVRkZia1FzVTBGQlR5eEZRVUZGTEVOQlFVTTdRMEZEV0RzN1FVRkZSQ3hKUVVGSkxFbEJRVWtzUjBGQlJ5eE5RVUZOTEVWQlFVVXNRMEZCUXp0QlFVTndRaXhKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEUxQlFVMHNRMEZCUXpzN1FVRkZja0lzYTBOQlFWY3NTVUZCU1N4RFFVRkRMRU5CUVVNN08wRkJSV3BDTEVsQlFVa3NRMEZCUXl4UFFVRlBMSGxEUVVGVkxFTkJRVU03TzBGQlJYWkNMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTTdPM0ZDUVVWU0xFbEJRVWtpTENKbWFXeGxJam9pYUdGdVpHeGxZbUZ5Y3k1cWN5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQnlkVzUwYVcxbElHWnliMjBnSnk0dmFHRnVaR3hsWW1GeWN5NXlkVzUwYVcxbEp6dGNibHh1THk4Z1EyOXRjR2xzWlhJZ2FXMXdiM0owYzF4dWFXMXdiM0owSUVGVFZDQm1jbTl0SUNjdUwyaGhibVJzWldKaGNuTXZZMjl0Y0dsc1pYSXZZWE4wSnp0Y2JtbHRjRzl5ZENCN1hHNGdJSEJoY25ObGNpQmhjeUJRWVhKelpYSXNYRzRnSUhCaGNuTmxMRnh1SUNCd1lYSnpaVmRwZEdodmRYUlFjbTlqWlhOemFXNW5YRzU5SUdaeWIyMGdKeTR2YUdGdVpHeGxZbUZ5Y3k5amIyMXdhV3hsY2k5aVlYTmxKenRjYm1sdGNHOXlkQ0I3SUVOdmJYQnBiR1Z5TENCamIyMXdhV3hsTENCd2NtVmpiMjF3YVd4bElIMGdabkp2YlNBbkxpOW9ZVzVrYkdWaVlYSnpMMk52YlhCcGJHVnlMMk52YlhCcGJHVnlKenRjYm1sdGNHOXlkQ0JLWVhaaFUyTnlhWEIwUTI5dGNHbHNaWElnWm5KdmJTQW5MaTlvWVc1a2JHVmlZWEp6TDJOdmJYQnBiR1Z5TDJwaGRtRnpZM0pwY0hRdFkyOXRjR2xzWlhJbk8xeHVhVzF3YjNKMElGWnBjMmwwYjNJZ1puSnZiU0FuTGk5b1lXNWtiR1ZpWVhKekwyTnZiWEJwYkdWeUwzWnBjMmwwYjNJbk8xeHVYRzVwYlhCdmNuUWdibTlEYjI1bWJHbGpkQ0JtY205dElDY3VMMmhoYm1Sc1pXSmhjbk12Ym04dFkyOXVabXhwWTNRbk8xeHVYRzVzWlhRZ1gyTnlaV0YwWlNBOUlISjFiblJwYldVdVkzSmxZWFJsTzF4dVpuVnVZM1JwYjI0Z1kzSmxZWFJsS0NrZ2UxeHVJQ0JzWlhRZ2FHSWdQU0JmWTNKbFlYUmxLQ2s3WEc1Y2JpQWdhR0l1WTI5dGNHbHNaU0E5SUdaMWJtTjBhVzl1S0dsdWNIVjBMQ0J2Y0hScGIyNXpLU0I3WEc0Z0lDQWdjbVYwZFhKdUlHTnZiWEJwYkdVb2FXNXdkWFFzSUc5d2RHbHZibk1zSUdoaUtUdGNiaUFnZlR0Y2JpQWdhR0l1Y0hKbFkyOXRjR2xzWlNBOUlHWjFibU4wYVc5dUtHbHVjSFYwTENCdmNIUnBiMjV6S1NCN1hHNGdJQ0FnY21WMGRYSnVJSEJ5WldOdmJYQnBiR1VvYVc1d2RYUXNJRzl3ZEdsdmJuTXNJR2hpS1R0Y2JpQWdmVHRjYmx4dUlDQm9ZaTVCVTFRZ1BTQkJVMVE3WEc0Z0lHaGlMa052YlhCcGJHVnlJRDBnUTI5dGNHbHNaWEk3WEc0Z0lHaGlMa3BoZG1GVFkzSnBjSFJEYjIxd2FXeGxjaUE5SUVwaGRtRlRZM0pwY0hSRGIyMXdhV3hsY2p0Y2JpQWdhR0l1VUdGeWMyVnlJRDBnVUdGeWMyVnlPMXh1SUNCb1lpNXdZWEp6WlNBOUlIQmhjbk5sTzF4dUlDQm9ZaTV3WVhKelpWZHBkR2h2ZFhSUWNtOWpaWE56YVc1bklEMGdjR0Z5YzJWWGFYUm9iM1YwVUhKdlkyVnpjMmx1Wnp0Y2JseHVJQ0J5WlhSMWNtNGdhR0k3WEc1OVhHNWNibXhsZENCcGJuTjBJRDBnWTNKbFlYUmxLQ2s3WEc1cGJuTjBMbU55WldGMFpTQTlJR055WldGMFpUdGNibHh1Ym05RGIyNW1iR2xqZENocGJuTjBLVHRjYmx4dWFXNXpkQzVXYVhOcGRHOXlJRDBnVm1semFYUnZjanRjYmx4dWFXNXpkRnNuWkdWbVlYVnNkQ2RkSUQwZ2FXNXpkRHRjYmx4dVpYaHdiM0owSUdSbFptRjFiSFFnYVc1emREdGNiaUpkZlE9PVxuIiwiLyogZXNsaW50LWRpc2FibGUgbmV3LWNhcCAqL1xuJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5wcmludCA9IHByaW50O1xuZXhwb3J0cy5QcmludFZpc2l0b3IgPSBQcmludFZpc2l0b3I7XG4vLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbnZhciBfdmlzaXRvciA9IHJlcXVpcmUoJy4vdmlzaXRvcicpO1xuXG52YXIgX3Zpc2l0b3IyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdmlzaXRvcik7XG5cbmZ1bmN0aW9uIHByaW50KGFzdCkge1xuICByZXR1cm4gbmV3IFByaW50VmlzaXRvcigpLmFjY2VwdChhc3QpO1xufVxuXG5mdW5jdGlvbiBQcmludFZpc2l0b3IoKSB7XG4gIHRoaXMucGFkZGluZyA9IDA7XG59XG5cblByaW50VmlzaXRvci5wcm90b3R5cGUgPSBuZXcgX3Zpc2l0b3IyWydkZWZhdWx0J10oKTtcblxuUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5wYWQgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHZhciBvdXQgPSAnJztcblxuICBmb3IgKHZhciBpID0gMCwgbCA9IHRoaXMucGFkZGluZzsgaSA8IGw7IGkrKykge1xuICAgIG91dCArPSAnICAnO1xuICB9XG5cbiAgb3V0ICs9IHN0cmluZyArICdcXG4nO1xuICByZXR1cm4gb3V0O1xufTtcblxuUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5Qcm9ncmFtID0gZnVuY3Rpb24gKHByb2dyYW0pIHtcbiAgdmFyIG91dCA9ICcnLFxuICAgICAgYm9keSA9IHByb2dyYW0uYm9keSxcbiAgICAgIGkgPSB1bmRlZmluZWQsXG4gICAgICBsID0gdW5kZWZpbmVkO1xuXG4gIGlmIChwcm9ncmFtLmJsb2NrUGFyYW1zKSB7XG4gICAgdmFyIGJsb2NrUGFyYW1zID0gJ0JMT0NLIFBBUkFNUzogWyc7XG4gICAgZm9yIChpID0gMCwgbCA9IHByb2dyYW0uYmxvY2tQYXJhbXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBibG9ja1BhcmFtcyArPSAnICcgKyBwcm9ncmFtLmJsb2NrUGFyYW1zW2ldO1xuICAgIH1cbiAgICBibG9ja1BhcmFtcyArPSAnIF0nO1xuICAgIG91dCArPSB0aGlzLnBhZChibG9ja1BhcmFtcyk7XG4gIH1cblxuICBmb3IgKGkgPSAwLCBsID0gYm9keS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBvdXQgKz0gdGhpcy5hY2NlcHQoYm9keVtpXSk7XG4gIH1cblxuICB0aGlzLnBhZGRpbmctLTtcblxuICByZXR1cm4gb3V0O1xufTtcblxuUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5NdXN0YWNoZVN0YXRlbWVudCA9IGZ1bmN0aW9uIChtdXN0YWNoZSkge1xuICByZXR1cm4gdGhpcy5wYWQoJ3t7ICcgKyB0aGlzLlN1YkV4cHJlc3Npb24obXVzdGFjaGUpICsgJyB9fScpO1xufTtcblByaW50VmlzaXRvci5wcm90b3R5cGUuRGVjb3JhdG9yID0gZnVuY3Rpb24gKG11c3RhY2hlKSB7XG4gIHJldHVybiB0aGlzLnBhZCgne3sgRElSRUNUSVZFICcgKyB0aGlzLlN1YkV4cHJlc3Npb24obXVzdGFjaGUpICsgJyB9fScpO1xufTtcblxuUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5CbG9ja1N0YXRlbWVudCA9IFByaW50VmlzaXRvci5wcm90b3R5cGUuRGVjb3JhdG9yQmxvY2sgPSBmdW5jdGlvbiAoYmxvY2spIHtcbiAgdmFyIG91dCA9ICcnO1xuXG4gIG91dCArPSB0aGlzLnBhZCgoYmxvY2sudHlwZSA9PT0gJ0RlY29yYXRvckJsb2NrJyA/ICdESVJFQ1RJVkUgJyA6ICcnKSArICdCTE9DSzonKTtcbiAgdGhpcy5wYWRkaW5nKys7XG4gIG91dCArPSB0aGlzLnBhZCh0aGlzLlN1YkV4cHJlc3Npb24oYmxvY2spKTtcbiAgaWYgKGJsb2NrLnByb2dyYW0pIHtcbiAgICBvdXQgKz0gdGhpcy5wYWQoJ1BST0dSQU06Jyk7XG4gICAgdGhpcy5wYWRkaW5nKys7XG4gICAgb3V0ICs9IHRoaXMuYWNjZXB0KGJsb2NrLnByb2dyYW0pO1xuICAgIHRoaXMucGFkZGluZy0tO1xuICB9XG4gIGlmIChibG9jay5pbnZlcnNlKSB7XG4gICAgaWYgKGJsb2NrLnByb2dyYW0pIHtcbiAgICAgIHRoaXMucGFkZGluZysrO1xuICAgIH1cbiAgICBvdXQgKz0gdGhpcy5wYWQoJ3t7Xn19Jyk7XG4gICAgdGhpcy5wYWRkaW5nKys7XG4gICAgb3V0ICs9IHRoaXMuYWNjZXB0KGJsb2NrLmludmVyc2UpO1xuICAgIHRoaXMucGFkZGluZy0tO1xuICAgIGlmIChibG9jay5wcm9ncmFtKSB7XG4gICAgICB0aGlzLnBhZGRpbmctLTtcbiAgICB9XG4gIH1cbiAgdGhpcy5wYWRkaW5nLS07XG5cbiAgcmV0dXJuIG91dDtcbn07XG5cblByaW50VmlzaXRvci5wcm90b3R5cGUuUGFydGlhbFN0YXRlbWVudCA9IGZ1bmN0aW9uIChwYXJ0aWFsKSB7XG4gIHZhciBjb250ZW50ID0gJ1BBUlRJQUw6JyArIHBhcnRpYWwubmFtZS5vcmlnaW5hbDtcbiAgaWYgKHBhcnRpYWwucGFyYW1zWzBdKSB7XG4gICAgY29udGVudCArPSAnICcgKyB0aGlzLmFjY2VwdChwYXJ0aWFsLnBhcmFtc1swXSk7XG4gIH1cbiAgaWYgKHBhcnRpYWwuaGFzaCkge1xuICAgIGNvbnRlbnQgKz0gJyAnICsgdGhpcy5hY2NlcHQocGFydGlhbC5oYXNoKTtcbiAgfVxuICByZXR1cm4gdGhpcy5wYWQoJ3t7PiAnICsgY29udGVudCArICcgfX0nKTtcbn07XG5QcmludFZpc2l0b3IucHJvdG90eXBlLlBhcnRpYWxCbG9ja1N0YXRlbWVudCA9IGZ1bmN0aW9uIChwYXJ0aWFsKSB7XG4gIHZhciBjb250ZW50ID0gJ1BBUlRJQUwgQkxPQ0s6JyArIHBhcnRpYWwubmFtZS5vcmlnaW5hbDtcbiAgaWYgKHBhcnRpYWwucGFyYW1zWzBdKSB7XG4gICAgY29udGVudCArPSAnICcgKyB0aGlzLmFjY2VwdChwYXJ0aWFsLnBhcmFtc1swXSk7XG4gIH1cbiAgaWYgKHBhcnRpYWwuaGFzaCkge1xuICAgIGNvbnRlbnQgKz0gJyAnICsgdGhpcy5hY2NlcHQocGFydGlhbC5oYXNoKTtcbiAgfVxuXG4gIGNvbnRlbnQgKz0gJyAnICsgdGhpcy5wYWQoJ1BST0dSQU06Jyk7XG4gIHRoaXMucGFkZGluZysrO1xuICBjb250ZW50ICs9IHRoaXMuYWNjZXB0KHBhcnRpYWwucHJvZ3JhbSk7XG4gIHRoaXMucGFkZGluZy0tO1xuXG4gIHJldHVybiB0aGlzLnBhZCgne3s+ICcgKyBjb250ZW50ICsgJyB9fScpO1xufTtcblxuUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5Db250ZW50U3RhdGVtZW50ID0gZnVuY3Rpb24gKGNvbnRlbnQpIHtcbiAgcmV0dXJuIHRoaXMucGFkKFwiQ09OVEVOVFsgJ1wiICsgY29udGVudC52YWx1ZSArIFwiJyBdXCIpO1xufTtcblxuUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5Db21tZW50U3RhdGVtZW50ID0gZnVuY3Rpb24gKGNvbW1lbnQpIHtcbiAgcmV0dXJuIHRoaXMucGFkKFwie3shICdcIiArIGNvbW1lbnQudmFsdWUgKyBcIicgfX1cIik7XG59O1xuXG5QcmludFZpc2l0b3IucHJvdG90eXBlLlN1YkV4cHJlc3Npb24gPSBmdW5jdGlvbiAoc2V4cHIpIHtcbiAgdmFyIHBhcmFtcyA9IHNleHByLnBhcmFtcyxcbiAgICAgIHBhcmFtU3RyaW5ncyA9IFtdLFxuICAgICAgaGFzaCA9IHVuZGVmaW5lZDtcblxuICBmb3IgKHZhciBpID0gMCwgbCA9IHBhcmFtcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBwYXJhbVN0cmluZ3MucHVzaCh0aGlzLmFjY2VwdChwYXJhbXNbaV0pKTtcbiAgfVxuXG4gIHBhcmFtcyA9ICdbJyArIHBhcmFtU3RyaW5ncy5qb2luKCcsICcpICsgJ10nO1xuXG4gIGhhc2ggPSBzZXhwci5oYXNoID8gJyAnICsgdGhpcy5hY2NlcHQoc2V4cHIuaGFzaCkgOiAnJztcblxuICByZXR1cm4gdGhpcy5hY2NlcHQoc2V4cHIucGF0aCkgKyAnICcgKyBwYXJhbXMgKyBoYXNoO1xufTtcblxuUHJpbnRWaXNpdG9yLnByb3RvdHlwZS5QYXRoRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIChpZCkge1xuICB2YXIgcGF0aCA9IGlkLnBhcnRzLmpvaW4oJy8nKTtcbiAgcmV0dXJuIChpZC5kYXRhID8gJ0AnIDogJycpICsgJ1BBVEg6JyArIHBhdGg7XG59O1xuXG5QcmludFZpc2l0b3IucHJvdG90eXBlLlN0cmluZ0xpdGVyYWwgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHJldHVybiAnXCInICsgc3RyaW5nLnZhbHVlICsgJ1wiJztcbn07XG5cblByaW50VmlzaXRvci5wcm90b3R5cGUuTnVtYmVyTGl0ZXJhbCA9IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgcmV0dXJuICdOVU1CRVJ7JyArIG51bWJlci52YWx1ZSArICd9Jztcbn07XG5cblByaW50VmlzaXRvci5wcm90b3R5cGUuQm9vbGVhbkxpdGVyYWwgPSBmdW5jdGlvbiAoYm9vbCkge1xuICByZXR1cm4gJ0JPT0xFQU57JyArIGJvb2wudmFsdWUgKyAnfSc7XG59O1xuXG5QcmludFZpc2l0b3IucHJvdG90eXBlLlVuZGVmaW5lZExpdGVyYWwgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAnVU5ERUZJTkVEJztcbn07XG5cblByaW50VmlzaXRvci5wcm90b3R5cGUuTnVsbExpdGVyYWwgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAnTlVMTCc7XG59O1xuXG5QcmludFZpc2l0b3IucHJvdG90eXBlLkhhc2ggPSBmdW5jdGlvbiAoaGFzaCkge1xuICB2YXIgcGFpcnMgPSBoYXNoLnBhaXJzLFxuICAgICAgam9pbmVkUGFpcnMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMCwgbCA9IHBhaXJzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGpvaW5lZFBhaXJzLnB1c2godGhpcy5hY2NlcHQocGFpcnNbaV0pKTtcbiAgfVxuXG4gIHJldHVybiAnSEFTSHsnICsgam9pbmVkUGFpcnMuam9pbignLCAnKSArICd9Jztcbn07XG5QcmludFZpc2l0b3IucHJvdG90eXBlLkhhc2hQYWlyID0gZnVuY3Rpb24gKHBhaXIpIHtcbiAgcmV0dXJuIHBhaXIua2V5ICsgJz0nICsgdGhpcy5hY2NlcHQocGFpci52YWx1ZSk7XG59O1xuLyogZXNsaW50LWVuYWJsZSBuZXctY2FwICovXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1TDJ4cFlpOW9ZVzVrYkdWaVlYSnpMMk52YlhCcGJHVnlMM0J5YVc1MFpYSXVhbk1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3T3pzN096czdPenQxUWtGRGIwSXNWMEZCVnpzN096dEJRVVY0UWl4VFFVRlRMRXRCUVVzc1EwRkJReXhIUVVGSExFVkJRVVU3UVVGRGVrSXNVMEZCVHl4SlFVRkpMRmxCUVZrc1JVRkJSU3hEUVVGRExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0RFFVTjJRenM3UVVGRlRTeFRRVUZUTEZsQlFWa3NSMEZCUnp0QlFVTTNRaXhOUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVOQlFVTXNRMEZCUXp0RFFVTnNRanM3UVVGRlJDeFpRVUZaTEVOQlFVTXNVMEZCVXl4SFFVRkhMREJDUVVGaExFTkJRVU03TzBGQlJYWkRMRmxCUVZrc1EwRkJReXhUUVVGVExFTkJRVU1zUjBGQlJ5eEhRVUZITEZWQlFWTXNUVUZCVFN4RlFVRkZPMEZCUXpWRExFMUJRVWtzUjBGQlJ5eEhRVUZITEVWQlFVVXNRMEZCUXpzN1FVRkZZaXhQUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8wRkJRelZETEU5QlFVY3NTVUZCU1N4SlFVRkpMRU5CUVVNN1IwRkRZanM3UVVGRlJDeExRVUZITEVsQlFVa3NUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJRenRCUVVOeVFpeFRRVUZQTEVkQlFVY3NRMEZCUXp0RFFVTmFMRU5CUVVNN08wRkJSVVlzV1VGQldTeERRVUZETEZOQlFWTXNRMEZCUXl4UFFVRlBMRWRCUVVjc1ZVRkJVeXhQUVVGUExFVkJRVVU3UVVGRGFrUXNUVUZCU1N4SFFVRkhMRWRCUVVjc1JVRkJSVHROUVVOV0xFbEJRVWtzUjBGQlJ5eFBRVUZQTEVOQlFVTXNTVUZCU1R0TlFVTnVRaXhEUVVGRExGbEJRVUU3VFVGRFJDeERRVUZETEZsQlFVRXNRMEZCUXpzN1FVRkZTaXhOUVVGSkxFOUJRVThzUTBGQlF5eFhRVUZYTEVWQlFVVTdRVUZEZGtJc1VVRkJTU3hYUVVGWExFZEJRVWNzYVVKQlFXbENMRU5CUVVNN1FVRkRjRU1zVTBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhQUVVGUExFTkJRVU1zVjBGQlZ5eERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzBGQlEzUkVMR2xDUVVGWExFbEJRVWtzUjBGQlJ5eEhRVUZITEU5QlFVOHNRMEZCUXl4WFFVRlhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03UzBGRE4wTTdRVUZEUkN4bFFVRlhMRWxCUVVrc1NVRkJTU3hEUVVGRE8wRkJRM0JDTEU5QlFVY3NTVUZCU1N4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETzBkQlF6bENPenRCUVVWRUxFOUJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8wRkJRM1pETEU5QlFVY3NTVUZCU1N4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGRCUXpkQ096dEJRVVZFTEUxQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenM3UVVGRlppeFRRVUZQTEVkQlFVY3NRMEZCUXp0RFFVTmFMRU5CUVVNN08wRkJSVVlzV1VGQldTeERRVUZETEZOQlFWTXNRMEZCUXl4cFFrRkJhVUlzUjBGQlJ5eFZRVUZUTEZGQlFWRXNSVUZCUlR0QlFVTTFSQ3hUUVVGUExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zVVVGQlVTeERRVUZETEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVNN1EwRkRMMFFzUTBGQlF6dEJRVU5HTEZsQlFWa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1UwRkJVeXhIUVVGSExGVkJRVk1zVVVGQlVTeEZRVUZGTzBGQlEzQkVMRk5CUVU4c1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eGxRVUZsTEVkQlFVY3NTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhSUVVGUkxFTkJRVU1zUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXp0RFFVTjZSU3hEUVVGRE96dEJRVVZHTEZsQlFWa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1kwRkJZeXhIUVVGSExGbEJRVmtzUTBGQlF5eFRRVUZUTEVOQlFVTXNZMEZCWXl4SFFVRkhMRlZCUXpsRkxFdEJRVXNzUlVGRFREdEJRVU5CTEUxQlFVa3NSMEZCUnl4SFFVRkhMRVZCUVVVc1EwRkJRenM3UVVGRllpeExRVUZITEVsQlFVa3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkRZaXhEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEV0QlFVc3NaMEpCUVdkQ0xFZEJRVWNzV1VGQldTeEhRVUZITEVWQlFVVXNRMEZCUVN4SFFVRkpMRkZCUVZFc1EwRkRha1VzUTBGQlF6dEJRVU5HTEUxQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRCUVVObUxFdEJRVWNzU1VGQlNTeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXp0QlFVTXpReXhOUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTEVWQlFVVTdRVUZEYWtJc1QwRkJSeXhKUVVGSkxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNN1FVRkROVUlzVVVGQlNTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRPMEZCUTJZc1QwRkJSeXhKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wRkJRMnhETEZGQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRIUVVOb1FqdEJRVU5FTEUxQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4c1JVRkJSVHRCUVVOcVFpeFJRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBMRVZCUVVVN1FVRkRha0lzVlVGQlNTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRPMHRCUTJoQ08wRkJRMFFzVDBGQlJ5eEpRVUZKTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03UVVGRGVrSXNVVUZCU1N4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8wRkJRMllzVDBGQlJ5eEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzBGQlEyeERMRkZCUVVrc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF6dEJRVU5tTEZGQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4c1JVRkJSVHRCUVVOcVFpeFZRVUZKTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN1MwRkRhRUk3UjBGRFJqdEJRVU5FTEUxQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenM3UVVGRlppeFRRVUZQTEVkQlFVY3NRMEZCUXp0RFFVTmFMRU5CUVVNN08wRkJSVVlzV1VGQldTeERRVUZETEZOQlFWTXNRMEZCUXl4blFrRkJaMElzUjBGQlJ5eFZRVUZUTEU5QlFVOHNSVUZCUlR0QlFVTXhSQ3hOUVVGSkxFOUJRVThzUjBGQlJ5eFZRVUZWTEVkQlFVY3NUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU03UVVGRGFrUXNUVUZCU1N4UFFVRlBMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTzBGQlEzSkNMRmRCUVU4c1NVRkJTU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdSMEZEYWtRN1FVRkRSQ3hOUVVGSkxFOUJRVThzUTBGQlF5eEpRVUZKTEVWQlFVVTdRVUZEYUVJc1YwRkJUeXhKUVVGSkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEhRVU0xUXp0QlFVTkVMRk5CUVU4c1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eE5RVUZOTEVkQlFVY3NUMEZCVHl4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRE8wTkJRek5ETEVOQlFVTTdRVUZEUml4WlFVRlpMRU5CUVVNc1UwRkJVeXhEUVVGRExIRkNRVUZ4UWl4SFFVRkhMRlZCUVZNc1QwRkJUeXhGUVVGRk8wRkJReTlFTEUxQlFVa3NUMEZCVHl4SFFVRkhMR2RDUVVGblFpeEhRVUZITEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRE8wRkJRM1pFTEUxQlFVa3NUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJUdEJRVU55UWl4WFFVRlBMRWxCUVVrc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBkQlEycEVPMEZCUTBRc1RVRkJTU3hQUVVGUExFTkJRVU1zU1VGQlNTeEZRVUZGTzBGQlEyaENMRmRCUVU4c1NVRkJTU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03UjBGRE5VTTdPMEZCUlVRc1UwRkJUeXhKUVVGSkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRlZCUVZVc1EwRkJReXhEUVVGRE8wRkJRM1JETEUxQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJRenRCUVVObUxGTkJRVThzU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dEJRVU40UXl4TlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU03TzBGQlJXWXNVMEZCVHl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFMUJRVTBzUjBGQlJ5eFBRVUZQTEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVNN1EwRkRNME1zUTBGQlF6czdRVUZGUml4WlFVRlpMRU5CUVVNc1UwRkJVeXhEUVVGRExHZENRVUZuUWl4SFFVRkhMRlZCUVZNc1QwRkJUeXhGUVVGRk8wRkJRekZFTEZOQlFVOHNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhaUVVGWkxFZEJRVWNzVDBGQlR5eERRVUZETEV0QlFVc3NSMEZCUnl4TFFVRkxMRU5CUVVNc1EwRkJRenREUVVOMlJDeERRVUZET3p0QlFVVkdMRmxCUVZrc1EwRkJReXhUUVVGVExFTkJRVU1zWjBKQlFXZENMRWRCUVVjc1ZVRkJVeXhQUVVGUExFVkJRVVU3UVVGRE1VUXNVMEZCVHl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFOUJRVThzUjBGQlJ5eFBRVUZQTEVOQlFVTXNTMEZCU3l4SFFVRkhMRTFCUVUwc1EwRkJReXhEUVVGRE8wTkJRMjVFTEVOQlFVTTdPMEZCUlVZc1dVRkJXU3hEUVVGRExGTkJRVk1zUTBGQlF5eGhRVUZoTEVkQlFVY3NWVUZCVXl4TFFVRkxMRVZCUVVVN1FVRkRja1FzVFVGQlNTeE5RVUZOTEVkQlFVY3NTMEZCU3l4RFFVRkRMRTFCUVUwN1RVRkRka0lzV1VGQldTeEhRVUZITEVWQlFVVTdUVUZEYWtJc1NVRkJTU3haUVVGQkxFTkJRVU03TzBGQlJWQXNUMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEUxQlFVMHNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0QlFVTTNReXhuUWtGQldTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1IwRkRNME03TzBGQlJVUXNVVUZCVFN4SFFVRkhMRWRCUVVjc1IwRkJSeXhaUVVGWkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRWRCUVVjc1EwRkJRenM3UVVGRk4wTXNUVUZCU1N4SFFVRkhMRXRCUVVzc1EwRkJReXhKUVVGSkxFZEJRVWNzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXpzN1FVRkZka1FzVTBGQlR5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVkQlFVY3NUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJRenREUVVOMFJDeERRVUZET3p0QlFVVkdMRmxCUVZrc1EwRkJReXhUUVVGVExFTkJRVU1zWTBGQll5eEhRVUZITEZWQlFWTXNSVUZCUlN4RlFVRkZPMEZCUTI1RUxFMUJRVWtzU1VGQlNTeEhRVUZITEVWQlFVVXNRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBGQlF6bENMRk5CUVU4c1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlNTeEhRVUZITEVkQlFVY3NSMEZCUnl4RlFVRkZMRU5CUVVFc1IwRkJTU3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETzBOQlF6bERMRU5CUVVNN08wRkJSVVlzV1VGQldTeERRVUZETEZOQlFWTXNRMEZCUXl4aFFVRmhMRWRCUVVjc1ZVRkJVeXhOUVVGTkxFVkJRVVU3UVVGRGRFUXNVMEZCVHl4SFFVRkhMRWRCUVVjc1RVRkJUU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEhRVUZITEVOQlFVTTdRMEZEYWtNc1EwRkJRenM3UVVGRlJpeFpRVUZaTEVOQlFVTXNVMEZCVXl4RFFVRkRMR0ZCUVdFc1IwRkJSeXhWUVVGVExFMUJRVTBzUlVGQlJUdEJRVU4wUkN4VFFVRlBMRk5CUVZNc1IwRkJSeXhOUVVGTkxFTkJRVU1zUzBGQlN5eEhRVUZITEVkQlFVY3NRMEZCUXp0RFFVTjJReXhEUVVGRE96dEJRVVZHTEZsQlFWa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1kwRkJZeXhIUVVGSExGVkJRVk1zU1VGQlNTeEZRVUZGTzBGQlEzSkVMRk5CUVU4c1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NSMEZCUnl4RFFVRkRPME5CUTNSRExFTkJRVU03TzBGQlJVWXNXVUZCV1N4RFFVRkRMRk5CUVZNc1EwRkJReXhuUWtGQlowSXNSMEZCUnl4WlFVRlhPMEZCUTI1RUxGTkJRVThzVjBGQlZ5eERRVUZETzBOQlEzQkNMRU5CUVVNN08wRkJSVVlzV1VGQldTeERRVUZETEZOQlFWTXNRMEZCUXl4WFFVRlhMRWRCUVVjc1dVRkJWenRCUVVNNVF5eFRRVUZQTEUxQlFVMHNRMEZCUXp0RFFVTm1MRU5CUVVNN08wRkJSVVlzV1VGQldTeERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRWRCUVVjc1ZVRkJVeXhKUVVGSkxFVkJRVVU3UVVGRE0wTXNUVUZCU1N4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXM3VFVGRGNFSXNWMEZCVnl4SFFVRkhMRVZCUVVVc1EwRkJRenM3UVVGRmJrSXNUMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEV0QlFVc3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0QlFVTTFReXhsUVVGWExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SFFVTjZRenM3UVVGRlJDeFRRVUZQTEU5QlFVOHNSMEZCUnl4WFFVRlhMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXp0RFFVTXZReXhEUVVGRE8wRkJRMFlzV1VGQldTeERRVUZETEZOQlFWTXNRMEZCUXl4UlFVRlJMRWRCUVVjc1ZVRkJVeXhKUVVGSkxFVkJRVVU3UVVGREwwTXNVMEZCVHl4SlFVRkpMRU5CUVVNc1IwRkJSeXhIUVVGSExFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dERRVU5xUkN4RFFVRkRJaXdpWm1sc1pTSTZJbkJ5YVc1MFpYSXVhbk1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lJdktpQmxjMnhwYm5RdFpHbHpZV0pzWlNCdVpYY3RZMkZ3SUNvdlhHNXBiWEJ2Y25RZ1ZtbHphWFJ2Y2lCbWNtOXRJQ2N1TDNacGMybDBiM0luTzF4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2NISnBiblFvWVhOMEtTQjdYRzRnSUhKbGRIVnliaUJ1WlhjZ1VISnBiblJXYVhOcGRHOXlLQ2t1WVdOalpYQjBLR0Z6ZENrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJRY21sdWRGWnBjMmwwYjNJb0tTQjdYRzRnSUhSb2FYTXVjR0ZrWkdsdVp5QTlJREE3WEc1OVhHNWNibEJ5YVc1MFZtbHphWFJ2Y2k1d2NtOTBiM1I1Y0dVZ1BTQnVaWGNnVm1semFYUnZjaWdwTzF4dVhHNVFjbWx1ZEZacGMybDBiM0l1Y0hKdmRHOTBlWEJsTG5CaFpDQTlJR1oxYm1OMGFXOXVLSE4wY21sdVp5a2dlMXh1SUNCc1pYUWdiM1YwSUQwZ0p5YzdYRzVjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREFzSUd3Z1BTQjBhR2x6TG5CaFpHUnBibWM3SUdrZ1BDQnNPeUJwS3lzcElIdGNiaUFnSUNCdmRYUWdLejBnSnlBZ0p6dGNiaUFnZlZ4dVhHNGdJRzkxZENBclBTQnpkSEpwYm1jZ0t5QW5YRnh1Snp0Y2JpQWdjbVYwZFhKdUlHOTFkRHRjYm4wN1hHNWNibEJ5YVc1MFZtbHphWFJ2Y2k1d2NtOTBiM1I1Y0dVdVVISnZaM0poYlNBOUlHWjFibU4wYVc5dUtIQnliMmR5WVcwcElIdGNiaUFnYkdWMElHOTFkQ0E5SUNjbkxGeHVJQ0FnSUdKdlpIa2dQU0J3Y205bmNtRnRMbUp2Wkhrc1hHNGdJQ0FnYVN4Y2JpQWdJQ0JzTzF4dVhHNGdJR2xtSUNod2NtOW5jbUZ0TG1Kc2IyTnJVR0Z5WVcxektTQjdYRzRnSUNBZ2JHVjBJR0pzYjJOclVHRnlZVzF6SUQwZ0owSk1UME5MSUZCQlVrRk5Vem9nV3ljN1hHNGdJQ0FnWm05eUlDaHBJRDBnTUN3Z2JDQTlJSEJ5YjJkeVlXMHVZbXh2WTJ0UVlYSmhiWE11YkdWdVozUm9PeUJwSUR3Z2JEc2dhU3NyS1NCN1hHNGdJQ0FnSUNCaWJHOWphMUJoY21GdGN5QXJQU0FuSUNjZ0t5QndjbTluY21GdExtSnNiMk5yVUdGeVlXMXpXMmxkTzF4dUlDQWdJSDFjYmlBZ0lDQmliRzlqYTFCaGNtRnRjeUFyUFNBbklGMG5PMXh1SUNBZ0lHOTFkQ0FyUFNCMGFHbHpMbkJoWkNoaWJHOWphMUJoY21GdGN5azdYRzRnSUgxY2JseHVJQ0JtYjNJZ0tHa2dQU0F3TENCc0lEMGdZbTlrZVM1c1pXNW5kR2c3SUdrZ1BDQnNPeUJwS3lzcElIdGNiaUFnSUNCdmRYUWdLejBnZEdocGN5NWhZMk5sY0hRb1ltOWtlVnRwWFNrN1hHNGdJSDFjYmx4dUlDQjBhR2x6TG5CaFpHUnBibWN0TFR0Y2JseHVJQ0J5WlhSMWNtNGdiM1YwTzF4dWZUdGNibHh1VUhKcGJuUldhWE5wZEc5eUxuQnliM1J2ZEhsd1pTNU5kWE4wWVdOb1pWTjBZWFJsYldWdWRDQTlJR1oxYm1OMGFXOXVLRzExYzNSaFkyaGxLU0I3WEc0Z0lISmxkSFZ5YmlCMGFHbHpMbkJoWkNnbmUzc2dKeUFySUhSb2FYTXVVM1ZpUlhod2NtVnpjMmx2YmlodGRYTjBZV05vWlNrZ0t5QW5JSDE5SnlrN1hHNTlPMXh1VUhKcGJuUldhWE5wZEc5eUxuQnliM1J2ZEhsd1pTNUVaV052Y21GMGIzSWdQU0JtZFc1amRHbHZiaWh0ZFhOMFlXTm9aU2tnZTF4dUlDQnlaWFIxY200Z2RHaHBjeTV3WVdRb0ozdDdJRVJKVWtWRFZFbFdSU0FuSUNzZ2RHaHBjeTVUZFdKRmVIQnlaWE56YVc5dUtHMTFjM1JoWTJobEtTQXJJQ2NnZlgwbktUdGNibjA3WEc1Y2JsQnlhVzUwVm1semFYUnZjaTV3Y205MGIzUjVjR1V1UW14dlkydFRkR0YwWlcxbGJuUWdQU0JRY21sdWRGWnBjMmwwYjNJdWNISnZkRzkwZVhCbExrUmxZMjl5WVhSdmNrSnNiMk5ySUQwZ1puVnVZM1JwYjI0b1hHNGdJR0pzYjJOclhHNHBJSHRjYmlBZ2JHVjBJRzkxZENBOUlDY25PMXh1WEc0Z0lHOTFkQ0FyUFNCMGFHbHpMbkJoWkNoY2JpQWdJQ0FvWW14dlkyc3VkSGx3WlNBOVBUMGdKMFJsWTI5eVlYUnZja0pzYjJOckp5QS9JQ2RFU1ZKRlExUkpWa1VnSnlBNklDY25LU0FySUNkQ1RFOURTem9uWEc0Z0lDazdYRzRnSUhSb2FYTXVjR0ZrWkdsdVp5c3JPMXh1SUNCdmRYUWdLejBnZEdocGN5NXdZV1FvZEdocGN5NVRkV0pGZUhCeVpYTnphVzl1S0dKc2IyTnJLU2s3WEc0Z0lHbG1JQ2hpYkc5amF5NXdjbTluY21GdEtTQjdYRzRnSUNBZ2IzVjBJQ3M5SUhSb2FYTXVjR0ZrS0NkUVVrOUhVa0ZOT2ljcE8xeHVJQ0FnSUhSb2FYTXVjR0ZrWkdsdVp5c3JPMXh1SUNBZ0lHOTFkQ0FyUFNCMGFHbHpMbUZqWTJWd2RDaGliRzlqYXk1d2NtOW5jbUZ0S1R0Y2JpQWdJQ0IwYUdsekxuQmhaR1JwYm1jdExUdGNiaUFnZlZ4dUlDQnBaaUFvWW14dlkyc3VhVzUyWlhKelpTa2dlMXh1SUNBZ0lHbG1JQ2hpYkc5amF5NXdjbTluY21GdEtTQjdYRzRnSUNBZ0lDQjBhR2x6TG5CaFpHUnBibWNyS3p0Y2JpQWdJQ0I5WEc0Z0lDQWdiM1YwSUNzOUlIUm9hWE11Y0dGa0tDZDdlMTU5ZlNjcE8xeHVJQ0FnSUhSb2FYTXVjR0ZrWkdsdVp5c3JPMXh1SUNBZ0lHOTFkQ0FyUFNCMGFHbHpMbUZqWTJWd2RDaGliRzlqYXk1cGJuWmxjbk5sS1R0Y2JpQWdJQ0IwYUdsekxuQmhaR1JwYm1jdExUdGNiaUFnSUNCcFppQW9ZbXh2WTJzdWNISnZaM0poYlNrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTV3WVdSa2FXNW5MUzA3WEc0Z0lDQWdmVnh1SUNCOVhHNGdJSFJvYVhNdWNHRmtaR2x1WnkwdE8xeHVYRzRnSUhKbGRIVnliaUJ2ZFhRN1hHNTlPMXh1WEc1UWNtbHVkRlpwYzJsMGIzSXVjSEp2ZEc5MGVYQmxMbEJoY25ScFlXeFRkR0YwWlcxbGJuUWdQU0JtZFc1amRHbHZiaWh3WVhKMGFXRnNLU0I3WEc0Z0lHeGxkQ0JqYjI1MFpXNTBJRDBnSjFCQlVsUkpRVXc2SnlBcklIQmhjblJwWVd3dWJtRnRaUzV2Y21sbmFXNWhiRHRjYmlBZ2FXWWdLSEJoY25ScFlXd3VjR0Z5WVcxeld6QmRLU0I3WEc0Z0lDQWdZMjl1ZEdWdWRDQXJQU0FuSUNjZ0t5QjBhR2x6TG1GalkyVndkQ2h3WVhKMGFXRnNMbkJoY21GdGMxc3dYU2s3WEc0Z0lIMWNiaUFnYVdZZ0tIQmhjblJwWVd3dWFHRnphQ2tnZTF4dUlDQWdJR052Ym5SbGJuUWdLejBnSnlBbklDc2dkR2hwY3k1aFkyTmxjSFFvY0dGeWRHbGhiQzVvWVhOb0tUdGNiaUFnZlZ4dUlDQnlaWFIxY200Z2RHaHBjeTV3WVdRb0ozdDdQaUFuSUNzZ1kyOXVkR1Z1ZENBcklDY2dmWDBuS1R0Y2JuMDdYRzVRY21sdWRGWnBjMmwwYjNJdWNISnZkRzkwZVhCbExsQmhjblJwWVd4Q2JHOWphMU4wWVhSbGJXVnVkQ0E5SUdaMWJtTjBhVzl1S0hCaGNuUnBZV3dwSUh0Y2JpQWdiR1YwSUdOdmJuUmxiblFnUFNBblVFRlNWRWxCVENCQ1RFOURTem9uSUNzZ2NHRnlkR2xoYkM1dVlXMWxMbTl5YVdkcGJtRnNPMXh1SUNCcFppQW9jR0Z5ZEdsaGJDNXdZWEpoYlhOYk1GMHBJSHRjYmlBZ0lDQmpiMjUwWlc1MElDczlJQ2NnSnlBcklIUm9hWE11WVdOalpYQjBLSEJoY25ScFlXd3VjR0Z5WVcxeld6QmRLVHRjYmlBZ2ZWeHVJQ0JwWmlBb2NHRnlkR2xoYkM1b1lYTm9LU0I3WEc0Z0lDQWdZMjl1ZEdWdWRDQXJQU0FuSUNjZ0t5QjBhR2x6TG1GalkyVndkQ2h3WVhKMGFXRnNMbWhoYzJncE8xeHVJQ0I5WEc1Y2JpQWdZMjl1ZEdWdWRDQXJQU0FuSUNjZ0t5QjBhR2x6TG5CaFpDZ25VRkpQUjFKQlRUb25LVHRjYmlBZ2RHaHBjeTV3WVdSa2FXNW5LeXM3WEc0Z0lHTnZiblJsYm5RZ0t6MGdkR2hwY3k1aFkyTmxjSFFvY0dGeWRHbGhiQzV3Y205bmNtRnRLVHRjYmlBZ2RHaHBjeTV3WVdSa2FXNW5MUzA3WEc1Y2JpQWdjbVYwZFhKdUlIUm9hWE11Y0dGa0tDZDdlejRnSnlBcklHTnZiblJsYm5RZ0t5QW5JSDE5SnlrN1hHNTlPMXh1WEc1UWNtbHVkRlpwYzJsMGIzSXVjSEp2ZEc5MGVYQmxMa052Ym5SbGJuUlRkR0YwWlcxbGJuUWdQU0JtZFc1amRHbHZiaWhqYjI1MFpXNTBLU0I3WEc0Z0lISmxkSFZ5YmlCMGFHbHpMbkJoWkNoY0lrTlBUbFJGVGxSYklDZGNJaUFySUdOdmJuUmxiblF1ZG1Gc2RXVWdLeUJjSWljZ1hWd2lLVHRjYm4wN1hHNWNibEJ5YVc1MFZtbHphWFJ2Y2k1d2NtOTBiM1I1Y0dVdVEyOXRiV1Z1ZEZOMFlYUmxiV1Z1ZENBOUlHWjFibU4wYVc5dUtHTnZiVzFsYm5RcElIdGNiaUFnY21WMGRYSnVJSFJvYVhNdWNHRmtLRndpZTNzaElDZGNJaUFySUdOdmJXMWxiblF1ZG1Gc2RXVWdLeUJjSWljZ2ZYMWNJaWs3WEc1OU8xeHVYRzVRY21sdWRGWnBjMmwwYjNJdWNISnZkRzkwZVhCbExsTjFZa1Y0Y0hKbGMzTnBiMjRnUFNCbWRXNWpkR2x2YmloelpYaHdjaWtnZTF4dUlDQnNaWFFnY0dGeVlXMXpJRDBnYzJWNGNISXVjR0Z5WVcxekxGeHVJQ0FnSUhCaGNtRnRVM1J5YVc1bmN5QTlJRnRkTEZ4dUlDQWdJR2hoYzJnN1hHNWNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQXNJR3dnUFNCd1lYSmhiWE11YkdWdVozUm9PeUJwSUR3Z2JEc2dhU3NyS1NCN1hHNGdJQ0FnY0dGeVlXMVRkSEpwYm1kekxuQjFjMmdvZEdocGN5NWhZMk5sY0hRb2NHRnlZVzF6VzJsZEtTazdYRzRnSUgxY2JseHVJQ0J3WVhKaGJYTWdQU0FuV3ljZ0t5QndZWEpoYlZOMGNtbHVaM011YW05cGJpZ25MQ0FuS1NBcklDZGRKenRjYmx4dUlDQm9ZWE5vSUQwZ2MyVjRjSEl1YUdGemFDQS9JQ2NnSnlBcklIUm9hWE11WVdOalpYQjBLSE5sZUhCeUxtaGhjMmdwSURvZ0p5YzdYRzVjYmlBZ2NtVjBkWEp1SUhSb2FYTXVZV05qWlhCMEtITmxlSEJ5TG5CaGRHZ3BJQ3NnSnlBbklDc2djR0Z5WVcxeklDc2dhR0Z6YUR0Y2JuMDdYRzVjYmxCeWFXNTBWbWx6YVhSdmNpNXdjbTkwYjNSNWNHVXVVR0YwYUVWNGNISmxjM05wYjI0Z1BTQm1kVzVqZEdsdmJpaHBaQ2tnZTF4dUlDQnNaWFFnY0dGMGFDQTlJR2xrTG5CaGNuUnpMbXB2YVc0b0p5OG5LVHRjYmlBZ2NtVjBkWEp1SUNocFpDNWtZWFJoSUQ4Z0owQW5JRG9nSnljcElDc2dKMUJCVkVnNkp5QXJJSEJoZEdnN1hHNTlPMXh1WEc1UWNtbHVkRlpwYzJsMGIzSXVjSEp2ZEc5MGVYQmxMbE4wY21sdVoweHBkR1Z5WVd3Z1BTQm1kVzVqZEdsdmJpaHpkSEpwYm1jcElIdGNiaUFnY21WMGRYSnVJQ2RjSWljZ0t5QnpkSEpwYm1jdWRtRnNkV1VnS3lBblhDSW5PMXh1ZlR0Y2JseHVVSEpwYm5SV2FYTnBkRzl5TG5CeWIzUnZkSGx3WlM1T2RXMWlaWEpNYVhSbGNtRnNJRDBnWm5WdVkzUnBiMjRvYm5WdFltVnlLU0I3WEc0Z0lISmxkSFZ5YmlBblRsVk5Ra1ZTZXljZ0t5QnVkVzFpWlhJdWRtRnNkV1VnS3lBbmZTYzdYRzU5TzF4dVhHNVFjbWx1ZEZacGMybDBiM0l1Y0hKdmRHOTBlWEJsTGtKdmIyeGxZVzVNYVhSbGNtRnNJRDBnWm5WdVkzUnBiMjRvWW05dmJDa2dlMXh1SUNCeVpYUjFjbTRnSjBKUFQweEZRVTU3SnlBcklHSnZiMnd1ZG1Gc2RXVWdLeUFuZlNjN1hHNTlPMXh1WEc1UWNtbHVkRlpwYzJsMGIzSXVjSEp2ZEc5MGVYQmxMbFZ1WkdWbWFXNWxaRXhwZEdWeVlXd2dQU0JtZFc1amRHbHZiaWdwSUh0Y2JpQWdjbVYwZFhKdUlDZFZUa1JGUmtsT1JVUW5PMXh1ZlR0Y2JseHVVSEpwYm5SV2FYTnBkRzl5TG5CeWIzUnZkSGx3WlM1T2RXeHNUR2wwWlhKaGJDQTlJR1oxYm1OMGFXOXVLQ2tnZTF4dUlDQnlaWFIxY200Z0owNVZURXduTzF4dWZUdGNibHh1VUhKcGJuUldhWE5wZEc5eUxuQnliM1J2ZEhsd1pTNUlZWE5vSUQwZ1puVnVZM1JwYjI0b2FHRnphQ2tnZTF4dUlDQnNaWFFnY0dGcGNuTWdQU0JvWVhOb0xuQmhhWEp6TEZ4dUlDQWdJR3B2YVc1bFpGQmhhWEp6SUQwZ1cxMDdYRzVjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREFzSUd3Z1BTQndZV2x5Y3k1c1pXNW5kR2c3SUdrZ1BDQnNPeUJwS3lzcElIdGNiaUFnSUNCcWIybHVaV1JRWVdseWN5NXdkWE5vS0hSb2FYTXVZV05qWlhCMEtIQmhhWEp6VzJsZEtTazdYRzRnSUgxY2JseHVJQ0J5WlhSMWNtNGdKMGhCVTBoN0p5QXJJR3B2YVc1bFpGQmhhWEp6TG1wdmFXNG9KeXdnSnlrZ0t5QW5mU2M3WEc1OU8xeHVVSEpwYm5SV2FYTnBkRzl5TG5CeWIzUnZkSGx3WlM1SVlYTm9VR0ZwY2lBOUlHWjFibU4wYVc5dUtIQmhhWElwSUh0Y2JpQWdjbVYwZFhKdUlIQmhhWEl1YTJWNUlDc2dKejBuSUNzZ2RHaHBjeTVoWTJObGNIUW9jR0ZwY2k1MllXeDFaU2s3WEc1OU8xeHVMeW9nWlhOc2FXNTBMV1Z1WVdKc1pTQnVaWGN0WTJGd0lDb3ZYRzRpWFgwPVxuIiwiLy8gVVNBR0U6XG4vLyB2YXIgaGFuZGxlYmFycyA9IHJlcXVpcmUoJ2hhbmRsZWJhcnMnKTtcbi8qIGVzbGludC1kaXNhYmxlIG5vLXZhciAqL1xuXG4vLyB2YXIgbG9jYWwgPSBoYW5kbGViYXJzLmNyZWF0ZSgpO1xuXG52YXIgaGFuZGxlYmFycyA9IHJlcXVpcmUoJy4uL2Rpc3QvY2pzL2hhbmRsZWJhcnMnKVsnZGVmYXVsdCddO1xuXG52YXIgcHJpbnRlciA9IHJlcXVpcmUoJy4uL2Rpc3QvY2pzL2hhbmRsZWJhcnMvY29tcGlsZXIvcHJpbnRlcicpO1xuaGFuZGxlYmFycy5QcmludFZpc2l0b3IgPSBwcmludGVyLlByaW50VmlzaXRvcjtcbmhhbmRsZWJhcnMucHJpbnQgPSBwcmludGVyLnByaW50O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGhhbmRsZWJhcnM7XG5cbi8vIFB1Ymxpc2ggYSBOb2RlLmpzIHJlcXVpcmUoKSBoYW5kbGVyIGZvciAuaGFuZGxlYmFycyBhbmQgLmhicyBmaWxlc1xuZnVuY3Rpb24gZXh0ZW5zaW9uKG1vZHVsZSwgZmlsZW5hbWUpIHtcbiAgdmFyIGZzID0gcmVxdWlyZSgnZnMnKTtcbiAgdmFyIHRlbXBsYXRlU3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGZpbGVuYW1lLCAndXRmOCcpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGhhbmRsZWJhcnMuY29tcGlsZSh0ZW1wbGF0ZVN0cmluZyk7XG59XG4vKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuaWYgKHR5cGVvZiByZXF1aXJlICE9PSAndW5kZWZpbmVkJyAmJiByZXF1aXJlLmV4dGVuc2lvbnMpIHtcbiAgcmVxdWlyZS5leHRlbnNpb25zWycuaGFuZGxlYmFycyddID0gZXh0ZW5zaW9uO1xuICByZXF1aXJlLmV4dGVuc2lvbnNbJy5oYnMnXSA9IGV4dGVuc2lvbjtcbn1cbiIsIi8qKlxuICogRGVmaW5lcyBhbiBldmVudCBtYW5hZ2VyIGZvciB0aGUgY2l0YXRpb25zIHBsdWdpbi5cbiAqL1xuXG5pbXBvcnQgeyBFdmVudHMsIEV2ZW50UmVmIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDaXRhdGlvbkV2ZW50cyBleHRlbmRzIEV2ZW50cyB7XG4gIG9uKG5hbWU6ICdsaWJyYXJ5LWxvYWQtc3RhcnQnLCBjYWxsYmFjazogKCkgPT4gYW55LCBjdHg/OiBhbnkpOiBFdmVudFJlZjtcbiAgb24obmFtZTogJ2xpYnJhcnktbG9hZC1jb21wbGV0ZScsIGNhbGxiYWNrOiAoKSA9PiBhbnksIGN0eD86IGFueSk6IEV2ZW50UmVmO1xuICBvbihuYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiAoLi4uZGF0YTogYW55W10pID0+IGFueSwgY3R4PzogYW55KTogRXZlbnRSZWYge1xuICAgIHJldHVybiBzdXBlci5vbihuYW1lLCBjYWxsYmFjaywgY3R4KTtcbiAgfVxuXG4gIHRyaWdnZXIobmFtZTogJ2xpYnJhcnktbG9hZC1zdGFydCcpOiB2b2lkO1xuICB0cmlnZ2VyKG5hbWU6ICdsaWJyYXJ5LWxvYWQtY29tcGxldGUnKTogdm9pZDtcbiAgdHJpZ2dlcihuYW1lOiBzdHJpbmcsIC4uLmRhdGE6IGFueVtdKTogdm9pZCB7XG4gICAgc3VwZXIudHJpZ2dlcihuYW1lLCBkYXRhKTtcbiAgfVxufVxuIiwiaW1wb3J0IHtcbiAgQXBwLFxuICBFdmVudFJlZixcbiAgRnV6enlNYXRjaCxcbiAgRnV6enlTdWdnZXN0TW9kYWwsXG4gIE5vdGljZSxcbiAgcmVuZGVyTWF0Y2hlcyxcbiAgU2VhcmNoTWF0Y2hlcyxcbiAgU2VhcmNoTWF0Y2hQYXJ0LFxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgQ2l0YXRpb25QbHVnaW4gZnJvbSAnLi9tYWluJztcbmltcG9ydCB7IEVudHJ5IH0gZnJvbSAnLi90eXBlcyc7XG5cbi8vIFN0dWIgc29tZSBtZXRob2RzIHdlIGtub3cgYXJlIHRoZXJlLi5cbmludGVyZmFjZSBGdXp6eVN1Z2dlc3RNb2RhbEV4dDxUPiBleHRlbmRzIEZ1enp5U3VnZ2VzdE1vZGFsPFQ+IHtcbiAgY2hvb3NlcjogQ2hvb3NlckV4dDtcbn1cbmludGVyZmFjZSBDaG9vc2VyRXh0IHtcbiAgdXNlU2VsZWN0ZWRJdGVtKGV2dDogTW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQpOiB2b2lkO1xufVxuXG5jbGFzcyBTZWFyY2hNb2RhbCBleHRlbmRzIEZ1enp5U3VnZ2VzdE1vZGFsPEVudHJ5PiB7XG4gIHBsdWdpbjogQ2l0YXRpb25QbHVnaW47XG4gIGxpbWl0ID0gNTA7XG5cbiAgbG9hZGluZ0VsOiBIVE1MRWxlbWVudDtcblxuICBldmVudFJlZnM6IEV2ZW50UmVmW107XG5cbiAgY29uc3RydWN0b3IoYXBwOiBBcHAsIHBsdWdpbjogQ2l0YXRpb25QbHVnaW4pIHtcbiAgICBzdXBlcihhcHApO1xuICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xuXG4gICAgdGhpcy5yZXN1bHRDb250YWluZXJFbC5hZGRDbGFzcygnem90ZXJvTW9kYWxSZXN1bHRzJyk7XG5cbiAgICB0aGlzLmlucHV0RWwuc2V0QXR0cmlidXRlKCdzcGVsbGNoZWNrJywgJ2ZhbHNlJyk7XG5cbiAgICB0aGlzLmxvYWRpbmdFbCA9IHRoaXMucmVzdWx0Q29udGFpbmVyRWwucGFyZW50RWxlbWVudC5jcmVhdGVFbCgnZGl2Jywge1xuICAgICAgY2xzOiAnem90ZXJvTW9kYWxMb2FkaW5nJyxcbiAgICB9KTtcbiAgICB0aGlzLmxvYWRpbmdFbC5jcmVhdGVFbCgnZGl2JywgeyBjbHM6ICd6b3Rlcm9Nb2RhbExvYWRpbmdBbmltYXRpb24nIH0pO1xuICAgIHRoaXMubG9hZGluZ0VsLmNyZWF0ZUVsKCdwJywge1xuICAgICAgdGV4dDogJ0xvYWRpbmcgY2l0YXRpb24gZGF0YWJhc2UuIFBsZWFzZSB3YWl0Li4uJyxcbiAgICB9KTtcbiAgfVxuXG4gIG9uT3BlbigpIHtcbiAgICBzdXBlci5vbk9wZW4oKTtcblxuICAgIHRoaXMuZXZlbnRSZWZzID0gW1xuICAgICAgdGhpcy5wbHVnaW4uZXZlbnRzLm9uKCdsaWJyYXJ5LWxvYWQtc3RhcnQnLCAoKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0TG9hZGluZyh0cnVlKTtcbiAgICAgIH0pLFxuXG4gICAgICB0aGlzLnBsdWdpbi5ldmVudHMub24oJ2xpYnJhcnktbG9hZC1jb21wbGV0ZScsICgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRMb2FkaW5nKGZhbHNlKTtcbiAgICAgIH0pLFxuICAgIF07XG5cbiAgICB0aGlzLnNldExvYWRpbmcodGhpcy5wbHVnaW4uaXNMaWJyYXJ5TG9hZGluZyk7XG5cbiAgICAvLyBEb24ndCBpbW1lZGlhdGVseSByZWdpc3RlciBrZXlldmVudCBsaXN0ZW5lcnMuIElmIHRoZSBtb2RhbCB3YXMgdHJpZ2dlcmVkXG4gICAgLy8gYnkgYW4gXCJFbnRlclwiIGtleXN0cm9rZSAoZS5nLiB2aWEgdGhlIE9ic2lkaWFuIGNvbW1hbmQgZGlhbG9nKSwgdGhpcyBldmVudFxuICAgIC8vIHdpbGwgYmUgcmVjZWl2ZWQgaGVyZSBlcnJvbmVvdXNseS5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuaW5wdXRFbC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGV2KSA9PiB0aGlzLm9uSW5wdXRLZXlkb3duKGV2KSk7XG4gICAgICB0aGlzLmlucHV0RWwuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCAoZXYpID0+IHRoaXMub25JbnB1dEtleXVwKGV2KSk7XG4gICAgfSwgMjAwKTtcbiAgfVxuXG4gIG9uQ2xvc2UoKSB7XG4gICAgdGhpcy5ldmVudFJlZnM/LmZvckVhY2goKGUpID0+IHRoaXMucGx1Z2luLmV2ZW50cy5vZmZyZWYoZSkpO1xuICB9XG5cbiAgZ2V0SXRlbXMoKTogRW50cnlbXSB7XG4gICAgaWYgKHRoaXMucGx1Z2luLmlzTGlicmFyeUxvYWRpbmcpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLnBsdWdpbi5saWJyYXJ5LmVudHJpZXMpO1xuICB9XG5cbiAgZ2V0SXRlbVRleHQoaXRlbTogRW50cnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtpdGVtLnRpdGxlfSAke2l0ZW0uYXV0aG9yU3RyaW5nfSAke2l0ZW0ueWVhcn1gO1xuICB9XG5cbiAgc2V0TG9hZGluZyhsb2FkaW5nOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKGxvYWRpbmcpIHtcbiAgICAgIHRoaXMubG9hZGluZ0VsLnJlbW92ZUNsYXNzKCdkLW5vbmUnKTtcbiAgICAgIHRoaXMuaW5wdXRFbC5kaXNhYmxlZCA9IHRydWU7XG4gICAgICB0aGlzLnJlc3VsdENvbnRhaW5lckVsLmVtcHR5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9hZGluZ0VsLmFkZENsYXNzKCdkLW5vbmUnKTtcbiAgICAgIHRoaXMuaW5wdXRFbC5kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5pbnB1dEVsLmZvY3VzKCk7XG5cbiAgICAgIC8vIEB0cy1pZ25vcmU6IG5vdCBleHBvc2VkIGluIEFQSS5cbiAgICAgIHRoaXMudXBkYXRlU3VnZ2VzdGlvbnMoKTtcbiAgICB9XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIG9uQ2hvb3NlSXRlbShpdGVtOiBFbnRyeSwgZXZ0OiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIHRoaXMucGx1Z2luLm9wZW5MaXRlcmF0dXJlTm90ZShpdGVtLmlkLCBmYWxzZSkuY2F0Y2goY29uc29sZS5lcnJvcik7XG4gIH1cblxuICByZW5kZXJTdWdnZXN0aW9uKG1hdGNoOiBGdXp6eU1hdGNoPEVudHJ5PiwgZWw6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgZWwuZW1wdHkoKTtcbiAgICBjb25zdCBlbnRyeSA9IG1hdGNoLml0ZW07XG4gICAgY29uc3QgZW50cnlUaXRsZSA9IGVudHJ5LnRpdGxlIHx8ICcnO1xuXG4gICAgY29uc3QgY29udGFpbmVyID0gZWwuY3JlYXRlRWwoJ2RpdicsIHsgY2xzOiAnem90ZXJvUmVzdWx0JyB9KTtcbiAgICBjb25zdCB0aXRsZUVsID0gY29udGFpbmVyLmNyZWF0ZUVsKCdzcGFuJywge1xuICAgICAgY2xzOiAnem90ZXJvVGl0bGUnLFxuICAgIH0pO1xuICAgIGNvbnRhaW5lci5jcmVhdGVFbCgnc3BhbicsIHsgY2xzOiAnem90ZXJvQ2l0ZWtleScsIHRleHQ6IGVudHJ5LmlkIH0pO1xuXG4gICAgY29uc3QgYXV0aG9yc0NscyA9IGVudHJ5LmF1dGhvclN0cmluZ1xuICAgICAgPyAnem90ZXJvQXV0aG9ycydcbiAgICAgIDogJ3pvdGVyb0F1dGhvcnMgem90ZXJvQXV0aG9yc0VtcHR5JztcbiAgICBjb25zdCBhdXRob3JzRWwgPSBjb250YWluZXIuY3JlYXRlRWwoJ3NwYW4nLCB7XG4gICAgICBjbHM6IGF1dGhvcnNDbHMsXG4gICAgfSk7XG5cbiAgICAvLyBQcmVwYXJlIHRvIGhpZ2hsaWdodCBzdHJpbmcgbWF0Y2hlcyBmb3IgZWFjaCBwYXJ0IG9mIHRoZSBzZWFyY2ggaXRlbS5cbiAgICAvLyBDb21wdXRlIG9mZnNldHMgb2YgZWFjaCByZW5kZXJlZCBlbGVtZW50J3MgY29udGVudCB3aXRoaW4gdGhlIHN0cmluZ1xuICAgIC8vIHJldHVybmVkIGJ5IGBnZXRJdGVtVGV4dGAuXG4gICAgY29uc3QgYWxsTWF0Y2hlcyA9IG1hdGNoLm1hdGNoLm1hdGNoZXM7XG4gICAgY29uc3QgYXV0aG9yU3RyaW5nT2Zmc2V0ID0gMSArIGVudHJ5VGl0bGUubGVuZ3RoO1xuXG4gICAgLy8gRmlsdGVyIGEgbWF0Y2ggbGlzdCB0byBjb250YWluIG9ubHkgdGhlIHJlbGV2YW50IG1hdGNoZXMgZm9yIGEgZ2l2ZW5cbiAgICAvLyBzdWJzdHJpbmcsIGFuZCB3aXRoIG1hdGNoIGluZGljZXMgc2hpZnRlZCByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhhdFxuICAgIC8vIHN1YnN0cmluZ1xuICAgIGNvbnN0IHNoaWZ0TWF0Y2hlcyA9IChcbiAgICAgIG1hdGNoZXM6IFNlYXJjaE1hdGNoZXMsXG4gICAgICBzdGFydDogbnVtYmVyLFxuICAgICAgZW5kOiBudW1iZXIsXG4gICAgKSA9PiB7XG4gICAgICByZXR1cm4gbWF0Y2hlc1xuICAgICAgICAubWFwKChtYXRjaDogU2VhcmNoTWF0Y2hQYXJ0KSA9PiB7XG4gICAgICAgICAgY29uc3QgW21hdGNoU3RhcnQsIG1hdGNoRW5kXSA9IG1hdGNoO1xuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBtYXRjaFN0YXJ0IC0gc3RhcnQsXG4gICAgICAgICAgICBNYXRoLm1pbihtYXRjaEVuZCAtIHN0YXJ0LCBlbmQpLFxuICAgICAgICAgIF0gYXMgU2VhcmNoTWF0Y2hQYXJ0O1xuICAgICAgICB9KVxuICAgICAgICAuZmlsdGVyKChtYXRjaDogU2VhcmNoTWF0Y2hQYXJ0KSA9PiB7XG4gICAgICAgICAgY29uc3QgW21hdGNoU3RhcnQsIG1hdGNoRW5kXSA9IG1hdGNoO1xuICAgICAgICAgIHJldHVybiBtYXRjaFN0YXJ0ID49IDA7XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICAvLyBOb3cgaGlnaGxpZ2h0IG1hdGNoZWQgc3RyaW5ncyB3aXRoaW4gZWFjaCBlbGVtZW50XG4gICAgcmVuZGVyTWF0Y2hlcyhcbiAgICAgIHRpdGxlRWwsXG4gICAgICBlbnRyeVRpdGxlLFxuICAgICAgc2hpZnRNYXRjaGVzKGFsbE1hdGNoZXMsIDAsIGVudHJ5VGl0bGUubGVuZ3RoKSxcbiAgICApO1xuICAgIGlmIChlbnRyeS5hdXRob3JTdHJpbmcpIHtcbiAgICAgIHJlbmRlck1hdGNoZXMoXG4gICAgICAgIGF1dGhvcnNFbCxcbiAgICAgICAgZW50cnkuYXV0aG9yU3RyaW5nLFxuICAgICAgICBzaGlmdE1hdGNoZXMoXG4gICAgICAgICAgYWxsTWF0Y2hlcyxcbiAgICAgICAgICBhdXRob3JTdHJpbmdPZmZzZXQsXG4gICAgICAgICAgYXV0aG9yU3RyaW5nT2Zmc2V0ICsgZW50cnkuYXV0aG9yU3RyaW5nLmxlbmd0aCxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgb25JbnB1dEtleWRvd24oZXY6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoZXYua2V5ID09ICdUYWInKSB7XG4gICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uSW5wdXRLZXl1cChldjogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChldi5rZXkgPT0gJ0VudGVyJyB8fCBldi5rZXkgPT0gJ1RhYicpIHtcbiAgICAgICgodGhpcyBhcyB1bmtub3duKSBhcyBGdXp6eVN1Z2dlc3RNb2RhbEV4dDxFbnRyeT4pLmNob29zZXIudXNlU2VsZWN0ZWRJdGVtKFxuICAgICAgICBldixcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPcGVuTm90ZU1vZGFsIGV4dGVuZHMgU2VhcmNoTW9kYWwge1xuICBjb25zdHJ1Y3RvcihhcHA6IEFwcCwgcGx1Z2luOiBDaXRhdGlvblBsdWdpbikge1xuICAgIHN1cGVyKGFwcCwgcGx1Z2luKTtcblxuICAgIHRoaXMuc2V0SW5zdHJ1Y3Rpb25zKFtcbiAgICAgIHsgY29tbWFuZDogJ+KGkeKGkycsIHB1cnBvc2U6ICd0byBuYXZpZ2F0ZScgfSxcbiAgICAgIHsgY29tbWFuZDogJ+KGtScsIHB1cnBvc2U6ICd0byBvcGVuIGxpdGVyYXR1cmUgbm90ZScgfSxcbiAgICAgIHsgY29tbWFuZDogJ2N0cmwg4oa1JywgcHVycG9zZTogJ3RvIG9wZW4gbGl0ZXJhdHVyZSBub3RlIGluIGEgbmV3IHBhbmUnIH0sXG4gICAgICB7IGNvbW1hbmQ6ICd0YWInLCBwdXJwb3NlOiAnb3BlbiBpbiBab3Rlcm8nIH0sXG4gICAgICB7IGNvbW1hbmQ6ICdzaGlmdCB0YWInLCBwdXJwb3NlOiAnb3BlbiBQREYnIH0sXG4gICAgICB7IGNvbW1hbmQ6ICdlc2MnLCBwdXJwb3NlOiAndG8gZGlzbWlzcycgfSxcbiAgICBdKTtcbiAgfVxuXG4gIG9uQ2hvb3NlSXRlbShpdGVtOiBFbnRyeSwgZXZ0OiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50IHx8IGV2dC5rZXkgPT0gJ0VudGVyJykge1xuICAgICAgY29uc3QgbmV3UGFuZSA9XG4gICAgICAgIGV2dCBpbnN0YW5jZW9mIEtleWJvYXJkRXZlbnQgJiYgKGV2dCBhcyBLZXlib2FyZEV2ZW50KS5jdHJsS2V5O1xuICAgICAgdGhpcy5wbHVnaW4ub3BlbkxpdGVyYXR1cmVOb3RlKGl0ZW0uaWQsIG5ld1BhbmUpO1xuICAgIH0gZWxzZSBpZiAoZXZ0LmtleSA9PSAnVGFiJykge1xuICAgICAgaWYgKGV2dC5zaGlmdEtleSkge1xuICAgICAgICBjb25zdCBmaWxlcyA9IGl0ZW0uZmlsZXMgfHwgW107XG4gICAgICAgIGNvbnN0IHBkZlBhdGhzID0gZmlsZXMuZmlsdGVyKChwYXRoKSA9PlxuICAgICAgICAgIHBhdGgudG9Mb3dlckNhc2UoKS5lbmRzV2l0aCgncGRmJyksXG4gICAgICAgICk7XG4gICAgICAgIGlmIChwZGZQYXRocy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgIG5ldyBOb3RpY2UoJ1RoaXMgcmVmZXJlbmNlIGhhcyBubyBhc3NvY2lhdGVkIFBERiBmaWxlcy4nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvcGVuKGBmaWxlOi8vJHtwZGZQYXRoc1swXX1gKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3BlbihpdGVtLnpvdGVyb1NlbGVjdFVSSSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnNlcnROb3RlTGlua01vZGFsIGV4dGVuZHMgU2VhcmNoTW9kYWwge1xuICBjb25zdHJ1Y3RvcihhcHA6IEFwcCwgcGx1Z2luOiBDaXRhdGlvblBsdWdpbikge1xuICAgIHN1cGVyKGFwcCwgcGx1Z2luKTtcblxuICAgIHRoaXMuc2V0SW5zdHJ1Y3Rpb25zKFtcbiAgICAgIHsgY29tbWFuZDogJ+KGkeKGkycsIHB1cnBvc2U6ICd0byBuYXZpZ2F0ZScgfSxcbiAgICAgIHsgY29tbWFuZDogJ+KGtScsIHB1cnBvc2U6ICd0byBpbnNlcnQgbGl0ZXJhdHVyZSBub3RlIHJlZmVyZW5jZScgfSxcbiAgICAgIHsgY29tbWFuZDogJ2VzYycsIHB1cnBvc2U6ICd0byBkaXNtaXNzJyB9LFxuICAgIF0pO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBvbkNob29zZUl0ZW0oaXRlbTogRW50cnksIGV2dDogdW5rbm93bik6IHZvaWQge1xuICAgIHRoaXMucGx1Z2luLmluc2VydExpdGVyYXR1cmVOb3RlTGluayhpdGVtLmlkKS5jYXRjaChjb25zb2xlLmVycm9yKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW5zZXJ0Tm90ZUNvbnRlbnRNb2RhbCBleHRlbmRzIFNlYXJjaE1vZGFsIHtcbiAgY29uc3RydWN0b3IoYXBwOiBBcHAsIHBsdWdpbjogQ2l0YXRpb25QbHVnaW4pIHtcbiAgICBzdXBlcihhcHAsIHBsdWdpbik7XG5cbiAgICB0aGlzLnNldEluc3RydWN0aW9ucyhbXG4gICAgICB7IGNvbW1hbmQ6ICfihpHihpMnLCBwdXJwb3NlOiAndG8gbmF2aWdhdGUnIH0sXG4gICAgICB7XG4gICAgICAgIGNvbW1hbmQ6ICfihrUnLFxuICAgICAgICBwdXJwb3NlOiAndG8gaW5zZXJ0IGxpdGVyYXR1cmUgbm90ZSBjb250ZW50IGluIGFjdGl2ZSBwYW5lJyxcbiAgICAgIH0sXG4gICAgICB7IGNvbW1hbmQ6ICdlc2MnLCBwdXJwb3NlOiAndG8gZGlzbWlzcycgfSxcbiAgICBdKTtcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgb25DaG9vc2VJdGVtKGl0ZW06IEVudHJ5LCBldnQ6IHVua25vd24pOiB2b2lkIHtcbiAgICB0aGlzLnBsdWdpbi5pbnNlcnRMaXRlcmF0dXJlTm90ZUNvbnRlbnQoaXRlbS5pZCkuY2F0Y2goY29uc29sZS5lcnJvcik7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEluc2VydENpdGF0aW9uTW9kYWwgZXh0ZW5kcyBTZWFyY2hNb2RhbCB7XG4gIGNvbnN0cnVjdG9yKGFwcDogQXBwLCBwbHVnaW46IENpdGF0aW9uUGx1Z2luKSB7XG4gICAgc3VwZXIoYXBwLCBwbHVnaW4pO1xuXG4gICAgdGhpcy5zZXRJbnN0cnVjdGlvbnMoW1xuICAgICAgeyBjb21tYW5kOiAn4oaR4oaTJywgcHVycG9zZTogJ3RvIG5hdmlnYXRlJyB9LFxuICAgICAgeyBjb21tYW5kOiAn4oa1JywgcHVycG9zZTogJ3RvIGluc2VydCBNYXJrZG93biBjaXRhdGlvbicgfSxcbiAgICAgIHsgY29tbWFuZDogJ3NoaWZ0IOKGtScsIHB1cnBvc2U6ICd0byBpbnNlcnQgc2Vjb25kYXJ5IE1hcmtkb3duIGNpdGF0aW9uJyB9LFxuICAgICAgeyBjb21tYW5kOiAnZXNjJywgcHVycG9zZTogJ3RvIGRpc21pc3MnIH0sXG4gICAgXSk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIG9uQ2hvb3NlSXRlbShpdGVtOiBFbnRyeSwgZXZ0OiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlzQWx0ZXJuYXRpdmUgPSBldnQgaW5zdGFuY2VvZiBLZXlib2FyZEV2ZW50ICYmIGV2dC5zaGlmdEtleTtcbiAgICB0aGlzLnBsdWdpblxuICAgICAgLmluc2VydE1hcmtkb3duQ2l0YXRpb24oaXRlbS5pZCwgaXNBbHRlcm5hdGl2ZSlcbiAgICAgIC5jYXRjaChjb25zb2xlLmVycm9yKTtcbiAgfVxufVxuIiwiLypcbiAqIEdlbmVyYXRlZCBieSBQRUcuanMgMC4xMC4wLlxuICpcbiAqIGh0dHA6Ly9wZWdqcy5vcmcvXG4gKi9cblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIHBlZyRzdWJjbGFzcyhjaGlsZCwgcGFyZW50KSB7XG4gIGZ1bmN0aW9uIGN0b3IoKSB7IHRoaXMuY29uc3RydWN0b3IgPSBjaGlsZDsgfVxuICBjdG9yLnByb3RvdHlwZSA9IHBhcmVudC5wcm90b3R5cGU7XG4gIGNoaWxkLnByb3RvdHlwZSA9IG5ldyBjdG9yKCk7XG59XG5cbmZ1bmN0aW9uIHBlZyRTeW50YXhFcnJvcihtZXNzYWdlLCBleHBlY3RlZCwgZm91bmQsIGxvY2F0aW9uKSB7XG4gIHRoaXMubWVzc2FnZSAgPSBtZXNzYWdlO1xuICB0aGlzLmV4cGVjdGVkID0gZXhwZWN0ZWQ7XG4gIHRoaXMuZm91bmQgICAgPSBmb3VuZDtcbiAgdGhpcy5sb2NhdGlvbiA9IGxvY2F0aW9uO1xuICB0aGlzLm5hbWUgICAgID0gXCJTeW50YXhFcnJvclwiO1xuXG4gIGlmICh0eXBlb2YgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHBlZyRTeW50YXhFcnJvcik7XG4gIH1cbn1cblxucGVnJHN1YmNsYXNzKHBlZyRTeW50YXhFcnJvciwgRXJyb3IpO1xuXG5wZWckU3ludGF4RXJyb3IuYnVpbGRNZXNzYWdlID0gZnVuY3Rpb24oZXhwZWN0ZWQsIGZvdW5kKSB7XG4gIHZhciBERVNDUklCRV9FWFBFQ1RBVElPTl9GTlMgPSB7XG4gICAgICAgIGxpdGVyYWw6IGZ1bmN0aW9uKGV4cGVjdGF0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIFwiXFxcIlwiICsgbGl0ZXJhbEVzY2FwZShleHBlY3RhdGlvbi50ZXh0KSArIFwiXFxcIlwiO1xuICAgICAgICB9LFxuXG4gICAgICAgIFwiY2xhc3NcIjogZnVuY3Rpb24oZXhwZWN0YXRpb24pIHtcbiAgICAgICAgICB2YXIgZXNjYXBlZFBhcnRzID0gXCJcIixcbiAgICAgICAgICAgICAgaTtcblxuICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBleHBlY3RhdGlvbi5wYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZXNjYXBlZFBhcnRzICs9IGV4cGVjdGF0aW9uLnBhcnRzW2ldIGluc3RhbmNlb2YgQXJyYXlcbiAgICAgICAgICAgICAgPyBjbGFzc0VzY2FwZShleHBlY3RhdGlvbi5wYXJ0c1tpXVswXSkgKyBcIi1cIiArIGNsYXNzRXNjYXBlKGV4cGVjdGF0aW9uLnBhcnRzW2ldWzFdKVxuICAgICAgICAgICAgICA6IGNsYXNzRXNjYXBlKGV4cGVjdGF0aW9uLnBhcnRzW2ldKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gXCJbXCIgKyAoZXhwZWN0YXRpb24uaW52ZXJ0ZWQgPyBcIl5cIiA6IFwiXCIpICsgZXNjYXBlZFBhcnRzICsgXCJdXCI7XG4gICAgICAgIH0sXG5cbiAgICAgICAgYW55OiBmdW5jdGlvbihleHBlY3RhdGlvbikge1xuICAgICAgICAgIHJldHVybiBcImFueSBjaGFyYWN0ZXJcIjtcbiAgICAgICAgfSxcblxuICAgICAgICBlbmQ6IGZ1bmN0aW9uKGV4cGVjdGF0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIFwiZW5kIG9mIGlucHV0XCI7XG4gICAgICAgIH0sXG5cbiAgICAgICAgb3RoZXI6IGZ1bmN0aW9uKGV4cGVjdGF0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIGV4cGVjdGF0aW9uLmRlc2NyaXB0aW9uO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gIGZ1bmN0aW9uIGhleChjaCkge1xuICAgIHJldHVybiBjaC5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO1xuICB9XG5cbiAgZnVuY3Rpb24gbGl0ZXJhbEVzY2FwZShzKSB7XG4gICAgcmV0dXJuIHNcbiAgICAgIC5yZXBsYWNlKC9cXFxcL2csICdcXFxcXFxcXCcpXG4gICAgICAucmVwbGFjZSgvXCIvZywgICdcXFxcXCInKVxuICAgICAgLnJlcGxhY2UoL1xcMC9nLCAnXFxcXDAnKVxuICAgICAgLnJlcGxhY2UoL1xcdC9nLCAnXFxcXHQnKVxuICAgICAgLnJlcGxhY2UoL1xcbi9nLCAnXFxcXG4nKVxuICAgICAgLnJlcGxhY2UoL1xcci9nLCAnXFxcXHInKVxuICAgICAgLnJlcGxhY2UoL1tcXHgwMC1cXHgwRl0vZywgICAgICAgICAgZnVuY3Rpb24oY2gpIHsgcmV0dXJuICdcXFxceDAnICsgaGV4KGNoKTsgfSlcbiAgICAgIC5yZXBsYWNlKC9bXFx4MTAtXFx4MUZcXHg3Ri1cXHg5Rl0vZywgZnVuY3Rpb24oY2gpIHsgcmV0dXJuICdcXFxceCcgICsgaGV4KGNoKTsgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBjbGFzc0VzY2FwZShzKSB7XG4gICAgcmV0dXJuIHNcbiAgICAgIC5yZXBsYWNlKC9cXFxcL2csICdcXFxcXFxcXCcpXG4gICAgICAucmVwbGFjZSgvXFxdL2csICdcXFxcXScpXG4gICAgICAucmVwbGFjZSgvXFxeL2csICdcXFxcXicpXG4gICAgICAucmVwbGFjZSgvLS9nLCAgJ1xcXFwtJylcbiAgICAgIC5yZXBsYWNlKC9cXDAvZywgJ1xcXFwwJylcbiAgICAgIC5yZXBsYWNlKC9cXHQvZywgJ1xcXFx0JylcbiAgICAgIC5yZXBsYWNlKC9cXG4vZywgJ1xcXFxuJylcbiAgICAgIC5yZXBsYWNlKC9cXHIvZywgJ1xcXFxyJylcbiAgICAgIC5yZXBsYWNlKC9bXFx4MDAtXFx4MEZdL2csICAgICAgICAgIGZ1bmN0aW9uKGNoKSB7IHJldHVybiAnXFxcXHgwJyArIGhleChjaCk7IH0pXG4gICAgICAucmVwbGFjZSgvW1xceDEwLVxceDFGXFx4N0YtXFx4OUZdL2csIGZ1bmN0aW9uKGNoKSB7IHJldHVybiAnXFxcXHgnICArIGhleChjaCk7IH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZGVzY3JpYmVFeHBlY3RhdGlvbihleHBlY3RhdGlvbikge1xuICAgIHJldHVybiBERVNDUklCRV9FWFBFQ1RBVElPTl9GTlNbZXhwZWN0YXRpb24udHlwZV0oZXhwZWN0YXRpb24pO1xuICB9XG5cbiAgZnVuY3Rpb24gZGVzY3JpYmVFeHBlY3RlZChleHBlY3RlZCkge1xuICAgIHZhciBkZXNjcmlwdGlvbnMgPSBuZXcgQXJyYXkoZXhwZWN0ZWQubGVuZ3RoKSxcbiAgICAgICAgaSwgajtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBleHBlY3RlZC5sZW5ndGg7IGkrKykge1xuICAgICAgZGVzY3JpcHRpb25zW2ldID0gZGVzY3JpYmVFeHBlY3RhdGlvbihleHBlY3RlZFtpXSk7XG4gICAgfVxuXG4gICAgZGVzY3JpcHRpb25zLnNvcnQoKTtcblxuICAgIGlmIChkZXNjcmlwdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChpID0gMSwgaiA9IDE7IGkgPCBkZXNjcmlwdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGRlc2NyaXB0aW9uc1tpIC0gMV0gIT09IGRlc2NyaXB0aW9uc1tpXSkge1xuICAgICAgICAgIGRlc2NyaXB0aW9uc1tqXSA9IGRlc2NyaXB0aW9uc1tpXTtcbiAgICAgICAgICBqKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGRlc2NyaXB0aW9ucy5sZW5ndGggPSBqO1xuICAgIH1cblxuICAgIHN3aXRjaCAoZGVzY3JpcHRpb25zLmxlbmd0aCkge1xuICAgICAgY2FzZSAxOlxuICAgICAgICByZXR1cm4gZGVzY3JpcHRpb25zWzBdO1xuXG4gICAgICBjYXNlIDI6XG4gICAgICAgIHJldHVybiBkZXNjcmlwdGlvbnNbMF0gKyBcIiBvciBcIiArIGRlc2NyaXB0aW9uc1sxXTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0aW9ucy5zbGljZSgwLCAtMSkuam9pbihcIiwgXCIpXG4gICAgICAgICAgKyBcIiwgb3IgXCJcbiAgICAgICAgICArIGRlc2NyaXB0aW9uc1tkZXNjcmlwdGlvbnMubGVuZ3RoIC0gMV07XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZGVzY3JpYmVGb3VuZChmb3VuZCkge1xuICAgIHJldHVybiBmb3VuZCA/IFwiXFxcIlwiICsgbGl0ZXJhbEVzY2FwZShmb3VuZCkgKyBcIlxcXCJcIiA6IFwiZW5kIG9mIGlucHV0XCI7XG4gIH1cblxuICByZXR1cm4gXCJFeHBlY3RlZCBcIiArIGRlc2NyaWJlRXhwZWN0ZWQoZXhwZWN0ZWQpICsgXCIgYnV0IFwiICsgZGVzY3JpYmVGb3VuZChmb3VuZCkgKyBcIiBmb3VuZC5cIjtcbn07XG5cbmZ1bmN0aW9uIHBlZyRwYXJzZShpbnB1dCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyAhPT0gdm9pZCAwID8gb3B0aW9ucyA6IHt9O1xuXG4gIHZhciBwZWckRkFJTEVEID0ge30sXG5cbiAgICAgIHBlZyRzdGFydFJ1bGVGdW5jdGlvbnMgPSB7IEJpYmxpb2dyYXBoeTogcGVnJHBhcnNlQmlibGlvZ3JhcGh5IH0sXG4gICAgICBwZWckc3RhcnRSdWxlRnVuY3Rpb24gID0gcGVnJHBhcnNlQmlibGlvZ3JhcGh5LFxuXG4gICAgICBwZWckYzAgPSBmdW5jdGlvbihyKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtpbmQ6ICdCaWJsaW9ncmFwaHknLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICBjaGlsZHJlbjogcixcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICBwZWckYzEgPSBcIkBcIixcbiAgICAgIHBlZyRjMiA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJAXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjMyA9IFwiY29tbWVudFwiLFxuICAgICAgcGVnJGM0ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcImNvbW1lbnRcIiwgdHJ1ZSksXG4gICAgICBwZWckYzUgPSBmdW5jdGlvbih2KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtpbmQ6ICdCcmFjZWRDb21tZW50JyxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgdmFsdWU6IHYuc2xpY2UoMSwgLTEpLFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjNiA9IC9eW15cXG5cXHJdLyxcbiAgICAgIHBlZyRjNyA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIlxcblwiLCBcIlxcclwiXSwgdHJ1ZSwgZmFsc2UpLFxuICAgICAgcGVnJGM4ID0gL15bXFxuXFxyXS8sXG4gICAgICBwZWckYzkgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCJcXG5cIiwgXCJcXHJcIl0sIGZhbHNlLCBmYWxzZSksXG4gICAgICBwZWckYzEwID0gZnVuY3Rpb24odikge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBraW5kOiAnTGluZUNvbW1lbnQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICB2YWx1ZTogbm9ybWFsaXplV2hpdGVzcGFjZSh2KSxcbiAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgIHBlZyRjMTEgPSAvXlteQF0vLFxuICAgICAgcGVnJGMxMiA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIkBcIl0sIHRydWUsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTMgPSBmdW5jdGlvbih2KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtpbmQ6ICdOb25FbnRyeVRleHQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICB2YWx1ZTogbm9ybWFsaXplV2hpdGVzcGFjZSh2KSxcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICBwZWckYzE0ID0gZnVuY3Rpb24obikgeyByZXR1cm4gbjsgfSxcbiAgICAgIHBlZyRjMTUgPSBcIntcIixcbiAgICAgIHBlZyRjMTYgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwie1wiLCBmYWxzZSksXG4gICAgICBwZWckYzE3ID0gL15bXnt9XS8sXG4gICAgICBwZWckYzE4ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1wie1wiLCBcIn1cIl0sIHRydWUsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTkgPSBcIn1cIixcbiAgICAgIHBlZyRjMjAgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwifVwiLCBmYWxzZSksXG4gICAgICBwZWckYzIxID0gZnVuY3Rpb24oY29tbWVudCkgeyByZXR1cm4gJ3snICsgY29tbWVudC5qb2luKCcnKSArICd9JyB9LFxuICAgICAgcGVnJGMyMiA9IC9eW0EtWmEtel0vLFxuICAgICAgcGVnJGMyMyA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtbXCJBXCIsIFwiWlwiXSwgW1wiYVwiLCBcInpcIl1dLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgcGVnJGMyNCA9IC9eWyh7XS8sXG4gICAgICBwZWckYzI1ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1wiKFwiLCBcIntcIl0sIGZhbHNlLCBmYWxzZSksXG4gICAgICBwZWckYzI2ID0gL15bfSldLyxcbiAgICAgIHBlZyRjMjcgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCJ9XCIsIFwiKVwiXSwgZmFsc2UsIGZhbHNlKSxcbiAgICAgIHBlZyRjMjggPSBmdW5jdGlvbih0eXBlLCBpZCwgZmllbGRzKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtpbmQ6ICdFbnRyeScsXG4gICAgICAgICAgICBpZDogaWQgfHwgJycsXG4gICAgICAgICAgICB0eXBlOiB0eXBlLnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIGZpZWxkczogZmllbGRzLFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjMjkgPSBcInByZWFtYmxlXCIsXG4gICAgICBwZWckYzMwID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcInByZWFtYmxlXCIsIHRydWUpLFxuICAgICAgcGVnJGMzMSA9IGZ1bmN0aW9uKG9wZW5lciwgdiwgY2xvc2VyKSB7XG4gICAgICAgICAgc3dpdGNoIChvcGVuZXIgKyBjbG9zZXIpIHtcbiAgICAgICAgICAgIGNhc2UgJ3t9JzpcbiAgICAgICAgICAgIGNhc2UgJygpJzpcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5iYWxhbmNlZCBvcGVuZXItY2xvc2VyIGZvciBwcmVhbWJsZTogJHtvcGVuZXJ9Li4uJHtjbG9zZXJ9YClcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtpbmQ6ICdQcmVhbWJsZUV4cHJlc3Npb24nLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICB2YWx1ZTogdi5yZWR1Y2UoKGEsIGIpID0+IGEuY29uY2F0KGIpLCBbXSksXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgcGVnJGMzMiA9IFwic3RyaW5nXCIsXG4gICAgICBwZWckYzMzID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcInN0cmluZ1wiLCB0cnVlKSxcbiAgICAgIHBlZyRjMzQgPSBmdW5jdGlvbihrLCB2KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtpbmQ6ICdTdHJpbmdEZWNsYXJhdGlvbicsXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIG5hbWU6IGssXG4gICAgICAgICAgICB2YWx1ZTogdi5yZWR1Y2UoKGEsIGIpID0+IGEuY29uY2F0KGIpLCBbXSksXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgcGVnJGMzNSA9IC9eW14gXFx0XFxyXFxuLF0vLFxuICAgICAgcGVnJGMzNiA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIiBcIiwgXCJcXHRcIiwgXCJcXHJcIiwgXCJcXG5cIiwgXCIsXCJdLCB0cnVlLCBmYWxzZSksXG4gICAgICBwZWckYzM3ID0gXCIsXCIsXG4gICAgICBwZWckYzM4ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIixcIiwgZmFsc2UpLFxuICAgICAgcGVnJGMzOSA9IGZ1bmN0aW9uKGlkKSB7IHJldHVybiBpZDsgfSxcbiAgICAgIHBlZyRjNDAgPSBmdW5jdGlvbihuYW1lKSB7IHJldHVybiBpc1ZlcmJhdGltRmllbGQobmFtZSkgJiYgdW5uZXN0RmllbGRzLmluY2x1ZGVzKG5hbWUpIH0sXG4gICAgICBwZWckYzQxID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgICAgICAgICAvLyBiZWNhdXNlIHRoaXMgd2FzIGFidXNlZCBzbyBtdWNoLCBtYW55IHByb2Nlc3NvcnMgdHJlYXQgZG91YmxlLW91dGVyLWJyYWNlcyBhcyBzaW5nbGVcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogJ0ZpZWxkJyxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHZhbHVlOiBbIHByb3RlY3QodmFsdWUpIF1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICBwZWckYzQyID0gZnVuY3Rpb24obmFtZSkgeyByZXR1cm4gaXNWZXJiYXRpbUZpZWxkKG5hbWUpIH0sXG4gICAgICBwZWckYzQzID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogJ0ZpZWxkJyxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHZhbHVlOiBbIHByb3RlY3QodmFsdWUpIF1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICBwZWckYzQ0ID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgICAgICAgICAvLyBiZWNhdXNlIHRoaXMgd2FzIGFidXNlZCBzbyBtdWNoLCBtYW55IHByb2Nlc3NvcnMgdHJlYXQgZG91YmxlLW91dGVyLWJyYWNlcyBhcyBzaW5nbGVcbiAgICAgICAgICBpZiAodW5uZXN0RmllbGRzLmluY2x1ZGVzKG5hbWUpICYmIEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMSAmJiB2YWx1ZVswXS5raW5kID09PSAnQmxvY2snKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy51bm5lc3RNb2RlID09PSAncHJlc2VydmUnKSB7XG4gICAgICAgICAgICAgIHZhbHVlWzBdLmNhc2UgPSAncHJlc2VydmUnXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlWzBdLnZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGhhbmRsZV9tYXJrdXBfc3dpdGNoZXMoe1xuICAgICAgICAgICAga2luZDogJ0ZpZWxkJyxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgcGVnJGM0NSA9IC9eW186YS16QS1aMC05XFwtXS8sXG4gICAgICBwZWckYzQ2ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1wiX1wiLCBcIjpcIiwgW1wiYVwiLCBcInpcIl0sIFtcIkFcIiwgXCJaXCJdLCBbXCIwXCIsIFwiOVwiXSwgXCItXCJdLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgcGVnJGM0NyA9IGZ1bmN0aW9uKG5hbWUpIHsgcmV0dXJuIG5hbWUudG9Mb3dlckNhc2UoKSB9LFxuICAgICAgcGVnJGM0OCA9IFwiXFxcIlwiLFxuICAgICAgcGVnJGM0OSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJcXFwiXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjNTAgPSBmdW5jdGlvbih2KSB7XG4gICAgICAgICAgdiA9IHYgfHwge1xuICAgICAgICAgICAga2luZDogJ1RleHQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgfVxuICAgICAgICAgIHYubW9kZSA9ICd2ZXJiYXRpbSdcbiAgICAgICAgICByZXR1cm4gYmFzaWNUZXh0Q29udmVyc2lvbnModilcbiAgICAgICAgfSxcbiAgICAgIHBlZyRjNTEgPSBmdW5jdGlvbih2KSB7XG4gICAgICAgICAgcmV0dXJuIGJhc2ljVGV4dENvbnZlcnNpb25zKHtcbiAgICAgICAgICAgIGtpbmQ6ICdUZXh0JyxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgdmFsdWU6IHYuam9pbignJykudHJpbSgpLFxuICAgICAgICAgICAgbW9kZTogJ3ZlcmJhdGltJyxcbiAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgcGVnJGM1MiA9IGZ1bmN0aW9uKHYpIHsgcmV0dXJuIHYgfSxcbiAgICAgIHBlZyRjNTMgPSBmdW5jdGlvbih2KSB7IHJldHVybiAneycgKyB2LmpvaW4oJycpICsgJ30nIH0sXG4gICAgICBwZWckYzU0ID0gZnVuY3Rpb24oKSB7IHJldHVybiBtYXRoLnNldChmYWxzZSkgfSxcbiAgICAgIHBlZyRjNTUgPSBmdW5jdGlvbih2KSB7XG4gICAgICAgICAgcmV0dXJuIHYucmVkdWNlKChhLCBiKSA9PiBhLmNvbmNhdChiKSwgW10pO1xuICAgICAgICB9LFxuICAgICAgcGVnJGM1NiA9IGZ1bmN0aW9uKHYpIHsgcmV0dXJuIHY7IH0sXG4gICAgICBwZWckYzU3ID0gXCJ7XFxcXHZlcmJcIixcbiAgICAgIHBlZyRjNTggPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwie1xcXFx2ZXJiXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjNTkgPSAvXlthLXpBLVpdLyxcbiAgICAgIHBlZyRjNjAgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbW1wiYVwiLCBcInpcIl0sIFtcIkFcIiwgXCJaXCJdXSwgZmFsc2UsIGZhbHNlKSxcbiAgICAgIHBlZyRjNjEgPSAvXlteXFxeXyR7fVxcXFxdLyxcbiAgICAgIHBlZyRjNjIgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCJeXCIsIFwiX1wiLCBcIiRcIiwgXCJ7XCIsIFwifVwiLCBcIlxcXFxcIl0sIHRydWUsIGZhbHNlKSxcbiAgICAgIHBlZyRjNjMgPSBmdW5jdGlvbih2KSB7XG4gICAgICAgICAgcmV0dXJuIGJhc2ljVGV4dENvbnZlcnNpb25zKHtcbiAgICAgICAgICAgIGtpbmQ6ICdUZXh0JyxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgdmFsdWU6IG5vcm1hbGl6ZVdoaXRlc3BhY2UodiksXG4gICAgICAgICAgICBtb2RlOiBtYXRoLm9uID8gJ21hdGgnIDogJ3RleHQnLFxuICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICBwZWckYzY0ID0gL15bXlxcXl8ke31cIlxcXFxdLyxcbiAgICAgIHBlZyRjNjUgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCJeXCIsIFwiX1wiLCBcIiRcIiwgXCJ7XCIsIFwifVwiLCBcIlxcXCJcIiwgXCJcXFxcXCJdLCB0cnVlLCBmYWxzZSksXG4gICAgICBwZWckYzY2ID0gL15bMC05XS8sXG4gICAgICBwZWckYzY3ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1tcIjBcIiwgXCI5XCJdXSwgZmFsc2UsIGZhbHNlKSxcbiAgICAgIHBlZyRjNjggPSBmdW5jdGlvbih2KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtpbmQ6ICdOdW1iZXInLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICB2YWx1ZTogcGFyc2VJbnQodiwgMTApLFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjNjkgPSBmdW5jdGlvbih2KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtpbmQ6ICdTdHJpbmdSZWZlcmVuY2UnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICBuYW1lOiB2LFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjNzAgPSBcIlxcXFxiZWdpbntcIixcbiAgICAgIHBlZyRjNzEgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiXFxcXGJlZ2lue1wiLCBmYWxzZSksXG4gICAgICBwZWckYzcyID0gL15bYS16QS1aMC05XS8sXG4gICAgICBwZWckYzczID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1tcImFcIiwgXCJ6XCJdLCBbXCJBXCIsIFwiWlwiXSwgW1wiMFwiLCBcIjlcIl1dLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgcGVnJGM3NCA9IFwiXFxcXGVuZHtcIixcbiAgICAgIHBlZyRjNzUgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiXFxcXGVuZHtcIiwgZmFsc2UpLFxuICAgICAgcGVnJGM3NiA9IGZ1bmN0aW9uKGVudiwgdiwgY2VudikgeyByZXR1cm4gZW52ID09PSBjZW52IH0sXG4gICAgICBwZWckYzc3ID0gZnVuY3Rpb24oZW52LCB2LCBjZW52KSB7XG4gICAgICAgICAgaWYgKG1hcmt1cFtlbnZdKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBraW5kOiAnQmxvY2snLFxuICAgICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgICB2YWx1ZTogdixcbiAgICAgICAgICAgICAgbWFya3VwOiB7IFttYXJrdXBbZW52XV06IHRydWUgfSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAga2luZDogJ0Vudmlyb25tZW50JyxcbiAgICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgICAgdmFsdWU6IHYsXG4gICAgICAgICAgICAgIGVudjogZW52LFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjNzggPSBcIntcXFxcXCIsXG4gICAgICBwZWckYzc5ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIntcXFxcXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjODAgPSBcIlxcXFxcIixcbiAgICAgIHBlZyRjODEgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiXFxcXFwiLCBmYWxzZSksXG4gICAgICBwZWckYzgyID0gL15baWpdLyxcbiAgICAgIHBlZyRjODMgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCJpXCIsIFwialwiXSwgZmFsc2UsIGZhbHNlKSxcbiAgICAgIHBlZyRjODQgPSBmdW5jdGlvbihtYXJrLCBjaGFyKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtpbmQ6ICdEaWFjcml0aWNDb21tYW5kJyxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgbWFyazogbWFyayxcbiAgICAgICAgICAgIGRvdGxlc3M6ICEhY2hhclsxXSxcbiAgICAgICAgICAgIGNoYXJhY3RlcjogY2hhclsxXSB8fCBjaGFyWzBdLFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjODUgPSBmdW5jdGlvbih2KSB7XG4gICAgICAgICAgICByZXR1cm4gYmFzaWNUZXh0Q29udmVyc2lvbnMoe1xuICAgICAgICAgICAgICBraW5kOiAnVGV4dCcsXG4gICAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICAgIHZhbHVlOiB2LmpvaW4oJycpLnRyaW0oKSxcbiAgICAgICAgICAgICAgbW9kZTogJ3ZlcmJhdGltJyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICBwZWckYzg2ID0gZnVuY3Rpb24odikge1xuICAgICAgICAgIGNvbnN0IGJsb2NrID0ge1xuICAgICAgICAgICAga2luZDogJ0Jsb2NrJyxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgdmFsdWU6IHYsXG4gICAgICAgICAgICBtYXJrdXA6IHt9LFxuICAgICAgICAgICAgY2FzZTogJ3Byb3RlY3QnLFxuICAgICAgICAgIH1cblxuICAgICAgICAgIGxldCBsZWFkaW5nY21kID0gYmxvY2sudmFsdWUubGVuZ3RoICYmIChibG9jay52YWx1ZVswXS5raW5kLmVuZHNXaXRoKCdDb21tYW5kJykgfHwgYmxvY2sudmFsdWVbMF0ua2luZCA9PT0gJ0Vudmlyb25tZW50JykgPyBibG9jay52YWx1ZVswXSA6IG51bGxcbiAgICAgICAgICBsZXQgbGVhZGluZ2NtZGJsb2NrYXJnID0gbGVhZGluZ2NtZFxuICAgICAgICAgICAgJiYgbGVhZGluZ2NtZC5raW5kID09PSAnUmVndWxhckNvbW1hbmQnXG4gICAgICAgICAgICAmJiBsZWFkaW5nY21kLmFyZ3VtZW50cy5yZXF1aXJlZC5sZW5ndGhcbiAgICAgICAgICAgICYmIGxlYWRpbmdjbWQuYXJndW1lbnRzLnJlcXVpcmVkWzBdLmtpbmQgPT09ICdCbG9jaydcbiAgICAgICAgICAgICYmIGxlYWRpbmdjbWQuYXJndW1lbnRzLnJlcXVpcmVkWzBdXG5cbiAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vcmV0b3JxdWVyZS96b3Rlcm8tYmV0dGVyLWJpYnRleC9pc3N1ZXMvNTQxI2lzc3VlY29tbWVudC0yNDAxNTYyNzRcbiAgICAgICAgICBpZiAobGVhZGluZ2NtZCkge1xuICAgICAgICAgICAgZGVsZXRlIGJsb2NrLmNhc2VcblxuICAgICAgICAgICAgLy8gY29tbWFuZCB3aXRoIGEgYmxvY2sgY2FuY2VscyBvdXQgY2FzZSBwcm90ZWN0aW9uIHdpdGggY29udGFpbmluZyBibG9ja1xuICAgICAgICAgICAgLy8gaWYgYSBzbWFsbGNhcHMgYmxvY2sgaGFzIHNldCBjYXNlIHRvICdwcmVzZXJ2ZScgd2Ugd2FudCB0byBrZWVwIHRoaXNcbiAgICAgICAgICAgIGlmIChsZWFkaW5nY21kYmxvY2thcmcgJiYgbGVhZGluZ2NtZGJsb2NrYXJnLmNhc2UgPT09ICdwcm90ZWN0JykgZGVsZXRlIGxlYWRpbmdjbWRibG9ja2FyZy5jYXNlXG5cbiAgICAgICAgICAgIC8vIFxcc2wsIFxcaXQgZXRjXG4gICAgICAgICAgICBpZiAobWFya3VwW2xlYWRpbmdjbWQuY29tbWFuZF0pIHtcbiAgICAgICAgICAgICAgYmxvY2subWFya3VwW21hcmt1cFtsZWFkaW5nY21kLmNvbW1hbmRdXSA9IHRydWVcbiAgICAgICAgICAgICAgYmxvY2sudmFsdWUuc2hpZnQoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBoYW5kbGVfbWFya3VwX3N3aXRjaGVzKGJsb2NrKVxuICAgICAgICB9LFxuICAgICAgcGVnJGM4NyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gIW1hdGgub24gfSxcbiAgICAgIHBlZyRjODggPSBcIiRcIixcbiAgICAgIHBlZyRjODkgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiJFwiLCBmYWxzZSksXG4gICAgICBwZWckYzkwID0gXCIkJFwiLFxuICAgICAgcGVnJGM5MSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCIkJFwiLCBmYWxzZSksXG4gICAgICBwZWckYzkyID0gZnVuY3Rpb24obW9kZSkgeyByZXR1cm4gbWF0aC5zZXQodHJ1ZSkgfSxcbiAgICAgIHBlZyRjOTMgPSBmdW5jdGlvbihtb2RlLCB2KSB7IHJldHVybiBtYXRoLnNldChmYWxzZSkgfSxcbiAgICAgIHBlZyRjOTQgPSBmdW5jdGlvbihtb2RlLCB2KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtpbmQ6IG1vZGUgPT0gJyQkJyA/ICdEaXNwbGF5TWF0aCcgOiAnSW5saW5lTWF0aCcsXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIHZhbHVlOiB2LFxuICAgICAgICAgICAgY2FzZTogJ3Byb3RlY3QnLFxuICAgICAgICAgICAgbWFya3VwOiB7fSxcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICBwZWckYzk1ID0gXCIlXCIsXG4gICAgICBwZWckYzk2ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIiVcIiwgZmFsc2UpLFxuICAgICAgcGVnJGM5NyA9IC9eW15cXHJcXG5dLyxcbiAgICAgIHBlZyRjOTggPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCJcXHJcIiwgXCJcXG5cIl0sIHRydWUsIGZhbHNlKSxcbiAgICAgIHBlZyRjOTkgPSBmdW5jdGlvbih2KSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtpbmQ6ICdMaW5lQ29tbWVudCcsXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIHZhbHVlOiB2LFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjMTAwID0gL15bX1xcXl0vLFxuICAgICAgcGVnJGMxMDEgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCJfXCIsIFwiXlwiXSwgZmFsc2UsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTAyID0gZnVuY3Rpb24obW9kZSwgdikge1xuICAgICAgICAgIGlmICh2LmtpbmQgPT09ICdCbG9jaycpIHYgPSB2LnZhbHVlXG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogbW9kZSA9PT0gJ18nID8gJ1N1YnNjcmlwdENvbW1hbmQnIDogJ1N1cGVyc2NyaXB0Q29tbWFuZCcsXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIHZhbHVlOiB2LFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjMTAzID0gZnVuY3Rpb24obWFyaywgdikge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBraW5kOiAnUmVndWxhckNvbW1hbmQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICBjb21tYW5kOiBtYXJrLFxuICAgICAgICAgICAgYXJndW1lbnRzOiB7XG4gICAgICAgICAgICAgIG9wdGlvbmFsOiBbXSxcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IFsgcHJvdGVjdCh2KSBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICBwZWckYzEwNCA9IC9eW15BLVphLXowLTlcXHRcXHJcXG5dLyxcbiAgICAgIHBlZyRjMTA1ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1tcIkFcIiwgXCJaXCJdLCBbXCJhXCIsIFwielwiXSwgW1wiMFwiLCBcIjlcIl0sIFwiXFx0XCIsIFwiXFxyXCIsIFwiXFxuXCJdLCB0cnVlLCBmYWxzZSksXG4gICAgICBwZWckYzEwNiA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogJ1N5bWJvbENvbW1hbmQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICBjb21tYW5kOiB2LFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIHBlZyRjMTA3ID0gXCJuZXdjb21tYW5kXCIsXG4gICAgICBwZWckYzEwOCA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJuZXdjb21tYW5kXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTA5ID0gZnVuY3Rpb24oY21kLCBuYW1lKSB7IHJldHVybiBuYW1lLnZhbHVlLmxlbmd0aCA9PSAxICYmIG5hbWUudmFsdWVbMF0ua2luZCA9PT0gJ1JlZ3VsYXJDb21tYW5kJyB9LFxuICAgICAgcGVnJGMxMTAgPSBmdW5jdGlvbihjbWQsIG5hbWUsIG9wdGlvbmFsLCBkZWYpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogJ1JlZ3VsYXJDb21tYW5kJyxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgY29tbWFuZDogY21kLFxuICAgICAgICAgICAgYXJndW1lbnRzOiB7XG4gICAgICAgICAgICAgIG9wdGlvbmFsOiBbXSxcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IFtuYW1lLCBkZWZdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICBwZWckYzExMSA9IFwiYmVnaW5cIixcbiAgICAgIHBlZyRjMTEyID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcImJlZ2luXCIsIGZhbHNlKSxcbiAgICAgIHBlZyRjMTEzID0gXCJlbmRcIixcbiAgICAgIHBlZyRjMTE0ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcImVuZFwiLCBmYWxzZSksXG4gICAgICBwZWckYzExNSA9IGZ1bmN0aW9uKGNtZCkgeyByZXR1cm4gdmVyYmF0aW1Db21tYW5kcy5pbmNsdWRlcyhjbWQpICYmIChoYXNfYXJndW1lbnRzW2NtZF0gPT09IDIpIH0sXG4gICAgICBwZWckYzExNiA9IGZ1bmN0aW9uKGNtZCwgb3B0aW9uYWwsIHJlcTEsIHJlcTIpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogJ1JlZ3VsYXJDb21tYW5kJyxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgY29tbWFuZDogY21kLFxuICAgICAgICAgICAgYXJndW1lbnRzOiB7XG4gICAgICAgICAgICAgIG9wdGlvbmFsOiBvcHRpb25hbCxcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IFtwcm90ZWN0KHJlcTEpLCBwcm90ZWN0KHJlcTIpXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgcGVnJGMxMTcgPSBmdW5jdGlvbihjbWQpIHsgcmV0dXJuIHZlcmJhdGltQ29tbWFuZHMuaW5jbHVkZXMoY21kKSAmJiAoaGFzX2FyZ3VtZW50c1tjbWRdID09PSAxKSB9LFxuICAgICAgcGVnJGMxMTggPSBmdW5jdGlvbihjbWQsIG9wdGlvbmFsLCByZXEpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAga2luZDogJ1JlZ3VsYXJDb21tYW5kJyxcbiAgICAgICAgICAgIGxvYzogbG9jYXRpb24oKSxcbiAgICAgICAgICAgIHNvdXJjZTogdGV4dCgpLFxuICAgICAgICAgICAgY29tbWFuZDogY21kLFxuICAgICAgICAgICAgYXJndW1lbnRzOiB7XG4gICAgICAgICAgICAgIG9wdGlvbmFsOiBvcHRpb25hbCxcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IFtwcm90ZWN0KHJlcSldLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICBwZWckYzExOSA9IGZ1bmN0aW9uKGNtZCkgeyByZXR1cm4gKGhhc19hcmd1bWVudHNbY21kXSA9PT0gMikgfSxcbiAgICAgIHBlZyRjMTIwID0gZnVuY3Rpb24oY21kLCBvcHRpb25hbCwgcmVxMSwgcmVxMikge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBraW5kOiAnUmVndWxhckNvbW1hbmQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICBjb21tYW5kOiBjbWQsXG4gICAgICAgICAgICBhcmd1bWVudHM6IHtcbiAgICAgICAgICAgICAgb3B0aW9uYWw6IG9wdGlvbmFsLFxuICAgICAgICAgICAgICByZXF1aXJlZDogW3JlcTEsIHJlcTJdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICBwZWckYzEyMSA9IGZ1bmN0aW9uKGNtZCkgeyByZXR1cm4gKGhhc19hcmd1bWVudHNbY21kXSA9PT0gMSkgfSxcbiAgICAgIHBlZyRjMTIyID0gZnVuY3Rpb24oY21kLCBvcHRpb25hbCwgcmVxKSB7XG4gICAgICAgICAgbGV0IG1cbiAgICAgICAgICBpZiAocmVxLmtpbmQgPT09ICdCbG9jaycpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoY21kKSB7XG4gICAgICAgICAgICAgIGNhc2UgJ3RleHRzdXBlcnNjcmlwdCc6XG4gICAgICAgICAgICAgIGNhc2UgJ3NwJzpcbiAgICAgICAgICAgICAgICByZXEubWFya3VwLnN1cCA9IHRydWVcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICBjYXNlICd0ZXh0c3Vic2NyaXB0JzpcbiAgICAgICAgICAgICAgY2FzZSAnc2InOlxuICAgICAgICAgICAgICAgIHJlcS5tYXJrdXAuc3ViID0gdHJ1ZVxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIGNhc2UgJ3RleHRzYyc6XG4gICAgICAgICAgICAgICAgcmVxLm1hcmt1cC5zbWFsbENhcHMgPSB0cnVlXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgY2FzZSAnZW5xdW90ZSc6XG4gICAgICAgICAgICAgIGNhc2UgJ21rYmlicXVvdGUnOlxuICAgICAgICAgICAgICAgIHJlcS5tYXJrdXAuZW5xdW90ZSA9IHRydWVcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICBjYXNlICd0ZXh0YmYnOlxuICAgICAgICAgICAgICBjYXNlICdta2JpYmJvbGQnOlxuICAgICAgICAgICAgICAgIHJlcS5tYXJrdXAuYm9sZCA9IHRydWVcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICBjYXNlICdlbXBoJzpcbiAgICAgICAgICAgICAgY2FzZSAndGV4dGl0JzpcbiAgICAgICAgICAgICAgY2FzZSAnbWtiaWJpdGFsaWMnOlxuICAgICAgICAgICAgICBjYXNlICdta2JpYmVtcGgnOlxuICAgICAgICAgICAgICAgIHJlcS5tYXJrdXAuaXRhbGljcyA9IHRydWVcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGlmIChtID0gY21kLm1hdGNoKC9eKChzdWIpKilzZWN0aW9uJC8pKSB7XG4gICAgICAgICAgICAgICAgICByZXEubWFya3VwW2BoJHsobVsxXS5sZW5ndGggLyAzKSArIDF9YF0gPSB0cnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIGlnbm9yZSBjYXNlIHN0dWZmIG9uIGJpYmN5clxuICAgICAgICAgIGlmIChjbWQgPT09ICdiaWJjeXInKSBkZWxldGUgcmVxLmNhc2VcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBraW5kOiAnUmVndWxhckNvbW1hbmQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICBjb21tYW5kOiBjbWQsXG4gICAgICAgICAgICBhcmd1bWVudHM6IHtcbiAgICAgICAgICAgICAgb3B0aW9uYWw6IG9wdGlvbmFsLFxuICAgICAgICAgICAgICByZXF1aXJlZDogW3JlcV0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgcGVnJGMxMjMgPSBmdW5jdGlvbihjbWQsIG9wdGlvbmFsKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGtpbmQ6ICdSZWd1bGFyQ29tbWFuZCcsXG4gICAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgICBzb3VyY2U6IHRleHQoKSxcbiAgICAgICAgICAgIGNvbW1hbmQ6IGNtZCxcbiAgICAgICAgICAgIGFyZ3VtZW50czoge1xuICAgICAgICAgICAgICBvcHRpb25hbDogb3B0aW9uYWwsXG4gICAgICAgICAgICAgIHJlcXVpcmVkOiBbXSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICBwZWckYzEyNCA9IFwiW1wiLFxuICAgICAgcGVnJGMxMjUgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiW1wiLCBmYWxzZSksXG4gICAgICBwZWckYzEyNiA9IC9eW15cXF1dLyxcbiAgICAgIHBlZyRjMTI3ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1wiXVwiXSwgdHJ1ZSwgZmFsc2UpLFxuICAgICAgcGVnJGMxMjggPSBcIl1cIixcbiAgICAgIHBlZyRjMTI5ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIl1cIiwgZmFsc2UpLFxuICAgICAgcGVnJGMxMzAgPSBmdW5jdGlvbih2KSB7XG4gICAgICAgICAgcmV0dXJuIGJhc2ljVGV4dENvbnZlcnNpb25zKHtcbiAgICAgICAgICAgIGtpbmQ6ICdUZXh0JywgLy8gdGhpcyBpc24ndCByZWFsbHkgY29ycmVjdCBidXQgSSBkb24ndCBuZWVkIHRoZXNlIHJpZ2h0IG5vd1xuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICB2YWx1ZTogdixcbiAgICAgICAgICAgIG1vZGU6IG1hdGgub24gPyAnbWF0aCcgOiAndGV4dCcsXG4gICAgICAgICAgfSlcbiAgICAgICAgfSxcbiAgICAgIHBlZyRjMTMxID0gL15bXiBcXHRcXF5fJHt9XFxcXF0vLFxuICAgICAgcGVnJGMxMzIgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCIgXCIsIFwiXFx0XCIsIFwiXlwiLCBcIl9cIiwgXCIkXCIsIFwie1wiLCBcIn1cIiwgXCJcXFxcXCJdLCB0cnVlLCBmYWxzZSksXG4gICAgICBwZWckYzEzMyA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICByZXR1cm4gYmFzaWNUZXh0Q29udmVyc2lvbnMoe1xuICAgICAgICAgICAga2luZDogJ1RleHQnLFxuICAgICAgICAgICAgbG9jOiBsb2NhdGlvbigpLFxuICAgICAgICAgICAgc291cmNlOiB0ZXh0KCksXG4gICAgICAgICAgICB2YWx1ZTogbm9ybWFsaXplV2hpdGVzcGFjZShbdl0pLFxuICAgICAgICAgICAgbW9kZTogbWF0aC5vbiA/ICdtYXRoJyA6ICd0ZXh0JyxcbiAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgcGVnJGMxMzQgPSAvXlthLXpBLVpcXC1fXS8sXG4gICAgICBwZWckYzEzNSA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtbXCJhXCIsIFwielwiXSwgW1wiQVwiLCBcIlpcIl0sIFwiLVwiLCBcIl9cIl0sIGZhbHNlLCBmYWxzZSksXG4gICAgICBwZWckYzEzNiA9IC9eW2EtekEtWjAtOVxcLSZfOl0vLFxuICAgICAgcGVnJGMxMzcgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbW1wiYVwiLCBcInpcIl0sIFtcIkFcIiwgXCJaXCJdLCBbXCIwXCIsIFwiOVwiXSwgXCItXCIsIFwiJlwiLCBcIl9cIiwgXCI6XCJdLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgcGVnJGMxMzggPSAvXlsnYFwiPX5cXF4uXS8sXG4gICAgICBwZWckYzEzOSA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIidcIiwgXCJgXCIsIFwiXFxcIlwiLCBcIj1cIiwgXCJ+XCIsIFwiXlwiLCBcIi5cIl0sIGZhbHNlLCBmYWxzZSksXG4gICAgICBwZWckYzE0MCA9IC9eWydgXCI9flxcXi5jYnV2ZHJIa10vLFxuICAgICAgcGVnJGMxNDEgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCInXCIsIFwiYFwiLCBcIlxcXCJcIiwgXCI9XCIsIFwiflwiLCBcIl5cIiwgXCIuXCIsIFwiY1wiLCBcImJcIiwgXCJ1XCIsIFwidlwiLCBcImRcIiwgXCJyXCIsIFwiSFwiLCBcImtcIl0sIGZhbHNlLCBmYWxzZSksXG4gICAgICBwZWckYzE0MiA9IFwiPVwiLFxuICAgICAgcGVnJGMxNDMgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiPVwiLCBmYWxzZSksXG4gICAgICBwZWckYzE0NCA9IFwiI1wiLFxuICAgICAgcGVnJGMxNDUgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiI1wiLCBmYWxzZSksXG4gICAgICBwZWckYzE0NiA9IC9eW1xcclxcbl0vLFxuICAgICAgcGVnJGMxNDcgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCJcXHJcIiwgXCJcXG5cIl0sIGZhbHNlLCBmYWxzZSksXG4gICAgICBwZWckYzE0OCA9IHBlZyRvdGhlckV4cGVjdGF0aW9uKFwiTWFuZGF0b3J5IEhvcml6b250YWwgV2hpdGVzcGFjZVwiKSxcbiAgICAgIHBlZyRjMTQ5ID0gL15bIFxcdF0vLFxuICAgICAgcGVnJGMxNTAgPSBwZWckY2xhc3NFeHBlY3RhdGlvbihbXCIgXCIsIFwiXFx0XCJdLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgcGVnJGMxNTEgPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcIk9wdGlvbmFsIEhvcml6b250YWwgV2hpdGVzcGFjZVwiKSxcbiAgICAgIHBlZyRjMTUyID0gcGVnJG90aGVyRXhwZWN0YXRpb24oXCJNYW5kYXRvcnkgVmVydGljYWwgV2hpdGVzcGFjZVwiKSxcbiAgICAgIHBlZyRjMTUzID0gcGVnJG90aGVyRXhwZWN0YXRpb24oXCJPcHRpb25hbCBWZXJ0aWNhbCBXaGl0ZXNwYWNlXCIpLFxuICAgICAgcGVnJGMxNTQgPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcIk1hbmRhdG9yeSBXaGl0ZXNwYWNlXCIpLFxuICAgICAgcGVnJGMxNTUgPSAvXlsgXFx0XFxuXFxyXS8sXG4gICAgICBwZWckYzE1NiA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIiBcIiwgXCJcXHRcIiwgXCJcXG5cIiwgXCJcXHJcIl0sIGZhbHNlLCBmYWxzZSksXG4gICAgICBwZWckYzE1NyA9IHBlZyRvdGhlckV4cGVjdGF0aW9uKFwiT3B0aW9uYWwgV2hpdGVzcGFjZVwiKSxcblxuICAgICAgcGVnJGN1cnJQb3MgICAgICAgICAgPSAwLFxuICAgICAgcGVnJHNhdmVkUG9zICAgICAgICAgPSAwLFxuICAgICAgcGVnJHBvc0RldGFpbHNDYWNoZSAgPSBbeyBsaW5lOiAxLCBjb2x1bW46IDEgfV0sXG4gICAgICBwZWckbWF4RmFpbFBvcyAgICAgICA9IDAsXG4gICAgICBwZWckbWF4RmFpbEV4cGVjdGVkICA9IFtdLFxuICAgICAgcGVnJHNpbGVudEZhaWxzICAgICAgPSAwLFxuXG4gICAgICBwZWckcmVzdWx0O1xuXG4gIGlmIChcInN0YXJ0UnVsZVwiIGluIG9wdGlvbnMpIHtcbiAgICBpZiAoIShvcHRpb25zLnN0YXJ0UnVsZSBpbiBwZWckc3RhcnRSdWxlRnVuY3Rpb25zKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2FuJ3Qgc3RhcnQgcGFyc2luZyBmcm9tIHJ1bGUgXFxcIlwiICsgb3B0aW9ucy5zdGFydFJ1bGUgKyBcIlxcXCIuXCIpO1xuICAgIH1cblxuICAgIHBlZyRzdGFydFJ1bGVGdW5jdGlvbiA9IHBlZyRzdGFydFJ1bGVGdW5jdGlvbnNbb3B0aW9ucy5zdGFydFJ1bGVdO1xuICB9XG5cbiAgZnVuY3Rpb24gdGV4dCgpIHtcbiAgICByZXR1cm4gaW5wdXQuc3Vic3RyaW5nKHBlZyRzYXZlZFBvcywgcGVnJGN1cnJQb3MpO1xuICB9XG5cbiAgZnVuY3Rpb24gbG9jYXRpb24oKSB7XG4gICAgcmV0dXJuIHBlZyRjb21wdXRlTG9jYXRpb24ocGVnJHNhdmVkUG9zLCBwZWckY3VyclBvcyk7XG4gIH1cblxuICBmdW5jdGlvbiBleHBlY3RlZChkZXNjcmlwdGlvbiwgbG9jYXRpb24pIHtcbiAgICBsb2NhdGlvbiA9IGxvY2F0aW9uICE9PSB2b2lkIDAgPyBsb2NhdGlvbiA6IHBlZyRjb21wdXRlTG9jYXRpb24ocGVnJHNhdmVkUG9zLCBwZWckY3VyclBvcylcblxuICAgIHRocm93IHBlZyRidWlsZFN0cnVjdHVyZWRFcnJvcihcbiAgICAgIFtwZWckb3RoZXJFeHBlY3RhdGlvbihkZXNjcmlwdGlvbildLFxuICAgICAgaW5wdXQuc3Vic3RyaW5nKHBlZyRzYXZlZFBvcywgcGVnJGN1cnJQb3MpLFxuICAgICAgbG9jYXRpb25cbiAgICApO1xuICB9XG5cbiAgZnVuY3Rpb24gZXJyb3IobWVzc2FnZSwgbG9jYXRpb24pIHtcbiAgICBsb2NhdGlvbiA9IGxvY2F0aW9uICE9PSB2b2lkIDAgPyBsb2NhdGlvbiA6IHBlZyRjb21wdXRlTG9jYXRpb24ocGVnJHNhdmVkUG9zLCBwZWckY3VyclBvcylcblxuICAgIHRocm93IHBlZyRidWlsZFNpbXBsZUVycm9yKG1lc3NhZ2UsIGxvY2F0aW9uKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRsaXRlcmFsRXhwZWN0YXRpb24odGV4dCwgaWdub3JlQ2FzZSkge1xuICAgIHJldHVybiB7IHR5cGU6IFwibGl0ZXJhbFwiLCB0ZXh0OiB0ZXh0LCBpZ25vcmVDYXNlOiBpZ25vcmVDYXNlIH07XG4gIH1cblxuICBmdW5jdGlvbiBwZWckY2xhc3NFeHBlY3RhdGlvbihwYXJ0cywgaW52ZXJ0ZWQsIGlnbm9yZUNhc2UpIHtcbiAgICByZXR1cm4geyB0eXBlOiBcImNsYXNzXCIsIHBhcnRzOiBwYXJ0cywgaW52ZXJ0ZWQ6IGludmVydGVkLCBpZ25vcmVDYXNlOiBpZ25vcmVDYXNlIH07XG4gIH1cblxuICBmdW5jdGlvbiBwZWckYW55RXhwZWN0YXRpb24oKSB7XG4gICAgcmV0dXJuIHsgdHlwZTogXCJhbnlcIiB9O1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJGVuZEV4cGVjdGF0aW9uKCkge1xuICAgIHJldHVybiB7IHR5cGU6IFwiZW5kXCIgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRvdGhlckV4cGVjdGF0aW9uKGRlc2NyaXB0aW9uKSB7XG4gICAgcmV0dXJuIHsgdHlwZTogXCJvdGhlclwiLCBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24gfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRjb21wdXRlUG9zRGV0YWlscyhwb3MpIHtcbiAgICB2YXIgZGV0YWlscyA9IHBlZyRwb3NEZXRhaWxzQ2FjaGVbcG9zXSwgcDtcblxuICAgIGlmIChkZXRhaWxzKSB7XG4gICAgICByZXR1cm4gZGV0YWlscztcbiAgICB9IGVsc2Uge1xuICAgICAgcCA9IHBvcyAtIDE7XG4gICAgICB3aGlsZSAoIXBlZyRwb3NEZXRhaWxzQ2FjaGVbcF0pIHtcbiAgICAgICAgcC0tO1xuICAgICAgfVxuXG4gICAgICBkZXRhaWxzID0gcGVnJHBvc0RldGFpbHNDYWNoZVtwXTtcbiAgICAgIGRldGFpbHMgPSB7XG4gICAgICAgIGxpbmU6ICAgZGV0YWlscy5saW5lLFxuICAgICAgICBjb2x1bW46IGRldGFpbHMuY29sdW1uXG4gICAgICB9O1xuXG4gICAgICB3aGlsZSAocCA8IHBvcykge1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwKSA9PT0gMTApIHtcbiAgICAgICAgICBkZXRhaWxzLmxpbmUrKztcbiAgICAgICAgICBkZXRhaWxzLmNvbHVtbiA9IDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGV0YWlscy5jb2x1bW4rKztcbiAgICAgICAgfVxuXG4gICAgICAgIHArKztcbiAgICAgIH1cblxuICAgICAgcGVnJHBvc0RldGFpbHNDYWNoZVtwb3NdID0gZGV0YWlscztcbiAgICAgIHJldHVybiBkZXRhaWxzO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRjb21wdXRlTG9jYXRpb24oc3RhcnRQb3MsIGVuZFBvcykge1xuICAgIHZhciBzdGFydFBvc0RldGFpbHMgPSBwZWckY29tcHV0ZVBvc0RldGFpbHMoc3RhcnRQb3MpLFxuICAgICAgICBlbmRQb3NEZXRhaWxzICAgPSBwZWckY29tcHV0ZVBvc0RldGFpbHMoZW5kUG9zKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdGFydDoge1xuICAgICAgICBvZmZzZXQ6IHN0YXJ0UG9zLFxuICAgICAgICBsaW5lOiAgIHN0YXJ0UG9zRGV0YWlscy5saW5lLFxuICAgICAgICBjb2x1bW46IHN0YXJ0UG9zRGV0YWlscy5jb2x1bW5cbiAgICAgIH0sXG4gICAgICBlbmQ6IHtcbiAgICAgICAgb2Zmc2V0OiBlbmRQb3MsXG4gICAgICAgIGxpbmU6ICAgZW5kUG9zRGV0YWlscy5saW5lLFxuICAgICAgICBjb2x1bW46IGVuZFBvc0RldGFpbHMuY29sdW1uXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRmYWlsKGV4cGVjdGVkKSB7XG4gICAgaWYgKHBlZyRjdXJyUG9zIDwgcGVnJG1heEZhaWxQb3MpIHsgcmV0dXJuOyB9XG5cbiAgICBpZiAocGVnJGN1cnJQb3MgPiBwZWckbWF4RmFpbFBvcykge1xuICAgICAgcGVnJG1heEZhaWxQb3MgPSBwZWckY3VyclBvcztcbiAgICAgIHBlZyRtYXhGYWlsRXhwZWN0ZWQgPSBbXTtcbiAgICB9XG5cbiAgICBwZWckbWF4RmFpbEV4cGVjdGVkLnB1c2goZXhwZWN0ZWQpO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJGJ1aWxkU2ltcGxlRXJyb3IobWVzc2FnZSwgbG9jYXRpb24pIHtcbiAgICByZXR1cm4gbmV3IHBlZyRTeW50YXhFcnJvcihtZXNzYWdlLCBudWxsLCBudWxsLCBsb2NhdGlvbik7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckYnVpbGRTdHJ1Y3R1cmVkRXJyb3IoZXhwZWN0ZWQsIGZvdW5kLCBsb2NhdGlvbikge1xuICAgIHJldHVybiBuZXcgcGVnJFN5bnRheEVycm9yKFxuICAgICAgcGVnJFN5bnRheEVycm9yLmJ1aWxkTWVzc2FnZShleHBlY3RlZCwgZm91bmQpLFxuICAgICAgZXhwZWN0ZWQsXG4gICAgICBmb3VuZCxcbiAgICAgIGxvY2F0aW9uXG4gICAgKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZUJpYmxpb2dyYXBoeSgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczM7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gcGVnJHBhcnNlX18oKTtcbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMyID0gW107XG4gICAgICBzMyA9IHBlZyRwYXJzZU5vZGUoKTtcbiAgICAgIHdoaWxlIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMi5wdXNoKHMzKTtcbiAgICAgICAgczMgPSBwZWckcGFyc2VOb2RlKCk7XG4gICAgICB9XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczMgPSBwZWckcGFyc2VfXygpO1xuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICBzMSA9IHBlZyRjMChzMik7XG4gICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZUNvbW1lbnQoKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNCwgczUsIHM2LCBzNztcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA2NCkge1xuICAgICAgczEgPSBwZWckYzE7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMik7IH1cbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMiA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgNykudG9Mb3dlckNhc2UoKSA9PT0gcGVnJGMzKSB7XG4gICAgICAgICAgczMgPSBpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDcpO1xuICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM0KTsgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHM0ID0gcGVnJHBhcnNlX19oKCk7XG4gICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzNSA9IHBlZyRwYXJzZUJyYWNlZENvbW1lbnQoKTtcbiAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczEgPSBwZWckYzUoczUpO1xuICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cbiAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDY0KSB7XG4gICAgICAgIHMxID0gcGVnJGMxO1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMik7IH1cbiAgICAgIH1cbiAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMiA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDcpLnRvTG93ZXJDYXNlKCkgPT09IHBlZyRjMykge1xuICAgICAgICAgICAgczMgPSBpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDcpO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gNztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzQpOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczQgPSBwZWckcGFyc2VfX2goKTtcbiAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzNSA9IFtdO1xuICAgICAgICAgICAgICBpZiAocGVnJGM2LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICBzNiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzNiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzcpOyB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgd2hpbGUgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczUucHVzaChzNik7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRjNi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICBzNiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBzNiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNyk7IH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczYgPSBbXTtcbiAgICAgICAgICAgICAgICBpZiAocGVnJGM4LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICAgIHM3ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM5KTsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3aGlsZSAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHM2LnB1c2goczcpO1xuICAgICAgICAgICAgICAgICAgaWYgKHBlZyRjOC50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICAgIHM3ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzkpOyB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjMTAoczUpO1xuICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMSA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBpZiAocGVnJGMxMS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgczIgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMik7IH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMyA9IFtdO1xuICAgICAgICAgIGlmIChwZWckYzYudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgczQgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzcpOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHdoaWxlIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczMucHVzaChzNCk7XG4gICAgICAgICAgICBpZiAocGVnJGM2LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgczQgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNyk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IFtzMiwgczNdO1xuICAgICAgICAgICAgczEgPSBzMjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMTtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMTtcbiAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczIgPSBbXTtcbiAgICAgICAgICBpZiAocGVnJGM4LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgIHMzID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM5KTsgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB3aGlsZSAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyLnB1c2goczMpO1xuICAgICAgICAgICAgaWYgKHBlZyRjOC50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgIHMzID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzkpOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICBzMSA9IHBlZyRjMTMoczEpO1xuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VOb2RlKCkge1xuICAgIHZhciBzMCwgczE7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gcGVnJHBhcnNlQ29tbWVudCgpO1xuICAgIGlmIChzMSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczEgPSBwZWckcGFyc2VQcmVhbWJsZUV4cHJlc3Npb24oKTtcbiAgICAgIGlmIChzMSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMSA9IHBlZyRwYXJzZVN0cmluZ0RlY2xhcmF0aW9uKCk7XG4gICAgICAgIGlmIChzMSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMxID0gcGVnJHBhcnNlRW50cnkoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgczEgPSBwZWckYzE0KHMxKTtcbiAgICB9XG4gICAgczAgPSBzMTtcblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZUJyYWNlZENvbW1lbnQoKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzO1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyMykge1xuICAgICAgczEgPSBwZWckYzE1O1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE2KTsgfVxuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMyID0gW107XG4gICAgICBpZiAocGVnJGMxNy50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgIHMzID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE4KTsgfVxuICAgICAgfVxuICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMzID0gcGVnJHBhcnNlQnJhY2VkQ29tbWVudCgpO1xuICAgICAgfVxuICAgICAgd2hpbGUgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyLnB1c2goczMpO1xuICAgICAgICBpZiAocGVnJGMxNy50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgczMgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxOCk7IH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMyA9IHBlZyRwYXJzZUJyYWNlZENvbW1lbnQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTI1KSB7XG4gICAgICAgICAgczMgPSBwZWckYzE5O1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyMCk7IH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICBzMSA9IHBlZyRjMjEoczIpO1xuICAgICAgICAgIHMwID0gczE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VFbnRyeSgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNSwgczYsIHM3LCBzOCwgczksIHMxMCwgczExLCBzMTI7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNjQpIHtcbiAgICAgIHMxID0gcGVnJGMxO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIpOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBwZWckcGFyc2VfXygpO1xuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMzID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHM0ID0gW107XG4gICAgICAgIGlmIChwZWckYzIyLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICBzNSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIzKTsgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHdoaWxlIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczQucHVzaChzNSk7XG4gICAgICAgICAgICBpZiAocGVnJGMyMi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgIHM1ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIzKTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczMgPSBpbnB1dC5zdWJzdHJpbmcoczMsIHBlZyRjdXJyUG9zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMyA9IHM0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHM0ID0gcGVnJHBhcnNlX18oKTtcbiAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIGlmIChwZWckYzI0LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgczUgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjUpOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczYgPSBwZWckcGFyc2VfXygpO1xuICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzNyA9IHBlZyRwYXJzZUVudHJ5SWQoKTtcbiAgICAgICAgICAgICAgICBpZiAoczcgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHM3ID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBzOCA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgICAgICAgICAgICBpZiAoczggIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczkgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgczEwID0gcGVnJHBhcnNlRmllbGQoKTtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHMxMCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgIHM5LnB1c2goczEwKTtcbiAgICAgICAgICAgICAgICAgICAgICBzMTAgPSBwZWckcGFyc2VGaWVsZCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzOSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgIHMxMCA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRjMjYudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzMTEgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgczExID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzI3KTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzMTIgPSBwZWckcGFyc2VfXygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczEyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzI4KHMzLCBzNywgczkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VQcmVhbWJsZUV4cHJlc3Npb24oKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNCwgczUsIHM2LCBzNywgczgsIHM5LCBzMTA7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNjQpIHtcbiAgICAgIHMxID0gcGVnJGMxO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIpOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBwZWckcGFyc2VfXygpO1xuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDgpLnRvTG93ZXJDYXNlKCkgPT09IHBlZyRjMjkpIHtcbiAgICAgICAgICBzMyA9IGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgOCk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgKz0gODtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzMwKTsgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHM0ID0gcGVnJHBhcnNlX18oKTtcbiAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIGlmIChwZWckYzI0LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgczUgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjUpOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczYgPSBwZWckcGFyc2VfXygpO1xuICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzNyA9IFtdO1xuICAgICAgICAgICAgICAgIHM4ID0gcGVnJHBhcnNlRW52aXJvbm1lbnQoKTtcbiAgICAgICAgICAgICAgICBpZiAoczggPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJHBhcnNlQmxvY2soKTtcbiAgICAgICAgICAgICAgICAgIGlmIChzOCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzOCA9IHBlZyRwYXJzZU1hdGgoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHM4ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgczggPSBwZWckcGFyc2VDb21tYW5kKCk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHM4ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzOCA9IHBlZyRwYXJzZVRleHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgd2hpbGUgKHM4ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBzNy5wdXNoKHM4KTtcbiAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJHBhcnNlRW52aXJvbm1lbnQoKTtcbiAgICAgICAgICAgICAgICAgIGlmIChzOCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzOCA9IHBlZyRwYXJzZUJsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzOCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJHBhcnNlTWF0aCgpO1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChzOCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczggPSBwZWckcGFyc2VDb21tYW5kKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoczggPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgczggPSBwZWckcGFyc2VUZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzNyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczggPSBwZWckcGFyc2VfXygpO1xuICAgICAgICAgICAgICAgICAgaWYgKHM4ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwZWckYzI2LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzOSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBzOSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzI3KTsgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzOSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgIHMxMCA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjMzEoczUsIHM3LCBzOSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZVN0cmluZ0RlY2xhcmF0aW9uKCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1LCBzNiwgczcsIHM4LCBzOSwgczEwLCBzMTEsIHMxMjtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA2NCkge1xuICAgICAgczEgPSBwZWckYzE7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMik7IH1cbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMiA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgNikudG9Mb3dlckNhc2UoKSA9PT0gcGVnJGMzMikge1xuICAgICAgICAgIHMzID0gaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCA2KTtcbiAgICAgICAgICBwZWckY3VyclBvcyArPSA2O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMzMpOyB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczQgPSBwZWckcGFyc2VfXygpO1xuICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgaWYgKHBlZyRjMjQudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICBzNSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyNSk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzNiA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHM3ID0gcGVnJHBhcnNlVmFyaWFibGVOYW1lKCk7XG4gICAgICAgICAgICAgICAgaWYgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBzOCA9IHBlZyRwYXJzZUZpZWxkU2VwYXJhdG9yKCk7XG4gICAgICAgICAgICAgICAgICBpZiAoczggIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczkgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgczEwID0gcGVnJHBhcnNlUmVndWxhclZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzMTAgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoczEwICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzOS5wdXNoKHMxMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMTAgPSBwZWckcGFyc2VSZWd1bGFyVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgczkgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzOSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgIHMxMCA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRjMjYudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzMTEgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgczExID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzI3KTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzMTIgPSBwZWckcGFyc2VfXygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczEyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzM0KHM3LCBzOSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZUVudHJ5SWQoKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNDtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBwZWckcGFyc2VfXygpO1xuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBwZWckY3VyclBvcztcbiAgICAgIHMzID0gW107XG4gICAgICBpZiAocGVnJGMzNS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzM2KTsgfVxuICAgICAgfVxuICAgICAgd2hpbGUgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMzLnB1c2goczQpO1xuICAgICAgICBpZiAocGVnJGMzNS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgczQgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMzNik7IH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyID0gaW5wdXQuc3Vic3RyaW5nKHMyLCBwZWckY3VyclBvcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMiA9IHMzO1xuICAgICAgfVxuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMzID0gcGVnJHBhcnNlX18oKTtcbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA0NCkge1xuICAgICAgICAgICAgczQgPSBwZWckYzM3O1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzM4KTsgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgczEgPSBwZWckYzM5KHMyKTtcbiAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlRmllbGQoKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNCwgczUsIHM2LCBzNywgczg7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gcGVnJHBhcnNlRmllbGROYW1lKCk7XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBwZWckc2F2ZWRQb3MgPSBwZWckY3VyclBvcztcbiAgICAgIHMyID0gcGVnJGM0MChzMSk7XG4gICAgICBpZiAoczIpIHtcbiAgICAgICAgczIgPSB2b2lkIDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczMgPSBwZWckcGFyc2VGaWVsZFNlcGFyYXRvcigpO1xuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyMykge1xuICAgICAgICAgICAgczQgPSBwZWckYzE1O1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE2KTsgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHM1ID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTIzKSB7XG4gICAgICAgICAgICAgIHM2ID0gcGVnJGMxNTtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM2ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE2KTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzNTtcbiAgICAgICAgICAgICAgczUgPSB2b2lkIDA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczYgPSBwZWckcGFyc2VWZXJiYXRpbUZpZWxkVmFsdWUoKTtcbiAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjUpIHtcbiAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJGMxOTtcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyMCk7IH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBzOCA9IHBlZyRwYXJzZUZpZWxkVGVybWluYXRvcigpO1xuICAgICAgICAgICAgICAgICAgaWYgKHM4ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNDEoczEsIHM2KTtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgczEgPSBwZWckcGFyc2VGaWVsZE5hbWUoKTtcbiAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBwZWckc2F2ZWRQb3MgPSBwZWckY3VyclBvcztcbiAgICAgICAgczIgPSBwZWckYzQyKHMxKTtcbiAgICAgICAgaWYgKHMyKSB7XG4gICAgICAgICAgczIgPSB2b2lkIDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMzID0gcGVnJHBhcnNlRmllbGRTZXBhcmF0b3IoKTtcbiAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNlVmVyYmF0aW1GaWVsZFZhbHVlKCk7XG4gICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczUgPSBwZWckcGFyc2VGaWVsZFRlcm1pbmF0b3IoKTtcbiAgICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckYzQzKHMxLCBzNCk7XG4gICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMxID0gcGVnJHBhcnNlRmllbGROYW1lKCk7XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMyID0gcGVnJHBhcnNlRmllbGRTZXBhcmF0b3IoKTtcbiAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlRmllbGRWYWx1ZSgpO1xuICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNlRmllbGRUZXJtaW5hdG9yKCk7XG4gICAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJGM0NChzMSwgczMpO1xuICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VGaWVsZE5hbWUoKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNDtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBwZWckcGFyc2VfXygpO1xuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBwZWckY3VyclBvcztcbiAgICAgIHMzID0gW107XG4gICAgICBpZiAocGVnJGM0NS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzQ2KTsgfVxuICAgICAgfVxuICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHdoaWxlIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMzLnB1c2goczQpO1xuICAgICAgICAgIGlmIChwZWckYzQ1LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM0Nik7IH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMiA9IGlucHV0LnN1YnN0cmluZyhzMiwgcGVnJGN1cnJQb3MpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczIgPSBzMztcbiAgICAgIH1cbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgczEgPSBwZWckYzQ3KHMyKTtcbiAgICAgICAgczAgPSBzMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VWZXJiYXRpbUZpZWxkVmFsdWUoKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzO1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDM0KSB7XG4gICAgICBzMSA9IHBlZyRjNDg7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNDkpOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBwZWckcGFyc2VUZXh0Tm9RdW90ZXMoKTtcbiAgICAgIGlmIChzMiA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMiA9IG51bGw7XG4gICAgICB9XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAzNCkge1xuICAgICAgICAgIHMzID0gcGVnJGM0ODtcbiAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNDkpOyB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgczEgPSBwZWckYzUwKHMyKTtcbiAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTIzKSB7XG4gICAgICAgIHMxID0gcGVnJGMxNTtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE2KTsgfVxuICAgICAgfVxuICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyID0gW107XG4gICAgICAgIHMzID0gcGVnJHBhcnNlVmVyYmF0aW1UZXh0KCk7XG4gICAgICAgIHdoaWxlIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMyLnB1c2goczMpO1xuICAgICAgICAgIHMzID0gcGVnJHBhcnNlVmVyYmF0aW1UZXh0KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjUpIHtcbiAgICAgICAgICAgIHMzID0gcGVnJGMxOTtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyMCk7IH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgIHMxID0gcGVnJGM1MShzMik7XG4gICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZVZlcmJhdGltVGV4dCgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczM7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gcGVnJGN1cnJQb3M7XG4gICAgczIgPSBbXTtcbiAgICBpZiAocGVnJGMxNy50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICBzMyA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTgpOyB9XG4gICAgfVxuICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgd2hpbGUgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyLnB1c2goczMpO1xuICAgICAgICBpZiAocGVnJGMxNy50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgczMgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxOCk7IH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczEgPSBpbnB1dC5zdWJzdHJpbmcoczEsIHBlZyRjdXJyUG9zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBzMjtcbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgIHMxID0gcGVnJGM1MihzMSk7XG4gICAgfVxuICAgIHMwID0gczE7XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjMpIHtcbiAgICAgICAgczEgPSBwZWckYzE1O1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTYpOyB9XG4gICAgICB9XG4gICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIgPSBbXTtcbiAgICAgICAgczMgPSBwZWckcGFyc2VWZXJiYXRpbVRleHQoKTtcbiAgICAgICAgd2hpbGUgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczIucHVzaChzMyk7XG4gICAgICAgICAgczMgPSBwZWckcGFyc2VWZXJiYXRpbVRleHQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyNSkge1xuICAgICAgICAgICAgczMgPSBwZWckYzE5O1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIwKTsgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgczEgPSBwZWckYzUzKHMyKTtcbiAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlRmllbGRWYWx1ZSgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczM7XG5cbiAgICBzMCA9IHBlZyRwYXJzZU51bWJlcigpO1xuICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgIHBlZyRzYXZlZFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgczEgPSBwZWckYzU0KCk7XG4gICAgICBpZiAoczEpIHtcbiAgICAgICAgczEgPSB2b2lkIDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIgPSBbXTtcbiAgICAgICAgczMgPSBwZWckcGFyc2VSZWd1bGFyVmFsdWUoKTtcbiAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczMgPSBwZWckcGFyc2VTdHJpbmdWYWx1ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMyLnB1c2goczMpO1xuICAgICAgICAgIHMzID0gcGVnJHBhcnNlUmVndWxhclZhbHVlKCk7XG4gICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMyA9IHBlZyRwYXJzZVN0cmluZ1ZhbHVlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgIHMxID0gcGVnJGM1NShzMik7XG4gICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZVJlZ3VsYXJWYWx1ZSgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNTtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAzNCkge1xuICAgICAgczEgPSBwZWckYzQ4O1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzQ5KTsgfVxuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMyID0gW107XG4gICAgICBzMyA9IHBlZyRwYXJzZUVudmlyb25tZW50KCk7XG4gICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczMgPSBwZWckcGFyc2VCbG9jaygpO1xuICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMyA9IHBlZyRwYXJzZU1hdGgoKTtcbiAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlQ29tbWFuZCgpO1xuICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlVGV4dE5vUXVvdGVzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB3aGlsZSAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIucHVzaChzMyk7XG4gICAgICAgIHMzID0gcGVnJHBhcnNlRW52aXJvbm1lbnQoKTtcbiAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczMgPSBwZWckcGFyc2VCbG9jaygpO1xuICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczMgPSBwZWckcGFyc2VNYXRoKCk7XG4gICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VDb21tYW5kKCk7XG4gICAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlVGV4dE5vUXVvdGVzKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDM0KSB7XG4gICAgICAgICAgczMgPSBwZWckYzQ4O1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM0OSk7IH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzNCA9IHBlZyRwYXJzZUNvbmNhdCgpO1xuICAgICAgICAgIGlmIChzNCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczQgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgczEgPSBwZWckYzU2KHMyKTtcbiAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDYpID09PSBwZWckYzU3KSB7XG4gICAgICAgIHMxID0gcGVnJGM1NztcbiAgICAgICAgcGVnJGN1cnJQb3MgKz0gNjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzU4KTsgfVxuICAgICAgfVxuICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICBpZiAocGVnJGM1OS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgczMgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM2MCk7IH1cbiAgICAgICAgfVxuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczIgPSB2b2lkIDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMjtcbiAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczMgPSBbXTtcbiAgICAgICAgICBzNCA9IHBlZyRwYXJzZVZlcmJhdGltVGV4dCgpO1xuICAgICAgICAgIHdoaWxlIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczMucHVzaChzNCk7XG4gICAgICAgICAgICBzNCA9IHBlZyRwYXJzZVZlcmJhdGltVGV4dCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTI1KSB7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJGMxOTtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIwKTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlQ29uY2F0KCk7XG4gICAgICAgICAgICAgIGlmIChzNSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHM1ID0gbnVsbDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNTEoczMpO1xuICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyMykge1xuICAgICAgICAgIHMxID0gcGVnJGMxNTtcbiAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTYpOyB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczIgPSBbXTtcbiAgICAgICAgICBzMyA9IHBlZyRwYXJzZUVudmlyb25tZW50KCk7XG4gICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMyA9IHBlZyRwYXJzZUJsb2NrKCk7XG4gICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VNYXRoKCk7XG4gICAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlQ29tbWFuZCgpO1xuICAgICAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VUZXh0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHdoaWxlIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIucHVzaChzMyk7XG4gICAgICAgICAgICBzMyA9IHBlZyRwYXJzZUVudmlyb25tZW50KCk7XG4gICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VCbG9jaygpO1xuICAgICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZU1hdGgoKTtcbiAgICAgICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlQ29tbWFuZCgpO1xuICAgICAgICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlVGV4dCgpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTI1KSB7XG4gICAgICAgICAgICAgIHMzID0gcGVnJGMxOTtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIwKTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNlQ29uY2F0KCk7XG4gICAgICAgICAgICAgIGlmIChzNCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHM0ID0gbnVsbDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNTYoczIpO1xuICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgICBzMSA9IHBlZyRwYXJzZVN0cmluZ1JlZmVyZW5jZSgpO1xuICAgICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSBwZWckcGFyc2VDb25jYXQoKTtcbiAgICAgICAgICAgIGlmIChzMiA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzMiA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgIHMxID0gcGVnJGM1NihzMSk7XG4gICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlU3RyaW5nVmFsdWUoKSB7XG4gICAgdmFyIHMwLCBzMSwgczI7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gcGVnJHBhcnNlU3RyaW5nUmVmZXJlbmNlKCk7XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMiA9IHBlZyRwYXJzZUNvbmNhdCgpO1xuICAgICAgaWYgKHMyID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgczEgPSBwZWckYzU2KHMxKTtcbiAgICAgICAgczAgPSBzMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VUZXh0KCkge1xuICAgIHZhciBzMCwgczEsIHMyO1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBzMSA9IFtdO1xuICAgIGlmIChwZWckYzYxLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgIHMyID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM2Mik7IH1cbiAgICB9XG4gICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICB3aGlsZSAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczEucHVzaChzMik7XG4gICAgICAgIGlmIChwZWckYzYxLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICBzMiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzYyKTsgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgIHMxID0gcGVnJGM2MyhzMSk7XG4gICAgfVxuICAgIHMwID0gczE7XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VUZXh0Tm9RdW90ZXMoKSB7XG4gICAgdmFyIHMwLCBzMSwgczI7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gW107XG4gICAgaWYgKHBlZyRjNjQudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgczIgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzY1KTsgfVxuICAgIH1cbiAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHdoaWxlIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMS5wdXNoKHMyKTtcbiAgICAgICAgaWYgKHBlZyRjNjQudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgIHMyID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNjUpOyB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgczEgPSBwZWckYzYzKHMxKTtcbiAgICB9XG4gICAgczAgPSBzMTtcblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZU51bWJlcigpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczM7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gcGVnJGN1cnJQb3M7XG4gICAgczIgPSBbXTtcbiAgICBpZiAocGVnJGM2Ni50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICBzMyA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNjcpOyB9XG4gICAgfVxuICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgd2hpbGUgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyLnB1c2goczMpO1xuICAgICAgICBpZiAocGVnJGM2Ni50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgczMgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM2Nyk7IH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczEgPSBpbnB1dC5zdWJzdHJpbmcoczEsIHBlZyRjdXJyUG9zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBzMjtcbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgIHMxID0gcGVnJGM2OChzMSk7XG4gICAgfVxuICAgIHMwID0gczE7XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VTdHJpbmdSZWZlcmVuY2UoKSB7XG4gICAgdmFyIHMwLCBzMTtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBwZWckcGFyc2VWYXJpYWJsZU5hbWUoKTtcbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgczEgPSBwZWckYzY5KHMxKTtcbiAgICB9XG4gICAgczAgPSBzMTtcblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZUVudmlyb25tZW50KCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1LCBzNiwgczcsIHM4O1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCA3KSA9PT0gcGVnJGM3MCkge1xuICAgICAgczEgPSBwZWckYzcwO1xuICAgICAgcGVnJGN1cnJQb3MgKz0gNztcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzcxKTsgfVxuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMyID0gcGVnJGN1cnJQb3M7XG4gICAgICBzMyA9IFtdO1xuICAgICAgaWYgKHBlZyRjNzIudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICBzNCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM3Myk7IH1cbiAgICAgIH1cbiAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICB3aGlsZSAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMy5wdXNoKHM0KTtcbiAgICAgICAgICBpZiAocGVnJGM3Mi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICBzNCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjNzMpOyB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczIgPSBpbnB1dC5zdWJzdHJpbmcoczIsIHBlZyRjdXJyUG9zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMyID0gczM7XG4gICAgICB9XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjUpIHtcbiAgICAgICAgICBzMyA9IHBlZyRjMTk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIwKTsgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHM0ID0gW107XG4gICAgICAgICAgczUgPSBwZWckcGFyc2VFbnZpcm9ubWVudCgpO1xuICAgICAgICAgIGlmIChzNSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczUgPSBwZWckcGFyc2VCbG9jaygpO1xuICAgICAgICAgICAgaWYgKHM1ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlQ29tbWFuZCgpO1xuICAgICAgICAgICAgICBpZiAoczUgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzNSA9IHBlZyRwYXJzZU1hdGgoKTtcbiAgICAgICAgICAgICAgICBpZiAoczUgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlVGV4dCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB3aGlsZSAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHM0LnB1c2goczUpO1xuICAgICAgICAgICAgczUgPSBwZWckcGFyc2VFbnZpcm9ubWVudCgpO1xuICAgICAgICAgICAgaWYgKHM1ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlQmxvY2soKTtcbiAgICAgICAgICAgICAgaWYgKHM1ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczUgPSBwZWckcGFyc2VDb21tYW5kKCk7XG4gICAgICAgICAgICAgICAgaWYgKHM1ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBzNSA9IHBlZyRwYXJzZU1hdGgoKTtcbiAgICAgICAgICAgICAgICAgIGlmIChzNSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRwYXJzZVRleHQoKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCA1KSA9PT0gcGVnJGM3NCkge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRjNzQ7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM3NSk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzNiA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICBzNyA9IFtdO1xuICAgICAgICAgICAgICBpZiAocGVnJGM3Mi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgczggPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgczggPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM3Myk7IH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoczggIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICB3aGlsZSAoczggIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHM3LnB1c2goczgpO1xuICAgICAgICAgICAgICAgICAgaWYgKHBlZyRjNzIudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICBzOCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzOCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM3Myk7IH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgczcgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChzNyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHM2ID0gaW5wdXQuc3Vic3RyaW5nKHM2LCBwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgczYgPSBzNztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyNSkge1xuICAgICAgICAgICAgICAgICAgczcgPSBwZWckYzE5O1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgczcgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIwKTsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICAgICAgczggPSBwZWckYzc2KHMyLCBzNCwgczYpO1xuICAgICAgICAgICAgICAgICAgaWYgKHM4KSB7XG4gICAgICAgICAgICAgICAgICAgIHM4ID0gdm9pZCAwO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgczggPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgaWYgKHM4ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNzcoczIsIHM0LCBzNik7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlQmxvY2soKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNCwgczUsIHM2O1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCAyKSA9PT0gcGVnJGM3OCkge1xuICAgICAgczEgPSBwZWckYzc4O1xuICAgICAgcGVnJGN1cnJQb3MgKz0gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzc5KTsgfVxuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMyID0gcGVnJHBhcnNlRXh0ZW5kZWREaWFjcml0aWMoKTtcbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMyA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIGlmIChwZWckYzcyLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM3Myk7IH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzNCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA5Mikge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRjODA7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4MSk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBpZiAocGVnJGM4Mi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgczYgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgczYgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4Myk7IH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzNSA9IFtzNSwgczZdO1xuICAgICAgICAgICAgICAgIHM0ID0gczU7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzNDtcbiAgICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczQ7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyNSkge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRjMTk7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyMCk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczEgPSBwZWckYzg0KHMyLCBzNCk7XG4gICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDYpID09PSBwZWckYzU3KSB7XG4gICAgICAgIHMxID0gcGVnJGM1NztcbiAgICAgICAgcGVnJGN1cnJQb3MgKz0gNjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzU4KTsgfVxuICAgICAgfVxuICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICBpZiAocGVnJGM1OS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgczMgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM2MCk7IH1cbiAgICAgICAgfVxuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczIgPSB2b2lkIDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMjtcbiAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczMgPSBbXTtcbiAgICAgICAgICBzNCA9IHBlZyRwYXJzZVZlcmJhdGltVGV4dCgpO1xuICAgICAgICAgIHdoaWxlIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczMucHVzaChzNCk7XG4gICAgICAgICAgICBzNCA9IHBlZyRwYXJzZVZlcmJhdGltVGV4dCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTI1KSB7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJGMxOTtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIwKTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMSA9IHBlZyRjODUoczMpO1xuICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTIzKSB7XG4gICAgICAgICAgczEgPSBwZWckYzE1O1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNik7IH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMiA9IFtdO1xuICAgICAgICAgIHMzID0gcGVnJHBhcnNlRW52aXJvbm1lbnQoKTtcbiAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlQmxvY2soKTtcbiAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZUNvbW1hbmQoKTtcbiAgICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VNYXRoKCk7XG4gICAgICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZVRleHQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgd2hpbGUgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMi5wdXNoKHMzKTtcbiAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlRW52aXJvbm1lbnQoKTtcbiAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZUJsb2NrKCk7XG4gICAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlQ29tbWFuZCgpO1xuICAgICAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VNYXRoKCk7XG4gICAgICAgICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VUZXh0KCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjUpIHtcbiAgICAgICAgICAgICAgczMgPSBwZWckYzE5O1xuICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjApOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgIHMxID0gcGVnJGM4NihzMik7XG4gICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlTWF0aCgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNSwgczY7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHBlZyRzYXZlZFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gcGVnJGM4NygpO1xuICAgIGlmIChzMSkge1xuICAgICAgczEgPSB2b2lkIDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDM2KSB7XG4gICAgICAgIHMyID0gcGVnJGM4ODtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzg5KTsgfVxuICAgICAgfVxuICAgICAgaWYgKHMyID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzkwKSB7XG4gICAgICAgICAgczIgPSBwZWckYzkwO1xuICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM5MSk7IH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHBlZyRzYXZlZFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMyA9IHBlZyRjOTIoczIpO1xuICAgICAgICBpZiAoczMpIHtcbiAgICAgICAgICBzMyA9IHZvaWQgMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczQgPSBbXTtcbiAgICAgICAgICBzNSA9IHBlZyRwYXJzZUJsb2NrKCk7XG4gICAgICAgICAgaWYgKHM1ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzNSA9IHBlZyRwYXJzZUNvbW1hbmQoKTtcbiAgICAgICAgICAgIGlmIChzNSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRwYXJzZVRleHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgd2hpbGUgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzNC5wdXNoKHM1KTtcbiAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlQmxvY2soKTtcbiAgICAgICAgICAgIGlmIChzNSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRwYXJzZUNvbW1hbmQoKTtcbiAgICAgICAgICAgICAgaWYgKHM1ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczUgPSBwZWckcGFyc2VUZXh0KCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDM2KSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJGM4ODtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzg5KTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHM1ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzkwKSB7XG4gICAgICAgICAgICAgICAgczUgPSBwZWckYzkwO1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDI7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM5MSk7IH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICBzNiA9IHBlZyRjOTMoczIsIHM0KTtcbiAgICAgICAgICAgICAgaWYgKHM2KSB7XG4gICAgICAgICAgICAgICAgczYgPSB2b2lkIDA7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgczYgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJGM5NChzMiwgczQpO1xuICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VMaW5lQ29tbWVudCgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNTtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAzNykge1xuICAgICAgczEgPSBwZWckYzk1O1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzk2KTsgfVxuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHMyID0gcGVnJHBhcnNlX19oKCk7XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczMgPSBwZWckY3VyclBvcztcbiAgICAgICAgczQgPSBbXTtcbiAgICAgICAgaWYgKHBlZyRjOTcudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgIHM1ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjOTgpOyB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgd2hpbGUgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzNC5wdXNoKHM1KTtcbiAgICAgICAgICAgIGlmIChwZWckYzk3LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgczUgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjOTgpOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMyA9IGlucHV0LnN1YnN0cmluZyhzMywgcGVnJGN1cnJQb3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMzID0gczQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczQgPSBbXTtcbiAgICAgICAgICBzNSA9IHBlZyRwYXJzZUVPTCgpO1xuICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgd2hpbGUgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM0LnB1c2goczUpO1xuICAgICAgICAgICAgICBzNSA9IHBlZyRwYXJzZUVPTCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICBzMSA9IHBlZyRjOTkoczMpO1xuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VDb21tYW5kKCkge1xuICAgIHZhciBzMDtcblxuICAgIHMwID0gcGVnJHBhcnNlU2NyaXB0Q29tbWFuZCgpO1xuICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczAgPSBwZWckcGFyc2VEaWFjcml0aWNDb21tYW5kKCk7XG4gICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczAgPSBwZWckcGFyc2VSZWd1bGFyQ29tbWFuZCgpO1xuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMCA9IHBlZyRwYXJzZVN5bWJvbENvbW1hbmQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZVNjcmlwdENvbW1hbmQoKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzO1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBpZiAocGVnJGMxMDAudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgczEgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEwMSk7IH1cbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMiA9IHBlZyRwYXJzZV9faCgpO1xuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMzID0gcGVnJHBhcnNlUmVxdWlyZWRBcmd1bWVudCgpO1xuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICBzMSA9IHBlZyRjMTAyKHMxLCBzMyk7XG4gICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZURpYWNyaXRpY0NvbW1hbmQoKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNCwgczUsIHM2O1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDkyKSB7XG4gICAgICBzMSA9IHBlZyRjODA7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjODEpOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBwZWckcGFyc2VTaW1wbGVEaWFjcml0aWMoKTtcbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMyA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIGlmIChwZWckYzcyLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM3Myk7IH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzNCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA5Mikge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRjODA7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4MSk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBpZiAocGVnJGM4Mi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgczYgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgczYgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4Myk7IH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzNSA9IFtzNSwgczZdO1xuICAgICAgICAgICAgICAgIHM0ID0gczU7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzNDtcbiAgICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczQ7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgIHMxID0gcGVnJGM4NChzMiwgczQpO1xuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA5Mikge1xuICAgICAgICBzMSA9IHBlZyRjODA7XG4gICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4MSk7IH1cbiAgICAgIH1cbiAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMiA9IHBlZyRwYXJzZUV4dGVuZGVkRGlhY3JpdGljKCk7XG4gICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTIzKSB7XG4gICAgICAgICAgICBzMyA9IHBlZyRjMTU7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTYpOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgaWYgKHBlZyRjNzIudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICBzNCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM3Myk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzNCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDkyKSB7XG4gICAgICAgICAgICAgICAgczUgPSBwZWckYzgwO1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4MSk7IH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBpZiAocGVnJGM4Mi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICBzNiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBzNiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjODMpOyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczUgPSBbczUsIHM2XTtcbiAgICAgICAgICAgICAgICAgIHM0ID0gczU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczQ7XG4gICAgICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczQ7XG4gICAgICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjUpIHtcbiAgICAgICAgICAgICAgICBzNSA9IHBlZyRjMTk7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIwKTsgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJGM4NChzMiwgczQpO1xuICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDkyKSB7XG4gICAgICAgICAgczEgPSBwZWckYzgwO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4MSk7IH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMiA9IHBlZyRwYXJzZUV4dGVuZGVkRGlhY3JpdGljKCk7XG4gICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyMykge1xuICAgICAgICAgICAgICBzNCA9IHBlZyRjMTU7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNik7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgICAgIHMzID0gdm9pZCAwO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNlUmVndWxhclZhbHVlKCk7XG4gICAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJGMxMDMoczIsIHM0KTtcbiAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlU3ltYm9sQ29tbWFuZCgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczM7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gOTIpIHtcbiAgICAgIHMxID0gcGVnJGM4MDtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4MSk7IH1cbiAgICB9XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMiA9IHBlZyRjdXJyUG9zO1xuICAgICAgaWYgKHBlZyRjMTA0LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgczMgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTA1KTsgfVxuICAgICAgfVxuICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyID0gaW5wdXQuc3Vic3RyaW5nKHMyLCBwZWckY3VyclBvcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMiA9IHMzO1xuICAgICAgfVxuICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICBzMSA9IHBlZyRjMTA2KHMyKTtcbiAgICAgICAgczAgPSBzMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VSZWd1bGFyQ29tbWFuZCgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNSwgczYsIHM3LCBzOCwgczksIHMxMDtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA5Mikge1xuICAgICAgczEgPSBwZWckYzgwO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzgxKTsgfVxuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDEwKSA9PT0gcGVnJGMxMDcpIHtcbiAgICAgICAgczIgPSBwZWckYzEwNztcbiAgICAgICAgcGVnJGN1cnJQb3MgKz0gMTA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMDgpOyB9XG4gICAgICB9XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczMgPSBwZWckcGFyc2VCbG9jaygpO1xuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBwZWckY3VyclBvcztcbiAgICAgICAgICBzNCA9IHBlZyRjMTA5KHMyLCBzMyk7XG4gICAgICAgICAgaWYgKHM0KSB7XG4gICAgICAgICAgICBzNCA9IHZvaWQgMDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHM1ID0gW107XG4gICAgICAgICAgICBzNiA9IHBlZyRwYXJzZU9wdGlvbmFsQXJndW1lbnQoKTtcbiAgICAgICAgICAgIHdoaWxlIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzNS5wdXNoKHM2KTtcbiAgICAgICAgICAgICAgczYgPSBwZWckcGFyc2VPcHRpb25hbEFyZ3VtZW50KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczYgPSBwZWckcGFyc2VSZXF1aXJlZEFyZ3VtZW50KCk7XG4gICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJGMxMTAoczIsIHMzLCBzNSwgczYpO1xuICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA5Mikge1xuICAgICAgICBzMSA9IHBlZyRjODA7XG4gICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4MSk7IH1cbiAgICAgIH1cbiAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMiA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgNSkgPT09IHBlZyRjMTExKSB7XG4gICAgICAgICAgczMgPSBwZWckYzExMTtcbiAgICAgICAgICBwZWckY3VyclBvcyArPSA1O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTEyKTsgfVxuICAgICAgICB9XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMiA9IHZvaWQgMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMyO1xuICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDMpID09PSBwZWckYzExMykge1xuICAgICAgICAgICAgczQgPSBwZWckYzExMztcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDM7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMTQpOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICAgIGlmIChzNCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczMgPSB2b2lkIDA7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczQgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgIHM1ID0gW107XG4gICAgICAgICAgICBpZiAocGVnJGMyMi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgIHM2ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM2ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIzKTsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgIHdoaWxlIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHM1LnB1c2goczYpO1xuICAgICAgICAgICAgICAgIGlmIChwZWckYzIyLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICAgIHM2ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHM2ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyMyk7IH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzNCA9IGlucHV0LnN1YnN0cmluZyhzNCwgcGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczQgPSBzNTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgczUgPSBwZWckYzExNShzNCk7XG4gICAgICAgICAgICAgIGlmIChzNSkge1xuICAgICAgICAgICAgICAgIHM1ID0gdm9pZCAwO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzNiA9IFtdO1xuICAgICAgICAgICAgICAgIHM3ID0gcGVnJHBhcnNlT3B0aW9uYWxBcmd1bWVudCgpO1xuICAgICAgICAgICAgICAgIHdoaWxlIChzNyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczYucHVzaChzNyk7XG4gICAgICAgICAgICAgICAgICBzNyA9IHBlZyRwYXJzZU9wdGlvbmFsQXJndW1lbnQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICBzNyA9IHBlZyRwYXJzZV9faCgpO1xuICAgICAgICAgICAgICAgICAgaWYgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyMykge1xuICAgICAgICAgICAgICAgICAgICAgIHM5ID0gcGVnJGMxNTtcbiAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHM5ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTYpOyB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgICAgICAgICAgICAgIGlmIChzOSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczg7XG4gICAgICAgICAgICAgICAgICAgICAgczggPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgczggPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzOCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgIHM5ID0gcGVnJHBhcnNlVmVyYmF0aW1GaWVsZFZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHM5ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMTAgPSBwZWckcGFyc2VWZXJiYXRpbUZpZWxkVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTAgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGMxMTYoczQsIHM2LCBzOSwgczEwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDkyKSB7XG4gICAgICAgICAgczEgPSBwZWckYzgwO1xuICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGM4MSk7IH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMiA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDUpID09PSBwZWckYzExMSkge1xuICAgICAgICAgICAgczMgPSBwZWckYzExMTtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMTIpOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSB2b2lkIDA7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczI7XG4gICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczMgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgMykgPT09IHBlZyRjMTEzKSB7XG4gICAgICAgICAgICAgIHM0ID0gcGVnJGMxMTM7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMTQpOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgICAgIGlmIChzNCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzMyA9IHZvaWQgMDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzNCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICBzNSA9IFtdO1xuICAgICAgICAgICAgICBpZiAocGVnJGMyMi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgczYgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgczYgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyMyk7IH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICB3aGlsZSAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHM1LnB1c2goczYpO1xuICAgICAgICAgICAgICAgICAgaWYgKHBlZyRjMjIudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICBzNiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzNiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyMyk7IH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHM0ID0gaW5wdXQuc3Vic3RyaW5nKHM0LCBwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgczQgPSBzNTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgICBzNSA9IHBlZyRjMTE3KHM0KTtcbiAgICAgICAgICAgICAgICBpZiAoczUpIHtcbiAgICAgICAgICAgICAgICAgIHM1ID0gdm9pZCAwO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgczYgPSBbXTtcbiAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJHBhcnNlT3B0aW9uYWxBcmd1bWVudCgpO1xuICAgICAgICAgICAgICAgICAgd2hpbGUgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHM2LnB1c2goczcpO1xuICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRwYXJzZU9wdGlvbmFsQXJndW1lbnQoKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRwYXJzZV9faCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzOCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTIzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzOSA9IHBlZyRjMTU7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzOSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTYpOyB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChzOSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzODtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM4ID0gdm9pZCAwO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzOCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGlmIChzOCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczkgPSBwZWckcGFyc2VWZXJiYXRpbUZpZWxkVmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzOSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzExOChzNCwgczYsIHM5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDkyKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRjODA7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjODEpOyB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgNSkgPT09IHBlZyRjMTExKSB7XG4gICAgICAgICAgICAgIHMzID0gcGVnJGMxMTE7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMTIpOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzMiA9IHZvaWQgMDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczI7XG4gICAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBzMyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgMykgPT09IHBlZyRjMTEzKSB7XG4gICAgICAgICAgICAgICAgczQgPSBwZWckYzExMztcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyArPSAzO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTE0KTsgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICAgICAgICBpZiAoczQgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMyA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMzO1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzNCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICAgIHM1ID0gW107XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRjMjIudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgczYgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgczYgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzIzKTsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHdoaWxlIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzNS5wdXNoKHM2KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRjMjIudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICAgIHM2ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHM2ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjMpOyB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHM0ID0gaW5wdXQuc3Vic3RyaW5nKHM0LCBwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHM0ID0gczU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgICBzNSA9IHBlZyRjMTE5KHM0KTtcbiAgICAgICAgICAgICAgICAgIGlmIChzNSkge1xuICAgICAgICAgICAgICAgICAgICBzNSA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzNiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRwYXJzZU9wdGlvbmFsQXJndW1lbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgczYucHVzaChzNyk7XG4gICAgICAgICAgICAgICAgICAgICAgczcgPSBwZWckcGFyc2VPcHRpb25hbEFyZ3VtZW50KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgczcgPSBwZWckcGFyc2VfX2goKTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM4ID0gcGVnJHBhcnNlUmVxdWlyZWRBcmd1bWVudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM4ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHM5ID0gcGVnJHBhcnNlUmVxdWlyZWRBcmd1bWVudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczkgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjMTIwKHM0LCBzNiwgczgsIHM5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gOTIpIHtcbiAgICAgICAgICAgICAgczEgPSBwZWckYzgwO1xuICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjODEpOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczIgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDUpID09PSBwZWckYzExMSkge1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJGMxMTE7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gNTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzExMik7IH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczIgPSB2b2lkIDA7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMjtcbiAgICAgICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCAzKSA9PT0gcGVnJGMxMTMpIHtcbiAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJGMxMTM7XG4gICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyArPSAzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTE0KTsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgICAgICAgICBpZiAoczQgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHMzID0gdm9pZCAwO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMzO1xuICAgICAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgICBzNSA9IFtdO1xuICAgICAgICAgICAgICAgICAgaWYgKHBlZyRjMjIudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICBzNiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzNiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMyMyk7IH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzNS5wdXNoKHM2KTtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJGMyMi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjMpOyB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczQgPSBpbnB1dC5zdWJzdHJpbmcoczQsIHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHM0ID0gczU7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJGMxMjEoczQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoczUpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzNSA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgczYgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRwYXJzZU9wdGlvbmFsQXJndW1lbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoczcgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM2LnB1c2goczcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgczcgPSBwZWckcGFyc2VPcHRpb25hbEFyZ3VtZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGlmIChzNiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczcgPSBwZWckcGFyc2VfX2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzNyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzOCA9IHBlZyRwYXJzZVJlcXVpcmVkQXJndW1lbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM4ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzEyMihzNCwgczYsIHM4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA5Mikge1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJGM4MDtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjODEpOyB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczIgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCA1KSA9PT0gcGVnJGMxMTEpIHtcbiAgICAgICAgICAgICAgICAgIHMzID0gcGVnJGMxMTE7XG4gICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyArPSA1O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTEyKTsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHMyID0gdm9pZCAwO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMyO1xuICAgICAgICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHMzID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDMpID09PSBwZWckYzExMykge1xuICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRjMTEzO1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyArPSAzO1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTE0KTsgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgICAgICAgICAgICBpZiAoczQgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczMgPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMzO1xuICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczQgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgICAgICAgczUgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRjMjIudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICAgIHM2ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHM2ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjMpOyB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNS5wdXNoKHM2KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckYzIyLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgczYgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgczYgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMjMpOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzNCA9IGlucHV0LnN1YnN0cmluZyhzNCwgcGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHM0ID0gczU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgczUgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICBzNiA9IHBlZyRwYXJzZU9wdGlvbmFsQXJndW1lbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM1LnB1c2goczYpO1xuICAgICAgICAgICAgICAgICAgICAgICAgczYgPSBwZWckcGFyc2VPcHRpb25hbEFyZ3VtZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczYgPSBwZWckcGFyc2VfXygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjMTIzKHM0LCBzNSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlT3B0aW9uYWxBcmd1bWVudCgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNTtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA5MSkge1xuICAgICAgczEgPSBwZWckYzEyNDtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMjUpOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczIgPSBwZWckcGFyc2VfX2goKTtcbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzNCA9IFtdO1xuICAgICAgICBpZiAocGVnJGMxMjYudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgIHM1ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTI3KTsgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHdoaWxlIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczQucHVzaChzNSk7XG4gICAgICAgICAgICBpZiAocGVnJGMxMjYudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICBzNSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMjcpOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMyA9IGlucHV0LnN1YnN0cmluZyhzMywgcGVnJGN1cnJQb3MpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMzID0gczQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgczQgPSBwZWckcGFyc2VfX2goKTtcbiAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gOTMpIHtcbiAgICAgICAgICAgICAgczUgPSBwZWckYzEyODtcbiAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEyOSk7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgczEgPSBwZWckYzEzMChzMyk7XG4gICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlUmVxdWlyZWRBcmd1bWVudCgpIHtcbiAgICB2YXIgczAsIHMxLCBzMjtcblxuICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgczEgPSBwZWckcGFyc2VfX2goKTtcbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIGlmIChwZWckYzEzMS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgIHMyID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEzMik7IH1cbiAgICAgIH1cbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgczEgPSBwZWckYzEzMyhzMik7XG4gICAgICAgIHMwID0gczE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgIHMxID0gcGVnJHBhcnNlQmxvY2soKTtcbiAgICAgIGlmIChzMSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMSA9IHBlZyRwYXJzZUNvbW1hbmQoKTtcbiAgICAgIH1cbiAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgczEgPSBwZWckYzUyKHMxKTtcbiAgICAgIH1cbiAgICAgIHMwID0gczE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlVmFyaWFibGVOYW1lKCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQ7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gcGVnJGN1cnJQb3M7XG4gICAgaWYgKHBlZyRjMTM0LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgIHMyID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMzUpOyB9XG4gICAgfVxuICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczMgPSBbXTtcbiAgICAgIGlmIChwZWckYzEzNi50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEzNyk7IH1cbiAgICAgIH1cbiAgICAgIHdoaWxlIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMy5wdXNoKHM0KTtcbiAgICAgICAgaWYgKHBlZyRjMTM2LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICBzNCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzEzNyk7IH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyID0gW3MyLCBzM107XG4gICAgICAgIHMxID0gczI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMxO1xuICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczE7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczAgPSBpbnB1dC5zdWJzdHJpbmcoczAsIHBlZyRjdXJyUG9zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgczAgPSBzMTtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VTaW1wbGVEaWFjcml0aWMoKSB7XG4gICAgdmFyIHMwO1xuXG4gICAgaWYgKHBlZyRjMTM4LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgIHMwID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxMzkpOyB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlRXh0ZW5kZWREaWFjcml0aWMoKSB7XG4gICAgdmFyIHMwO1xuXG4gICAgaWYgKHBlZyRjMTQwLnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgIHMwID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNDEpOyB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlRmllbGRTZXBhcmF0b3IoKSB7XG4gICAgdmFyIHMwLCBzMSwgczIsIHMzO1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBzMSA9IHBlZyRwYXJzZV9fKCk7XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDYxKSB7XG4gICAgICAgIHMyID0gcGVnJGMxNDI7XG4gICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNDMpOyB9XG4gICAgICB9XG4gICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgczMgPSBwZWckcGFyc2VfXygpO1xuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzMSA9IFtzMSwgczIsIHMzXTtcbiAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlRmllbGRUZXJtaW5hdG9yKCkge1xuICAgIHZhciBzMCwgczEsIHMyLCBzMywgczQsIHM1O1xuXG4gICAgczAgPSBwZWckY3VyclBvcztcbiAgICBzMSA9IHBlZyRwYXJzZV9fKCk7XG4gICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDQ0KSB7XG4gICAgICAgIHMyID0gcGVnJGMzNztcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzM4KTsgfVxuICAgICAgfVxuICAgICAgaWYgKHMyID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMyID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMyA9IHBlZyRwYXJzZV9faCgpO1xuICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICBzNCA9IFtdO1xuICAgICAgICAgIHM1ID0gcGVnJHBhcnNlTGluZUNvbW1lbnQoKTtcbiAgICAgICAgICBpZiAoczUgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHM1ID0gcGVnJHBhcnNlRU9MKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHdoaWxlIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczQucHVzaChzNSk7XG4gICAgICAgICAgICBzNSA9IHBlZyRwYXJzZUxpbmVDb21tZW50KCk7XG4gICAgICAgICAgICBpZiAoczUgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgczUgPSBwZWckcGFyc2VFT0woKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMSA9IFtzMSwgczIsIHMzLCBzNF07XG4gICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZUNvbmNhdCgpIHtcbiAgICB2YXIgczAsIHMxLCBzMiwgczM7XG5cbiAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgIHMxID0gcGVnJHBhcnNlX18oKTtcbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMzUpIHtcbiAgICAgICAgczIgPSBwZWckYzE0NDtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE0NSk7IH1cbiAgICAgIH1cbiAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMyA9IHBlZyRwYXJzZV9fKCk7XG4gICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgIHMxID0gW3MxLCBzMiwgczNdO1xuICAgICAgICAgIHMwID0gczE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VFT0woKSB7XG4gICAgdmFyIHMwO1xuXG4gICAgaWYgKHBlZyRjMTQ2LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgIHMwID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNDcpOyB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHMwO1xuICB9XG5cbiAgZnVuY3Rpb24gcGVnJHBhcnNlX2goKSB7XG4gICAgdmFyIHMwLCBzMTtcblxuICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgIHMwID0gW107XG4gICAgaWYgKHBlZyRjMTQ5LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgIHMxID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNTApOyB9XG4gICAgfVxuICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgd2hpbGUgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgIHMwLnB1c2goczEpO1xuICAgICAgICBpZiAocGVnJGMxNDkudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgIHMxID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTUwKTsgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICB9XG4gICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTQ4KTsgfVxuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZV9faCgpIHtcbiAgICB2YXIgczAsIHMxO1xuXG4gICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgczAgPSBbXTtcbiAgICBpZiAocGVnJGMxNDkudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgczEgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE1MCk7IH1cbiAgICB9XG4gICAgd2hpbGUgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMC5wdXNoKHMxKTtcbiAgICAgIGlmIChwZWckYzE0OS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgIHMxID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE1MCk7IH1cbiAgICAgIH1cbiAgICB9XG4gICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTUxKTsgfVxuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHBlZyRwYXJzZV92KCkge1xuICAgIHZhciBzMCwgczE7XG5cbiAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICBzMCA9IFtdO1xuICAgIGlmIChwZWckYzE0Ni50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICBzMSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTQ3KTsgfVxuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHdoaWxlIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMC5wdXNoKHMxKTtcbiAgICAgICAgaWYgKHBlZyRjMTQ2LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICBzMSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE0Nyk7IH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE1Mik7IH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VfX3YoKSB7XG4gICAgdmFyIHMwLCBzMTtcblxuICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgIHMwID0gW107XG4gICAgaWYgKHBlZyRjMTQ2LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgIHMxID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNDcpOyB9XG4gICAgfVxuICAgIHdoaWxlIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgczAucHVzaChzMSk7XG4gICAgICBpZiAocGVnJGMxNDYudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICBzMSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHsgcGVnJGZhaWwocGVnJGMxNDcpOyB9XG4gICAgICB9XG4gICAgfVxuICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE1Myk7IH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VfKCkge1xuICAgIHZhciBzMCwgczE7XG5cbiAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICBzMCA9IFtdO1xuICAgIGlmIChwZWckYzE1NS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICBzMSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICBwZWckY3VyclBvcysrO1xuICAgIH0gZWxzZSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTU2KTsgfVxuICAgIH1cbiAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgIHdoaWxlIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICBzMC5wdXNoKHMxKTtcbiAgICAgICAgaWYgKHBlZyRjMTU1LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICBzMSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE1Nik7IH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgfVxuICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE1NCk7IH1cbiAgICB9XG5cbiAgICByZXR1cm4gczA7XG4gIH1cblxuICBmdW5jdGlvbiBwZWckcGFyc2VfXygpIHtcbiAgICB2YXIgczAsIHMxO1xuXG4gICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgczAgPSBbXTtcbiAgICBpZiAocGVnJGMxNTUudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgczEgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICB9IGVsc2Uge1xuICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE1Nik7IH1cbiAgICB9XG4gICAgd2hpbGUgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMC5wdXNoKHMxKTtcbiAgICAgIGlmIChwZWckYzE1NS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgIHMxID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkgeyBwZWckZmFpbChwZWckYzE1Nik7IH1cbiAgICAgIH1cbiAgICB9XG4gICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7IHBlZyRmYWlsKHBlZyRjMTU3KTsgfVxuICAgIH1cblxuICAgIHJldHVybiBzMDtcbiAgfVxuXG5cbiAgICAvKlxuICAgICAgTUlUIExpY2Vuc2VcblxuICAgICAgQ29weXJpZ2h0IChjKSAyMDE3IERlcmVrIFAgU2lmZm9yZCwgcGFydHMgY29weXJpZ2h0IChjKSAyMDE5IGJ5IEVtaWxpYW5vIEhleW5zXG5cbiAgICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAgICAgIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAgICAgIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAgICAgIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAgICAgIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICAgICAgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcblxuICAgICAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gICAgICBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuXG4gICAgICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gICAgICBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAgICAgIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICAgICAgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICAgICAgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAgICAgIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gICAgICBTT0ZUV0FSRS5cbiAgICAqL1xuXG4gICAgY29uc3QgbWFya3VwID0ge1xuICAgICAgc2w6ICdpdGFsaWNzJyxcbiAgICAgIGVtOiAnaXRhbGljcycsXG4gICAgICBpdDogJ2l0YWxpY3MnLFxuICAgICAgaXRzaGFwZTogJ2l0YWxpY3MnLFxuXG4gICAgICBiZjogJ2JvbGQnLFxuICAgICAgYmZzZXJpZXM6ICdib2xkJyxcblxuICAgICAgc2M6ICdzbWFsbENhcHMnLFxuICAgICAgc2NzaGFwZTogJ3NtYWxsQ2FwcycsXG5cbiAgICAgIHR0OiAnZml4ZWRXaWR0aCcsXG4gICAgICBybTogJ3JvbWFuJyxcbiAgICAgIHNmOiAnc2Fuc1NlcmlmJyxcbiAgICAgIHZlcmI6ICd2ZXJiYXRpbScsXG4gICAgfVxuXG4gICAgY29uc3QgdW5uZXN0RmllbGRzID0gKG9wdGlvbnMudW5uZXN0RmllbGRzIHx8IFtdKS5tYXAoZmllbGQgPT4gZmllbGQudG9Mb3dlckNhc2UoKSlcbiAgICBjb25zdCB2ZXJiYXRpbUZpZWxkcyA9IChvcHRpb25zLnZlcmJhdGltRmllbGRzIHx8IFsgJ3VybHJhdycsICd1cmwnLCAnZG9pJywgJ2ZpbGUnLCAnZmlsZXMnLCAnZXByaW50JywgJ3ZlcmJhJywgJ3ZlcmJiJywgJ3ZlcmJjJyBdKS5tYXAoZmllbGQgPT4gdHlwZW9mIGZpZWxkID09PSAnc3RyaW5nJyA/IGZpZWxkLnRvTG93ZXJDYXNlKCkgOiBmaWVsZClcbiAgICBjb25zdCB2ZXJiYXRpbUNvbW1hbmRzID0gKG9wdGlvbnMudmVyYmF0aW1Db21tYW5kcyB8fCBbJ3RleHR0dCcsICd1cmwnLCAnaHJlZiddKVxuXG4gICAgZnVuY3Rpb24gaXNWZXJiYXRpbUZpZWxkKG5hbWUpIHtcbiAgICAgIHJldHVybiB2ZXJiYXRpbUZpZWxkcy5maW5kKHAgPT4gKHR5cGVvZiBwID09PSAnc3RyaW5nJykgPyBuYW1lID09PSBwIDogbmFtZS5tYXRjaChwKSlcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBub3JtYWxpemVXaGl0ZXNwYWNlKHRleHRBcnIpIHtcbiAgICAgIHJldHVybiB0ZXh0QXJyLnJlZHVjZSgocHJldiwgY3VycikgPT4ge1xuICAgICAgICBpZiAoL1xccy8udGVzdChjdXJyKSkge1xuICAgICAgICAgIGlmICgvXFxzLy50ZXN0KHByZXZbcHJldi5sZW5ndGggLSAxXSkpIHtcbiAgICAgICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcHJldiArICcgJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHByZXYgKyBjdXJyO1xuICAgICAgfSwgJycpO1xuICAgIH1cblxuICAgIGNvbnN0IGhhc19hcmd1bWVudHMgPSB7XG4gICAgICBFbHNldmllckdseXBoOiAxLFxuICAgICAgZW5kOiAxLFxuICAgICAgYmVnaW46IDEsXG4gICAgICBiaWJjeXI6IDEsXG4gICAgICBiaWJzdHJpbmc6IDEsXG4gICAgICBjaHNmOiAxLFxuICAgICAgY2l0ZTogMSxcbiAgICAgIGN5cmNoYXI6IDEsXG4gICAgICBkaW5nOiAxLFxuICAgICAgZW1waDogMSxcbiAgICAgIGVucXVvdGU6IDEsXG4gICAgICBmcmFjOiAyLFxuICAgICAgaHJlZjogMixcbiAgICAgIGhzcGFjZTogMSxcbiAgICAgIG1hdGhybTogMSxcbiAgICAgIG1ib3g6IDEsXG4gICAgICBta2JpYmJvbGQ6IDEsXG4gICAgICBta2JpYmVtcGg6IDEsXG4gICAgICBta2JpYml0YWxpYzogMSxcbiAgICAgIG1rYmlicXVvdGU6IDEsXG4gICAgICBuZXdjb21tYW5kOiAyLFxuICAgICAgbm9vcHNvcnQ6IDEsXG4gICAgICBvY2lyYzogMSxcbiAgICAgIHNlY3Rpb246IDEsXG4gICAgICBzYjogMSxcbiAgICAgIHNwOiAxLFxuICAgICAgc3Vic2VjdGlvbjogMSxcbiAgICAgIHN1YnN1YnNlY3Rpb246IDEsXG4gICAgICBzdWJzdWJzdWJzZWN0aW9uOiAxLFxuICAgICAgdDogMSxcbiAgICAgIHRleHRiZjogMSxcbiAgICAgIHRleHRpdDogMSxcbiAgICAgIHRleHRybTogMSxcbiAgICAgIHRleHRzYzogMSxcbiAgICAgIHRleHRzdWJzY3JpcHQ6IDEsXG4gICAgICB0ZXh0c3VwZXJzY3JpcHQ6IDEsXG4gICAgICB0ZXh0dHQ6IDEsXG4gICAgICB1cmw6IDEsXG4gICAgICB2cGhhbnRvbTogMSxcbiAgICAgIHZzcGFjZTogMSxcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5jb21iaW5pbmdEaWFjcml0aWNzKSB7XG4gICAgICBmb3IgKGNvbnN0IGNtZCBvZiBvcHRpb25zLmNvbWJpbmluZ0RpYWNyaXRpY3MpIHtcbiAgICAgICAgaGFzX2FyZ3VtZW50c1tjbWRdID0gMVxuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNheSgpIHtcbiAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KEFycmF5LmZyb20oYXJndW1lbnRzKSwgbnVsbCwgMikpXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBlZWsobikge1xuICAgICAgcmV0dXJuIGlucHV0LnN1YnN0cihwZWckc2F2ZWRQb3MsIG4pXG4gICAgfVxuXG4gICAgY29uc3QgbWF0aCA9IHtcbiAgICAgIG9uOiBmYWxzZSxcblxuICAgICAgc2V0OiBmdW5jdGlvbihzdGF0ZSkge1xuICAgICAgICB0aGlzLm9uID0gc3RhdGVcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBiYXNpY1RleHRDb252ZXJzaW9ucyhub2RlKSB7XG4gICAgICBpZiAobm9kZS5raW5kICE9PSAnVGV4dCcpIHRocm93IG5ldyBFcnJvcihub2RlLmtpbmQgKyAnIGlzIG5vdCBhIFRleHQgbm9kZScpXG5cbiAgICAgIHN3aXRjaCAobm9kZS5tb2RlKSB7XG4gICAgICAgIGNhc2UgJ3ZlcmJhdGltJzpcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGNhc2UgJ21hdGgnOlxuICAgICAgICAgIG5vZGUudmFsdWUgPSBub2RlLnZhbHVlLnJlcGxhY2UoL34vZywgJ1xcdTAwQTAnKVxuICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgY2FzZSAndGV4dCc6XG4gICAgICAgICAgbm9kZS52YWx1ZSA9IG5vZGUudmFsdWVcbiAgICAgICAgICAgIC5yZXBsYWNlKC8tLS0vZywgJ1xcdTIwMTQnKVxuICAgICAgICAgICAgLnJlcGxhY2UoLy0tL2csICdcXHUyMDEzJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC88L2csICdcXHUwMEExJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC8+L2csICdcXHUwMEJGJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9+L2csICdcXHUwMEEwJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9gYC9nLCBvcHRpb25zLm1hcmt1cC5lbnF1b3RlLm9wZW4pXG4gICAgICAgICAgICAucmVwbGFjZSgvJycvZywgb3B0aW9ucy5tYXJrdXAuZW5xdW90ZS5jbG9zZSlcbiAgICAgICAgICBicmVha1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHRleHQgbW9kZSAke25vZGUubW9kZX1gKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbm9kZVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByb3RlY3Qodikge1xuICAgICAgbGV0IHNvdXJjZVxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodikpIHtcbiAgICAgICAgc291cmNlID0gdi5tYXAoZSA9PiBlLnNvdXJjZSkuam9pbignJylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHYgPSBbIHYgXVxuICAgICAgICBzb3VyY2UgPSB2LnNvdXJjZVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBraW5kOiAnQmxvY2snLFxuICAgICAgICB2YWx1ZTogdixcbiAgICAgICAgbWFya3VwOiB7fSxcbiAgICAgICAgY2FzZTogJ3Byb3RlY3QnLFxuICAgICAgICBzb3VyY2U6IHNvdXJjZSxcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVfbWFya3VwX3N3aXRjaGVzKGJsb2NrKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGJsb2NrLnZhbHVlXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWUpKSByZXR1cm4gYmxvY2tcblxuICAgICAgYmxvY2sudmFsdWUgPSBbXVxuXG4gICAgICBjb25zdCBwc2V1ZG8gPSB7XG4gICAgICAgIGJsb2NrOiBudWxsLFxuICAgICAgICBtYXJrdXA6IHt9LFxuICAgICAgfVxuICAgICAgZnVuY3Rpb24gcHNldWRvX2Jsb2NrKCkge1xuICAgICAgICBwc2V1ZG8uYmxvY2sgPSB7XG4gICAgICAgICAga2luZDogJ0Jsb2NrJyxcbiAgICAgICAgICBsb2M6IGxvY2F0aW9uKCksXG4gICAgICAgICAgc291cmNlOiAnJyxcbiAgICAgICAgICB2YWx1ZTogW10sXG4gICAgICAgICAgbWFya3VwOiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHBzZXVkby5tYXJrdXApKSxcbiAgICAgICAgICBwc2V1ZG86IHRydWUsXG4gICAgICAgIH1cbiAgICAgICAgYmxvY2sudmFsdWUucHVzaChwc2V1ZG8uYmxvY2spXG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IG5vZGUgb2YgdmFsdWUpIHtcbiAgICAgICAgaWYgKG5vZGUua2luZCA9PT0gJ0Vudmlyb25tZW50JyB8fCBub2RlLmtpbmQgPT09ICdCbG9jaycpIHtcbiAgICAgICAgICBibG9jay52YWx1ZS5wdXNoKG5vZGUpXG5cbiAgICAgICAgICBpZiAoT2JqZWN0LmtleXMocHNldWRvLm1hcmt1cCkubGVuZ3RoKSB7XG4gICAgICAgICAgICBwc2V1ZG9fYmxvY2soKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwc2V1ZG8uYmxvY2sgPSBudWxsXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICBpZiAobm9kZS5raW5kID09PSAnUmVndWxhckNvbW1hbmQnICYmIG1hcmt1cFtub2RlLmNvbW1hbmRdKSB7XG4gICAgICAgICAgaWYgKHBzZXVkby5tYXJrdXAuaXRhbGljcykgeyAvLyBodHRwczovL2dpdGh1Yi5jb20vY2l0YXRpb24tanMvYmlidGV4LXBhcnNlci1leHBlcmltZW50cy9jb21taXQvY2FlNDc1ZjA3NWEwNWQxYzA3NDQ4NWEwNjFiMDhlZDI0NTE3MGM3ZVxuICAgICAgICAgICAgZGVsZXRlIHBzZXVkby5tYXJrdXAuaXRhbGljc1xuICAgICAgICAgICAgaWYgKG1hcmt1cFtub2RlLmNvbW1hbmRdICE9PSAnaXRhbGljcycpIHBzZXVkby5tYXJrdXBbbWFya3VwW25vZGUuY29tbWFuZF1dID0gdHJ1ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwc2V1ZG8ubWFya3VwW21hcmt1cFtub2RlLmNvbW1hbmRdXSA9IHRydWVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoT2JqZWN0LmtleXMocHNldWRvLm1hcmt1cCkubGVuZ3RoKSB7XG4gICAgICAgICAgICBwc2V1ZG9fYmxvY2soKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgcHNldWRvLmJsb2NrID0gbnVsbFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwc2V1ZG8uYmxvY2spIHtcbiAgICAgICAgICBwc2V1ZG8uYmxvY2suc291cmNlICs9IG5vZGUuc291cmNlXG4gICAgICAgICAgcHNldWRvLmJsb2NrLnZhbHVlLnB1c2gobm9kZSlcblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJsb2NrLnZhbHVlLnB1c2gobm9kZSlcblxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGJsb2NrLnZhbHVlID0gYmxvY2sudmFsdWUuZmlsdGVyKG5vZGUgPT4gIShub2RlLnBzZXVkbyAmJiBub2RlLnZhbHVlLmxlbmd0aCA9PT0gMCkpXG5cbiAgICAgIHJldHVybiBibG9ja1xuICAgIH1cblxuXG4gIHBlZyRyZXN1bHQgPSBwZWckc3RhcnRSdWxlRnVuY3Rpb24oKTtcblxuICBpZiAocGVnJHJlc3VsdCAhPT0gcGVnJEZBSUxFRCAmJiBwZWckY3VyclBvcyA9PT0gaW5wdXQubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHBlZyRyZXN1bHQ7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHBlZyRyZXN1bHQgIT09IHBlZyRGQUlMRUQgJiYgcGVnJGN1cnJQb3MgPCBpbnB1dC5sZW5ndGgpIHtcbiAgICAgIHBlZyRmYWlsKHBlZyRlbmRFeHBlY3RhdGlvbigpKTtcbiAgICB9XG5cbiAgICB0aHJvdyBwZWckYnVpbGRTdHJ1Y3R1cmVkRXJyb3IoXG4gICAgICBwZWckbWF4RmFpbEV4cGVjdGVkLFxuICAgICAgcGVnJG1heEZhaWxQb3MgPCBpbnB1dC5sZW5ndGggPyBpbnB1dC5jaGFyQXQocGVnJG1heEZhaWxQb3MpIDogbnVsbCxcbiAgICAgIHBlZyRtYXhGYWlsUG9zIDwgaW5wdXQubGVuZ3RoXG4gICAgICAgID8gcGVnJGNvbXB1dGVMb2NhdGlvbihwZWckbWF4RmFpbFBvcywgcGVnJG1heEZhaWxQb3MgKyAxKVxuICAgICAgICA6IHBlZyRjb21wdXRlTG9jYXRpb24ocGVnJG1heEZhaWxQb3MsIHBlZyRtYXhGYWlsUG9zKVxuICAgICk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIFN5bnRheEVycm9yOiBwZWckU3ludGF4RXJyb3IsXG4gIHBhcnNlOiAgICAgICBwZWckcGFyc2Vcbn07XG4iLCJcInVzZSBzdHJpY3RcIjtcbi8vIE9yaWdpbmFsIHdvcmsgYnkgSGVucmlrIE11ZWhlIChjKSAyMDEwXG4vL1xuLy8gQ29tbW9uSlMgcG9ydCBieSBNaWtvbGEgTHlzZW5rbyAyMDEzXG4vL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5wYXJzZSA9IHZvaWQgMDtcbmNsYXNzIFBhcnNlRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IobWVzc2FnZSwgcGFyc2VyKSB7XG4gICAgICAgIG1lc3NhZ2UgKz0gYCBAICR7cGFyc2VyLnBvc31gO1xuICAgICAgICBpZiAocGFyc2VyLnBhcnNpbmcpXG4gICAgICAgICAgICBtZXNzYWdlICs9IGAgaW4gJHtKU09OLnN0cmluZ2lmeShwYXJzZXIucGFyc2luZyl9YDtcbiAgICAgICAgc3VwZXIobWVzc2FnZSk7XG4gICAgICAgIHRoaXMubmFtZSA9ICdQYXJzZUVycm9yJztcbiAgICB9XG59XG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLXRlbXBsYXRlXG5jb25zdCBsZXR0ZXIgPSBuZXcgUmVnRXhwKCdbJyArIFtcbiAgICAvLyBMZXR0ZXIsIFVwcGVyY2FzZVxuICAgIC9cXHUwMDQxLVxcdTAwNUFcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwREVcXHUwMTAwXFx1MDEwMlxcdTAxMDRcXHUwMTA2XFx1MDEwOFxcdTAxMEFcXHUwMTBDXFx1MDEwRVxcdTAxMTBcXHUwMTEyXFx1MDExNFxcdTAxMTZcXHUwMTE4XFx1MDExQVxcdTAxMUNcXHUwMTFFXFx1MDEyMFxcdTAxMjJcXHUwMTI0XFx1MDEyNlxcdTAxMjhcXHUwMTJBXFx1MDEyQ1xcdTAxMkVcXHUwMTMwXFx1MDEzMlxcdTAxMzRcXHUwMTM2XFx1MDEzOVxcdTAxM0JcXHUwMTNEXFx1MDEzRlxcdTAxNDFcXHUwMTQzXFx1MDE0NVxcdTAxNDdcXHUwMTRBXFx1MDE0Q1xcdTAxNEVcXHUwMTUwXFx1MDE1MlxcdTAxNTRcXHUwMTU2XFx1MDE1OFxcdTAxNUFcXHUwMTVDXFx1MDE1RVxcdTAxNjBcXHUwMTYyXFx1MDE2NFxcdTAxNjZcXHUwMTY4XFx1MDE2QVxcdTAxNkNcXHUwMTZFXFx1MDE3MFxcdTAxNzJcXHUwMTc0XFx1MDE3NlxcdTAxNzgtXFx1MDE3OVxcdTAxN0JcXHUwMTdEXFx1MDE4MS1cXHUwMTgyXFx1MDE4NFxcdTAxODYtXFx1MDE4N1xcdTAxODktXFx1MDE4QlxcdTAxOEUtXFx1MDE5MVxcdTAxOTMtXFx1MDE5NFxcdTAxOTYtXFx1MDE5OFxcdTAxOUMtXFx1MDE5RFxcdTAxOUYtXFx1MDFBMFxcdTAxQTJcXHUwMUE0XFx1MDFBNi1cXHUwMUE3XFx1MDFBOVxcdTAxQUNcXHUwMUFFLVxcdTAxQUZcXHUwMUIxLVxcdTAxQjNcXHUwMUI1XFx1MDFCNy1cXHUwMUI4XFx1MDFCQ1xcdTAxQzRcXHUwMUM3XFx1MDFDQVxcdTAxQ0RcXHUwMUNGXFx1MDFEMVxcdTAxRDNcXHUwMUQ1XFx1MDFEN1xcdTAxRDlcXHUwMURCXFx1MDFERVxcdTAxRTBcXHUwMUUyXFx1MDFFNFxcdTAxRTZcXHUwMUU4XFx1MDFFQVxcdTAxRUNcXHUwMUVFXFx1MDFGMVxcdTAxRjRcXHUwMUY2LVxcdTAxRjhcXHUwMUZBXFx1MDFGQ1xcdTAxRkVcXHUwMjAwXFx1MDIwMlxcdTAyMDRcXHUwMjA2XFx1MDIwOFxcdTAyMEFcXHUwMjBDXFx1MDIwRVxcdTAyMTBcXHUwMjEyXFx1MDIxNFxcdTAyMTZcXHUwMjE4XFx1MDIxQVxcdTAyMUNcXHUwMjFFXFx1MDIyMFxcdTAyMjJcXHUwMjI0XFx1MDIyNlxcdTAyMjhcXHUwMjJBXFx1MDIyQ1xcdTAyMkVcXHUwMjMwXFx1MDIzMlxcdTAyM0EtXFx1MDIzQlxcdTAyM0QtXFx1MDIzRVxcdTAyNDFcXHUwMjQzLVxcdTAyNDZcXHUwMjQ4XFx1MDI0QVxcdTAyNENcXHUwMjRFXFx1MDM3MFxcdTAzNzJcXHUwMzc2XFx1MDM3RlxcdTAzODZcXHUwMzg4LVxcdTAzOEFcXHUwMzhDXFx1MDM4RS1cXHUwMzhGXFx1MDM5MS1cXHUwM0ExXFx1MDNBMy1cXHUwM0FCXFx1MDNDRlxcdTAzRDItXFx1MDNENFxcdTAzRDhcXHUwM0RBXFx1MDNEQ1xcdTAzREVcXHUwM0UwXFx1MDNFMlxcdTAzRTRcXHUwM0U2XFx1MDNFOFxcdTAzRUFcXHUwM0VDXFx1MDNFRVxcdTAzRjRcXHUwM0Y3XFx1MDNGOS1cXHUwM0ZBXFx1MDNGRC1cXHUwNDJGXFx1MDQ2MFxcdTA0NjJcXHUwNDY0XFx1MDQ2NlxcdTA0NjhcXHUwNDZBXFx1MDQ2Q1xcdTA0NkVcXHUwNDcwXFx1MDQ3MlxcdTA0NzRcXHUwNDc2XFx1MDQ3OFxcdTA0N0FcXHUwNDdDXFx1MDQ3RVxcdTA0ODBcXHUwNDhBXFx1MDQ4Q1xcdTA0OEVcXHUwNDkwXFx1MDQ5MlxcdTA0OTRcXHUwNDk2XFx1MDQ5OFxcdTA0OUFcXHUwNDlDXFx1MDQ5RVxcdTA0QTBcXHUwNEEyXFx1MDRBNFxcdTA0QTZcXHUwNEE4XFx1MDRBQVxcdTA0QUNcXHUwNEFFXFx1MDRCMFxcdTA0QjJcXHUwNEI0XFx1MDRCNlxcdTA0QjhcXHUwNEJBXFx1MDRCQ1xcdTA0QkVcXHUwNEMwLVxcdTA0QzFcXHUwNEMzXFx1MDRDNVxcdTA0QzdcXHUwNEM5XFx1MDRDQlxcdTA0Q0RcXHUwNEQwXFx1MDREMlxcdTA0RDRcXHUwNEQ2XFx1MDREOFxcdTA0REFcXHUwNERDXFx1MDRERVxcdTA0RTBcXHUwNEUyXFx1MDRFNFxcdTA0RTZcXHUwNEU4XFx1MDRFQVxcdTA0RUNcXHUwNEVFXFx1MDRGMFxcdTA0RjJcXHUwNEY0XFx1MDRGNlxcdTA0RjhcXHUwNEZBXFx1MDRGQ1xcdTA0RkVcXHUwNTAwXFx1MDUwMlxcdTA1MDRcXHUwNTA2XFx1MDUwOFxcdTA1MEFcXHUwNTBDXFx1MDUwRVxcdTA1MTBcXHUwNTEyXFx1MDUxNFxcdTA1MTZcXHUwNTE4XFx1MDUxQVxcdTA1MUNcXHUwNTFFXFx1MDUyMFxcdTA1MjJcXHUwNTI0XFx1MDUyNlxcdTA1MjhcXHUwNTJBXFx1MDUyQ1xcdTA1MkVcXHUwNTMxLVxcdTA1NTZcXHUxMEEwLVxcdTEwQzVcXHUxMEM3XFx1MTBDRFxcdTEzQTAtXFx1MTNGNVxcdTFFMDBcXHUxRTAyXFx1MUUwNFxcdTFFMDZcXHUxRTA4XFx1MUUwQVxcdTFFMENcXHUxRTBFXFx1MUUxMFxcdTFFMTJcXHUxRTE0XFx1MUUxNlxcdTFFMThcXHUxRTFBXFx1MUUxQ1xcdTFFMUVcXHUxRTIwXFx1MUUyMlxcdTFFMjRcXHUxRTI2XFx1MUUyOFxcdTFFMkFcXHUxRTJDXFx1MUUyRVxcdTFFMzBcXHUxRTMyXFx1MUUzNFxcdTFFMzZcXHUxRTM4XFx1MUUzQVxcdTFFM0NcXHUxRTNFXFx1MUU0MFxcdTFFNDJcXHUxRTQ0XFx1MUU0NlxcdTFFNDhcXHUxRTRBXFx1MUU0Q1xcdTFFNEVcXHUxRTUwXFx1MUU1MlxcdTFFNTRcXHUxRTU2XFx1MUU1OFxcdTFFNUFcXHUxRTVDXFx1MUU1RVxcdTFFNjBcXHUxRTYyXFx1MUU2NFxcdTFFNjZcXHUxRTY4XFx1MUU2QVxcdTFFNkNcXHUxRTZFXFx1MUU3MFxcdTFFNzJcXHUxRTc0XFx1MUU3NlxcdTFFNzhcXHUxRTdBXFx1MUU3Q1xcdTFFN0VcXHUxRTgwXFx1MUU4MlxcdTFFODRcXHUxRTg2XFx1MUU4OFxcdTFFOEFcXHUxRThDXFx1MUU4RVxcdTFFOTBcXHUxRTkyXFx1MUU5NFxcdTFFOUVcXHUxRUEwXFx1MUVBMlxcdTFFQTRcXHUxRUE2XFx1MUVBOFxcdTFFQUFcXHUxRUFDXFx1MUVBRVxcdTFFQjBcXHUxRUIyXFx1MUVCNFxcdTFFQjZcXHUxRUI4XFx1MUVCQVxcdTFFQkNcXHUxRUJFXFx1MUVDMFxcdTFFQzJcXHUxRUM0XFx1MUVDNlxcdTFFQzhcXHUxRUNBXFx1MUVDQ1xcdTFFQ0VcXHUxRUQwXFx1MUVEMlxcdTFFRDRcXHUxRUQ2XFx1MUVEOFxcdTFFREFcXHUxRURDXFx1MUVERVxcdTFFRTBcXHUxRUUyXFx1MUVFNFxcdTFFRTZcXHUxRUU4XFx1MUVFQVxcdTFFRUNcXHUxRUVFXFx1MUVGMFxcdTFFRjJcXHUxRUY0XFx1MUVGNlxcdTFFRjhcXHUxRUZBXFx1MUVGQ1xcdTFFRkVcXHUxRjA4LVxcdTFGMEZcXHUxRjE4LVxcdTFGMURcXHUxRjI4LVxcdTFGMkZcXHUxRjM4LVxcdTFGM0ZcXHUxRjQ4LVxcdTFGNERcXHUxRjU5XFx1MUY1QlxcdTFGNURcXHUxRjVGXFx1MUY2OC1cXHUxRjZGXFx1MUZCOC1cXHUxRkJCXFx1MUZDOC1cXHUxRkNCXFx1MUZEOC1cXHUxRkRCXFx1MUZFOC1cXHUxRkVDXFx1MUZGOC1cXHUxRkZCXFx1MjEwMlxcdTIxMDdcXHUyMTBCLVxcdTIxMERcXHUyMTEwLVxcdTIxMTJcXHUyMTE1XFx1MjExOS1cXHUyMTFEXFx1MjEyNFxcdTIxMjZcXHUyMTI4XFx1MjEyQS1cXHUyMTJEXFx1MjEzMC1cXHUyMTMzXFx1MjEzRS1cXHUyMTNGXFx1MjE0NVxcdTIxODNcXHUyQzAwLVxcdTJDMkVcXHUyQzYwXFx1MkM2Mi1cXHUyQzY0XFx1MkM2N1xcdTJDNjlcXHUyQzZCXFx1MkM2RC1cXHUyQzcwXFx1MkM3MlxcdTJDNzVcXHUyQzdFLVxcdTJDODBcXHUyQzgyXFx1MkM4NFxcdTJDODZcXHUyQzg4XFx1MkM4QVxcdTJDOENcXHUyQzhFXFx1MkM5MFxcdTJDOTJcXHUyQzk0XFx1MkM5NlxcdTJDOThcXHUyQzlBXFx1MkM5Q1xcdTJDOUVcXHUyQ0EwXFx1MkNBMlxcdTJDQTRcXHUyQ0E2XFx1MkNBOFxcdTJDQUFcXHUyQ0FDXFx1MkNBRVxcdTJDQjBcXHUyQ0IyXFx1MkNCNFxcdTJDQjZcXHUyQ0I4XFx1MkNCQVxcdTJDQkNcXHUyQ0JFXFx1MkNDMFxcdTJDQzJcXHUyQ0M0XFx1MkNDNlxcdTJDQzhcXHUyQ0NBXFx1MkNDQ1xcdTJDQ0VcXHUyQ0QwXFx1MkNEMlxcdTJDRDRcXHUyQ0Q2XFx1MkNEOFxcdTJDREFcXHUyQ0RDXFx1MkNERVxcdTJDRTBcXHUyQ0UyXFx1MkNFQlxcdTJDRURcXHUyQ0YyXFx1QTY0MFxcdUE2NDJcXHVBNjQ0XFx1QTY0NlxcdUE2NDhcXHVBNjRBXFx1QTY0Q1xcdUE2NEVcXHVBNjUwXFx1QTY1MlxcdUE2NTRcXHVBNjU2XFx1QTY1OFxcdUE2NUFcXHVBNjVDXFx1QTY1RVxcdUE2NjBcXHVBNjYyXFx1QTY2NFxcdUE2NjZcXHVBNjY4XFx1QTY2QVxcdUE2NkNcXHVBNjgwXFx1QTY4MlxcdUE2ODRcXHVBNjg2XFx1QTY4OFxcdUE2OEFcXHVBNjhDXFx1QTY4RVxcdUE2OTBcXHVBNjkyXFx1QTY5NFxcdUE2OTZcXHVBNjk4XFx1QTY5QVxcdUE3MjJcXHVBNzI0XFx1QTcyNlxcdUE3MjhcXHVBNzJBXFx1QTcyQ1xcdUE3MkVcXHVBNzMyXFx1QTczNFxcdUE3MzZcXHVBNzM4XFx1QTczQVxcdUE3M0NcXHVBNzNFXFx1QTc0MFxcdUE3NDJcXHVBNzQ0XFx1QTc0NlxcdUE3NDhcXHVBNzRBXFx1QTc0Q1xcdUE3NEVcXHVBNzUwXFx1QTc1MlxcdUE3NTRcXHVBNzU2XFx1QTc1OFxcdUE3NUFcXHVBNzVDXFx1QTc1RVxcdUE3NjBcXHVBNzYyXFx1QTc2NFxcdUE3NjZcXHVBNzY4XFx1QTc2QVxcdUE3NkNcXHVBNzZFXFx1QTc3OVxcdUE3N0JcXHVBNzdELVxcdUE3N0VcXHVBNzgwXFx1QTc4MlxcdUE3ODRcXHVBNzg2XFx1QTc4QlxcdUE3OERcXHVBNzkwXFx1QTc5MlxcdUE3OTZcXHVBNzk4XFx1QTc5QVxcdUE3OUNcXHVBNzlFXFx1QTdBMFxcdUE3QTJcXHVBN0E0XFx1QTdBNlxcdUE3QThcXHVBN0FBLVxcdUE3QURcXHVBN0IwLVxcdUE3QjRcXHVBN0I2XFx1RkYyMS1cXHVGRjNBLy5zb3VyY2UsXG4gICAgLy8gTGV0dGVyLCBUaXRsZWNhc2VcbiAgICAvXFx1MDFDNVxcdTAxQzhcXHUwMUNCXFx1MDFGMlxcdTFGODgtXFx1MUY4RlxcdTFGOTgtXFx1MUY5RlxcdTFGQTgtXFx1MUZBRlxcdTFGQkNcXHUxRkNDXFx1MUZGQy8uc291cmNlLFxuICAgIC8vIExldHRlciwgTG93ZXJjYXNlXG4gICAgL1xcdTAwNjEtXFx1MDA3QVxcdTAwQjVcXHUwMERGLVxcdTAwRjZcXHUwMEY4LVxcdTAwRkZcXHUwMTAxXFx1MDEwM1xcdTAxMDVcXHUwMTA3XFx1MDEwOVxcdTAxMEJcXHUwMTBEXFx1MDEwRlxcdTAxMTFcXHUwMTEzXFx1MDExNVxcdTAxMTdcXHUwMTE5XFx1MDExQlxcdTAxMURcXHUwMTFGXFx1MDEyMVxcdTAxMjNcXHUwMTI1XFx1MDEyN1xcdTAxMjlcXHUwMTJCXFx1MDEyRFxcdTAxMkZcXHUwMTMxXFx1MDEzM1xcdTAxMzVcXHUwMTM3LVxcdTAxMzhcXHUwMTNBXFx1MDEzQ1xcdTAxM0VcXHUwMTQwXFx1MDE0MlxcdTAxNDRcXHUwMTQ2XFx1MDE0OC1cXHUwMTQ5XFx1MDE0QlxcdTAxNERcXHUwMTRGXFx1MDE1MVxcdTAxNTNcXHUwMTU1XFx1MDE1N1xcdTAxNTlcXHUwMTVCXFx1MDE1RFxcdTAxNUZcXHUwMTYxXFx1MDE2M1xcdTAxNjVcXHUwMTY3XFx1MDE2OVxcdTAxNkJcXHUwMTZEXFx1MDE2RlxcdTAxNzFcXHUwMTczXFx1MDE3NVxcdTAxNzdcXHUwMTdBXFx1MDE3Q1xcdTAxN0UtXFx1MDE4MFxcdTAxODNcXHUwMTg1XFx1MDE4OFxcdTAxOEMtXFx1MDE4RFxcdTAxOTJcXHUwMTk1XFx1MDE5OS1cXHUwMTlCXFx1MDE5RVxcdTAxQTFcXHUwMUEzXFx1MDFBNVxcdTAxQThcXHUwMUFBLVxcdTAxQUJcXHUwMUFEXFx1MDFCMFxcdTAxQjRcXHUwMUI2XFx1MDFCOS1cXHUwMUJBXFx1MDFCRC1cXHUwMUJGXFx1MDFDNlxcdTAxQzlcXHUwMUNDXFx1MDFDRVxcdTAxRDBcXHUwMUQyXFx1MDFENFxcdTAxRDZcXHUwMUQ4XFx1MDFEQVxcdTAxREMtXFx1MDFERFxcdTAxREZcXHUwMUUxXFx1MDFFM1xcdTAxRTVcXHUwMUU3XFx1MDFFOVxcdTAxRUJcXHUwMUVEXFx1MDFFRi1cXHUwMUYwXFx1MDFGM1xcdTAxRjVcXHUwMUY5XFx1MDFGQlxcdTAxRkRcXHUwMUZGXFx1MDIwMVxcdTAyMDNcXHUwMjA1XFx1MDIwN1xcdTAyMDlcXHUwMjBCXFx1MDIwRFxcdTAyMEZcXHUwMjExXFx1MDIxM1xcdTAyMTVcXHUwMjE3XFx1MDIxOVxcdTAyMUJcXHUwMjFEXFx1MDIxRlxcdTAyMjFcXHUwMjIzXFx1MDIyNVxcdTAyMjdcXHUwMjI5XFx1MDIyQlxcdTAyMkRcXHUwMjJGXFx1MDIzMVxcdTAyMzMtXFx1MDIzOVxcdTAyM0NcXHUwMjNGLVxcdTAyNDBcXHUwMjQyXFx1MDI0N1xcdTAyNDlcXHUwMjRCXFx1MDI0RFxcdTAyNEYtXFx1MDI5M1xcdTAyOTUtXFx1MDJBRlxcdTAzNzFcXHUwMzczXFx1MDM3N1xcdTAzN0ItXFx1MDM3RFxcdTAzOTBcXHUwM0FDLVxcdTAzQ0VcXHUwM0QwLVxcdTAzRDFcXHUwM0Q1LVxcdTAzRDdcXHUwM0Q5XFx1MDNEQlxcdTAzRERcXHUwM0RGXFx1MDNFMVxcdTAzRTNcXHUwM0U1XFx1MDNFN1xcdTAzRTlcXHUwM0VCXFx1MDNFRFxcdTAzRUYtXFx1MDNGM1xcdTAzRjVcXHUwM0Y4XFx1MDNGQi1cXHUwM0ZDXFx1MDQzMC1cXHUwNDVGXFx1MDQ2MVxcdTA0NjNcXHUwNDY1XFx1MDQ2N1xcdTA0NjlcXHUwNDZCXFx1MDQ2RFxcdTA0NkZcXHUwNDcxXFx1MDQ3M1xcdTA0NzVcXHUwNDc3XFx1MDQ3OVxcdTA0N0JcXHUwNDdEXFx1MDQ3RlxcdTA0ODFcXHUwNDhCXFx1MDQ4RFxcdTA0OEZcXHUwNDkxXFx1MDQ5M1xcdTA0OTVcXHUwNDk3XFx1MDQ5OVxcdTA0OUJcXHUwNDlEXFx1MDQ5RlxcdTA0QTFcXHUwNEEzXFx1MDRBNVxcdTA0QTdcXHUwNEE5XFx1MDRBQlxcdTA0QURcXHUwNEFGXFx1MDRCMVxcdTA0QjNcXHUwNEI1XFx1MDRCN1xcdTA0QjlcXHUwNEJCXFx1MDRCRFxcdTA0QkZcXHUwNEMyXFx1MDRDNFxcdTA0QzZcXHUwNEM4XFx1MDRDQVxcdTA0Q0NcXHUwNENFLVxcdTA0Q0ZcXHUwNEQxXFx1MDREM1xcdTA0RDVcXHUwNEQ3XFx1MDREOVxcdTA0REJcXHUwNEREXFx1MDRERlxcdTA0RTFcXHUwNEUzXFx1MDRFNVxcdTA0RTdcXHUwNEU5XFx1MDRFQlxcdTA0RURcXHUwNEVGXFx1MDRGMVxcdTA0RjNcXHUwNEY1XFx1MDRGN1xcdTA0RjlcXHUwNEZCXFx1MDRGRFxcdTA0RkZcXHUwNTAxXFx1MDUwM1xcdTA1MDVcXHUwNTA3XFx1MDUwOVxcdTA1MEJcXHUwNTBEXFx1MDUwRlxcdTA1MTFcXHUwNTEzXFx1MDUxNVxcdTA1MTdcXHUwNTE5XFx1MDUxQlxcdTA1MURcXHUwNTFGXFx1MDUyMVxcdTA1MjNcXHUwNTI1XFx1MDUyN1xcdTA1MjlcXHUwNTJCXFx1MDUyRFxcdTA1MkZcXHUwNTYxLVxcdTA1ODdcXHUxM0Y4LVxcdTEzRkRcXHUxRDAwLVxcdTFEMkJcXHUxRDZCLVxcdTFENzdcXHUxRDc5LVxcdTFEOUFcXHUxRTAxXFx1MUUwM1xcdTFFMDVcXHUxRTA3XFx1MUUwOVxcdTFFMEJcXHUxRTBEXFx1MUUwRlxcdTFFMTFcXHUxRTEzXFx1MUUxNVxcdTFFMTdcXHUxRTE5XFx1MUUxQlxcdTFFMURcXHUxRTFGXFx1MUUyMVxcdTFFMjNcXHUxRTI1XFx1MUUyN1xcdTFFMjlcXHUxRTJCXFx1MUUyRFxcdTFFMkZcXHUxRTMxXFx1MUUzM1xcdTFFMzVcXHUxRTM3XFx1MUUzOVxcdTFFM0JcXHUxRTNEXFx1MUUzRlxcdTFFNDFcXHUxRTQzXFx1MUU0NVxcdTFFNDdcXHUxRTQ5XFx1MUU0QlxcdTFFNERcXHUxRTRGXFx1MUU1MVxcdTFFNTNcXHUxRTU1XFx1MUU1N1xcdTFFNTlcXHUxRTVCXFx1MUU1RFxcdTFFNUZcXHUxRTYxXFx1MUU2M1xcdTFFNjVcXHUxRTY3XFx1MUU2OVxcdTFFNkJcXHUxRTZEXFx1MUU2RlxcdTFFNzFcXHUxRTczXFx1MUU3NVxcdTFFNzdcXHUxRTc5XFx1MUU3QlxcdTFFN0RcXHUxRTdGXFx1MUU4MVxcdTFFODNcXHUxRTg1XFx1MUU4N1xcdTFFODlcXHUxRThCXFx1MUU4RFxcdTFFOEZcXHUxRTkxXFx1MUU5M1xcdTFFOTUtXFx1MUU5RFxcdTFFOUZcXHUxRUExXFx1MUVBM1xcdTFFQTVcXHUxRUE3XFx1MUVBOVxcdTFFQUJcXHUxRUFEXFx1MUVBRlxcdTFFQjFcXHUxRUIzXFx1MUVCNVxcdTFFQjdcXHUxRUI5XFx1MUVCQlxcdTFFQkRcXHUxRUJGXFx1MUVDMVxcdTFFQzNcXHUxRUM1XFx1MUVDN1xcdTFFQzlcXHUxRUNCXFx1MUVDRFxcdTFFQ0ZcXHUxRUQxXFx1MUVEM1xcdTFFRDVcXHUxRUQ3XFx1MUVEOVxcdTFFREJcXHUxRUREXFx1MUVERlxcdTFFRTFcXHUxRUUzXFx1MUVFNVxcdTFFRTdcXHUxRUU5XFx1MUVFQlxcdTFFRURcXHUxRUVGXFx1MUVGMVxcdTFFRjNcXHUxRUY1XFx1MUVGN1xcdTFFRjlcXHUxRUZCXFx1MUVGRFxcdTFFRkYtXFx1MUYwN1xcdTFGMTAtXFx1MUYxNVxcdTFGMjAtXFx1MUYyN1xcdTFGMzAtXFx1MUYzN1xcdTFGNDAtXFx1MUY0NVxcdTFGNTAtXFx1MUY1N1xcdTFGNjAtXFx1MUY2N1xcdTFGNzAtXFx1MUY3RFxcdTFGODAtXFx1MUY4N1xcdTFGOTAtXFx1MUY5N1xcdTFGQTAtXFx1MUZBN1xcdTFGQjAtXFx1MUZCNFxcdTFGQjYtXFx1MUZCN1xcdTFGQkVcXHUxRkMyLVxcdTFGQzRcXHUxRkM2LVxcdTFGQzdcXHUxRkQwLVxcdTFGRDNcXHUxRkQ2LVxcdTFGRDdcXHUxRkUwLVxcdTFGRTdcXHUxRkYyLVxcdTFGRjRcXHUxRkY2LVxcdTFGRjdcXHUyMTBBXFx1MjEwRS1cXHUyMTBGXFx1MjExM1xcdTIxMkZcXHUyMTM0XFx1MjEzOVxcdTIxM0MtXFx1MjEzRFxcdTIxNDYtXFx1MjE0OVxcdTIxNEVcXHUyMTg0XFx1MkMzMC1cXHUyQzVFXFx1MkM2MVxcdTJDNjUtXFx1MkM2NlxcdTJDNjhcXHUyQzZBXFx1MkM2Q1xcdTJDNzFcXHUyQzczLVxcdTJDNzRcXHUyQzc2LVxcdTJDN0JcXHUyQzgxXFx1MkM4M1xcdTJDODVcXHUyQzg3XFx1MkM4OVxcdTJDOEJcXHUyQzhEXFx1MkM4RlxcdTJDOTFcXHUyQzkzXFx1MkM5NVxcdTJDOTdcXHUyQzk5XFx1MkM5QlxcdTJDOURcXHUyQzlGXFx1MkNBMVxcdTJDQTNcXHUyQ0E1XFx1MkNBN1xcdTJDQTlcXHUyQ0FCXFx1MkNBRFxcdTJDQUZcXHUyQ0IxXFx1MkNCM1xcdTJDQjVcXHUyQ0I3XFx1MkNCOVxcdTJDQkJcXHUyQ0JEXFx1MkNCRlxcdTJDQzFcXHUyQ0MzXFx1MkNDNVxcdTJDQzdcXHUyQ0M5XFx1MkNDQlxcdTJDQ0RcXHUyQ0NGXFx1MkNEMVxcdTJDRDNcXHUyQ0Q1XFx1MkNEN1xcdTJDRDlcXHUyQ0RCXFx1MkNERFxcdTJDREZcXHUyQ0UxXFx1MkNFMy1cXHUyQ0U0XFx1MkNFQ1xcdTJDRUVcXHUyQ0YzXFx1MkQwMC1cXHUyRDI1XFx1MkQyN1xcdTJEMkRcXHVBNjQxXFx1QTY0M1xcdUE2NDVcXHVBNjQ3XFx1QTY0OVxcdUE2NEJcXHVBNjREXFx1QTY0RlxcdUE2NTFcXHVBNjUzXFx1QTY1NVxcdUE2NTdcXHVBNjU5XFx1QTY1QlxcdUE2NURcXHVBNjVGXFx1QTY2MVxcdUE2NjNcXHVBNjY1XFx1QTY2N1xcdUE2NjlcXHVBNjZCXFx1QTY2RFxcdUE2ODFcXHVBNjgzXFx1QTY4NVxcdUE2ODdcXHVBNjg5XFx1QTY4QlxcdUE2OERcXHVBNjhGXFx1QTY5MVxcdUE2OTNcXHVBNjk1XFx1QTY5N1xcdUE2OTlcXHVBNjlCXFx1QTcyM1xcdUE3MjVcXHVBNzI3XFx1QTcyOVxcdUE3MkJcXHVBNzJEXFx1QTcyRi1cXHVBNzMxXFx1QTczM1xcdUE3MzVcXHVBNzM3XFx1QTczOVxcdUE3M0JcXHVBNzNEXFx1QTczRlxcdUE3NDFcXHVBNzQzXFx1QTc0NVxcdUE3NDdcXHVBNzQ5XFx1QTc0QlxcdUE3NERcXHVBNzRGXFx1QTc1MVxcdUE3NTNcXHVBNzU1XFx1QTc1N1xcdUE3NTlcXHVBNzVCXFx1QTc1RFxcdUE3NUZcXHVBNzYxXFx1QTc2M1xcdUE3NjVcXHVBNzY3XFx1QTc2OVxcdUE3NkJcXHVBNzZEXFx1QTc2RlxcdUE3NzEtXFx1QTc3OFxcdUE3N0FcXHVBNzdDXFx1QTc3RlxcdUE3ODFcXHVBNzgzXFx1QTc4NVxcdUE3ODdcXHVBNzhDXFx1QTc4RVxcdUE3OTFcXHVBNzkzLVxcdUE3OTVcXHVBNzk3XFx1QTc5OVxcdUE3OUJcXHVBNzlEXFx1QTc5RlxcdUE3QTFcXHVBN0EzXFx1QTdBNVxcdUE3QTdcXHVBN0E5XFx1QTdCNVxcdUE3QjdcXHVBN0ZBXFx1QUIzMC1cXHVBQjVBXFx1QUI2MC1cXHVBQjY1XFx1QUI3MC1cXHVBQkJGXFx1RkIwMC1cXHVGQjA2XFx1RkIxMy1cXHVGQjE3XFx1RkY0MS1cXHVGRjVBLy5zb3VyY2UsXG4gICAgLy8gTGV0dGVyLCBNb2RpZmllclxuICAgIC9cXHUwMkIwLVxcdTAyQzFcXHUwMkM2LVxcdTAyRDFcXHUwMkUwLVxcdTAyRTRcXHUwMkVDXFx1MDJFRVxcdTAzNzRcXHUwMzdBXFx1MDU1OVxcdTA2NDBcXHUwNkU1LVxcdTA2RTZcXHUwN0Y0LVxcdTA3RjVcXHUwN0ZBXFx1MDgxQVxcdTA4MjRcXHUwODI4XFx1MDk3MVxcdTBFNDZcXHUwRUM2XFx1MTBGQ1xcdTE3RDdcXHUxODQzXFx1MUFBN1xcdTFDNzgtXFx1MUM3RFxcdTFEMkMtXFx1MUQ2QVxcdTFENzhcXHUxRDlCLVxcdTFEQkZcXHUyMDcxXFx1MjA3RlxcdTIwOTAtXFx1MjA5Q1xcdTJDN0MtXFx1MkM3RFxcdTJENkZcXHUyRTJGXFx1MzAwNVxcdTMwMzEtXFx1MzAzNVxcdTMwM0JcXHUzMDlELVxcdTMwOUVcXHUzMEZDLVxcdTMwRkVcXHVBMDE1XFx1QTRGOC1cXHVBNEZEXFx1QTYwQ1xcdUE2N0ZcXHVBNjlDLVxcdUE2OURcXHVBNzE3LVxcdUE3MUZcXHVBNzcwXFx1QTc4OFxcdUE3RjgtXFx1QTdGOVxcdUE5Q0ZcXHVBOUU2XFx1QUE3MFxcdUFBRERcXHVBQUYzLVxcdUFBRjRcXHVBQjVDLVxcdUFCNUZcXHVGRjcwXFx1RkY5RS1cXHVGRjlGLy5zb3VyY2UsXG4gICAgLy8gTGV0dGVyLCBPdGhlclxuICAgIC9cXHUwMEFBXFx1MDBCQVxcdTAxQkJcXHUwMUMwLVxcdTAxQzNcXHUwMjk0XFx1MDVEMC1cXHUwNUVBXFx1MDVGMC1cXHUwNUYyXFx1MDYyMC1cXHUwNjNGXFx1MDY0MS1cXHUwNjRBXFx1MDY2RS1cXHUwNjZGXFx1MDY3MS1cXHUwNkQzXFx1MDZENVxcdTA2RUUtXFx1MDZFRlxcdTA2RkEtXFx1MDZGQ1xcdTA2RkZcXHUwNzEwXFx1MDcxMi1cXHUwNzJGXFx1MDc0RC1cXHUwN0E1XFx1MDdCMVxcdTA3Q0EtXFx1MDdFQVxcdTA4MDAtXFx1MDgxNVxcdTA4NDAtXFx1MDg1OFxcdTA4QTAtXFx1MDhCNFxcdTA5MDQtXFx1MDkzOVxcdTA5M0RcXHUwOTUwXFx1MDk1OC1cXHUwOTYxXFx1MDk3Mi1cXHUwOTgwXFx1MDk4NS1cXHUwOThDXFx1MDk4Ri1cXHUwOTkwXFx1MDk5My1cXHUwOUE4XFx1MDlBQS1cXHUwOUIwXFx1MDlCMlxcdTA5QjYtXFx1MDlCOVxcdTA5QkRcXHUwOUNFXFx1MDlEQy1cXHUwOUREXFx1MDlERi1cXHUwOUUxXFx1MDlGMC1cXHUwOUYxXFx1MEEwNS1cXHUwQTBBXFx1MEEwRi1cXHUwQTEwXFx1MEExMy1cXHUwQTI4XFx1MEEyQS1cXHUwQTMwXFx1MEEzMi1cXHUwQTMzXFx1MEEzNS1cXHUwQTM2XFx1MEEzOC1cXHUwQTM5XFx1MEE1OS1cXHUwQTVDXFx1MEE1RVxcdTBBNzItXFx1MEE3NFxcdTBBODUtXFx1MEE4RFxcdTBBOEYtXFx1MEE5MVxcdTBBOTMtXFx1MEFBOFxcdTBBQUEtXFx1MEFCMFxcdTBBQjItXFx1MEFCM1xcdTBBQjUtXFx1MEFCOVxcdTBBQkRcXHUwQUQwXFx1MEFFMC1cXHUwQUUxXFx1MEFGOVxcdTBCMDUtXFx1MEIwQ1xcdTBCMEYtXFx1MEIxMFxcdTBCMTMtXFx1MEIyOFxcdTBCMkEtXFx1MEIzMFxcdTBCMzItXFx1MEIzM1xcdTBCMzUtXFx1MEIzOVxcdTBCM0RcXHUwQjVDLVxcdTBCNURcXHUwQjVGLVxcdTBCNjFcXHUwQjcxXFx1MEI4M1xcdTBCODUtXFx1MEI4QVxcdTBCOEUtXFx1MEI5MFxcdTBCOTItXFx1MEI5NVxcdTBCOTktXFx1MEI5QVxcdTBCOUNcXHUwQjlFLVxcdTBCOUZcXHUwQkEzLVxcdTBCQTRcXHUwQkE4LVxcdTBCQUFcXHUwQkFFLVxcdTBCQjlcXHUwQkQwXFx1MEMwNS1cXHUwQzBDXFx1MEMwRS1cXHUwQzEwXFx1MEMxMi1cXHUwQzI4XFx1MEMyQS1cXHUwQzM5XFx1MEMzRFxcdTBDNTgtXFx1MEM1QVxcdTBDNjAtXFx1MEM2MVxcdTBDODUtXFx1MEM4Q1xcdTBDOEUtXFx1MEM5MFxcdTBDOTItXFx1MENBOFxcdTBDQUEtXFx1MENCM1xcdTBDQjUtXFx1MENCOVxcdTBDQkRcXHUwQ0RFXFx1MENFMC1cXHUwQ0UxXFx1MENGMS1cXHUwQ0YyXFx1MEQwNS1cXHUwRDBDXFx1MEQwRS1cXHUwRDEwXFx1MEQxMi1cXHUwRDNBXFx1MEQzRFxcdTBENEVcXHUwRDVGLVxcdTBENjFcXHUwRDdBLVxcdTBEN0ZcXHUwRDg1LVxcdTBEOTZcXHUwRDlBLVxcdTBEQjFcXHUwREIzLVxcdTBEQkJcXHUwREJEXFx1MERDMC1cXHUwREM2XFx1MEUwMS1cXHUwRTMwXFx1MEUzMi1cXHUwRTMzXFx1MEU0MC1cXHUwRTQ1XFx1MEU4MS1cXHUwRTgyXFx1MEU4NFxcdTBFODctXFx1MEU4OFxcdTBFOEFcXHUwRThEXFx1MEU5NC1cXHUwRTk3XFx1MEU5OS1cXHUwRTlGXFx1MEVBMS1cXHUwRUEzXFx1MEVBNVxcdTBFQTdcXHUwRUFBLVxcdTBFQUJcXHUwRUFELVxcdTBFQjBcXHUwRUIyLVxcdTBFQjNcXHUwRUJEXFx1MEVDMC1cXHUwRUM0XFx1MEVEQy1cXHUwRURGXFx1MEYwMFxcdTBGNDAtXFx1MEY0N1xcdTBGNDktXFx1MEY2Q1xcdTBGODgtXFx1MEY4Q1xcdTEwMDAtXFx1MTAyQVxcdTEwM0ZcXHUxMDUwLVxcdTEwNTVcXHUxMDVBLVxcdTEwNURcXHUxMDYxXFx1MTA2NS1cXHUxMDY2XFx1MTA2RS1cXHUxMDcwXFx1MTA3NS1cXHUxMDgxXFx1MTA4RVxcdTEwRDAtXFx1MTBGQVxcdTEwRkQtXFx1MTI0OFxcdTEyNEEtXFx1MTI0RFxcdTEyNTAtXFx1MTI1NlxcdTEyNThcXHUxMjVBLVxcdTEyNURcXHUxMjYwLVxcdTEyODhcXHUxMjhBLVxcdTEyOERcXHUxMjkwLVxcdTEyQjBcXHUxMkIyLVxcdTEyQjVcXHUxMkI4LVxcdTEyQkVcXHUxMkMwXFx1MTJDMi1cXHUxMkM1XFx1MTJDOC1cXHUxMkQ2XFx1MTJEOC1cXHUxMzEwXFx1MTMxMi1cXHUxMzE1XFx1MTMxOC1cXHUxMzVBXFx1MTM4MC1cXHUxMzhGXFx1MTQwMS1cXHUxNjZDXFx1MTY2Ri1cXHUxNjdGXFx1MTY4MS1cXHUxNjlBXFx1MTZBMC1cXHUxNkVBXFx1MTZGMS1cXHUxNkY4XFx1MTcwMC1cXHUxNzBDXFx1MTcwRS1cXHUxNzExXFx1MTcyMC1cXHUxNzMxXFx1MTc0MC1cXHUxNzUxXFx1MTc2MC1cXHUxNzZDXFx1MTc2RS1cXHUxNzcwXFx1MTc4MC1cXHUxN0IzXFx1MTdEQ1xcdTE4MjAtXFx1MTg0MlxcdTE4NDQtXFx1MTg3N1xcdTE4ODAtXFx1MThBOFxcdTE4QUFcXHUxOEIwLVxcdTE4RjVcXHUxOTAwLVxcdTE5MUVcXHUxOTUwLVxcdTE5NkRcXHUxOTcwLVxcdTE5NzRcXHUxOTgwLVxcdTE5QUJcXHUxOUIwLVxcdTE5QzlcXHUxQTAwLVxcdTFBMTZcXHUxQTIwLVxcdTFBNTRcXHUxQjA1LVxcdTFCMzNcXHUxQjQ1LVxcdTFCNEJcXHUxQjgzLVxcdTFCQTBcXHUxQkFFLVxcdTFCQUZcXHUxQkJBLVxcdTFCRTVcXHUxQzAwLVxcdTFDMjNcXHUxQzRELVxcdTFDNEZcXHUxQzVBLVxcdTFDNzdcXHUxQ0U5LVxcdTFDRUNcXHUxQ0VFLVxcdTFDRjFcXHUxQ0Y1LVxcdTFDRjZcXHUyMTM1LVxcdTIxMzhcXHUyRDMwLVxcdTJENjdcXHUyRDgwLVxcdTJEOTZcXHUyREEwLVxcdTJEQTZcXHUyREE4LVxcdTJEQUVcXHUyREIwLVxcdTJEQjZcXHUyREI4LVxcdTJEQkVcXHUyREMwLVxcdTJEQzZcXHUyREM4LVxcdTJEQ0VcXHUyREQwLVxcdTJERDZcXHUyREQ4LVxcdTJEREVcXHUzMDA2XFx1MzAzQ1xcdTMwNDEtXFx1MzA5NlxcdTMwOUZcXHUzMEExLVxcdTMwRkFcXHUzMEZGXFx1MzEwNS1cXHUzMTJEXFx1MzEzMS1cXHUzMThFXFx1MzFBMC1cXHUzMUJBXFx1MzFGMC1cXHUzMUZGXFx1MzQwMC1cXHU0REI1XFx1NEUwMC1cXHU5RkQ1XFx1QTAwMC1cXHVBMDE0XFx1QTAxNi1cXHVBNDhDXFx1QTREMC1cXHVBNEY3XFx1QTUwMC1cXHVBNjBCXFx1QTYxMC1cXHVBNjFGXFx1QTYyQS1cXHVBNjJCXFx1QTY2RVxcdUE2QTAtXFx1QTZFNVxcdUE3OEZcXHVBN0Y3XFx1QTdGQi1cXHVBODAxXFx1QTgwMy1cXHVBODA1XFx1QTgwNy1cXHVBODBBXFx1QTgwQy1cXHVBODIyXFx1QTg0MC1cXHVBODczXFx1QTg4Mi1cXHVBOEIzXFx1QThGMi1cXHVBOEY3XFx1QThGQlxcdUE4RkRcXHVBOTBBLVxcdUE5MjVcXHVBOTMwLVxcdUE5NDZcXHVBOTYwLVxcdUE5N0NcXHVBOTg0LVxcdUE5QjJcXHVBOUUwLVxcdUE5RTRcXHVBOUU3LVxcdUE5RUZcXHVBOUZBLVxcdUE5RkVcXHVBQTAwLVxcdUFBMjhcXHVBQTQwLVxcdUFBNDJcXHVBQTQ0LVxcdUFBNEJcXHVBQTYwLVxcdUFBNkZcXHVBQTcxLVxcdUFBNzZcXHVBQTdBXFx1QUE3RS1cXHVBQUFGXFx1QUFCMVxcdUFBQjUtXFx1QUFCNlxcdUFBQjktXFx1QUFCRFxcdUFBQzBcXHVBQUMyXFx1QUFEQi1cXHVBQURDXFx1QUFFMC1cXHVBQUVBXFx1QUFGMlxcdUFCMDEtXFx1QUIwNlxcdUFCMDktXFx1QUIwRVxcdUFCMTEtXFx1QUIxNlxcdUFCMjAtXFx1QUIyNlxcdUFCMjgtXFx1QUIyRVxcdUFCQzAtXFx1QUJFMlxcdUFDMDAtXFx1RDdBM1xcdUQ3QjAtXFx1RDdDNlxcdUQ3Q0ItXFx1RDdGQlxcdUY5MDAtXFx1RkE2RFxcdUZBNzAtXFx1RkFEOVxcdUZCMURcXHVGQjFGLVxcdUZCMjhcXHVGQjJBLVxcdUZCMzZcXHVGQjM4LVxcdUZCM0NcXHVGQjNFXFx1RkI0MC1cXHVGQjQxXFx1RkI0My1cXHVGQjQ0XFx1RkI0Ni1cXHVGQkIxXFx1RkJEMy1cXHVGRDNEXFx1RkQ1MC1cXHVGRDhGXFx1RkQ5Mi1cXHVGREM3XFx1RkRGMC1cXHVGREZCXFx1RkU3MC1cXHVGRTc0XFx1RkU3Ni1cXHVGRUZDXFx1RkY2Ni1cXHVGRjZGXFx1RkY3MS1cXHVGRjlEXFx1RkZBMC1cXHVGRkJFXFx1RkZDMi1cXHVGRkM3XFx1RkZDQS1cXHVGRkNGXFx1RkZEMi1cXHVGRkQ3XFx1RkZEQS1cXHVGRkRDLy5zb3VyY2UsXG5dLmpvaW4oJycpICsgJ10nKTtcbmNsYXNzIEJpYnRleFBhcnNlciB7XG4gICAgcGFyc2UoaW5wdXQsIG9wdGlvbnMgPSB7fSkge1xuICAgICAgICAvLyB0aGlzLl9wcm9ncmVzcyA9IDBcbiAgICAgICAgdGhpcy5wb3MgPSAwO1xuICAgICAgICB0aGlzLmlucHV0ID0gaW5wdXQ7XG4gICAgICAgIHRoaXMubWF4X2VudHJpZXMgPSBvcHRpb25zLm1heF9lbnRyaWVzIHx8IDA7XG4gICAgICAgIHRoaXMuZW50cmllcyA9IDA7XG4gICAgICAgIHRoaXMucGFyc2luZyA9IG51bGw7XG4gICAgICAgIHRoaXMuY2h1bmtzID0gW107XG4gICAgICAgIGlmIChvcHRpb25zLmFzeW5jKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5iaWJ0ZXhBc3luYygpLnRoZW4oKCkgPT4gdGhpcy5jaHVua3MpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5iaWJ0ZXgoKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNodW5rcztcbiAgICAgICAgfVxuICAgIH1cbiAgICBpc1doaXRlc3BhY2UocywgaG9yaXpvbnRhbE9ubHkgPSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gKHMgPT09ICcgJyB8fCBzID09PSAnXFx0JyB8fCAoIWhvcml6b250YWxPbmx5ICYmIChzID09PSAnXFxyJyB8fCBzID09PSAnXFxuJykpKTtcbiAgICB9XG4gICAgbWF0Y2gocykge1xuICAgICAgICB0aGlzLnNraXBXaGl0ZXNwYWNlKCk7XG4gICAgICAgIGlmICh0aGlzLmlucHV0LnN1YnN0cih0aGlzLnBvcywgcy5sZW5ndGgpICE9PSBzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcihgVG9rZW4gbWlzbWF0Y2gsIGV4cGVjdGVkICR7SlNPTi5zdHJpbmdpZnkocyl9LCBmb3VuZCAke0pTT04uc3RyaW5naWZ5KHRoaXMuaW5wdXQuc3Vic3RyKHRoaXMucG9zLCAyMCkpfS4uLmAsIHRoaXMpOyAvLyB0c2xpbnQ6ZGlzYWJsZS1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBvcyArPSBzLmxlbmd0aDtcbiAgICAgICAgdGhpcy5za2lwV2hpdGVzcGFjZSgpO1xuICAgIH1cbiAgICB0cnlNYXRjaChzKSB7XG4gICAgICAgIHRoaXMuc2tpcFdoaXRlc3BhY2UoKTtcbiAgICAgICAgcmV0dXJuICh0aGlzLmlucHV0LnN1YnN0cih0aGlzLnBvcywgcy5sZW5ndGgpID09PSBzKTtcbiAgICAgICAgLy8gdGhpcy5za2lwV2hpdGVzcGFjZSgpXG4gICAgfVxuICAgIHNraXBXaGl0ZXNwYWNlKCkge1xuICAgICAgICB3aGlsZSAodGhpcy5wb3MgPCB0aGlzLmlucHV0Lmxlbmd0aCAmJiB0aGlzLmlzV2hpdGVzcGFjZSh0aGlzLmlucHV0W3RoaXMucG9zXSkpXG4gICAgICAgICAgICB0aGlzLnBvcysrO1xuICAgICAgICAvLyBzaGFkeVxuICAgICAgICBpZiAodGhpcy5pbnB1dFt0aGlzLnBvc10gPT09ICclJykge1xuICAgICAgICAgICAgd2hpbGUgKHRoaXMucG9zIDwgdGhpcy5pbnB1dC5sZW5ndGggJiYgdGhpcy5pbnB1dFt0aGlzLnBvc10gIT09ICdcXG4nKVxuICAgICAgICAgICAgICAgIHRoaXMucG9zKys7XG4gICAgICAgICAgICB3aGlsZSAodGhpcy5wb3MgPCB0aGlzLmlucHV0Lmxlbmd0aCAmJiB0aGlzLmlzV2hpdGVzcGFjZSh0aGlzLmlucHV0W3RoaXMucG9zXSkpXG4gICAgICAgICAgICAgICAgdGhpcy5wb3MrKztcbiAgICAgICAgfVxuICAgIH1cbiAgICB2YWx1ZV9icmFjZXMoKSB7XG4gICAgICAgIGxldCBicmFjZWNvdW50ID0gMDtcbiAgICAgICAgdGhpcy5tYXRjaCgneycpO1xuICAgICAgICBjb25zdCBzdGFydCA9IHRoaXMucG9zO1xuICAgICAgICBsZXQgbWF0aCA9IGZhbHNlO1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLmlucHV0W3RoaXMucG9zXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ1xcXFwnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcyArPSAxO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd7JzpcbiAgICAgICAgICAgICAgICAgICAgYnJhY2Vjb3VudCsrO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd9JzpcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJyYWNlY291bnQgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKCdVbmNsb3NlZCBtYXRoIHNlY3Rpb24nLCB0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbnB1dC5zdWJzdHJpbmcoc3RhcnQsIHRoaXMucG9zIC0gMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJhY2Vjb3VudC0tO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICckJzpcbiAgICAgICAgICAgICAgICAgICAgbWF0aCA9ICFtYXRoO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucG9zKys7XG4gICAgICAgICAgICBpZiAodGhpcy5wb3MgPj0gdGhpcy5pbnB1dC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcihgVW50ZXJtaW5hdGVkIGJyYWNlLXZhbHVlICR7SlNPTi5zdHJpbmdpZnkodGhpcy5pbnB1dC5zdWJzdHIoc3RhcnQsIDIwKSl9YCwgdGhpcyk7IC8vIHRzbGludDpkaXNhYmxlLWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHZhbHVlX3F1b3RlcygpIHtcbiAgICAgICAgdGhpcy5tYXRjaCgnXCInKTtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLnBvcztcbiAgICAgICAgbGV0IGJyYWNlY291bnQgPSAwO1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgc3dpdGNoICh0aGlzLmlucHV0W3RoaXMucG9zXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ1xcXFwnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcyArPSAxO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd7JzpcbiAgICAgICAgICAgICAgICAgICAgYnJhY2Vjb3VudCsrO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd9JzpcbiAgICAgICAgICAgICAgICAgICAgYnJhY2Vjb3VudC0tO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdcIic6XG4gICAgICAgICAgICAgICAgICAgIGlmIChicmFjZWNvdW50IDw9IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbnB1dC5zdWJzdHJpbmcoc3RhcnQsIHRoaXMucG9zIC0gMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucG9zKys7XG4gICAgICAgICAgICBpZiAodGhpcy5wb3MgPj0gdGhpcy5pbnB1dC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcihgVW50ZXJtaW5hdGVkIHF1b3RlLXZhbHVlICR7SlNPTi5zdHJpbmdpZnkodGhpcy5pbnB1dC5zdWJzdHIoc3RhcnQsIDIwKSl9YCwgdGhpcyk7IC8vIHRzbGludDpkaXNhYmxlLWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHNpbmdsZV92YWx1ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMudHJ5TWF0Y2goJ3snKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVfYnJhY2VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy50cnlNYXRjaCgnXCInKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudmFsdWVfcXVvdGVzKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5rZXkoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB2YWx1ZSgpIHtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gW107XG4gICAgICAgIHZhbHVlcy5wdXNoKHRoaXMuc2luZ2xlX3ZhbHVlKCkpO1xuICAgICAgICB3aGlsZSAodGhpcy50cnlNYXRjaCgnIycpKSB7XG4gICAgICAgICAgICB0aGlzLm1hdGNoKCcjJyk7XG4gICAgICAgICAgICB2YWx1ZXMucHVzaCh0aGlzLnNpbmdsZV92YWx1ZSgpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWVzLmpvaW4oJycpO1xuICAgIH1cbiAgICBrZXkoYWxsb3dVbmljb2RlID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLnBvcztcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnBvcyA9PT0gdGhpcy5pbnB1dC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VFcnJvcignUnVuYXdheSBrZXknLCB0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmlucHV0W3RoaXMucG9zXS5tYXRjaCgvWydhLXpBLVowLTkmO186XFxcXC4vLV0vKSkge1xuICAgICAgICAgICAgICAgIHRoaXMucG9zKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChhbGxvd1VuaWNvZGUgJiYgdGhpcy5pbnB1dFt0aGlzLnBvc10ubWF0Y2gobGV0dGVyKSkge1xuICAgICAgICAgICAgICAgIHRoaXMucG9zKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbnB1dC5zdWJzdHJpbmcoc3RhcnQsIHRoaXMucG9zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBrZXlfZXF1YWxzX3ZhbHVlKCkge1xuICAgICAgICBjb25zdCBrZXkgPSB0aGlzLmtleSgpO1xuICAgICAgICBpZiAoIXRoaXMudHJ5TWF0Y2goJz0nKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlRXJyb3IoYC4uLiA9IHZhbHVlIGV4cGVjdGVkLCBlcXVhbHMgc2lnbiBtaXNzaW5nOiAke0pTT04uc3RyaW5naWZ5KHRoaXMuaW5wdXQuc3Vic3RyKHRoaXMucG9zLCAyMCkpfS4uLmAsIHRoaXMpOyAvLyB0c2xpbnQ6ZGlzYWJsZS1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1hdGNoKCc9Jyk7XG4gICAgICAgIGNvbnN0IHZhbCA9IHRoaXMudmFsdWUoKTtcbiAgICAgICAgcmV0dXJuIFtrZXksIHZhbF07XG4gICAgfVxuICAgIGtleV92YWx1ZV9saXN0KCkge1xuICAgICAgICB0aGlzLmtleV9lcXVhbHNfdmFsdWUoKTtcbiAgICAgICAgd2hpbGUgKHRoaXMudHJ5TWF0Y2goJywnKSkge1xuICAgICAgICAgICAgdGhpcy5tYXRjaCgnLCcpO1xuICAgICAgICAgICAgLy8gZml4ZXMgcHJvYmxlbXMgd2l0aCBjb21tYXMgYXQgdGhlIGVuZCBvZiBhIGxpc3RcbiAgICAgICAgICAgIGlmICh0aGlzLnRyeU1hdGNoKCd9JykpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMua2V5X2VxdWFsc192YWx1ZSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVudHJ5KGQpIHtcbiAgICAgICAgdGhpcy5wYXJzaW5nID0gdGhpcy5rZXkodHJ1ZSk7XG4gICAgICAgIHRoaXMubWF0Y2goJywnKTtcbiAgICAgICAgdGhpcy5rZXlfdmFsdWVfbGlzdCgpO1xuICAgIH1cbiAgICBkaXJlY3RpdmUoKSB7XG4gICAgICAgIHRoaXMubWF0Y2goJ0AnKTtcbiAgICAgICAgcmV0dXJuIGBAJHt0aGlzLmtleSgpfWAudG9Mb3dlckNhc2UoKTtcbiAgICB9XG4gICAgc3RyaW5nKCkge1xuICAgICAgICB0aGlzLmtleV9lcXVhbHNfdmFsdWUoKTtcbiAgICB9XG4gICAgcHJlYW1ibGUoKSB7XG4gICAgICAgIHRoaXMudmFsdWUoKTtcbiAgICB9XG4gICAgY29tbWVudCgpIHtcbiAgICAgICAgd2hpbGUgKHRoaXMuaXNXaGl0ZXNwYWNlKHRoaXMuaW5wdXRbdGhpcy5wb3NdLCB0cnVlKSlcbiAgICAgICAgICAgIHRoaXMucG9zKys7XG4gICAgICAgIGlmICh0aGlzLmlucHV0W3RoaXMucG9zXSA9PT0gJ3snKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlX2JyYWNlcygpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlICh0aGlzLmlucHV0W3RoaXMucG9zXSAhPT0gJ1xcbicgJiYgdGhpcy5wb3MgPCB0aGlzLmlucHV0Lmxlbmd0aClcbiAgICAgICAgICAgIHRoaXMucG9zKys7XG4gICAgfVxuICAgIC8qXG4gICAgcHJpdmF0ZSBwcm9ncmVzcygpIHtcbiAgICAgIGNvbnN0IHByb2dyZXNzID0gTWF0aC5yb3VuZCgodGhpcy5wb3MgLyB0aGlzLmlucHV0Lmxlbmd0aCAqIDEwMCkgLyA1KSAqIDUgLy8gdHNsaW50OmRpc2FibGUtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgICBpZiAodGhpcy5fcHJvZ3Jlc3MgIT09IHByb2dyZXNzKSB7XG4gICAgICAgIHRoaXMuX3Byb2dyZXNzID0gcHJvZ3Jlc3NcbiAgICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoYCAoJHt0aGlzLl9wcm9ncmVzc30lKSBgKVxuICAgICAgfVxuICAgIH1cbiAgICAqL1xuICAgIGhhc01vcmUoKSB7XG4gICAgICAgIGlmICh0aGlzLm1heF9lbnRyaWVzICYmIHRoaXMuZW50cmllcyA+PSB0aGlzLm1heF9lbnRyaWVzKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXR1cm4gKHRoaXMucG9zIDwgdGhpcy5pbnB1dC5sZW5ndGgpO1xuICAgIH1cbiAgICBiaWJ0ZXgoKSB7XG4gICAgICAgIHdoaWxlICh0aGlzLmhhc01vcmUoKSkge1xuICAgICAgICAgICAgdGhpcy5wYXJzZU5leHQoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBiaWJ0ZXhBc3luYygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzTW9yZSgpID8gKG5ldyBQcm9taXNlKHJlc29sdmUgPT4gcmVzb2x2ZSh0aGlzLnBhcnNlTmV4dCgpKSkpLnRoZW4oKCkgPT4gdGhpcy5iaWJ0ZXhBc3luYygpKSA6IFByb21pc2UucmVzb2x2ZShudWxsKTtcbiAgICB9XG4gICAgcGFyc2VOZXh0KCkge1xuICAgICAgICAvLyB0aGlzLnByb2dyZXNzKClcbiAgICAgICAgY29uc3QgY2h1bmsgPSB7XG4gICAgICAgICAgICBvZmZzZXQ6IHtcbiAgICAgICAgICAgICAgICBwb3M6IHRoaXMucG9zLFxuICAgICAgICAgICAgICAgIGxpbmU6IHRoaXMuaW5wdXQuc3Vic3RyaW5nKDAsIHRoaXMucG9zKS5zcGxpdCgnXFxuJykubGVuZ3RoIC0gMSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogbnVsbCxcbiAgICAgICAgICAgIHRleHQ6IG51bGwsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuc2tpcFdoaXRlc3BhY2UoKTtcbiAgICAgICAgaWYgKHRoaXMucG9zID49IHRoaXMuaW5wdXQubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBsZXQgZ3VhcmQgPSAnJztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGQgPSB0aGlzLmRpcmVjdGl2ZSgpO1xuICAgICAgICAgICAgc3dpdGNoIChkKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnQHN0cmluZyc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWF0Y2goJ3snKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaCgnfScpO1xuICAgICAgICAgICAgICAgICAgICBjaHVuay5zdHJpbmdEZWNsYXJhdGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ0BwcmVhbWJsZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWF0Y2goJ3snKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmVhbWJsZSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hdGNoKCd9Jyk7XG4gICAgICAgICAgICAgICAgICAgIGNodW5rLnByZWFtYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnQGNvbW1lbnQnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbW1lbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgY2h1bmsuY29tbWVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRyeU1hdGNoKCd7JykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGd1YXJkID0gJ3t9JztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLnRyeU1hdGNoKCcoJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGd1YXJkID0gJygpJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZUVycm9yKGBUb2tlbiBtaXNtYXRjaCwgZXhwZWN0ZWQgJ3snIG9yICcoJywgZm91bmQgJHtKU09OLnN0cmluZ2lmeSh0aGlzLmlucHV0LnN1YnN0cih0aGlzLnBvcywgMjApKX0uLi5gLCB0aGlzKTsgLy8gdHNsaW50OmRpc2FibGUtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaChndWFyZFswXSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW50cnkoZCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWF0Y2goZ3VhcmRbMV0pO1xuICAgICAgICAgICAgICAgICAgICBjaHVuay5lbnRyeSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW50cmllcysrO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBpZiAoZXJyLm5hbWUgIT09ICdQYXJzZUVycm9yJylcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICBjaHVuay5lcnJvciA9IGVyci5tZXNzYWdlLFxuICAgICAgICAgICAgICAgIC8vIHNraXAgYWhlYWQgdG8gdGhlIG5leHQgQCBhbmQgdHJ5IGFnYWluXG4gICAgICAgICAgICAgICAgdGhpcy5wb3MgPSBjaHVuay5vZmZzZXQucG9zICsgMTtcbiAgICAgICAgICAgIHdoaWxlICh0aGlzLnBvcyA8IHRoaXMuaW5wdXQubGVuZ3RoICYmIHRoaXMuaW5wdXRbdGhpcy5wb3NdICE9PSAnQCcpXG4gICAgICAgICAgICAgICAgdGhpcy5wb3MrKztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0ZXh0ID0gdGhpcy5pbnB1dC5zdWJzdHJpbmcoY2h1bmsub2Zmc2V0LnBvcywgdGhpcy5wb3MpO1xuICAgICAgICBjb25zdCBsYXN0ID0gdGhpcy5jaHVua3MubGVuZ3RoIC0gMTtcbiAgICAgICAgaWYgKGNodW5rLmVycm9yICYmIHRoaXMuY2h1bmtzLmxlbmd0aCAmJiB0aGlzLmNodW5rc1tsYXN0XS5lcnJvcikge1xuICAgICAgICAgICAgdGhpcy5jaHVua3NbbGFzdF0udGV4dCArPSB0ZXh0O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY2h1bmsudGV4dCA9IHRleHQ7XG4gICAgICAgICAgICB0aGlzLmNodW5rcy5wdXNoKGNodW5rKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbi8qKlxuICogUmVhZHMgdGhlIGJpYnRleCBpbnB1dCBhbmQgc3BsaXRzIGl0IGludG8gc2VwYXJhdGUgY2h1bmtzIG9mIGBAc3RyaW5nYHMsIGBAY29tbWVudGBzLCBhbmQgYmlidGV4IGVudHJpZXMuIFVzZWZ1bCBmb3IgZGV0ZWN0aW5nIGlmIGEgZmlsZSBpcyBiaWJ0ZXggZmlsZSBhbmQgZm9yIGZpbHRlcmluZyBvdXQgYmFzaWMgZXJyb3JzIHRoYXQgd291bGRcbiAqIG1ha2UgdGhlIG1vcmUgc29waGlzdGljYXRlZCBbW2JpYnRleC5wYXJzZV1dIHJlamVjdCB0aGUgd2hvbGUgZmlsZVxuICpcbiAqIEByZXR1cm5zIGFycmF5IG9mIGNodW5rcywgd2l0aCBtYXJrZXJzIGZvciB0eXBlIGFuZCBlcnJvcnMgKGlmIGFueSkgZm91bmQuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlKGlucHV0LCBvcHRpb25zID0ge30pIHtcbiAgICByZXR1cm4gKG5ldyBCaWJ0ZXhQYXJzZXIpLnBhcnNlKGlucHV0LCBvcHRpb25zKTtcbn1cbmV4cG9ydHMucGFyc2UgPSBwYXJzZTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNodW5rZXIuanMubWFwIiwibW9kdWxlLmV4cG9ydHMgPSB7XG4gIGFzY2lpOiByZXF1aXJlKCcuL3RhYmxlcy9hc2NpaS5qc29uJyksXG4gIGFzY2lpX2JpYnRleF9jcmVhdG9yOiByZXF1aXJlKCcuL3RhYmxlcy9hc2NpaS1iaWJ0ZXgtY3JlYXRvci5qc29uJyksXG4gIHVuaWNvZGU6IHJlcXVpcmUoJy4vdGFibGVzL3VuaWNvZGUuanNvbicpLFxuICBsYXRleDogcmVxdWlyZSgnLi90YWJsZXMvbGF0ZXguanNvbicpLFxuICBkaWFjcml0aWNzOiByZXF1aXJlKCcuL3RhYmxlcy9kaWFjcml0aWNzLmpzb24nKSxcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IFtcbiAgICB7XG4gICAgICAgICduYW1lJzogJ0MnLFxuICAgICAgICAnYWxpYXMnOiAnT3RoZXInLFxuICAgICAgICAnaXNCbXBMYXN0JzogdHJ1ZSxcbiAgICAgICAgJ2JtcCc6ICdcXDAtXFx4MUZcXHg3Ri1cXHg5RlxceEFEXFx1MDM3OFxcdTAzNzlcXHUwMzgwLVxcdTAzODNcXHUwMzhCXFx1MDM4RFxcdTAzQTJcXHUwNTMwXFx1MDU1N1xcdTA1NThcXHUwNThCXFx1MDU4Q1xcdTA1OTBcXHUwNUM4LVxcdTA1Q0ZcXHUwNUVCLVxcdTA1RUVcXHUwNUY1LVxcdTA2MDVcXHUwNjFDXFx1MDYxRFxcdTA2RERcXHUwNzBFXFx1MDcwRlxcdTA3NEJcXHUwNzRDXFx1MDdCMi1cXHUwN0JGXFx1MDdGQlxcdTA3RkNcXHUwODJFXFx1MDgyRlxcdTA4M0ZcXHUwODVDXFx1MDg1RFxcdTA4NUZcXHUwODZCLVxcdTA4OUZcXHUwOEI1XFx1MDhDOC1cXHUwOEQyXFx1MDhFMlxcdTA5ODRcXHUwOThEXFx1MDk4RVxcdTA5OTFcXHUwOTkyXFx1MDlBOVxcdTA5QjFcXHUwOUIzLVxcdTA5QjVcXHUwOUJBXFx1MDlCQlxcdTA5QzVcXHUwOUM2XFx1MDlDOVxcdTA5Q0FcXHUwOUNGLVxcdTA5RDZcXHUwOUQ4LVxcdTA5REJcXHUwOURFXFx1MDlFNFxcdTA5RTVcXHUwOUZGXFx1MEEwMFxcdTBBMDRcXHUwQTBCLVxcdTBBMEVcXHUwQTExXFx1MEExMlxcdTBBMjlcXHUwQTMxXFx1MEEzNFxcdTBBMzdcXHUwQTNBXFx1MEEzQlxcdTBBM0RcXHUwQTQzLVxcdTBBNDZcXHUwQTQ5XFx1MEE0QVxcdTBBNEUtXFx1MEE1MFxcdTBBNTItXFx1MEE1OFxcdTBBNURcXHUwQTVGLVxcdTBBNjVcXHUwQTc3LVxcdTBBODBcXHUwQTg0XFx1MEE4RVxcdTBBOTJcXHUwQUE5XFx1MEFCMVxcdTBBQjRcXHUwQUJBXFx1MEFCQlxcdTBBQzZcXHUwQUNBXFx1MEFDRVxcdTBBQ0ZcXHUwQUQxLVxcdTBBREZcXHUwQUU0XFx1MEFFNVxcdTBBRjItXFx1MEFGOFxcdTBCMDBcXHUwQjA0XFx1MEIwRFxcdTBCMEVcXHUwQjExXFx1MEIxMlxcdTBCMjlcXHUwQjMxXFx1MEIzNFxcdTBCM0FcXHUwQjNCXFx1MEI0NVxcdTBCNDZcXHUwQjQ5XFx1MEI0QVxcdTBCNEUtXFx1MEI1NFxcdTBCNTgtXFx1MEI1QlxcdTBCNUVcXHUwQjY0XFx1MEI2NVxcdTBCNzgtXFx1MEI4MVxcdTBCODRcXHUwQjhCLVxcdTBCOERcXHUwQjkxXFx1MEI5Ni1cXHUwQjk4XFx1MEI5QlxcdTBCOURcXHUwQkEwLVxcdTBCQTJcXHUwQkE1LVxcdTBCQTdcXHUwQkFCLVxcdTBCQURcXHUwQkJBLVxcdTBCQkRcXHUwQkMzLVxcdTBCQzVcXHUwQkM5XFx1MEJDRVxcdTBCQ0ZcXHUwQkQxLVxcdTBCRDZcXHUwQkQ4LVxcdTBCRTVcXHUwQkZCLVxcdTBCRkZcXHUwQzBEXFx1MEMxMVxcdTBDMjlcXHUwQzNBLVxcdTBDM0NcXHUwQzQ1XFx1MEM0OVxcdTBDNEUtXFx1MEM1NFxcdTBDNTdcXHUwQzVCLVxcdTBDNUZcXHUwQzY0XFx1MEM2NVxcdTBDNzAtXFx1MEM3NlxcdTBDOERcXHUwQzkxXFx1MENBOVxcdTBDQjRcXHUwQ0JBXFx1MENCQlxcdTBDQzVcXHUwQ0M5XFx1MENDRS1cXHUwQ0Q0XFx1MENENy1cXHUwQ0REXFx1MENERlxcdTBDRTRcXHUwQ0U1XFx1MENGMFxcdTBDRjMtXFx1MENGRlxcdTBEMERcXHUwRDExXFx1MEQ0NVxcdTBENDlcXHUwRDUwLVxcdTBENTNcXHUwRDY0XFx1MEQ2NVxcdTBEODBcXHUwRDg0XFx1MEQ5Ny1cXHUwRDk5XFx1MERCMlxcdTBEQkNcXHUwREJFXFx1MERCRlxcdTBEQzctXFx1MERDOVxcdTBEQ0ItXFx1MERDRVxcdTBERDVcXHUwREQ3XFx1MERFMC1cXHUwREU1XFx1MERGMFxcdTBERjFcXHUwREY1LVxcdTBFMDBcXHUwRTNCLVxcdTBFM0VcXHUwRTVDLVxcdTBFODBcXHUwRTgzXFx1MEU4NVxcdTBFOEJcXHUwRUE0XFx1MEVBNlxcdTBFQkVcXHUwRUJGXFx1MEVDNVxcdTBFQzdcXHUwRUNFXFx1MEVDRlxcdTBFREFcXHUwRURCXFx1MEVFMC1cXHUwRUZGXFx1MEY0OFxcdTBGNkQtXFx1MEY3MFxcdTBGOThcXHUwRkJEXFx1MEZDRFxcdTBGREItXFx1MEZGRlxcdTEwQzZcXHUxMEM4LVxcdTEwQ0NcXHUxMENFXFx1MTBDRlxcdTEyNDlcXHUxMjRFXFx1MTI0RlxcdTEyNTdcXHUxMjU5XFx1MTI1RVxcdTEyNUZcXHUxMjg5XFx1MTI4RVxcdTEyOEZcXHUxMkIxXFx1MTJCNlxcdTEyQjdcXHUxMkJGXFx1MTJDMVxcdTEyQzZcXHUxMkM3XFx1MTJEN1xcdTEzMTFcXHUxMzE2XFx1MTMxN1xcdTEzNUJcXHUxMzVDXFx1MTM3RC1cXHUxMzdGXFx1MTM5QS1cXHUxMzlGXFx1MTNGNlxcdTEzRjdcXHUxM0ZFXFx1MTNGRlxcdTE2OUQtXFx1MTY5RlxcdTE2RjktXFx1MTZGRlxcdTE3MERcXHUxNzE1LVxcdTE3MUZcXHUxNzM3LVxcdTE3M0ZcXHUxNzU0LVxcdTE3NUZcXHUxNzZEXFx1MTc3MVxcdTE3NzQtXFx1MTc3RlxcdTE3REVcXHUxN0RGXFx1MTdFQS1cXHUxN0VGXFx1MTdGQS1cXHUxN0ZGXFx1MTgwRVxcdTE4MEZcXHUxODFBLVxcdTE4MUZcXHUxODc5LVxcdTE4N0ZcXHUxOEFCLVxcdTE4QUZcXHUxOEY2LVxcdTE4RkZcXHUxOTFGXFx1MTkyQy1cXHUxOTJGXFx1MTkzQy1cXHUxOTNGXFx1MTk0MS1cXHUxOTQzXFx1MTk2RVxcdTE5NkZcXHUxOTc1LVxcdTE5N0ZcXHUxOUFDLVxcdTE5QUZcXHUxOUNBLVxcdTE5Q0ZcXHUxOURCLVxcdTE5RERcXHUxQTFDXFx1MUExRFxcdTFBNUZcXHUxQTdEXFx1MUE3RVxcdTFBOEEtXFx1MUE4RlxcdTFBOUEtXFx1MUE5RlxcdTFBQUVcXHUxQUFGXFx1MUFDMS1cXHUxQUZGXFx1MUI0Qy1cXHUxQjRGXFx1MUI3RC1cXHUxQjdGXFx1MUJGNC1cXHUxQkZCXFx1MUMzOC1cXHUxQzNBXFx1MUM0QS1cXHUxQzRDXFx1MUM4OS1cXHUxQzhGXFx1MUNCQlxcdTFDQkNcXHUxQ0M4LVxcdTFDQ0ZcXHUxQ0ZCLVxcdTFDRkZcXHUxREZBXFx1MUYxNlxcdTFGMTdcXHUxRjFFXFx1MUYxRlxcdTFGNDZcXHUxRjQ3XFx1MUY0RVxcdTFGNEZcXHUxRjU4XFx1MUY1QVxcdTFGNUNcXHUxRjVFXFx1MUY3RVxcdTFGN0ZcXHUxRkI1XFx1MUZDNVxcdTFGRDRcXHUxRkQ1XFx1MUZEQ1xcdTFGRjBcXHUxRkYxXFx1MUZGNVxcdTFGRkZcXHUyMDBCLVxcdTIwMEZcXHUyMDJBLVxcdTIwMkVcXHUyMDYwLVxcdTIwNkZcXHUyMDcyXFx1MjA3M1xcdTIwOEZcXHUyMDlELVxcdTIwOUZcXHUyMEMwLVxcdTIwQ0ZcXHUyMEYxLVxcdTIwRkZcXHUyMThDLVxcdTIxOEZcXHUyNDI3LVxcdTI0M0ZcXHUyNDRCLVxcdTI0NUZcXHUyQjc0XFx1MkI3NVxcdTJCOTZcXHUyQzJGXFx1MkM1RlxcdTJDRjQtXFx1MkNGOFxcdTJEMjZcXHUyRDI4LVxcdTJEMkNcXHUyRDJFXFx1MkQyRlxcdTJENjgtXFx1MkQ2RVxcdTJENzEtXFx1MkQ3RVxcdTJEOTctXFx1MkQ5RlxcdTJEQTdcXHUyREFGXFx1MkRCN1xcdTJEQkZcXHUyREM3XFx1MkRDRlxcdTJERDdcXHUyRERGXFx1MkU1My1cXHUyRTdGXFx1MkU5QVxcdTJFRjQtXFx1MkVGRlxcdTJGRDYtXFx1MkZFRlxcdTJGRkMtXFx1MkZGRlxcdTMwNDBcXHUzMDk3XFx1MzA5OFxcdTMxMDAtXFx1MzEwNFxcdTMxMzBcXHUzMThGXFx1MzFFNC1cXHUzMUVGXFx1MzIxRlxcdTlGRkQtXFx1OUZGRlxcdUE0OEQtXFx1QTQ4RlxcdUE0QzctXFx1QTRDRlxcdUE2MkMtXFx1QTYzRlxcdUE2RjgtXFx1QTZGRlxcdUE3QzBcXHVBN0MxXFx1QTdDQi1cXHVBN0Y0XFx1QTgyRC1cXHVBODJGXFx1QTgzQS1cXHVBODNGXFx1QTg3OC1cXHVBODdGXFx1QThDNi1cXHVBOENEXFx1QThEQS1cXHVBOERGXFx1QTk1NC1cXHVBOTVFXFx1QTk3RC1cXHVBOTdGXFx1QTlDRVxcdUE5REEtXFx1QTlERFxcdUE5RkZcXHVBQTM3LVxcdUFBM0ZcXHVBQTRFXFx1QUE0RlxcdUFBNUFcXHVBQTVCXFx1QUFDMy1cXHVBQURBXFx1QUFGNy1cXHVBQjAwXFx1QUIwN1xcdUFCMDhcXHVBQjBGXFx1QUIxMFxcdUFCMTctXFx1QUIxRlxcdUFCMjdcXHVBQjJGXFx1QUI2Qy1cXHVBQjZGXFx1QUJFRVxcdUFCRUZcXHVBQkZBLVxcdUFCRkZcXHVEN0E0LVxcdUQ3QUZcXHVEN0M3LVxcdUQ3Q0FcXHVEN0ZDLVxcdUY4RkZcXHVGQTZFXFx1RkE2RlxcdUZBREEtXFx1RkFGRlxcdUZCMDctXFx1RkIxMlxcdUZCMTgtXFx1RkIxQ1xcdUZCMzdcXHVGQjNEXFx1RkIzRlxcdUZCNDJcXHVGQjQ1XFx1RkJDMi1cXHVGQkQyXFx1RkQ0MC1cXHVGRDRGXFx1RkQ5MFxcdUZEOTFcXHVGREM4LVxcdUZERUZcXHVGREZFXFx1RkRGRlxcdUZFMUEtXFx1RkUxRlxcdUZFNTNcXHVGRTY3XFx1RkU2Qy1cXHVGRTZGXFx1RkU3NVxcdUZFRkQtXFx1RkYwMFxcdUZGQkYtXFx1RkZDMVxcdUZGQzhcXHVGRkM5XFx1RkZEMFxcdUZGRDFcXHVGRkQ4XFx1RkZEOVxcdUZGREQtXFx1RkZERlxcdUZGRTdcXHVGRkVGLVxcdUZGRkJcXHVGRkZFXFx1RkZGRicsXG4gICAgICAgICdhc3RyYWwnOiAnXFx1RDgwMFtcXHVEQzBDXFx1REMyN1xcdURDM0JcXHVEQzNFXFx1REM0RVxcdURDNEZcXHVEQzVFLVxcdURDN0ZcXHVEQ0ZCLVxcdURDRkZcXHVERDAzLVxcdUREMDZcXHVERDM0LVxcdUREMzZcXHVERDhGXFx1REQ5RC1cXHVERDlGXFx1RERBMS1cXHVERENGXFx1RERGRS1cXHVERTdGXFx1REU5RC1cXHVERTlGXFx1REVEMS1cXHVERURGXFx1REVGQy1cXHVERUZGXFx1REYyNC1cXHVERjJDXFx1REY0Qi1cXHVERjRGXFx1REY3Qi1cXHVERjdGXFx1REY5RVxcdURGQzQtXFx1REZDN1xcdURGRDYtXFx1REZGRl18XFx1RDgwMVtcXHVEQzlFXFx1REM5RlxcdURDQUEtXFx1RENBRlxcdURDRDQtXFx1RENEN1xcdURDRkMtXFx1RENGRlxcdUREMjgtXFx1REQyRlxcdURENjQtXFx1REQ2RVxcdURENzAtXFx1RERGRlxcdURGMzctXFx1REYzRlxcdURGNTYtXFx1REY1RlxcdURGNjgtXFx1REZGRl18XFx1RDgwMltcXHVEQzA2XFx1REMwN1xcdURDMDlcXHVEQzM2XFx1REMzOS1cXHVEQzNCXFx1REMzRFxcdURDM0VcXHVEQzU2XFx1REM5Ri1cXHVEQ0E2XFx1RENCMC1cXHVEQ0RGXFx1RENGM1xcdURDRjYtXFx1RENGQVxcdUREMUMtXFx1REQxRVxcdUREM0EtXFx1REQzRVxcdURENDAtXFx1REQ3RlxcdUREQjgtXFx1RERCQlxcdURERDBcXHVEREQxXFx1REUwNFxcdURFMDctXFx1REUwQlxcdURFMTRcXHVERTE4XFx1REUzNlxcdURFMzdcXHVERTNCLVxcdURFM0VcXHVERTQ5LVxcdURFNEZcXHVERTU5LVxcdURFNUZcXHVERUEwLVxcdURFQkZcXHVERUU3LVxcdURFRUFcXHVERUY3LVxcdURFRkZcXHVERjM2LVxcdURGMzhcXHVERjU2XFx1REY1N1xcdURGNzMtXFx1REY3N1xcdURGOTItXFx1REY5OFxcdURGOUQtXFx1REZBOFxcdURGQjAtXFx1REZGRl18XFx1RDgwM1tcXHVEQzQ5LVxcdURDN0ZcXHVEQ0IzLVxcdURDQkZcXHVEQ0YzLVxcdURDRjlcXHVERDI4LVxcdUREMkZcXHVERDNBLVxcdURFNUZcXHVERTdGXFx1REVBQVxcdURFQUVcXHVERUFGXFx1REVCMi1cXHVERUZGXFx1REYyOC1cXHVERjJGXFx1REY1QS1cXHVERkFGXFx1REZDQy1cXHVERkRGXFx1REZGNy1cXHVERkZGXXxcXHVEODA0W1xcdURDNEUtXFx1REM1MVxcdURDNzAtXFx1REM3RVxcdURDQkRcXHVEQ0MyLVxcdURDQ0ZcXHVEQ0U5LVxcdURDRUZcXHVEQ0ZBLVxcdURDRkZcXHVERDM1XFx1REQ0OC1cXHVERDRGXFx1REQ3Ny1cXHVERDdGXFx1RERFMFxcdURERjUtXFx1RERGRlxcdURFMTJcXHVERTNGLVxcdURFN0ZcXHVERTg3XFx1REU4OVxcdURFOEVcXHVERTlFXFx1REVBQS1cXHVERUFGXFx1REVFQi1cXHVERUVGXFx1REVGQS1cXHVERUZGXFx1REYwNFxcdURGMERcXHVERjBFXFx1REYxMVxcdURGMTJcXHVERjI5XFx1REYzMVxcdURGMzRcXHVERjNBXFx1REY0NVxcdURGNDZcXHVERjQ5XFx1REY0QVxcdURGNEVcXHVERjRGXFx1REY1MS1cXHVERjU2XFx1REY1OC1cXHVERjVDXFx1REY2NFxcdURGNjVcXHVERjZELVxcdURGNkZcXHVERjc1LVxcdURGRkZdfFxcdUQ4MDVbXFx1REM1Q1xcdURDNjItXFx1REM3RlxcdURDQzgtXFx1RENDRlxcdURDREEtXFx1REQ3RlxcdUREQjZcXHVEREI3XFx1RERERS1cXHVEREZGXFx1REU0NS1cXHVERTRGXFx1REU1QS1cXHVERTVGXFx1REU2RC1cXHVERTdGXFx1REVCOS1cXHVERUJGXFx1REVDQS1cXHVERUZGXFx1REYxQlxcdURGMUNcXHVERjJDLVxcdURGMkZcXHVERjQwLVxcdURGRkZdfFxcdUQ4MDZbXFx1REMzQy1cXHVEQzlGXFx1RENGMy1cXHVEQ0ZFXFx1REQwN1xcdUREMDhcXHVERDBBXFx1REQwQlxcdUREMTRcXHVERDE3XFx1REQzNlxcdUREMzlcXHVERDNBXFx1REQ0Ny1cXHVERDRGXFx1REQ1QS1cXHVERDlGXFx1RERBOFxcdUREQTlcXHVEREQ4XFx1REREOVxcdURERTUtXFx1RERGRlxcdURFNDgtXFx1REU0RlxcdURFQTMtXFx1REVCRlxcdURFRjktXFx1REZGRl18XFx1RDgwN1tcXHVEQzA5XFx1REMzN1xcdURDNDYtXFx1REM0RlxcdURDNkQtXFx1REM2RlxcdURDOTBcXHVEQzkxXFx1RENBOFxcdURDQjctXFx1RENGRlxcdUREMDdcXHVERDBBXFx1REQzNy1cXHVERDM5XFx1REQzQlxcdUREM0VcXHVERDQ4LVxcdURENEZcXHVERDVBLVxcdURENUZcXHVERDY2XFx1REQ2OVxcdUREOEZcXHVERDkyXFx1REQ5OS1cXHVERDlGXFx1RERBQS1cXHVERURGXFx1REVGOS1cXHVERkFGXFx1REZCMS1cXHVERkJGXFx1REZGMi1cXHVERkZFXXxcXHVEODA4W1xcdURGOUEtXFx1REZGRl18XFx1RDgwOVtcXHVEQzZGXFx1REM3NS1cXHVEQzdGXFx1REQ0NC1cXHVERkZGXXxbXFx1RDgwQVxcdUQ4MEJcXHVEODBFLVxcdUQ4MTBcXHVEODEyLVxcdUQ4MTlcXHVEODI0LVxcdUQ4MkJcXHVEODJEXFx1RDgyRVxcdUQ4MzAtXFx1RDgzM1xcdUQ4MzdcXHVEODM5XFx1RDgzRlxcdUQ4N0ItXFx1RDg3RFxcdUQ4N0ZcXHVEODg1LVxcdURCM0ZcXHVEQjQxLVxcdURCRkZdW1xcdURDMDAtXFx1REZGRl18XFx1RDgwRFtcXHVEQzJGLVxcdURGRkZdfFxcdUQ4MTFbXFx1REU0Ny1cXHVERkZGXXxcXHVEODFBW1xcdURFMzktXFx1REUzRlxcdURFNUZcXHVERTZBLVxcdURFNkRcXHVERTcwLVxcdURFQ0ZcXHVERUVFXFx1REVFRlxcdURFRjYtXFx1REVGRlxcdURGNDYtXFx1REY0RlxcdURGNUFcXHVERjYyXFx1REY3OC1cXHVERjdDXFx1REY5MC1cXHVERkZGXXxcXHVEODFCW1xcdURDMDAtXFx1REUzRlxcdURFOUItXFx1REVGRlxcdURGNEItXFx1REY0RVxcdURGODgtXFx1REY4RVxcdURGQTAtXFx1REZERlxcdURGRTUtXFx1REZFRlxcdURGRjItXFx1REZGRl18XFx1RDgyMVtcXHVERkY4LVxcdURGRkZdfFxcdUQ4MjNbXFx1RENENi1cXHVEQ0ZGXFx1REQwOS1cXHVERkZGXXxcXHVEODJDW1xcdUREMUYtXFx1REQ0RlxcdURENTMtXFx1REQ2M1xcdURENjgtXFx1REQ2RlxcdURFRkMtXFx1REZGRl18XFx1RDgyRltcXHVEQzZCLVxcdURDNkZcXHVEQzdELVxcdURDN0ZcXHVEQzg5LVxcdURDOEZcXHVEQzlBXFx1REM5QlxcdURDQTAtXFx1REZGRl18XFx1RDgzNFtcXHVEQ0Y2LVxcdURDRkZcXHVERDI3XFx1REQyOFxcdURENzMtXFx1REQ3QVxcdURERTktXFx1RERGRlxcdURFNDYtXFx1REVERlxcdURFRjQtXFx1REVGRlxcdURGNTctXFx1REY1RlxcdURGNzktXFx1REZGRl18XFx1RDgzNVtcXHVEQzU1XFx1REM5RFxcdURDQTBcXHVEQ0ExXFx1RENBM1xcdURDQTRcXHVEQ0E3XFx1RENBOFxcdURDQURcXHVEQ0JBXFx1RENCQ1xcdURDQzRcXHVERDA2XFx1REQwQlxcdUREMENcXHVERDE1XFx1REQxRFxcdUREM0FcXHVERDNGXFx1REQ0NVxcdURENDctXFx1REQ0OVxcdURENTFcXHVERUE2XFx1REVBN1xcdURGQ0NcXHVERkNEXXxcXHVEODM2W1xcdURFOEMtXFx1REU5QVxcdURFQTBcXHVERUIwLVxcdURGRkZdfFxcdUQ4MzhbXFx1REMwN1xcdURDMTlcXHVEQzFBXFx1REMyMlxcdURDMjVcXHVEQzJCLVxcdURDRkZcXHVERDJELVxcdUREMkZcXHVERDNFXFx1REQzRlxcdURENEEtXFx1REQ0RFxcdURENTAtXFx1REVCRlxcdURFRkEtXFx1REVGRVxcdURGMDAtXFx1REZGRl18XFx1RDgzQVtcXHVEQ0M1XFx1RENDNlxcdURDRDctXFx1RENGRlxcdURENEMtXFx1REQ0RlxcdURENUEtXFx1REQ1RFxcdURENjAtXFx1REZGRl18XFx1RDgzQltcXHVEQzAwLVxcdURDNzBcXHVEQ0I1LVxcdUREMDBcXHVERDNFLVxcdURERkZcXHVERTA0XFx1REUyMFxcdURFMjNcXHVERTI1XFx1REUyNlxcdURFMjhcXHVERTMzXFx1REUzOFxcdURFM0FcXHVERTNDLVxcdURFNDFcXHVERTQzLVxcdURFNDZcXHVERTQ4XFx1REU0QVxcdURFNENcXHVERTUwXFx1REU1M1xcdURFNTVcXHVERTU2XFx1REU1OFxcdURFNUFcXHVERTVDXFx1REU1RVxcdURFNjBcXHVERTYzXFx1REU2NVxcdURFNjZcXHVERTZCXFx1REU3M1xcdURFNzhcXHVERTdEXFx1REU3RlxcdURFOEFcXHVERTlDLVxcdURFQTBcXHVERUE0XFx1REVBQVxcdURFQkMtXFx1REVFRlxcdURFRjItXFx1REZGRl18XFx1RDgzQ1tcXHVEQzJDLVxcdURDMkZcXHVEQzk0LVxcdURDOUZcXHVEQ0FGXFx1RENCMFxcdURDQzBcXHVEQ0QwXFx1RENGNi1cXHVEQ0ZGXFx1RERBRS1cXHVEREU1XFx1REUwMy1cXHVERTBGXFx1REUzQy1cXHVERTNGXFx1REU0OS1cXHVERTRGXFx1REU1Mi1cXHVERTVGXFx1REU2Ni1cXHVERUZGXXxcXHVEODNEW1xcdURFRDgtXFx1REVERlxcdURFRUQtXFx1REVFRlxcdURFRkQtXFx1REVGRlxcdURGNzQtXFx1REY3RlxcdURGRDktXFx1REZERlxcdURGRUMtXFx1REZGRl18XFx1RDgzRVtcXHVEQzBDLVxcdURDMEZcXHVEQzQ4LVxcdURDNEZcXHVEQzVBLVxcdURDNUZcXHVEQzg4LVxcdURDOEZcXHVEQ0FFXFx1RENBRlxcdURDQjItXFx1RENGRlxcdURENzlcXHVERENDXFx1REU1NC1cXHVERTVGXFx1REU2RVxcdURFNkZcXHVERTc1LVxcdURFNzdcXHVERTdCLVxcdURFN0ZcXHVERTg3LVxcdURFOEZcXHVERUE5LVxcdURFQUZcXHVERUI3LVxcdURFQkZcXHVERUMzLVxcdURFQ0ZcXHVERUQ3LVxcdURFRkZcXHVERjkzXFx1REZDQi1cXHVERkVGXFx1REZGQS1cXHVERkZGXXxcXHVEODY5W1xcdURFREUtXFx1REVGRl18XFx1RDg2RFtcXHVERjM1LVxcdURGM0ZdfFxcdUQ4NkVbXFx1REMxRVxcdURDMUZdfFxcdUQ4NzNbXFx1REVBMi1cXHVERUFGXXxcXHVEODdBW1xcdURGRTEtXFx1REZGRl18XFx1RDg3RVtcXHVERTFFLVxcdURGRkZdfFxcdUQ4ODRbXFx1REY0Qi1cXHVERkZGXXxcXHVEQjQwW1xcdURDMDAtXFx1RENGRlxcdURERjAtXFx1REZGRl0nXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ0NjJyxcbiAgICAgICAgJ2FsaWFzJzogJ0NvbnRyb2wnLFxuICAgICAgICAnYm1wJzogJ1xcMC1cXHgxRlxceDdGLVxceDlGJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdDZicsXG4gICAgICAgICdhbGlhcyc6ICdGb3JtYXQnLFxuICAgICAgICAnYm1wJzogJ1xceEFEXFx1MDYwMC1cXHUwNjA1XFx1MDYxQ1xcdTA2RERcXHUwNzBGXFx1MDhFMlxcdTE4MEVcXHUyMDBCLVxcdTIwMEZcXHUyMDJBLVxcdTIwMkVcXHUyMDYwLVxcdTIwNjRcXHUyMDY2LVxcdTIwNkZcXHVGRUZGXFx1RkZGOS1cXHVGRkZCJyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODA0W1xcdURDQkRcXHVEQ0NEXXxcXHVEODBEW1xcdURDMzAtXFx1REMzOF18XFx1RDgyRltcXHVEQ0EwLVxcdURDQTNdfFxcdUQ4MzRbXFx1REQ3My1cXHVERDdBXXxcXHVEQjQwW1xcdURDMDFcXHVEQzIwLVxcdURDN0ZdJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdDbicsXG4gICAgICAgICdhbGlhcyc6ICdVbmFzc2lnbmVkJyxcbiAgICAgICAgJ2JtcCc6ICdcXHUwMzc4XFx1MDM3OVxcdTAzODAtXFx1MDM4M1xcdTAzOEJcXHUwMzhEXFx1MDNBMlxcdTA1MzBcXHUwNTU3XFx1MDU1OFxcdTA1OEJcXHUwNThDXFx1MDU5MFxcdTA1QzgtXFx1MDVDRlxcdTA1RUItXFx1MDVFRVxcdTA1RjUtXFx1MDVGRlxcdTA2MURcXHUwNzBFXFx1MDc0QlxcdTA3NENcXHUwN0IyLVxcdTA3QkZcXHUwN0ZCXFx1MDdGQ1xcdTA4MkVcXHUwODJGXFx1MDgzRlxcdTA4NUNcXHUwODVEXFx1MDg1RlxcdTA4NkItXFx1MDg5RlxcdTA4QjVcXHUwOEM4LVxcdTA4RDJcXHUwOTg0XFx1MDk4RFxcdTA5OEVcXHUwOTkxXFx1MDk5MlxcdTA5QTlcXHUwOUIxXFx1MDlCMy1cXHUwOUI1XFx1MDlCQVxcdTA5QkJcXHUwOUM1XFx1MDlDNlxcdTA5QzlcXHUwOUNBXFx1MDlDRi1cXHUwOUQ2XFx1MDlEOC1cXHUwOURCXFx1MDlERVxcdTA5RTRcXHUwOUU1XFx1MDlGRlxcdTBBMDBcXHUwQTA0XFx1MEEwQi1cXHUwQTBFXFx1MEExMVxcdTBBMTJcXHUwQTI5XFx1MEEzMVxcdTBBMzRcXHUwQTM3XFx1MEEzQVxcdTBBM0JcXHUwQTNEXFx1MEE0My1cXHUwQTQ2XFx1MEE0OVxcdTBBNEFcXHUwQTRFLVxcdTBBNTBcXHUwQTUyLVxcdTBBNThcXHUwQTVEXFx1MEE1Ri1cXHUwQTY1XFx1MEE3Ny1cXHUwQTgwXFx1MEE4NFxcdTBBOEVcXHUwQTkyXFx1MEFBOVxcdTBBQjFcXHUwQUI0XFx1MEFCQVxcdTBBQkJcXHUwQUM2XFx1MEFDQVxcdTBBQ0VcXHUwQUNGXFx1MEFEMS1cXHUwQURGXFx1MEFFNFxcdTBBRTVcXHUwQUYyLVxcdTBBRjhcXHUwQjAwXFx1MEIwNFxcdTBCMERcXHUwQjBFXFx1MEIxMVxcdTBCMTJcXHUwQjI5XFx1MEIzMVxcdTBCMzRcXHUwQjNBXFx1MEIzQlxcdTBCNDVcXHUwQjQ2XFx1MEI0OVxcdTBCNEFcXHUwQjRFLVxcdTBCNTRcXHUwQjU4LVxcdTBCNUJcXHUwQjVFXFx1MEI2NFxcdTBCNjVcXHUwQjc4LVxcdTBCODFcXHUwQjg0XFx1MEI4Qi1cXHUwQjhEXFx1MEI5MVxcdTBCOTYtXFx1MEI5OFxcdTBCOUJcXHUwQjlEXFx1MEJBMC1cXHUwQkEyXFx1MEJBNS1cXHUwQkE3XFx1MEJBQi1cXHUwQkFEXFx1MEJCQS1cXHUwQkJEXFx1MEJDMy1cXHUwQkM1XFx1MEJDOVxcdTBCQ0VcXHUwQkNGXFx1MEJEMS1cXHUwQkQ2XFx1MEJEOC1cXHUwQkU1XFx1MEJGQi1cXHUwQkZGXFx1MEMwRFxcdTBDMTFcXHUwQzI5XFx1MEMzQS1cXHUwQzNDXFx1MEM0NVxcdTBDNDlcXHUwQzRFLVxcdTBDNTRcXHUwQzU3XFx1MEM1Qi1cXHUwQzVGXFx1MEM2NFxcdTBDNjVcXHUwQzcwLVxcdTBDNzZcXHUwQzhEXFx1MEM5MVxcdTBDQTlcXHUwQ0I0XFx1MENCQVxcdTBDQkJcXHUwQ0M1XFx1MENDOVxcdTBDQ0UtXFx1MENENFxcdTBDRDctXFx1MENERFxcdTBDREZcXHUwQ0U0XFx1MENFNVxcdTBDRjBcXHUwQ0YzLVxcdTBDRkZcXHUwRDBEXFx1MEQxMVxcdTBENDVcXHUwRDQ5XFx1MEQ1MC1cXHUwRDUzXFx1MEQ2NFxcdTBENjVcXHUwRDgwXFx1MEQ4NFxcdTBEOTctXFx1MEQ5OVxcdTBEQjJcXHUwREJDXFx1MERCRVxcdTBEQkZcXHUwREM3LVxcdTBEQzlcXHUwRENCLVxcdTBEQ0VcXHUwREQ1XFx1MEREN1xcdTBERTAtXFx1MERFNVxcdTBERjBcXHUwREYxXFx1MERGNS1cXHUwRTAwXFx1MEUzQi1cXHUwRTNFXFx1MEU1Qy1cXHUwRTgwXFx1MEU4M1xcdTBFODVcXHUwRThCXFx1MEVBNFxcdTBFQTZcXHUwRUJFXFx1MEVCRlxcdTBFQzVcXHUwRUM3XFx1MEVDRVxcdTBFQ0ZcXHUwRURBXFx1MEVEQlxcdTBFRTAtXFx1MEVGRlxcdTBGNDhcXHUwRjZELVxcdTBGNzBcXHUwRjk4XFx1MEZCRFxcdTBGQ0RcXHUwRkRCLVxcdTBGRkZcXHUxMEM2XFx1MTBDOC1cXHUxMENDXFx1MTBDRVxcdTEwQ0ZcXHUxMjQ5XFx1MTI0RVxcdTEyNEZcXHUxMjU3XFx1MTI1OVxcdTEyNUVcXHUxMjVGXFx1MTI4OVxcdTEyOEVcXHUxMjhGXFx1MTJCMVxcdTEyQjZcXHUxMkI3XFx1MTJCRlxcdTEyQzFcXHUxMkM2XFx1MTJDN1xcdTEyRDdcXHUxMzExXFx1MTMxNlxcdTEzMTdcXHUxMzVCXFx1MTM1Q1xcdTEzN0QtXFx1MTM3RlxcdTEzOUEtXFx1MTM5RlxcdTEzRjZcXHUxM0Y3XFx1MTNGRVxcdTEzRkZcXHUxNjlELVxcdTE2OUZcXHUxNkY5LVxcdTE2RkZcXHUxNzBEXFx1MTcxNS1cXHUxNzFGXFx1MTczNy1cXHUxNzNGXFx1MTc1NC1cXHUxNzVGXFx1MTc2RFxcdTE3NzFcXHUxNzc0LVxcdTE3N0ZcXHUxN0RFXFx1MTdERlxcdTE3RUEtXFx1MTdFRlxcdTE3RkEtXFx1MTdGRlxcdTE4MEZcXHUxODFBLVxcdTE4MUZcXHUxODc5LVxcdTE4N0ZcXHUxOEFCLVxcdTE4QUZcXHUxOEY2LVxcdTE4RkZcXHUxOTFGXFx1MTkyQy1cXHUxOTJGXFx1MTkzQy1cXHUxOTNGXFx1MTk0MS1cXHUxOTQzXFx1MTk2RVxcdTE5NkZcXHUxOTc1LVxcdTE5N0ZcXHUxOUFDLVxcdTE5QUZcXHUxOUNBLVxcdTE5Q0ZcXHUxOURCLVxcdTE5RERcXHUxQTFDXFx1MUExRFxcdTFBNUZcXHUxQTdEXFx1MUE3RVxcdTFBOEEtXFx1MUE4RlxcdTFBOUEtXFx1MUE5RlxcdTFBQUVcXHUxQUFGXFx1MUFDMS1cXHUxQUZGXFx1MUI0Qy1cXHUxQjRGXFx1MUI3RC1cXHUxQjdGXFx1MUJGNC1cXHUxQkZCXFx1MUMzOC1cXHUxQzNBXFx1MUM0QS1cXHUxQzRDXFx1MUM4OS1cXHUxQzhGXFx1MUNCQlxcdTFDQkNcXHUxQ0M4LVxcdTFDQ0ZcXHUxQ0ZCLVxcdTFDRkZcXHUxREZBXFx1MUYxNlxcdTFGMTdcXHUxRjFFXFx1MUYxRlxcdTFGNDZcXHUxRjQ3XFx1MUY0RVxcdTFGNEZcXHUxRjU4XFx1MUY1QVxcdTFGNUNcXHUxRjVFXFx1MUY3RVxcdTFGN0ZcXHUxRkI1XFx1MUZDNVxcdTFGRDRcXHUxRkQ1XFx1MUZEQ1xcdTFGRjBcXHUxRkYxXFx1MUZGNVxcdTFGRkZcXHUyMDY1XFx1MjA3MlxcdTIwNzNcXHUyMDhGXFx1MjA5RC1cXHUyMDlGXFx1MjBDMC1cXHUyMENGXFx1MjBGMS1cXHUyMEZGXFx1MjE4Qy1cXHUyMThGXFx1MjQyNy1cXHUyNDNGXFx1MjQ0Qi1cXHUyNDVGXFx1MkI3NFxcdTJCNzVcXHUyQjk2XFx1MkMyRlxcdTJDNUZcXHUyQ0Y0LVxcdTJDRjhcXHUyRDI2XFx1MkQyOC1cXHUyRDJDXFx1MkQyRVxcdTJEMkZcXHUyRDY4LVxcdTJENkVcXHUyRDcxLVxcdTJEN0VcXHUyRDk3LVxcdTJEOUZcXHUyREE3XFx1MkRBRlxcdTJEQjdcXHUyREJGXFx1MkRDN1xcdTJEQ0ZcXHUyREQ3XFx1MkRERlxcdTJFNTMtXFx1MkU3RlxcdTJFOUFcXHUyRUY0LVxcdTJFRkZcXHUyRkQ2LVxcdTJGRUZcXHUyRkZDLVxcdTJGRkZcXHUzMDQwXFx1MzA5N1xcdTMwOThcXHUzMTAwLVxcdTMxMDRcXHUzMTMwXFx1MzE4RlxcdTMxRTQtXFx1MzFFRlxcdTMyMUZcXHU5RkZELVxcdTlGRkZcXHVBNDhELVxcdUE0OEZcXHVBNEM3LVxcdUE0Q0ZcXHVBNjJDLVxcdUE2M0ZcXHVBNkY4LVxcdUE2RkZcXHVBN0MwXFx1QTdDMVxcdUE3Q0ItXFx1QTdGNFxcdUE4MkQtXFx1QTgyRlxcdUE4M0EtXFx1QTgzRlxcdUE4NzgtXFx1QTg3RlxcdUE4QzYtXFx1QThDRFxcdUE4REEtXFx1QThERlxcdUE5NTQtXFx1QTk1RVxcdUE5N0QtXFx1QTk3RlxcdUE5Q0VcXHVBOURBLVxcdUE5RERcXHVBOUZGXFx1QUEzNy1cXHVBQTNGXFx1QUE0RVxcdUFBNEZcXHVBQTVBXFx1QUE1QlxcdUFBQzMtXFx1QUFEQVxcdUFBRjctXFx1QUIwMFxcdUFCMDdcXHVBQjA4XFx1QUIwRlxcdUFCMTBcXHVBQjE3LVxcdUFCMUZcXHVBQjI3XFx1QUIyRlxcdUFCNkMtXFx1QUI2RlxcdUFCRUVcXHVBQkVGXFx1QUJGQS1cXHVBQkZGXFx1RDdBNC1cXHVEN0FGXFx1RDdDNy1cXHVEN0NBXFx1RDdGQy1cXHVEN0ZGXFx1RkE2RVxcdUZBNkZcXHVGQURBLVxcdUZBRkZcXHVGQjA3LVxcdUZCMTJcXHVGQjE4LVxcdUZCMUNcXHVGQjM3XFx1RkIzRFxcdUZCM0ZcXHVGQjQyXFx1RkI0NVxcdUZCQzItXFx1RkJEMlxcdUZENDAtXFx1RkQ0RlxcdUZEOTBcXHVGRDkxXFx1RkRDOC1cXHVGREVGXFx1RkRGRVxcdUZERkZcXHVGRTFBLVxcdUZFMUZcXHVGRTUzXFx1RkU2N1xcdUZFNkMtXFx1RkU2RlxcdUZFNzVcXHVGRUZEXFx1RkVGRVxcdUZGMDBcXHVGRkJGLVxcdUZGQzFcXHVGRkM4XFx1RkZDOVxcdUZGRDBcXHVGRkQxXFx1RkZEOFxcdUZGRDlcXHVGRkRELVxcdUZGREZcXHVGRkU3XFx1RkZFRi1cXHVGRkY4XFx1RkZGRVxcdUZGRkYnLFxuICAgICAgICAnYXN0cmFsJzogJ1xcdUQ4MDBbXFx1REMwQ1xcdURDMjdcXHVEQzNCXFx1REMzRVxcdURDNEVcXHVEQzRGXFx1REM1RS1cXHVEQzdGXFx1RENGQi1cXHVEQ0ZGXFx1REQwMy1cXHVERDA2XFx1REQzNC1cXHVERDM2XFx1REQ4RlxcdUREOUQtXFx1REQ5RlxcdUREQTEtXFx1RERDRlxcdURERkUtXFx1REU3RlxcdURFOUQtXFx1REU5RlxcdURFRDEtXFx1REVERlxcdURFRkMtXFx1REVGRlxcdURGMjQtXFx1REYyQ1xcdURGNEItXFx1REY0RlxcdURGN0ItXFx1REY3RlxcdURGOUVcXHVERkM0LVxcdURGQzdcXHVERkQ2LVxcdURGRkZdfFxcdUQ4MDFbXFx1REM5RVxcdURDOUZcXHVEQ0FBLVxcdURDQUZcXHVEQ0Q0LVxcdURDRDdcXHVEQ0ZDLVxcdURDRkZcXHVERDI4LVxcdUREMkZcXHVERDY0LVxcdURENkVcXHVERDcwLVxcdURERkZcXHVERjM3LVxcdURGM0ZcXHVERjU2LVxcdURGNUZcXHVERjY4LVxcdURGRkZdfFxcdUQ4MDJbXFx1REMwNlxcdURDMDdcXHVEQzA5XFx1REMzNlxcdURDMzktXFx1REMzQlxcdURDM0RcXHVEQzNFXFx1REM1NlxcdURDOUYtXFx1RENBNlxcdURDQjAtXFx1RENERlxcdURDRjNcXHVEQ0Y2LVxcdURDRkFcXHVERDFDLVxcdUREMUVcXHVERDNBLVxcdUREM0VcXHVERDQwLVxcdUREN0ZcXHVEREI4LVxcdUREQkJcXHVEREQwXFx1REREMVxcdURFMDRcXHVERTA3LVxcdURFMEJcXHVERTE0XFx1REUxOFxcdURFMzZcXHVERTM3XFx1REUzQi1cXHVERTNFXFx1REU0OS1cXHVERTRGXFx1REU1OS1cXHVERTVGXFx1REVBMC1cXHVERUJGXFx1REVFNy1cXHVERUVBXFx1REVGNy1cXHVERUZGXFx1REYzNi1cXHVERjM4XFx1REY1NlxcdURGNTdcXHVERjczLVxcdURGNzdcXHVERjkyLVxcdURGOThcXHVERjlELVxcdURGQThcXHVERkIwLVxcdURGRkZdfFxcdUQ4MDNbXFx1REM0OS1cXHVEQzdGXFx1RENCMy1cXHVEQ0JGXFx1RENGMy1cXHVEQ0Y5XFx1REQyOC1cXHVERDJGXFx1REQzQS1cXHVERTVGXFx1REU3RlxcdURFQUFcXHVERUFFXFx1REVBRlxcdURFQjItXFx1REVGRlxcdURGMjgtXFx1REYyRlxcdURGNUEtXFx1REZBRlxcdURGQ0MtXFx1REZERlxcdURGRjctXFx1REZGRl18XFx1RDgwNFtcXHVEQzRFLVxcdURDNTFcXHVEQzcwLVxcdURDN0VcXHVEQ0MyLVxcdURDQ0NcXHVEQ0NFXFx1RENDRlxcdURDRTktXFx1RENFRlxcdURDRkEtXFx1RENGRlxcdUREMzVcXHVERDQ4LVxcdURENEZcXHVERDc3LVxcdUREN0ZcXHVEREUwXFx1RERGNS1cXHVEREZGXFx1REUxMlxcdURFM0YtXFx1REU3RlxcdURFODdcXHVERTg5XFx1REU4RVxcdURFOUVcXHVERUFBLVxcdURFQUZcXHVERUVCLVxcdURFRUZcXHVERUZBLVxcdURFRkZcXHVERjA0XFx1REYwRFxcdURGMEVcXHVERjExXFx1REYxMlxcdURGMjlcXHVERjMxXFx1REYzNFxcdURGM0FcXHVERjQ1XFx1REY0NlxcdURGNDlcXHVERjRBXFx1REY0RVxcdURGNEZcXHVERjUxLVxcdURGNTZcXHVERjU4LVxcdURGNUNcXHVERjY0XFx1REY2NVxcdURGNkQtXFx1REY2RlxcdURGNzUtXFx1REZGRl18XFx1RDgwNVtcXHVEQzVDXFx1REM2Mi1cXHVEQzdGXFx1RENDOC1cXHVEQ0NGXFx1RENEQS1cXHVERDdGXFx1RERCNlxcdUREQjdcXHVERERFLVxcdURERkZcXHVERTQ1LVxcdURFNEZcXHVERTVBLVxcdURFNUZcXHVERTZELVxcdURFN0ZcXHVERUI5LVxcdURFQkZcXHVERUNBLVxcdURFRkZcXHVERjFCXFx1REYxQ1xcdURGMkMtXFx1REYyRlxcdURGNDAtXFx1REZGRl18XFx1RDgwNltcXHVEQzNDLVxcdURDOUZcXHVEQ0YzLVxcdURDRkVcXHVERDA3XFx1REQwOFxcdUREMEFcXHVERDBCXFx1REQxNFxcdUREMTdcXHVERDM2XFx1REQzOVxcdUREM0FcXHVERDQ3LVxcdURENEZcXHVERDVBLVxcdUREOUZcXHVEREE4XFx1RERBOVxcdURERDhcXHVEREQ5XFx1RERFNS1cXHVEREZGXFx1REU0OC1cXHVERTRGXFx1REVBMy1cXHVERUJGXFx1REVGOS1cXHVERkZGXXxcXHVEODA3W1xcdURDMDlcXHVEQzM3XFx1REM0Ni1cXHVEQzRGXFx1REM2RC1cXHVEQzZGXFx1REM5MFxcdURDOTFcXHVEQ0E4XFx1RENCNy1cXHVEQ0ZGXFx1REQwN1xcdUREMEFcXHVERDM3LVxcdUREMzlcXHVERDNCXFx1REQzRVxcdURENDgtXFx1REQ0RlxcdURENUEtXFx1REQ1RlxcdURENjZcXHVERDY5XFx1REQ4RlxcdUREOTJcXHVERDk5LVxcdUREOUZcXHVEREFBLVxcdURFREZcXHVERUY5LVxcdURGQUZcXHVERkIxLVxcdURGQkZcXHVERkYyLVxcdURGRkVdfFxcdUQ4MDhbXFx1REY5QS1cXHVERkZGXXxcXHVEODA5W1xcdURDNkZcXHVEQzc1LVxcdURDN0ZcXHVERDQ0LVxcdURGRkZdfFtcXHVEODBBXFx1RDgwQlxcdUQ4MEUtXFx1RDgxMFxcdUQ4MTItXFx1RDgxOVxcdUQ4MjQtXFx1RDgyQlxcdUQ4MkRcXHVEODJFXFx1RDgzMC1cXHVEODMzXFx1RDgzN1xcdUQ4MzlcXHVEODNGXFx1RDg3Qi1cXHVEODdEXFx1RDg3RlxcdUQ4ODUtXFx1REIzRlxcdURCNDEtXFx1REI3Rl1bXFx1REMwMC1cXHVERkZGXXxcXHVEODBEW1xcdURDMkZcXHVEQzM5LVxcdURGRkZdfFxcdUQ4MTFbXFx1REU0Ny1cXHVERkZGXXxcXHVEODFBW1xcdURFMzktXFx1REUzRlxcdURFNUZcXHVERTZBLVxcdURFNkRcXHVERTcwLVxcdURFQ0ZcXHVERUVFXFx1REVFRlxcdURFRjYtXFx1REVGRlxcdURGNDYtXFx1REY0RlxcdURGNUFcXHVERjYyXFx1REY3OC1cXHVERjdDXFx1REY5MC1cXHVERkZGXXxcXHVEODFCW1xcdURDMDAtXFx1REUzRlxcdURFOUItXFx1REVGRlxcdURGNEItXFx1REY0RVxcdURGODgtXFx1REY4RVxcdURGQTAtXFx1REZERlxcdURGRTUtXFx1REZFRlxcdURGRjItXFx1REZGRl18XFx1RDgyMVtcXHVERkY4LVxcdURGRkZdfFxcdUQ4MjNbXFx1RENENi1cXHVEQ0ZGXFx1REQwOS1cXHVERkZGXXxcXHVEODJDW1xcdUREMUYtXFx1REQ0RlxcdURENTMtXFx1REQ2M1xcdURENjgtXFx1REQ2RlxcdURFRkMtXFx1REZGRl18XFx1RDgyRltcXHVEQzZCLVxcdURDNkZcXHVEQzdELVxcdURDN0ZcXHVEQzg5LVxcdURDOEZcXHVEQzlBXFx1REM5QlxcdURDQTQtXFx1REZGRl18XFx1RDgzNFtcXHVEQ0Y2LVxcdURDRkZcXHVERDI3XFx1REQyOFxcdURERTktXFx1RERGRlxcdURFNDYtXFx1REVERlxcdURFRjQtXFx1REVGRlxcdURGNTctXFx1REY1RlxcdURGNzktXFx1REZGRl18XFx1RDgzNVtcXHVEQzU1XFx1REM5RFxcdURDQTBcXHVEQ0ExXFx1RENBM1xcdURDQTRcXHVEQ0E3XFx1RENBOFxcdURDQURcXHVEQ0JBXFx1RENCQ1xcdURDQzRcXHVERDA2XFx1REQwQlxcdUREMENcXHVERDE1XFx1REQxRFxcdUREM0FcXHVERDNGXFx1REQ0NVxcdURENDctXFx1REQ0OVxcdURENTFcXHVERUE2XFx1REVBN1xcdURGQ0NcXHVERkNEXXxcXHVEODM2W1xcdURFOEMtXFx1REU5QVxcdURFQTBcXHVERUIwLVxcdURGRkZdfFxcdUQ4MzhbXFx1REMwN1xcdURDMTlcXHVEQzFBXFx1REMyMlxcdURDMjVcXHVEQzJCLVxcdURDRkZcXHVERDJELVxcdUREMkZcXHVERDNFXFx1REQzRlxcdURENEEtXFx1REQ0RFxcdURENTAtXFx1REVCRlxcdURFRkEtXFx1REVGRVxcdURGMDAtXFx1REZGRl18XFx1RDgzQVtcXHVEQ0M1XFx1RENDNlxcdURDRDctXFx1RENGRlxcdURENEMtXFx1REQ0RlxcdURENUEtXFx1REQ1RFxcdURENjAtXFx1REZGRl18XFx1RDgzQltcXHVEQzAwLVxcdURDNzBcXHVEQ0I1LVxcdUREMDBcXHVERDNFLVxcdURERkZcXHVERTA0XFx1REUyMFxcdURFMjNcXHVERTI1XFx1REUyNlxcdURFMjhcXHVERTMzXFx1REUzOFxcdURFM0FcXHVERTNDLVxcdURFNDFcXHVERTQzLVxcdURFNDZcXHVERTQ4XFx1REU0QVxcdURFNENcXHVERTUwXFx1REU1M1xcdURFNTVcXHVERTU2XFx1REU1OFxcdURFNUFcXHVERTVDXFx1REU1RVxcdURFNjBcXHVERTYzXFx1REU2NVxcdURFNjZcXHVERTZCXFx1REU3M1xcdURFNzhcXHVERTdEXFx1REU3RlxcdURFOEFcXHVERTlDLVxcdURFQTBcXHVERUE0XFx1REVBQVxcdURFQkMtXFx1REVFRlxcdURFRjItXFx1REZGRl18XFx1RDgzQ1tcXHVEQzJDLVxcdURDMkZcXHVEQzk0LVxcdURDOUZcXHVEQ0FGXFx1RENCMFxcdURDQzBcXHVEQ0QwXFx1RENGNi1cXHVEQ0ZGXFx1RERBRS1cXHVEREU1XFx1REUwMy1cXHVERTBGXFx1REUzQy1cXHVERTNGXFx1REU0OS1cXHVERTRGXFx1REU1Mi1cXHVERTVGXFx1REU2Ni1cXHVERUZGXXxcXHVEODNEW1xcdURFRDgtXFx1REVERlxcdURFRUQtXFx1REVFRlxcdURFRkQtXFx1REVGRlxcdURGNzQtXFx1REY3RlxcdURGRDktXFx1REZERlxcdURGRUMtXFx1REZGRl18XFx1RDgzRVtcXHVEQzBDLVxcdURDMEZcXHVEQzQ4LVxcdURDNEZcXHVEQzVBLVxcdURDNUZcXHVEQzg4LVxcdURDOEZcXHVEQ0FFXFx1RENBRlxcdURDQjItXFx1RENGRlxcdURENzlcXHVERENDXFx1REU1NC1cXHVERTVGXFx1REU2RVxcdURFNkZcXHVERTc1LVxcdURFNzdcXHVERTdCLVxcdURFN0ZcXHVERTg3LVxcdURFOEZcXHVERUE5LVxcdURFQUZcXHVERUI3LVxcdURFQkZcXHVERUMzLVxcdURFQ0ZcXHVERUQ3LVxcdURFRkZcXHVERjkzXFx1REZDQi1cXHVERkVGXFx1REZGQS1cXHVERkZGXXxcXHVEODY5W1xcdURFREUtXFx1REVGRl18XFx1RDg2RFtcXHVERjM1LVxcdURGM0ZdfFxcdUQ4NkVbXFx1REMxRVxcdURDMUZdfFxcdUQ4NzNbXFx1REVBMi1cXHVERUFGXXxcXHVEODdBW1xcdURGRTEtXFx1REZGRl18XFx1RDg3RVtcXHVERTFFLVxcdURGRkZdfFxcdUQ4ODRbXFx1REY0Qi1cXHVERkZGXXxcXHVEQjQwW1xcdURDMDBcXHVEQzAyLVxcdURDMUZcXHVEQzgwLVxcdURDRkZcXHVEREYwLVxcdURGRkZdfFtcXHVEQkJGXFx1REJGRl1bXFx1REZGRVxcdURGRkZdJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdDbycsXG4gICAgICAgICdhbGlhcyc6ICdQcml2YXRlX1VzZScsXG4gICAgICAgICdibXAnOiAnXFx1RTAwMC1cXHVGOEZGJyxcbiAgICAgICAgJ2FzdHJhbCc6ICdbXFx1REI4MC1cXHVEQkJFXFx1REJDMC1cXHVEQkZFXVtcXHVEQzAwLVxcdURGRkZdfFtcXHVEQkJGXFx1REJGRl1bXFx1REMwMC1cXHVERkZEXSdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnQ3MnLFxuICAgICAgICAnYWxpYXMnOiAnU3Vycm9nYXRlJyxcbiAgICAgICAgJ2JtcCc6ICdcXHVEODAwLVxcdURGRkYnXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ0wnLFxuICAgICAgICAnYWxpYXMnOiAnTGV0dGVyJyxcbiAgICAgICAgJ2JtcCc6ICdBLVphLXpcXHhBQVxceEI1XFx4QkFcXHhDMC1cXHhENlxceEQ4LVxceEY2XFx4RjgtXFx1MDJDMVxcdTAyQzYtXFx1MDJEMVxcdTAyRTAtXFx1MDJFNFxcdTAyRUNcXHUwMkVFXFx1MDM3MC1cXHUwMzc0XFx1MDM3NlxcdTAzNzdcXHUwMzdBLVxcdTAzN0RcXHUwMzdGXFx1MDM4NlxcdTAzODgtXFx1MDM4QVxcdTAzOENcXHUwMzhFLVxcdTAzQTFcXHUwM0EzLVxcdTAzRjVcXHUwM0Y3LVxcdTA0ODFcXHUwNDhBLVxcdTA1MkZcXHUwNTMxLVxcdTA1NTZcXHUwNTU5XFx1MDU2MC1cXHUwNTg4XFx1MDVEMC1cXHUwNUVBXFx1MDVFRi1cXHUwNUYyXFx1MDYyMC1cXHUwNjRBXFx1MDY2RVxcdTA2NkZcXHUwNjcxLVxcdTA2RDNcXHUwNkQ1XFx1MDZFNVxcdTA2RTZcXHUwNkVFXFx1MDZFRlxcdTA2RkEtXFx1MDZGQ1xcdTA2RkZcXHUwNzEwXFx1MDcxMi1cXHUwNzJGXFx1MDc0RC1cXHUwN0E1XFx1MDdCMVxcdTA3Q0EtXFx1MDdFQVxcdTA3RjRcXHUwN0Y1XFx1MDdGQVxcdTA4MDAtXFx1MDgxNVxcdTA4MUFcXHUwODI0XFx1MDgyOFxcdTA4NDAtXFx1MDg1OFxcdTA4NjAtXFx1MDg2QVxcdTA4QTAtXFx1MDhCNFxcdTA4QjYtXFx1MDhDN1xcdTA5MDQtXFx1MDkzOVxcdTA5M0RcXHUwOTUwXFx1MDk1OC1cXHUwOTYxXFx1MDk3MS1cXHUwOTgwXFx1MDk4NS1cXHUwOThDXFx1MDk4RlxcdTA5OTBcXHUwOTkzLVxcdTA5QThcXHUwOUFBLVxcdTA5QjBcXHUwOUIyXFx1MDlCNi1cXHUwOUI5XFx1MDlCRFxcdTA5Q0VcXHUwOURDXFx1MDlERFxcdTA5REYtXFx1MDlFMVxcdTA5RjBcXHUwOUYxXFx1MDlGQ1xcdTBBMDUtXFx1MEEwQVxcdTBBMEZcXHUwQTEwXFx1MEExMy1cXHUwQTI4XFx1MEEyQS1cXHUwQTMwXFx1MEEzMlxcdTBBMzNcXHUwQTM1XFx1MEEzNlxcdTBBMzhcXHUwQTM5XFx1MEE1OS1cXHUwQTVDXFx1MEE1RVxcdTBBNzItXFx1MEE3NFxcdTBBODUtXFx1MEE4RFxcdTBBOEYtXFx1MEE5MVxcdTBBOTMtXFx1MEFBOFxcdTBBQUEtXFx1MEFCMFxcdTBBQjJcXHUwQUIzXFx1MEFCNS1cXHUwQUI5XFx1MEFCRFxcdTBBRDBcXHUwQUUwXFx1MEFFMVxcdTBBRjlcXHUwQjA1LVxcdTBCMENcXHUwQjBGXFx1MEIxMFxcdTBCMTMtXFx1MEIyOFxcdTBCMkEtXFx1MEIzMFxcdTBCMzJcXHUwQjMzXFx1MEIzNS1cXHUwQjM5XFx1MEIzRFxcdTBCNUNcXHUwQjVEXFx1MEI1Ri1cXHUwQjYxXFx1MEI3MVxcdTBCODNcXHUwQjg1LVxcdTBCOEFcXHUwQjhFLVxcdTBCOTBcXHUwQjkyLVxcdTBCOTVcXHUwQjk5XFx1MEI5QVxcdTBCOUNcXHUwQjlFXFx1MEI5RlxcdTBCQTNcXHUwQkE0XFx1MEJBOC1cXHUwQkFBXFx1MEJBRS1cXHUwQkI5XFx1MEJEMFxcdTBDMDUtXFx1MEMwQ1xcdTBDMEUtXFx1MEMxMFxcdTBDMTItXFx1MEMyOFxcdTBDMkEtXFx1MEMzOVxcdTBDM0RcXHUwQzU4LVxcdTBDNUFcXHUwQzYwXFx1MEM2MVxcdTBDODBcXHUwQzg1LVxcdTBDOENcXHUwQzhFLVxcdTBDOTBcXHUwQzkyLVxcdTBDQThcXHUwQ0FBLVxcdTBDQjNcXHUwQ0I1LVxcdTBDQjlcXHUwQ0JEXFx1MENERVxcdTBDRTBcXHUwQ0UxXFx1MENGMVxcdTBDRjJcXHUwRDA0LVxcdTBEMENcXHUwRDBFLVxcdTBEMTBcXHUwRDEyLVxcdTBEM0FcXHUwRDNEXFx1MEQ0RVxcdTBENTQtXFx1MEQ1NlxcdTBENUYtXFx1MEQ2MVxcdTBEN0EtXFx1MEQ3RlxcdTBEODUtXFx1MEQ5NlxcdTBEOUEtXFx1MERCMVxcdTBEQjMtXFx1MERCQlxcdTBEQkRcXHUwREMwLVxcdTBEQzZcXHUwRTAxLVxcdTBFMzBcXHUwRTMyXFx1MEUzM1xcdTBFNDAtXFx1MEU0NlxcdTBFODFcXHUwRTgyXFx1MEU4NFxcdTBFODYtXFx1MEU4QVxcdTBFOEMtXFx1MEVBM1xcdTBFQTVcXHUwRUE3LVxcdTBFQjBcXHUwRUIyXFx1MEVCM1xcdTBFQkRcXHUwRUMwLVxcdTBFQzRcXHUwRUM2XFx1MEVEQy1cXHUwRURGXFx1MEYwMFxcdTBGNDAtXFx1MEY0N1xcdTBGNDktXFx1MEY2Q1xcdTBGODgtXFx1MEY4Q1xcdTEwMDAtXFx1MTAyQVxcdTEwM0ZcXHUxMDUwLVxcdTEwNTVcXHUxMDVBLVxcdTEwNURcXHUxMDYxXFx1MTA2NVxcdTEwNjZcXHUxMDZFLVxcdTEwNzBcXHUxMDc1LVxcdTEwODFcXHUxMDhFXFx1MTBBMC1cXHUxMEM1XFx1MTBDN1xcdTEwQ0RcXHUxMEQwLVxcdTEwRkFcXHUxMEZDLVxcdTEyNDhcXHUxMjRBLVxcdTEyNERcXHUxMjUwLVxcdTEyNTZcXHUxMjU4XFx1MTI1QS1cXHUxMjVEXFx1MTI2MC1cXHUxMjg4XFx1MTI4QS1cXHUxMjhEXFx1MTI5MC1cXHUxMkIwXFx1MTJCMi1cXHUxMkI1XFx1MTJCOC1cXHUxMkJFXFx1MTJDMFxcdTEyQzItXFx1MTJDNVxcdTEyQzgtXFx1MTJENlxcdTEyRDgtXFx1MTMxMFxcdTEzMTItXFx1MTMxNVxcdTEzMTgtXFx1MTM1QVxcdTEzODAtXFx1MTM4RlxcdTEzQTAtXFx1MTNGNVxcdTEzRjgtXFx1MTNGRFxcdTE0MDEtXFx1MTY2Q1xcdTE2NkYtXFx1MTY3RlxcdTE2ODEtXFx1MTY5QVxcdTE2QTAtXFx1MTZFQVxcdTE2RjEtXFx1MTZGOFxcdTE3MDAtXFx1MTcwQ1xcdTE3MEUtXFx1MTcxMVxcdTE3MjAtXFx1MTczMVxcdTE3NDAtXFx1MTc1MVxcdTE3NjAtXFx1MTc2Q1xcdTE3NkUtXFx1MTc3MFxcdTE3ODAtXFx1MTdCM1xcdTE3RDdcXHUxN0RDXFx1MTgyMC1cXHUxODc4XFx1MTg4MC1cXHUxODg0XFx1MTg4Ny1cXHUxOEE4XFx1MThBQVxcdTE4QjAtXFx1MThGNVxcdTE5MDAtXFx1MTkxRVxcdTE5NTAtXFx1MTk2RFxcdTE5NzAtXFx1MTk3NFxcdTE5ODAtXFx1MTlBQlxcdTE5QjAtXFx1MTlDOVxcdTFBMDAtXFx1MUExNlxcdTFBMjAtXFx1MUE1NFxcdTFBQTdcXHUxQjA1LVxcdTFCMzNcXHUxQjQ1LVxcdTFCNEJcXHUxQjgzLVxcdTFCQTBcXHUxQkFFXFx1MUJBRlxcdTFCQkEtXFx1MUJFNVxcdTFDMDAtXFx1MUMyM1xcdTFDNEQtXFx1MUM0RlxcdTFDNUEtXFx1MUM3RFxcdTFDODAtXFx1MUM4OFxcdTFDOTAtXFx1MUNCQVxcdTFDQkQtXFx1MUNCRlxcdTFDRTktXFx1MUNFQ1xcdTFDRUUtXFx1MUNGM1xcdTFDRjVcXHUxQ0Y2XFx1MUNGQVxcdTFEMDAtXFx1MURCRlxcdTFFMDAtXFx1MUYxNVxcdTFGMTgtXFx1MUYxRFxcdTFGMjAtXFx1MUY0NVxcdTFGNDgtXFx1MUY0RFxcdTFGNTAtXFx1MUY1N1xcdTFGNTlcXHUxRjVCXFx1MUY1RFxcdTFGNUYtXFx1MUY3RFxcdTFGODAtXFx1MUZCNFxcdTFGQjYtXFx1MUZCQ1xcdTFGQkVcXHUxRkMyLVxcdTFGQzRcXHUxRkM2LVxcdTFGQ0NcXHUxRkQwLVxcdTFGRDNcXHUxRkQ2LVxcdTFGREJcXHUxRkUwLVxcdTFGRUNcXHUxRkYyLVxcdTFGRjRcXHUxRkY2LVxcdTFGRkNcXHUyMDcxXFx1MjA3RlxcdTIwOTAtXFx1MjA5Q1xcdTIxMDJcXHUyMTA3XFx1MjEwQS1cXHUyMTEzXFx1MjExNVxcdTIxMTktXFx1MjExRFxcdTIxMjRcXHUyMTI2XFx1MjEyOFxcdTIxMkEtXFx1MjEyRFxcdTIxMkYtXFx1MjEzOVxcdTIxM0MtXFx1MjEzRlxcdTIxNDUtXFx1MjE0OVxcdTIxNEVcXHUyMTgzXFx1MjE4NFxcdTJDMDAtXFx1MkMyRVxcdTJDMzAtXFx1MkM1RVxcdTJDNjAtXFx1MkNFNFxcdTJDRUItXFx1MkNFRVxcdTJDRjJcXHUyQ0YzXFx1MkQwMC1cXHUyRDI1XFx1MkQyN1xcdTJEMkRcXHUyRDMwLVxcdTJENjdcXHUyRDZGXFx1MkQ4MC1cXHUyRDk2XFx1MkRBMC1cXHUyREE2XFx1MkRBOC1cXHUyREFFXFx1MkRCMC1cXHUyREI2XFx1MkRCOC1cXHUyREJFXFx1MkRDMC1cXHUyREM2XFx1MkRDOC1cXHUyRENFXFx1MkREMC1cXHUyREQ2XFx1MkREOC1cXHUyRERFXFx1MkUyRlxcdTMwMDVcXHUzMDA2XFx1MzAzMS1cXHUzMDM1XFx1MzAzQlxcdTMwM0NcXHUzMDQxLVxcdTMwOTZcXHUzMDlELVxcdTMwOUZcXHUzMEExLVxcdTMwRkFcXHUzMEZDLVxcdTMwRkZcXHUzMTA1LVxcdTMxMkZcXHUzMTMxLVxcdTMxOEVcXHUzMUEwLVxcdTMxQkZcXHUzMUYwLVxcdTMxRkZcXHUzNDAwLVxcdTREQkZcXHU0RTAwLVxcdTlGRkNcXHVBMDAwLVxcdUE0OENcXHVBNEQwLVxcdUE0RkRcXHVBNTAwLVxcdUE2MENcXHVBNjEwLVxcdUE2MUZcXHVBNjJBXFx1QTYyQlxcdUE2NDAtXFx1QTY2RVxcdUE2N0YtXFx1QTY5RFxcdUE2QTAtXFx1QTZFNVxcdUE3MTctXFx1QTcxRlxcdUE3MjItXFx1QTc4OFxcdUE3OEItXFx1QTdCRlxcdUE3QzItXFx1QTdDQVxcdUE3RjUtXFx1QTgwMVxcdUE4MDMtXFx1QTgwNVxcdUE4MDctXFx1QTgwQVxcdUE4MEMtXFx1QTgyMlxcdUE4NDAtXFx1QTg3M1xcdUE4ODItXFx1QThCM1xcdUE4RjItXFx1QThGN1xcdUE4RkJcXHVBOEZEXFx1QThGRVxcdUE5MEEtXFx1QTkyNVxcdUE5MzAtXFx1QTk0NlxcdUE5NjAtXFx1QTk3Q1xcdUE5ODQtXFx1QTlCMlxcdUE5Q0ZcXHVBOUUwLVxcdUE5RTRcXHVBOUU2LVxcdUE5RUZcXHVBOUZBLVxcdUE5RkVcXHVBQTAwLVxcdUFBMjhcXHVBQTQwLVxcdUFBNDJcXHVBQTQ0LVxcdUFBNEJcXHVBQTYwLVxcdUFBNzZcXHVBQTdBXFx1QUE3RS1cXHVBQUFGXFx1QUFCMVxcdUFBQjVcXHVBQUI2XFx1QUFCOS1cXHVBQUJEXFx1QUFDMFxcdUFBQzJcXHVBQURCLVxcdUFBRERcXHVBQUUwLVxcdUFBRUFcXHVBQUYyLVxcdUFBRjRcXHVBQjAxLVxcdUFCMDZcXHVBQjA5LVxcdUFCMEVcXHVBQjExLVxcdUFCMTZcXHVBQjIwLVxcdUFCMjZcXHVBQjI4LVxcdUFCMkVcXHVBQjMwLVxcdUFCNUFcXHVBQjVDLVxcdUFCNjlcXHVBQjcwLVxcdUFCRTJcXHVBQzAwLVxcdUQ3QTNcXHVEN0IwLVxcdUQ3QzZcXHVEN0NCLVxcdUQ3RkJcXHVGOTAwLVxcdUZBNkRcXHVGQTcwLVxcdUZBRDlcXHVGQjAwLVxcdUZCMDZcXHVGQjEzLVxcdUZCMTdcXHVGQjFEXFx1RkIxRi1cXHVGQjI4XFx1RkIyQS1cXHVGQjM2XFx1RkIzOC1cXHVGQjNDXFx1RkIzRVxcdUZCNDBcXHVGQjQxXFx1RkI0M1xcdUZCNDRcXHVGQjQ2LVxcdUZCQjFcXHVGQkQzLVxcdUZEM0RcXHVGRDUwLVxcdUZEOEZcXHVGRDkyLVxcdUZEQzdcXHVGREYwLVxcdUZERkJcXHVGRTcwLVxcdUZFNzRcXHVGRTc2LVxcdUZFRkNcXHVGRjIxLVxcdUZGM0FcXHVGRjQxLVxcdUZGNUFcXHVGRjY2LVxcdUZGQkVcXHVGRkMyLVxcdUZGQzdcXHVGRkNBLVxcdUZGQ0ZcXHVGRkQyLVxcdUZGRDdcXHVGRkRBLVxcdUZGREMnLFxuICAgICAgICAnYXN0cmFsJzogJ1xcdUQ4MDBbXFx1REMwMC1cXHVEQzBCXFx1REMwRC1cXHVEQzI2XFx1REMyOC1cXHVEQzNBXFx1REMzQ1xcdURDM0RcXHVEQzNGLVxcdURDNERcXHVEQzUwLVxcdURDNURcXHVEQzgwLVxcdURDRkFcXHVERTgwLVxcdURFOUNcXHVERUEwLVxcdURFRDBcXHVERjAwLVxcdURGMUZcXHVERjJELVxcdURGNDBcXHVERjQyLVxcdURGNDlcXHVERjUwLVxcdURGNzVcXHVERjgwLVxcdURGOURcXHVERkEwLVxcdURGQzNcXHVERkM4LVxcdURGQ0ZdfFxcdUQ4MDFbXFx1REMwMC1cXHVEQzlEXFx1RENCMC1cXHVEQ0QzXFx1RENEOC1cXHVEQ0ZCXFx1REQwMC1cXHVERDI3XFx1REQzMC1cXHVERDYzXFx1REUwMC1cXHVERjM2XFx1REY0MC1cXHVERjU1XFx1REY2MC1cXHVERjY3XXxcXHVEODAyW1xcdURDMDAtXFx1REMwNVxcdURDMDhcXHVEQzBBLVxcdURDMzVcXHVEQzM3XFx1REMzOFxcdURDM0NcXHVEQzNGLVxcdURDNTVcXHVEQzYwLVxcdURDNzZcXHVEQzgwLVxcdURDOUVcXHVEQ0UwLVxcdURDRjJcXHVEQ0Y0XFx1RENGNVxcdUREMDAtXFx1REQxNVxcdUREMjAtXFx1REQzOVxcdUREODAtXFx1RERCN1xcdUREQkVcXHVEREJGXFx1REUwMFxcdURFMTAtXFx1REUxM1xcdURFMTUtXFx1REUxN1xcdURFMTktXFx1REUzNVxcdURFNjAtXFx1REU3Q1xcdURFODAtXFx1REU5Q1xcdURFQzAtXFx1REVDN1xcdURFQzktXFx1REVFNFxcdURGMDAtXFx1REYzNVxcdURGNDAtXFx1REY1NVxcdURGNjAtXFx1REY3MlxcdURGODAtXFx1REY5MV18XFx1RDgwM1tcXHVEQzAwLVxcdURDNDhcXHVEQzgwLVxcdURDQjJcXHVEQ0MwLVxcdURDRjJcXHVERDAwLVxcdUREMjNcXHVERTgwLVxcdURFQTlcXHVERUIwXFx1REVCMVxcdURGMDAtXFx1REYxQ1xcdURGMjdcXHVERjMwLVxcdURGNDVcXHVERkIwLVxcdURGQzRcXHVERkUwLVxcdURGRjZdfFxcdUQ4MDRbXFx1REMwMy1cXHVEQzM3XFx1REM4My1cXHVEQ0FGXFx1RENEMC1cXHVEQ0U4XFx1REQwMy1cXHVERDI2XFx1REQ0NFxcdURENDdcXHVERDUwLVxcdURENzJcXHVERDc2XFx1REQ4My1cXHVEREIyXFx1RERDMS1cXHVEREM0XFx1REREQVxcdURERENcXHVERTAwLVxcdURFMTFcXHVERTEzLVxcdURFMkJcXHVERTgwLVxcdURFODZcXHVERTg4XFx1REU4QS1cXHVERThEXFx1REU4Ri1cXHVERTlEXFx1REU5Ri1cXHVERUE4XFx1REVCMC1cXHVERURFXFx1REYwNS1cXHVERjBDXFx1REYwRlxcdURGMTBcXHVERjEzLVxcdURGMjhcXHVERjJBLVxcdURGMzBcXHVERjMyXFx1REYzM1xcdURGMzUtXFx1REYzOVxcdURGM0RcXHVERjUwXFx1REY1RC1cXHVERjYxXXxcXHVEODA1W1xcdURDMDAtXFx1REMzNFxcdURDNDctXFx1REM0QVxcdURDNUYtXFx1REM2MVxcdURDODAtXFx1RENBRlxcdURDQzRcXHVEQ0M1XFx1RENDN1xcdUREODAtXFx1RERBRVxcdURERDgtXFx1REREQlxcdURFMDAtXFx1REUyRlxcdURFNDRcXHVERTgwLVxcdURFQUFcXHVERUI4XFx1REYwMC1cXHVERjFBXXxcXHVEODA2W1xcdURDMDAtXFx1REMyQlxcdURDQTAtXFx1RENERlxcdURDRkYtXFx1REQwNlxcdUREMDlcXHVERDBDLVxcdUREMTNcXHVERDE1XFx1REQxNlxcdUREMTgtXFx1REQyRlxcdUREM0ZcXHVERDQxXFx1RERBMC1cXHVEREE3XFx1RERBQS1cXHVEREQwXFx1RERFMVxcdURERTNcXHVERTAwXFx1REUwQi1cXHVERTMyXFx1REUzQVxcdURFNTBcXHVERTVDLVxcdURFODlcXHVERTlEXFx1REVDMC1cXHVERUY4XXxcXHVEODA3W1xcdURDMDAtXFx1REMwOFxcdURDMEEtXFx1REMyRVxcdURDNDBcXHVEQzcyLVxcdURDOEZcXHVERDAwLVxcdUREMDZcXHVERDA4XFx1REQwOVxcdUREMEItXFx1REQzMFxcdURENDZcXHVERDYwLVxcdURENjVcXHVERDY3XFx1REQ2OFxcdURENkEtXFx1REQ4OVxcdUREOThcXHVERUUwLVxcdURFRjJcXHVERkIwXXxcXHVEODA4W1xcdURDMDAtXFx1REY5OV18XFx1RDgwOVtcXHVEQzgwLVxcdURENDNdfFtcXHVEODBDXFx1RDgxQy1cXHVEODIwXFx1RDgyMlxcdUQ4NDAtXFx1RDg2OFxcdUQ4NkEtXFx1RDg2Q1xcdUQ4NkYtXFx1RDg3MlxcdUQ4NzQtXFx1RDg3OVxcdUQ4ODAtXFx1RDg4M11bXFx1REMwMC1cXHVERkZGXXxcXHVEODBEW1xcdURDMDAtXFx1REMyRV18XFx1RDgxMVtcXHVEQzAwLVxcdURFNDZdfFxcdUQ4MUFbXFx1REMwMC1cXHVERTM4XFx1REU0MC1cXHVERTVFXFx1REVEMC1cXHVERUVEXFx1REYwMC1cXHVERjJGXFx1REY0MC1cXHVERjQzXFx1REY2My1cXHVERjc3XFx1REY3RC1cXHVERjhGXXxcXHVEODFCW1xcdURFNDAtXFx1REU3RlxcdURGMDAtXFx1REY0QVxcdURGNTBcXHVERjkzLVxcdURGOUZcXHVERkUwXFx1REZFMVxcdURGRTNdfFxcdUQ4MjFbXFx1REMwMC1cXHVERkY3XXxcXHVEODIzW1xcdURDMDAtXFx1RENENVxcdUREMDAtXFx1REQwOF18XFx1RDgyQ1tcXHVEQzAwLVxcdUREMUVcXHVERDUwLVxcdURENTJcXHVERDY0LVxcdURENjdcXHVERDcwLVxcdURFRkJdfFxcdUQ4MkZbXFx1REMwMC1cXHVEQzZBXFx1REM3MC1cXHVEQzdDXFx1REM4MC1cXHVEQzg4XFx1REM5MC1cXHVEQzk5XXxcXHVEODM1W1xcdURDMDAtXFx1REM1NFxcdURDNTYtXFx1REM5Q1xcdURDOUVcXHVEQzlGXFx1RENBMlxcdURDQTVcXHVEQ0E2XFx1RENBOS1cXHVEQ0FDXFx1RENBRS1cXHVEQ0I5XFx1RENCQlxcdURDQkQtXFx1RENDM1xcdURDQzUtXFx1REQwNVxcdUREMDctXFx1REQwQVxcdUREMEQtXFx1REQxNFxcdUREMTYtXFx1REQxQ1xcdUREMUUtXFx1REQzOVxcdUREM0ItXFx1REQzRVxcdURENDAtXFx1REQ0NFxcdURENDZcXHVERDRBLVxcdURENTBcXHVERDUyLVxcdURFQTVcXHVERUE4LVxcdURFQzBcXHVERUMyLVxcdURFREFcXHVERURDLVxcdURFRkFcXHVERUZDLVxcdURGMTRcXHVERjE2LVxcdURGMzRcXHVERjM2LVxcdURGNEVcXHVERjUwLVxcdURGNkVcXHVERjcwLVxcdURGODhcXHVERjhBLVxcdURGQThcXHVERkFBLVxcdURGQzJcXHVERkM0LVxcdURGQ0JdfFxcdUQ4MzhbXFx1REQwMC1cXHVERDJDXFx1REQzNy1cXHVERDNEXFx1REQ0RVxcdURFQzAtXFx1REVFQl18XFx1RDgzQVtcXHVEQzAwLVxcdURDQzRcXHVERDAwLVxcdURENDNcXHVERDRCXXxcXHVEODNCW1xcdURFMDAtXFx1REUwM1xcdURFMDUtXFx1REUxRlxcdURFMjFcXHVERTIyXFx1REUyNFxcdURFMjdcXHVERTI5LVxcdURFMzJcXHVERTM0LVxcdURFMzdcXHVERTM5XFx1REUzQlxcdURFNDJcXHVERTQ3XFx1REU0OVxcdURFNEJcXHVERTRELVxcdURFNEZcXHVERTUxXFx1REU1MlxcdURFNTRcXHVERTU3XFx1REU1OVxcdURFNUJcXHVERTVEXFx1REU1RlxcdURFNjFcXHVERTYyXFx1REU2NFxcdURFNjctXFx1REU2QVxcdURFNkMtXFx1REU3MlxcdURFNzQtXFx1REU3N1xcdURFNzktXFx1REU3Q1xcdURFN0VcXHVERTgwLVxcdURFODlcXHVERThCLVxcdURFOUJcXHVERUExLVxcdURFQTNcXHVERUE1LVxcdURFQTlcXHVERUFCLVxcdURFQkJdfFxcdUQ4NjlbXFx1REMwMC1cXHVERUREXFx1REYwMC1cXHVERkZGXXxcXHVEODZEW1xcdURDMDAtXFx1REYzNFxcdURGNDAtXFx1REZGRl18XFx1RDg2RVtcXHVEQzAwLVxcdURDMURcXHVEQzIwLVxcdURGRkZdfFxcdUQ4NzNbXFx1REMwMC1cXHVERUExXFx1REVCMC1cXHVERkZGXXxcXHVEODdBW1xcdURDMDAtXFx1REZFMF18XFx1RDg3RVtcXHVEQzAwLVxcdURFMURdfFxcdUQ4ODRbXFx1REMwMC1cXHVERjRBXSdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnTEMnLFxuICAgICAgICAnYWxpYXMnOiAnQ2FzZWRfTGV0dGVyJyxcbiAgICAgICAgJ2JtcCc6ICdBLVphLXpcXHhCNVxceEMwLVxceEQ2XFx4RDgtXFx4RjZcXHhGOC1cXHUwMUJBXFx1MDFCQy1cXHUwMUJGXFx1MDFDNC1cXHUwMjkzXFx1MDI5NS1cXHUwMkFGXFx1MDM3MC1cXHUwMzczXFx1MDM3NlxcdTAzNzdcXHUwMzdCLVxcdTAzN0RcXHUwMzdGXFx1MDM4NlxcdTAzODgtXFx1MDM4QVxcdTAzOENcXHUwMzhFLVxcdTAzQTFcXHUwM0EzLVxcdTAzRjVcXHUwM0Y3LVxcdTA0ODFcXHUwNDhBLVxcdTA1MkZcXHUwNTMxLVxcdTA1NTZcXHUwNTYwLVxcdTA1ODhcXHUxMEEwLVxcdTEwQzVcXHUxMEM3XFx1MTBDRFxcdTEwRDAtXFx1MTBGQVxcdTEwRkQtXFx1MTBGRlxcdTEzQTAtXFx1MTNGNVxcdTEzRjgtXFx1MTNGRFxcdTFDODAtXFx1MUM4OFxcdTFDOTAtXFx1MUNCQVxcdTFDQkQtXFx1MUNCRlxcdTFEMDAtXFx1MUQyQlxcdTFENkItXFx1MUQ3N1xcdTFENzktXFx1MUQ5QVxcdTFFMDAtXFx1MUYxNVxcdTFGMTgtXFx1MUYxRFxcdTFGMjAtXFx1MUY0NVxcdTFGNDgtXFx1MUY0RFxcdTFGNTAtXFx1MUY1N1xcdTFGNTlcXHUxRjVCXFx1MUY1RFxcdTFGNUYtXFx1MUY3RFxcdTFGODAtXFx1MUZCNFxcdTFGQjYtXFx1MUZCQ1xcdTFGQkVcXHUxRkMyLVxcdTFGQzRcXHUxRkM2LVxcdTFGQ0NcXHUxRkQwLVxcdTFGRDNcXHUxRkQ2LVxcdTFGREJcXHUxRkUwLVxcdTFGRUNcXHUxRkYyLVxcdTFGRjRcXHUxRkY2LVxcdTFGRkNcXHUyMTAyXFx1MjEwN1xcdTIxMEEtXFx1MjExM1xcdTIxMTVcXHUyMTE5LVxcdTIxMURcXHUyMTI0XFx1MjEyNlxcdTIxMjhcXHUyMTJBLVxcdTIxMkRcXHUyMTJGLVxcdTIxMzRcXHUyMTM5XFx1MjEzQy1cXHUyMTNGXFx1MjE0NS1cXHUyMTQ5XFx1MjE0RVxcdTIxODNcXHUyMTg0XFx1MkMwMC1cXHUyQzJFXFx1MkMzMC1cXHUyQzVFXFx1MkM2MC1cXHUyQzdCXFx1MkM3RS1cXHUyQ0U0XFx1MkNFQi1cXHUyQ0VFXFx1MkNGMlxcdTJDRjNcXHUyRDAwLVxcdTJEMjVcXHUyRDI3XFx1MkQyRFxcdUE2NDAtXFx1QTY2RFxcdUE2ODAtXFx1QTY5QlxcdUE3MjItXFx1QTc2RlxcdUE3NzEtXFx1QTc4N1xcdUE3OEItXFx1QTc4RVxcdUE3OTAtXFx1QTdCRlxcdUE3QzItXFx1QTdDQVxcdUE3RjVcXHVBN0Y2XFx1QTdGQVxcdUFCMzAtXFx1QUI1QVxcdUFCNjAtXFx1QUI2OFxcdUFCNzAtXFx1QUJCRlxcdUZCMDAtXFx1RkIwNlxcdUZCMTMtXFx1RkIxN1xcdUZGMjEtXFx1RkYzQVxcdUZGNDEtXFx1RkY1QScsXG4gICAgICAgICdhc3RyYWwnOiAnXFx1RDgwMVtcXHVEQzAwLVxcdURDNEZcXHVEQ0IwLVxcdURDRDNcXHVEQ0Q4LVxcdURDRkJdfFxcdUQ4MDNbXFx1REM4MC1cXHVEQ0IyXFx1RENDMC1cXHVEQ0YyXXxcXHVEODA2W1xcdURDQTAtXFx1RENERl18XFx1RDgxQltcXHVERTQwLVxcdURFN0ZdfFxcdUQ4MzVbXFx1REMwMC1cXHVEQzU0XFx1REM1Ni1cXHVEQzlDXFx1REM5RVxcdURDOUZcXHVEQ0EyXFx1RENBNVxcdURDQTZcXHVEQ0E5LVxcdURDQUNcXHVEQ0FFLVxcdURDQjlcXHVEQ0JCXFx1RENCRC1cXHVEQ0MzXFx1RENDNS1cXHVERDA1XFx1REQwNy1cXHVERDBBXFx1REQwRC1cXHVERDE0XFx1REQxNi1cXHVERDFDXFx1REQxRS1cXHVERDM5XFx1REQzQi1cXHVERDNFXFx1REQ0MC1cXHVERDQ0XFx1REQ0NlxcdURENEEtXFx1REQ1MFxcdURENTItXFx1REVBNVxcdURFQTgtXFx1REVDMFxcdURFQzItXFx1REVEQVxcdURFREMtXFx1REVGQVxcdURFRkMtXFx1REYxNFxcdURGMTYtXFx1REYzNFxcdURGMzYtXFx1REY0RVxcdURGNTAtXFx1REY2RVxcdURGNzAtXFx1REY4OFxcdURGOEEtXFx1REZBOFxcdURGQUEtXFx1REZDMlxcdURGQzQtXFx1REZDQl18XFx1RDgzQVtcXHVERDAwLVxcdURENDNdJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdMbCcsXG4gICAgICAgICdhbGlhcyc6ICdMb3dlcmNhc2VfTGV0dGVyJyxcbiAgICAgICAgJ2JtcCc6ICdhLXpcXHhCNVxceERGLVxceEY2XFx4RjgtXFx4RkZcXHUwMTAxXFx1MDEwM1xcdTAxMDVcXHUwMTA3XFx1MDEwOVxcdTAxMEJcXHUwMTBEXFx1MDEwRlxcdTAxMTFcXHUwMTEzXFx1MDExNVxcdTAxMTdcXHUwMTE5XFx1MDExQlxcdTAxMURcXHUwMTFGXFx1MDEyMVxcdTAxMjNcXHUwMTI1XFx1MDEyN1xcdTAxMjlcXHUwMTJCXFx1MDEyRFxcdTAxMkZcXHUwMTMxXFx1MDEzM1xcdTAxMzVcXHUwMTM3XFx1MDEzOFxcdTAxM0FcXHUwMTNDXFx1MDEzRVxcdTAxNDBcXHUwMTQyXFx1MDE0NFxcdTAxNDZcXHUwMTQ4XFx1MDE0OVxcdTAxNEJcXHUwMTREXFx1MDE0RlxcdTAxNTFcXHUwMTUzXFx1MDE1NVxcdTAxNTdcXHUwMTU5XFx1MDE1QlxcdTAxNURcXHUwMTVGXFx1MDE2MVxcdTAxNjNcXHUwMTY1XFx1MDE2N1xcdTAxNjlcXHUwMTZCXFx1MDE2RFxcdTAxNkZcXHUwMTcxXFx1MDE3M1xcdTAxNzVcXHUwMTc3XFx1MDE3QVxcdTAxN0NcXHUwMTdFLVxcdTAxODBcXHUwMTgzXFx1MDE4NVxcdTAxODhcXHUwMThDXFx1MDE4RFxcdTAxOTJcXHUwMTk1XFx1MDE5OS1cXHUwMTlCXFx1MDE5RVxcdTAxQTFcXHUwMUEzXFx1MDFBNVxcdTAxQThcXHUwMUFBXFx1MDFBQlxcdTAxQURcXHUwMUIwXFx1MDFCNFxcdTAxQjZcXHUwMUI5XFx1MDFCQVxcdTAxQkQtXFx1MDFCRlxcdTAxQzZcXHUwMUM5XFx1MDFDQ1xcdTAxQ0VcXHUwMUQwXFx1MDFEMlxcdTAxRDRcXHUwMUQ2XFx1MDFEOFxcdTAxREFcXHUwMURDXFx1MDFERFxcdTAxREZcXHUwMUUxXFx1MDFFM1xcdTAxRTVcXHUwMUU3XFx1MDFFOVxcdTAxRUJcXHUwMUVEXFx1MDFFRlxcdTAxRjBcXHUwMUYzXFx1MDFGNVxcdTAxRjlcXHUwMUZCXFx1MDFGRFxcdTAxRkZcXHUwMjAxXFx1MDIwM1xcdTAyMDVcXHUwMjA3XFx1MDIwOVxcdTAyMEJcXHUwMjBEXFx1MDIwRlxcdTAyMTFcXHUwMjEzXFx1MDIxNVxcdTAyMTdcXHUwMjE5XFx1MDIxQlxcdTAyMURcXHUwMjFGXFx1MDIyMVxcdTAyMjNcXHUwMjI1XFx1MDIyN1xcdTAyMjlcXHUwMjJCXFx1MDIyRFxcdTAyMkZcXHUwMjMxXFx1MDIzMy1cXHUwMjM5XFx1MDIzQ1xcdTAyM0ZcXHUwMjQwXFx1MDI0MlxcdTAyNDdcXHUwMjQ5XFx1MDI0QlxcdTAyNERcXHUwMjRGLVxcdTAyOTNcXHUwMjk1LVxcdTAyQUZcXHUwMzcxXFx1MDM3M1xcdTAzNzdcXHUwMzdCLVxcdTAzN0RcXHUwMzkwXFx1MDNBQy1cXHUwM0NFXFx1MDNEMFxcdTAzRDFcXHUwM0Q1LVxcdTAzRDdcXHUwM0Q5XFx1MDNEQlxcdTAzRERcXHUwM0RGXFx1MDNFMVxcdTAzRTNcXHUwM0U1XFx1MDNFN1xcdTAzRTlcXHUwM0VCXFx1MDNFRFxcdTAzRUYtXFx1MDNGM1xcdTAzRjVcXHUwM0Y4XFx1MDNGQlxcdTAzRkNcXHUwNDMwLVxcdTA0NUZcXHUwNDYxXFx1MDQ2M1xcdTA0NjVcXHUwNDY3XFx1MDQ2OVxcdTA0NkJcXHUwNDZEXFx1MDQ2RlxcdTA0NzFcXHUwNDczXFx1MDQ3NVxcdTA0NzdcXHUwNDc5XFx1MDQ3QlxcdTA0N0RcXHUwNDdGXFx1MDQ4MVxcdTA0OEJcXHUwNDhEXFx1MDQ4RlxcdTA0OTFcXHUwNDkzXFx1MDQ5NVxcdTA0OTdcXHUwNDk5XFx1MDQ5QlxcdTA0OURcXHUwNDlGXFx1MDRBMVxcdTA0QTNcXHUwNEE1XFx1MDRBN1xcdTA0QTlcXHUwNEFCXFx1MDRBRFxcdTA0QUZcXHUwNEIxXFx1MDRCM1xcdTA0QjVcXHUwNEI3XFx1MDRCOVxcdTA0QkJcXHUwNEJEXFx1MDRCRlxcdTA0QzJcXHUwNEM0XFx1MDRDNlxcdTA0QzhcXHUwNENBXFx1MDRDQ1xcdTA0Q0VcXHUwNENGXFx1MDREMVxcdTA0RDNcXHUwNEQ1XFx1MDREN1xcdTA0RDlcXHUwNERCXFx1MDRERFxcdTA0REZcXHUwNEUxXFx1MDRFM1xcdTA0RTVcXHUwNEU3XFx1MDRFOVxcdTA0RUJcXHUwNEVEXFx1MDRFRlxcdTA0RjFcXHUwNEYzXFx1MDRGNVxcdTA0RjdcXHUwNEY5XFx1MDRGQlxcdTA0RkRcXHUwNEZGXFx1MDUwMVxcdTA1MDNcXHUwNTA1XFx1MDUwN1xcdTA1MDlcXHUwNTBCXFx1MDUwRFxcdTA1MEZcXHUwNTExXFx1MDUxM1xcdTA1MTVcXHUwNTE3XFx1MDUxOVxcdTA1MUJcXHUwNTFEXFx1MDUxRlxcdTA1MjFcXHUwNTIzXFx1MDUyNVxcdTA1MjdcXHUwNTI5XFx1MDUyQlxcdTA1MkRcXHUwNTJGXFx1MDU2MC1cXHUwNTg4XFx1MTBEMC1cXHUxMEZBXFx1MTBGRC1cXHUxMEZGXFx1MTNGOC1cXHUxM0ZEXFx1MUM4MC1cXHUxQzg4XFx1MUQwMC1cXHUxRDJCXFx1MUQ2Qi1cXHUxRDc3XFx1MUQ3OS1cXHUxRDlBXFx1MUUwMVxcdTFFMDNcXHUxRTA1XFx1MUUwN1xcdTFFMDlcXHUxRTBCXFx1MUUwRFxcdTFFMEZcXHUxRTExXFx1MUUxM1xcdTFFMTVcXHUxRTE3XFx1MUUxOVxcdTFFMUJcXHUxRTFEXFx1MUUxRlxcdTFFMjFcXHUxRTIzXFx1MUUyNVxcdTFFMjdcXHUxRTI5XFx1MUUyQlxcdTFFMkRcXHUxRTJGXFx1MUUzMVxcdTFFMzNcXHUxRTM1XFx1MUUzN1xcdTFFMzlcXHUxRTNCXFx1MUUzRFxcdTFFM0ZcXHUxRTQxXFx1MUU0M1xcdTFFNDVcXHUxRTQ3XFx1MUU0OVxcdTFFNEJcXHUxRTREXFx1MUU0RlxcdTFFNTFcXHUxRTUzXFx1MUU1NVxcdTFFNTdcXHUxRTU5XFx1MUU1QlxcdTFFNURcXHUxRTVGXFx1MUU2MVxcdTFFNjNcXHUxRTY1XFx1MUU2N1xcdTFFNjlcXHUxRTZCXFx1MUU2RFxcdTFFNkZcXHUxRTcxXFx1MUU3M1xcdTFFNzVcXHUxRTc3XFx1MUU3OVxcdTFFN0JcXHUxRTdEXFx1MUU3RlxcdTFFODFcXHUxRTgzXFx1MUU4NVxcdTFFODdcXHUxRTg5XFx1MUU4QlxcdTFFOERcXHUxRThGXFx1MUU5MVxcdTFFOTNcXHUxRTk1LVxcdTFFOURcXHUxRTlGXFx1MUVBMVxcdTFFQTNcXHUxRUE1XFx1MUVBN1xcdTFFQTlcXHUxRUFCXFx1MUVBRFxcdTFFQUZcXHUxRUIxXFx1MUVCM1xcdTFFQjVcXHUxRUI3XFx1MUVCOVxcdTFFQkJcXHUxRUJEXFx1MUVCRlxcdTFFQzFcXHUxRUMzXFx1MUVDNVxcdTFFQzdcXHUxRUM5XFx1MUVDQlxcdTFFQ0RcXHUxRUNGXFx1MUVEMVxcdTFFRDNcXHUxRUQ1XFx1MUVEN1xcdTFFRDlcXHUxRURCXFx1MUVERFxcdTFFREZcXHUxRUUxXFx1MUVFM1xcdTFFRTVcXHUxRUU3XFx1MUVFOVxcdTFFRUJcXHUxRUVEXFx1MUVFRlxcdTFFRjFcXHUxRUYzXFx1MUVGNVxcdTFFRjdcXHUxRUY5XFx1MUVGQlxcdTFFRkRcXHUxRUZGLVxcdTFGMDdcXHUxRjEwLVxcdTFGMTVcXHUxRjIwLVxcdTFGMjdcXHUxRjMwLVxcdTFGMzdcXHUxRjQwLVxcdTFGNDVcXHUxRjUwLVxcdTFGNTdcXHUxRjYwLVxcdTFGNjdcXHUxRjcwLVxcdTFGN0RcXHUxRjgwLVxcdTFGODdcXHUxRjkwLVxcdTFGOTdcXHUxRkEwLVxcdTFGQTdcXHUxRkIwLVxcdTFGQjRcXHUxRkI2XFx1MUZCN1xcdTFGQkVcXHUxRkMyLVxcdTFGQzRcXHUxRkM2XFx1MUZDN1xcdTFGRDAtXFx1MUZEM1xcdTFGRDZcXHUxRkQ3XFx1MUZFMC1cXHUxRkU3XFx1MUZGMi1cXHUxRkY0XFx1MUZGNlxcdTFGRjdcXHUyMTBBXFx1MjEwRVxcdTIxMEZcXHUyMTEzXFx1MjEyRlxcdTIxMzRcXHUyMTM5XFx1MjEzQ1xcdTIxM0RcXHUyMTQ2LVxcdTIxNDlcXHUyMTRFXFx1MjE4NFxcdTJDMzAtXFx1MkM1RVxcdTJDNjFcXHUyQzY1XFx1MkM2NlxcdTJDNjhcXHUyQzZBXFx1MkM2Q1xcdTJDNzFcXHUyQzczXFx1MkM3NFxcdTJDNzYtXFx1MkM3QlxcdTJDODFcXHUyQzgzXFx1MkM4NVxcdTJDODdcXHUyQzg5XFx1MkM4QlxcdTJDOERcXHUyQzhGXFx1MkM5MVxcdTJDOTNcXHUyQzk1XFx1MkM5N1xcdTJDOTlcXHUyQzlCXFx1MkM5RFxcdTJDOUZcXHUyQ0ExXFx1MkNBM1xcdTJDQTVcXHUyQ0E3XFx1MkNBOVxcdTJDQUJcXHUyQ0FEXFx1MkNBRlxcdTJDQjFcXHUyQ0IzXFx1MkNCNVxcdTJDQjdcXHUyQ0I5XFx1MkNCQlxcdTJDQkRcXHUyQ0JGXFx1MkNDMVxcdTJDQzNcXHUyQ0M1XFx1MkNDN1xcdTJDQzlcXHUyQ0NCXFx1MkNDRFxcdTJDQ0ZcXHUyQ0QxXFx1MkNEM1xcdTJDRDVcXHUyQ0Q3XFx1MkNEOVxcdTJDREJcXHUyQ0REXFx1MkNERlxcdTJDRTFcXHUyQ0UzXFx1MkNFNFxcdTJDRUNcXHUyQ0VFXFx1MkNGM1xcdTJEMDAtXFx1MkQyNVxcdTJEMjdcXHUyRDJEXFx1QTY0MVxcdUE2NDNcXHVBNjQ1XFx1QTY0N1xcdUE2NDlcXHVBNjRCXFx1QTY0RFxcdUE2NEZcXHVBNjUxXFx1QTY1M1xcdUE2NTVcXHVBNjU3XFx1QTY1OVxcdUE2NUJcXHVBNjVEXFx1QTY1RlxcdUE2NjFcXHVBNjYzXFx1QTY2NVxcdUE2NjdcXHVBNjY5XFx1QTY2QlxcdUE2NkRcXHVBNjgxXFx1QTY4M1xcdUE2ODVcXHVBNjg3XFx1QTY4OVxcdUE2OEJcXHVBNjhEXFx1QTY4RlxcdUE2OTFcXHVBNjkzXFx1QTY5NVxcdUE2OTdcXHVBNjk5XFx1QTY5QlxcdUE3MjNcXHVBNzI1XFx1QTcyN1xcdUE3MjlcXHVBNzJCXFx1QTcyRFxcdUE3MkYtXFx1QTczMVxcdUE3MzNcXHVBNzM1XFx1QTczN1xcdUE3MzlcXHVBNzNCXFx1QTczRFxcdUE3M0ZcXHVBNzQxXFx1QTc0M1xcdUE3NDVcXHVBNzQ3XFx1QTc0OVxcdUE3NEJcXHVBNzREXFx1QTc0RlxcdUE3NTFcXHVBNzUzXFx1QTc1NVxcdUE3NTdcXHVBNzU5XFx1QTc1QlxcdUE3NURcXHVBNzVGXFx1QTc2MVxcdUE3NjNcXHVBNzY1XFx1QTc2N1xcdUE3NjlcXHVBNzZCXFx1QTc2RFxcdUE3NkZcXHVBNzcxLVxcdUE3NzhcXHVBNzdBXFx1QTc3Q1xcdUE3N0ZcXHVBNzgxXFx1QTc4M1xcdUE3ODVcXHVBNzg3XFx1QTc4Q1xcdUE3OEVcXHVBNzkxXFx1QTc5My1cXHVBNzk1XFx1QTc5N1xcdUE3OTlcXHVBNzlCXFx1QTc5RFxcdUE3OUZcXHVBN0ExXFx1QTdBM1xcdUE3QTVcXHVBN0E3XFx1QTdBOVxcdUE3QUZcXHVBN0I1XFx1QTdCN1xcdUE3QjlcXHVBN0JCXFx1QTdCRFxcdUE3QkZcXHVBN0MzXFx1QTdDOFxcdUE3Q0FcXHVBN0Y2XFx1QTdGQVxcdUFCMzAtXFx1QUI1QVxcdUFCNjAtXFx1QUI2OFxcdUFCNzAtXFx1QUJCRlxcdUZCMDAtXFx1RkIwNlxcdUZCMTMtXFx1RkIxN1xcdUZGNDEtXFx1RkY1QScsXG4gICAgICAgICdhc3RyYWwnOiAnXFx1RDgwMVtcXHVEQzI4LVxcdURDNEZcXHVEQ0Q4LVxcdURDRkJdfFxcdUQ4MDNbXFx1RENDMC1cXHVEQ0YyXXxcXHVEODA2W1xcdURDQzAtXFx1RENERl18XFx1RDgxQltcXHVERTYwLVxcdURFN0ZdfFxcdUQ4MzVbXFx1REMxQS1cXHVEQzMzXFx1REM0RS1cXHVEQzU0XFx1REM1Ni1cXHVEQzY3XFx1REM4Mi1cXHVEQzlCXFx1RENCNi1cXHVEQ0I5XFx1RENCQlxcdURDQkQtXFx1RENDM1xcdURDQzUtXFx1RENDRlxcdURDRUEtXFx1REQwM1xcdUREMUUtXFx1REQzN1xcdURENTItXFx1REQ2QlxcdUREODYtXFx1REQ5RlxcdUREQkEtXFx1REREM1xcdURERUUtXFx1REUwN1xcdURFMjItXFx1REUzQlxcdURFNTYtXFx1REU2RlxcdURFOEEtXFx1REVBNVxcdURFQzItXFx1REVEQVxcdURFREMtXFx1REVFMVxcdURFRkMtXFx1REYxNFxcdURGMTYtXFx1REYxQlxcdURGMzYtXFx1REY0RVxcdURGNTAtXFx1REY1NVxcdURGNzAtXFx1REY4OFxcdURGOEEtXFx1REY4RlxcdURGQUEtXFx1REZDMlxcdURGQzQtXFx1REZDOVxcdURGQ0JdfFxcdUQ4M0FbXFx1REQyMi1cXHVERDQzXSdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnTG0nLFxuICAgICAgICAnYWxpYXMnOiAnTW9kaWZpZXJfTGV0dGVyJyxcbiAgICAgICAgJ2JtcCc6ICdcXHUwMkIwLVxcdTAyQzFcXHUwMkM2LVxcdTAyRDFcXHUwMkUwLVxcdTAyRTRcXHUwMkVDXFx1MDJFRVxcdTAzNzRcXHUwMzdBXFx1MDU1OVxcdTA2NDBcXHUwNkU1XFx1MDZFNlxcdTA3RjRcXHUwN0Y1XFx1MDdGQVxcdTA4MUFcXHUwODI0XFx1MDgyOFxcdTA5NzFcXHUwRTQ2XFx1MEVDNlxcdTEwRkNcXHUxN0Q3XFx1MTg0M1xcdTFBQTdcXHUxQzc4LVxcdTFDN0RcXHUxRDJDLVxcdTFENkFcXHUxRDc4XFx1MUQ5Qi1cXHUxREJGXFx1MjA3MVxcdTIwN0ZcXHUyMDkwLVxcdTIwOUNcXHUyQzdDXFx1MkM3RFxcdTJENkZcXHUyRTJGXFx1MzAwNVxcdTMwMzEtXFx1MzAzNVxcdTMwM0JcXHUzMDlEXFx1MzA5RVxcdTMwRkMtXFx1MzBGRVxcdUEwMTVcXHVBNEY4LVxcdUE0RkRcXHVBNjBDXFx1QTY3RlxcdUE2OUNcXHVBNjlEXFx1QTcxNy1cXHVBNzFGXFx1QTc3MFxcdUE3ODhcXHVBN0Y4XFx1QTdGOVxcdUE5Q0ZcXHVBOUU2XFx1QUE3MFxcdUFBRERcXHVBQUYzXFx1QUFGNFxcdUFCNUMtXFx1QUI1RlxcdUFCNjlcXHVGRjcwXFx1RkY5RVxcdUZGOUYnLFxuICAgICAgICAnYXN0cmFsJzogJ1xcdUQ4MUFbXFx1REY0MC1cXHVERjQzXXxcXHVEODFCW1xcdURGOTMtXFx1REY5RlxcdURGRTBcXHVERkUxXFx1REZFM118XFx1RDgzOFtcXHVERDM3LVxcdUREM0RdfFxcdUQ4M0FcXHVERDRCJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdMbycsXG4gICAgICAgICdhbGlhcyc6ICdPdGhlcl9MZXR0ZXInLFxuICAgICAgICAnYm1wJzogJ1xceEFBXFx4QkFcXHUwMUJCXFx1MDFDMC1cXHUwMUMzXFx1MDI5NFxcdTA1RDAtXFx1MDVFQVxcdTA1RUYtXFx1MDVGMlxcdTA2MjAtXFx1MDYzRlxcdTA2NDEtXFx1MDY0QVxcdTA2NkVcXHUwNjZGXFx1MDY3MS1cXHUwNkQzXFx1MDZENVxcdTA2RUVcXHUwNkVGXFx1MDZGQS1cXHUwNkZDXFx1MDZGRlxcdTA3MTBcXHUwNzEyLVxcdTA3MkZcXHUwNzRELVxcdTA3QTVcXHUwN0IxXFx1MDdDQS1cXHUwN0VBXFx1MDgwMC1cXHUwODE1XFx1MDg0MC1cXHUwODU4XFx1MDg2MC1cXHUwODZBXFx1MDhBMC1cXHUwOEI0XFx1MDhCNi1cXHUwOEM3XFx1MDkwNC1cXHUwOTM5XFx1MDkzRFxcdTA5NTBcXHUwOTU4LVxcdTA5NjFcXHUwOTcyLVxcdTA5ODBcXHUwOTg1LVxcdTA5OENcXHUwOThGXFx1MDk5MFxcdTA5OTMtXFx1MDlBOFxcdTA5QUEtXFx1MDlCMFxcdTA5QjJcXHUwOUI2LVxcdTA5QjlcXHUwOUJEXFx1MDlDRVxcdTA5RENcXHUwOUREXFx1MDlERi1cXHUwOUUxXFx1MDlGMFxcdTA5RjFcXHUwOUZDXFx1MEEwNS1cXHUwQTBBXFx1MEEwRlxcdTBBMTBcXHUwQTEzLVxcdTBBMjhcXHUwQTJBLVxcdTBBMzBcXHUwQTMyXFx1MEEzM1xcdTBBMzVcXHUwQTM2XFx1MEEzOFxcdTBBMzlcXHUwQTU5LVxcdTBBNUNcXHUwQTVFXFx1MEE3Mi1cXHUwQTc0XFx1MEE4NS1cXHUwQThEXFx1MEE4Ri1cXHUwQTkxXFx1MEE5My1cXHUwQUE4XFx1MEFBQS1cXHUwQUIwXFx1MEFCMlxcdTBBQjNcXHUwQUI1LVxcdTBBQjlcXHUwQUJEXFx1MEFEMFxcdTBBRTBcXHUwQUUxXFx1MEFGOVxcdTBCMDUtXFx1MEIwQ1xcdTBCMEZcXHUwQjEwXFx1MEIxMy1cXHUwQjI4XFx1MEIyQS1cXHUwQjMwXFx1MEIzMlxcdTBCMzNcXHUwQjM1LVxcdTBCMzlcXHUwQjNEXFx1MEI1Q1xcdTBCNURcXHUwQjVGLVxcdTBCNjFcXHUwQjcxXFx1MEI4M1xcdTBCODUtXFx1MEI4QVxcdTBCOEUtXFx1MEI5MFxcdTBCOTItXFx1MEI5NVxcdTBCOTlcXHUwQjlBXFx1MEI5Q1xcdTBCOUVcXHUwQjlGXFx1MEJBM1xcdTBCQTRcXHUwQkE4LVxcdTBCQUFcXHUwQkFFLVxcdTBCQjlcXHUwQkQwXFx1MEMwNS1cXHUwQzBDXFx1MEMwRS1cXHUwQzEwXFx1MEMxMi1cXHUwQzI4XFx1MEMyQS1cXHUwQzM5XFx1MEMzRFxcdTBDNTgtXFx1MEM1QVxcdTBDNjBcXHUwQzYxXFx1MEM4MFxcdTBDODUtXFx1MEM4Q1xcdTBDOEUtXFx1MEM5MFxcdTBDOTItXFx1MENBOFxcdTBDQUEtXFx1MENCM1xcdTBDQjUtXFx1MENCOVxcdTBDQkRcXHUwQ0RFXFx1MENFMFxcdTBDRTFcXHUwQ0YxXFx1MENGMlxcdTBEMDQtXFx1MEQwQ1xcdTBEMEUtXFx1MEQxMFxcdTBEMTItXFx1MEQzQVxcdTBEM0RcXHUwRDRFXFx1MEQ1NC1cXHUwRDU2XFx1MEQ1Ri1cXHUwRDYxXFx1MEQ3QS1cXHUwRDdGXFx1MEQ4NS1cXHUwRDk2XFx1MEQ5QS1cXHUwREIxXFx1MERCMy1cXHUwREJCXFx1MERCRFxcdTBEQzAtXFx1MERDNlxcdTBFMDEtXFx1MEUzMFxcdTBFMzJcXHUwRTMzXFx1MEU0MC1cXHUwRTQ1XFx1MEU4MVxcdTBFODJcXHUwRTg0XFx1MEU4Ni1cXHUwRThBXFx1MEU4Qy1cXHUwRUEzXFx1MEVBNVxcdTBFQTctXFx1MEVCMFxcdTBFQjJcXHUwRUIzXFx1MEVCRFxcdTBFQzAtXFx1MEVDNFxcdTBFREMtXFx1MEVERlxcdTBGMDBcXHUwRjQwLVxcdTBGNDdcXHUwRjQ5LVxcdTBGNkNcXHUwRjg4LVxcdTBGOENcXHUxMDAwLVxcdTEwMkFcXHUxMDNGXFx1MTA1MC1cXHUxMDU1XFx1MTA1QS1cXHUxMDVEXFx1MTA2MVxcdTEwNjVcXHUxMDY2XFx1MTA2RS1cXHUxMDcwXFx1MTA3NS1cXHUxMDgxXFx1MTA4RVxcdTExMDAtXFx1MTI0OFxcdTEyNEEtXFx1MTI0RFxcdTEyNTAtXFx1MTI1NlxcdTEyNThcXHUxMjVBLVxcdTEyNURcXHUxMjYwLVxcdTEyODhcXHUxMjhBLVxcdTEyOERcXHUxMjkwLVxcdTEyQjBcXHUxMkIyLVxcdTEyQjVcXHUxMkI4LVxcdTEyQkVcXHUxMkMwXFx1MTJDMi1cXHUxMkM1XFx1MTJDOC1cXHUxMkQ2XFx1MTJEOC1cXHUxMzEwXFx1MTMxMi1cXHUxMzE1XFx1MTMxOC1cXHUxMzVBXFx1MTM4MC1cXHUxMzhGXFx1MTQwMS1cXHUxNjZDXFx1MTY2Ri1cXHUxNjdGXFx1MTY4MS1cXHUxNjlBXFx1MTZBMC1cXHUxNkVBXFx1MTZGMS1cXHUxNkY4XFx1MTcwMC1cXHUxNzBDXFx1MTcwRS1cXHUxNzExXFx1MTcyMC1cXHUxNzMxXFx1MTc0MC1cXHUxNzUxXFx1MTc2MC1cXHUxNzZDXFx1MTc2RS1cXHUxNzcwXFx1MTc4MC1cXHUxN0IzXFx1MTdEQ1xcdTE4MjAtXFx1MTg0MlxcdTE4NDQtXFx1MTg3OFxcdTE4ODAtXFx1MTg4NFxcdTE4ODctXFx1MThBOFxcdTE4QUFcXHUxOEIwLVxcdTE4RjVcXHUxOTAwLVxcdTE5MUVcXHUxOTUwLVxcdTE5NkRcXHUxOTcwLVxcdTE5NzRcXHUxOTgwLVxcdTE5QUJcXHUxOUIwLVxcdTE5QzlcXHUxQTAwLVxcdTFBMTZcXHUxQTIwLVxcdTFBNTRcXHUxQjA1LVxcdTFCMzNcXHUxQjQ1LVxcdTFCNEJcXHUxQjgzLVxcdTFCQTBcXHUxQkFFXFx1MUJBRlxcdTFCQkEtXFx1MUJFNVxcdTFDMDAtXFx1MUMyM1xcdTFDNEQtXFx1MUM0RlxcdTFDNUEtXFx1MUM3N1xcdTFDRTktXFx1MUNFQ1xcdTFDRUUtXFx1MUNGM1xcdTFDRjVcXHUxQ0Y2XFx1MUNGQVxcdTIxMzUtXFx1MjEzOFxcdTJEMzAtXFx1MkQ2N1xcdTJEODAtXFx1MkQ5NlxcdTJEQTAtXFx1MkRBNlxcdTJEQTgtXFx1MkRBRVxcdTJEQjAtXFx1MkRCNlxcdTJEQjgtXFx1MkRCRVxcdTJEQzAtXFx1MkRDNlxcdTJEQzgtXFx1MkRDRVxcdTJERDAtXFx1MkRENlxcdTJERDgtXFx1MkRERVxcdTMwMDZcXHUzMDNDXFx1MzA0MS1cXHUzMDk2XFx1MzA5RlxcdTMwQTEtXFx1MzBGQVxcdTMwRkZcXHUzMTA1LVxcdTMxMkZcXHUzMTMxLVxcdTMxOEVcXHUzMUEwLVxcdTMxQkZcXHUzMUYwLVxcdTMxRkZcXHUzNDAwLVxcdTREQkZcXHU0RTAwLVxcdTlGRkNcXHVBMDAwLVxcdUEwMTRcXHVBMDE2LVxcdUE0OENcXHVBNEQwLVxcdUE0RjdcXHVBNTAwLVxcdUE2MEJcXHVBNjEwLVxcdUE2MUZcXHVBNjJBXFx1QTYyQlxcdUE2NkVcXHVBNkEwLVxcdUE2RTVcXHVBNzhGXFx1QTdGN1xcdUE3RkItXFx1QTgwMVxcdUE4MDMtXFx1QTgwNVxcdUE4MDctXFx1QTgwQVxcdUE4MEMtXFx1QTgyMlxcdUE4NDAtXFx1QTg3M1xcdUE4ODItXFx1QThCM1xcdUE4RjItXFx1QThGN1xcdUE4RkJcXHVBOEZEXFx1QThGRVxcdUE5MEEtXFx1QTkyNVxcdUE5MzAtXFx1QTk0NlxcdUE5NjAtXFx1QTk3Q1xcdUE5ODQtXFx1QTlCMlxcdUE5RTAtXFx1QTlFNFxcdUE5RTctXFx1QTlFRlxcdUE5RkEtXFx1QTlGRVxcdUFBMDAtXFx1QUEyOFxcdUFBNDAtXFx1QUE0MlxcdUFBNDQtXFx1QUE0QlxcdUFBNjAtXFx1QUE2RlxcdUFBNzEtXFx1QUE3NlxcdUFBN0FcXHVBQTdFLVxcdUFBQUZcXHVBQUIxXFx1QUFCNVxcdUFBQjZcXHVBQUI5LVxcdUFBQkRcXHVBQUMwXFx1QUFDMlxcdUFBREJcXHVBQURDXFx1QUFFMC1cXHVBQUVBXFx1QUFGMlxcdUFCMDEtXFx1QUIwNlxcdUFCMDktXFx1QUIwRVxcdUFCMTEtXFx1QUIxNlxcdUFCMjAtXFx1QUIyNlxcdUFCMjgtXFx1QUIyRVxcdUFCQzAtXFx1QUJFMlxcdUFDMDAtXFx1RDdBM1xcdUQ3QjAtXFx1RDdDNlxcdUQ3Q0ItXFx1RDdGQlxcdUY5MDAtXFx1RkE2RFxcdUZBNzAtXFx1RkFEOVxcdUZCMURcXHVGQjFGLVxcdUZCMjhcXHVGQjJBLVxcdUZCMzZcXHVGQjM4LVxcdUZCM0NcXHVGQjNFXFx1RkI0MFxcdUZCNDFcXHVGQjQzXFx1RkI0NFxcdUZCNDYtXFx1RkJCMVxcdUZCRDMtXFx1RkQzRFxcdUZENTAtXFx1RkQ4RlxcdUZEOTItXFx1RkRDN1xcdUZERjAtXFx1RkRGQlxcdUZFNzAtXFx1RkU3NFxcdUZFNzYtXFx1RkVGQ1xcdUZGNjYtXFx1RkY2RlxcdUZGNzEtXFx1RkY5RFxcdUZGQTAtXFx1RkZCRVxcdUZGQzItXFx1RkZDN1xcdUZGQ0EtXFx1RkZDRlxcdUZGRDItXFx1RkZEN1xcdUZGREEtXFx1RkZEQycsXG4gICAgICAgICdhc3RyYWwnOiAnXFx1RDgwMFtcXHVEQzAwLVxcdURDMEJcXHVEQzBELVxcdURDMjZcXHVEQzI4LVxcdURDM0FcXHVEQzNDXFx1REMzRFxcdURDM0YtXFx1REM0RFxcdURDNTAtXFx1REM1RFxcdURDODAtXFx1RENGQVxcdURFODAtXFx1REU5Q1xcdURFQTAtXFx1REVEMFxcdURGMDAtXFx1REYxRlxcdURGMkQtXFx1REY0MFxcdURGNDItXFx1REY0OVxcdURGNTAtXFx1REY3NVxcdURGODAtXFx1REY5RFxcdURGQTAtXFx1REZDM1xcdURGQzgtXFx1REZDRl18XFx1RDgwMVtcXHVEQzUwLVxcdURDOURcXHVERDAwLVxcdUREMjdcXHVERDMwLVxcdURENjNcXHVERTAwLVxcdURGMzZcXHVERjQwLVxcdURGNTVcXHVERjYwLVxcdURGNjddfFxcdUQ4MDJbXFx1REMwMC1cXHVEQzA1XFx1REMwOFxcdURDMEEtXFx1REMzNVxcdURDMzdcXHVEQzM4XFx1REMzQ1xcdURDM0YtXFx1REM1NVxcdURDNjAtXFx1REM3NlxcdURDODAtXFx1REM5RVxcdURDRTAtXFx1RENGMlxcdURDRjRcXHVEQ0Y1XFx1REQwMC1cXHVERDE1XFx1REQyMC1cXHVERDM5XFx1REQ4MC1cXHVEREI3XFx1RERCRVxcdUREQkZcXHVERTAwXFx1REUxMC1cXHVERTEzXFx1REUxNS1cXHVERTE3XFx1REUxOS1cXHVERTM1XFx1REU2MC1cXHVERTdDXFx1REU4MC1cXHVERTlDXFx1REVDMC1cXHVERUM3XFx1REVDOS1cXHVERUU0XFx1REYwMC1cXHVERjM1XFx1REY0MC1cXHVERjU1XFx1REY2MC1cXHVERjcyXFx1REY4MC1cXHVERjkxXXxcXHVEODAzW1xcdURDMDAtXFx1REM0OFxcdUREMDAtXFx1REQyM1xcdURFODAtXFx1REVBOVxcdURFQjBcXHVERUIxXFx1REYwMC1cXHVERjFDXFx1REYyN1xcdURGMzAtXFx1REY0NVxcdURGQjAtXFx1REZDNFxcdURGRTAtXFx1REZGNl18XFx1RDgwNFtcXHVEQzAzLVxcdURDMzdcXHVEQzgzLVxcdURDQUZcXHVEQ0QwLVxcdURDRThcXHVERDAzLVxcdUREMjZcXHVERDQ0XFx1REQ0N1xcdURENTAtXFx1REQ3MlxcdURENzZcXHVERDgzLVxcdUREQjJcXHVEREMxLVxcdUREQzRcXHVERERBXFx1REREQ1xcdURFMDAtXFx1REUxMVxcdURFMTMtXFx1REUyQlxcdURFODAtXFx1REU4NlxcdURFODhcXHVERThBLVxcdURFOERcXHVERThGLVxcdURFOURcXHVERTlGLVxcdURFQThcXHVERUIwLVxcdURFREVcXHVERjA1LVxcdURGMENcXHVERjBGXFx1REYxMFxcdURGMTMtXFx1REYyOFxcdURGMkEtXFx1REYzMFxcdURGMzJcXHVERjMzXFx1REYzNS1cXHVERjM5XFx1REYzRFxcdURGNTBcXHVERjVELVxcdURGNjFdfFxcdUQ4MDVbXFx1REMwMC1cXHVEQzM0XFx1REM0Ny1cXHVEQzRBXFx1REM1Ri1cXHVEQzYxXFx1REM4MC1cXHVEQ0FGXFx1RENDNFxcdURDQzVcXHVEQ0M3XFx1REQ4MC1cXHVEREFFXFx1REREOC1cXHVERERCXFx1REUwMC1cXHVERTJGXFx1REU0NFxcdURFODAtXFx1REVBQVxcdURFQjhcXHVERjAwLVxcdURGMUFdfFxcdUQ4MDZbXFx1REMwMC1cXHVEQzJCXFx1RENGRi1cXHVERDA2XFx1REQwOVxcdUREMEMtXFx1REQxM1xcdUREMTVcXHVERDE2XFx1REQxOC1cXHVERDJGXFx1REQzRlxcdURENDFcXHVEREEwLVxcdUREQTdcXHVEREFBLVxcdURERDBcXHVEREUxXFx1RERFM1xcdURFMDBcXHVERTBCLVxcdURFMzJcXHVERTNBXFx1REU1MFxcdURFNUMtXFx1REU4OVxcdURFOURcXHVERUMwLVxcdURFRjhdfFxcdUQ4MDdbXFx1REMwMC1cXHVEQzA4XFx1REMwQS1cXHVEQzJFXFx1REM0MFxcdURDNzItXFx1REM4RlxcdUREMDAtXFx1REQwNlxcdUREMDhcXHVERDA5XFx1REQwQi1cXHVERDMwXFx1REQ0NlxcdURENjAtXFx1REQ2NVxcdURENjdcXHVERDY4XFx1REQ2QS1cXHVERDg5XFx1REQ5OFxcdURFRTAtXFx1REVGMlxcdURGQjBdfFxcdUQ4MDhbXFx1REMwMC1cXHVERjk5XXxcXHVEODA5W1xcdURDODAtXFx1REQ0M118W1xcdUQ4MENcXHVEODFDLVxcdUQ4MjBcXHVEODIyXFx1RDg0MC1cXHVEODY4XFx1RDg2QS1cXHVEODZDXFx1RDg2Ri1cXHVEODcyXFx1RDg3NC1cXHVEODc5XFx1RDg4MC1cXHVEODgzXVtcXHVEQzAwLVxcdURGRkZdfFxcdUQ4MERbXFx1REMwMC1cXHVEQzJFXXxcXHVEODExW1xcdURDMDAtXFx1REU0Nl18XFx1RDgxQVtcXHVEQzAwLVxcdURFMzhcXHVERTQwLVxcdURFNUVcXHVERUQwLVxcdURFRURcXHVERjAwLVxcdURGMkZcXHVERjYzLVxcdURGNzdcXHVERjdELVxcdURGOEZdfFxcdUQ4MUJbXFx1REYwMC1cXHVERjRBXFx1REY1MF18XFx1RDgyMVtcXHVEQzAwLVxcdURGRjddfFxcdUQ4MjNbXFx1REMwMC1cXHVEQ0Q1XFx1REQwMC1cXHVERDA4XXxcXHVEODJDW1xcdURDMDAtXFx1REQxRVxcdURENTAtXFx1REQ1MlxcdURENjQtXFx1REQ2N1xcdURENzAtXFx1REVGQl18XFx1RDgyRltcXHVEQzAwLVxcdURDNkFcXHVEQzcwLVxcdURDN0NcXHVEQzgwLVxcdURDODhcXHVEQzkwLVxcdURDOTldfFxcdUQ4MzhbXFx1REQwMC1cXHVERDJDXFx1REQ0RVxcdURFQzAtXFx1REVFQl18XFx1RDgzQVtcXHVEQzAwLVxcdURDQzRdfFxcdUQ4M0JbXFx1REUwMC1cXHVERTAzXFx1REUwNS1cXHVERTFGXFx1REUyMVxcdURFMjJcXHVERTI0XFx1REUyN1xcdURFMjktXFx1REUzMlxcdURFMzQtXFx1REUzN1xcdURFMzlcXHVERTNCXFx1REU0MlxcdURFNDdcXHVERTQ5XFx1REU0QlxcdURFNEQtXFx1REU0RlxcdURFNTFcXHVERTUyXFx1REU1NFxcdURFNTdcXHVERTU5XFx1REU1QlxcdURFNURcXHVERTVGXFx1REU2MVxcdURFNjJcXHVERTY0XFx1REU2Ny1cXHVERTZBXFx1REU2Qy1cXHVERTcyXFx1REU3NC1cXHVERTc3XFx1REU3OS1cXHVERTdDXFx1REU3RVxcdURFODAtXFx1REU4OVxcdURFOEItXFx1REU5QlxcdURFQTEtXFx1REVBM1xcdURFQTUtXFx1REVBOVxcdURFQUItXFx1REVCQl18XFx1RDg2OVtcXHVEQzAwLVxcdURFRERcXHVERjAwLVxcdURGRkZdfFxcdUQ4NkRbXFx1REMwMC1cXHVERjM0XFx1REY0MC1cXHVERkZGXXxcXHVEODZFW1xcdURDMDAtXFx1REMxRFxcdURDMjAtXFx1REZGRl18XFx1RDg3M1tcXHVEQzAwLVxcdURFQTFcXHVERUIwLVxcdURGRkZdfFxcdUQ4N0FbXFx1REMwMC1cXHVERkUwXXxcXHVEODdFW1xcdURDMDAtXFx1REUxRF18XFx1RDg4NFtcXHVEQzAwLVxcdURGNEFdJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdMdCcsXG4gICAgICAgICdhbGlhcyc6ICdUaXRsZWNhc2VfTGV0dGVyJyxcbiAgICAgICAgJ2JtcCc6ICdcXHUwMUM1XFx1MDFDOFxcdTAxQ0JcXHUwMUYyXFx1MUY4OC1cXHUxRjhGXFx1MUY5OC1cXHUxRjlGXFx1MUZBOC1cXHUxRkFGXFx1MUZCQ1xcdTFGQ0NcXHUxRkZDJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdMdScsXG4gICAgICAgICdhbGlhcyc6ICdVcHBlcmNhc2VfTGV0dGVyJyxcbiAgICAgICAgJ2JtcCc6ICdBLVpcXHhDMC1cXHhENlxceEQ4LVxceERFXFx1MDEwMFxcdTAxMDJcXHUwMTA0XFx1MDEwNlxcdTAxMDhcXHUwMTBBXFx1MDEwQ1xcdTAxMEVcXHUwMTEwXFx1MDExMlxcdTAxMTRcXHUwMTE2XFx1MDExOFxcdTAxMUFcXHUwMTFDXFx1MDExRVxcdTAxMjBcXHUwMTIyXFx1MDEyNFxcdTAxMjZcXHUwMTI4XFx1MDEyQVxcdTAxMkNcXHUwMTJFXFx1MDEzMFxcdTAxMzJcXHUwMTM0XFx1MDEzNlxcdTAxMzlcXHUwMTNCXFx1MDEzRFxcdTAxM0ZcXHUwMTQxXFx1MDE0M1xcdTAxNDVcXHUwMTQ3XFx1MDE0QVxcdTAxNENcXHUwMTRFXFx1MDE1MFxcdTAxNTJcXHUwMTU0XFx1MDE1NlxcdTAxNThcXHUwMTVBXFx1MDE1Q1xcdTAxNUVcXHUwMTYwXFx1MDE2MlxcdTAxNjRcXHUwMTY2XFx1MDE2OFxcdTAxNkFcXHUwMTZDXFx1MDE2RVxcdTAxNzBcXHUwMTcyXFx1MDE3NFxcdTAxNzZcXHUwMTc4XFx1MDE3OVxcdTAxN0JcXHUwMTdEXFx1MDE4MVxcdTAxODJcXHUwMTg0XFx1MDE4NlxcdTAxODdcXHUwMTg5LVxcdTAxOEJcXHUwMThFLVxcdTAxOTFcXHUwMTkzXFx1MDE5NFxcdTAxOTYtXFx1MDE5OFxcdTAxOUNcXHUwMTlEXFx1MDE5RlxcdTAxQTBcXHUwMUEyXFx1MDFBNFxcdTAxQTZcXHUwMUE3XFx1MDFBOVxcdTAxQUNcXHUwMUFFXFx1MDFBRlxcdTAxQjEtXFx1MDFCM1xcdTAxQjVcXHUwMUI3XFx1MDFCOFxcdTAxQkNcXHUwMUM0XFx1MDFDN1xcdTAxQ0FcXHUwMUNEXFx1MDFDRlxcdTAxRDFcXHUwMUQzXFx1MDFENVxcdTAxRDdcXHUwMUQ5XFx1MDFEQlxcdTAxREVcXHUwMUUwXFx1MDFFMlxcdTAxRTRcXHUwMUU2XFx1MDFFOFxcdTAxRUFcXHUwMUVDXFx1MDFFRVxcdTAxRjFcXHUwMUY0XFx1MDFGNi1cXHUwMUY4XFx1MDFGQVxcdTAxRkNcXHUwMUZFXFx1MDIwMFxcdTAyMDJcXHUwMjA0XFx1MDIwNlxcdTAyMDhcXHUwMjBBXFx1MDIwQ1xcdTAyMEVcXHUwMjEwXFx1MDIxMlxcdTAyMTRcXHUwMjE2XFx1MDIxOFxcdTAyMUFcXHUwMjFDXFx1MDIxRVxcdTAyMjBcXHUwMjIyXFx1MDIyNFxcdTAyMjZcXHUwMjI4XFx1MDIyQVxcdTAyMkNcXHUwMjJFXFx1MDIzMFxcdTAyMzJcXHUwMjNBXFx1MDIzQlxcdTAyM0RcXHUwMjNFXFx1MDI0MVxcdTAyNDMtXFx1MDI0NlxcdTAyNDhcXHUwMjRBXFx1MDI0Q1xcdTAyNEVcXHUwMzcwXFx1MDM3MlxcdTAzNzZcXHUwMzdGXFx1MDM4NlxcdTAzODgtXFx1MDM4QVxcdTAzOENcXHUwMzhFXFx1MDM4RlxcdTAzOTEtXFx1MDNBMVxcdTAzQTMtXFx1MDNBQlxcdTAzQ0ZcXHUwM0QyLVxcdTAzRDRcXHUwM0Q4XFx1MDNEQVxcdTAzRENcXHUwM0RFXFx1MDNFMFxcdTAzRTJcXHUwM0U0XFx1MDNFNlxcdTAzRThcXHUwM0VBXFx1MDNFQ1xcdTAzRUVcXHUwM0Y0XFx1MDNGN1xcdTAzRjlcXHUwM0ZBXFx1MDNGRC1cXHUwNDJGXFx1MDQ2MFxcdTA0NjJcXHUwNDY0XFx1MDQ2NlxcdTA0NjhcXHUwNDZBXFx1MDQ2Q1xcdTA0NkVcXHUwNDcwXFx1MDQ3MlxcdTA0NzRcXHUwNDc2XFx1MDQ3OFxcdTA0N0FcXHUwNDdDXFx1MDQ3RVxcdTA0ODBcXHUwNDhBXFx1MDQ4Q1xcdTA0OEVcXHUwNDkwXFx1MDQ5MlxcdTA0OTRcXHUwNDk2XFx1MDQ5OFxcdTA0OUFcXHUwNDlDXFx1MDQ5RVxcdTA0QTBcXHUwNEEyXFx1MDRBNFxcdTA0QTZcXHUwNEE4XFx1MDRBQVxcdTA0QUNcXHUwNEFFXFx1MDRCMFxcdTA0QjJcXHUwNEI0XFx1MDRCNlxcdTA0QjhcXHUwNEJBXFx1MDRCQ1xcdTA0QkVcXHUwNEMwXFx1MDRDMVxcdTA0QzNcXHUwNEM1XFx1MDRDN1xcdTA0QzlcXHUwNENCXFx1MDRDRFxcdTA0RDBcXHUwNEQyXFx1MDRENFxcdTA0RDZcXHUwNEQ4XFx1MDREQVxcdTA0RENcXHUwNERFXFx1MDRFMFxcdTA0RTJcXHUwNEU0XFx1MDRFNlxcdTA0RThcXHUwNEVBXFx1MDRFQ1xcdTA0RUVcXHUwNEYwXFx1MDRGMlxcdTA0RjRcXHUwNEY2XFx1MDRGOFxcdTA0RkFcXHUwNEZDXFx1MDRGRVxcdTA1MDBcXHUwNTAyXFx1MDUwNFxcdTA1MDZcXHUwNTA4XFx1MDUwQVxcdTA1MENcXHUwNTBFXFx1MDUxMFxcdTA1MTJcXHUwNTE0XFx1MDUxNlxcdTA1MThcXHUwNTFBXFx1MDUxQ1xcdTA1MUVcXHUwNTIwXFx1MDUyMlxcdTA1MjRcXHUwNTI2XFx1MDUyOFxcdTA1MkFcXHUwNTJDXFx1MDUyRVxcdTA1MzEtXFx1MDU1NlxcdTEwQTAtXFx1MTBDNVxcdTEwQzdcXHUxMENEXFx1MTNBMC1cXHUxM0Y1XFx1MUM5MC1cXHUxQ0JBXFx1MUNCRC1cXHUxQ0JGXFx1MUUwMFxcdTFFMDJcXHUxRTA0XFx1MUUwNlxcdTFFMDhcXHUxRTBBXFx1MUUwQ1xcdTFFMEVcXHUxRTEwXFx1MUUxMlxcdTFFMTRcXHUxRTE2XFx1MUUxOFxcdTFFMUFcXHUxRTFDXFx1MUUxRVxcdTFFMjBcXHUxRTIyXFx1MUUyNFxcdTFFMjZcXHUxRTI4XFx1MUUyQVxcdTFFMkNcXHUxRTJFXFx1MUUzMFxcdTFFMzJcXHUxRTM0XFx1MUUzNlxcdTFFMzhcXHUxRTNBXFx1MUUzQ1xcdTFFM0VcXHUxRTQwXFx1MUU0MlxcdTFFNDRcXHUxRTQ2XFx1MUU0OFxcdTFFNEFcXHUxRTRDXFx1MUU0RVxcdTFFNTBcXHUxRTUyXFx1MUU1NFxcdTFFNTZcXHUxRTU4XFx1MUU1QVxcdTFFNUNcXHUxRTVFXFx1MUU2MFxcdTFFNjJcXHUxRTY0XFx1MUU2NlxcdTFFNjhcXHUxRTZBXFx1MUU2Q1xcdTFFNkVcXHUxRTcwXFx1MUU3MlxcdTFFNzRcXHUxRTc2XFx1MUU3OFxcdTFFN0FcXHUxRTdDXFx1MUU3RVxcdTFFODBcXHUxRTgyXFx1MUU4NFxcdTFFODZcXHUxRTg4XFx1MUU4QVxcdTFFOENcXHUxRThFXFx1MUU5MFxcdTFFOTJcXHUxRTk0XFx1MUU5RVxcdTFFQTBcXHUxRUEyXFx1MUVBNFxcdTFFQTZcXHUxRUE4XFx1MUVBQVxcdTFFQUNcXHUxRUFFXFx1MUVCMFxcdTFFQjJcXHUxRUI0XFx1MUVCNlxcdTFFQjhcXHUxRUJBXFx1MUVCQ1xcdTFFQkVcXHUxRUMwXFx1MUVDMlxcdTFFQzRcXHUxRUM2XFx1MUVDOFxcdTFFQ0FcXHUxRUNDXFx1MUVDRVxcdTFFRDBcXHUxRUQyXFx1MUVENFxcdTFFRDZcXHUxRUQ4XFx1MUVEQVxcdTFFRENcXHUxRURFXFx1MUVFMFxcdTFFRTJcXHUxRUU0XFx1MUVFNlxcdTFFRThcXHUxRUVBXFx1MUVFQ1xcdTFFRUVcXHUxRUYwXFx1MUVGMlxcdTFFRjRcXHUxRUY2XFx1MUVGOFxcdTFFRkFcXHUxRUZDXFx1MUVGRVxcdTFGMDgtXFx1MUYwRlxcdTFGMTgtXFx1MUYxRFxcdTFGMjgtXFx1MUYyRlxcdTFGMzgtXFx1MUYzRlxcdTFGNDgtXFx1MUY0RFxcdTFGNTlcXHUxRjVCXFx1MUY1RFxcdTFGNUZcXHUxRjY4LVxcdTFGNkZcXHUxRkI4LVxcdTFGQkJcXHUxRkM4LVxcdTFGQ0JcXHUxRkQ4LVxcdTFGREJcXHUxRkU4LVxcdTFGRUNcXHUxRkY4LVxcdTFGRkJcXHUyMTAyXFx1MjEwN1xcdTIxMEItXFx1MjEwRFxcdTIxMTAtXFx1MjExMlxcdTIxMTVcXHUyMTE5LVxcdTIxMURcXHUyMTI0XFx1MjEyNlxcdTIxMjhcXHUyMTJBLVxcdTIxMkRcXHUyMTMwLVxcdTIxMzNcXHUyMTNFXFx1MjEzRlxcdTIxNDVcXHUyMTgzXFx1MkMwMC1cXHUyQzJFXFx1MkM2MFxcdTJDNjItXFx1MkM2NFxcdTJDNjdcXHUyQzY5XFx1MkM2QlxcdTJDNkQtXFx1MkM3MFxcdTJDNzJcXHUyQzc1XFx1MkM3RS1cXHUyQzgwXFx1MkM4MlxcdTJDODRcXHUyQzg2XFx1MkM4OFxcdTJDOEFcXHUyQzhDXFx1MkM4RVxcdTJDOTBcXHUyQzkyXFx1MkM5NFxcdTJDOTZcXHUyQzk4XFx1MkM5QVxcdTJDOUNcXHUyQzlFXFx1MkNBMFxcdTJDQTJcXHUyQ0E0XFx1MkNBNlxcdTJDQThcXHUyQ0FBXFx1MkNBQ1xcdTJDQUVcXHUyQ0IwXFx1MkNCMlxcdTJDQjRcXHUyQ0I2XFx1MkNCOFxcdTJDQkFcXHUyQ0JDXFx1MkNCRVxcdTJDQzBcXHUyQ0MyXFx1MkNDNFxcdTJDQzZcXHUyQ0M4XFx1MkNDQVxcdTJDQ0NcXHUyQ0NFXFx1MkNEMFxcdTJDRDJcXHUyQ0Q0XFx1MkNENlxcdTJDRDhcXHUyQ0RBXFx1MkNEQ1xcdTJDREVcXHUyQ0UwXFx1MkNFMlxcdTJDRUJcXHUyQ0VEXFx1MkNGMlxcdUE2NDBcXHVBNjQyXFx1QTY0NFxcdUE2NDZcXHVBNjQ4XFx1QTY0QVxcdUE2NENcXHVBNjRFXFx1QTY1MFxcdUE2NTJcXHVBNjU0XFx1QTY1NlxcdUE2NThcXHVBNjVBXFx1QTY1Q1xcdUE2NUVcXHVBNjYwXFx1QTY2MlxcdUE2NjRcXHVBNjY2XFx1QTY2OFxcdUE2NkFcXHVBNjZDXFx1QTY4MFxcdUE2ODJcXHVBNjg0XFx1QTY4NlxcdUE2ODhcXHVBNjhBXFx1QTY4Q1xcdUE2OEVcXHVBNjkwXFx1QTY5MlxcdUE2OTRcXHVBNjk2XFx1QTY5OFxcdUE2OUFcXHVBNzIyXFx1QTcyNFxcdUE3MjZcXHVBNzI4XFx1QTcyQVxcdUE3MkNcXHVBNzJFXFx1QTczMlxcdUE3MzRcXHVBNzM2XFx1QTczOFxcdUE3M0FcXHVBNzNDXFx1QTczRVxcdUE3NDBcXHVBNzQyXFx1QTc0NFxcdUE3NDZcXHVBNzQ4XFx1QTc0QVxcdUE3NENcXHVBNzRFXFx1QTc1MFxcdUE3NTJcXHVBNzU0XFx1QTc1NlxcdUE3NThcXHVBNzVBXFx1QTc1Q1xcdUE3NUVcXHVBNzYwXFx1QTc2MlxcdUE3NjRcXHVBNzY2XFx1QTc2OFxcdUE3NkFcXHVBNzZDXFx1QTc2RVxcdUE3NzlcXHVBNzdCXFx1QTc3RFxcdUE3N0VcXHVBNzgwXFx1QTc4MlxcdUE3ODRcXHVBNzg2XFx1QTc4QlxcdUE3OERcXHVBNzkwXFx1QTc5MlxcdUE3OTZcXHVBNzk4XFx1QTc5QVxcdUE3OUNcXHVBNzlFXFx1QTdBMFxcdUE3QTJcXHVBN0E0XFx1QTdBNlxcdUE3QThcXHVBN0FBLVxcdUE3QUVcXHVBN0IwLVxcdUE3QjRcXHVBN0I2XFx1QTdCOFxcdUE3QkFcXHVBN0JDXFx1QTdCRVxcdUE3QzJcXHVBN0M0LVxcdUE3QzdcXHVBN0M5XFx1QTdGNVxcdUZGMjEtXFx1RkYzQScsXG4gICAgICAgICdhc3RyYWwnOiAnXFx1RDgwMVtcXHVEQzAwLVxcdURDMjdcXHVEQ0IwLVxcdURDRDNdfFxcdUQ4MDNbXFx1REM4MC1cXHVEQ0IyXXxcXHVEODA2W1xcdURDQTAtXFx1RENCRl18XFx1RDgxQltcXHVERTQwLVxcdURFNUZdfFxcdUQ4MzVbXFx1REMwMC1cXHVEQzE5XFx1REMzNC1cXHVEQzREXFx1REM2OC1cXHVEQzgxXFx1REM5Q1xcdURDOUVcXHVEQzlGXFx1RENBMlxcdURDQTVcXHVEQ0E2XFx1RENBOS1cXHVEQ0FDXFx1RENBRS1cXHVEQ0I1XFx1RENEMC1cXHVEQ0U5XFx1REQwNFxcdUREMDVcXHVERDA3LVxcdUREMEFcXHVERDBELVxcdUREMTRcXHVERDE2LVxcdUREMUNcXHVERDM4XFx1REQzOVxcdUREM0ItXFx1REQzRVxcdURENDAtXFx1REQ0NFxcdURENDZcXHVERDRBLVxcdURENTBcXHVERDZDLVxcdUREODVcXHVEREEwLVxcdUREQjlcXHVEREQ0LVxcdURERURcXHVERTA4LVxcdURFMjFcXHVERTNDLVxcdURFNTVcXHVERTcwLVxcdURFODlcXHVERUE4LVxcdURFQzBcXHVERUUyLVxcdURFRkFcXHVERjFDLVxcdURGMzRcXHVERjU2LVxcdURGNkVcXHVERjkwLVxcdURGQThcXHVERkNBXXxcXHVEODNBW1xcdUREMDAtXFx1REQyMV0nXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ00nLFxuICAgICAgICAnYWxpYXMnOiAnTWFyaycsXG4gICAgICAgICdibXAnOiAnXFx1MDMwMC1cXHUwMzZGXFx1MDQ4My1cXHUwNDg5XFx1MDU5MS1cXHUwNUJEXFx1MDVCRlxcdTA1QzFcXHUwNUMyXFx1MDVDNFxcdTA1QzVcXHUwNUM3XFx1MDYxMC1cXHUwNjFBXFx1MDY0Qi1cXHUwNjVGXFx1MDY3MFxcdTA2RDYtXFx1MDZEQ1xcdTA2REYtXFx1MDZFNFxcdTA2RTdcXHUwNkU4XFx1MDZFQS1cXHUwNkVEXFx1MDcxMVxcdTA3MzAtXFx1MDc0QVxcdTA3QTYtXFx1MDdCMFxcdTA3RUItXFx1MDdGM1xcdTA3RkRcXHUwODE2LVxcdTA4MTlcXHUwODFCLVxcdTA4MjNcXHUwODI1LVxcdTA4MjdcXHUwODI5LVxcdTA4MkRcXHUwODU5LVxcdTA4NUJcXHUwOEQzLVxcdTA4RTFcXHUwOEUzLVxcdTA5MDNcXHUwOTNBLVxcdTA5M0NcXHUwOTNFLVxcdTA5NEZcXHUwOTUxLVxcdTA5NTdcXHUwOTYyXFx1MDk2M1xcdTA5ODEtXFx1MDk4M1xcdTA5QkNcXHUwOUJFLVxcdTA5QzRcXHUwOUM3XFx1MDlDOFxcdTA5Q0ItXFx1MDlDRFxcdTA5RDdcXHUwOUUyXFx1MDlFM1xcdTA5RkVcXHUwQTAxLVxcdTBBMDNcXHUwQTNDXFx1MEEzRS1cXHUwQTQyXFx1MEE0N1xcdTBBNDhcXHUwQTRCLVxcdTBBNERcXHUwQTUxXFx1MEE3MFxcdTBBNzFcXHUwQTc1XFx1MEE4MS1cXHUwQTgzXFx1MEFCQ1xcdTBBQkUtXFx1MEFDNVxcdTBBQzctXFx1MEFDOVxcdTBBQ0ItXFx1MEFDRFxcdTBBRTJcXHUwQUUzXFx1MEFGQS1cXHUwQUZGXFx1MEIwMS1cXHUwQjAzXFx1MEIzQ1xcdTBCM0UtXFx1MEI0NFxcdTBCNDdcXHUwQjQ4XFx1MEI0Qi1cXHUwQjREXFx1MEI1NS1cXHUwQjU3XFx1MEI2MlxcdTBCNjNcXHUwQjgyXFx1MEJCRS1cXHUwQkMyXFx1MEJDNi1cXHUwQkM4XFx1MEJDQS1cXHUwQkNEXFx1MEJEN1xcdTBDMDAtXFx1MEMwNFxcdTBDM0UtXFx1MEM0NFxcdTBDNDYtXFx1MEM0OFxcdTBDNEEtXFx1MEM0RFxcdTBDNTVcXHUwQzU2XFx1MEM2MlxcdTBDNjNcXHUwQzgxLVxcdTBDODNcXHUwQ0JDXFx1MENCRS1cXHUwQ0M0XFx1MENDNi1cXHUwQ0M4XFx1MENDQS1cXHUwQ0NEXFx1MENENVxcdTBDRDZcXHUwQ0UyXFx1MENFM1xcdTBEMDAtXFx1MEQwM1xcdTBEM0JcXHUwRDNDXFx1MEQzRS1cXHUwRDQ0XFx1MEQ0Ni1cXHUwRDQ4XFx1MEQ0QS1cXHUwRDREXFx1MEQ1N1xcdTBENjJcXHUwRDYzXFx1MEQ4MS1cXHUwRDgzXFx1MERDQVxcdTBEQ0YtXFx1MERENFxcdTBERDZcXHUwREQ4LVxcdTBEREZcXHUwREYyXFx1MERGM1xcdTBFMzFcXHUwRTM0LVxcdTBFM0FcXHUwRTQ3LVxcdTBFNEVcXHUwRUIxXFx1MEVCNC1cXHUwRUJDXFx1MEVDOC1cXHUwRUNEXFx1MEYxOFxcdTBGMTlcXHUwRjM1XFx1MEYzN1xcdTBGMzlcXHUwRjNFXFx1MEYzRlxcdTBGNzEtXFx1MEY4NFxcdTBGODZcXHUwRjg3XFx1MEY4RC1cXHUwRjk3XFx1MEY5OS1cXHUwRkJDXFx1MEZDNlxcdTEwMkItXFx1MTAzRVxcdTEwNTYtXFx1MTA1OVxcdTEwNUUtXFx1MTA2MFxcdTEwNjItXFx1MTA2NFxcdTEwNjctXFx1MTA2RFxcdTEwNzEtXFx1MTA3NFxcdTEwODItXFx1MTA4RFxcdTEwOEZcXHUxMDlBLVxcdTEwOURcXHUxMzVELVxcdTEzNUZcXHUxNzEyLVxcdTE3MTRcXHUxNzMyLVxcdTE3MzRcXHUxNzUyXFx1MTc1M1xcdTE3NzJcXHUxNzczXFx1MTdCNC1cXHUxN0QzXFx1MTdERFxcdTE4MEItXFx1MTgwRFxcdTE4ODVcXHUxODg2XFx1MThBOVxcdTE5MjAtXFx1MTkyQlxcdTE5MzAtXFx1MTkzQlxcdTFBMTctXFx1MUExQlxcdTFBNTUtXFx1MUE1RVxcdTFBNjAtXFx1MUE3Q1xcdTFBN0ZcXHUxQUIwLVxcdTFBQzBcXHUxQjAwLVxcdTFCMDRcXHUxQjM0LVxcdTFCNDRcXHUxQjZCLVxcdTFCNzNcXHUxQjgwLVxcdTFCODJcXHUxQkExLVxcdTFCQURcXHUxQkU2LVxcdTFCRjNcXHUxQzI0LVxcdTFDMzdcXHUxQ0QwLVxcdTFDRDJcXHUxQ0Q0LVxcdTFDRThcXHUxQ0VEXFx1MUNGNFxcdTFDRjctXFx1MUNGOVxcdTFEQzAtXFx1MURGOVxcdTFERkItXFx1MURGRlxcdTIwRDAtXFx1MjBGMFxcdTJDRUYtXFx1MkNGMVxcdTJEN0ZcXHUyREUwLVxcdTJERkZcXHUzMDJBLVxcdTMwMkZcXHUzMDk5XFx1MzA5QVxcdUE2NkYtXFx1QTY3MlxcdUE2NzQtXFx1QTY3RFxcdUE2OUVcXHVBNjlGXFx1QTZGMFxcdUE2RjFcXHVBODAyXFx1QTgwNlxcdUE4MEJcXHVBODIzLVxcdUE4MjdcXHVBODJDXFx1QTg4MFxcdUE4ODFcXHVBOEI0LVxcdUE4QzVcXHVBOEUwLVxcdUE4RjFcXHVBOEZGXFx1QTkyNi1cXHVBOTJEXFx1QTk0Ny1cXHVBOTUzXFx1QTk4MC1cXHVBOTgzXFx1QTlCMy1cXHVBOUMwXFx1QTlFNVxcdUFBMjktXFx1QUEzNlxcdUFBNDNcXHVBQTRDXFx1QUE0RFxcdUFBN0ItXFx1QUE3RFxcdUFBQjBcXHVBQUIyLVxcdUFBQjRcXHVBQUI3XFx1QUFCOFxcdUFBQkVcXHVBQUJGXFx1QUFDMVxcdUFBRUItXFx1QUFFRlxcdUFBRjVcXHVBQUY2XFx1QUJFMy1cXHVBQkVBXFx1QUJFQ1xcdUFCRURcXHVGQjFFXFx1RkUwMC1cXHVGRTBGXFx1RkUyMC1cXHVGRTJGJyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODAwW1xcdURERkRcXHVERUUwXFx1REY3Ni1cXHVERjdBXXxcXHVEODAyW1xcdURFMDEtXFx1REUwM1xcdURFMDVcXHVERTA2XFx1REUwQy1cXHVERTBGXFx1REUzOC1cXHVERTNBXFx1REUzRlxcdURFRTVcXHVERUU2XXxcXHVEODAzW1xcdUREMjQtXFx1REQyN1xcdURFQUJcXHVERUFDXFx1REY0Ni1cXHVERjUwXXxcXHVEODA0W1xcdURDMDAtXFx1REMwMlxcdURDMzgtXFx1REM0NlxcdURDN0YtXFx1REM4MlxcdURDQjAtXFx1RENCQVxcdUREMDAtXFx1REQwMlxcdUREMjctXFx1REQzNFxcdURENDVcXHVERDQ2XFx1REQ3M1xcdUREODAtXFx1REQ4MlxcdUREQjMtXFx1RERDMFxcdUREQzktXFx1RERDQ1xcdUREQ0VcXHVERENGXFx1REUyQy1cXHVERTM3XFx1REUzRVxcdURFREYtXFx1REVFQVxcdURGMDAtXFx1REYwM1xcdURGM0JcXHVERjNDXFx1REYzRS1cXHVERjQ0XFx1REY0N1xcdURGNDhcXHVERjRCLVxcdURGNERcXHVERjU3XFx1REY2MlxcdURGNjNcXHVERjY2LVxcdURGNkNcXHVERjcwLVxcdURGNzRdfFxcdUQ4MDVbXFx1REMzNS1cXHVEQzQ2XFx1REM1RVxcdURDQjAtXFx1RENDM1xcdUREQUYtXFx1RERCNVxcdUREQjgtXFx1RERDMFxcdURERENcXHVEREREXFx1REUzMC1cXHVERTQwXFx1REVBQi1cXHVERUI3XFx1REYxRC1cXHVERjJCXXxcXHVEODA2W1xcdURDMkMtXFx1REMzQVxcdUREMzAtXFx1REQzNVxcdUREMzdcXHVERDM4XFx1REQzQi1cXHVERDNFXFx1REQ0MFxcdURENDJcXHVERDQzXFx1REREMS1cXHVEREQ3XFx1REREQS1cXHVEREUwXFx1RERFNFxcdURFMDEtXFx1REUwQVxcdURFMzMtXFx1REUzOVxcdURFM0ItXFx1REUzRVxcdURFNDdcXHVERTUxLVxcdURFNUJcXHVERThBLVxcdURFOTldfFxcdUQ4MDdbXFx1REMyRi1cXHVEQzM2XFx1REMzOC1cXHVEQzNGXFx1REM5Mi1cXHVEQ0E3XFx1RENBOS1cXHVEQ0I2XFx1REQzMS1cXHVERDM2XFx1REQzQVxcdUREM0NcXHVERDNEXFx1REQzRi1cXHVERDQ1XFx1REQ0N1xcdUREOEEtXFx1REQ4RVxcdUREOTBcXHVERDkxXFx1REQ5My1cXHVERDk3XFx1REVGMy1cXHVERUY2XXxcXHVEODFBW1xcdURFRjAtXFx1REVGNFxcdURGMzAtXFx1REYzNl18XFx1RDgxQltcXHVERjRGXFx1REY1MS1cXHVERjg3XFx1REY4Ri1cXHVERjkyXFx1REZFNFxcdURGRjBcXHVERkYxXXxcXHVEODJGW1xcdURDOURcXHVEQzlFXXxcXHVEODM0W1xcdURENjUtXFx1REQ2OVxcdURENkQtXFx1REQ3MlxcdUREN0ItXFx1REQ4MlxcdUREODUtXFx1REQ4QlxcdUREQUEtXFx1RERBRFxcdURFNDItXFx1REU0NF18XFx1RDgzNltcXHVERTAwLVxcdURFMzZcXHVERTNCLVxcdURFNkNcXHVERTc1XFx1REU4NFxcdURFOUItXFx1REU5RlxcdURFQTEtXFx1REVBRl18XFx1RDgzOFtcXHVEQzAwLVxcdURDMDZcXHVEQzA4LVxcdURDMThcXHVEQzFCLVxcdURDMjFcXHVEQzIzXFx1REMyNFxcdURDMjYtXFx1REMyQVxcdUREMzAtXFx1REQzNlxcdURFRUMtXFx1REVFRl18XFx1RDgzQVtcXHVEQ0QwLVxcdURDRDZcXHVERDQ0LVxcdURENEFdfFxcdURCNDBbXFx1REQwMC1cXHVEREVGXSdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnTWMnLFxuICAgICAgICAnYWxpYXMnOiAnU3BhY2luZ19NYXJrJyxcbiAgICAgICAgJ2JtcCc6ICdcXHUwOTAzXFx1MDkzQlxcdTA5M0UtXFx1MDk0MFxcdTA5NDktXFx1MDk0Q1xcdTA5NEVcXHUwOTRGXFx1MDk4MlxcdTA5ODNcXHUwOUJFLVxcdTA5QzBcXHUwOUM3XFx1MDlDOFxcdTA5Q0JcXHUwOUNDXFx1MDlEN1xcdTBBMDNcXHUwQTNFLVxcdTBBNDBcXHUwQTgzXFx1MEFCRS1cXHUwQUMwXFx1MEFDOVxcdTBBQ0JcXHUwQUNDXFx1MEIwMlxcdTBCMDNcXHUwQjNFXFx1MEI0MFxcdTBCNDdcXHUwQjQ4XFx1MEI0QlxcdTBCNENcXHUwQjU3XFx1MEJCRVxcdTBCQkZcXHUwQkMxXFx1MEJDMlxcdTBCQzYtXFx1MEJDOFxcdTBCQ0EtXFx1MEJDQ1xcdTBCRDdcXHUwQzAxLVxcdTBDMDNcXHUwQzQxLVxcdTBDNDRcXHUwQzgyXFx1MEM4M1xcdTBDQkVcXHUwQ0MwLVxcdTBDQzRcXHUwQ0M3XFx1MENDOFxcdTBDQ0FcXHUwQ0NCXFx1MENENVxcdTBDRDZcXHUwRDAyXFx1MEQwM1xcdTBEM0UtXFx1MEQ0MFxcdTBENDYtXFx1MEQ0OFxcdTBENEEtXFx1MEQ0Q1xcdTBENTdcXHUwRDgyXFx1MEQ4M1xcdTBEQ0YtXFx1MEREMVxcdTBERDgtXFx1MERERlxcdTBERjJcXHUwREYzXFx1MEYzRVxcdTBGM0ZcXHUwRjdGXFx1MTAyQlxcdTEwMkNcXHUxMDMxXFx1MTAzOFxcdTEwM0JcXHUxMDNDXFx1MTA1NlxcdTEwNTdcXHUxMDYyLVxcdTEwNjRcXHUxMDY3LVxcdTEwNkRcXHUxMDgzXFx1MTA4NFxcdTEwODctXFx1MTA4Q1xcdTEwOEZcXHUxMDlBLVxcdTEwOUNcXHUxN0I2XFx1MTdCRS1cXHUxN0M1XFx1MTdDN1xcdTE3QzhcXHUxOTIzLVxcdTE5MjZcXHUxOTI5LVxcdTE5MkJcXHUxOTMwXFx1MTkzMVxcdTE5MzMtXFx1MTkzOFxcdTFBMTlcXHUxQTFBXFx1MUE1NVxcdTFBNTdcXHUxQTYxXFx1MUE2M1xcdTFBNjRcXHUxQTZELVxcdTFBNzJcXHUxQjA0XFx1MUIzNVxcdTFCM0JcXHUxQjNELVxcdTFCNDFcXHUxQjQzXFx1MUI0NFxcdTFCODJcXHUxQkExXFx1MUJBNlxcdTFCQTdcXHUxQkFBXFx1MUJFN1xcdTFCRUEtXFx1MUJFQ1xcdTFCRUVcXHUxQkYyXFx1MUJGM1xcdTFDMjQtXFx1MUMyQlxcdTFDMzRcXHUxQzM1XFx1MUNFMVxcdTFDRjdcXHUzMDJFXFx1MzAyRlxcdUE4MjNcXHVBODI0XFx1QTgyN1xcdUE4ODBcXHVBODgxXFx1QThCNC1cXHVBOEMzXFx1QTk1MlxcdUE5NTNcXHVBOTgzXFx1QTlCNFxcdUE5QjVcXHVBOUJBXFx1QTlCQlxcdUE5QkUtXFx1QTlDMFxcdUFBMkZcXHVBQTMwXFx1QUEzM1xcdUFBMzRcXHVBQTREXFx1QUE3QlxcdUFBN0RcXHVBQUVCXFx1QUFFRVxcdUFBRUZcXHVBQUY1XFx1QUJFM1xcdUFCRTRcXHVBQkU2XFx1QUJFN1xcdUFCRTlcXHVBQkVBXFx1QUJFQycsXG4gICAgICAgICdhc3RyYWwnOiAnXFx1RDgwNFtcXHVEQzAwXFx1REMwMlxcdURDODJcXHVEQ0IwLVxcdURDQjJcXHVEQ0I3XFx1RENCOFxcdUREMkNcXHVERDQ1XFx1REQ0NlxcdUREODJcXHVEREIzLVxcdUREQjVcXHVEREJGXFx1RERDMFxcdUREQ0VcXHVERTJDLVxcdURFMkVcXHVERTMyXFx1REUzM1xcdURFMzVcXHVERUUwLVxcdURFRTJcXHVERjAyXFx1REYwM1xcdURGM0VcXHVERjNGXFx1REY0MS1cXHVERjQ0XFx1REY0N1xcdURGNDhcXHVERjRCLVxcdURGNERcXHVERjU3XFx1REY2MlxcdURGNjNdfFxcdUQ4MDVbXFx1REMzNS1cXHVEQzM3XFx1REM0MFxcdURDNDFcXHVEQzQ1XFx1RENCMC1cXHVEQ0IyXFx1RENCOVxcdURDQkItXFx1RENCRVxcdURDQzFcXHVEREFGLVxcdUREQjFcXHVEREI4LVxcdUREQkJcXHVEREJFXFx1REUzMC1cXHVERTMyXFx1REUzQlxcdURFM0NcXHVERTNFXFx1REVBQ1xcdURFQUVcXHVERUFGXFx1REVCNlxcdURGMjBcXHVERjIxXFx1REYyNl18XFx1RDgwNltcXHVEQzJDLVxcdURDMkVcXHVEQzM4XFx1REQzMC1cXHVERDM1XFx1REQzN1xcdUREMzhcXHVERDNEXFx1REQ0MFxcdURENDJcXHVEREQxLVxcdURERDNcXHVERERDLVxcdUREREZcXHVEREU0XFx1REUzOVxcdURFNTdcXHVERTU4XFx1REU5N118XFx1RDgwN1tcXHVEQzJGXFx1REMzRVxcdURDQTlcXHVEQ0IxXFx1RENCNFxcdUREOEEtXFx1REQ4RVxcdUREOTNcXHVERDk0XFx1REQ5NlxcdURFRjVcXHVERUY2XXxcXHVEODFCW1xcdURGNTEtXFx1REY4N1xcdURGRjBcXHVERkYxXXxcXHVEODM0W1xcdURENjVcXHVERDY2XFx1REQ2RC1cXHVERDcyXSdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnTWUnLFxuICAgICAgICAnYWxpYXMnOiAnRW5jbG9zaW5nX01hcmsnLFxuICAgICAgICAnYm1wJzogJ1xcdTA0ODhcXHUwNDg5XFx1MUFCRVxcdTIwREQtXFx1MjBFMFxcdTIwRTItXFx1MjBFNFxcdUE2NzAtXFx1QTY3MidcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnTW4nLFxuICAgICAgICAnYWxpYXMnOiAnTm9uc3BhY2luZ19NYXJrJyxcbiAgICAgICAgJ2JtcCc6ICdcXHUwMzAwLVxcdTAzNkZcXHUwNDgzLVxcdTA0ODdcXHUwNTkxLVxcdTA1QkRcXHUwNUJGXFx1MDVDMVxcdTA1QzJcXHUwNUM0XFx1MDVDNVxcdTA1QzdcXHUwNjEwLVxcdTA2MUFcXHUwNjRCLVxcdTA2NUZcXHUwNjcwXFx1MDZENi1cXHUwNkRDXFx1MDZERi1cXHUwNkU0XFx1MDZFN1xcdTA2RThcXHUwNkVBLVxcdTA2RURcXHUwNzExXFx1MDczMC1cXHUwNzRBXFx1MDdBNi1cXHUwN0IwXFx1MDdFQi1cXHUwN0YzXFx1MDdGRFxcdTA4MTYtXFx1MDgxOVxcdTA4MUItXFx1MDgyM1xcdTA4MjUtXFx1MDgyN1xcdTA4MjktXFx1MDgyRFxcdTA4NTktXFx1MDg1QlxcdTA4RDMtXFx1MDhFMVxcdTA4RTMtXFx1MDkwMlxcdTA5M0FcXHUwOTNDXFx1MDk0MS1cXHUwOTQ4XFx1MDk0RFxcdTA5NTEtXFx1MDk1N1xcdTA5NjJcXHUwOTYzXFx1MDk4MVxcdTA5QkNcXHUwOUMxLVxcdTA5QzRcXHUwOUNEXFx1MDlFMlxcdTA5RTNcXHUwOUZFXFx1MEEwMVxcdTBBMDJcXHUwQTNDXFx1MEE0MVxcdTBBNDJcXHUwQTQ3XFx1MEE0OFxcdTBBNEItXFx1MEE0RFxcdTBBNTFcXHUwQTcwXFx1MEE3MVxcdTBBNzVcXHUwQTgxXFx1MEE4MlxcdTBBQkNcXHUwQUMxLVxcdTBBQzVcXHUwQUM3XFx1MEFDOFxcdTBBQ0RcXHUwQUUyXFx1MEFFM1xcdTBBRkEtXFx1MEFGRlxcdTBCMDFcXHUwQjNDXFx1MEIzRlxcdTBCNDEtXFx1MEI0NFxcdTBCNERcXHUwQjU1XFx1MEI1NlxcdTBCNjJcXHUwQjYzXFx1MEI4MlxcdTBCQzBcXHUwQkNEXFx1MEMwMFxcdTBDMDRcXHUwQzNFLVxcdTBDNDBcXHUwQzQ2LVxcdTBDNDhcXHUwQzRBLVxcdTBDNERcXHUwQzU1XFx1MEM1NlxcdTBDNjJcXHUwQzYzXFx1MEM4MVxcdTBDQkNcXHUwQ0JGXFx1MENDNlxcdTBDQ0NcXHUwQ0NEXFx1MENFMlxcdTBDRTNcXHUwRDAwXFx1MEQwMVxcdTBEM0JcXHUwRDNDXFx1MEQ0MS1cXHUwRDQ0XFx1MEQ0RFxcdTBENjJcXHUwRDYzXFx1MEQ4MVxcdTBEQ0FcXHUwREQyLVxcdTBERDRcXHUwREQ2XFx1MEUzMVxcdTBFMzQtXFx1MEUzQVxcdTBFNDctXFx1MEU0RVxcdTBFQjFcXHUwRUI0LVxcdTBFQkNcXHUwRUM4LVxcdTBFQ0RcXHUwRjE4XFx1MEYxOVxcdTBGMzVcXHUwRjM3XFx1MEYzOVxcdTBGNzEtXFx1MEY3RVxcdTBGODAtXFx1MEY4NFxcdTBGODZcXHUwRjg3XFx1MEY4RC1cXHUwRjk3XFx1MEY5OS1cXHUwRkJDXFx1MEZDNlxcdTEwMkQtXFx1MTAzMFxcdTEwMzItXFx1MTAzN1xcdTEwMzlcXHUxMDNBXFx1MTAzRFxcdTEwM0VcXHUxMDU4XFx1MTA1OVxcdTEwNUUtXFx1MTA2MFxcdTEwNzEtXFx1MTA3NFxcdTEwODJcXHUxMDg1XFx1MTA4NlxcdTEwOERcXHUxMDlEXFx1MTM1RC1cXHUxMzVGXFx1MTcxMi1cXHUxNzE0XFx1MTczMi1cXHUxNzM0XFx1MTc1MlxcdTE3NTNcXHUxNzcyXFx1MTc3M1xcdTE3QjRcXHUxN0I1XFx1MTdCNy1cXHUxN0JEXFx1MTdDNlxcdTE3QzktXFx1MTdEM1xcdTE3RERcXHUxODBCLVxcdTE4MERcXHUxODg1XFx1MTg4NlxcdTE4QTlcXHUxOTIwLVxcdTE5MjJcXHUxOTI3XFx1MTkyOFxcdTE5MzJcXHUxOTM5LVxcdTE5M0JcXHUxQTE3XFx1MUExOFxcdTFBMUJcXHUxQTU2XFx1MUE1OC1cXHUxQTVFXFx1MUE2MFxcdTFBNjJcXHUxQTY1LVxcdTFBNkNcXHUxQTczLVxcdTFBN0NcXHUxQTdGXFx1MUFCMC1cXHUxQUJEXFx1MUFCRlxcdTFBQzBcXHUxQjAwLVxcdTFCMDNcXHUxQjM0XFx1MUIzNi1cXHUxQjNBXFx1MUIzQ1xcdTFCNDJcXHUxQjZCLVxcdTFCNzNcXHUxQjgwXFx1MUI4MVxcdTFCQTItXFx1MUJBNVxcdTFCQThcXHUxQkE5XFx1MUJBQi1cXHUxQkFEXFx1MUJFNlxcdTFCRThcXHUxQkU5XFx1MUJFRFxcdTFCRUYtXFx1MUJGMVxcdTFDMkMtXFx1MUMzM1xcdTFDMzZcXHUxQzM3XFx1MUNEMC1cXHUxQ0QyXFx1MUNENC1cXHUxQ0UwXFx1MUNFMi1cXHUxQ0U4XFx1MUNFRFxcdTFDRjRcXHUxQ0Y4XFx1MUNGOVxcdTFEQzAtXFx1MURGOVxcdTFERkItXFx1MURGRlxcdTIwRDAtXFx1MjBEQ1xcdTIwRTFcXHUyMEU1LVxcdTIwRjBcXHUyQ0VGLVxcdTJDRjFcXHUyRDdGXFx1MkRFMC1cXHUyREZGXFx1MzAyQS1cXHUzMDJEXFx1MzA5OVxcdTMwOUFcXHVBNjZGXFx1QTY3NC1cXHVBNjdEXFx1QTY5RVxcdUE2OUZcXHVBNkYwXFx1QTZGMVxcdUE4MDJcXHVBODA2XFx1QTgwQlxcdUE4MjVcXHVBODI2XFx1QTgyQ1xcdUE4QzRcXHVBOEM1XFx1QThFMC1cXHVBOEYxXFx1QThGRlxcdUE5MjYtXFx1QTkyRFxcdUE5NDctXFx1QTk1MVxcdUE5ODAtXFx1QTk4MlxcdUE5QjNcXHVBOUI2LVxcdUE5QjlcXHVBOUJDXFx1QTlCRFxcdUE5RTVcXHVBQTI5LVxcdUFBMkVcXHVBQTMxXFx1QUEzMlxcdUFBMzVcXHVBQTM2XFx1QUE0M1xcdUFBNENcXHVBQTdDXFx1QUFCMFxcdUFBQjItXFx1QUFCNFxcdUFBQjdcXHVBQUI4XFx1QUFCRVxcdUFBQkZcXHVBQUMxXFx1QUFFQ1xcdUFBRURcXHVBQUY2XFx1QUJFNVxcdUFCRThcXHVBQkVEXFx1RkIxRVxcdUZFMDAtXFx1RkUwRlxcdUZFMjAtXFx1RkUyRicsXG4gICAgICAgICdhc3RyYWwnOiAnXFx1RDgwMFtcXHVEREZEXFx1REVFMFxcdURGNzYtXFx1REY3QV18XFx1RDgwMltcXHVERTAxLVxcdURFMDNcXHVERTA1XFx1REUwNlxcdURFMEMtXFx1REUwRlxcdURFMzgtXFx1REUzQVxcdURFM0ZcXHVERUU1XFx1REVFNl18XFx1RDgwM1tcXHVERDI0LVxcdUREMjdcXHVERUFCXFx1REVBQ1xcdURGNDYtXFx1REY1MF18XFx1RDgwNFtcXHVEQzAxXFx1REMzOC1cXHVEQzQ2XFx1REM3Ri1cXHVEQzgxXFx1RENCMy1cXHVEQ0I2XFx1RENCOVxcdURDQkFcXHVERDAwLVxcdUREMDJcXHVERDI3LVxcdUREMkJcXHVERDJELVxcdUREMzRcXHVERDczXFx1REQ4MFxcdUREODFcXHVEREI2LVxcdUREQkVcXHVEREM5LVxcdUREQ0NcXHVERENGXFx1REUyRi1cXHVERTMxXFx1REUzNFxcdURFMzZcXHVERTM3XFx1REUzRVxcdURFREZcXHVERUUzLVxcdURFRUFcXHVERjAwXFx1REYwMVxcdURGM0JcXHVERjNDXFx1REY0MFxcdURGNjYtXFx1REY2Q1xcdURGNzAtXFx1REY3NF18XFx1RDgwNVtcXHVEQzM4LVxcdURDM0ZcXHVEQzQyLVxcdURDNDRcXHVEQzQ2XFx1REM1RVxcdURDQjMtXFx1RENCOFxcdURDQkFcXHVEQ0JGXFx1RENDMFxcdURDQzJcXHVEQ0MzXFx1RERCMi1cXHVEREI1XFx1RERCQ1xcdUREQkRcXHVEREJGXFx1RERDMFxcdURERENcXHVEREREXFx1REUzMy1cXHVERTNBXFx1REUzRFxcdURFM0ZcXHVERTQwXFx1REVBQlxcdURFQURcXHVERUIwLVxcdURFQjVcXHVERUI3XFx1REYxRC1cXHVERjFGXFx1REYyMi1cXHVERjI1XFx1REYyNy1cXHVERjJCXXxcXHVEODA2W1xcdURDMkYtXFx1REMzN1xcdURDMzlcXHVEQzNBXFx1REQzQlxcdUREM0NcXHVERDNFXFx1REQ0M1xcdURERDQtXFx1REREN1xcdUREREFcXHVERERCXFx1RERFMFxcdURFMDEtXFx1REUwQVxcdURFMzMtXFx1REUzOFxcdURFM0ItXFx1REUzRVxcdURFNDdcXHVERTUxLVxcdURFNTZcXHVERTU5LVxcdURFNUJcXHVERThBLVxcdURFOTZcXHVERTk4XFx1REU5OV18XFx1RDgwN1tcXHVEQzMwLVxcdURDMzZcXHVEQzM4LVxcdURDM0RcXHVEQzNGXFx1REM5Mi1cXHVEQ0E3XFx1RENBQS1cXHVEQ0IwXFx1RENCMlxcdURDQjNcXHVEQ0I1XFx1RENCNlxcdUREMzEtXFx1REQzNlxcdUREM0FcXHVERDNDXFx1REQzRFxcdUREM0YtXFx1REQ0NVxcdURENDdcXHVERDkwXFx1REQ5MVxcdUREOTVcXHVERDk3XFx1REVGM1xcdURFRjRdfFxcdUQ4MUFbXFx1REVGMC1cXHVERUY0XFx1REYzMC1cXHVERjM2XXxcXHVEODFCW1xcdURGNEZcXHVERjhGLVxcdURGOTJcXHVERkU0XXxcXHVEODJGW1xcdURDOURcXHVEQzlFXXxcXHVEODM0W1xcdURENjctXFx1REQ2OVxcdUREN0ItXFx1REQ4MlxcdUREODUtXFx1REQ4QlxcdUREQUEtXFx1RERBRFxcdURFNDItXFx1REU0NF18XFx1RDgzNltcXHVERTAwLVxcdURFMzZcXHVERTNCLVxcdURFNkNcXHVERTc1XFx1REU4NFxcdURFOUItXFx1REU5RlxcdURFQTEtXFx1REVBRl18XFx1RDgzOFtcXHVEQzAwLVxcdURDMDZcXHVEQzA4LVxcdURDMThcXHVEQzFCLVxcdURDMjFcXHVEQzIzXFx1REMyNFxcdURDMjYtXFx1REMyQVxcdUREMzAtXFx1REQzNlxcdURFRUMtXFx1REVFRl18XFx1RDgzQVtcXHVEQ0QwLVxcdURDRDZcXHVERDQ0LVxcdURENEFdfFxcdURCNDBbXFx1REQwMC1cXHVEREVGXSdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnTicsXG4gICAgICAgICdhbGlhcyc6ICdOdW1iZXInLFxuICAgICAgICAnYm1wJzogJzAtOVxceEIyXFx4QjNcXHhCOVxceEJDLVxceEJFXFx1MDY2MC1cXHUwNjY5XFx1MDZGMC1cXHUwNkY5XFx1MDdDMC1cXHUwN0M5XFx1MDk2Ni1cXHUwOTZGXFx1MDlFNi1cXHUwOUVGXFx1MDlGNC1cXHUwOUY5XFx1MEE2Ni1cXHUwQTZGXFx1MEFFNi1cXHUwQUVGXFx1MEI2Ni1cXHUwQjZGXFx1MEI3Mi1cXHUwQjc3XFx1MEJFNi1cXHUwQkYyXFx1MEM2Ni1cXHUwQzZGXFx1MEM3OC1cXHUwQzdFXFx1MENFNi1cXHUwQ0VGXFx1MEQ1OC1cXHUwRDVFXFx1MEQ2Ni1cXHUwRDc4XFx1MERFNi1cXHUwREVGXFx1MEU1MC1cXHUwRTU5XFx1MEVEMC1cXHUwRUQ5XFx1MEYyMC1cXHUwRjMzXFx1MTA0MC1cXHUxMDQ5XFx1MTA5MC1cXHUxMDk5XFx1MTM2OS1cXHUxMzdDXFx1MTZFRS1cXHUxNkYwXFx1MTdFMC1cXHUxN0U5XFx1MTdGMC1cXHUxN0Y5XFx1MTgxMC1cXHUxODE5XFx1MTk0Ni1cXHUxOTRGXFx1MTlEMC1cXHUxOURBXFx1MUE4MC1cXHUxQTg5XFx1MUE5MC1cXHUxQTk5XFx1MUI1MC1cXHUxQjU5XFx1MUJCMC1cXHUxQkI5XFx1MUM0MC1cXHUxQzQ5XFx1MUM1MC1cXHUxQzU5XFx1MjA3MFxcdTIwNzQtXFx1MjA3OVxcdTIwODAtXFx1MjA4OVxcdTIxNTAtXFx1MjE4MlxcdTIxODUtXFx1MjE4OVxcdTI0NjAtXFx1MjQ5QlxcdTI0RUEtXFx1MjRGRlxcdTI3NzYtXFx1Mjc5M1xcdTJDRkRcXHUzMDA3XFx1MzAyMS1cXHUzMDI5XFx1MzAzOC1cXHUzMDNBXFx1MzE5Mi1cXHUzMTk1XFx1MzIyMC1cXHUzMjI5XFx1MzI0OC1cXHUzMjRGXFx1MzI1MS1cXHUzMjVGXFx1MzI4MC1cXHUzMjg5XFx1MzJCMS1cXHUzMkJGXFx1QTYyMC1cXHVBNjI5XFx1QTZFNi1cXHVBNkVGXFx1QTgzMC1cXHVBODM1XFx1QThEMC1cXHVBOEQ5XFx1QTkwMC1cXHVBOTA5XFx1QTlEMC1cXHVBOUQ5XFx1QTlGMC1cXHVBOUY5XFx1QUE1MC1cXHVBQTU5XFx1QUJGMC1cXHVBQkY5XFx1RkYxMC1cXHVGRjE5JyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODAwW1xcdUREMDctXFx1REQzM1xcdURENDAtXFx1REQ3OFxcdUREOEFcXHVERDhCXFx1REVFMS1cXHVERUZCXFx1REYyMC1cXHVERjIzXFx1REY0MVxcdURGNEFcXHVERkQxLVxcdURGRDVdfFxcdUQ4MDFbXFx1RENBMC1cXHVEQ0E5XXxcXHVEODAyW1xcdURDNTgtXFx1REM1RlxcdURDNzktXFx1REM3RlxcdURDQTctXFx1RENBRlxcdURDRkItXFx1RENGRlxcdUREMTYtXFx1REQxQlxcdUREQkNcXHVEREJEXFx1RERDMC1cXHVERENGXFx1REREMi1cXHVEREZGXFx1REU0MC1cXHVERTQ4XFx1REU3RFxcdURFN0VcXHVERTlELVxcdURFOUZcXHVERUVCLVxcdURFRUZcXHVERjU4LVxcdURGNUZcXHVERjc4LVxcdURGN0ZcXHVERkE5LVxcdURGQUZdfFxcdUQ4MDNbXFx1RENGQS1cXHVEQ0ZGXFx1REQzMC1cXHVERDM5XFx1REU2MC1cXHVERTdFXFx1REYxRC1cXHVERjI2XFx1REY1MS1cXHVERjU0XFx1REZDNS1cXHVERkNCXXxcXHVEODA0W1xcdURDNTItXFx1REM2RlxcdURDRjAtXFx1RENGOVxcdUREMzYtXFx1REQzRlxcdURERDAtXFx1REREOVxcdURERTEtXFx1RERGNFxcdURFRjAtXFx1REVGOV18XFx1RDgwNVtcXHVEQzUwLVxcdURDNTlcXHVEQ0QwLVxcdURDRDlcXHVERTUwLVxcdURFNTlcXHVERUMwLVxcdURFQzlcXHVERjMwLVxcdURGM0JdfFxcdUQ4MDZbXFx1RENFMC1cXHVEQ0YyXFx1REQ1MC1cXHVERDU5XXxcXHVEODA3W1xcdURDNTAtXFx1REM2Q1xcdURENTAtXFx1REQ1OVxcdUREQTAtXFx1RERBOVxcdURGQzAtXFx1REZENF18XFx1RDgwOVtcXHVEQzAwLVxcdURDNkVdfFxcdUQ4MUFbXFx1REU2MC1cXHVERTY5XFx1REY1MC1cXHVERjU5XFx1REY1Qi1cXHVERjYxXXxcXHVEODFCW1xcdURFODAtXFx1REU5Nl18XFx1RDgzNFtcXHVERUUwLVxcdURFRjNcXHVERjYwLVxcdURGNzhdfFxcdUQ4MzVbXFx1REZDRS1cXHVERkZGXXxcXHVEODM4W1xcdURENDAtXFx1REQ0OVxcdURFRjAtXFx1REVGOV18XFx1RDgzQVtcXHVEQ0M3LVxcdURDQ0ZcXHVERDUwLVxcdURENTldfFxcdUQ4M0JbXFx1REM3MS1cXHVEQ0FCXFx1RENBRC1cXHVEQ0FGXFx1RENCMS1cXHVEQ0I0XFx1REQwMS1cXHVERDJEXFx1REQyRi1cXHVERDNEXXxcXHVEODNDW1xcdUREMDAtXFx1REQwQ118XFx1RDgzRVtcXHVERkYwLVxcdURGRjldJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdOZCcsXG4gICAgICAgICdhbGlhcyc6ICdEZWNpbWFsX051bWJlcicsXG4gICAgICAgICdibXAnOiAnMC05XFx1MDY2MC1cXHUwNjY5XFx1MDZGMC1cXHUwNkY5XFx1MDdDMC1cXHUwN0M5XFx1MDk2Ni1cXHUwOTZGXFx1MDlFNi1cXHUwOUVGXFx1MEE2Ni1cXHUwQTZGXFx1MEFFNi1cXHUwQUVGXFx1MEI2Ni1cXHUwQjZGXFx1MEJFNi1cXHUwQkVGXFx1MEM2Ni1cXHUwQzZGXFx1MENFNi1cXHUwQ0VGXFx1MEQ2Ni1cXHUwRDZGXFx1MERFNi1cXHUwREVGXFx1MEU1MC1cXHUwRTU5XFx1MEVEMC1cXHUwRUQ5XFx1MEYyMC1cXHUwRjI5XFx1MTA0MC1cXHUxMDQ5XFx1MTA5MC1cXHUxMDk5XFx1MTdFMC1cXHUxN0U5XFx1MTgxMC1cXHUxODE5XFx1MTk0Ni1cXHUxOTRGXFx1MTlEMC1cXHUxOUQ5XFx1MUE4MC1cXHUxQTg5XFx1MUE5MC1cXHUxQTk5XFx1MUI1MC1cXHUxQjU5XFx1MUJCMC1cXHUxQkI5XFx1MUM0MC1cXHUxQzQ5XFx1MUM1MC1cXHUxQzU5XFx1QTYyMC1cXHVBNjI5XFx1QThEMC1cXHVBOEQ5XFx1QTkwMC1cXHVBOTA5XFx1QTlEMC1cXHVBOUQ5XFx1QTlGMC1cXHVBOUY5XFx1QUE1MC1cXHVBQTU5XFx1QUJGMC1cXHVBQkY5XFx1RkYxMC1cXHVGRjE5JyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODAxW1xcdURDQTAtXFx1RENBOV18XFx1RDgwM1tcXHVERDMwLVxcdUREMzldfFxcdUQ4MDRbXFx1REM2Ni1cXHVEQzZGXFx1RENGMC1cXHVEQ0Y5XFx1REQzNi1cXHVERDNGXFx1REREMC1cXHVEREQ5XFx1REVGMC1cXHVERUY5XXxcXHVEODA1W1xcdURDNTAtXFx1REM1OVxcdURDRDAtXFx1RENEOVxcdURFNTAtXFx1REU1OVxcdURFQzAtXFx1REVDOVxcdURGMzAtXFx1REYzOV18XFx1RDgwNltcXHVEQ0UwLVxcdURDRTlcXHVERDUwLVxcdURENTldfFxcdUQ4MDdbXFx1REM1MC1cXHVEQzU5XFx1REQ1MC1cXHVERDU5XFx1RERBMC1cXHVEREE5XXxcXHVEODFBW1xcdURFNjAtXFx1REU2OVxcdURGNTAtXFx1REY1OV18XFx1RDgzNVtcXHVERkNFLVxcdURGRkZdfFxcdUQ4MzhbXFx1REQ0MC1cXHVERDQ5XFx1REVGMC1cXHVERUY5XXxcXHVEODNBW1xcdURENTAtXFx1REQ1OV18XFx1RDgzRVtcXHVERkYwLVxcdURGRjldJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdObCcsXG4gICAgICAgICdhbGlhcyc6ICdMZXR0ZXJfTnVtYmVyJyxcbiAgICAgICAgJ2JtcCc6ICdcXHUxNkVFLVxcdTE2RjBcXHUyMTYwLVxcdTIxODJcXHUyMTg1LVxcdTIxODhcXHUzMDA3XFx1MzAyMS1cXHUzMDI5XFx1MzAzOC1cXHUzMDNBXFx1QTZFNi1cXHVBNkVGJyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODAwW1xcdURENDAtXFx1REQ3NFxcdURGNDFcXHVERjRBXFx1REZEMS1cXHVERkQ1XXxcXHVEODA5W1xcdURDMDAtXFx1REM2RV0nXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ05vJyxcbiAgICAgICAgJ2FsaWFzJzogJ090aGVyX051bWJlcicsXG4gICAgICAgICdibXAnOiAnXFx4QjJcXHhCM1xceEI5XFx4QkMtXFx4QkVcXHUwOUY0LVxcdTA5RjlcXHUwQjcyLVxcdTBCNzdcXHUwQkYwLVxcdTBCRjJcXHUwQzc4LVxcdTBDN0VcXHUwRDU4LVxcdTBENUVcXHUwRDcwLVxcdTBENzhcXHUwRjJBLVxcdTBGMzNcXHUxMzY5LVxcdTEzN0NcXHUxN0YwLVxcdTE3RjlcXHUxOURBXFx1MjA3MFxcdTIwNzQtXFx1MjA3OVxcdTIwODAtXFx1MjA4OVxcdTIxNTAtXFx1MjE1RlxcdTIxODlcXHUyNDYwLVxcdTI0OUJcXHUyNEVBLVxcdTI0RkZcXHUyNzc2LVxcdTI3OTNcXHUyQ0ZEXFx1MzE5Mi1cXHUzMTk1XFx1MzIyMC1cXHUzMjI5XFx1MzI0OC1cXHUzMjRGXFx1MzI1MS1cXHUzMjVGXFx1MzI4MC1cXHUzMjg5XFx1MzJCMS1cXHUzMkJGXFx1QTgzMC1cXHVBODM1JyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODAwW1xcdUREMDctXFx1REQzM1xcdURENzUtXFx1REQ3OFxcdUREOEFcXHVERDhCXFx1REVFMS1cXHVERUZCXFx1REYyMC1cXHVERjIzXXxcXHVEODAyW1xcdURDNTgtXFx1REM1RlxcdURDNzktXFx1REM3RlxcdURDQTctXFx1RENBRlxcdURDRkItXFx1RENGRlxcdUREMTYtXFx1REQxQlxcdUREQkNcXHVEREJEXFx1RERDMC1cXHVERENGXFx1REREMi1cXHVEREZGXFx1REU0MC1cXHVERTQ4XFx1REU3RFxcdURFN0VcXHVERTlELVxcdURFOUZcXHVERUVCLVxcdURFRUZcXHVERjU4LVxcdURGNUZcXHVERjc4LVxcdURGN0ZcXHVERkE5LVxcdURGQUZdfFxcdUQ4MDNbXFx1RENGQS1cXHVEQ0ZGXFx1REU2MC1cXHVERTdFXFx1REYxRC1cXHVERjI2XFx1REY1MS1cXHVERjU0XFx1REZDNS1cXHVERkNCXXxcXHVEODA0W1xcdURDNTItXFx1REM2NVxcdURERTEtXFx1RERGNF18XFx1RDgwNVtcXHVERjNBXFx1REYzQl18XFx1RDgwNltcXHVEQ0VBLVxcdURDRjJdfFxcdUQ4MDdbXFx1REM1QS1cXHVEQzZDXFx1REZDMC1cXHVERkQ0XXxcXHVEODFBW1xcdURGNUItXFx1REY2MV18XFx1RDgxQltcXHVERTgwLVxcdURFOTZdfFxcdUQ4MzRbXFx1REVFMC1cXHVERUYzXFx1REY2MC1cXHVERjc4XXxcXHVEODNBW1xcdURDQzctXFx1RENDRl18XFx1RDgzQltcXHVEQzcxLVxcdURDQUJcXHVEQ0FELVxcdURDQUZcXHVEQ0IxLVxcdURDQjRcXHVERDAxLVxcdUREMkRcXHVERDJGLVxcdUREM0RdfFxcdUQ4M0NbXFx1REQwMC1cXHVERDBDXSdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnUCcsXG4gICAgICAgICdhbGlhcyc6ICdQdW5jdHVhdGlvbicsXG4gICAgICAgICdibXAnOiAnIS0jJS1cXFxcKiwtXFxcXC86O1xcXFw/QFxcXFxbLVxcXFxdX1xcXFx7XFxcXH1cXHhBMVxceEE3XFx4QUJcXHhCNlxceEI3XFx4QkJcXHhCRlxcdTAzN0VcXHUwMzg3XFx1MDU1QS1cXHUwNTVGXFx1MDU4OVxcdTA1OEFcXHUwNUJFXFx1MDVDMFxcdTA1QzNcXHUwNUM2XFx1MDVGM1xcdTA1RjRcXHUwNjA5XFx1MDYwQVxcdTA2MENcXHUwNjBEXFx1MDYxQlxcdTA2MUVcXHUwNjFGXFx1MDY2QS1cXHUwNjZEXFx1MDZENFxcdTA3MDAtXFx1MDcwRFxcdTA3RjctXFx1MDdGOVxcdTA4MzAtXFx1MDgzRVxcdTA4NUVcXHUwOTY0XFx1MDk2NVxcdTA5NzBcXHUwOUZEXFx1MEE3NlxcdTBBRjBcXHUwQzc3XFx1MEM4NFxcdTBERjRcXHUwRTRGXFx1MEU1QVxcdTBFNUJcXHUwRjA0LVxcdTBGMTJcXHUwRjE0XFx1MEYzQS1cXHUwRjNEXFx1MEY4NVxcdTBGRDAtXFx1MEZENFxcdTBGRDlcXHUwRkRBXFx1MTA0QS1cXHUxMDRGXFx1MTBGQlxcdTEzNjAtXFx1MTM2OFxcdTE0MDBcXHUxNjZFXFx1MTY5QlxcdTE2OUNcXHUxNkVCLVxcdTE2RURcXHUxNzM1XFx1MTczNlxcdTE3RDQtXFx1MTdENlxcdTE3RDgtXFx1MTdEQVxcdTE4MDAtXFx1MTgwQVxcdTE5NDRcXHUxOTQ1XFx1MUExRVxcdTFBMUZcXHUxQUEwLVxcdTFBQTZcXHUxQUE4LVxcdTFBQURcXHUxQjVBLVxcdTFCNjBcXHUxQkZDLVxcdTFCRkZcXHUxQzNCLVxcdTFDM0ZcXHUxQzdFXFx1MUM3RlxcdTFDQzAtXFx1MUNDN1xcdTFDRDNcXHUyMDEwLVxcdTIwMjdcXHUyMDMwLVxcdTIwNDNcXHUyMDQ1LVxcdTIwNTFcXHUyMDUzLVxcdTIwNUVcXHUyMDdEXFx1MjA3RVxcdTIwOERcXHUyMDhFXFx1MjMwOC1cXHUyMzBCXFx1MjMyOVxcdTIzMkFcXHUyNzY4LVxcdTI3NzVcXHUyN0M1XFx1MjdDNlxcdTI3RTYtXFx1MjdFRlxcdTI5ODMtXFx1Mjk5OFxcdTI5RDgtXFx1MjlEQlxcdTI5RkNcXHUyOUZEXFx1MkNGOS1cXHUyQ0ZDXFx1MkNGRVxcdTJDRkZcXHUyRDcwXFx1MkUwMC1cXHUyRTJFXFx1MkUzMC1cXHUyRTRGXFx1MkU1MlxcdTMwMDEtXFx1MzAwM1xcdTMwMDgtXFx1MzAxMVxcdTMwMTQtXFx1MzAxRlxcdTMwMzBcXHUzMDNEXFx1MzBBMFxcdTMwRkJcXHVBNEZFXFx1QTRGRlxcdUE2MEQtXFx1QTYwRlxcdUE2NzNcXHVBNjdFXFx1QTZGMi1cXHVBNkY3XFx1QTg3NC1cXHVBODc3XFx1QThDRVxcdUE4Q0ZcXHVBOEY4LVxcdUE4RkFcXHVBOEZDXFx1QTkyRVxcdUE5MkZcXHVBOTVGXFx1QTlDMS1cXHVBOUNEXFx1QTlERVxcdUE5REZcXHVBQTVDLVxcdUFBNUZcXHVBQURFXFx1QUFERlxcdUFBRjBcXHVBQUYxXFx1QUJFQlxcdUZEM0VcXHVGRDNGXFx1RkUxMC1cXHVGRTE5XFx1RkUzMC1cXHVGRTUyXFx1RkU1NC1cXHVGRTYxXFx1RkU2M1xcdUZFNjhcXHVGRTZBXFx1RkU2QlxcdUZGMDEtXFx1RkYwM1xcdUZGMDUtXFx1RkYwQVxcdUZGMEMtXFx1RkYwRlxcdUZGMUFcXHVGRjFCXFx1RkYxRlxcdUZGMjBcXHVGRjNCLVxcdUZGM0RcXHVGRjNGXFx1RkY1QlxcdUZGNURcXHVGRjVGLVxcdUZGNjUnLFxuICAgICAgICAnYXN0cmFsJzogJ1xcdUQ4MDBbXFx1REQwMC1cXHVERDAyXFx1REY5RlxcdURGRDBdfFxcdUQ4MDFcXHVERDZGfFxcdUQ4MDJbXFx1REM1N1xcdUREMUZcXHVERDNGXFx1REU1MC1cXHVERTU4XFx1REU3RlxcdURFRjAtXFx1REVGNlxcdURGMzktXFx1REYzRlxcdURGOTktXFx1REY5Q118XFx1RDgwM1tcXHVERUFEXFx1REY1NS1cXHVERjU5XXxcXHVEODA0W1xcdURDNDctXFx1REM0RFxcdURDQkJcXHVEQ0JDXFx1RENCRS1cXHVEQ0MxXFx1REQ0MC1cXHVERDQzXFx1REQ3NFxcdURENzVcXHVEREM1LVxcdUREQzhcXHVERENEXFx1REREQlxcdUREREQtXFx1RERERlxcdURFMzgtXFx1REUzRFxcdURFQTldfFxcdUQ4MDVbXFx1REM0Qi1cXHVEQzRGXFx1REM1QVxcdURDNUJcXHVEQzVEXFx1RENDNlxcdUREQzEtXFx1REREN1xcdURFNDEtXFx1REU0M1xcdURFNjAtXFx1REU2Q1xcdURGM0MtXFx1REYzRV18XFx1RDgwNltcXHVEQzNCXFx1REQ0NC1cXHVERDQ2XFx1RERFMlxcdURFM0YtXFx1REU0NlxcdURFOUEtXFx1REU5Q1xcdURFOUUtXFx1REVBMl18XFx1RDgwN1tcXHVEQzQxLVxcdURDNDVcXHVEQzcwXFx1REM3MVxcdURFRjdcXHVERUY4XFx1REZGRl18XFx1RDgwOVtcXHVEQzcwLVxcdURDNzRdfFxcdUQ4MUFbXFx1REU2RVxcdURFNkZcXHVERUY1XFx1REYzNy1cXHVERjNCXFx1REY0NF18XFx1RDgxQltcXHVERTk3LVxcdURFOUFcXHVERkUyXXxcXHVEODJGXFx1REM5RnxcXHVEODM2W1xcdURFODctXFx1REU4Ql18XFx1RDgzQVtcXHVERDVFXFx1REQ1Rl0nXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ1BjJyxcbiAgICAgICAgJ2FsaWFzJzogJ0Nvbm5lY3Rvcl9QdW5jdHVhdGlvbicsXG4gICAgICAgICdibXAnOiAnX1xcdTIwM0ZcXHUyMDQwXFx1MjA1NFxcdUZFMzNcXHVGRTM0XFx1RkU0RC1cXHVGRTRGXFx1RkYzRidcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnUGQnLFxuICAgICAgICAnYWxpYXMnOiAnRGFzaF9QdW5jdHVhdGlvbicsXG4gICAgICAgICdibXAnOiAnXFxcXC1cXHUwNThBXFx1MDVCRVxcdTE0MDBcXHUxODA2XFx1MjAxMC1cXHUyMDE1XFx1MkUxN1xcdTJFMUFcXHUyRTNBXFx1MkUzQlxcdTJFNDBcXHUzMDFDXFx1MzAzMFxcdTMwQTBcXHVGRTMxXFx1RkUzMlxcdUZFNThcXHVGRTYzXFx1RkYwRCcsXG4gICAgICAgICdhc3RyYWwnOiAnXFx1RDgwM1xcdURFQUQnXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ1BlJyxcbiAgICAgICAgJ2FsaWFzJzogJ0Nsb3NlX1B1bmN0dWF0aW9uJyxcbiAgICAgICAgJ2JtcCc6ICdcXFxcKVxcXFxdXFxcXH1cXHUwRjNCXFx1MEYzRFxcdTE2OUNcXHUyMDQ2XFx1MjA3RVxcdTIwOEVcXHUyMzA5XFx1MjMwQlxcdTIzMkFcXHUyNzY5XFx1Mjc2QlxcdTI3NkRcXHUyNzZGXFx1Mjc3MVxcdTI3NzNcXHUyNzc1XFx1MjdDNlxcdTI3RTdcXHUyN0U5XFx1MjdFQlxcdTI3RURcXHUyN0VGXFx1Mjk4NFxcdTI5ODZcXHUyOTg4XFx1Mjk4QVxcdTI5OENcXHUyOThFXFx1Mjk5MFxcdTI5OTJcXHUyOTk0XFx1Mjk5NlxcdTI5OThcXHUyOUQ5XFx1MjlEQlxcdTI5RkRcXHUyRTIzXFx1MkUyNVxcdTJFMjdcXHUyRTI5XFx1MzAwOVxcdTMwMEJcXHUzMDBEXFx1MzAwRlxcdTMwMTFcXHUzMDE1XFx1MzAxN1xcdTMwMTlcXHUzMDFCXFx1MzAxRVxcdTMwMUZcXHVGRDNFXFx1RkUxOFxcdUZFMzZcXHVGRTM4XFx1RkUzQVxcdUZFM0NcXHVGRTNFXFx1RkU0MFxcdUZFNDJcXHVGRTQ0XFx1RkU0OFxcdUZFNUFcXHVGRTVDXFx1RkU1RVxcdUZGMDlcXHVGRjNEXFx1RkY1RFxcdUZGNjBcXHVGRjYzJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdQZicsXG4gICAgICAgICdhbGlhcyc6ICdGaW5hbF9QdW5jdHVhdGlvbicsXG4gICAgICAgICdibXAnOiAnXFx4QkJcXHUyMDE5XFx1MjAxRFxcdTIwM0FcXHUyRTAzXFx1MkUwNVxcdTJFMEFcXHUyRTBEXFx1MkUxRFxcdTJFMjEnXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ1BpJyxcbiAgICAgICAgJ2FsaWFzJzogJ0luaXRpYWxfUHVuY3R1YXRpb24nLFxuICAgICAgICAnYm1wJzogJ1xceEFCXFx1MjAxOFxcdTIwMUJcXHUyMDFDXFx1MjAxRlxcdTIwMzlcXHUyRTAyXFx1MkUwNFxcdTJFMDlcXHUyRTBDXFx1MkUxQ1xcdTJFMjAnXG4gICAgfSxcbiAgICB7XG4gICAgICAgICduYW1lJzogJ1BvJyxcbiAgICAgICAgJ2FsaWFzJzogJ090aGVyX1B1bmN0dWF0aW9uJyxcbiAgICAgICAgJ2JtcCc6ICchLSMlLVxcJ1xcXFwqLFxcXFwuXFxcXC86O1xcXFw/QFxcXFxcXHhBMVxceEE3XFx4QjZcXHhCN1xceEJGXFx1MDM3RVxcdTAzODdcXHUwNTVBLVxcdTA1NUZcXHUwNTg5XFx1MDVDMFxcdTA1QzNcXHUwNUM2XFx1MDVGM1xcdTA1RjRcXHUwNjA5XFx1MDYwQVxcdTA2MENcXHUwNjBEXFx1MDYxQlxcdTA2MUVcXHUwNjFGXFx1MDY2QS1cXHUwNjZEXFx1MDZENFxcdTA3MDAtXFx1MDcwRFxcdTA3RjctXFx1MDdGOVxcdTA4MzAtXFx1MDgzRVxcdTA4NUVcXHUwOTY0XFx1MDk2NVxcdTA5NzBcXHUwOUZEXFx1MEE3NlxcdTBBRjBcXHUwQzc3XFx1MEM4NFxcdTBERjRcXHUwRTRGXFx1MEU1QVxcdTBFNUJcXHUwRjA0LVxcdTBGMTJcXHUwRjE0XFx1MEY4NVxcdTBGRDAtXFx1MEZENFxcdTBGRDlcXHUwRkRBXFx1MTA0QS1cXHUxMDRGXFx1MTBGQlxcdTEzNjAtXFx1MTM2OFxcdTE2NkVcXHUxNkVCLVxcdTE2RURcXHUxNzM1XFx1MTczNlxcdTE3RDQtXFx1MTdENlxcdTE3RDgtXFx1MTdEQVxcdTE4MDAtXFx1MTgwNVxcdTE4MDctXFx1MTgwQVxcdTE5NDRcXHUxOTQ1XFx1MUExRVxcdTFBMUZcXHUxQUEwLVxcdTFBQTZcXHUxQUE4LVxcdTFBQURcXHUxQjVBLVxcdTFCNjBcXHUxQkZDLVxcdTFCRkZcXHUxQzNCLVxcdTFDM0ZcXHUxQzdFXFx1MUM3RlxcdTFDQzAtXFx1MUNDN1xcdTFDRDNcXHUyMDE2XFx1MjAxN1xcdTIwMjAtXFx1MjAyN1xcdTIwMzAtXFx1MjAzOFxcdTIwM0ItXFx1MjAzRVxcdTIwNDEtXFx1MjA0M1xcdTIwNDctXFx1MjA1MVxcdTIwNTNcXHUyMDU1LVxcdTIwNUVcXHUyQ0Y5LVxcdTJDRkNcXHUyQ0ZFXFx1MkNGRlxcdTJENzBcXHUyRTAwXFx1MkUwMVxcdTJFMDYtXFx1MkUwOFxcdTJFMEJcXHUyRTBFLVxcdTJFMTZcXHUyRTE4XFx1MkUxOVxcdTJFMUJcXHUyRTFFXFx1MkUxRlxcdTJFMkEtXFx1MkUyRVxcdTJFMzAtXFx1MkUzOVxcdTJFM0MtXFx1MkUzRlxcdTJFNDFcXHUyRTQzLVxcdTJFNEZcXHUyRTUyXFx1MzAwMS1cXHUzMDAzXFx1MzAzRFxcdTMwRkJcXHVBNEZFXFx1QTRGRlxcdUE2MEQtXFx1QTYwRlxcdUE2NzNcXHVBNjdFXFx1QTZGMi1cXHVBNkY3XFx1QTg3NC1cXHVBODc3XFx1QThDRVxcdUE4Q0ZcXHVBOEY4LVxcdUE4RkFcXHVBOEZDXFx1QTkyRVxcdUE5MkZcXHVBOTVGXFx1QTlDMS1cXHVBOUNEXFx1QTlERVxcdUE5REZcXHVBQTVDLVxcdUFBNUZcXHVBQURFXFx1QUFERlxcdUFBRjBcXHVBQUYxXFx1QUJFQlxcdUZFMTAtXFx1RkUxNlxcdUZFMTlcXHVGRTMwXFx1RkU0NVxcdUZFNDZcXHVGRTQ5LVxcdUZFNENcXHVGRTUwLVxcdUZFNTJcXHVGRTU0LVxcdUZFNTdcXHVGRTVGLVxcdUZFNjFcXHVGRTY4XFx1RkU2QVxcdUZFNkJcXHVGRjAxLVxcdUZGMDNcXHVGRjA1LVxcdUZGMDdcXHVGRjBBXFx1RkYwQ1xcdUZGMEVcXHVGRjBGXFx1RkYxQVxcdUZGMUJcXHVGRjFGXFx1RkYyMFxcdUZGM0NcXHVGRjYxXFx1RkY2NFxcdUZGNjUnLFxuICAgICAgICAnYXN0cmFsJzogJ1xcdUQ4MDBbXFx1REQwMC1cXHVERDAyXFx1REY5RlxcdURGRDBdfFxcdUQ4MDFcXHVERDZGfFxcdUQ4MDJbXFx1REM1N1xcdUREMUZcXHVERDNGXFx1REU1MC1cXHVERTU4XFx1REU3RlxcdURFRjAtXFx1REVGNlxcdURGMzktXFx1REYzRlxcdURGOTktXFx1REY5Q118XFx1RDgwM1tcXHVERjU1LVxcdURGNTldfFxcdUQ4MDRbXFx1REM0Ny1cXHVEQzREXFx1RENCQlxcdURDQkNcXHVEQ0JFLVxcdURDQzFcXHVERDQwLVxcdURENDNcXHVERDc0XFx1REQ3NVxcdUREQzUtXFx1RERDOFxcdUREQ0RcXHVERERCXFx1RERERC1cXHVERERGXFx1REUzOC1cXHVERTNEXFx1REVBOV18XFx1RDgwNVtcXHVEQzRCLVxcdURDNEZcXHVEQzVBXFx1REM1QlxcdURDNURcXHVEQ0M2XFx1RERDMS1cXHVEREQ3XFx1REU0MS1cXHVERTQzXFx1REU2MC1cXHVERTZDXFx1REYzQy1cXHVERjNFXXxcXHVEODA2W1xcdURDM0JcXHVERDQ0LVxcdURENDZcXHVEREUyXFx1REUzRi1cXHVERTQ2XFx1REU5QS1cXHVERTlDXFx1REU5RS1cXHVERUEyXXxcXHVEODA3W1xcdURDNDEtXFx1REM0NVxcdURDNzBcXHVEQzcxXFx1REVGN1xcdURFRjhcXHVERkZGXXxcXHVEODA5W1xcdURDNzAtXFx1REM3NF18XFx1RDgxQVtcXHVERTZFXFx1REU2RlxcdURFRjVcXHVERjM3LVxcdURGM0JcXHVERjQ0XXxcXHVEODFCW1xcdURFOTctXFx1REU5QVxcdURGRTJdfFxcdUQ4MkZcXHVEQzlGfFxcdUQ4MzZbXFx1REU4Ny1cXHVERThCXXxcXHVEODNBW1xcdURENUVcXHVERDVGXSdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnUHMnLFxuICAgICAgICAnYWxpYXMnOiAnT3Blbl9QdW5jdHVhdGlvbicsXG4gICAgICAgICdibXAnOiAnXFxcXChcXFxcW1xcXFx7XFx1MEYzQVxcdTBGM0NcXHUxNjlCXFx1MjAxQVxcdTIwMUVcXHUyMDQ1XFx1MjA3RFxcdTIwOERcXHUyMzA4XFx1MjMwQVxcdTIzMjlcXHUyNzY4XFx1Mjc2QVxcdTI3NkNcXHUyNzZFXFx1Mjc3MFxcdTI3NzJcXHUyNzc0XFx1MjdDNVxcdTI3RTZcXHUyN0U4XFx1MjdFQVxcdTI3RUNcXHUyN0VFXFx1Mjk4M1xcdTI5ODVcXHUyOTg3XFx1Mjk4OVxcdTI5OEJcXHUyOThEXFx1Mjk4RlxcdTI5OTFcXHUyOTkzXFx1Mjk5NVxcdTI5OTdcXHUyOUQ4XFx1MjlEQVxcdTI5RkNcXHUyRTIyXFx1MkUyNFxcdTJFMjZcXHUyRTI4XFx1MkU0MlxcdTMwMDhcXHUzMDBBXFx1MzAwQ1xcdTMwMEVcXHUzMDEwXFx1MzAxNFxcdTMwMTZcXHUzMDE4XFx1MzAxQVxcdTMwMURcXHVGRDNGXFx1RkUxN1xcdUZFMzVcXHVGRTM3XFx1RkUzOVxcdUZFM0JcXHVGRTNEXFx1RkUzRlxcdUZFNDFcXHVGRTQzXFx1RkU0N1xcdUZFNTlcXHVGRTVCXFx1RkU1RFxcdUZGMDhcXHVGRjNCXFx1RkY1QlxcdUZGNUZcXHVGRjYyJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdTJyxcbiAgICAgICAgJ2FsaWFzJzogJ1N5bWJvbCcsXG4gICAgICAgICdibXAnOiAnXFxcXCRcXFxcKzwtPlxcXFxeYFxcXFx8flxceEEyLVxceEE2XFx4QThcXHhBOVxceEFDXFx4QUUtXFx4QjFcXHhCNFxceEI4XFx4RDdcXHhGN1xcdTAyQzItXFx1MDJDNVxcdTAyRDItXFx1MDJERlxcdTAyRTUtXFx1MDJFQlxcdTAyRURcXHUwMkVGLVxcdTAyRkZcXHUwMzc1XFx1MDM4NFxcdTAzODVcXHUwM0Y2XFx1MDQ4MlxcdTA1OEQtXFx1MDU4RlxcdTA2MDYtXFx1MDYwOFxcdTA2MEJcXHUwNjBFXFx1MDYwRlxcdTA2REVcXHUwNkU5XFx1MDZGRFxcdTA2RkVcXHUwN0Y2XFx1MDdGRVxcdTA3RkZcXHUwOUYyXFx1MDlGM1xcdTA5RkFcXHUwOUZCXFx1MEFGMVxcdTBCNzBcXHUwQkYzLVxcdTBCRkFcXHUwQzdGXFx1MEQ0RlxcdTBENzlcXHUwRTNGXFx1MEYwMS1cXHUwRjAzXFx1MEYxM1xcdTBGMTUtXFx1MEYxN1xcdTBGMUEtXFx1MEYxRlxcdTBGMzRcXHUwRjM2XFx1MEYzOFxcdTBGQkUtXFx1MEZDNVxcdTBGQzctXFx1MEZDQ1xcdTBGQ0VcXHUwRkNGXFx1MEZENS1cXHUwRkQ4XFx1MTA5RVxcdTEwOUZcXHUxMzkwLVxcdTEzOTlcXHUxNjZEXFx1MTdEQlxcdTE5NDBcXHUxOURFLVxcdTE5RkZcXHUxQjYxLVxcdTFCNkFcXHUxQjc0LVxcdTFCN0NcXHUxRkJEXFx1MUZCRi1cXHUxRkMxXFx1MUZDRC1cXHUxRkNGXFx1MUZERC1cXHUxRkRGXFx1MUZFRC1cXHUxRkVGXFx1MUZGRFxcdTFGRkVcXHUyMDQ0XFx1MjA1MlxcdTIwN0EtXFx1MjA3Q1xcdTIwOEEtXFx1MjA4Q1xcdTIwQTAtXFx1MjBCRlxcdTIxMDBcXHUyMTAxXFx1MjEwMy1cXHUyMTA2XFx1MjEwOFxcdTIxMDlcXHUyMTE0XFx1MjExNi1cXHUyMTE4XFx1MjExRS1cXHUyMTIzXFx1MjEyNVxcdTIxMjdcXHUyMTI5XFx1MjEyRVxcdTIxM0FcXHUyMTNCXFx1MjE0MC1cXHUyMTQ0XFx1MjE0QS1cXHUyMTREXFx1MjE0RlxcdTIxOEFcXHUyMThCXFx1MjE5MC1cXHUyMzA3XFx1MjMwQy1cXHUyMzI4XFx1MjMyQi1cXHUyNDI2XFx1MjQ0MC1cXHUyNDRBXFx1MjQ5Qy1cXHUyNEU5XFx1MjUwMC1cXHUyNzY3XFx1Mjc5NC1cXHUyN0M0XFx1MjdDNy1cXHUyN0U1XFx1MjdGMC1cXHUyOTgyXFx1Mjk5OS1cXHUyOUQ3XFx1MjlEQy1cXHUyOUZCXFx1MjlGRS1cXHUyQjczXFx1MkI3Ni1cXHUyQjk1XFx1MkI5Ny1cXHUyQkZGXFx1MkNFNS1cXHUyQ0VBXFx1MkU1MFxcdTJFNTFcXHUyRTgwLVxcdTJFOTlcXHUyRTlCLVxcdTJFRjNcXHUyRjAwLVxcdTJGRDVcXHUyRkYwLVxcdTJGRkJcXHUzMDA0XFx1MzAxMlxcdTMwMTNcXHUzMDIwXFx1MzAzNlxcdTMwMzdcXHUzMDNFXFx1MzAzRlxcdTMwOUJcXHUzMDlDXFx1MzE5MFxcdTMxOTFcXHUzMTk2LVxcdTMxOUZcXHUzMUMwLVxcdTMxRTNcXHUzMjAwLVxcdTMyMUVcXHUzMjJBLVxcdTMyNDdcXHUzMjUwXFx1MzI2MC1cXHUzMjdGXFx1MzI4QS1cXHUzMkIwXFx1MzJDMC1cXHUzM0ZGXFx1NERDMC1cXHU0REZGXFx1QTQ5MC1cXHVBNEM2XFx1QTcwMC1cXHVBNzE2XFx1QTcyMFxcdUE3MjFcXHVBNzg5XFx1QTc4QVxcdUE4MjgtXFx1QTgyQlxcdUE4MzYtXFx1QTgzOVxcdUFBNzctXFx1QUE3OVxcdUFCNUJcXHVBQjZBXFx1QUI2QlxcdUZCMjlcXHVGQkIyLVxcdUZCQzFcXHVGREZDXFx1RkRGRFxcdUZFNjJcXHVGRTY0LVxcdUZFNjZcXHVGRTY5XFx1RkYwNFxcdUZGMEJcXHVGRjFDLVxcdUZGMUVcXHVGRjNFXFx1RkY0MFxcdUZGNUNcXHVGRjVFXFx1RkZFMC1cXHVGRkU2XFx1RkZFOC1cXHVGRkVFXFx1RkZGQ1xcdUZGRkQnLFxuICAgICAgICAnYXN0cmFsJzogJ1xcdUQ4MDBbXFx1REQzNy1cXHVERDNGXFx1REQ3OS1cXHVERDg5XFx1REQ4Qy1cXHVERDhFXFx1REQ5MC1cXHVERDlDXFx1RERBMFxcdURERDAtXFx1RERGQ118XFx1RDgwMltcXHVEQzc3XFx1REM3OFxcdURFQzhdfFxcdUQ4MDVcXHVERjNGfFxcdUQ4MDdbXFx1REZENS1cXHVERkYxXXxcXHVEODFBW1xcdURGM0MtXFx1REYzRlxcdURGNDVdfFxcdUQ4MkZcXHVEQzlDfFxcdUQ4MzRbXFx1REMwMC1cXHVEQ0Y1XFx1REQwMC1cXHVERDI2XFx1REQyOS1cXHVERDY0XFx1REQ2QS1cXHVERDZDXFx1REQ4M1xcdUREODRcXHVERDhDLVxcdUREQTlcXHVEREFFLVxcdURERThcXHVERTAwLVxcdURFNDFcXHVERTQ1XFx1REYwMC1cXHVERjU2XXxcXHVEODM1W1xcdURFQzFcXHVERURCXFx1REVGQlxcdURGMTVcXHVERjM1XFx1REY0RlxcdURGNkZcXHVERjg5XFx1REZBOVxcdURGQzNdfFxcdUQ4MzZbXFx1REMwMC1cXHVEREZGXFx1REUzNy1cXHVERTNBXFx1REU2RC1cXHVERTc0XFx1REU3Ni1cXHVERTgzXFx1REU4NVxcdURFODZdfFxcdUQ4MzhbXFx1REQ0RlxcdURFRkZdfFxcdUQ4M0JbXFx1RENBQ1xcdURDQjBcXHVERDJFXFx1REVGMFxcdURFRjFdfFxcdUQ4M0NbXFx1REMwMC1cXHVEQzJCXFx1REMzMC1cXHVEQzkzXFx1RENBMC1cXHVEQ0FFXFx1RENCMS1cXHVEQ0JGXFx1RENDMS1cXHVEQ0NGXFx1RENEMS1cXHVEQ0Y1XFx1REQwRC1cXHVEREFEXFx1RERFNi1cXHVERTAyXFx1REUxMC1cXHVERTNCXFx1REU0MC1cXHVERTQ4XFx1REU1MFxcdURFNTFcXHVERTYwLVxcdURFNjVcXHVERjAwLVxcdURGRkZdfFxcdUQ4M0RbXFx1REMwMC1cXHVERUQ3XFx1REVFMC1cXHVERUVDXFx1REVGMC1cXHVERUZDXFx1REYwMC1cXHVERjczXFx1REY4MC1cXHVERkQ4XFx1REZFMC1cXHVERkVCXXxcXHVEODNFW1xcdURDMDAtXFx1REMwQlxcdURDMTAtXFx1REM0N1xcdURDNTAtXFx1REM1OVxcdURDNjAtXFx1REM4N1xcdURDOTAtXFx1RENBRFxcdURDQjBcXHVEQ0IxXFx1REQwMC1cXHVERDc4XFx1REQ3QS1cXHVERENCXFx1RERDRC1cXHVERTUzXFx1REU2MC1cXHVERTZEXFx1REU3MC1cXHVERTc0XFx1REU3OC1cXHVERTdBXFx1REU4MC1cXHVERTg2XFx1REU5MC1cXHVERUE4XFx1REVCMC1cXHVERUI2XFx1REVDMC1cXHVERUMyXFx1REVEMC1cXHVERUQ2XFx1REYwMC1cXHVERjkyXFx1REY5NC1cXHVERkNBXSdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnU2MnLFxuICAgICAgICAnYWxpYXMnOiAnQ3VycmVuY3lfU3ltYm9sJyxcbiAgICAgICAgJ2JtcCc6ICdcXFxcJFxceEEyLVxceEE1XFx1MDU4RlxcdTA2MEJcXHUwN0ZFXFx1MDdGRlxcdTA5RjJcXHUwOUYzXFx1MDlGQlxcdTBBRjFcXHUwQkY5XFx1MEUzRlxcdTE3REJcXHUyMEEwLVxcdTIwQkZcXHVBODM4XFx1RkRGQ1xcdUZFNjlcXHVGRjA0XFx1RkZFMFxcdUZGRTFcXHVGRkU1XFx1RkZFNicsXG4gICAgICAgICdhc3RyYWwnOiAnXFx1RDgwN1tcXHVERkRELVxcdURGRTBdfFxcdUQ4MzhcXHVERUZGfFxcdUQ4M0JcXHVEQ0IwJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdTaycsXG4gICAgICAgICdhbGlhcyc6ICdNb2RpZmllcl9TeW1ib2wnLFxuICAgICAgICAnYm1wJzogJ1xcXFxeYFxceEE4XFx4QUZcXHhCNFxceEI4XFx1MDJDMi1cXHUwMkM1XFx1MDJEMi1cXHUwMkRGXFx1MDJFNS1cXHUwMkVCXFx1MDJFRFxcdTAyRUYtXFx1MDJGRlxcdTAzNzVcXHUwMzg0XFx1MDM4NVxcdTFGQkRcXHUxRkJGLVxcdTFGQzFcXHUxRkNELVxcdTFGQ0ZcXHUxRkRELVxcdTFGREZcXHUxRkVELVxcdTFGRUZcXHUxRkZEXFx1MUZGRVxcdTMwOUJcXHUzMDlDXFx1QTcwMC1cXHVBNzE2XFx1QTcyMFxcdUE3MjFcXHVBNzg5XFx1QTc4QVxcdUFCNUJcXHVBQjZBXFx1QUI2QlxcdUZCQjItXFx1RkJDMVxcdUZGM0VcXHVGRjQwXFx1RkZFMycsXG4gICAgICAgICdhc3RyYWwnOiAnXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdTbScsXG4gICAgICAgICdhbGlhcyc6ICdNYXRoX1N5bWJvbCcsXG4gICAgICAgICdibXAnOiAnXFxcXCs8LT5cXFxcfH5cXHhBQ1xceEIxXFx4RDdcXHhGN1xcdTAzRjZcXHUwNjA2LVxcdTA2MDhcXHUyMDQ0XFx1MjA1MlxcdTIwN0EtXFx1MjA3Q1xcdTIwOEEtXFx1MjA4Q1xcdTIxMThcXHUyMTQwLVxcdTIxNDRcXHUyMTRCXFx1MjE5MC1cXHUyMTk0XFx1MjE5QVxcdTIxOUJcXHUyMUEwXFx1MjFBM1xcdTIxQTZcXHUyMUFFXFx1MjFDRVxcdTIxQ0ZcXHUyMUQyXFx1MjFENFxcdTIxRjQtXFx1MjJGRlxcdTIzMjBcXHUyMzIxXFx1MjM3Q1xcdTIzOUItXFx1MjNCM1xcdTIzREMtXFx1MjNFMVxcdTI1QjdcXHUyNUMxXFx1MjVGOC1cXHUyNUZGXFx1MjY2RlxcdTI3QzAtXFx1MjdDNFxcdTI3QzctXFx1MjdFNVxcdTI3RjAtXFx1MjdGRlxcdTI5MDAtXFx1Mjk4MlxcdTI5OTktXFx1MjlEN1xcdTI5REMtXFx1MjlGQlxcdTI5RkUtXFx1MkFGRlxcdTJCMzAtXFx1MkI0NFxcdTJCNDctXFx1MkI0Q1xcdUZCMjlcXHVGRTYyXFx1RkU2NC1cXHVGRTY2XFx1RkYwQlxcdUZGMUMtXFx1RkYxRVxcdUZGNUNcXHVGRjVFXFx1RkZFMlxcdUZGRTktXFx1RkZFQycsXG4gICAgICAgICdhc3RyYWwnOiAnXFx1RDgzNVtcXHVERUMxXFx1REVEQlxcdURFRkJcXHVERjE1XFx1REYzNVxcdURGNEZcXHVERjZGXFx1REY4OVxcdURGQTlcXHVERkMzXXxcXHVEODNCW1xcdURFRjBcXHVERUYxXSdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnU28nLFxuICAgICAgICAnYWxpYXMnOiAnT3RoZXJfU3ltYm9sJyxcbiAgICAgICAgJ2JtcCc6ICdcXHhBNlxceEE5XFx4QUVcXHhCMFxcdTA0ODJcXHUwNThEXFx1MDU4RVxcdTA2MEVcXHUwNjBGXFx1MDZERVxcdTA2RTlcXHUwNkZEXFx1MDZGRVxcdTA3RjZcXHUwOUZBXFx1MEI3MFxcdTBCRjMtXFx1MEJGOFxcdTBCRkFcXHUwQzdGXFx1MEQ0RlxcdTBENzlcXHUwRjAxLVxcdTBGMDNcXHUwRjEzXFx1MEYxNS1cXHUwRjE3XFx1MEYxQS1cXHUwRjFGXFx1MEYzNFxcdTBGMzZcXHUwRjM4XFx1MEZCRS1cXHUwRkM1XFx1MEZDNy1cXHUwRkNDXFx1MEZDRVxcdTBGQ0ZcXHUwRkQ1LVxcdTBGRDhcXHUxMDlFXFx1MTA5RlxcdTEzOTAtXFx1MTM5OVxcdTE2NkRcXHUxOTQwXFx1MTlERS1cXHUxOUZGXFx1MUI2MS1cXHUxQjZBXFx1MUI3NC1cXHUxQjdDXFx1MjEwMFxcdTIxMDFcXHUyMTAzLVxcdTIxMDZcXHUyMTA4XFx1MjEwOVxcdTIxMTRcXHUyMTE2XFx1MjExN1xcdTIxMUUtXFx1MjEyM1xcdTIxMjVcXHUyMTI3XFx1MjEyOVxcdTIxMkVcXHUyMTNBXFx1MjEzQlxcdTIxNEFcXHUyMTRDXFx1MjE0RFxcdTIxNEZcXHUyMThBXFx1MjE4QlxcdTIxOTUtXFx1MjE5OVxcdTIxOUMtXFx1MjE5RlxcdTIxQTFcXHUyMUEyXFx1MjFBNFxcdTIxQTVcXHUyMUE3LVxcdTIxQURcXHUyMUFGLVxcdTIxQ0RcXHUyMUQwXFx1MjFEMVxcdTIxRDNcXHUyMUQ1LVxcdTIxRjNcXHUyMzAwLVxcdTIzMDdcXHUyMzBDLVxcdTIzMUZcXHUyMzIyLVxcdTIzMjhcXHUyMzJCLVxcdTIzN0JcXHUyMzdELVxcdTIzOUFcXHUyM0I0LVxcdTIzREJcXHUyM0UyLVxcdTI0MjZcXHUyNDQwLVxcdTI0NEFcXHUyNDlDLVxcdTI0RTlcXHUyNTAwLVxcdTI1QjZcXHUyNUI4LVxcdTI1QzBcXHUyNUMyLVxcdTI1RjdcXHUyNjAwLVxcdTI2NkVcXHUyNjcwLVxcdTI3NjdcXHUyNzk0LVxcdTI3QkZcXHUyODAwLVxcdTI4RkZcXHUyQjAwLVxcdTJCMkZcXHUyQjQ1XFx1MkI0NlxcdTJCNEQtXFx1MkI3M1xcdTJCNzYtXFx1MkI5NVxcdTJCOTctXFx1MkJGRlxcdTJDRTUtXFx1MkNFQVxcdTJFNTBcXHUyRTUxXFx1MkU4MC1cXHUyRTk5XFx1MkU5Qi1cXHUyRUYzXFx1MkYwMC1cXHUyRkQ1XFx1MkZGMC1cXHUyRkZCXFx1MzAwNFxcdTMwMTJcXHUzMDEzXFx1MzAyMFxcdTMwMzZcXHUzMDM3XFx1MzAzRVxcdTMwM0ZcXHUzMTkwXFx1MzE5MVxcdTMxOTYtXFx1MzE5RlxcdTMxQzAtXFx1MzFFM1xcdTMyMDAtXFx1MzIxRVxcdTMyMkEtXFx1MzI0N1xcdTMyNTBcXHUzMjYwLVxcdTMyN0ZcXHUzMjhBLVxcdTMyQjBcXHUzMkMwLVxcdTMzRkZcXHU0REMwLVxcdTRERkZcXHVBNDkwLVxcdUE0QzZcXHVBODI4LVxcdUE4MkJcXHVBODM2XFx1QTgzN1xcdUE4MzlcXHVBQTc3LVxcdUFBNzlcXHVGREZEXFx1RkZFNFxcdUZGRThcXHVGRkVEXFx1RkZFRVxcdUZGRkNcXHVGRkZEJyxcbiAgICAgICAgJ2FzdHJhbCc6ICdcXHVEODAwW1xcdUREMzctXFx1REQzRlxcdURENzktXFx1REQ4OVxcdUREOEMtXFx1REQ4RVxcdUREOTAtXFx1REQ5Q1xcdUREQTBcXHVEREQwLVxcdURERkNdfFxcdUQ4MDJbXFx1REM3N1xcdURDNzhcXHVERUM4XXxcXHVEODA1XFx1REYzRnxcXHVEODA3W1xcdURGRDUtXFx1REZEQ1xcdURGRTEtXFx1REZGMV18XFx1RDgxQVtcXHVERjNDLVxcdURGM0ZcXHVERjQ1XXxcXHVEODJGXFx1REM5Q3xcXHVEODM0W1xcdURDMDAtXFx1RENGNVxcdUREMDAtXFx1REQyNlxcdUREMjktXFx1REQ2NFxcdURENkEtXFx1REQ2Q1xcdUREODNcXHVERDg0XFx1REQ4Qy1cXHVEREE5XFx1RERBRS1cXHVEREU4XFx1REUwMC1cXHVERTQxXFx1REU0NVxcdURGMDAtXFx1REY1Nl18XFx1RDgzNltcXHVEQzAwLVxcdURERkZcXHVERTM3LVxcdURFM0FcXHVERTZELVxcdURFNzRcXHVERTc2LVxcdURFODNcXHVERTg1XFx1REU4Nl18XFx1RDgzOFxcdURENEZ8XFx1RDgzQltcXHVEQ0FDXFx1REQyRV18XFx1RDgzQ1tcXHVEQzAwLVxcdURDMkJcXHVEQzMwLVxcdURDOTNcXHVEQ0EwLVxcdURDQUVcXHVEQ0IxLVxcdURDQkZcXHVEQ0MxLVxcdURDQ0ZcXHVEQ0QxLVxcdURDRjVcXHVERDBELVxcdUREQURcXHVEREU2LVxcdURFMDJcXHVERTEwLVxcdURFM0JcXHVERTQwLVxcdURFNDhcXHVERTUwXFx1REU1MVxcdURFNjAtXFx1REU2NVxcdURGMDAtXFx1REZGQV18XFx1RDgzRFtcXHVEQzAwLVxcdURFRDdcXHVERUUwLVxcdURFRUNcXHVERUYwLVxcdURFRkNcXHVERjAwLVxcdURGNzNcXHVERjgwLVxcdURGRDhcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REMwMC1cXHVEQzBCXFx1REMxMC1cXHVEQzQ3XFx1REM1MC1cXHVEQzU5XFx1REM2MC1cXHVEQzg3XFx1REM5MC1cXHVEQ0FEXFx1RENCMFxcdURDQjFcXHVERDAwLVxcdURENzhcXHVERDdBLVxcdUREQ0JcXHVERENELVxcdURFNTNcXHVERTYwLVxcdURFNkRcXHVERTcwLVxcdURFNzRcXHVERTc4LVxcdURFN0FcXHVERTgwLVxcdURFODZcXHVERTkwLVxcdURFQThcXHVERUIwLVxcdURFQjZcXHVERUMwLVxcdURFQzJcXHVERUQwLVxcdURFRDZcXHVERjAwLVxcdURGOTJcXHVERjk0LVxcdURGQ0FdJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdaJyxcbiAgICAgICAgJ2FsaWFzJzogJ1NlcGFyYXRvcicsXG4gICAgICAgICdibXAnOiAnIFxceEEwXFx1MTY4MFxcdTIwMDAtXFx1MjAwQVxcdTIwMjhcXHUyMDI5XFx1MjAyRlxcdTIwNUZcXHUzMDAwJ1xuICAgIH0sXG4gICAge1xuICAgICAgICAnbmFtZSc6ICdabCcsXG4gICAgICAgICdhbGlhcyc6ICdMaW5lX1NlcGFyYXRvcicsXG4gICAgICAgICdibXAnOiAnXFx1MjAyOCdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnWnAnLFxuICAgICAgICAnYWxpYXMnOiAnUGFyYWdyYXBoX1NlcGFyYXRvcicsXG4gICAgICAgICdibXAnOiAnXFx1MjAyOSdcbiAgICB9LFxuICAgIHtcbiAgICAgICAgJ25hbWUnOiAnWnMnLFxuICAgICAgICAnYWxpYXMnOiAnU3BhY2VfU2VwYXJhdG9yJyxcbiAgICAgICAgJ2JtcCc6ICcgXFx4QTBcXHUxNjgwXFx1MjAwMC1cXHUyMDBBXFx1MjAyRlxcdTIwNUZcXHUzMDAwJ1xuICAgIH1cbl07XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMucGFyc2UgPSB2b2lkIDA7XG5mdW5jdGlvbiBkZWNvZGUocywgc2VwID0gJzsnKSB7XG4gICAgcyA9IHMucmVwbGFjZSgvXFxuL2csICcnKTtcbiAgICBsZXQgcG9zID0gMDtcbiAgICBjb25zdCByZWNvcmRzID0gWycnXTtcbiAgICB3aGlsZSAocG9zIDwgcy5sZW5ndGgpIHtcbiAgICAgICAgc3dpdGNoIChzW3Bvc10pIHtcbiAgICAgICAgICAgIGNhc2UgJ1xcXFwnOlxuICAgICAgICAgICAgICAgIHBvcysrO1xuICAgICAgICAgICAgICAgIHJlY29yZHNbMF0gKz0gc1twb3NdO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBzZXA6XG4gICAgICAgICAgICAgICAgcmVjb3Jkcy51bnNoaWZ0KCcnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmVjb3Jkc1swXSArPSBzW3Bvc107XG4gICAgICAgIH1cbiAgICAgICAgcG9zKys7XG4gICAgfVxuICAgIHJldHVybiByZWNvcmRzLnJldmVyc2UoKS5maWx0ZXIocmVjb3JkID0+IHJlY29yZCk7XG59XG5jb25zdCBwcmVmaXhlcyA9IHtcbiAgICBmaWxlRGlyZWN0b3J5OiAnamFicmVmLW1ldGE6IGZpbGVEaXJlY3Rvcnk6JyxcbiAgICBncm91cHN2ZXJzaW9uOiAnamFicmVmLW1ldGE6IGdyb3Vwc3ZlcnNpb246JyxcbiAgICBncm91cHN0cmVlOiAnamFicmVmLW1ldGE6IGdyb3Vwc3RyZWU6JyxcbiAgICBncm91cGluZzogJ2phYnJlZi1tZXRhOiBncm91cGluZzonLFxufTtcbi8qKlxuICogSW1wb3J0IHRoZSBKYWJSZWYgZ3JvdXBzIGZyb20gdGhlIGBAc3RyaW5nYCBjb21tZW50cyBpbiB3aGljaCB0aGV5IHdlcmUgc3RvcmVkLiBZb3Ugd291bGQgdHlwaWNhbGx5IHBhc3MgdGhlIGNvbW1lbnRzIHBhcnNlZCBieSBbW2JpYnRleC5wYXJzZV1dIGluIGhlcmUuXG4gKlxuICogSmFiUmVmIGtub3dzIHNldmVyYWwgZ3JvdXAgdHlwZXMsIGFuZCB0aGlzIHBhcnNlciBwYXJzZXMgbW9zdCwgYnV0IG5vdCBhbGwgb2YgdGhlbTpcbiAqXG4gKiAqIGluZGVwZW5kZW50IGdyb3VwOiB0aGUga2V5cyBsaXN0ZWQgaW4gdGhlIGdyb3VwIGFyZSB0aGUgZW50cmllcyB0aGF0IGFyZSBjb25zaWRlcmVkIHRvIGJlbG9uZyB0byBpdFxuICogKiBpbnRlcnNlY3Rpb246IHRoZSBrZXlzIGxpc3RlZCBpbiB0aGUgZ3JvdXAgYXJlIGNvbnNpZGVyZWQgdG8gYmVsb25nIHRvIHRoZSBncm91cCBpZiB0aGV5J3JlIGFsc28gaW4gdGhlIHBhcmVudCBncm91cFxuICogKiB1bmlvbjogdGhlIGtleXMgbGlzdGVkIGluIHRoZSBncm91cCBhcmUgY29uc2lkZXJlZCB0byBiZWxvbmcgdG8gdGhlIGdyb3VwLCBhbmQgYWxzbyB0aGUga2V5cyB0aGF0IGFyZSBpbiB0aGUgcGFyZW50IGdyb3VwXG4gKiAqIHF1ZXJ5OiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgcGFyc2VyXG4gKi9cbmZ1bmN0aW9uIHBhcnNlKGNvbW1lbnRzKSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgICByb290OiBbXSxcbiAgICAgICAgZ3JvdXBzOiB7fSxcbiAgICAgICAgZmlsZURpcmVjdG9yeTogJycsXG4gICAgICAgIHZlcnNpb246ICcnLFxuICAgIH07XG4gICAgY29uc3QgbGV2ZWxzID0gW107XG4gICAgY29uc3QgZGVjb2RlZCA9IHtcbiAgICAgICAgZmlsZURpcmVjdG9yeTogbnVsbCxcbiAgICAgICAgZ3JvdXBzdmVyc2lvbjogbnVsbCxcbiAgICAgICAgZ3JvdXBzdHJlZTogbnVsbCxcbiAgICAgICAgZ3JvdXBpbmc6IG51bGwsXG4gICAgfTtcbiAgICBmb3IgKGNvbnN0IGNvbW1lbnQgb2YgY29tbWVudHMpIHtcbiAgICAgICAgZm9yIChjb25zdCBbbWV0YSwgcHJlZml4XSBvZiBPYmplY3QuZW50cmllcyhwcmVmaXhlcykpIHtcbiAgICAgICAgICAgIGlmIChjb21tZW50LnN0YXJ0c1dpdGgocHJlZml4KSkge1xuICAgICAgICAgICAgICAgIGRlY29kZWRbbWV0YV0gPSBkZWNvZGUoY29tbWVudC5zdWJzdHJpbmcocHJlZml4Lmxlbmd0aCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJlc3VsdC52ZXJzaW9uID0gZGVjb2RlZC5ncm91cHN2ZXJzaW9uICYmIGRlY29kZWQuZ3JvdXBzdmVyc2lvblswXTtcbiAgICByZXN1bHQuZmlsZURpcmVjdG9yeSA9IGRlY29kZWQuZmlsZURpcmVjdG9yeSAmJiBkZWNvZGVkLmZpbGVEaXJlY3RvcnlbMF07XG4gICAgZm9yIChjb25zdCB0cmVlIG9mIFsnZ3JvdXBzdHJlZScsICdncm91cGluZyddKSB7XG4gICAgICAgIGlmICghZGVjb2RlZFt0cmVlXSlcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBmb3IgKGNvbnN0IGVuY29kZWQgb2YgZGVjb2RlZFt0cmVlXSkge1xuICAgICAgICAgICAgY29uc3QgZmllbGRzID0gZGVjb2RlKGVuY29kZWQpO1xuICAgICAgICAgICAgY29uc3QgbGV2ZWxfdHlwZV9uYW1lID0gZGVjb2RlKGZpZWxkcy5zaGlmdCgpLCAnOicpO1xuICAgICAgICAgICAgY29uc3QgbSA9IC9eKFswLTldKykgKC4rKS8uZXhlYyhsZXZlbF90eXBlX25hbWVbMF0pO1xuICAgICAgICAgICAgaWYgKCFtKVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY29uc3QgbGV2ZWwgPSBwYXJzZUludChtWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBtWzJdOyAvLyB0ZXN0IGZvciBTdGF0aWNHcm91cD9cbiAgICAgICAgICAgIGlmICh0eXBlID09PSAnQWxsRW50cmllc0dyb3VwJylcbiAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gcm9vdFxuICAgICAgICAgICAgY29uc3QgbmFtZSA9IGxldmVsX3R5cGVfbmFtZVsxXTtcbiAgICAgICAgICAgIGNvbnN0IGludGVyc2VjdGlvbiA9IGRlY29kZShmaWVsZHMuc2hpZnQoKSlbMF07XG4gICAgICAgICAgICBjb25zdCBrZXlzID0gdHJlZSA9PT0gJ2dyb3VwaW5nJyA/IFtdIDogZmllbGRzLm1hcChmaWVsZCA9PiBkZWNvZGUoZmllbGQpWzBdKTtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwID0ge1xuICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgZW50cmllczoga2V5cyxcbiAgICAgICAgICAgICAgICBncm91cHM6IFtdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlc3VsdC5ncm91cHNbbmFtZV0gPSByZXN1bHQuZ3JvdXBzW25hbWVdIHx8IGdyb3VwO1xuICAgICAgICAgICAgaWYgKGxldmVscy5sZW5ndGggPCBsZXZlbCkge1xuICAgICAgICAgICAgICAgIGxldmVscy5wdXNoKGdyb3VwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGxldmVsc1tsZXZlbCAtIDFdID0gZ3JvdXA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGV2ZWwgPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucm9vdC5wdXNoKGdyb3VwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IGxldmVsc1tsZXZlbCAtIDJdO1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJzZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJzAnOiAvLyBpbmRlcGVuZGVudFxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJzEnOiAvLyBpbnRlcnNlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmVudHJpZXMgPSBncm91cC5lbnRyaWVzLmZpbHRlcihrZXkgPT4gcGFyZW50LmVudHJpZXMuaW5jbHVkZXMoa2V5KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnMic6IC8vIHVuaW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cC5lbnRyaWVzID0gZ3JvdXAuZW50cmllcy5jb25jYXQocGFyZW50LmVudHJpZXMuZmlsdGVyKGtleSA9PiAhZ3JvdXAuZW50cmllcy5pbmNsdWRlcyhrZXkpKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV2ZWxzW2xldmVsIC0gMl0uZ3JvdXBzLnB1c2goZ3JvdXApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5leHBvcnRzLnBhcnNlID0gcGFyc2U7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1qYWJyZWYuanMubWFwIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmphYnJlZiA9IGV4cG9ydHMuY2h1bmtlciA9IGV4cG9ydHMuYXN0ID0gZXhwb3J0cy5wYXJzZSA9IHZvaWQgMDtcbmNvbnN0IGJpYnRleCA9IHJlcXVpcmUoXCIuL2dyYW1tYXJcIik7XG5jb25zdCBjaHVua2VyXzEgPSByZXF1aXJlKFwiLi9jaHVua2VyXCIpO1xuY29uc3QgdW5pY29kZTJsYXRleF8xID0gcmVxdWlyZShcInVuaWNvZGUybGF0ZXhcIik7XG5jbGFzcyBQYXJzZXJFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcihtZXNzYWdlLCBub2RlKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpOyAvLyAnRXJyb3InIGJyZWFrcyBwcm90b3R5cGUgY2hhaW4gaGVyZVxuICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgbmV3LnRhcmdldC5wcm90b3R5cGUpOyAvLyByZXN0b3JlIHByb3RvdHlwZSBjaGFpblxuICAgICAgICB0aGlzLm5hbWUgPSB0aGlzLmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gICAgfVxufVxuY2xhc3MgVGVYRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgY29uc3RydWN0b3IobWVzc2FnZSwgbm9kZSwgdGV4dCkge1xuICAgICAgICBzdXBlcihtZXNzYWdlKTsgLy8gJ0Vycm9yJyBicmVha3MgcHJvdG90eXBlIGNoYWluIGhlcmVcbiAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHRoaXMsIG5ldy50YXJnZXQucHJvdG90eXBlKTsgLy8gcmVzdG9yZSBwcm90b3R5cGUgY2hhaW5cbiAgICAgICAgdGhpcy5uYW1lID0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgICAgICB0aGlzLm5vZGUgPSBub2RlO1xuICAgICAgICB0aGlzLnRleHQgPSB0ZXh0O1xuICAgIH1cbn1cbmNvbnN0IGNoYXJDYXRlZ29yaWVzID0gcmVxdWlyZShcInhyZWdleHAvdG9vbHMvb3V0cHV0L2NhdGVnb3JpZXNcIik7XG5jb25zdCBjaGFyQ2xhc3MgPSB7XG4gICAgTHU6IGNoYXJDYXRlZ29yaWVzLmZpbHRlcihjYXQgPT4gWydVcHBlcmNhc2VfTGV0dGVyJywgJ1RpdGxlY2FzZV9MZXR0ZXInXS5pbmNsdWRlcyhjYXQuYWxpYXMpKS5tYXAoY2F0ID0+IGNhdC5ibXApLmpvaW4oJycpLFxuICAgIExsOiBjaGFyQ2F0ZWdvcmllcy5maW5kKGNhdCA9PiBjYXQuYWxpYXMgPT09ICdMb3dlcmNhc2VfTGV0dGVyJykuYm1wLFxuICAgIExub3RMdTogY2hhckNhdGVnb3JpZXMuZmlsdGVyKGNhdCA9PiBbJ0xvd2VyY2FzZV9MZXR0ZXInLCAnTW9kaWZpZXJfTGV0dGVyJywgJ090aGVyX0xldHRlcicsICdOb25zcGFjaW5nX01hcmsnLCAnU3BhY2luZ19NYXJrJywgJ0RlY2ltYWxfTnVtYmVyJywgJ0xldHRlcl9OdW1iZXInXS5pbmNsdWRlcyhjYXQuYWxpYXMpKS5tYXAoY2F0ID0+IGNhdC5ibXApLmpvaW4oJycpLFxuICAgIFA6IGNoYXJDYXRlZ29yaWVzLmZpbmQoY2F0ID0+IGNhdC5hbGlhcyA9PT0gJ1B1bmN0dWF0aW9uJykuYm1wLFxuICAgIEw6IGNoYXJDYXRlZ29yaWVzLmZpbmQoY2F0ID0+IGNhdC5hbGlhcyA9PT0gJ0xldHRlcicpLmJtcCxcbiAgICBOOiBjaGFyQ2F0ZWdvcmllcy5maWx0ZXIoY2F0ID0+IFsnRGVjaW1hbF9OdW1iZXInLCAnTGV0dGVyX051bWJlciddLmluY2x1ZGVzKGNhdC5hbGlhcykpLm1hcChjYXQgPT4gY2F0LmJtcCkuam9pbignJyksXG4gICAgQWxwaGFOdW06IGNoYXJDYXRlZ29yaWVzLmZpbHRlcihjYXQgPT4gWydMZXR0ZXInLCAnRGVjaW1hbF9OdW1iZXInLCAnTGV0dGVyX051bWJlciddLmluY2x1ZGVzKGNhdC5hbGlhcykpLm1hcChjYXQgPT4gY2F0LmJtcCkuam9pbignJyksXG4gICAgTEM6IGNoYXJDYXRlZ29yaWVzLmZpbmQoY2F0ID0+IGNhdC5hbGlhcyA9PT0gJ0Nhc2VkX0xldHRlcicpLmJtcCxcbn07XG5jb25zdCBtYXJrZXIgPSB7XG4gICAgYW5kOiAnXFx1MDAwMScsXG4gICAgY29tbWE6ICdcXHUwMDAyJyxcbiAgICBzcGFjZTogJ1xcdTAwMDMnLFxuICAgIGxpdGVyYWw6ICdcXHUwMDA0JyxcbiAgICBtYXJrdXA6ICdcXHUwMDA1JyxcbiAgICByZToge1xuICAgICAgICBhbmQ6IC8uLyxcbiAgICAgICAgY29tbWE6IC8uLyxcbiAgICAgICAgc3BhY2U6IC8uLyxcbiAgICAgICAgbGl0ZXJhbDogLy4vLFxuICAgICAgICBsaXRlcmFsTmFtZTogLy4vLFxuICAgIH0sXG4gICAgY2xlYW4ocykge1xuICAgICAgICByZXR1cm4gcy5yZXBsYWNlKG1hcmtlci5yZS5zcGFjZSwgJyAnKS5yZXBsYWNlKG1hcmtlci5yZS5jb21tYSwgJywgJykucmVwbGFjZShtYXJrZXIucmUubGl0ZXJhbCwgJycpO1xuICAgIH0sXG59O1xubWFya2VyLnJlID0ge1xuICAgIGFuZDogbmV3IFJlZ0V4cChtYXJrZXIuYW5kLCAnZycpLFxuICAgIGNvbW1hOiBuZXcgUmVnRXhwKG1hcmtlci5jb21tYSwgJ2cnKSxcbiAgICBzcGFjZTogbmV3IFJlZ0V4cChtYXJrZXIuc3BhY2UsICdnJyksXG4gICAgbGl0ZXJhbDogbmV3IFJlZ0V4cChtYXJrZXIubGl0ZXJhbCwgJ2cnKSxcbiAgICBsaXRlcmFsTmFtZTogbmV3IFJlZ0V4cChgXiR7bWFya2VyLmxpdGVyYWx9KFteJHttYXJrZXIubGl0ZXJhbH1dKikke21hcmtlci5saXRlcmFsfSRgKSxcbn07XG5jb25zdCBwcmVzZXJ2ZUNhc2UgPSB7XG4gICAgbGVhZGluZ0NhcDogbmV3IFJlZ0V4cChgXlske2NoYXJDbGFzcy5MdX1dWyR7Y2hhckNsYXNzLkxub3RMdX1dK1ske2NoYXJDbGFzcy5QfV0/JGApLFxuICAgIGFsbENhcHM6IG5ldyBSZWdFeHAoYF5bJHtjaGFyQ2xhc3MuTHV9JHtjaGFyQ2xhc3MuTn1dezIsfSRgKSxcbiAgICBhbGxMb3dlcjogbmV3IFJlZ0V4cChgXlske2NoYXJDbGFzcy5MbH0ke2NoYXJDbGFzcy5OfV17Mix9JGApLFxuICAgIGpvaW5lZDogbmV3IFJlZ0V4cChgXlske2NoYXJDbGFzcy5MdX1dWyR7Y2hhckNsYXNzLkxub3RMdX1dKihbLStdWyR7Y2hhckNsYXNzLkx9JHtjaGFyQ2xhc3MuTn1dKykqWyR7Y2hhckNsYXNzLlB9XSokYCksXG4gICAgaGFzVXBwZXI6IG5ldyBSZWdFeHAoYFske2NoYXJDbGFzcy5MdX1dYCksXG4gICAgaGFzTG93ZXI6IG5ldyBSZWdFeHAoYFske2NoYXJDbGFzcy5MbH1dYCksXG4gICAgaXNOdW1iZXI6IC9eWzAtOV0rJC8sXG4gICAgaGFzQWxwaGE6IG5ldyBSZWdFeHAoYFske2NoYXJDbGFzcy5MfV1gKSxcbiAgICBoYXNBbHBoYU51bTogbmV3IFJlZ0V4cChgWyR7Y2hhckNsYXNzLkFscGhhTnVtfV1gKSxcbiAgICBub3RBbHBoYU51bTogbmV3IFJlZ0V4cChgW14ke2NoYXJDbGFzcy5BbHBoYU51bX1dYCwgJ2cnKSxcbiAgICBzZW50ZW5jZVN0YXJ0OiBuZXcgUmVnRXhwKGAoXnwoW1xcdTIwMTQ6PyEuXVxcXFxzKykpWyR7Y2hhckNsYXNzLkx1fV1gLCAnZycpLFxuICAgIG1hcmt1cDogLzxcXC8/c3BhbltePl0qPi9nLFxuICAgIGFjcm9ueW06IG5ldyBSZWdFeHAoYC4qXFxcXC4ke21hcmtlci5tYXJrdXB9Klske2NoYXJDbGFzcy5MdX1dJHttYXJrZXIubWFya3VwfSpcXFxcLiRgKSxcbiAgICBub3RDYXNlU2Vuc2l0aXZlOiBuZXcgUmVnRXhwKGBbXiR7Y2hhckNsYXNzLkxDfV1gKSxcbiAgICBpc0Nhc2VTZW5zaXRpdmU6IG5ldyBSZWdFeHAoYFske2NoYXJDbGFzcy5MQ31dYCksXG4gICAgcXVvdGVkOiAvKFwiW15cIl0rXCIpfCjigJxbXuKAnF0r4oCcKS9nLFxufTtcbmNvbnN0IGZpZWxkcyA9IHtcbiAgICBjcmVhdG9yOiBbXG4gICAgICAgICdhdXRob3InLFxuICAgICAgICAnYm9va2F1dGhvcicsXG4gICAgICAgICdjb2xsYWJvcmF0b3InLFxuICAgICAgICAnY29tbWVudGF0b3InLFxuICAgICAgICAnZGlyZWN0b3InLFxuICAgICAgICAnZWRpdG9yJyxcbiAgICAgICAgJ2VkaXRvcmEnLFxuICAgICAgICAnZWRpdG9yYicsXG4gICAgICAgICdlZGl0b3JzJyxcbiAgICAgICAgJ2hvbGRlcicsXG4gICAgICAgICdzY3JpcHR3cml0ZXInLFxuICAgICAgICAndHJhbnNsYXRvcicsXG4gICAgXSxcbiAgICB0aXRsZTogW1xuICAgICAgICAndGl0bGUnLFxuICAgICAgICAnc2VyaWVzJyxcbiAgICAgICAgJ3Nob3J0dGl0bGUnLFxuICAgICAgICAnYm9va3RpdGxlJyxcbiAgICAgICAgJ3R5cGUnLFxuICAgICAgICAnb3JpZ3RpdGxlJyxcbiAgICAgICAgJ21haW50aXRsZScsXG4gICAgICAgICdldmVudHRpdGxlJyxcbiAgICBdLFxuICAgIHVubmVzdDogW1xuICAgICAgICAncHVibGlzaGVyJyxcbiAgICAgICAgJ2xvY2F0aW9uJyxcbiAgICBdLFxuICAgIHZlcmJhdGltOiBbXG4gICAgICAgICd1cmwnLFxuICAgICAgICAnZG9pJyxcbiAgICAgICAgJ2ZpbGUnLFxuICAgICAgICAnZmlsZXMnLFxuICAgICAgICAnZXByaW50JyxcbiAgICAgICAgJ3ZlcmJhJyxcbiAgICAgICAgJ3ZlcmJiJyxcbiAgICAgICAgJ3ZlcmJjJyxcbiAgICAgICAgJ2dyb3VwcycsXG4gICAgXSxcbiAgICBodG1sOiBbXG4gICAgICAgICdhbm5vdGF0aW9uJyxcbiAgICAgICAgJ2NvbW1lbnQnLFxuICAgICAgICAnYW5ub3RlJyxcbiAgICAgICAgJ3JldmlldycsXG4gICAgICAgICdub3RlcycsXG4gICAgICAgICdub3RlJyxcbiAgICBdLFxuICAgIHVuYWJicmV2OiBbXG4gICAgICAgICdqb3VybmFsJyxcbiAgICAgICAgJ2pvdXJuYWx0aXRsZScsXG4gICAgICAgICdqb3VybmFsLWZ1bGwnLFxuICAgIF0sXG59O1xuY29uc3QgZW5nbGlzaCA9IFtcbiAgICAnYW1lcmljYW4nLFxuICAgICdicml0aXNoJyxcbiAgICAnY2FuYWRpYW4nLFxuICAgICdlbmdsaXNoJyxcbiAgICAnYXVzdHJhbGlhbicsXG4gICAgJ25ld3plYWxhbmQnLFxuICAgICd1c2VuZ2xpc2gnLFxuICAgICd1a2VuZ2xpc2gnLFxuICAgICdlbicsXG4gICAgJ2VuZycsXG4gICAgJ2VuLWF1JyxcbiAgICAnZW4tYnonLFxuICAgICdlbi1jYScsXG4gICAgJ2VuLWNiJyxcbiAgICAnZW4tZ2InLFxuICAgICdlbi1pZScsXG4gICAgJ2VuLWptJyxcbiAgICAnZW4tbnonLFxuICAgICdlbi1waCcsXG4gICAgJ2VuLXR0JyxcbiAgICAnZW4tdXMnLFxuICAgICdlbi16YScsXG4gICAgJ2VuLXp3JyxcbiAgICAnYW5nbGFpcycsXG5dO1xuY2xhc3MgUGFyc2VyIHtcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zID0ge30pIHtcbiAgICAgICAgdGhpcy5pbl9wcmVhbWJsZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnByZWFtYmxlID0gW107XG4gICAgICAgIHRoaXMubG9nID0gZnVuY3Rpb24gKHN0cikgeyB9OyAvLyB0c2xpbnQ6ZGlzYWJsZS1saW5lIHZhcmlhYmxlLW5hbWUgb25seS1hcnJvdy1mdW5jdGlvbnMgbm8tZW1wdHlcbiAgICAgICAgZm9yIChjb25zdCBbb3B0aW9uLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob3B0aW9ucykpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgICAgIGRlbGV0ZSBvcHRpb25zW29wdGlvbl07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMuZXJyb3JIYW5kbGVyID09PSBmYWxzZSkge1xuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lIG9ubHktYXJyb3ctZnVuY3Rpb25zIG5vLWVtcHR5XG4gICAgICAgICAgICBvcHRpb25zLmVycm9ySGFuZGxlciA9IGZ1bmN0aW9uIChlcnIpIHsgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChvcHRpb25zLmVycm9ySGFuZGxlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUgb25seS1hcnJvdy1mdW5jdGlvbnNcbiAgICAgICAgICAgIG9wdGlvbnMuZXJyb3JIYW5kbGVyID0gZnVuY3Rpb24gKGVycikgeyB0aHJvdyBlcnI7IH07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLnNlbnRlbmNlQ2FzZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICBvcHRpb25zLnNlbnRlbmNlQ2FzZSA9IG9wdGlvbnMuc2VudGVuY2VDYXNlID8gZW5nbGlzaCA6IFtdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgb3B0aW9ucy5zZW50ZW5jZUNhc2UgPSBvcHRpb25zLnNlbnRlbmNlQ2FzZSB8fCBlbmdsaXNoO1xuICAgICAgICB9XG4gICAgICAgIGlmICghb3B0aW9ucy5zdHJpbmdzKVxuICAgICAgICAgICAgb3B0aW9ucy5zdHJpbmdzID0ge307XG4gICAgICAgIGlmICghb3B0aW9ucy51bmFiYnJldmlhdGUpXG4gICAgICAgICAgICBvcHRpb25zLnVuYWJicmV2aWF0ZSA9IHt9O1xuICAgICAgICBpZiAob3B0aW9ucy5yYXcpIHtcbiAgICAgICAgICAgIG9wdGlvbnMuc2VudGVuY2VDYXNlID0gZmFsc2U7XG4gICAgICAgICAgICBvcHRpb25zLmNhc2VQcm90ZWN0aW9uID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7IGNhc2VQcm90ZWN0aW9uOiAnYXMtbmVlZGVkJywgdmVyYmF0aW1GaWVsZHM6IFsvXmNpdGV1bGlrZS1saW5rb3V0LVswLTldKyQvLCAuLi5maWVsZHMudmVyYmF0aW1dLCB2ZXJiYXRpbUNvbW1hbmRzOiBbJ3VybCcsICdocmVmJ10sIHVubmVzdEZpZWxkczogWy4uLmZpZWxkcy50aXRsZSwgLi4uZmllbGRzLnVubmVzdCwgLi4uZmllbGRzLnZlcmJhdGltXSwgdW5uZXN0TW9kZTogJ3Vud3JhcCcsIGh0bWxGaWVsZHM6IGZpZWxkcy5odG1sLCBndWVzc0FscmVhZHlTZW50ZW5jZUNhc2VkOiB0cnVlLCBtYXJrdXA6IHt9IH0sIG9wdGlvbnMpO1xuICAgICAgICBjb25zdCBtYXJrdXBfZGVmYXVsdHMgPSB7XG4gICAgICAgICAgICBlbnF1b3RlOiB7IG9wZW46ICdcXHUyMDFjJywgY2xvc2U6ICdcXHUyMDFkJyB9LFxuICAgICAgICAgICAgc3ViOiB7IG9wZW46ICc8c3ViPicsIGNsb3NlOiAnPC9zdWI+JyB9LFxuICAgICAgICAgICAgc3VwOiB7IG9wZW46ICc8c3VwPicsIGNsb3NlOiAnPC9zdXA+JyB9LFxuICAgICAgICAgICAgYm9sZDogeyBvcGVuOiAnPGI+JywgY2xvc2U6ICc8L2I+JyB9LFxuICAgICAgICAgICAgaXRhbGljczogeyBvcGVuOiAnPGk+JywgY2xvc2U6ICc8L2k+JyB9LFxuICAgICAgICAgICAgc21hbGxDYXBzOiB7IG9wZW46ICc8c3BhbiBzdHlsZT1cImZvbnQtdmFyaWFudDpzbWFsbC1jYXBzO1wiPicsIGNsb3NlOiAnPC9zcGFuPicgfSxcbiAgICAgICAgICAgIGNhc2VQcm90ZWN0OiB7IG9wZW46ICc8c3BhbiBjbGFzcz1cIm5vY2FzZVwiPicsIGNsb3NlOiAnPC9zcGFuPicgfSxcbiAgICAgICAgICAgIHJvbWFuOiB7IG9wZW46ICcnLCBjbG9zZTogJycgfSxcbiAgICAgICAgICAgIGZpeGVkV2lkdGg6IHsgb3BlbjogJycsIGNsb3NlOiAnJyB9LFxuICAgICAgICB9O1xuICAgICAgICAvLyBwYXRjaCBpbiBiZWNhdXNlIHRoZSBvcHRpb25zIHdpbGwgbGlrZWx5IG5vdCBoYXZlIGVucXVvdGUgYW5kIGNhc2UtcHJvdGVjdFxuICAgICAgICBmb3IgKGNvbnN0IFttYXJrdXAsIHsgb3BlbiwgY2xvc2UgfV0gb2YgT2JqZWN0LmVudHJpZXMobWFya3VwX2RlZmF1bHRzKSkge1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLm1hcmt1cFttYXJrdXBdID0gdGhpcy5vcHRpb25zLm1hcmt1cFttYXJrdXBdIHx8IHsgb3BlbiwgY2xvc2UgfTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IGkgb2YgWzEsIDIsIDMsIDRdKSB7IC8vIHRzbGludDpkaXNhYmxlLWxpbmU6bm8tbWFnaWMtbnVtYmVyc1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLm1hcmt1cFtgaCR7aX1gXSA9IHRoaXMub3B0aW9ucy5tYXJrdXBbYGgke2l9YF0gfHwgeyBvcGVuOiBgPGgke2l9PmAsIGNsb3NlOiBgPC9oJHtpfT5gIH07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51bnJlc29sdmVkU3RyaW5ncyA9IHt9O1xuICAgICAgICB0aGlzLmVycm9ycyA9IFtdO1xuICAgICAgICB0aGlzLmNvbW1lbnRzID0gW107XG4gICAgICAgIHRoaXMuZW50cmllcyA9IFtdO1xuICAgICAgICB0aGlzLnN0cmluZ3MgPSB7fTtcbiAgICAgICAgdGhpcy5uZXdjb21tYW5kcyA9IHt9O1xuICAgICAgICB0aGlzLmRlZmF1bHRfc3RyaW5ncyA9IHtcbiAgICAgICAgICAgIEpBTjogW3RoaXMudGV4dCgnMDEnKV0sXG4gICAgICAgICAgICBGRUI6IFt0aGlzLnRleHQoJzAyJyldLFxuICAgICAgICAgICAgTUFSOiBbdGhpcy50ZXh0KCcwMycpXSxcbiAgICAgICAgICAgIEFQUjogW3RoaXMudGV4dCgnMDQnKV0sXG4gICAgICAgICAgICBNQVk6IFt0aGlzLnRleHQoJzA1JyldLFxuICAgICAgICAgICAgSlVOOiBbdGhpcy50ZXh0KCcwNicpXSxcbiAgICAgICAgICAgIEpVTDogW3RoaXMudGV4dCgnMDcnKV0sXG4gICAgICAgICAgICBBVUc6IFt0aGlzLnRleHQoJzA4JyldLFxuICAgICAgICAgICAgU0VQOiBbdGhpcy50ZXh0KCcwOScpXSxcbiAgICAgICAgICAgIE9DVDogW3RoaXMudGV4dCgnMTAnKV0sXG4gICAgICAgICAgICBOT1Y6IFt0aGlzLnRleHQoJzExJyldLFxuICAgICAgICAgICAgREVDOiBbdGhpcy50ZXh0KCcxMicpXSxcbiAgICAgICAgICAgIEFDTUNTOiBbdGhpcy50ZXh0KCdBQ00gQ29tcHV0aW5nIFN1cnZleXMnKV0sXG4gICAgICAgICAgICBBQ1RBOiBbdGhpcy50ZXh0KCdBY3RhIEluZm9ybWF0aWNhJyldLFxuICAgICAgICAgICAgQ0FDTTogW3RoaXMudGV4dCgnQ29tbXVuaWNhdGlvbnMgb2YgdGhlIEFDTScpXSxcbiAgICAgICAgICAgIElCTUpSRDogW3RoaXMudGV4dCgnSUJNIEpvdXJuYWwgb2YgUmVzZWFyY2ggYW5kIERldmVsb3BtZW50JyldLFxuICAgICAgICAgICAgSUJNU0o6IFt0aGlzLnRleHQoJ0lCTSBTeXN0ZW1zIEpvdXJuYWwnKV0sXG4gICAgICAgICAgICBJRUVFU0U6IFt0aGlzLnRleHQoJ0lFRUUgVHJhbnNhY3Rpb25zIG9uIFNvZnR3YXJlIEVuZ2luZWVyaW5nJyldLFxuICAgICAgICAgICAgSUVFRVRDOiBbdGhpcy50ZXh0KCdJRUVFIFRyYW5zYWN0aW9ucyBvbiBDb21wdXRlcnMnKV0sXG4gICAgICAgICAgICBJRUVFVENBRDogW3RoaXMudGV4dCgnSUVFRSBUcmFuc2FjdGlvbnMgb24gQ29tcHV0ZXItQWlkZWQgRGVzaWduIG9mIEludGVncmF0ZWQgQ2lyY3VpdHMnKV0sXG4gICAgICAgICAgICBJUEw6IFt0aGlzLnRleHQoJ0luZm9ybWF0aW9uIFByb2Nlc3NpbmcgTGV0dGVycycpXSxcbiAgICAgICAgICAgIEpBQ006IFt0aGlzLnRleHQoJ0pvdXJuYWwgb2YgdGhlIEFDTScpXSxcbiAgICAgICAgICAgIEpDU1M6IFt0aGlzLnRleHQoJ0pvdXJuYWwgb2YgQ29tcHV0ZXIgYW5kIFN5c3RlbSBTY2llbmNlcycpXSxcbiAgICAgICAgICAgIFNDUDogW3RoaXMudGV4dCgnU2NpZW5jZSBvZiBDb21wdXRlciBQcm9ncmFtbWluZycpXSxcbiAgICAgICAgICAgIFNJQ09NUDogW3RoaXMudGV4dCgnU0lBTSBKb3VybmFsIG9uIENvbXB1dGluZycpXSxcbiAgICAgICAgICAgIFRPQ1M6IFt0aGlzLnRleHQoJ0FDTSBUcmFuc2FjdGlvbnMgb24gQ29tcHV0ZXIgU3lzdGVtcycpXSxcbiAgICAgICAgICAgIFRPRFM6IFt0aGlzLnRleHQoJ0FDTSBUcmFuc2FjdGlvbnMgb24gRGF0YWJhc2UgU3lzdGVtcycpXSxcbiAgICAgICAgICAgIFRPRzogW3RoaXMudGV4dCgnQUNNIFRyYW5zYWN0aW9ucyBvbiBHcmFwaGljcycpXSxcbiAgICAgICAgICAgIFRPTVM6IFt0aGlzLnRleHQoJ0FDTSBUcmFuc2FjdGlvbnMgb24gTWF0aGVtYXRpY2FsIFNvZnR3YXJlJyldLFxuICAgICAgICAgICAgVE9PSVM6IFt0aGlzLnRleHQoJ0FDTSBUcmFuc2FjdGlvbnMgb24gT2ZmaWNlIEluZm9ybWF0aW9uIFN5c3RlbXMnKV0sXG4gICAgICAgICAgICBUT1BMQVM6IFt0aGlzLnRleHQoJ0FDTSBUcmFuc2FjdGlvbnMgb24gUHJvZ3JhbW1pbmcgTGFuZ3VhZ2VzIGFuZCBTeXN0ZW1zJyldLFxuICAgICAgICAgICAgVENTOiBbdGhpcy50ZXh0KCdUaGVvcmV0aWNhbCBDb21wdXRlciBTY2llbmNlJyldLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBhc3QoaW5wdXQsIGNsZWFuID0gdHJ1ZSkge1xuICAgICAgICBjb25zdCBfYXN0ID0gW107XG4gICAgICAgIGZvciAoY29uc3QgY2h1bmsgb2YgY2h1bmtlcl8xLnBhcnNlKGlucHV0KSkge1xuICAgICAgICAgICAgbGV0IGNodW5rX2FzdCA9IGJpYnRleC5wYXJzZShjaHVuay50ZXh0LCBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHRoaXMub3B0aW9ucyksIHsgY29tYmluaW5nRGlhY3JpdGljczogdW5pY29kZTJsYXRleF8xLmRpYWNyaXRpY3MuY29tbWFuZHMgfSkpO1xuICAgICAgICAgICAgaWYgKGNsZWFuKVxuICAgICAgICAgICAgICAgIGNodW5rX2FzdCA9IHRoaXMuY2xlYW4oY2h1bmtfYXN0KTtcbiAgICAgICAgICAgIF9hc3QucHVzaChjaHVua19hc3QpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfYXN0O1xuICAgIH1cbiAgICBwYXJzZShpbnB1dCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmFzeW5jID8gdGhpcy5wYXJzZUFzeW5jKGlucHV0KSA6IHRoaXMucGFyc2VTeW5jKGlucHV0KTtcbiAgICB9XG4gICAgcGFyc2VTeW5jKGlucHV0KSB7XG4gICAgICAgIGZvciAoY29uc3QgY2h1bmsgb2YgY2h1bmtlcl8xLnBhcnNlKGlucHV0KSkge1xuICAgICAgICAgICAgdGhpcy5wYXJzZUNodW5rKGNodW5rKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZWQoKTtcbiAgICB9XG4gICAgYXN5bmMgcGFyc2VBc3luYyhpbnB1dCkge1xuICAgICAgICBmb3IgKGNvbnN0IGNodW5rIG9mIGF3YWl0IGNodW5rZXJfMS5wYXJzZShpbnB1dCwgeyBhc3luYzogdHJ1ZSB9KSkge1xuICAgICAgICAgICAgdGhpcy5wYXJzZUNodW5rKGNodW5rKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZWQoKTtcbiAgICB9XG4gICAgcGFyc2VkKCkge1xuICAgICAgICB0aGlzLmZpZWxkID0gbnVsbDtcbiAgICAgICAgY29uc3Qgc3RyaW5ncyA9IHt9O1xuICAgICAgICB0aGlzLmNsZWFuaW5nID0geyB0eXBlOiAnb3RoZXInIH07XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuc3RyaW5ncykpIHtcbiAgICAgICAgICAgIHRoaXMuZmllbGQgPSB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ0BzdHJpbmcnLFxuICAgICAgICAgICAgICAgIHRleHQ6ICcnLFxuICAgICAgICAgICAgICAgIGxldmVsOiAwLFxuICAgICAgICAgICAgICAgIHByZXNlcnZlUmFuZ2VzOiBudWxsLFxuICAgICAgICAgICAgICAgIHdvcmRzOiB7XG4gICAgICAgICAgICAgICAgICAgIHVwcGVyOiAwLFxuICAgICAgICAgICAgICAgICAgICBsb3dlcjogMCxcbiAgICAgICAgICAgICAgICAgICAgb3RoZXI6IDAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLmNvbnZlcnQodGhpcy5jbGVhbih2YWx1ZSkpO1xuICAgICAgICAgICAgc3RyaW5nc1trZXldID0gdGhpcy5maWVsZC50ZXh0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBlcnJvcnM6IHRoaXMuZXJyb3JzLFxuICAgICAgICAgICAgZW50cmllczogdGhpcy5lbnRyaWVzLFxuICAgICAgICAgICAgY29tbWVudHM6IHRoaXMuY29tbWVudHMsXG4gICAgICAgICAgICBzdHJpbmdzLFxuICAgICAgICAgICAgcHJlYW1ibGU6IHRoaXMucHJlYW1ibGUsXG4gICAgICAgIH07XG4gICAgfVxuICAgIHByZXNlcnZlKHN0YXJ0LCBlbmQsIHJlYXNvbikge1xuICAgICAgICBpZiAoIXRoaXMuZmllbGQucHJlc2VydmVSYW5nZXMpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICghZW5kKSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkLnByZXNlcnZlUmFuZ2VzID0gbnVsbDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvKlxuICAgICAgICB0aGlzLmZpZWxkLnByZXNlcnZlUmFuZ2VzID0gdGhpcy5maWVsZC5wcmVzZXJ2ZVJhbmdlcy5maWx0ZXIocmFuZ2UgPT4gcmFuZ2Uuc3RhcnQgPCBzdGFydCB8fCByYW5nZS5lbmQgPiBlbmQpXG4gICAgICAgIGlmICh0aGlzLmZpZWxkLnByZXNlcnZlUmFuZ2VzLmZpbmQocmFuZ2UgPT4gcmFuZ2Uuc3RhcnQgPD0gc3RhcnQgJiYgcmFuZ2UuZW5kID49IGVuZCkpIHJldHVyblxuICAgICAgICAqL1xuICAgICAgICAvKlxuICAgICAgICBpZiAodGhpcy5maWVsZC5wcmVzZXJ2ZVJhbmdlcyAmJiB0aGlzLmZpZWxkLnByZXNlcnZlUmFuZ2VzLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IGxhc3QgPSB0aGlzLmZpZWxkLnByZXNlcnZlUmFuZ2VzW3RoaXMuZmllbGQucHJlc2VydmVSYW5nZXMubGVuZ3RoIC0gMV1cbiAgICAgICAgICBpZiAoc3RhcnQgPCBsYXN0LnN0YXJ0KSB0aHJvdyBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkoey4uLmxhc3QsIG5ldzogeyBzdGFydCwgZW5kLCByZWFzb24gfSwgdGV4dDogdGhpcy5maWVsZC50ZXh0fSkpXG4gICAgICAgIH1cbiAgICAgICAgKi9cbiAgICAgICAgdGhpcy5maWVsZC5wcmVzZXJ2ZVJhbmdlcy5wdXNoKHsgc3RhcnQsIGVuZCwgcmVhc29uIH0pO1xuICAgIH1cbiAgICBwYXJzZUNodW5rKGNodW5rKSB7XG4gICAgICAgIHRoaXMuY2h1bmsgPSBjaHVuay50ZXh0O1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGV0IGJpYiA9IGJpYnRleC5wYXJzZShjaHVuay50ZXh0LCBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHRoaXMub3B0aW9ucyksIHsgY29tYmluaW5nRGlhY3JpdGljczogdW5pY29kZTJsYXRleF8xLmRpYWNyaXRpY3MuY29tbWFuZHMgfSkpO1xuICAgICAgICAgICAgaWYgKGJpYi5raW5kICE9PSAnQmlibGlvZ3JhcGh5JylcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5zaG93KGJpYikpO1xuICAgICAgICAgICAgYmliID0gdGhpcy5jbGVhbihiaWIpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBlbnRpdHkgb2YgYmliLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChlbnRpdHkua2luZCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdFbnRyeSc6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ0JyYWNlZENvbW1lbnQnOlxuICAgICAgICAgICAgICAgICAgICBjYXNlICdMaW5lQ29tbWVudCc6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ1ByZWFtYmxlRXhwcmVzc2lvbic6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnZlcnQoZW50aXR5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdTdHJpbmdEZWNsYXJhdGlvbic6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ05vbkVudHJ5VGV4dCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYmliO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGlmICghZXJyLmxvY2F0aW9uKVxuICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JzLnB1c2goe1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGVyci5tZXNzYWdlLFxuICAgICAgICAgICAgICAgIGxpbmU6IGVyci5sb2NhdGlvbi5zdGFydC5saW5lICsgY2h1bmsub2Zmc2V0LmxpbmUsXG4gICAgICAgICAgICAgICAgY29sdW1uOiBlcnIubG9jYXRpb24uc3RhcnQuY29sdW1uLFxuICAgICAgICAgICAgICAgIHNvdXJjZTogdGhpcy5jaHVuayxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc2hvdyhvKSB7XG4gICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZSBwcmVmZXItdGVtcGxhdGVcbiAgICAgICAgbGV0IHRleHQgPSBKU09OLnN0cmluZ2lmeShvKTtcbiAgICAgICAgaWYgKHRoaXMuY2h1bmspXG4gICAgICAgICAgICB0ZXh0ICs9ICdcXG4nICsgdGhpcy5jaHVuay50cmltKCk7XG4gICAgICAgIHJldHVybiB0ZXh0O1xuICAgIH1cbiAgICB0ZXh0KHZhbHVlID0gJycpIHtcbiAgICAgICAgcmV0dXJuIHsga2luZDogJ1RleHQnLCB2YWx1ZSwgbW9kZTogJ3RleHQnIH07XG4gICAgfVxuICAgIGVycm9yKGVyciwgcmV0dXJudmFsdWUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbnMuZXJyb3JIYW5kbGVyID09PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLmVycm9ySGFuZGxlcihlcnIpO1xuICAgICAgICByZXR1cm4gcmV0dXJudmFsdWU7XG4gICAgfVxuICAgIGNvbmRlbnNlKG5vZGUpIHtcbiAgICAgICAgLy8gYXBwbHkgY2xlYW5pbmcgdG8gcmVzdWx0aW5nIGNoaWxkcmVuXG4gICAgICAgIG5vZGUudmFsdWUgPSBub2RlLnZhbHVlLm1hcChjaGlsZCA9PiB0aGlzLmNsZWFuKGNoaWxkKSk7XG4gICAgICAgIC8vIHVucGFjayByZWR1bmRhbnQgYmxvY2tzXG4gICAgICAgIG5vZGUudmFsdWUgPSBub2RlLnZhbHVlLnJlZHVjZSgoYWNjLCBjaGlsZCwgaSkgPT4ge1xuICAgICAgICAgICAgaWYgKGNoaWxkLmtpbmQgPT09ICdCbG9jaycgJiYgIWNoaWxkLmNhc2UgJiYgT2JqZWN0LmtleXMoY2hpbGQubWFya3VwKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBhY2MgPSBhY2MuY29uY2F0KGNoaWxkLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGFjYy5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIFtdKTtcbiAgICAgICAgLy8gY29uZGVuc2UgdGV4dCBub2RlcyB0byBtYWtlIHdob2xlIHdvcmRzIGZvciBzZW50ZW5jZSBjYXNpbmdcbiAgICAgICAgbm9kZS52YWx1ZSA9IG5vZGUudmFsdWUucmVkdWNlKChhY2MsIGNoaWxkLCBpKSA9PiB7XG4gICAgICAgICAgICBpZiAoYWNjLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGFjYy5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgbGFzdCA9IGFjY1thY2MubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBjb25zdCBuZXh0ID0gbm9kZS52YWx1ZVtpICsgMV07XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmNhc2VQcm90ZWN0aW9uID09PSAnc3RyaWN0JyAmJiB0aGlzLm9ubHlDYXNlUHJvdGVjdGVkKGxhc3QpICYmIGNoaWxkLmtpbmQgPT09ICdUZXh0JyAmJiAhY2hpbGQudmFsdWUubWF0Y2gocHJlc2VydmVDYXNlLmlzQ2FzZVNlbnNpdGl2ZSkgJiYgdGhpcy5vbmx5Q2FzZVByb3RlY3RlZChuZXh0KSkge1xuICAgICAgICAgICAgICAgIGxhc3QudmFsdWUucHVzaChjaGlsZCk7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGxhc3Quc291cmNlO1xuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGFzdC5raW5kID09PSAnQmxvY2snICYmIGNoaWxkLmtpbmQgPT09ICdCbG9jaycgJiYgT2JqZWN0LmtleXMobGFzdC5tYXJrdXApLnNvcnQoKS5qb2luKCcvJykgPT09IE9iamVjdC5rZXlzKGNoaWxkLm1hcmt1cCkuc29ydCgpLmpvaW4oJy8nKSkge1xuICAgICAgICAgICAgICAgIGxhc3QudmFsdWUgPSBsYXN0LnZhbHVlLmNvbmNhdChjaGlsZC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGxhc3Quc291cmNlO1xuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobGFzdC5raW5kID09PSAnVGV4dCcgJiYgY2hpbGQua2luZCA9PT0gJ1RleHQnICYmIGxhc3QubW9kZSA9PT0gY2hpbGQubW9kZSkge1xuICAgICAgICAgICAgICAgIGxhc3QudmFsdWUgKz0gY2hpbGQudmFsdWU7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGxhc3Quc291cmNlO1xuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhY2MucHVzaChjaGlsZCk7XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCBbXSk7XG4gICAgfVxuICAgIG9ubHlDYXNlUHJvdGVjdGVkKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIChub2RlID09PSBudWxsIHx8IG5vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG5vZGUua2luZCkgPT09ICdCbG9jaycgJiYgbm9kZS5jYXNlID09PSAncHJvdGVjdCcgJiYgT2JqZWN0LmtleXMobm9kZS5tYXJrdXApLmpvaW4oJy8nKSA9PT0gJyc7XG4gICAgfVxuICAgIGFyZ3VtZW50KG5vZGUsIGtpbmQpIHtcbiAgICAgICAgaWYgKCFub2RlLmFyZ3VtZW50cyB8fCAhbm9kZS5hcmd1bWVudHMucmVxdWlyZWQubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuIChraW5kID09PSAnbm9uZScpO1xuICAgICAgICAvLyBleHBlY3QgJ24nIHRleHQgYXJndW1lbnRzXG4gICAgICAgIGlmICh0eXBlb2Yga2luZCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIGlmIChub2RlLmFyZ3VtZW50cy5yZXF1aXJlZC5sZW5ndGggIT09IGtpbmQpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuIG5vZGUuYXJndW1lbnRzLnJlcXVpcmVkO1xuICAgICAgICB9XG4gICAgICAgIC8vIHJldHVybiBmaXJzdCBhcmd1bWVudCBpZiBpdCdzIHRoZSBvbmx5IG9uZVxuICAgICAgICBpZiAobm9kZS5hcmd1bWVudHMucmVxdWlyZWQubGVuZ3RoICE9PSAxKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAvLyBsb29zZSBjaGVja2luZyBmb3IgdGV4dFxuICAgICAgICBpZiAoa2luZCA9PT0gJ3RleHQnKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdCA9IG5vZGUuYXJndW1lbnRzLnJlcXVpcmVkWzBdO1xuICAgICAgICAgICAgaWYgKGZpcnN0LmtpbmQgPT09ICdCbG9jaycgJiYgZmlyc3QudmFsdWUubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZpcnN0LnZhbHVlWzBdLmtpbmQgPT09ICdUZXh0JylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0LnZhbHVlWzBdLnZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gZmFsbCBiYWNrIHRvIHN0cmljdCBraW5kIGNoZWNrXG4gICAgICAgICAgICBraW5kID0gJ1RleHQnO1xuICAgICAgICB9XG4gICAgICAgIC8vIHJldHVybiBmaXJzdCBhcmd1bWVudCBpZiBpdCdzIHRoZSBvbmx5IG9uZSBhbmQgaXMgb2YgdGhlIHNwZWNpZmllZCBraW5kXG4gICAgICAgIGlmIChub2RlLmFyZ3VtZW50cy5yZXF1aXJlZC5sZW5ndGggIT09IDEgfHwgbm9kZS5hcmd1bWVudHMucmVxdWlyZWRbMF0ua2luZCAhPT0ga2luZClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgc3dpdGNoIChraW5kKSB7XG4gICAgICAgICAgICBjYXNlICdUZXh0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZS5hcmd1bWVudHMucmVxdWlyZWRbMF0udmFsdWU7XG4gICAgICAgICAgICBjYXNlICdSZWd1bGFyQ29tbWFuZCc6XG4gICAgICAgICAgICBjYXNlICdCbG9jayc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUuYXJndW1lbnRzLnJlcXVpcmVkWzBdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY2xlYW4obm9kZSkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShub2RlKSlcbiAgICAgICAgICAgIHJldHVybiBub2RlLm1hcChjaGlsZCA9PiB0aGlzLmNsZWFuKGNoaWxkKSk7XG4gICAgICAgIGRlbGV0ZSBub2RlLmxvYztcbiAgICAgICAgc3dpdGNoIChub2RlLmtpbmQpIHtcbiAgICAgICAgICAgIGNhc2UgJ0lubGluZU1hdGgnOlxuICAgICAgICAgICAgY2FzZSAnRGlzcGxheU1hdGgnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuX2Jsb2NrKG5vZGUpO1xuICAgICAgICAgICAgY2FzZSAnRW52aXJvbm1lbnQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuX2Vudmlyb25tZW50KG5vZGUpO1xuICAgICAgICAgICAgY2FzZSAnQmxvY2snOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuX2Jsb2NrKG5vZGUpO1xuICAgICAgICAgICAgY2FzZSAnQmlibGlvZ3JhcGh5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbl9iaWIobm9kZSk7XG4gICAgICAgICAgICBjYXNlICdSZWd1bGFyQ29tbWFuZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW5fY29tbWFuZChub2RlKTtcbiAgICAgICAgICAgIGNhc2UgJ0RpYWNyaXRpY0NvbW1hbmQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuX2RpYWNyaXRpYyhub2RlKTtcbiAgICAgICAgICAgIGNhc2UgJ0VudHJ5JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbl9lbnRyeShub2RlKTtcbiAgICAgICAgICAgIGNhc2UgJ0ZpZWxkJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLnJhdyA/IG5vZGUgOiB0aGlzLmNsZWFuX2ZpZWxkKG5vZGUpO1xuICAgICAgICAgICAgY2FzZSAnU3RyaW5nRGVjbGFyYXRpb24nOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuX3N0cmluZ2RlY2wobm9kZSk7XG4gICAgICAgICAgICBjYXNlICdTdHJpbmdSZWZlcmVuY2UnOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuX3N0cmluZ3JlZihub2RlKTtcbiAgICAgICAgICAgIGNhc2UgJ1N1YnNjcmlwdENvbW1hbmQnOlxuICAgICAgICAgICAgY2FzZSAnU3VwZXJzY3JpcHRDb21tYW5kJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbl9zY3JpcHQobm9kZSk7XG4gICAgICAgICAgICBjYXNlICdTeW1ib2xDb21tYW5kJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbl9zeW1ib2wobm9kZSk7XG4gICAgICAgICAgICBjYXNlICdQcmVhbWJsZUV4cHJlc3Npb24nOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuX3ByZWFtYmxlKG5vZGUpO1xuICAgICAgICAgICAgY2FzZSAnTnVtYmVyJzpcbiAgICAgICAgICAgIGNhc2UgJ1RleHQnOlxuICAgICAgICAgICAgY2FzZSAnQnJhY2VkQ29tbWVudCc6XG4gICAgICAgICAgICBjYXNlICdMaW5lQ29tbWVudCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yKG5ldyBQYXJzZXJFcnJvcihgbm8gY2xlYW51cCBtZXRob2QgZm9yICR7dGhpcy5zaG93KG5vZGUpfWAsIG5vZGUpLCB0aGlzLnRleHQoKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2xlYW5fcHJlYW1ibGUobm9kZSkge1xuICAgICAgICB0aGlzLmluX3ByZWFtYmxlID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgY2xlYW4gPSB0aGlzLmNsZWFuKG5vZGUudmFsdWUpO1xuICAgICAgICB0aGlzLmluX3ByZWFtYmxlID0gZmFsc2U7XG4gICAgICAgIHJldHVybiBjbGVhbjtcbiAgICB9XG4gICAgY2xlYW5fYmliKG5vZGUpIHtcbiAgICAgICAgbm9kZS5jaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW4uZmlsdGVyKGNoaWxkID0+IGNoaWxkLmtpbmQgIT09ICdOb25FbnRyeVRleHQnKS5tYXAoY2hpbGQgPT4gdGhpcy5jbGVhbihjaGlsZCkpO1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG4gICAgY2xlYW5fc3RyaW5nZGVjbChub2RlKSB7XG4gICAgICAgIHRoaXMuc3RyaW5nc1tub2RlLm5hbWUudG9VcHBlckNhc2UoKV0gPSBub2RlLnZhbHVlO1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG4gICAgY2xlYW5fc3RyaW5ncmVmKG5vZGUpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBuYW1lID0gbm9kZS5uYW1lLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIGNvbnN0IF9zdHJpbmcgPSB0aGlzLnN0cmluZ3NbbmFtZV1cbiAgICAgICAgICAgIHx8IHRoaXMub3B0aW9ucy5zdHJpbmdzW25hbWVdXG4gICAgICAgICAgICB8fCB0aGlzLmRlZmF1bHRfc3RyaW5nc1tuYW1lXVxuICAgICAgICAgICAgfHwgKGZpZWxkcy51bmFiYnJldi5pbmNsdWRlcyh0aGlzLmNsZWFuaW5nLm5hbWUpICYmICgoX2EgPSB0aGlzLm9wdGlvbnMudW5hYmJyZXZpYXRlW25hbWVdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudGV4dCkgJiYgW3RoaXMudGV4dCh0aGlzLm9wdGlvbnMudW5hYmJyZXZpYXRlW25hbWVdLnRleHQpXSk7XG4gICAgICAgIGlmICghX3N0cmluZykge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnVucmVzb2x2ZWRTdHJpbmdzW25hbWVdKVxuICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JzLnB1c2goeyBtZXNzYWdlOiBgVW5yZXNvbHZlZCBAc3RyaW5nIHJlZmVyZW5jZSAke0pTT04uc3RyaW5naWZ5KG5vZGUubmFtZSl9YCB9KTtcbiAgICAgICAgICAgIHRoaXMudW5yZXNvbHZlZFN0cmluZ3NbbmFtZV0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNsZWFuKHtcbiAgICAgICAgICAgIGtpbmQ6ICdCbG9jaycsXG4gICAgICAgICAgICAvLyBpZiB0aGUgc3RyaW5nIGlzbid0IGZvdW5kLCBhZGQgaXQgYXMtaXMgYnV0IGV4ZW1wdCBpdCBmcm9tIHNlbnRlbmNlIGNhc2luZ1xuICAgICAgICAgICAgY2FzZTogX3N0cmluZyA/IHVuZGVmaW5lZCA6ICdwcmVzZXJ2ZScsXG4gICAgICAgICAgICBtYXJrdXA6IHt9LFxuICAgICAgICAgICAgdmFsdWU6IF9zdHJpbmcgPyBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KF9zdHJpbmcpKSA6IFt0aGlzLnRleHQobm9kZS5uYW1lKV0sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjbGVhbl9lbnRyeShub2RlKSB7XG4gICAgICAgIGNvbnN0IHNob3J0am91cm5hbHMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBub2RlLmZpZWxkcykge1xuICAgICAgICAgICAgaWYgKGZpZWxkcy51bmFiYnJldi5pbmNsdWRlcyhmaWVsZC5uYW1lKSAmJiBBcnJheS5pc0FycmF5KGZpZWxkLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFiYnIgPSBmaWVsZC52YWx1ZS5tYXAodiA9PiB2LnNvdXJjZSkuam9pbignJyk7XG4gICAgICAgICAgICAgICAgY29uc3Qgam91cm5hbCA9IHRoaXMub3B0aW9ucy51bmFiYnJldmlhdGVbYWJicl07XG4gICAgICAgICAgICAgICAgaWYgKGpvdXJuYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgc2hvcnRqb3VybmFscy5wdXNoKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShmaWVsZCkpKSwgeyBuYW1lOiAnc2hvcnRqb3VybmFsJyB9KSk7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnZhbHVlID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShqb3VybmFsLmFzdCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBub2RlLmZpZWxkcyA9IG5vZGUuZmllbGRzLmNvbmNhdChzaG9ydGpvdXJuYWxzKS5tYXAoY2hpbGQgPT4gdGhpcy5jbGVhbihjaGlsZCkpO1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG4gICAgc3RhcnRDbGVhbmluZyhuYW1lKSB7XG4gICAgICAgIG5hbWUgPSBuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmIChmaWVsZHMudGl0bGUuaW5jbHVkZXMobmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYW5pbmcgPSB7IHR5cGU6ICd0aXRsZScsIG5hbWUgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChmaWVsZHMuY3JlYXRvci5pbmNsdWRlcyhuYW1lLnJlcGxhY2UoL3MkLywgJycpKSkge1xuICAgICAgICAgICAgdGhpcy5jbGVhbmluZyA9IHsgdHlwZTogJ2NyZWF0b3InLCBuYW1lOiBuYW1lLnJlcGxhY2UoL3MkLywgJycpIH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFuaW5nID0geyB0eXBlOiAnb3RoZXInLCBuYW1lIH07XG4gICAgICAgIH1cbiAgICB9XG4gICAgc3RyaXBOb0Nhc2Uobm9kZSwgc3RyaXAsIHByZXNlcnZlKSB7XG4gICAgICAgIHN3aXRjaCAobm9kZS5raW5kKSB7XG4gICAgICAgICAgICBjYXNlICdSZWd1bGFyQ29tbWFuZCc6XG4gICAgICAgICAgICAgICAgLy8gYSBiaXQgY2hlYXR5IHRvIGFzc3VtZSB0aGVzZSB0byBiZSBub2Nhc2VkLCBidXQgaXQncyBqdXN0IG1vcmUgbGlrZWx5IHRvIGJlIHdoYXQgcGVvcGxlIHdhbnRcbiAgICAgICAgICAgICAgICBpZiAoWydjaHNmJywgJ2JpYnN0cmluZycsICdjaXRlJ10uaW5jbHVkZXMobm9kZS5jb21tYW5kKSlcbiAgICAgICAgICAgICAgICAgICAgc3RyaXAgPSB0cnVlO1xuICAgICAgICAgICAgICAgIG5vZGUuYXJndW1lbnRzLnJlcXVpcmVkLm1hcChhcmcgPT4gdGhpcy5zdHJpcE5vQ2FzZShhcmcsIHN0cmlwLCBwcmVzZXJ2ZSkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQmxvY2snOlxuICAgICAgICAgICAgY2FzZSAnSW5saW5lTWF0aCc6XG4gICAgICAgICAgICBjYXNlICdEaXNwbGF5TWF0aCc6XG4gICAgICAgICAgICAgICAgaWYgKHN0cmlwICYmIG5vZGUuY2FzZSA9PT0gJ3Byb3RlY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcmVzZXJ2ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5jYXNlID0gJ3ByZXNlcnZlJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBub2RlLmNhc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbm9kZS52YWx1ZS5tYXAodiA9PiB0aGlzLnN0cmlwTm9DYXNlKHYsIHN0cmlwIHx8IG5vZGUuY2FzZSA9PT0gJ3Byb3RlY3QnLCBwcmVzZXJ2ZSkpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnRmllbGQnOlxuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG5vZGUudmFsdWUpKVxuICAgICAgICAgICAgICAgICAgICBub2RlLnZhbHVlLm1hcCh2ID0+IHRoaXMuc3RyaXBOb0Nhc2Uodiwgc3RyaXAsIHByZXNlcnZlKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaXNWZXJiYXRpbUZpZWxkKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5vcHRpb25zLnZlcmJhdGltRmllbGRzLmZpbmQocCA9PiAodHlwZW9mIHAgPT09ICdzdHJpbmcnKSA/IG5hbWUgPT09IHAgOiBuYW1lLm1hdGNoKHApKTtcbiAgICB9XG4gICAgY2xlYW5fZmllbGQobm9kZSkge1xuICAgICAgICB0aGlzLnN0YXJ0Q2xlYW5pbmcobm9kZS5uYW1lKTtcbiAgICAgICAgdGhpcy5zdHJpcE5vQ2FzZShub2RlLCAhdGhpcy5vcHRpb25zLmNhc2VQcm90ZWN0aW9uIHx8IHRoaXMuaXNWZXJiYXRpbUZpZWxkKG5vZGUubmFtZSksIHRoaXMub3B0aW9ucy5zZW50ZW5jZUNhc2UubGVuZ3RoID09PSAwKTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobm9kZS52YWx1ZSkpXG4gICAgICAgICAgICB0aGlzLmNvbmRlbnNlKG5vZGUpO1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG4gICAgY2xlYW5fc2NyaXB0KG5vZGUpIHtcbiAgICAgICAgbGV0IG0sIHZhbHVlLCBzaW5nbGVjaGFyO1xuICAgICAgICAvLyByZWNvZ25pemUgY29tYmluZWQgZm9ybXMgbGlrZSBcXF5cXGNpcmNcbiAgICAgICAgaWYgKHNpbmdsZWNoYXIgPSB1bmljb2RlMmxhdGV4XzEubGF0ZXhbbm9kZS5zb3VyY2VdKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dChzaW5nbGVjaGFyKTtcbiAgICAgICAgaWYgKChtID0gbm9kZS5zb3VyY2UubWF0Y2goL14oW1xcXl9dKShbXnt9XSspJC8pKSAmJiAoKHNpbmdsZWNoYXIgPSB1bmljb2RlMmxhdGV4XzEubGF0ZXhbYCR7bVsxXX0ke21bMl19YF0pIHx8IChzaW5nbGVjaGFyID0gdW5pY29kZTJsYXRleF8xLmxhdGV4W2Ake21bMV19eyR7bVsyXX19YF0pKSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQoc2luZ2xlY2hhcik7XG4gICAgICAgIGlmICgobSA9IG5vZGUuc291cmNlLm1hdGNoKC9eKFtcXF5fXSlcXHsoW157fV0rKVxcfSQvKSkgJiYgKChzaW5nbGVjaGFyID0gdW5pY29kZTJsYXRleF8xLmxhdGV4W2Ake21bMV19JHttWzJdfWBdKSB8fCAoc2luZ2xlY2hhciA9IHVuaWNvZGUybGF0ZXhfMS5sYXRleFtgJHttWzFdfXske21bMl19fWBdKSkpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KHNpbmdsZWNoYXIpO1xuICAgICAgICBjb25zdCBjbWQgPSBub2RlLmtpbmQgPT09ICdTdXBlcnNjcmlwdENvbW1hbmQnID8gJ14nIDogJ18nO1xuICAgICAgICBpZiAodHlwZW9mIG5vZGUudmFsdWUgPT09ICdzdHJpbmcnICYmIChzaW5nbGVjaGFyID0gdW5pY29kZTJsYXRleF8xLmxhdGV4W2Ake2NtZH0ke25vZGUudmFsdWV9YF0gfHwgdW5pY29kZTJsYXRleF8xLmxhdGV4W2Ake2NtZH17JHtub2RlLnZhbHVlfX1gXSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQoc2luZ2xlY2hhcik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBub2RlLnZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdmFsdWUgPSBbdGhpcy50ZXh0KG5vZGUudmFsdWUpXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghQXJyYXkuaXNBcnJheShub2RlLnZhbHVlKSkge1xuICAgICAgICAgICAgdmFsdWUgPSBbbm9kZS52YWx1ZV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YWx1ZSA9IG5vZGUudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbW9kZSA9IG5vZGUua2luZCA9PT0gJ1N1cGVyc2NyaXB0Q29tbWFuZCcgPyAnc3VwJyA6ICdzdWInO1xuICAgICAgICByZXR1cm4gdGhpcy5jbGVhbih7XG4gICAgICAgICAgICBraW5kOiAnQmxvY2snLFxuICAgICAgICAgICAgbWFya3VwOiB7IFttb2RlXTogdHJ1ZSB9LFxuICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjbGVhbl9lbnZpcm9ubWVudChub2RlKSB7XG4gICAgICAgIHRoaXMuY29uZGVuc2Uobm9kZSk7XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgICBuZWVkc1Byb3RlY3Rpb24od29yZCkge1xuICAgICAgICByZXR1cm4gIXdvcmQubWF0Y2gocHJlc2VydmVDYXNlLmhhc1VwcGVyKSAmJiB3b3JkLm1hdGNoKHByZXNlcnZlQ2FzZS5oYXNMb3dlcik7XG4gICAgfVxuICAgIGNsZWFuX2Jsb2NrKG5vZGUpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB0aGlzLmNvbmRlbnNlKG5vZGUpO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmNhc2VQcm90ZWN0aW9uICE9PSAnc3RyaWN0JyAmJiAoKF9hID0gdGhpcy5jbGVhbmluZykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnR5cGUpID09PSAndGl0bGUnICYmIG5vZGUuY2FzZSA9PT0gJ3Byb3RlY3QnKSB7XG4gICAgICAgICAgICAvLyB0ZXN0IHdoZXRoZXIgd2UgY2FuIGdldCBhd2F5IHdpdGggc2tpcHBpbmcgY2FzZSBwcm90ZWN0aW9uIGJlY2F1c2UgaXQgY29udGFpbnMgYWxsIHdvcmRzIHRoYXQgd2lsbCBiZSBwcmVzZXJ2ZWQgYW55d2F5IHdoZW4gY29udmVydGluZyBiYWNrIHRvIFRpdGxlIENhc2VcbiAgICAgICAgICAgIGxldCBwcmVzZXJ2ZSA9IHRydWU7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG5vZGUudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGQua2luZCA9PT0gJ1RleHQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gY2hpbGQudmFsdWUudHJpbSgpO1xuICAgICAgICAgICAgICAgICAgICBwcmVzZXJ2ZSA9ICF2YWx1ZS5tYXRjaChwcmVzZXJ2ZUNhc2UuaXNDYXNlU2Vuc2l0aXZlKSB8fCAhdmFsdWUuc3BsaXQoL1xccysvKS5maW5kKHdvcmQgPT4gdGhpcy5uZWVkc1Byb3RlY3Rpb24od29yZCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcHJlc2VydmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFwcmVzZXJ2ZSlcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocHJlc2VydmUpXG4gICAgICAgICAgICAgICAgbm9kZS5jYXNlID0gJ3ByZXNlcnZlJztcbiAgICAgICAgfVxuICAgICAgICBpZiAobm9kZS5raW5kID09PSAnQmxvY2snKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFttYXJrdXAsIG9uXSBvZiBPYmplY3QuZW50cmllcyhub2RlLm1hcmt1cCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoIW9uKVxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgbm9kZS5tYXJrdXBbbWFya3VwXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG4gICAgY2xlYW5fZGlhY3JpdGljKG5vZGUpIHtcbiAgICAgICAgY29uc3QgY2hhciA9IG5vZGUuZG90bGVzcyA/IGBcXFxcJHtub2RlLmNoYXJhY3Rlcn1gIDogbm9kZS5jaGFyYWN0ZXI7XG4gICAgICAgIGxldCB1bmljb2RlID0gdW5pY29kZTJsYXRleF8xLmxhdGV4W2BcXFxcJHtub2RlLm1hcmt9eyR7Y2hhcn19YF1cbiAgICAgICAgICAgIHx8IHVuaWNvZGUybGF0ZXhfMS5sYXRleFtgXFxcXCR7bm9kZS5tYXJrfSR7Y2hhcn1gXVxuICAgICAgICAgICAgfHwgdW5pY29kZTJsYXRleF8xLmxhdGV4W2B7XFxcXCR7bm9kZS5tYXJrfSAke2NoYXJ9fWBdXG4gICAgICAgICAgICB8fCB1bmljb2RlMmxhdGV4XzEubGF0ZXhbYHtcXFxcJHtub2RlLm1hcmt9JHtjaGFyfX1gXVxuICAgICAgICAgICAgfHwgdW5pY29kZTJsYXRleF8xLmxhdGV4W2BcXFxcJHtub2RlLm1hcmt9ICR7Y2hhcn1gXTtcbiAgICAgICAgaWYgKCF1bmljb2RlICYmICFub2RlLmRvdGxlc3MgJiYgbm9kZS5jaGFyYWN0ZXIubGVuZ3RoID09PSAxICYmIHVuaWNvZGUybGF0ZXhfMS5kaWFjcml0aWNzLnRvdW5pY29kZVtub2RlLm1hcmtdKVxuICAgICAgICAgICAgdW5pY29kZSA9IG5vZGUuY2hhcmFjdGVyICsgdW5pY29kZTJsYXRleF8xLmRpYWNyaXRpY3MudG91bmljb2RlW25vZGUubWFya107XG4gICAgICAgIGlmICghdW5pY29kZSAmJiAhdGhpcy5pbl9wcmVhbWJsZSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yKG5ldyBUZVhFcnJvcihgVW5oYW5kbGVkIFxcXFwke25vZGUubWFya317JHtjaGFyfX1gLCBub2RlLCB0aGlzLmNodW5rKSwgdGhpcy50ZXh0KCkpO1xuICAgICAgICByZXR1cm4gdGhpcy50ZXh0KHVuaWNvZGUpO1xuICAgIH1cbiAgICBjbGVhbl9zeW1ib2wobm9kZSkge1xuICAgICAgICBpZiAobm9kZS5jb21tYW5kID09PSAnXFxcXCcpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KCdcXG4nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dCh1bmljb2RlMmxhdGV4XzEubGF0ZXhbYFxcXFwke25vZGUuY29tbWFuZH1gXSB8fCBub2RlLmNvbW1hbmQpO1xuICAgIH1cbiAgICBmaXJzdF90ZXh0X2Jsb2NrKG5vZGUpIHtcbiAgICAgICAgaWYgKCFub2RlKVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIGlmIChub2RlLmtpbmQgPT09ICdCbG9jaycpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygbm9kZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoY2hpbGQua2luZCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdUZXh0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZC52YWx1ZSA/IG5vZGUgOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdCbG9jayc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW5kaWRhdGUgPSB0aGlzLmZpcnN0X3RleHRfYmxvY2soY2hpbGQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FuZGlkYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjbGVhbl9jb21tYW5kKG5vZGUpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBsZXQgYXJnLCB1bmljb2RlO1xuICAgICAgICBpZiAodW5pY29kZSA9IHVuaWNvZGUybGF0ZXhfMS5sYXRleFtub2RlLnNvdXJjZV0pXG4gICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KHVuaWNvZGUpO1xuICAgICAgICBzd2l0Y2ggKG5vZGUuY29tbWFuZCkge1xuICAgICAgICAgICAgY2FzZSAnbmV3Y29tbWFuZCc6XG4gICAgICAgICAgICAgICAgaWYgKCgoX2EgPSBub2RlLmFyZ3VtZW50cykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnJlcXVpcmVkLmxlbmd0aCkgPT09IDJcbiAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS5hcmd1bWVudHMucmVxdWlyZWRbMF0ua2luZCA9PT0gJ0Jsb2NrJ1xuICAgICAgICAgICAgICAgICAgICAmJiBub2RlLmFyZ3VtZW50cy5yZXF1aXJlZFswXS52YWx1ZS5sZW5ndGggPT09IDFcbiAgICAgICAgICAgICAgICAgICAgJiYgbm9kZS5hcmd1bWVudHMucmVxdWlyZWRbMF0udmFsdWVbMF0ua2luZCA9PT0gJ1JlZ3VsYXJDb21tYW5kJ1xuICAgICAgICAgICAgICAgICAgICAmJiBub2RlLmFyZ3VtZW50cy5yZXF1aXJlZFsxXS5raW5kID09PSAnQmxvY2snKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmV3Y29tbWFuZHNbbm9kZS5hcmd1bWVudHMucmVxdWlyZWRbMF0udmFsdWVbMF0uY29tbWFuZF0gPSBub2RlLmFyZ3VtZW50cy5yZXF1aXJlZFsxXS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnbmV3Y29tbWFuZD8nLCBKU09OLnN0cmluZ2lmeShub2RlLCBudWxsLCAyKSlcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2l0ZW0nOlxuICAgICAgICAgICAgICAgIHJldHVybiB7IGtpbmQ6ICdNYXJrdXAnLCB2YWx1ZTogJzxsaT4nLCBzb3VyY2U6IG5vZGUuc291cmNlIH07XG4gICAgICAgICAgICBjYXNlICdmcmFjJzpcbiAgICAgICAgICAgICAgICBpZiAoYXJnID0gdGhpcy5hcmd1bWVudChub2RlLCAyKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYXJnWzBdLmtpbmQgPT09ICdUZXh0JyAmJiBhcmdbMV0ua2luZCA9PT0gJ1RleHQnICYmICh1bmljb2RlID0gdW5pY29kZTJsYXRleF8xLmxhdGV4W2BcXFxcZnJhY3ske2FyZ1swXS52YWx1ZX19eyR7YXJnWzFdLnZhbHVlfX1gXSkpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KHVuaWNvZGUpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbih7XG4gICAgICAgICAgICAgICAgICAgICAgICBraW5kOiAnQmxvY2snLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZTogJ3Byb3RlY3QnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFya3VwOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBraW5kOiAnQmxvY2snLCBtYXJrdXA6IHsgc3VwOiB0cnVlIH0sIHZhbHVlOiBbYXJnWzBdXSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGV4dCgnXFx1MjA0NCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsga2luZDogJ0Jsb2NrJywgbWFya3VwOiB7IHN1YjogdHJ1ZSB9LCB2YWx1ZTogW2FyZ1sxXV0gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIC8vIGlnbm9yZVxuICAgICAgICAgICAgY2FzZSAndnNwYWNlJzpcbiAgICAgICAgICAgIGNhc2UgJ3ZwaGFudG9tJzpcbiAgICAgICAgICAgIGNhc2UgJ3BhdGgnOlxuICAgICAgICAgICAgY2FzZSAnYWZ0ZXJncm91cCc6XG4gICAgICAgICAgICBjYXNlICdpZ25vcmVzcGFjZXMnOlxuICAgICAgICAgICAgY2FzZSAncmVsYXgnOlxuICAgICAgICAgICAgY2FzZSAnbm9vcHNvcnQnOlxuICAgICAgICAgICAgY2FzZSAnaWZkZWZpbmVkJzpcbiAgICAgICAgICAgIGNhc2UgJ0RlY2xhcmVQcmVmQ2hhcnMnOlxuICAgICAgICAgICAgY2FzZSAnZWxzZSc6XG4gICAgICAgICAgICBjYXNlICdmaSc6XG4gICAgICAgICAgICBjYXNlICdtYWtlYXRsZXR0ZXInOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQoKTtcbiAgICAgICAgICAgIGNhc2UgJ0Vsc2V2aWVyR2x5cGgnOlxuICAgICAgICAgICAgICAgIGlmIChhcmcgPSB0aGlzLmFyZ3VtZW50KG5vZGUsICdUZXh0JykpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGUgPSB1bmljb2RlMmxhdGV4XzEubGF0ZXhbYFxcXFwke25vZGUuY29tbWFuZH17JHthcmd9fWBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dCh1bmljb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dChTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KGFyZywgMTYpKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY2hzZic6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYXJndW1lbnQobm9kZSwgJ25vbmUnKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dCgpO1xuICAgICAgICAgICAgICAgIGlmIChhcmcgPSB0aGlzLmFyZ3VtZW50KG5vZGUsICdCbG9jaycpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbihhcmcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYmlic3RyaW5nJzpcbiAgICAgICAgICAgICAgICBpZiAoYXJnID0gdGhpcy5hcmd1bWVudChub2RlLCAnQmxvY2snKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW4oYXJnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NpdGUnOlxuICAgICAgICAgICAgICAgIGlmIChhcmcgPSB0aGlzLmFyZ3VtZW50KG5vZGUsICdCbG9jaycpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbihhcmcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndGV4dHN1cGVyc2NyaXB0JzpcbiAgICAgICAgICAgIGNhc2UgJ3NwJzpcbiAgICAgICAgICAgICAgICBpZiAoKGFyZyA9IHRoaXMuYXJndW1lbnQobm9kZSwgJ1RleHQnKSkgJiYgKHVuaWNvZGUgPSB1bmljb2RlMmxhdGV4XzEubGF0ZXhbYF57JHthcmd9fWBdKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dCh1bmljb2RlKTtcbiAgICAgICAgICAgICAgICBpZiAoYXJnID0gdGhpcy5hcmd1bWVudChub2RlLCAnQmxvY2snKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW4oYXJnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3RleHRzdWJzY3JpcHQnOlxuICAgICAgICAgICAgY2FzZSAnc2InOlxuICAgICAgICAgICAgICAgIGlmICgoYXJnID0gdGhpcy5hcmd1bWVudChub2RlLCAnVGV4dCcpKSAmJiAodW5pY29kZSA9IHVuaWNvZGUybGF0ZXhfMS5sYXRleFtgX3ske2FyZ319YF0pKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KHVuaWNvZGUpO1xuICAgICAgICAgICAgICAgIGlmIChhcmcgPSB0aGlzLmFyZ3VtZW50KG5vZGUsICdCbG9jaycpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbihhcmcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndGV4dHNjJzpcbiAgICAgICAgICAgICAgICBpZiAoYXJnID0gdGhpcy5hcmd1bWVudChub2RlLCAnQmxvY2snKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW4oYXJnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2VucXVvdGUnOlxuICAgICAgICAgICAgY2FzZSAnbWtiaWJxdW90ZSc6XG4gICAgICAgICAgICAgICAgaWYgKGFyZyA9IHRoaXMuYXJndW1lbnQobm9kZSwgJ0Jsb2NrJykpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuKGFyZyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd0ZXh0YmYnOlxuICAgICAgICAgICAgY2FzZSAnbWtiaWJib2xkJzpcbiAgICAgICAgICAgICAgICBpZiAoYXJnID0gdGhpcy5hcmd1bWVudChub2RlLCAnQmxvY2snKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW4oYXJnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3NlY3Rpb24nOlxuICAgICAgICAgICAgY2FzZSAnc3Vic2VjdGlvbic6XG4gICAgICAgICAgICBjYXNlICdzdWJzdWJzZWN0aW9uJzpcbiAgICAgICAgICAgIGNhc2UgJ3N1YnN1YnN1YnNlY3Rpb24nOlxuICAgICAgICAgICAgICAgIGlmIChhcmcgPSB0aGlzLmFyZ3VtZW50KG5vZGUsICdCbG9jaycpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbihhcmcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnbWtiaWJpdGFsaWMnOlxuICAgICAgICAgICAgY2FzZSAnbWtiaWJlbXBoJzpcbiAgICAgICAgICAgIGNhc2UgJ3RleHRpdCc6XG4gICAgICAgICAgICBjYXNlICdlbXBoJzpcbiAgICAgICAgICAgICAgICBpZiAoYXJnID0gdGhpcy5hcmd1bWVudChub2RlLCAnQmxvY2snKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW4oYXJnKTtcbiAgICAgICAgICAgICAgICBpZiAoYXJnID0gdGhpcy5hcmd1bWVudChub2RlLCAnVGV4dCcpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbih7IGtpbmQ6ICdCbG9jaycsIG1hcmt1cDogeyBpdGFsaWNzOiB0cnVlIH0sIHZhbHVlOiBbdGhpcy50ZXh0KGFyZyldIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYmliY3lyJzpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hcmd1bWVudChub2RlLCAnbm9uZScpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KCk7XG4gICAgICAgICAgICAgICAgaWYgKGFyZyA9IHRoaXMuYXJndW1lbnQobm9kZSwgJ0Jsb2NrJykpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuKGFyZyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdoc3BhY2UnOlxuICAgICAgICAgICAgY2FzZSAnbWF0aHJtJzpcbiAgICAgICAgICAgIGNhc2UgJ3RleHRybSc6XG4gICAgICAgICAgICBjYXNlICdvY2lyYyc6XG4gICAgICAgICAgICBjYXNlICdtYm94JzpcbiAgICAgICAgICAgICAgICBpZiAoYXJnID0gdGhpcy5hcmd1bWVudChub2RlLCAndGV4dCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIHVuaWNvZGUgPSB1bmljb2RlMmxhdGV4XzEubGF0ZXhbYFxcXFwke25vZGUuY29tbWFuZH17JHthcmd9fWBdO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KHVuaWNvZGUgfHwgKG5vZGUuY29tbWFuZCA9PT0gJ2hzcGFjZScgPyAnICcgOiBhcmcpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIW5vZGUuYXJndW1lbnRzLnJlcXVpcmVkLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGFyZyA9IHRoaXMuYXJndW1lbnQobm9kZSwgJ0Jsb2NrJykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xlYW4oYXJnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAvLyBqdXN0IHRha2UgdGhlIFVSTD8gTm90IHRoZSBsYWJlbD9cbiAgICAgICAgICAgIGNhc2UgJ2hyZWYnOlxuICAgICAgICAgICAgICAgIGlmIChhcmcgPSB0aGlzLmFyZ3VtZW50KG5vZGUsIDIpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbihhcmdbMF0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndXJsJzpcbiAgICAgICAgICAgICAgICBpZiAoYXJnID0gdGhpcy5hcmd1bWVudChub2RlLCAnVGV4dCcpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KGFyZyk7XG4gICAgICAgICAgICAgICAgaWYgKGFyZyA9IHRoaXMuYXJndW1lbnQobm9kZSwgJ0Jsb2NrJykpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuKGFyZyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdzbCc6XG4gICAgICAgICAgICBjYXNlICdlbSc6XG4gICAgICAgICAgICBjYXNlICdpdCc6XG4gICAgICAgICAgICBjYXNlICdpdHNoYXBlJzpcbiAgICAgICAgICAgIGNhc2UgJ2JmJzpcbiAgICAgICAgICAgIGNhc2UgJ2Jmc2VyaWVzJzpcbiAgICAgICAgICAgIGNhc2UgJ3NjJzpcbiAgICAgICAgICAgIGNhc2UgJ3Njc2hhcGUnOlxuICAgICAgICAgICAgY2FzZSAndHQnOlxuICAgICAgICAgICAgY2FzZSAncm0nOlxuICAgICAgICAgICAgY2FzZSAnc2YnOlxuICAgICAgICAgICAgY2FzZSAndmVyYic6XG4gICAgICAgICAgICAgICAgLy8gaGFuZGxlZCBpbiB0aGUgZ3JhbW1hclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQoKTtcbiAgICAgICAgICAgIC8vIHdvdWxkbid0IGtub3cgd2hhdCB0byBkbyB3aXRoIHRoZXNlXG4gICAgICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KCk7XG4gICAgICAgICAgICBjYXNlICdwYXInOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQoJ1xcblxcbicpO1xuICAgICAgICAgICAgY2FzZSAnY3lyJzpcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hcmd1bWVudChub2RlLCAnbm9uZScpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdwb2xoayc6XG4gICAgICAgICAgICAgICAgaWYgKHVuaWNvZGUgPSB0aGlzLmFyZ3VtZW50KG5vZGUsICd0ZXh0JykpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGUubGVuZ3RoID09PSAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dCh1bmljb2RlICsgJ1xcdTAzMjgnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYXJndW1lbnQobm9kZSwgJ25vbmUnKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dCgnXFx1MDMyOCcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBpZiAobm9kZS5raW5kID09PSAnUmVndWxhckNvbW1hbmQnICYmIHRoaXMubmV3Y29tbWFuZHNbbm9kZS5jb21tYW5kXSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGVhbih7XG4gICAgICAgICAgICAgICAgICAgICAgICBraW5kOiAnQmxvY2snLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFya3VwOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMubmV3Y29tbWFuZHNbbm9kZS5jb21tYW5kXSkpLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHVuaWNvZGUybGF0ZXhfMS5kaWFjcml0aWNzLnRvdW5pY29kZVtub2RlLmNvbW1hbmRdKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuYXJndW1lbnRzLnJlcXVpcmVkID0gdGhpcy5jbGVhbihub2RlLmFyZ3VtZW50cy5yZXF1aXJlZCk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBibG9jaztcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUuYXJndW1lbnRzLnJlcXVpcmVkLmxlbmd0aCA9PT0gMSAmJiBub2RlLmFyZ3VtZW50cy5yZXF1aXJlZFswXS5raW5kID09PSAnVGV4dCcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vIGlkZWEgd2h5IEkgY2FuJ3QganVzdCBzdHJhaWdodCByZXR1cm4gdGhpcyBidXQgdHlwZXNjcmlwdCBqdXN0IHdvbid0IHNodXQgdXBcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6ICdCbG9jaycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya3VwOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogW3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6ICdEaWFjcml0aWNDb21tYW5kJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcms6IG5vZGUuY29tbWFuZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3Rlcjogbm9kZS5hcmd1bWVudHMucmVxdWlyZWRbMF0udmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3RsZXNzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYzogbm9kZS5hcmd1bWVudHMucmVxdWlyZWRbMF0ubG9jLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOiBub2RlLmFyZ3VtZW50cy5yZXF1aXJlZFswXS5zb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuKGJsb2NrKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChibG9jayA9IHRoaXMuZmlyc3RfdGV4dF9ibG9jayhub2RlLmFyZ3VtZW50cy5yZXF1aXJlZFswXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmaXhlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2sudmFsdWUgPSBibG9jay52YWx1ZS5yZWR1Y2UoKHZhbHVlLCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZml4ZWQgJiYgY2hpbGQua2luZCA9PT0gJ1RleHQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpeGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUucHVzaCh7IGtpbmQ6ICdEaWFjcml0aWNDb21tYW5kJywgbWFyazogbm9kZS5jb21tYW5kLCBjaGFyYWN0ZXI6IGNoaWxkLnZhbHVlWzBdIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5wdXNoKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgY2hpbGQpLCB7IHZhbHVlOiBjaGlsZC52YWx1ZS5zdWJzdHJpbmcoMSkgfSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUucHVzaChjaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIFtdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kOiAnQmxvY2snLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmt1cDoge30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG5vZGUuYXJndW1lbnRzLnJlcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBvdmVybGluZSB3aXRob3V0IGFyZ3VtZW50cyBkb2Vzbid0IHNlZW0gdG8gcmVuZGVyIGluIExhVGVYXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS5jb21tYW5kID09PSAnb3ZlcmxpbmUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQoJyAnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFuKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kOiAnQmxvY2snLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmt1cDoge30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFt0aGlzLnRleHQoJyAnICsgdW5pY29kZTJsYXRleF8xLmRpYWNyaXRpY3MudG91bmljb2RlW25vZGUuY29tbWFuZF0pXS5jb25jYXQobm9kZS5hcmd1bWVudHMucmVxdWlyZWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHVuaWNvZGUgPSB1bmljb2RlMmxhdGV4XzEubGF0ZXhbbm9kZS5zb3VyY2VdIHx8IHVuaWNvZGUybGF0ZXhfMS5sYXRleFtgJHtub2RlLnNvdXJjZX17fWBdKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50ZXh0KHVuaWNvZGUpO1xuICAgICAgICAgICAgICAgIGlmICgodW5pY29kZSA9IHVuaWNvZGUybGF0ZXhfMS5sYXRleFtgXFxcXCR7bm9kZS5jb21tYW5kfWBdIHx8IHVuaWNvZGUybGF0ZXhfMS5sYXRleFtgXFxcXCR7bm9kZS5jb21tYW5kfXt9YF0pICYmIHRoaXMuYXJndW1lbnQobm9kZSwgJ25vbmUnKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dCh1bmljb2RlKTtcbiAgICAgICAgICAgICAgICBpZiAoKGFyZyA9IHRoaXMuYXJndW1lbnQobm9kZSwgJ1RleHQnKSkgJiYgKHVuaWNvZGUgPSB1bmljb2RlMmxhdGV4XzEubGF0ZXhbYFxcXFwke25vZGUuY29tbWFuZH17JHthcmd9fWBdKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGV4dCh1bmljb2RlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pbl9wcmVhbWJsZSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQobm9kZS5zb3VyY2UpO1xuICAgICAgICByZXR1cm4gdGhpcy5lcnJvcihuZXcgVGVYRXJyb3IoYFVuaGFuZGxlZCBjb21tYW5kOiAke25vZGUuY29tbWFuZH1gICsgdGhpcy5zaG93KG5vZGUpLCBub2RlLCB0aGlzLmNodW5rKSwgdGhpcy50ZXh0KCkpO1xuICAgIH1cbiAgICBwcmVzZXJ2ZUNhc2Uod29yZCkge1xuICAgICAgICAvLyB3b3JkID0gd29yZC5yZXBsYWNlKG5ldyBSZWdFeHAoYFwiWyR7dGhpcy5tYXJrdXAuZW5xdW90ZS5vcGVufSR7dGhpcy5tYXJrdXAuZW5xdW90ZS5jbG9zZX06KCldYCwgJ2cnKSwgJycpXG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGlmICghd29yZC50cmltKCkpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICghd29yZC5tYXRjaChwcmVzZXJ2ZUNhc2UuaGFzQWxwaGFOdW0pKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIHdvcmQgPSB3b3JkLnJlcGxhY2UoL1tcXC/igJkn4oCdOigpXS9nLCAnJyk7XG4gICAgICAgIGlmICh3b3JkID09PSAnSScpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKHdvcmQubGVuZ3RoID09PSAxKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAod29yZC5yZXBsYWNlKHByZXNlcnZlQ2FzZS5ub3RDYXNlU2Vuc2l0aXZlKSA9PT0gJycpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIC8vIHdvcmQgPSB3b3JkLnJlcGxhY2UocHJlc2VydmVDYXNlLm5vdEFscGhhTnVtLCAnJylcbiAgICAgICAgLy8gc2ltcGxlIGNhcCBhdCBzdGFydCBvZiBmaWVsZFxuICAgICAgICBpZiAod29yZC5tYXRjaChwcmVzZXJ2ZUNhc2UubGVhZGluZ0NhcCkgJiYgKChfYiA9IChfYSA9IHRoaXMuZmllbGQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS50ZXh0KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubGVuZ3RoKSA9PT0gMClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKHdvcmQubWF0Y2gocHJlc2VydmVDYXNlLmFsbENhcHMpKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGlmICh3b3JkLmxlbmd0aCA+IDEgJiYgd29yZC5tYXRjaChwcmVzZXJ2ZUNhc2Uuam9pbmVkKSlcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKHdvcmQubWF0Y2gocHJlc2VydmVDYXNlLmhhc1VwcGVyKSlcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBpZiAod29yZC5tYXRjaChwcmVzZXJ2ZUNhc2UuaXNOdW1iZXIpKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29udmVydChub2RlKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG5vZGUpKVxuICAgICAgICAgICAgcmV0dXJuIG5vZGUubWFwKGNoaWxkID0+IHRoaXMuY29udmVydChjaGlsZCkpO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnJhdyAmJiB0aGlzLmZpZWxkKVxuICAgICAgICAgICAgbm9kZSA9IHRoaXMudGV4dChub2RlLnNvdXJjZSk7XG4gICAgICAgIHN3aXRjaCAobm9kZS5raW5kKSB7XG4gICAgICAgICAgICBjYXNlICdNYXJrdXAnOlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpZWxkKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpZWxkLnRleHQgKz0gbm9kZS52YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0JyYWNlZENvbW1lbnQnOlxuICAgICAgICAgICAgY2FzZSAnTGluZUNvbW1lbnQnOlxuICAgICAgICAgICAgICAgIHRoaXMuY29tbWVudHMucHVzaChub2RlLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0VudHJ5JzpcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnZlcnRfZW50cnkobm9kZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdOdW1iZXInOlxuICAgICAgICAgICAgICAgIHRoaXMuY29udmVydF9udW1iZXIobm9kZSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdUZXh0JzpcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnZlcnRfdGV4dChub2RlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0Jsb2NrJzpcbiAgICAgICAgICAgIGNhc2UgJ0lubGluZU1hdGgnOlxuICAgICAgICAgICAgY2FzZSAnRGlzcGxheU1hdGgnOlxuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5maWVsZCA/IHRoaXMuZmllbGQudGV4dC5sZW5ndGggOiBudWxsO1xuICAgICAgICAgICAgICAgIGNvbnN0IHByZXNlcnZlID0gdHlwZW9mIHN0YXJ0ID09PSAnbnVtYmVyJyAmJiB0aGlzLmZpZWxkLnByZXNlcnZlUmFuZ2VzO1xuICAgICAgICAgICAgICAgIHRoaXMuY29udmVydF9ibG9jayhub2RlKTtcbiAgICAgICAgICAgICAgICBpZiAocHJlc2VydmUgJiYgKG5vZGUuY2FzZSB8fCBub2RlLmtpbmQuZW5kc1dpdGgoJ01hdGgnKSkpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJlc2VydmUoc3RhcnQsIHRoaXMuZmllbGQudGV4dC5sZW5ndGgpOyAvLyAsIGBjb252ZXJ0LWJsb2NrOiBjYXNlPSR7bm9kZS5jYXNlfSwgbWF0aD0ke25vZGUua2luZC5lbmRzV2l0aCgnTWF0aCcpfWApXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdFbnZpcm9ubWVudCc6XG4gICAgICAgICAgICAgICAgdGhpcy5jb252ZXJ0X2Vudmlyb25tZW50KG5vZGUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnUHJlYW1ibGVFeHByZXNzaW9uJzpcbiAgICAgICAgICAgICAgICB0aGlzLnByZWFtYmxlLnB1c2gobm9kZS52YWx1ZS5tYXAocHJlYW1ibGUgPT4gcHJlYW1ibGUuc291cmNlKS5qb2luKCdcXG5cXG4nKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdEaXNwbGF5TWF0aCc6XG4gICAgICAgICAgICBjYXNlICdJbmxpbmVNYXRoJzpcbiAgICAgICAgICAgIGNhc2UgJ1N0cmluZ0RlY2xhcmF0aW9uJzpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3IobmV3IFBhcnNlckVycm9yKGBubyBjb252ZXJ0ZXIgZm9yICR7bm9kZS5raW5kfTogJHt0aGlzLnNob3cobm9kZSl9YCwgbm9kZSksIHVuZGVmaW5lZCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc3BsaXRPbmNlKHMsIHNlcCwgZnJvbUVuZCA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IHNwbGl0ID0gZnJvbUVuZCA/IHMubGFzdEluZGV4T2Yoc2VwKSA6IHMuaW5kZXhPZihzZXApO1xuICAgICAgICByZXR1cm4gKHNwbGl0IDwgMCkgPyBbcywgJyddIDogW3Muc3Vic3RyKDAsIHNwbGl0KSwgcy5zdWJzdHIoc3BsaXQgKyAxKV07XG4gICAgfVxuICAgIHBhcnNlTmFtZShuYW1lKSB7XG4gICAgICAgIGxldCBwYXJzZWQgPSBudWxsO1xuICAgICAgICBjb25zdCBwYXJ0cyA9IG5hbWUuc3BsaXQobWFya2VyLmNvbW1hKTtcbiAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCAmJiAhcGFydHMuZmluZChwID0+ICFwLm1hdGNoKC9eW2Etel0rKC1pKT89L2kpKSkgeyAvLyBleHRlbmRlZCBuYW1lIGZvcm1hdFxuICAgICAgICAgICAgZm9yIChjb25zdCBwYXJ0IG9mIHBhcnRzKSB7XG4gICAgICAgICAgICAgICAgcGFyc2VkID0gcGFyc2VkIHx8IHt9O1xuICAgICAgICAgICAgICAgIGNvbnN0IFthdHRyLCB2YWx1ZV0gPSB0aGlzLnNwbGl0T25jZShwYXJ0LnJlcGxhY2UobWFya2VyLnJlLnNwYWNlLCAnJyksICc9JykubWFwKHYgPT4gdi50cmltKCkpO1xuICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN3aXRjaCAoYXR0ci50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2ZhbWlseSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWQubGFzdE5hbWUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdnaXZlbi1pJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZC5pbml0aWFsID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZ2l2ZW4nOlxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkLmZpcnN0TmFtZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ByZWZpeCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWQucHJlZml4ID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnc3VmZml4JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZC5zdWZmaXggPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICd1c2VwcmVmaXgnOlxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkLnVzZXByZWZpeCA9IHZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdqdW5pb3Jjb21tYSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWQudXNlcHJlZml4ID0gdmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRbYXR0ci50b0xvd2VyQ2FzZSgpXSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByZWZpeCA9IC8oLis/KVxccysodmVyZXx2b258dmFuIGRlbnx2YW4gZGVyfHZhbnxkZXxkZWx8ZGVsbGF8ZGVyfGRpfGRhfHBpZXRyb3x2YW5kZW58ZHV8c3QufHN0fGxhfGxvfHRlcnxiaW58aWJufHRlfHRlbnxvcHxiZW58YWwpXFxzKyguKykvO1xuICAgICAgICBsZXQgbTtcbiAgICAgICAgc3dpdGNoIChwYXJzZWQgPyAwIDogcGFydHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgLy8gYWxyZWFkeSBwYXJzZWRcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMTogLy8gbmFtZSB3aXRob3V0IGNvbW1hc1xuICAgICAgICAgICAgICAgIC8vIGxpdGVyYWxcbiAgICAgICAgICAgICAgICBpZiAobWFya2VyLnJlLmxpdGVyYWxOYW1lLnRlc3QocGFydHNbMF0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZCA9IHsgbGl0ZXJhbDogcGFydHNbMF0gfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobSA9IHBhcnRzWzBdLnJlcGxhY2UobWFya2VyLnJlLnNwYWNlLCAnICcpLm1hdGNoKHByZWZpeCkpIHsgLy8gc3BsaXQgb24gcHJlZml4XG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0TmFtZTogbVsxXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeDogbVsyXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3ROYW1lOiBtWzNdLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gdG9wLWxldmVsIFwiZmlyc3RuYW1lIGxhc3RuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgW2ZpcnN0TmFtZSwgbGFzdE5hbWVdID0gdGhpcy5zcGxpdE9uY2UocGFydHNbMF0sIG1hcmtlci5zcGFjZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsYXN0TmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkID0geyBmaXJzdE5hbWUsIGxhc3ROYW1lIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWQgPSB7IGxhc3ROYW1lOiBmaXJzdE5hbWUgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMjogLy8gbGFzdG5hbWUsIGZpcnN0bmFtZVxuICAgICAgICAgICAgICAgIHBhcnNlZCA9IHtcbiAgICAgICAgICAgICAgICAgICAgbGFzdE5hbWU6IHBhcnRzWzBdLFxuICAgICAgICAgICAgICAgICAgICBmaXJzdE5hbWU6IHBhcnRzWzFdLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OiAvLyBsYXN0bmFtZSwgc3VmZml4LCBmaXJzdG5hbWVcbiAgICAgICAgICAgICAgICBwYXJzZWQgPSB7XG4gICAgICAgICAgICAgICAgICAgIGxhc3ROYW1lOiBwYXJ0c1swXSxcbiAgICAgICAgICAgICAgICAgICAgc3VmZml4OiBwYXJ0c1sxXSxcbiAgICAgICAgICAgICAgICAgICAgZmlyc3ROYW1lOiBwYXJ0cy5zbGljZSgyKS5qb2luKG1hcmtlci5jb21tYSksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhwYXJzZWQpKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHYgIT09ICdzdHJpbmcnKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgcGFyc2VkW2tdID0gbWFya2VyLmNsZWFuKHYpLnRyaW0oKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFyc2VkO1xuICAgIH1cbiAgICBjb252ZXJ0X2VudHJ5KG5vZGUpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB0aGlzLmVudHJ5ID0ge1xuICAgICAgICAgICAga2V5OiBub2RlLmlkLFxuICAgICAgICAgICAgdHlwZTogbm9kZS50eXBlLFxuICAgICAgICAgICAgZmllbGRzOiB7fSxcbiAgICAgICAgICAgIGNyZWF0b3JzOiB7fSxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5lbnRyaWVzLnB1c2godGhpcy5lbnRyeSk7XG4gICAgICAgIC8vIG9yZGVyIHRoZXNlIGZpcnN0IGZvciBsYW5ndWFnZS1kZXBlbmRlbnQgc2VudGVuY2UgY2FzaW5nXG4gICAgICAgIGNvbnN0IG9yZGVyID0gWydsYW5naWQnLCAnaHlwaGVuYXRpb24nLCAnbGFuZ3VhZ2UnXTtcbiAgICAgICAgbm9kZS5maWVsZHMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgY29uc3QgaWEgPSBvcmRlci5pbmRleE9mKGEubmFtZSk7XG4gICAgICAgICAgICBjb25zdCBpYiA9IG9yZGVyLmluZGV4T2YoYi5uYW1lKTtcbiAgICAgICAgICAgIGlmIChpYSA9PT0gLTEgJiYgaWIgPT09IC0xKVxuICAgICAgICAgICAgICAgIHJldHVybiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpOyAvLyBkb2Vzbid0IG1hdHRlciByZWFsbHlcbiAgICAgICAgICAgIGlmIChpYSA9PT0gLTEpXG4gICAgICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgICAgICBpZiAoaWIgPT09IC0xKVxuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgIHJldHVybiBpYSAtIGliO1xuICAgICAgICB9KTtcbiAgICAgICAgbGV0IHNlbnRlbmNlQ2FzZSA9ICEhdGhpcy5vcHRpb25zLnNlbnRlbmNlQ2FzZS5sZW5ndGg7IC8vIGlmIHNlbnRlbmNlQ2FzZSBpcyBlbXB0eSwgbm8gc2VudGVuY2UgY2FzaW5nXG4gICAgICAgIGZvciAoY29uc3QgZmllbGQgb2Ygbm9kZS5maWVsZHMpIHtcbiAgICAgICAgICAgIGlmIChmaWVsZC5raW5kICE9PSAnRmllbGQnKVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVycm9yKG5ldyBQYXJzZXJFcnJvcihgRXhwZWN0ZWQgRmllbGQsIGdvdCAke2ZpZWxkLmtpbmR9YCwgbm9kZSksIHVuZGVmaW5lZCk7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0Q2xlYW5pbmcoZmllbGQubmFtZSk7XG4gICAgICAgICAgICAvKlxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5yYXcgJiYgdGhpcy5maWVsZFR5cGUgIT09ICdjcmVhdG9yJykge1xuICAgICAgICAgICAgICB0aGlzLmVudHJ5LmZpZWxkc1tmaWVsZC5uYW1lXSA9IFsgZmllbGQudmFsdWUubWFwKHYgPT4gdi5zb3VyY2UpLmpvaW4oJycpIF1cbiAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICovXG4gICAgICAgICAgICB0aGlzLmZpZWxkID0ge1xuICAgICAgICAgICAgICAgIG5hbWU6IGZpZWxkLm5hbWUsXG4gICAgICAgICAgICAgICAgdGV4dDogJycsXG4gICAgICAgICAgICAgICAgbGV2ZWw6IDAsXG4gICAgICAgICAgICAgICAgd29yZHM6IHtcbiAgICAgICAgICAgICAgICAgICAgdXBwZXI6IDAsXG4gICAgICAgICAgICAgICAgICAgIGxvd2VyOiAwLFxuICAgICAgICAgICAgICAgICAgICBvdGhlcjogMCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHByZXNlcnZlUmFuZ2VzOiAoc2VudGVuY2VDYXNlICYmIGZpZWxkcy50aXRsZS5pbmNsdWRlcyhmaWVsZC5uYW1lKSkgPyBbXSA6IG51bGwsXG4gICAgICAgICAgICAgICAgaHRtbDogdGhpcy5vcHRpb25zLmh0bWxGaWVsZHMuaW5jbHVkZXMoZmllbGQubmFtZSksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5lbnRyeS5maWVsZHNbdGhpcy5maWVsZC5uYW1lXSA9IHRoaXMuZW50cnkuZmllbGRzW3RoaXMuZmllbGQubmFtZV0gfHwgW107XG4gICAgICAgICAgICAvLyBzcGVjaWFsIGNhc2UgZm9yICd0aXRsZSA9IDIwMjAnXG4gICAgICAgICAgICBpZiAoZmllbGQudmFsdWUua2luZCA9PT0gJ051bWJlcicpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVudHJ5LmZpZWxkc1t0aGlzLmZpZWxkLm5hbWVdLnB1c2goZmllbGQudmFsdWUudmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuZmllbGQgPSBudWxsO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jb252ZXJ0KGZpZWxkLnZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuZmllbGQudGV4dCA9IHRoaXMuZmllbGQudGV4dC50cmltKCk7XG4gICAgICAgICAgICB0aGlzLmZpZWxkLnRleHQgPSB0aGlzLmZpZWxkLnRleHQucmVwbGFjZSgvPFxcLyhbYS16XSk+PFxcMT4vZywgJycpO1xuICAgICAgICAgICAgdGhpcy5maWVsZC50ZXh0ID0gdGhpcy5maWVsZC50ZXh0LnJlcGxhY2UoLzwoW2Etel0pPihcXHMqKTxcXC9cXDE+L2csICckMScpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmZpZWxkLnRleHQpXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAvLyBkaXNhYmxlIHNlbnRlbmNlQ2FzaW5nIGlmIG5vdCBhbiBlbmdsaXNoXG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMuZmllbGQubmFtZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2xhbmdpZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnaHlwaGVuYXRpb24nOlxuICAgICAgICAgICAgICAgICAgICBzZW50ZW5jZUNhc2UgPSBzZW50ZW5jZUNhc2UgJiYgdGhpcy5vcHRpb25zLnNlbnRlbmNlQ2FzZS5pbmNsdWRlcyh0aGlzLmZpZWxkLnRleHQudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2xhbmd1YWdlJzpcbiAgICAgICAgICAgICAgICAgICAgc2VudGVuY2VDYXNlID0gc2VudGVuY2VDYXNlICYmICEhKHRoaXMuZmllbGQudGV4dC50b0xvd2VyQ2FzZSgpLnRyaW0oKS5zcGxpdCgvXFxzKixcXHMqLykuZmluZChsYW5nID0+IHRoaXMub3B0aW9ucy5zZW50ZW5jZUNhc2UuaW5jbHVkZXMobGFuZykpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBcImdyb3Vwc1wiIGlzIGEgamFicmVmIDMuOCsgbW9uc3Ryb3NpdHlcbiAgICAgICAgICAgIGlmICh0aGlzLmZpZWxkLm5hbWUubWF0Y2goL14oa2V5d29yZHM/fGdyb3VwcykkLykpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCB0ZXh0IG9mIHRoaXMuZmllbGQudGV4dC5zcGxpdChtYXJrZXIuY29tbWEpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQgPSB0ZXh0LnRyaW0oKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRleHQpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVudHJ5LmZpZWxkc1t0aGlzLmZpZWxkLm5hbWVdLnB1c2godGV4dCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5jbGVhbmluZy50eXBlID09PSAnY3JlYXRvcicpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZW50cnkuY3JlYXRvcnNbdGhpcy5maWVsZC5uYW1lXSlcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbnRyeS5jcmVhdG9yc1t0aGlzLmZpZWxkLm5hbWVdID0gW107XG4gICAgICAgICAgICAgICAgLy8ge00uIEhhbGxlLCBKLiBCcmVzbmFuLCBhbmQgRy4gTWlsbGVyfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpZWxkLnRleHQuaW5jbHVkZXMoYCR7bWFya2VyLmNvbW1hfSR7bWFya2VyLmFuZH1gKSkgeyAvL1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpZWxkLnRleHQgPSB0aGlzLmZpZWxkLnRleHQucmVwbGFjZShuZXcgUmVnRXhwKGAke21hcmtlci5jb21tYX0ke21hcmtlci5hbmR9YCwgJ2cnKSwgbWFya2VyLmFuZCkucmVwbGFjZShuZXcgUmVnRXhwKG1hcmtlci5jb21tYSksIG1hcmtlci5hbmQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNyZWF0b3Igb2YgdGhpcy5maWVsZC50ZXh0LnNwbGl0KG1hcmtlci5hbmQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW50cnkuZmllbGRzW3RoaXMuZmllbGQubmFtZV0ucHVzaChtYXJrZXIuY2xlYW4oY3JlYXRvcikpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVudHJ5LmNyZWF0b3JzW3RoaXMuZmllbGQubmFtZV0ucHVzaCh0aGlzLnBhcnNlTmFtZShjcmVhdG9yKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoZmllbGRzLnVuYWJicmV2LmluY2x1ZGVzKGZpZWxkLm5hbWUpKSB7IC8vIGRvZXNuJ3QgZ2V0IHNlbnRlbmNlIGNhc2luZyBhbnlob3cgVE9ETzogYm9va3RpdGxlIGRvZXMhXG4gICAgICAgICAgICAgICAgdGhpcy5lbnRyeS5maWVsZHNbdGhpcy5maWVsZC5uYW1lXS5wdXNoKCgoKF9hID0gdGhpcy5vcHRpb25zLnVuYWJicmV2aWF0ZVt0aGlzLmZpZWxkLnRleHRdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudGV4dCkgfHwgdGhpcy5maWVsZC50ZXh0KS5ub3JtYWxpemUoJ05GQycpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpZWxkLnByZXNlcnZlUmFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZ3Vlc3NBbHJlYWR5U2VudGVuY2VDYXNlZCAmJiBNYXRoLm1heCh0aGlzLmZpZWxkLndvcmRzLnVwcGVyLCB0aGlzLmZpZWxkLndvcmRzLmxvd2VyKSA+ICh0aGlzLmZpZWxkLndvcmRzLm90aGVyICsgTWF0aC5taW4odGhpcy5maWVsZC53b3Jkcy51cHBlciwgdGhpcy5maWVsZC53b3Jkcy5sb3dlcikpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXNlcnZlKG51bGwsIG51bGwpOyAvLyAsICdtb3N0bHkgc2VudGVuY2UgY2FzZWQgYWxyZWFkeScpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0eHQgPSB0aGlzLmZpZWxkLnRleHQucmVwbGFjZShwcmVzZXJ2ZUNhc2UubWFya3VwLCBtYXJrdXAgPT4gbWFya2VyLm1hcmt1cC5yZXBlYXQobWFya3VwLmxlbmd0aCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1hdGNoO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VydmVDYXNlLnNlbnRlbmNlU3RhcnQubGFzdEluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgobWF0Y2ggPSBwcmVzZXJ2ZUNhc2Uuc2VudGVuY2VTdGFydC5leGVjKHR4dCkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXhjbHVkZSBzdHVmZiBsaWtlIFwiVS5TLiBUYXhlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoLmluZGV4ID4gMiAmJiB0eHQuc3Vic3RyKDAsIG1hdGNoLmluZGV4ICsgMSkubWF0Y2gocHJlc2VydmVDYXNlLmFjcm9ueW0pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXNlcnZlKG1hdGNoLmluZGV4LCBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCk7IC8vICwgYHNlbnRlbmNlU3RhcnQ6ICR7bWF0Y2hbMF19IGF0ICR7bWF0Y2guaW5kZXh9Li4ke21hdGNoLmluZGV4ICsgbWF0Y2hbMF0ubGVuZ3RofWApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVzZXJ2ZUNhc2UucXVvdGVkLmxhc3RJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKG1hdGNoID0gcHJlc2VydmVDYXNlLnF1b3RlZC5leGVjKHRoaXMuZmllbGQudGV4dCkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmVzZXJ2ZShtYXRjaC5pbmRleCwgbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGgpOyAvLyAsICdxdW90ZWQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuZW50cnkuZmllbGRzW3RoaXMuZmllbGQubmFtZV0ucHVzaCh0aGlzLmNvbnZlcnRUb1NlbnRlbmNlQ2FzZSh0aGlzLmZpZWxkLnRleHQpLm5vcm1hbGl6ZSgnTkZDJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmllbGQgPSBudWxsO1xuICAgIH1cbiAgICBjb252ZXJ0VG9TZW50ZW5jZUNhc2UodGV4dCkge1xuICAgICAgICBpZiAoIXRoaXMuZmllbGQucHJlc2VydmVSYW5nZXMpXG4gICAgICAgICAgICByZXR1cm4gdGV4dDtcbiAgICAgICAgLy8gYWx3YXlzIGtlZXAgdGhlIGxlYWRpbmcgY2hhciwgYnV0IHNraXAgbWFya3VwXG4gICAgICAgIGNvbnN0IGxlYWQgPSB0ZXh0Lm1hdGNoKC9eKDxbXj5dKz4pKi4vKTtcbiAgICAgICAgaWYgKGxlYWQpIHtcbiAgICAgICAgICAgIHRoaXMucHJlc2VydmUobGVhZFswXS5sZW5ndGggLSAxLCBsZWFkWzBdLmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnByZXNlcnZlKDAsIDEpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBzZW50ZW5jZUNhc2VkID0gdGV4dC50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLygoW1xcPyFdXFxzKnxeKShbXFwnXFxcIsKhwr/igJzigJjigJ7Cq1xcc10rKT9bXlxcc10pL2csIHggPT4geC50b1VwcGVyQ2FzZSgpKTtcbiAgICAgICAgZm9yIChjb25zdCB7IHN0YXJ0LCBlbmQgfSBvZiB0aGlzLmZpZWxkLnByZXNlcnZlUmFuZ2VzKSB7XG4gICAgICAgICAgICBzZW50ZW5jZUNhc2VkID0gc2VudGVuY2VDYXNlZC5zdWJzdHJpbmcoMCwgc3RhcnQpICsgdGV4dC5zdWJzdHJpbmcoc3RhcnQsIGVuZCkgKyBzZW50ZW5jZUNhc2VkLnN1YnN0cmluZyhlbmQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0ZXh0ICE9PSBzZW50ZW5jZUNhc2VkKVxuICAgICAgICAgICAgdGhpcy5lbnRyeS5zZW50ZW5jZUNhc2VkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHNlbnRlbmNlQ2FzZWQ7XG4gICAgfVxuICAgIGNvbnZlcnRfbnVtYmVyKG5vZGUpIHtcbiAgICAgICAgdGhpcy5maWVsZC50ZXh0ICs9IGAke25vZGUudmFsdWV9YDtcbiAgICB9XG4gICAgY29udmVydF90ZXh0KG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUubW9kZSA9PT0gJ3ZlcmJhdGltJykge1xuICAgICAgICAgICAgdGhpcy5maWVsZC50ZXh0ICs9IG5vZGUudmFsdWUudHJpbSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIGhldXJpc3RpYyB0byBkZXRlY3QgcHJlLXNlbnRlbmNlY2FzZWQgdGV4dFxuICAgICAgICBmb3IgKGNvbnN0IHdvcmQgb2Ygbm9kZS52YWx1ZS5zcGxpdCgvXFxiLykpIHtcbiAgICAgICAgICAgIGlmICh3b3JkLm1hdGNoKHByZXNlcnZlQ2FzZS5hbGxMb3dlcikpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpZWxkLndvcmRzLmxvd2VyKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh3b3JkLm1hdGNoKHByZXNlcnZlQ2FzZS5hbGxDYXBzKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmllbGQud29yZHMudXBwZXIrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHdvcmQubWF0Y2gocHJlc2VydmVDYXNlLmhhc0FscGhhKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmllbGQud29yZHMub3RoZXIrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5maWVsZC5sZXZlbCA9PT0gMCAmJiB0aGlzLmNsZWFuaW5nLnR5cGUgPT09ICdjcmVhdG9yJykge1xuICAgICAgICAgICAgdGhpcy5maWVsZC50ZXh0ICs9IG5vZGUudmFsdWUucmVwbGFjZSgvXFxzK2FuZFxccysvaWcsIG1hcmtlci5hbmQpLnJlcGxhY2UoL1xccyosXFxzKi9nLCBtYXJrZXIuY29tbWEpLnJlcGxhY2UoL1xccysvZywgbWFya2VyLnNwYWNlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5maWVsZC5sZXZlbCA9PT0gMCAmJiB0aGlzLmZpZWxkLm5hbWUubWF0Y2goL14oa2V5d29yZHM/fGdyb3VwcykkLykpIHtcbiAgICAgICAgICAgIHRoaXMuZmllbGQudGV4dCArPSBub2RlLnZhbHVlLnJlcGxhY2UoL1xccypbOyxdXFxzKi9nLCBtYXJrZXIuY29tbWEpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmZpZWxkLmh0bWwpIHtcbiAgICAgICAgICAgIHRoaXMuZmllbGQudGV4dCArPSBub2RlLnZhbHVlLnJlcGxhY2UoLyYvZywgJyZhbXA7JykucmVwbGFjZSgvPC9nLCAnJmx0OycpLnJlcGxhY2UoLz4vZywgJyZndDsnKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLmZpZWxkLnByZXNlcnZlUmFuZ2VzKSB7XG4gICAgICAgICAgICBjb25zdCB3b3JkcyA9IG5vZGUudmFsdWUuc3BsaXQoLyhcXHMrKS8pO1xuICAgICAgICAgICAgZm9yIChjb25zdCB3b3JkIG9mIHdvcmRzKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLmZpZWxkLnRleHQubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHRoaXMuZmllbGQudGV4dCArPSB3b3JkO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnByZXNlcnZlQ2FzZSh3b3JkKSlcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmVzZXJ2ZShzdGFydCwgdGhpcy5maWVsZC50ZXh0Lmxlbmd0aCk7IC8vICwgYHdvcmQ6ICR7SlNPTi5zdHJpbmdpZnkod29yZCl9YClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZmllbGQudGV4dCArPSBub2RlLnZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnZlcnRfZW52aXJvbm1lbnQobm9kZSkge1xuICAgICAgICB0aGlzLmZpZWxkLnRleHQgKz0geyBlbnVtZXJhdGU6ICc8b2w+JywgaXRlbWl6ZTogJzx1bD4nIH1bbm9kZS5lbnZdO1xuICAgICAgICB0aGlzLmNvbnZlcnRfYmxvY2soT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBub2RlKSwgeyBraW5kOiAnQmxvY2snLCBtYXJrdXA6IHt9IH0pKTtcbiAgICAgICAgdGhpcy5maWVsZC50ZXh0ICs9IHsgZW51bWVyYXRlOiAnPC9vbD4nLCBpdGVtaXplOiAnPC91bD4nIH1bbm9kZS5lbnZdO1xuICAgIH1cbiAgICBjb252ZXJ0X2Jsb2NrKG5vZGUpIHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLmZpZWxkLnRleHQubGVuZ3RoO1xuICAgICAgICBsZXQgcHJlZml4ID0gJyc7XG4gICAgICAgIGxldCBwb3N0Zml4ID0gJyc7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuY2FzZVByb3RlY3Rpb24gIT09ICdzdHJpY3QnICYmIHRoaXMuY2xlYW5pbmcudHlwZSA9PT0gJ290aGVyJylcbiAgICAgICAgICAgIGRlbGV0ZSBub2RlLmNhc2U7XG4gICAgICAgIGlmICh0aGlzLmNsZWFuaW5nLnR5cGUgPT09ICdjcmVhdG9yJyAmJiBub2RlLmNhc2UgPT09ICdwcm90ZWN0Jykge1xuICAgICAgICAgICAgcHJlZml4ICs9IG1hcmtlci5saXRlcmFsO1xuICAgICAgICAgICAgcG9zdGZpeCA9IG1hcmtlci5saXRlcmFsICsgcG9zdGZpeDtcbiAgICAgICAgICAgIGRlbGV0ZSBub2RlLmNhc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG5vZGUuY2FzZSA9PT0gJ3Byb3RlY3QnKSB7XG4gICAgICAgICAgICBwcmVmaXggKz0gdGhpcy5vcHRpb25zLm1hcmt1cC5jYXNlUHJvdGVjdC5vcGVuO1xuICAgICAgICAgICAgcG9zdGZpeCA9IHRoaXMub3B0aW9ucy5tYXJrdXAuY2FzZVByb3RlY3QuY2xvc2UgKyBwb3N0Zml4O1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLmtpbmQgPT09ICdCbG9jaycpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbWFya3VwIG9mIE9iamVjdC5rZXlzKG5vZGUubWFya3VwKSkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5vcHRpb25zLm1hcmt1cFttYXJrdXBdKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lcnJvcihuZXcgUGFyc2VyRXJyb3IoYG1hcmt1cDogJHttYXJrdXB9YCwgbm9kZSksIHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgcHJlZml4ICs9IHRoaXMub3B0aW9ucy5tYXJrdXBbbWFya3VwXS5vcGVuO1xuICAgICAgICAgICAgICAgIHBvc3RmaXggPSB0aGlzLm9wdGlvbnMubWFya3VwW21hcmt1cF0uY2xvc2UgKyBwb3N0Zml4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVuZCA9IHtcbiAgICAgICAgICAgIHdpdGhvdXRQcmVmaXg6IHRoaXMuZmllbGQudGV4dC5sZW5ndGgsXG4gICAgICAgICAgICB3aXRoUHJlZml4OiB0aGlzLmZpZWxkLnRleHQubGVuZ3RoICsgcHJlZml4Lmxlbmd0aCxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5maWVsZC50ZXh0ICs9IHByZWZpeDtcbiAgICAgICAgdGhpcy5maWVsZC5sZXZlbCsrO1xuICAgICAgICB0aGlzLmNvbnZlcnQobm9kZS52YWx1ZSk7XG4gICAgICAgIHRoaXMuZmllbGQubGV2ZWwtLTtcbiAgICAgICAgY29uc3QgYWRkZWQgPSB0aGlzLmZpZWxkLnRleHQuc3Vic3RyaW5nKGVuZC53aXRoUHJlZml4KTtcbiAgICAgICAgY29uc3QgYWRkZWRfdGV4dCA9IGFkZGVkLnJlcGxhY2UoLzxcXC8/W14+XSs+L2csICcnKTtcbiAgICAgICAgY29uc3QgbmVlZHNQcm90ZWN0aW9uID0gYWRkZWRfdGV4dCAmJiAoKHRoaXMub3B0aW9ucy5jYXNlUHJvdGVjdGlvbiA9PT0gJ3N0cmljdCcgJiYgYWRkZWRfdGV4dC5tYXRjaChwcmVzZXJ2ZUNhc2UuaXNDYXNlU2Vuc2l0aXZlKSlcbiAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgKHRoaXMub3B0aW9ucy5jYXNlUHJvdGVjdGlvbiA9PT0gJ2FzLW5lZWRlZCcgJiYgYWRkZWRfdGV4dC5zcGxpdCgvXFxzKy8pLmZpbmQod29yZCA9PiB0aGlzLm5lZWRzUHJvdGVjdGlvbih3b3JkKSkpKTtcbiAgICAgICAgaWYgKCFhZGRlZCkgeyAvLyBub3RoaW5nIHdhcyBhZGRlZCwgc28gcmVtb3ZlIHByZWZpeFxuICAgICAgICAgICAgdGhpcy5maWVsZC50ZXh0ID0gdGhpcy5maWVsZC50ZXh0LnN1YnN0cmluZygwLCBlbmQud2l0aG91dFByZWZpeCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5maWVsZC5wcmVzZXJ2ZVJhbmdlcyAmJiBwcmVmaXggPT09IHRoaXMub3B0aW9ucy5tYXJrdXAuY2FzZVByb3RlY3Qub3BlbiAmJiAhbmVlZHNQcm90ZWN0aW9uKSB7XG4gICAgICAgICAgICAvLyBzb21ldGhpbmcgd2FzIGFkZGVkIHRoYXQgZGlkbid0IGFjdHVhbGx5IG5lZWQgY2FzZSBwcm90ZWN0aW9uXG4gICAgICAgICAgICB0aGlzLmZpZWxkLnRleHQgPSB0aGlzLmZpZWxkLnRleHQuc3Vic3RyaW5nKDAsIGVuZC53aXRob3V0UHJlZml4KSArIGFkZGVkO1xuICAgICAgICAgICAgdGhpcy5maWVsZC5wcmVzZXJ2ZVJhbmdlcyA9IHRoaXMuZmllbGQucHJlc2VydmVSYW5nZXMuZmlsdGVyKHJhbmdlID0+IHJhbmdlLnN0YXJ0IDwgZW5kLndpdGhvdXRQcmVmaXgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5maWVsZC50ZXh0ICs9IHBvc3RmaXg7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWVsZC50ZXh0ID0gdGhpcy5maWVsZC50ZXh0LnJlcGxhY2UoLzwoc3VwfHN1Yik+KFtePD5dKyk8XFwvXFwxPiQvaSwgKG0sIG1vZGUsIGNoYXJzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjbWQgPSBtb2RlID09PSAnc3VwJyA/ICdeJyA6ICdfJztcbiAgICAgICAgICAgIGxldCBzY3JpcHQgPSAnJztcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hhciBvZiBjaGFycykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHVuaWNvZGUgPSB1bmljb2RlMmxhdGV4XzEubGF0ZXhbYCR7Y21kfSR7Y2hhcn1gXSB8fCB1bmljb2RlMmxhdGV4XzEubGF0ZXhbYCR7Y21kfXske2NoYXJ9fWBdO1xuICAgICAgICAgICAgICAgIHNjcmlwdCArPSB1bmljb2RlID8gdW5pY29kZSA6IGA8JHttb2RlfT4ke2NoYXJ9PC8ke21vZGV9PmA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzY3JpcHQgPSBzY3JpcHQucmVwbGFjZShuZXcgUmVnRXhwKGA8LyR7bW9kZX0+PCR7bW9kZX0+YCwgJ2cnKSwgJycpO1xuICAgICAgICAgICAgcmV0dXJuIHNjcmlwdC5sZW5ndGggPCBtLmxlbmd0aCA/IHNjcmlwdCA6IG07XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAobm9kZS5jYXNlICYmIHRoaXMuZmllbGQucHJlc2VydmVSYW5nZXMpXG4gICAgICAgICAgICB0aGlzLnByZXNlcnZlKHN0YXJ0LCB0aGlzLmZpZWxkLnRleHQubGVuZ3RoKTsgLy8gLCAnaW4gY29udmVydC1ibG9jayAnICsgbm9kZS5zb3VyY2UgfHwgJzxzb3VyY2U+JylcbiAgICB9XG59XG4vKipcbiAqIHBhcnNlIGJpYnRleC4gVGhpcyB3aWxsIHRyeSB0byBjb252ZXJ0IFRlWCBjb21tYW5kcyBpbnRvIHVuaWNvZGUgZXF1aXZhbGVudHMsIGFuZCBhcHBseSBgQHN0cmluZ2AgZXhwYW5zaW9uXG4gKi9cbmZ1bmN0aW9uIHBhcnNlKGlucHV0LCBvcHRpb25zID0ge30pIHtcbiAgICBjb25zdCBwYXJzZXIgPSBuZXcgUGFyc2VyKG9wdGlvbnMpO1xuICAgIHJldHVybiBwYXJzZXIucGFyc2UoaW5wdXQpO1xufVxuZXhwb3J0cy5wYXJzZSA9IHBhcnNlO1xuZnVuY3Rpb24gYXN0KGlucHV0LCBvcHRpb25zID0ge30sIGNsZWFuID0gdHJ1ZSkge1xuICAgIGNvbnN0IHBhcnNlciA9IG5ldyBQYXJzZXIob3B0aW9ucyk7XG4gICAgcmV0dXJuIHBhcnNlci5hc3QoaW5wdXQsIGNsZWFuKTtcbn1cbmV4cG9ydHMuYXN0ID0gYXN0O1xudmFyIGNodW5rZXJfMiA9IHJlcXVpcmUoXCIuL2NodW5rZXJcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJjaHVua2VyXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiBjaHVua2VyXzIucGFyc2U7IH0gfSk7XG52YXIgamFicmVmXzEgPSByZXF1aXJlKFwiLi9qYWJyZWZcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJqYWJyZWZcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGphYnJlZl8xLnBhcnNlOyB9IH0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiaW1wb3J0ICogYXMgQmliVGVYUGFyc2VyIGZyb20gJ0ByZXRvcnF1ZXJlL2JpYnRleC1wYXJzZXInO1xuaW1wb3J0IHsgRW50cnkgYXMgRW50cnlEYXRhQmliTGFUZVggfSBmcm9tICdAcmV0b3JxdWVyZS9iaWJ0ZXgtcGFyc2VyJztcbi8vIEFsc28gbWFrZSBFbnRyeURhdGFCaWJMYVRlWCBhdmFpbGFibGUgdG8gb3RoZXIgbW9kdWxlc1xuZXhwb3J0IHsgRW50cnkgYXMgRW50cnlEYXRhQmliTGFUZVggfSBmcm9tICdAcmV0b3JxdWVyZS9iaWJ0ZXgtcGFyc2VyJztcblxuLy8gVHJpY2s6IGFsbG93IHN0cmluZyBpbmRleGluZyBvbnRvIG9iamVjdCBwcm9wZXJ0aWVzXG5leHBvcnQgaW50ZXJmYWNlIElJbmRleGFibGUge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBba2V5OiBzdHJpbmddOiBhbnk7XG59XG5cbmNvbnN0IGRhdGFiYXNlVHlwZXMgPSBbJ2NzbC1qc29uJywgJ2JpYmxhdGV4J10gYXMgY29uc3Q7XG5leHBvcnQgdHlwZSBEYXRhYmFzZVR5cGUgPSB0eXBlb2YgZGF0YWJhc2VUeXBlc1tudW1iZXJdO1xuXG5leHBvcnQgY29uc3QgVEVNUExBVEVfVkFSSUFCTEVTID0ge1xuICBjaXRla2V5OiAnVW5pcXVlIGNpdGVrZXknLFxuICBhYnN0cmFjdDogJycsXG4gIGF1dGhvclN0cmluZzogJ0NvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGF1dGhvciBuYW1lcycsXG4gIGNvbnRhaW5lclRpdGxlOlxuICAgICdUaXRsZSBvZiB0aGUgY29udGFpbmVyIGhvbGRpbmcgdGhlIHJlZmVyZW5jZSAoZS5nLiBib29rIHRpdGxlIGZvciBhIGJvb2sgY2hhcHRlciwgb3IgdGhlIGpvdXJuYWwgdGl0bGUgZm9yIGEgam91cm5hbCBhcnRpY2xlKScsXG4gIERPSTogJycsXG4gIGVwcmludDogJycsXG4gIGVwcmludHR5cGU6ICcnLFxuICBldmVudFBsYWNlOiAnTG9jYXRpb24gb2YgZXZlbnQnLFxuICBub3RlOiAnJyxcbiAgcGFnZTogJ1BhZ2Ugb3IgcGFnZSByYW5nZScsXG4gIHB1Ymxpc2hlcjogJycsXG4gIHB1Ymxpc2hlclBsYWNlOiAnTG9jYXRpb24gb2YgcHVibGlzaGVyJyxcbiAgdGl0bGU6ICcnLFxuICB0aXRsZVNob3J0OiAnJyxcbiAgVVJMOiAnJyxcbiAgeWVhcjogJ1B1YmxpY2F0aW9uIHllYXInLFxuICB6b3Rlcm9TZWxlY3RVUkk6ICdVUkkgdG8gb3BlbiB0aGUgcmVmZXJlbmNlIGluIFpvdGVybycsXG59O1xuXG5leHBvcnQgY2xhc3MgTGlicmFyeSB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbnRyaWVzOiB7IFtjaXRla2V5OiBzdHJpbmddOiBFbnRyeSB9KSB7fVxuXG4gIGdldCBzaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuZW50cmllcykubGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciB0aGUgZ2l2ZW4gY2l0ZWtleSwgZmluZCB0aGUgY29ycmVzcG9uZGluZyBgRW50cnlgIGFuZCByZXR1cm4gYVxuICAgKiBjb2xsZWN0aW9uIG9mIHRlbXBsYXRlIHZhcmlhYmxlIGFzc2lnbm1lbnRzLlxuICAgKi9cbiAgZ2V0VGVtcGxhdGVWYXJpYWJsZXNGb3JDaXRla2V5KGNpdGVrZXk6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIGNvbnN0IGVudHJ5OiBFbnRyeSA9IHRoaXMuZW50cmllc1tjaXRla2V5XTtcbiAgICBjb25zdCBzaG9ydGN1dHMgPSB7XG4gICAgICBjaXRla2V5OiBjaXRla2V5LFxuXG4gICAgICBhYnN0cmFjdDogZW50cnkuYWJzdHJhY3QsXG4gICAgICBhdXRob3JTdHJpbmc6IGVudHJ5LmF1dGhvclN0cmluZyxcbiAgICAgIGNvbnRhaW5lclRpdGxlOiBlbnRyeS5jb250YWluZXJUaXRsZSxcbiAgICAgIERPSTogZW50cnkuRE9JLFxuICAgICAgZXByaW50OiBlbnRyeS5lcHJpbnQsXG4gICAgICBlcHJpbnR0eXBlOiBlbnRyeS5lcHJpbnR0eXBlLFxuICAgICAgZXZlbnRQbGFjZTogZW50cnkuZXZlbnRQbGFjZSxcbiAgICAgIG5vdGU6IGVudHJ5Lm5vdGUsXG4gICAgICBwYWdlOiBlbnRyeS5wYWdlLFxuICAgICAgcHVibGlzaGVyOiBlbnRyeS5wdWJsaXNoZXIsXG4gICAgICBwdWJsaXNoZXJQbGFjZTogZW50cnkucHVibGlzaGVyUGxhY2UsXG4gICAgICB0aXRsZTogZW50cnkudGl0bGUsXG4gICAgICB0aXRsZVNob3J0OiBlbnRyeS50aXRsZVNob3J0LFxuICAgICAgVVJMOiBlbnRyeS5VUkwsXG4gICAgICB5ZWFyOiBlbnRyeS55ZWFyPy50b1N0cmluZygpLFxuICAgICAgem90ZXJvU2VsZWN0VVJJOiBlbnRyeS56b3Rlcm9TZWxlY3RVUkksXG4gICAgfTtcblxuICAgIHJldHVybiB7IGVudHJ5OiBlbnRyeS50b0pTT04oKSwgLi4uc2hvcnRjdXRzIH07XG4gIH1cbn1cblxuLyoqXG4gKiBMb2FkIHJlZmVyZW5jZSBlbnRyaWVzIGZyb20gdGhlIGdpdmVuIHJhdyBkYXRhYmFzZSBkYXRhLlxuICpcbiAqIFJldHVybnMgYSBsaXN0IG9mIGBFbnRyeURhdGFgLCB3aGljaCBzaG91bGQgYmUgd3JhcHBlZCB3aXRoIHRoZSByZWxldmFudFxuICogYWRhcHRlciBhbmQgdXNlZCB0byBpbnN0YW50aWF0ZSBhIGBMaWJyYXJ5YC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRFbnRyaWVzKFxuICBkYXRhYmFzZVJhdzogc3RyaW5nLFxuICBkYXRhYmFzZVR5cGU6IERhdGFiYXNlVHlwZSxcbik6IEVudHJ5RGF0YVtdIHtcbiAgbGV0IGxpYnJhcnlBcnJheTogRW50cnlEYXRhW107XG5cbiAgaWYgKGRhdGFiYXNlVHlwZSA9PSAnY3NsLWpzb24nKSB7XG4gICAgbGlicmFyeUFycmF5ID0gSlNPTi5wYXJzZShkYXRhYmFzZVJhdyk7XG4gIH0gZWxzZSBpZiAoZGF0YWJhc2VUeXBlID09ICdiaWJsYXRleCcpIHtcbiAgICBjb25zdCBvcHRpb25zOiBCaWJUZVhQYXJzZXIuUGFyc2VyT3B0aW9ucyA9IHtcbiAgICAgIGVycm9ySGFuZGxlcjogKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgJ0NpdGF0aW9uIHBsdWdpbjogbm9uLWZhdGFsIGVycm9yIGxvYWRpbmcgQmliTGFUZVggZW50cnk6JyxcbiAgICAgICAgICBlcnIsXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCBwYXJzZWQgPSBCaWJUZVhQYXJzZXIucGFyc2UoXG4gICAgICBkYXRhYmFzZVJhdyxcbiAgICAgIG9wdGlvbnMsXG4gICAgKSBhcyBCaWJUZVhQYXJzZXIuQmlibGlvZ3JhcGh5O1xuXG4gICAgcGFyc2VkLmVycm9ycy5mb3JFYWNoKChlcnJvcikgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYENpdGF0aW9uIHBsdWdpbjogZmF0YWwgZXJyb3IgbG9hZGluZyBCaWJMYVRlWCBlbnRyeWAgK1xuICAgICAgICAgIGAgKGxpbmUgJHtlcnJvci5saW5lfSwgY29sdW1uICR7ZXJyb3IuY29sdW1ufSk6YCxcbiAgICAgICAgZXJyb3IubWVzc2FnZSxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBsaWJyYXJ5QXJyYXkgPSBwYXJzZWQuZW50cmllcztcbiAgfVxuXG4gIHJldHVybiBsaWJyYXJ5QXJyYXk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aG9yIHtcbiAgZ2l2ZW4/OiBzdHJpbmc7XG4gIGZhbWlseT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBbiBgRW50cnlgIHJlcHJlc2VudHMgYSBzaW5nbGUgcmVmZXJlbmNlIGluIGEgcmVmZXJlbmNlIGRhdGFiYXNlLlxuICogRWFjaCBlbnRyeSBoYXMgYSB1bmlxdWUgaWRlbnRpZmllciwga25vd24gaW4gbW9zdCByZWZlcmVuY2UgbWFuYWdlcnMgYXMgaXRzXG4gKiBcImNpdGVrZXkuXCJcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEVudHJ5IHtcbiAgLyoqXG4gICAqIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgZW50cnkgKGFsc28gdGhlIGNpdGVrZXkpLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGlkOiBzdHJpbmc7XG5cbiAgcHVibGljIGFic3RyYWN0IHR5cGU6IHN0cmluZztcblxuICBwdWJsaWMgYWJzdHJhY3QgYWJzdHJhY3Q/OiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCBhdXRob3I/OiBBdXRob3JbXTtcblxuICAvKipcbiAgICogQSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBhdXRob3JzLCBlYWNoIG9mIHRoZSBmb3JtYXQgYDxmaXJzdG5hbWU+IDxsYXN0bmFtZT5gLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGF1dGhvclN0cmluZz86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGNvbnRhaW5lciBmb3IgdGhpcyByZWZlcmVuY2UgLS0gaW4gdGhlIGNhc2Ugb2YgYSBib29rXG4gICAqIGNoYXB0ZXIgcmVmZXJlbmNlLCB0aGUgbmFtZSBvZiB0aGUgYm9vazsgaW4gdGhlIGNhc2Ugb2YgYSBqb3VybmFsIGFydGljbGUsXG4gICAqIHRoZSBuYW1lIG9mIHRoZSBqb3VybmFsLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGNvbnRhaW5lclRpdGxlPzogc3RyaW5nO1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBET0k/OiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCBmaWxlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgZGF0ZSBvZiBpc3N1ZS4gTWFueSByZWZlcmVuY2VzIGRvIG5vdCBjb250YWluIGluZm9ybWF0aW9uIGFib3V0IG1vbnRoXG4gICAqIGFuZCBkYXkgb2YgaXNzdWU7IGluIHRoaXMgY2FzZSwgdGhlIGBpc3N1ZWREYXRlYCB3aWxsIGNvbnRhaW4gZHVtbXkgbWluaW11bVxuICAgKiB2YWx1ZXMgZm9yIHRob3NlIGVsZW1lbnRzLiAoQSByZWZlcmVuY2Ugd2hpY2ggaXMgb25seSBlbmNvZGVkIGFzIGJlaW5nXG4gICAqIGlzc3VlZCBpbiAyMDAxIGlzIHJlcHJlc2VudGVkIGhlcmUgd2l0aCBhIGRhdGUgMjAwMS0wMS0wMSAwMDowMDowMCBVVEMuKVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGlzc3VlZERhdGU/OiBEYXRlO1xuXG4gIC8qKlxuICAgKiBQYWdlIG9yIHBhZ2UgcmFuZ2Ugb2YgdGhlIHJlZmVyZW5jZS5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBwYWdlPzogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgdGl0bGU/OiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCB0aXRsZVNob3J0Pzogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgVVJMPzogc3RyaW5nO1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBldmVudFBsYWNlPzogc3RyaW5nO1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBwdWJsaXNoZXI/OiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCBwdWJsaXNoZXJQbGFjZT86IHN0cmluZztcblxuICAvKipcbiAgICogQmliTGFUZVgtc3BlY2lmaWMgcHJvcGVydGllc1xuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGVwcmludD86IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IGVwcmludHR5cGU/OiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIF95ZWFyPzogc3RyaW5nO1xuICBwdWJsaWMgZ2V0IHllYXIoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5feWVhclxuICAgICAgPyBwYXJzZUludCh0aGlzLl95ZWFyKVxuICAgICAgOiB0aGlzLmlzc3VlZERhdGU/LmdldFVUQ0Z1bGxZZWFyKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgX25vdGU/OiBzdHJpbmdbXTtcblxuICBwdWJsaWMgZ2V0IG5vdGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbm90ZVxuICAgICAgPy5tYXAoKGVsKSA9PiBlbC5yZXBsYWNlKC8oem90ZXJvOlxcL1xcLy4rKS9nLCAnW0xpbmtdKCQxKScpKVxuICAgICAgLmpvaW4oJ1xcblxcbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgVVJJIHdoaWNoIHdpbGwgb3BlbiB0aGUgcmVsZXZhbnQgZW50cnkgaW4gdGhlIFpvdGVybyBjbGllbnQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHpvdGVyb1NlbGVjdFVSSSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgem90ZXJvOi8vc2VsZWN0L2l0ZW1zL0Ake3RoaXMuaWR9YDtcbiAgfVxuXG4gIHRvSlNPTigpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgY29uc3QganNvbk9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzKTtcblxuICAgIC8vIGFkZCBnZXR0ZXIgdmFsdWVzXG4gICAgY29uc3QgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcyk7XG4gICAgT2JqZWN0LmVudHJpZXMoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocHJvdG8pKVxuICAgICAgLmZpbHRlcigoWywgZGVzY3JpcHRvcl0pID0+IHR5cGVvZiBkZXNjcmlwdG9yLmdldCA9PSAnZnVuY3Rpb24nKVxuICAgICAgLmZvckVhY2goKFtrZXksIGRlc2NyaXB0b3JdKSA9PiB7XG4gICAgICAgIGlmIChkZXNjcmlwdG9yICYmIGtleVswXSAhPT0gJ18nKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9ICh0aGlzIGFzIElJbmRleGFibGUpW2tleV07XG4gICAgICAgICAgICBqc29uT2JqW2tleV0gPSB2YWw7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIGpzb25PYmo7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgRW50cnlEYXRhID0gRW50cnlEYXRhQ1NMIHwgRW50cnlEYXRhQmliTGFUZVg7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW50cnlEYXRhQ1NMIHtcbiAgaWQ6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuXG4gIGFic3RyYWN0Pzogc3RyaW5nO1xuICBhdXRob3I/OiBBdXRob3JbXTtcbiAgJ2NvbnRhaW5lci10aXRsZSc/OiBzdHJpbmc7XG4gIERPST86IHN0cmluZztcbiAgJ2V2ZW50LXBsYWNlJz86IHN0cmluZztcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgaXNzdWVkPzogeyAnZGF0ZS1wYXJ0cyc6IFthbnlbXV0gfTtcbiAgcGFnZT86IHN0cmluZztcbiAgcHVibGlzaGVyPzogc3RyaW5nO1xuICAncHVibGlzaGVyLXBsYWNlJz86IHN0cmluZztcbiAgdGl0bGU/OiBzdHJpbmc7XG4gICd0aXRsZS1zaG9ydCc/OiBzdHJpbmc7XG4gIFVSTD86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEVudHJ5Q1NMQWRhcHRlciBleHRlbmRzIEVudHJ5IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRhOiBFbnRyeURhdGFDU0wpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZXByaW50OiBzdHJpbmcgPSBudWxsO1xuICBlcHJpbnR0eXBlOiBzdHJpbmcgPSBudWxsO1xuICBmaWxlczogc3RyaW5nW10gPSBudWxsO1xuXG4gIGdldCBpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmlkO1xuICB9XG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGEudHlwZTtcbiAgfVxuXG4gIGdldCBhYnN0cmFjdCgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmFic3RyYWN0O1xuICB9XG4gIGdldCBhdXRob3IoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5hdXRob3I7XG4gIH1cblxuICBnZXQgYXV0aG9yU3RyaW5nKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmRhdGEuYXV0aG9yXG4gICAgICA/IHRoaXMuZGF0YS5hdXRob3IubWFwKChhKSA9PiBgJHthLmdpdmVufSAke2EuZmFtaWx5fWApLmpvaW4oJywgJylcbiAgICAgIDogbnVsbDtcbiAgfVxuXG4gIGdldCBjb250YWluZXJUaXRsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhWydjb250YWluZXItdGl0bGUnXTtcbiAgfVxuXG4gIGdldCBET0koKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5ET0k7XG4gIH1cblxuICBnZXQgZXZlbnRQbGFjZSgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhWydldmVudC1wbGFjZSddO1xuICB9XG5cbiAgZ2V0IGlzc3VlZERhdGUoKSB7XG4gICAgaWYgKFxuICAgICAgIShcbiAgICAgICAgdGhpcy5kYXRhLmlzc3VlZCAmJlxuICAgICAgICB0aGlzLmRhdGEuaXNzdWVkWydkYXRlLXBhcnRzJ10gJiZcbiAgICAgICAgdGhpcy5kYXRhLmlzc3VlZFsnZGF0ZS1wYXJ0cyddWzBdLmxlbmd0aCA+IDBcbiAgICAgIClcbiAgICApXG4gICAgICByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IFt5ZWFyLCBtb250aCwgZGF5XSA9IHRoaXMuZGF0YS5pc3N1ZWRbJ2RhdGUtcGFydHMnXVswXTtcbiAgICByZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEMoeWVhciwgKG1vbnRoIHx8IDEpIC0gMSwgZGF5IHx8IDEpKTtcbiAgfVxuXG4gIGdldCBwYWdlKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGEucGFnZTtcbiAgfVxuXG4gIGdldCBwdWJsaXNoZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5wdWJsaXNoZXI7XG4gIH1cblxuICBnZXQgcHVibGlzaGVyUGxhY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVsncHVibGlzaGVyLXBsYWNlJ107XG4gIH1cblxuICBnZXQgdGl0bGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS50aXRsZTtcbiAgfVxuXG4gIGdldCB0aXRsZVNob3J0KCkge1xuICAgIHJldHVybiB0aGlzLmRhdGFbJ3RpdGxlLXNob3J0J107XG4gIH1cblxuICBnZXQgVVJMKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGEuVVJMO1xuICB9XG59XG5cbmNvbnN0IEJJQkxBVEVYX1BST1BFUlRZX01BUFBJTkc6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGFic3RyYWN0OiAnYWJzdHJhY3QnLFxuICBib29rdGl0bGU6ICdfY29udGFpbmVyVGl0bGUnLFxuICBkYXRlOiAnaXNzdWVkJyxcbiAgZG9pOiAnRE9JJyxcbiAgZXByaW50OiAnZXByaW50JyxcbiAgZXByaW50dHlwZTogJ2VwcmludHR5cGUnLFxuICBldmVudHRpdGxlOiAnZXZlbnQnLFxuICBqb3VybmFsOiAnX2NvbnRhaW5lclRpdGxlJyxcbiAgam91cm5hbHRpdGxlOiAnX2NvbnRhaW5lclRpdGxlJyxcbiAgbG9jYXRpb246ICdwdWJsaXNoZXJQbGFjZScsXG4gIHBhZ2VzOiAncGFnZScsXG4gIHNob3J0am91cm5hbDogJ2NvbnRhaW5lclRpdGxlU2hvcnQnLFxuICB0aXRsZTogJ3RpdGxlJyxcbiAgc2hvcnR0aXRsZTogJ3RpdGxlU2hvcnQnLFxuICB1cmw6ICdVUkwnLFxuICB2ZW51ZTogJ2V2ZW50UGxhY2UnLFxuICB5ZWFyOiAnX3llYXInLFxuICBwdWJsaXNoZXI6ICdwdWJsaXNoZXInLFxuICBub3RlOiAnX25vdGUnLFxufTtcblxuLy8gQmliTGFUZVggcGFyc2VyIHJldHVybnMgYXJyYXlzIG9mIHByb3BlcnR5IHZhbHVlcyAoYWxsb3dpbmcgZm9yIHJlcGVhdGVkXG4vLyBwcm9wZXJ0eSBlbnRyaWVzKS4gRm9yIHRoZSBmb2xsb3dpbmcgZmllbGRzLCBqdXN0IGJsaW5kbHkgdGFrZSB0aGUgZmlyc3QuXG5jb25zdCBCSUJMQVRFWF9QUk9QRVJUWV9UQUtFX0ZJUlNUOiBzdHJpbmdbXSA9IFtcbiAgJ2Fic3RyYWN0JyxcbiAgJ2Jvb2t0aXRsZScsXG4gICdfY29udGFpbmVyVGl0bGUnLFxuICAnZGF0ZScsXG4gICdkb2knLFxuICAnZXByaW50JyxcbiAgJ2VwcmludHR5cGUnLFxuICAnZXZlbnR0aXRsZScsXG4gICdqb3VybmFsdGl0bGUnLFxuICAnbG9jYXRpb24nLFxuICAncGFnZXMnLFxuICAnc2hvcnRqb3VybmFsJyxcbiAgJ3RpdGxlJyxcbiAgJ3Nob3J0dGl0bGUnLFxuICAndXJsJyxcbiAgJ3ZlbnVlJyxcbiAgJ195ZWFyJyxcbiAgJ3B1Ymxpc2hlcicsXG5dO1xuXG5leHBvcnQgY2xhc3MgRW50cnlCaWJMYVRlWEFkYXB0ZXIgZXh0ZW5kcyBFbnRyeSB7XG4gIGFic3RyYWN0Pzogc3RyaW5nO1xuICBfY29udGFpbmVyVGl0bGU/OiBzdHJpbmc7XG4gIGNvbnRhaW5lclRpdGxlU2hvcnQ/OiBzdHJpbmc7XG4gIERPST86IHN0cmluZztcbiAgZXByaW50Pzogc3RyaW5nO1xuICBlcHJpbnR0eXBlPzogc3RyaW5nO1xuICBldmVudD86IHN0cmluZztcbiAgZXZlbnRQbGFjZT86IHN0cmluZztcbiAgaXNzdWVkPzogc3RyaW5nO1xuICBwYWdlPzogc3RyaW5nO1xuICBwdWJsaXNoZXI/OiBzdHJpbmc7XG4gIHB1Ymxpc2hlclBsYWNlPzogc3RyaW5nO1xuICB0aXRsZT86IHN0cmluZztcbiAgdGl0bGVTaG9ydD86IHN0cmluZztcbiAgVVJMPzogc3RyaW5nO1xuICBfeWVhcj86IHN0cmluZztcbiAgX25vdGU/OiBzdHJpbmdbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGE6IEVudHJ5RGF0YUJpYkxhVGVYKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIE9iamVjdC5lbnRyaWVzKEJJQkxBVEVYX1BST1BFUlRZX01BUFBJTkcpLmZvckVhY2goXG4gICAgICAobWFwOiBbc3RyaW5nLCBzdHJpbmddKSA9PiB7XG4gICAgICAgIGNvbnN0IFtzcmMsIHRndF0gPSBtYXA7XG4gICAgICAgIGlmIChzcmMgaW4gdGhpcy5kYXRhLmZpZWxkcykge1xuICAgICAgICAgIGxldCB2YWwgPSB0aGlzLmRhdGEuZmllbGRzW3NyY107XG4gICAgICAgICAgaWYgKEJJQkxBVEVYX1BST1BFUlRZX1RBS0VfRklSU1QuaW5jbHVkZXMoc3JjKSkge1xuICAgICAgICAgICAgdmFsID0gKHZhbCBhcyBhbnlbXSlbMF07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgKHRoaXMgYXMgSUluZGV4YWJsZSlbdGd0XSA9IHZhbDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgZ2V0IGlkKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGEua2V5O1xuICB9XG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGEudHlwZTtcbiAgfVxuXG4gIGdldCBmaWxlcygpOiBzdHJpbmdbXSB7XG4gICAgLy8gRm9yIHNvbWUgcmVhc29uIHRoZSBiaWJ0ZXggcGFyc2VyIGRvZXNuJ3QgcmVsaWFibHkgcGFyc2UgZmlsZSBsaXN0IHRvXG4gICAgLy8gYXJyYXkgOyBzbyB3ZSdsbCBkbyBpdCBtYW51YWxseSAvIHJlZHVuZGFudGx5XG4gICAgbGV0IHJldDogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAodGhpcy5kYXRhLmZpZWxkcy5maWxlKSB7XG4gICAgICByZXQgPSByZXQuY29uY2F0KHRoaXMuZGF0YS5maWVsZHMuZmlsZS5mbGF0TWFwKCh4KSA9PiB4LnNwbGl0KCc7JykpKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZGF0YS5maWVsZHMuZmlsZXMpIHtcbiAgICAgIHJldCA9IHJldC5jb25jYXQodGhpcy5kYXRhLmZpZWxkcy5maWxlcy5mbGF0TWFwKCh4KSA9PiB4LnNwbGl0KCc7JykpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgZ2V0IGF1dGhvclN0cmluZygpIHtcbiAgICBpZiAodGhpcy5kYXRhLmNyZWF0b3JzLmF1dGhvcikge1xuICAgICAgY29uc3QgbmFtZXMgPSB0aGlzLmRhdGEuY3JlYXRvcnMuYXV0aG9yLm1hcCgobmFtZSkgPT4ge1xuICAgICAgICBpZiAobmFtZS5saXRlcmFsKSByZXR1cm4gbmFtZS5saXRlcmFsO1xuICAgICAgICBjb25zdCBwYXJ0cyA9IFtuYW1lLmZpcnN0TmFtZSwgbmFtZS5wcmVmaXgsIG5hbWUubGFzdE5hbWUsIG5hbWUuc3VmZml4XTtcbiAgICAgICAgLy8gRHJvcCBhbnkgbnVsbCBwYXJ0cyBhbmQgam9pblxuICAgICAgICByZXR1cm4gcGFydHMuZmlsdGVyKCh4KSA9PiB4KS5qb2luKCcgJyk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBuYW1lcy5qb2luKCcsICcpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5kYXRhLmZpZWxkcy5hdXRob3I/LmpvaW4oJywgJyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGNvbnRhaW5lclRpdGxlKCkge1xuICAgIGlmICh0aGlzLl9jb250YWluZXJUaXRsZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2NvbnRhaW5lclRpdGxlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5kYXRhLmZpZWxkcy5lcHJpbnQpIHtcbiAgICAgIGNvbnN0IHByZWZpeCA9IHRoaXMuZGF0YS5maWVsZHMuZXByaW50dHlwZVxuICAgICAgICA/IGAke3RoaXMuZGF0YS5maWVsZHMuZXByaW50dHlwZX06YFxuICAgICAgICA6ICcnO1xuICAgICAgY29uc3Qgc3VmZml4ID0gdGhpcy5kYXRhLmZpZWxkcy5wcmltYXJ5Y2xhc3NcbiAgICAgICAgPyBgIFske3RoaXMuZGF0YS5maWVsZHMucHJpbWFyeWNsYXNzfV1gXG4gICAgICAgIDogJyc7XG4gICAgICByZXR1cm4gYCR7cHJlZml4fSR7dGhpcy5kYXRhLmZpZWxkcy5lcHJpbnR9JHtzdWZmaXh9YDtcbiAgICB9XG4gIH1cblxuICBnZXQgaXNzdWVkRGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pc3N1ZWQgPyBuZXcgRGF0ZSh0aGlzLmlzc3VlZCkgOiBudWxsO1xuICB9XG5cbiAgZ2V0IGF1dGhvcigpOiBBdXRob3JbXSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5jcmVhdG9ycy5hdXRob3I/Lm1hcCgoYSkgPT4gKHtcbiAgICAgIGdpdmVuOiBhLmZpcnN0TmFtZSxcbiAgICAgIGZhbWlseTogYS5sYXN0TmFtZSxcbiAgICB9KSk7XG4gIH1cbn1cbiIsImltcG9ydCB7XG4gIEFic3RyYWN0VGV4dENvbXBvbmVudCxcbiAgQXBwLFxuICBEcm9wZG93bkNvbXBvbmVudCxcbiAgRmlsZVN5c3RlbUFkYXB0ZXIsXG4gIFBsdWdpblNldHRpbmdUYWIsXG4gIFNldHRpbmcsXG59IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IENpdGF0aW9uUGx1Z2luIGZyb20gJy4vbWFpbic7XG5pbXBvcnQgeyBJSW5kZXhhYmxlLCBEYXRhYmFzZVR5cGUsIFRFTVBMQVRFX1ZBUklBQkxFUyB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBDSVRBVElPTl9EQVRBQkFTRV9GT1JNQVRfTEFCRUxTOiBSZWNvcmQ8RGF0YWJhc2VUeXBlLCBzdHJpbmc+ID0ge1xuICAnY3NsLWpzb24nOiAnQ1NMLUpTT04nLFxuICBiaWJsYXRleDogJ0JpYkxhVGVYJyxcbn07XG5cbmV4cG9ydCBjbGFzcyBDaXRhdGlvbnNQbHVnaW5TZXR0aW5ncyB7XG4gIHB1YmxpYyBjaXRhdGlvbkV4cG9ydFBhdGg6IHN0cmluZztcbiAgY2l0YXRpb25FeHBvcnRGb3JtYXQ6IERhdGFiYXNlVHlwZSA9ICdjc2wtanNvbic7XG5cbiAgbGl0ZXJhdHVyZU5vdGVUaXRsZVRlbXBsYXRlID0gJ0B7e2NpdGVrZXl9fSc7XG4gIGxpdGVyYXR1cmVOb3RlRm9sZGVyID0gJ1JlYWRpbmcgbm90ZXMnO1xuICBsaXRlcmF0dXJlTm90ZUNvbnRlbnRUZW1wbGF0ZTogc3RyaW5nID1cbiAgICAnLS0tXFxuJyArXG4gICAgJ3RpdGxlOiB7e3RpdGxlfX1cXG4nICtcbiAgICAnYXV0aG9yczoge3thdXRob3JTdHJpbmd9fVxcbicgK1xuICAgICd5ZWFyOiB7e3llYXJ9fVxcbicgK1xuICAgICctLS1cXG5cXG4nO1xuXG4gIG1hcmtkb3duQ2l0YXRpb25UZW1wbGF0ZSA9ICdbQHt7Y2l0ZWtleX19XSc7XG4gIGFsdGVybmF0aXZlTWFya2Rvd25DaXRhdGlvblRlbXBsYXRlID0gJ0B7e2NpdGVrZXl9fSc7XG59XG5cbmV4cG9ydCBjbGFzcyBDaXRhdGlvblNldHRpbmdUYWIgZXh0ZW5kcyBQbHVnaW5TZXR0aW5nVGFiIHtcbiAgcHJpdmF0ZSBwbHVnaW46IENpdGF0aW9uUGx1Z2luO1xuXG4gIGNpdGF0aW9uUGF0aExvYWRpbmdFbDogSFRNTEVsZW1lbnQ7XG4gIGNpdGF0aW9uUGF0aEVycm9yRWw6IEhUTUxFbGVtZW50O1xuICBjaXRhdGlvblBhdGhTdWNjZXNzRWw6IEhUTUxFbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKGFwcDogQXBwLCBwbHVnaW46IENpdGF0aW9uUGx1Z2luKSB7XG4gICAgc3VwZXIoYXBwLCBwbHVnaW4pO1xuICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xuICB9XG5cbiAgb3BlbigpOiB2b2lkIHtcbiAgICBzdXBlci5vcGVuKCk7XG4gICAgdGhpcy5jaGVja0NpdGF0aW9uRXhwb3J0UGF0aChcbiAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmNpdGF0aW9uRXhwb3J0UGF0aCxcbiAgICApLnRoZW4oKCkgPT4gdGhpcy5zaG93Q2l0YXRpb25FeHBvcnRQYXRoU3VjY2VzcygpKTtcbiAgfVxuXG4gIGFkZFZhbHVlQ2hhbmdlQ2FsbGJhY2s8VCBleHRlbmRzIEhUTUxUZXh0QXJlYUVsZW1lbnQgfCBIVE1MSW5wdXRFbGVtZW50PihcbiAgICBjb21wb25lbnQ6IEFic3RyYWN0VGV4dENvbXBvbmVudDxUPiB8IERyb3Bkb3duQ29tcG9uZW50LFxuICAgIHNldHRpbmdzS2V5OiBzdHJpbmcsXG4gICAgY2I/OiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCxcbiAgKTogdm9pZCB7XG4gICAgY29tcG9uZW50Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgICAgKHRoaXMucGx1Z2luLnNldHRpbmdzIGFzIElJbmRleGFibGUpW3NldHRpbmdzS2V5XSA9IHZhbHVlO1xuICAgICAgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCkudGhlbigoKSA9PiB7XG4gICAgICAgIGlmIChjYikge1xuICAgICAgICAgIGNiKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBidWlsZFZhbHVlSW5wdXQ8VCBleHRlbmRzIEhUTUxUZXh0QXJlYUVsZW1lbnQgfCBIVE1MSW5wdXRFbGVtZW50PihcbiAgICBjb21wb25lbnQ6IEFic3RyYWN0VGV4dENvbXBvbmVudDxUPiB8IERyb3Bkb3duQ29tcG9uZW50LFxuICAgIHNldHRpbmdzS2V5OiBzdHJpbmcsXG4gICAgY2I/OiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCxcbiAgKTogdm9pZCB7XG4gICAgY29tcG9uZW50LnNldFZhbHVlKCh0aGlzLnBsdWdpbi5zZXR0aW5ncyBhcyBJSW5kZXhhYmxlKVtzZXR0aW5nc0tleV0pO1xuICAgIHRoaXMuYWRkVmFsdWVDaGFuZ2VDYWxsYmFjayhjb21wb25lbnQsIHNldHRpbmdzS2V5LCBjYik7XG4gIH1cblxuICBkaXNwbGF5KCk6IHZvaWQge1xuICAgIGNvbnN0IHsgY29udGFpbmVyRWwgfSA9IHRoaXM7XG5cbiAgICBjb250YWluZXJFbC5lbXB0eSgpO1xuICAgIGNvbnRhaW5lckVsLnNldEF0dHIoJ2lkJywgJ3pvdGVyb1NldHRpbmdUYWInKTtcblxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMicsIHsgdGV4dDogJ0NpdGF0aW9uIHBsdWdpbiBzZXR0aW5ncycgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKCdDaXRhdGlvbiBkYXRhYmFzZSBmb3JtYXQnKVxuICAgICAgLmFkZERyb3Bkb3duKChjb21wb25lbnQpID0+XG4gICAgICAgIHRoaXMuYnVpbGRWYWx1ZUlucHV0KFxuICAgICAgICAgIGNvbXBvbmVudC5hZGRPcHRpb25zKENJVEFUSU9OX0RBVEFCQVNFX0ZPUk1BVF9MQUJFTFMpLFxuICAgICAgICAgICdjaXRhdGlvbkV4cG9ydEZvcm1hdCcsXG4gICAgICAgICAgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrQ2l0YXRpb25FeHBvcnRQYXRoKFxuICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jaXRhdGlvbkV4cG9ydFBhdGgsXG4gICAgICAgICAgICApLnRoZW4oKHN1Y2Nlc3MpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNpdGF0aW9uUGF0aFN1Y2Nlc3NFbC5hZGRDbGFzcygnZC1ub25lJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5jaXRhdGlvblBhdGhMb2FkaW5nRWwucmVtb3ZlQ2xhc3MoJ2Qtbm9uZScpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4ubG9hZExpYnJhcnkoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2l0YXRpb25QYXRoTG9hZGluZ0VsLmFkZENsYXNzKCdkLW5vbmUnKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0NpdGF0aW9uRXhwb3J0UGF0aFN1Y2Nlc3MoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgKSxcbiAgICAgICk7XG5cbiAgICAvLyBOQjogd2UgZm9yY2UgcmVsb2FkIG9mIHRoZSBsaWJyYXJ5IG9uIHBhdGggY2hhbmdlLlxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoJ0NpdGF0aW9uIGRhdGFiYXNlIHBhdGgnKVxuICAgICAgLnNldERlc2MoXG4gICAgICAgICdQYXRoIHRvIGNpdGF0aW9uIGxpYnJhcnkgZXhwb3J0ZWQgYnkgeW91ciByZWZlcmVuY2UgbWFuYWdlci4gJyArXG4gICAgICAgICAgJ0NhbiBiZSBhbiBhYnNvbHV0ZSBwYXRoIG9yIGEgcGF0aCByZWxhdGl2ZSB0byB0aGUgY3VycmVudCB2YXVsdCByb290IGZvbGRlci4gJyArXG4gICAgICAgICAgJ0NpdGF0aW9ucyB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgcmVsb2FkZWQgd2hlbmV2ZXIgdGhpcyBmaWxlIHVwZGF0ZXMuJyxcbiAgICAgIClcbiAgICAgIC5hZGRUZXh0KChpbnB1dCkgPT5cbiAgICAgICAgdGhpcy5idWlsZFZhbHVlSW5wdXQoXG4gICAgICAgICAgaW5wdXQuc2V0UGxhY2Vob2xkZXIoJy9wYXRoL3RvL2V4cG9ydC5qc29uJyksXG4gICAgICAgICAgJ2NpdGF0aW9uRXhwb3J0UGF0aCcsXG4gICAgICAgICAgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrQ2l0YXRpb25FeHBvcnRQYXRoKHZhbHVlKS50aGVuKFxuICAgICAgICAgICAgICAoc3VjY2VzcykgPT5cbiAgICAgICAgICAgICAgICBzdWNjZXNzICYmXG4gICAgICAgICAgICAgICAgdGhpcy5wbHVnaW5cbiAgICAgICAgICAgICAgICAgIC5sb2FkTGlicmFyeSgpXG4gICAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB0aGlzLnNob3dDaXRhdGlvbkV4cG9ydFBhdGhTdWNjZXNzKCkpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9LFxuICAgICAgICApLFxuICAgICAgKTtcblxuICAgIHRoaXMuY2l0YXRpb25QYXRoTG9hZGluZ0VsID0gY29udGFpbmVyRWwuY3JlYXRlRWwoJ3AnLCB7XG4gICAgICBjbHM6ICd6b3Rlcm9TZXR0aW5nQ2l0YXRpb25QYXRoTG9hZGluZyBkLW5vbmUnLFxuICAgICAgdGV4dDogJ0xvYWRpbmcgY2l0YXRpb24gZGF0YWJhc2UuLi4nLFxuICAgIH0pO1xuICAgIHRoaXMuY2l0YXRpb25QYXRoRXJyb3JFbCA9IGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdwJywge1xuICAgICAgY2xzOiAnem90ZXJvU2V0dGluZ0NpdGF0aW9uUGF0aEVycm9yIGQtbm9uZScsXG4gICAgICB0ZXh0OlxuICAgICAgICAnVGhlIGNpdGF0aW9uIGV4cG9ydCBmaWxlIGNhbm5vdCBiZSBmb3VuZC4gUGxlYXNlIGNoZWNrIHRoZSBwYXRoIGFib3ZlLicsXG4gICAgfSk7XG4gICAgdGhpcy5jaXRhdGlvblBhdGhTdWNjZXNzRWwgPSBjb250YWluZXJFbC5jcmVhdGVFbCgncCcsIHtcbiAgICAgIGNsczogJ3pvdGVyb1NldHRpbmdDaXRhdGlvblBhdGhTdWNjZXNzIGQtbm9uZScsXG4gICAgICB0ZXh0OiAnTG9hZGVkIGxpYnJhcnkgd2l0aCB7e259fSByZWZlcmVuY2VzLicsXG4gICAgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKCdMaXRlcmF0dXJlIG5vdGUgZm9sZGVyJylcbiAgICAgIC5hZGRUZXh0KChpbnB1dCkgPT4gdGhpcy5idWlsZFZhbHVlSW5wdXQoaW5wdXQsICdsaXRlcmF0dXJlTm90ZUZvbGRlcicpKVxuICAgICAgLnNldERlc2MoXG4gICAgICAgICdTYXZlIGxpdGVyYXR1cmUgbm90ZSBmaWxlcyBpbiB0aGlzIGZvbGRlciB3aXRoaW4geW91ciB2YXVsdC4gSWYgZW1wdHksIG5vdGVzIHdpbGwgYmUgc3RvcmVkIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgdmF1bHQuJyxcbiAgICAgICk7XG5cbiAgICBjb250YWluZXJFbC5jcmVhdGVFbCgnaDMnLCB7IHRleHQ6ICdUZW1wbGF0ZSBzZXR0aW5ncycgfSk7XG4gICAgY29uc3QgdGVtcGxhdGVJbnN0cnVjdGlvbnNFbCA9IGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdwJyk7XG4gICAgdGVtcGxhdGVJbnN0cnVjdGlvbnNFbC5hcHBlbmQoXG4gICAgICBjcmVhdGVTcGFuKHtcbiAgICAgICAgdGV4dDpcbiAgICAgICAgICAnVGhlIGZvbGxvd2luZyBzZXR0aW5ncyBkZXRlcm1pbmUgaG93IHRoZSBub3RlcyBhbmQgbGlua3MgY3JlYXRlZCBieSAnICtcbiAgICAgICAgICAndGhlIHBsdWdpbiB3aWxsIGJlIHJlbmRlcmVkLiBZb3UgbWF5IHNwZWNpZnkgYSBjdXN0b20gdGVtcGxhdGUgZm9yICcgK1xuICAgICAgICAgICdlYWNoIHR5cGUgb2YgY29udGVudC4gVGVtcGxhdGVzIGFyZSBpbnRlcnByZXRlZCB1c2luZyAnLFxuICAgICAgfSksXG4gICAgKTtcbiAgICB0ZW1wbGF0ZUluc3RydWN0aW9uc0VsLmFwcGVuZChcbiAgICAgIGNyZWF0ZUVsKCdhJywge1xuICAgICAgICB0ZXh0OiAnSGFuZGxlYmFycycsXG4gICAgICAgIGhyZWY6ICdodHRwczovL2hhbmRsZWJhcnNqcy5jb20vZ3VpZGUvZXhwcmVzc2lvbnMuaHRtbCcsXG4gICAgICB9KSxcbiAgICApO1xuICAgIHRlbXBsYXRlSW5zdHJ1Y3Rpb25zRWwuYXBwZW5kKFxuICAgICAgY3JlYXRlU3Bhbih7XG4gICAgICAgIHRleHQ6ICcgc3ludGF4LiBZb3UgY2FuIG1ha2UgcmVmZXJlbmNlIHRvIHRoZSBmb2xsb3dpbmcgdmFyaWFibGVzOicsXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgY29uc3QgdGVtcGxhdGVWYXJpYWJsZVVsID0gY29udGFpbmVyRWwuY3JlYXRlRWwoJ3VsJywge1xuICAgICAgYXR0cjogeyBpZDogJ2NpdGF0aW9uVGVtcGxhdGVWYXJpYWJsZXMnIH0sXG4gICAgfSk7XG4gICAgT2JqZWN0LmVudHJpZXMoVEVNUExBVEVfVkFSSUFCTEVTKS5mb3JFYWNoKCh2YXJpYWJsZURhdGEpID0+IHtcbiAgICAgIGNvbnN0IFtrZXksIGRlc2NyaXB0aW9uXSA9IHZhcmlhYmxlRGF0YSxcbiAgICAgICAgdGVtcGxhdGVWYXJpYWJsZUl0ZW0gPSB0ZW1wbGF0ZVZhcmlhYmxlVWwuY3JlYXRlRWwoJ2xpJyk7XG5cbiAgICAgIHRlbXBsYXRlVmFyaWFibGVJdGVtLmNyZWF0ZUVsKCdzcGFuJywge1xuICAgICAgICBjbHM6ICd0ZXh0LW1vbm9zcGFjZScsXG4gICAgICAgIHRleHQ6ICd7eycgKyBrZXkgKyAnfX0nLFxuICAgICAgfSk7XG5cbiAgICAgIHRlbXBsYXRlVmFyaWFibGVJdGVtLmNyZWF0ZUVsKCdzcGFuJywge1xuICAgICAgICB0ZXh0OiBkZXNjcmlwdGlvbiA/IGAg4oCUICR7ZGVzY3JpcHRpb259YCA6ICcnLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCB0ZW1wbGF0ZUVudHJ5SW5zdHJ1Y3Rpb25zRWwgPSBjb250YWluZXJFbC5jcmVhdGVFbCgncCcpO1xuICAgIHRlbXBsYXRlRW50cnlJbnN0cnVjdGlvbnNFbC5hcHBlbmQoXG4gICAgICBjcmVhdGVTcGFuKHsgdGV4dDogJ0FkdmFuY2VkIHVzZXJzIG1heSBhbHNvIHJlZmVyIHRvIHRoZSAnIH0pLFxuICAgICAgY3JlYXRlU3Bhbih7IHRleHQ6ICd7e2VudHJ5fX0nLCBjbHM6ICd0ZXh0LW1vbm9zcGFjZScgfSksXG4gICAgICBjcmVhdGVTcGFuKHtcbiAgICAgICAgdGV4dDpcbiAgICAgICAgICAnIHZhcmlhYmxlLCB3aGljaCBjb250YWlucyB0aGUgZnVsbCBvYmplY3QgcmVwcmVzZW50YXRpb24gb2YgdGhlICcgK1xuICAgICAgICAgICdyZWZlcmVuY2UgYXMgdXNlZCBpbnRlcm5hbGx5IGJ5IHRoZSBwbHVnaW4uIFNlZSB0aGUgJyxcbiAgICAgIH0pLFxuICAgICAgY3JlYXRlRWwoJ2EnLCB7XG4gICAgICAgIHRleHQ6ICdwbHVnaW4gZG9jdW1lbnRhdGlvbicsXG4gICAgICAgIGhyZWY6ICdodHRwOi8vd3d3LmZvbGRsLm1lL29ic2lkaWFuLWNpdGF0aW9uLXBsdWdpbi9jbGFzc2VzL2VudHJ5Lmh0bWwnLFxuICAgICAgfSksXG4gICAgICBjcmVhdGVTcGFuKHsgdGV4dDogXCIgZm9yIGluZm9ybWF0aW9uIG9uIHRoaXMgb2JqZWN0J3Mgc3RydWN0dXJlLlwiIH0pLFxuICAgICk7XG5cbiAgICBjb250YWluZXJFbC5jcmVhdGVFbCgnaDMnLCB7IHRleHQ6ICdMaXRlcmF0dXJlIG5vdGUgdGVtcGxhdGVzJyB9KTtcblxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgLnNldE5hbWUoJ0xpdGVyYXR1cmUgbm90ZSB0aXRsZSB0ZW1wbGF0ZScpXG4gICAgICAuYWRkVGV4dCgoaW5wdXQpID0+XG4gICAgICAgIHRoaXMuYnVpbGRWYWx1ZUlucHV0KGlucHV0LCAnbGl0ZXJhdHVyZU5vdGVUaXRsZVRlbXBsYXRlJyksXG4gICAgICApO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZSgnTGl0ZXJhdHVyZSBub3RlIGNvbnRlbnQgdGVtcGxhdGUnKVxuICAgICAgLmFkZFRleHRBcmVhKChpbnB1dCkgPT5cbiAgICAgICAgdGhpcy5idWlsZFZhbHVlSW5wdXQoaW5wdXQsICdsaXRlcmF0dXJlTm90ZUNvbnRlbnRUZW1wbGF0ZScpLFxuICAgICAgKTtcblxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMycsIHsgdGV4dDogJ01hcmtkb3duIGNpdGF0aW9uIHRlbXBsYXRlcycgfSk7XG4gICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ3AnLCB7XG4gICAgICB0ZXh0OlxuICAgICAgICAnWW91IGNhbiBpbnNlcnQgUGFuZG9jLXN0eWxlIE1hcmtkb3duIGNpdGF0aW9ucyByYXRoZXIgdGhhbiBsaXRlcmF0dXJlIG5vdGVzIGJ5IHVzaW5nIHRoZSBcIkluc2VydCBNYXJrZG93biBjaXRhdGlvblwiIGNvbW1hbmQuIFRoZSBiZWxvdyBvcHRpb25zIGFsbG93IGN1c3RvbWl6YXRpb24gb2YgdGhlIE1hcmtkb3duIGNpdGF0aW9uIGZvcm1hdC4nLFxuICAgIH0pO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZSgnTWFya2Rvd24gcHJpbWFyeSBjaXRhdGlvbiB0ZW1wbGF0ZScpXG4gICAgICAuYWRkVGV4dCgoaW5wdXQpID0+XG4gICAgICAgIHRoaXMuYnVpbGRWYWx1ZUlucHV0KGlucHV0LCAnbWFya2Rvd25DaXRhdGlvblRlbXBsYXRlJyksXG4gICAgICApO1xuXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAuc2V0TmFtZSgnTWFya2Rvd24gc2Vjb25kYXJ5IGNpdGF0aW9uIHRlbXBsYXRlJylcbiAgICAgIC5hZGRUZXh0KChpbnB1dCkgPT5cbiAgICAgICAgdGhpcy5idWlsZFZhbHVlSW5wdXQoaW5wdXQsICdhbHRlcm5hdGl2ZU1hcmtkb3duQ2l0YXRpb25UZW1wbGF0ZScpLFxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRydWUgaWZmIHRoZSBwYXRoIGV4aXN0czsgZGlzcGxheXMgZXJyb3IgYXMgYSBzaWRlLWVmZmVjdFxuICAgKi9cbiAgYXN5bmMgY2hlY2tDaXRhdGlvbkV4cG9ydFBhdGgoZmlsZVBhdGg6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRoaXMuY2l0YXRpb25QYXRoTG9hZGluZ0VsLmFkZENsYXNzKCdkLW5vbmUnKTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBGaWxlU3lzdGVtQWRhcHRlci5yZWFkTG9jYWxGaWxlKFxuICAgICAgICB0aGlzLnBsdWdpbi5yZXNvbHZlTGlicmFyeVBhdGgoZmlsZVBhdGgpLFxuICAgICAgKTtcbiAgICAgIHRoaXMuY2l0YXRpb25QYXRoRXJyb3JFbC5hZGRDbGFzcygnZC1ub25lJyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5jaXRhdGlvblBhdGhTdWNjZXNzRWwuYWRkQ2xhc3MoJ2Qtbm9uZScpO1xuICAgICAgdGhpcy5jaXRhdGlvblBhdGhFcnJvckVsLnJlbW92ZUNsYXNzKCdkLW5vbmUnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHNob3dDaXRhdGlvbkV4cG9ydFBhdGhTdWNjZXNzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5wbHVnaW4ubGlicmFyeSkgcmV0dXJuO1xuXG4gICAgdGhpcy5jaXRhdGlvblBhdGhTdWNjZXNzRWwuc2V0VGV4dChcbiAgICAgIGBMb2FkZWQgbGlicmFyeSB3aXRoICR7dGhpcy5wbHVnaW4ubGlicmFyeS5zaXplfSByZWZlcmVuY2VzLmAsXG4gICAgKTtcbiAgICB0aGlzLmNpdGF0aW9uUGF0aFN1Y2Nlc3NFbC5yZW1vdmVDbGFzcygnZC1ub25lJyk7XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgbWVzc2FnZUlkcyA9IDBcblxuZnVuY3Rpb24gb25NZXNzYWdlIChzZWxmLCBlKSB7XG4gIHZhciBtZXNzYWdlID0gZS5kYXRhXG4gIGlmICghQXJyYXkuaXNBcnJheShtZXNzYWdlKSB8fCBtZXNzYWdlLmxlbmd0aCA8IDIpIHtcbiAgICAvLyBJZ25vcmUgLSB0aGlzIG1lc3NhZ2UgaXMgbm90IGZvciB1cy5cbiAgICByZXR1cm5cbiAgfVxuICB2YXIgbWVzc2FnZUlkID0gbWVzc2FnZVswXVxuICB2YXIgZXJyb3IgPSBtZXNzYWdlWzFdXG4gIHZhciByZXN1bHQgPSBtZXNzYWdlWzJdXG5cbiAgdmFyIGNhbGxiYWNrID0gc2VsZi5fY2FsbGJhY2tzW21lc3NhZ2VJZF1cblxuICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgLy8gSWdub3JlIC0gdXNlciBtaWdodCBoYXZlIGNyZWF0ZWQgbXVsdGlwbGUgUHJvbWlzZVdvcmtlcnMuXG4gICAgLy8gVGhpcyBtZXNzYWdlIGlzIG5vdCBmb3IgdXMuXG4gICAgcmV0dXJuXG4gIH1cblxuICBkZWxldGUgc2VsZi5fY2FsbGJhY2tzW21lc3NhZ2VJZF1cbiAgY2FsbGJhY2soZXJyb3IsIHJlc3VsdClcbn1cblxuZnVuY3Rpb24gUHJvbWlzZVdvcmtlciAod29ya2VyKSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICBzZWxmLl93b3JrZXIgPSB3b3JrZXJcbiAgc2VsZi5fY2FsbGJhY2tzID0ge31cblxuICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGZ1bmN0aW9uIChlKSB7XG4gICAgb25NZXNzYWdlKHNlbGYsIGUpXG4gIH0pXG59XG5cblByb21pc2VXb3JrZXIucHJvdG90eXBlLnBvc3RNZXNzYWdlID0gZnVuY3Rpb24gKHVzZXJNZXNzYWdlKSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgbWVzc2FnZUlkID0gbWVzc2FnZUlkcysrXG5cbiAgdmFyIG1lc3NhZ2VUb1NlbmQgPSBbbWVzc2FnZUlkLCB1c2VyTWVzc2FnZV1cblxuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHNlbGYuX2NhbGxiYWNrc1ttZXNzYWdlSWRdID0gZnVuY3Rpb24gKGVycm9yLCByZXN1bHQpIHtcbiAgICAgIGlmIChlcnJvcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcihlcnJvci5tZXNzYWdlKSlcbiAgICAgIH1cbiAgICAgIHJlc29sdmUocmVzdWx0KVxuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICAgIGlmICh0eXBlb2Ygc2VsZi5fd29ya2VyLmNvbnRyb2xsZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvLyBzZXJ2aWNlIHdvcmtlciwgdXNlIE1lc3NhZ2VDaGFubmVscyBiZWNhdXNlIGUuc291cmNlIGlzIGJyb2tlbiBpbiBDaHJvbWUgPCA1MTpcbiAgICAgIC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTU0MzE5OFxuICAgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKVxuICAgICAgY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICBvbk1lc3NhZ2Uoc2VsZiwgZSlcbiAgICAgIH1cbiAgICAgIHNlbGYuX3dvcmtlci5jb250cm9sbGVyLnBvc3RNZXNzYWdlKG1lc3NhZ2VUb1NlbmQsIFtjaGFubmVsLnBvcnQyXSlcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gd2ViIHdvcmtlclxuICAgICAgc2VsZi5fd29ya2VyLnBvc3RNZXNzYWdlKG1lc3NhZ2VUb1NlbmQpXG4gICAgfVxuICB9KVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFByb21pc2VXb3JrZXJcbiIsIi8qKlxuICogRGVjbGFyZXMgcHJvcGVydGllcyBhbmQgbWV0aG9kcyB3aGljaCBhcmUgbWlzc2luZyBmcm9tIHRoZSBPYnNpZGlhbiBBUEkuXG4gKi9cblxuaW1wb3J0IHsgTm90aWNlIH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5leHBvcnQgY2xhc3MgTm90aWNlRXh0IGV4dGVuZHMgTm90aWNlIHtcbiAgc3RhdGljIERJU0FQUEVBUklOR19DTEFTUyA9ICdtb2QtZGlzYXBwZWFyaW5nJztcblxuICBub3RpY2VFbDogSFRNTEVsZW1lbnQ7XG59XG4iLCJpbXBvcnQgeyBOb3RpY2UgfSBmcm9tICdvYnNpZGlhbic7XG5cbmltcG9ydCBQcm9taXNlV29ya2VyIGZyb20gJ3Byb21pc2Utd29ya2VyJztcblxuaW1wb3J0IHsgTm90aWNlRXh0IH0gZnJvbSAnLi9vYnNpZGlhbi1leHRlbnNpb25zJztcblxuZXhwb3J0IGNvbnN0IERJU0FMTE9XRURfRklMRU5BTUVfQ0hBUkFDVEVSU19SRSA9IC9bKlwiXFxcXC88Pjp8P10vZztcblxuLyoqXG4gKiBNYW5hZ2VzIGEgY2F0ZWdvcnkgb2Ygbm90aWNlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIFVJLiBQcmV2ZW50cyBtdWx0aXBsZVxuICogbm90aWNlcyBiZWluZyBzaG93biBhdCB0aGUgc2FtZSB0aW1lLlxuICovXG5leHBvcnQgY2xhc3MgTm90aWZpZXIge1xuICBzdGF0aWMgRElTQVBQRUFSSU5HX0NMQVNTID0gJ21vZC1kaXNhcHBlYXJpbmcnO1xuICBjdXJyZW50Tm90aWNlPzogTm90aWNlRXh0O1xuICBtdXRhdGlvbk9ic2VydmVyPzogTXV0YXRpb25PYnNlcnZlcjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZGVmYXVsdE1lc3NhZ2U6IHN0cmluZykge31cblxuICB1bmxvYWQoKTogdm9pZCB7XG4gICAgdGhpcy5oaWRlKCk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgbm90aWNlIHdhcyBzaG93biwgYW5kIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgc2hvdyhtZXNzYWdlPzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgbWVzc2FnZSA9IG1lc3NhZ2UgfHwgdGhpcy5kZWZhdWx0TWVzc2FnZTtcbiAgICBpZiAodGhpcy5jdXJyZW50Tm90aWNlKSByZXR1cm4gZmFsc2U7XG5cbiAgICB0aGlzLmN1cnJlbnROb3RpY2UgPSBuZXcgTm90aWNlKG1lc3NhZ2UpIGFzIE5vdGljZUV4dDtcblxuICAgIC8vIFNldCB1cCBtdXRhdGlvbiBvYnNlcnZlciB0byB3YXRjaCBmb3Igd2hlbiB0aGUgbm90aWNlIGRpc2FwcGVhcnMuXG4gICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKGNoYW5nZXMsIG9ic2VydmVyKSA9PiB7XG4gICAgICBjb25zdCBpc0Rpc2FwcGVhcmluZyA9IGNoYW5nZXMuc29tZSgoY2hhbmdlKSA9PiB7XG4gICAgICAgIGNvbnN0IGVsID0gY2hhbmdlLnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBjaGFuZ2UudHlwZSA9PSAnYXR0cmlidXRlcycgJiZcbiAgICAgICAgICBlbC5oYXNDbGFzcyhOb3RpY2VFeHQuRElTQVBQRUFSSU5HX0NMQVNTKVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICBpZiAoaXNEaXNhcHBlYXJpbmcpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50Tm90aWNlID0gbnVsbDtcbiAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIgPSBudWxsO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMubXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKHRoaXMuY3VycmVudE5vdGljZS5ub3RpY2VFbCwge1xuICAgICAgYXR0cmlidXRlRmlsdGVyOiBbJ2NsYXNzJ10sXG4gICAgfSk7XG4gIH1cblxuICBoaWRlKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudE5vdGljZT8uaGlkZSgpO1xuICAgIHRoaXMubXV0YXRpb25PYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuXG4gICAgdGhpcy5jdXJyZW50Tm90aWNlID0gbnVsbDtcbiAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIgPSBudWxsO1xuICB9XG59XG5cbi8qKlxuICogTWFuYWdlcyBhIFdvcmtlciwgcmVjb3JkaW5nIGl0cyBzdGF0ZSBhbmQgb3B0aW9uYWxseSBwcmV2ZW50aW5nXG4gKiBtZXNzYWdlIHBvc3RpbmdzIGJlZm9yZSByZXNwb25zZXMgdG8gcHJpb3IgbWVzc2FnZXMgaGF2ZSBiZWVuIHJlY2VpdmVkLlxuICovXG5leHBvcnQgY2xhc3MgV29ya2VyTWFuYWdlciB7XG4gIHByaXZhdGUgd29ya2VyID0gbmV3IFByb21pc2VXb3JrZXIodGhpcy5fd29ya2VyKTtcbiAgb3B0aW9uczogV29ya2VyTWFuYWdlck9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIE9ubHkgcmVsZXZhbnQgd2hlbiBgYmxvY2tpbmdDaGFubmVsYCBvcHRpb24gaXMgdHJ1ZS5cbiAgICogVGhlbiB0aGlzIHByb3BlcnR5IGlzIHRydWUgaWZmIHRoZSB3b3JrZXIgaXMgY3VycmVudGx5IHByb2Nlc3NpbmcgYVxuICAgKiByZWNlaXZlZCBtZXNzYWdlLCBhbmQgaGFzIG5vdCB5ZXQgcG9zdGVkIGEgcmVzcG9uc2UuXG4gICAqL1xuICBibG9ja2VkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfd29ya2VyOiBXb3JrZXIsIG9wdGlvbnM6IFdvcmtlck1hbmFnZXJPcHRpb25zKSB7XG4gICAgdGhpcy5vcHRpb25zID0geyAuLi53b3JrZXJNYW5hZ2VyRGVmYXVsdE9wdGlvbnMsIC4uLm9wdGlvbnMgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRlbXB0IHRvIHBvc3QgYSBtZXNzYWdlIHRvIHRoZSB3b3JrZXIgYW5kIHJldHVybiBhIHByb21pc2UgcmVzcG9uc2UuXG4gICAqXG4gICAqIElmIGBibG9ja2luZ0NoYW5uZWxgIG9wdGlvbiBpcyB0cnVlIGFuZCB0aGUgY2hhbm5lbCBpcyBjdXJyZW50bHkgYmxvY2tlZCxcbiAgICogdGhlIG1lc3NhZ2Ugd2lsbCBiZSBkaXNjYXJkZWQgYW5kIGFuIGVycm9yIHdpbGwgYmUgdGhyb3duLlxuICAgKi9cbiAgYXN5bmMgcG9zdDxUUmVzdWx0ID0gYW55LCBUSW5wdXQgPSBhbnk+KG1zZzogVElucHV0KTogUHJvbWlzZTxUUmVzdWx0PiB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5ibG9ja2luZ0NoYW5uZWwgJiYgdGhpcy5ibG9ja2VkKSB7XG4gICAgICB0aHJvdyBuZXcgV29ya2VyTWFuYWdlckJsb2NrZWQoKTtcbiAgICB9XG5cbiAgICB0aGlzLmJsb2NrZWQgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzLndvcmtlci5wb3N0TWVzc2FnZShtc2cpLnRoZW4oXG4gICAgICAocmVzdWx0KSA9PiB7XG4gICAgICAgIHRoaXMuYmxvY2tlZCA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSxcbiAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLmJsb2NrZWQgPSBmYWxzZTtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9LFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFdvcmtlck1hbmFnZXJCbG9ja2VkIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcignV29ya2VyTWFuYWdlcjogZGlzY2FyZGVkIG1lc3NhZ2UgYmVjYXVzZSBjaGFubmVsIGlzIGJsb2NrZWQnKTtcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YodGhpcywgV29ya2VyTWFuYWdlckJsb2NrZWQucHJvdG90eXBlKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtlck1hbmFnZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIElmIHRydWUsIHRyZWF0IHRoZSB3b3JrZXIgY2hhbm5lbCBhcyBibG9ja2luZyAtLSB3aGVuIHRoZSB3b3JrZXIgcmVjZWl2ZXNcbiAgICogYSBtZXNzYWdlLCBubyBvdGhlciBtZXNzYWdlcyBjYW4gYmUgc2VudCB1bnRpbCB0aGUgd29ya2VyIHNlbmRzIGEgbWVzc2FnZS5cbiAgICogTWVzc2FnZXMgd2hpY2ggYXJlIHNlbnQgZHVyaW5nIHRoZSBibG9ja2luZyBwZXJpb2Qgd2lsbCBiZSBkaXNjYXJkZWQuXG4gICAqL1xuICBibG9ja2luZ0NoYW5uZWw6IGJvb2xlYW47XG59XG5cbmNvbnN0IHdvcmtlck1hbmFnZXJEZWZhdWx0T3B0aW9uczogV29ya2VyTWFuYWdlck9wdGlvbnMgPSB7XG4gIGJsb2NraW5nQ2hhbm5lbDogZmFsc2UsXG59O1xuIiwiaW1wb3J0IHtcbiAgRmlsZVN5c3RlbUFkYXB0ZXIsXG4gIE1hcmtkb3duU291cmNlVmlldyxcbiAgTWFya2Rvd25WaWV3LFxuICBub3JtYWxpemVQYXRoLFxuICBQbHVnaW4sXG4gIFRGaWxlLFxufSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgY2hva2lkYXIgZnJvbSAnY2hva2lkYXInO1xuaW1wb3J0ICogYXMgQ29kZU1pcnJvciBmcm9tICdjb2RlbWlycm9yJztcblxuaW1wb3J0IHtcbiAgY29tcGlsZSBhcyBjb21waWxlVGVtcGxhdGUsXG4gIFRlbXBsYXRlRGVsZWdhdGUgYXMgVGVtcGxhdGUsXG59IGZyb20gJ2hhbmRsZWJhcnMnO1xuXG5cbmltcG9ydCBDaXRhdGlvbkV2ZW50cyBmcm9tICcuL2V2ZW50cyc7XG5pbXBvcnQge1xuICBJbnNlcnRDaXRhdGlvbk1vZGFsLFxuICBJbnNlcnROb3RlTGlua01vZGFsLFxuICBJbnNlcnROb3RlQ29udGVudE1vZGFsLFxuICBPcGVuTm90ZU1vZGFsLFxufSBmcm9tICcuL21vZGFscyc7XG5pbXBvcnQgeyBWYXVsdEV4dCB9IGZyb20gJy4vb2JzaWRpYW4tZXh0ZW5zaW9ucy5kJztcbmltcG9ydCB7IENpdGF0aW9uU2V0dGluZ1RhYiwgQ2l0YXRpb25zUGx1Z2luU2V0dGluZ3MgfSBmcm9tICcuL3NldHRpbmdzJztcbmltcG9ydCB7XG4gIEVudHJ5LFxuICBFbnRyeURhdGEsXG4gIEVudHJ5QmliTGFUZVhBZGFwdGVyLFxuICBFbnRyeUNTTEFkYXB0ZXIsXG4gIElJbmRleGFibGUsXG4gIExpYnJhcnksXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgRElTQUxMT1dFRF9GSUxFTkFNRV9DSEFSQUNURVJTX1JFLFxuICBOb3RpZmllcixcbiAgV29ya2VyTWFuYWdlcixcbiAgV29ya2VyTWFuYWdlckJsb2NrZWQsXG59IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgTG9hZFdvcmtlciBmcm9tICd3ZWItd29ya2VyOi4vd29ya2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2l0YXRpb25QbHVnaW4gZXh0ZW5kcyBQbHVnaW4ge1xuICBzZXR0aW5nczogQ2l0YXRpb25zUGx1Z2luU2V0dGluZ3M7XG4gIGxpYnJhcnk6IExpYnJhcnk7XG5cbiAgLy8gVGVtcGxhdGUgY29tcGlsYXRpb24gb3B0aW9uc1xuICBwcml2YXRlIHRlbXBsYXRlU2V0dGluZ3MgPSB7XG4gICAgbm9Fc2NhcGU6IHRydWUsXG4gIH07XG5cbiAgcHJpdmF0ZSBsb2FkV29ya2VyID0gbmV3IFdvcmtlck1hbmFnZXIobmV3IExvYWRXb3JrZXIoKSwge1xuICAgIGJsb2NraW5nQ2hhbm5lbDogdHJ1ZSxcbiAgfSk7XG5cbiAgZXZlbnRzID0gbmV3IENpdGF0aW9uRXZlbnRzKCk7XG5cbiAgbG9hZEVycm9yTm90aWZpZXIgPSBuZXcgTm90aWZpZXIoXG4gICAgJ1VuYWJsZSB0byBsb2FkIGNpdGF0aW9ucy4gUGxlYXNlIHVwZGF0ZSBDaXRhdGlvbnMgcGx1Z2luIHNldHRpbmdzLicsXG4gICk7XG4gIGxpdGVyYXR1cmVOb3RlRXJyb3JOb3RpZmllciA9IG5ldyBOb3RpZmllcihcbiAgICAnVW5hYmxlIHRvIGFjY2VzcyBsaXRlcmF0dXJlIG5vdGUuIFBsZWFzZSBjaGVjayB0aGF0IHRoZSBsaXRlcmF0dXJlIG5vdGUgZm9sZGVyIGV4aXN0cywgb3IgdXBkYXRlIHRoZSBDaXRhdGlvbnMgcGx1Z2luIHNldHRpbmdzLicsXG4gICk7XG5cbiAgZ2V0IGVkaXRvcigpOiBDb2RlTWlycm9yLkVkaXRvciB7XG4gICAgY29uc3QgdmlldyA9IHRoaXMuYXBwLndvcmtzcGFjZS5hY3RpdmVMZWFmLnZpZXc7XG4gICAgaWYgKCEodmlldyBpbnN0YW5jZW9mIE1hcmtkb3duVmlldykpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3Qgc291cmNlVmlldyA9IHZpZXcuc291cmNlTW9kZTtcbiAgICByZXR1cm4gKHNvdXJjZVZpZXcgYXMgTWFya2Rvd25Tb3VyY2VWaWV3KS5jbUVkaXRvcjtcbiAgfVxuXG4gIGFzeW5jIGxvYWRTZXR0aW5ncygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnNldHRpbmdzID0gbmV3IENpdGF0aW9uc1BsdWdpblNldHRpbmdzKCk7XG5cbiAgICBjb25zdCBsb2FkZWRTZXR0aW5ncyA9IGF3YWl0IHRoaXMubG9hZERhdGEoKTtcbiAgICBpZiAoIWxvYWRlZFNldHRpbmdzKSByZXR1cm47XG5cbiAgICBjb25zdCB0b0xvYWQgPSBbXG4gICAgICAnY2l0YXRpb25FeHBvcnRQYXRoJyxcbiAgICAgICdjaXRhdGlvbkV4cG9ydEZvcm1hdCcsXG4gICAgICAnbGl0ZXJhdHVyZU5vdGVUaXRsZVRlbXBsYXRlJyxcbiAgICAgICdsaXRlcmF0dXJlTm90ZUZvbGRlcicsXG4gICAgICAnbGl0ZXJhdHVyZU5vdGVDb250ZW50VGVtcGxhdGUnLFxuICAgICAgJ21hcmtkb3duQ2l0YXRpb25UZW1wbGF0ZScsXG4gICAgICAnYWx0ZXJuYXRpdmVNYXJrZG93bkNpdGF0aW9uVGVtcGxhdGUnLFxuICAgIF07XG4gICAgdG9Mb2FkLmZvckVhY2goKHNldHRpbmcpID0+IHtcbiAgICAgIGlmIChzZXR0aW5nIGluIGxvYWRlZFNldHRpbmdzKSB7XG4gICAgICAgICh0aGlzLnNldHRpbmdzIGFzIElJbmRleGFibGUpW3NldHRpbmddID0gbG9hZGVkU2V0dGluZ3Nbc2V0dGluZ107XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzYXZlU2V0dGluZ3MoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcbiAgfVxuXG4gIG9ubG9hZCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRTZXR0aW5ncygpLnRoZW4oKCkgPT4gdGhpcy5pbml0KCkpO1xuICB9XG5cbiAgYXN5bmMgaW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5zZXR0aW5ncy5jaXRhdGlvbkV4cG9ydFBhdGgpIHtcbiAgICAgIC8vIExvYWQgbGlicmFyeSBmb3IgdGhlIGZpcnN0IHRpbWVcbiAgICAgIHRoaXMubG9hZExpYnJhcnkoKTtcblxuICAgICAgLy8gU2V0IHVwIGEgd2F0Y2hlciB0byByZWZyZXNoIHdoZW5ldmVyIHRoZSBleHBvcnQgaXMgdXBkYXRlZFxuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gV2FpdCB1bnRpbCBmaWxlcyBhcmUgZmluaXNoZWQgYmVpbmcgd3JpdHRlbiBiZWZvcmUgZ29pbmcgYWhlYWQgd2l0aFxuICAgICAgICAvLyB0aGUgcmVmcmVzaCAtLSBoZXJlLCB3ZSByZXF1ZXN0IHRoYXQgYGNoYW5nZWAgZXZlbnRzIGJlIGFjY3VtdWxhdGVkXG4gICAgICAgIC8vIHVudGlsIG5vdGhpbmcgc2hvd3MgdXAgZm9yIDUwMCBtc1xuICAgICAgICAvLyBUT0RPIG1hZ2ljIG51bWJlclxuICAgICAgICBjb25zdCB3YXRjaE9wdGlvbnMgPSB7XG4gICAgICAgICAgYXdhaXRXcml0ZUZpbmlzaDoge1xuICAgICAgICAgICAgc3RhYmlsaXR5VGhyZXNob2xkOiA1MDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgICBjaG9raWRhclxuICAgICAgICAgIC53YXRjaChcbiAgICAgICAgICAgIHRoaXMucmVzb2x2ZUxpYnJhcnlQYXRoKHRoaXMuc2V0dGluZ3MuY2l0YXRpb25FeHBvcnRQYXRoKSxcbiAgICAgICAgICAgIHdhdGNoT3B0aW9ucyxcbiAgICAgICAgICApXG4gICAgICAgICAgLm9uKCdjaGFuZ2UnLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRMaWJyYXJ5KCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgdGhpcy5sb2FkRXJyb3JOb3RpZmllci5zaG93KCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRPRE8gc2hvdyB3YXJuaW5nP1xuICAgIH1cblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogJ29wZW4tbGl0ZXJhdHVyZS1ub3RlJyxcbiAgICAgIG5hbWU6ICdPcGVuIGxpdGVyYXR1cmUgbm90ZScsXG4gICAgICBob3RrZXlzOiBbeyBtb2RpZmllcnM6IFsnQ3RybCcsICdTaGlmdCddLCBrZXk6ICdvJyB9XSxcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG1vZGFsID0gbmV3IE9wZW5Ob3RlTW9kYWwodGhpcy5hcHAsIHRoaXMpO1xuICAgICAgICBtb2RhbC5vcGVuKCk7XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiAndXBkYXRlLWJpYi1kYXRhJyxcbiAgICAgIG5hbWU6ICdSZWZyZXNoIGNpdGF0aW9uIGRhdGFiYXNlJyxcbiAgICAgIGhvdGtleXM6IFt7IG1vZGlmaWVyczogWydDdHJsJywgJ1NoaWZ0J10sIGtleTogJ3InIH1dLFxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkTGlicmFyeSgpO1xuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogJ2luc2VydC1jaXRhdGlvbicsXG4gICAgICBuYW1lOiAnSW5zZXJ0IGxpdGVyYXR1cmUgbm90ZSBsaW5rJyxcbiAgICAgIGhvdGtleXM6IFt7IG1vZGlmaWVyczogWydDdHJsJywgJ1NoaWZ0J10sIGtleTogJ2UnIH1dLFxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcbiAgICAgICAgY29uc3QgbW9kYWwgPSBuZXcgSW5zZXJ0Tm90ZUxpbmtNb2RhbCh0aGlzLmFwcCwgdGhpcyk7XG4gICAgICAgIG1vZGFsLm9wZW4oKTtcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6ICdpbnNlcnQtbGl0ZXJhdHVyZS1ub3RlLWNvbnRlbnQnLFxuICAgICAgbmFtZTogJ0luc2VydCBsaXRlcmF0dXJlIG5vdGUgY29udGVudCBpbiB0aGUgY3VycmVudCBwYW5lJyxcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG1vZGFsID0gbmV3IEluc2VydE5vdGVDb250ZW50TW9kYWwodGhpcy5hcHAsIHRoaXMpO1xuICAgICAgICBtb2RhbC5vcGVuKCk7XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiAnaW5zZXJ0LW1hcmtkb3duLWNpdGF0aW9uJyxcbiAgICAgIG5hbWU6ICdJbnNlcnQgTWFya2Rvd24gY2l0YXRpb24nLFxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcbiAgICAgICAgY29uc3QgbW9kYWwgPSBuZXcgSW5zZXJ0Q2l0YXRpb25Nb2RhbCh0aGlzLmFwcCwgdGhpcyk7XG4gICAgICAgIG1vZGFsLm9wZW4oKTtcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZFNldHRpbmdUYWIobmV3IENpdGF0aW9uU2V0dGluZ1RhYih0aGlzLmFwcCwgdGhpcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgYSBwcm92aWRlZCBsaWJyYXJ5IHBhdGgsIGFsbG93aW5nIGZvciByZWxhdGl2ZSBwYXRocyByb290ZWQgYXRcbiAgICogdGhlIHZhdWx0IGRpcmVjdG9yeS5cbiAgICovXG4gIHJlc29sdmVMaWJyYXJ5UGF0aChyYXdQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHZhdWx0Um9vdCA9XG4gICAgICB0aGlzLmFwcC52YXVsdC5hZGFwdGVyIGluc3RhbmNlb2YgRmlsZVN5c3RlbUFkYXB0ZXJcbiAgICAgICAgPyB0aGlzLmFwcC52YXVsdC5hZGFwdGVyLmdldEJhc2VQYXRoKClcbiAgICAgICAgOiAnLyc7XG4gICAgcmV0dXJuIHBhdGgucmVzb2x2ZSh2YXVsdFJvb3QsIHJhd1BhdGgpO1xuICB9XG5cbiAgYXN5bmMgbG9hZExpYnJhcnkoKTogUHJvbWlzZTxMaWJyYXJ5PiB7XG4gICAgY29uc29sZS5kZWJ1ZygnQ2l0YXRpb24gcGx1Z2luOiBSZWxvYWRpbmcgbGlicmFyeScpO1xuICAgIGlmICh0aGlzLnNldHRpbmdzLmNpdGF0aW9uRXhwb3J0UGF0aCkge1xuICAgICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLnJlc29sdmVMaWJyYXJ5UGF0aChcbiAgICAgICAgdGhpcy5zZXR0aW5ncy5jaXRhdGlvbkV4cG9ydFBhdGgsXG4gICAgICApO1xuXG4gICAgICAvLyBVbmxvYWQgY3VycmVudCBsaWJyYXJ5LlxuICAgICAgdGhpcy5ldmVudHMudHJpZ2dlcignbGlicmFyeS1sb2FkLXN0YXJ0Jyk7XG4gICAgICB0aGlzLmxpYnJhcnkgPSBudWxsO1xuXG4gICAgICByZXR1cm4gRmlsZVN5c3RlbUFkYXB0ZXIucmVhZExvY2FsRmlsZShmaWxlUGF0aClcbiAgICAgICAgLnRoZW4oKGJ1ZmZlcikgPT4ge1xuICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGEgcmVtYWluaW5nIGVycm9yIG1lc3NhZ2UsIGhpZGUgaXRcbiAgICAgICAgICB0aGlzLmxvYWRFcnJvck5vdGlmaWVyLmhpZGUoKTtcblxuICAgICAgICAgIC8vIERlY29kZSBmaWxlIGFzIFVURi04LlxuICAgICAgICAgIGNvbnN0IGRhdGFWaWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlcik7XG4gICAgICAgICAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigndXRmOCcpO1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gZGVjb2Rlci5kZWNvZGUoZGF0YVZpZXcpO1xuXG4gICAgICAgICAgcmV0dXJuIHRoaXMubG9hZFdvcmtlci5wb3N0KHtcbiAgICAgICAgICAgIGRhdGFiYXNlUmF3OiB2YWx1ZSxcbiAgICAgICAgICAgIGRhdGFiYXNlVHlwZTogdGhpcy5zZXR0aW5ncy5jaXRhdGlvbkV4cG9ydEZvcm1hdCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oKGVudHJpZXM6IEVudHJ5RGF0YVtdKSA9PiB7XG4gICAgICAgICAgbGV0IGFkYXB0ZXI6IG5ldyAoZGF0YTogRW50cnlEYXRhKSA9PiBFbnRyeTtcbiAgICAgICAgICBsZXQgaWRLZXk6IHN0cmluZztcblxuICAgICAgICAgIHN3aXRjaCAodGhpcy5zZXR0aW5ncy5jaXRhdGlvbkV4cG9ydEZvcm1hdCkge1xuICAgICAgICAgICAgY2FzZSAnYmlibGF0ZXgnOlxuICAgICAgICAgICAgICBhZGFwdGVyID0gRW50cnlCaWJMYVRlWEFkYXB0ZXI7XG4gICAgICAgICAgICAgIGlkS2V5ID0gJ2tleSc7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY3NsLWpzb24nOlxuICAgICAgICAgICAgICBhZGFwdGVyID0gRW50cnlDU0xBZGFwdGVyO1xuICAgICAgICAgICAgICBpZEtleSA9ICdpZCc7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMubGlicmFyeSA9IG5ldyBMaWJyYXJ5KFxuICAgICAgICAgICAgT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICAgICAgICBlbnRyaWVzLm1hcCgoZSkgPT4gWyhlIGFzIElJbmRleGFibGUpW2lkS2V5XSwgbmV3IGFkYXB0ZXIoZSldKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zb2xlLmRlYnVnKFxuICAgICAgICAgICAgYENpdGF0aW9uIHBsdWdpbjogc3VjY2Vzc2Z1bGx5IGxvYWRlZCBsaWJyYXJ5IHdpdGggJHt0aGlzLmxpYnJhcnkuc2l6ZX0gZW50cmllcy5gLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICB0aGlzLmV2ZW50cy50cmlnZ2VyKCdsaWJyYXJ5LWxvYWQtY29tcGxldGUnKTtcblxuICAgICAgICAgIHJldHVybiB0aGlzLmxpYnJhcnk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgV29ya2VyTWFuYWdlckJsb2NrZWQpIHtcbiAgICAgICAgICAgIC8vIFNpbGVudGx5IGNhdGNoIFdvcmtlck1hbmFnZXIgZXJyb3IsIHdoaWNoIHdpbGwgYmUgdGhyb3duIGlmIHRoZVxuICAgICAgICAgICAgLy8gbGlicmFyeSBpcyBhbHJlYWR5IGJlaW5nIGxvYWRlZFxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgdGhpcy5sb2FkRXJyb3JOb3RpZmllci5zaG93KCk7XG5cbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgJ0NpdGF0aW9ucyBwbHVnaW46IGNpdGF0aW9uIGV4cG9ydCBwYXRoIGlzIG5vdCBzZXQuIFBsZWFzZSB1cGRhdGUgcGx1Z2luIHNldHRpbmdzLicsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRydWUgaWZmIHRoZSBsaWJyYXJ5IGlzIGN1cnJlbnRseSBiZWluZyBsb2FkZWQgb24gdGhlIHdvcmtlciB0aHJlYWQuXG4gICAqL1xuICBnZXQgaXNMaWJyYXJ5TG9hZGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5sb2FkV29ya2VyLmJsb2NrZWQ7XG4gIH1cblxuICBnZXQgbGl0ZXJhdHVyZU5vdGVUaXRsZVRlbXBsYXRlKCk6IFRlbXBsYXRlIHtcbiAgICByZXR1cm4gY29tcGlsZVRlbXBsYXRlKFxuICAgICAgdGhpcy5zZXR0aW5ncy5saXRlcmF0dXJlTm90ZVRpdGxlVGVtcGxhdGUsXG4gICAgICB0aGlzLnRlbXBsYXRlU2V0dGluZ3MsXG4gICAgKTtcbiAgfVxuXG4gIGdldCBsaXRlcmF0dXJlTm90ZUNvbnRlbnRUZW1wbGF0ZSgpOiBUZW1wbGF0ZSB7XG4gICAgcmV0dXJuIGNvbXBpbGVUZW1wbGF0ZShcbiAgICAgIHRoaXMuc2V0dGluZ3MubGl0ZXJhdHVyZU5vdGVDb250ZW50VGVtcGxhdGUsXG4gICAgICB0aGlzLnRlbXBsYXRlU2V0dGluZ3MsXG4gICAgKTtcbiAgfVxuXG4gIGdldCBtYXJrZG93bkNpdGF0aW9uVGVtcGxhdGUoKTogVGVtcGxhdGUge1xuICAgIHJldHVybiBjb21waWxlVGVtcGxhdGUoXG4gICAgICB0aGlzLnNldHRpbmdzLm1hcmtkb3duQ2l0YXRpb25UZW1wbGF0ZSxcbiAgICAgIHRoaXMudGVtcGxhdGVTZXR0aW5ncyxcbiAgICApO1xuICB9XG5cbiAgZ2V0IGFsdGVybmF0aXZlTWFya2Rvd25DaXRhdGlvblRlbXBsYXRlKCk6IFRlbXBsYXRlIHtcbiAgICByZXR1cm4gY29tcGlsZVRlbXBsYXRlKFxuICAgICAgdGhpcy5zZXR0aW5ncy5hbHRlcm5hdGl2ZU1hcmtkb3duQ2l0YXRpb25UZW1wbGF0ZSxcbiAgICAgIHRoaXMudGVtcGxhdGVTZXR0aW5ncyxcbiAgICApO1xuICB9XG5cbiAgZ2V0VGl0bGVGb3JDaXRla2V5KGNpdGVrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgdW5zYWZlVGl0bGUgPSB0aGlzLmxpdGVyYXR1cmVOb3RlVGl0bGVUZW1wbGF0ZShcbiAgICAgIHRoaXMubGlicmFyeS5nZXRUZW1wbGF0ZVZhcmlhYmxlc0ZvckNpdGVrZXkoY2l0ZWtleSksXG4gICAgKTtcbiAgICByZXR1cm4gdW5zYWZlVGl0bGUucmVwbGFjZShESVNBTExPV0VEX0ZJTEVOQU1FX0NIQVJBQ1RFUlNfUkUsICdfJyk7XG4gIH1cblxuICBnZXRQYXRoRm9yQ2l0ZWtleShjaXRla2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRpdGxlID0gdGhpcy5nZXRUaXRsZUZvckNpdGVrZXkoY2l0ZWtleSk7XG4gICAgLy8gVE9ETyBlc2NhcGUgbm90ZSB0aXRsZVxuICAgIHJldHVybiBwYXRoLmpvaW4odGhpcy5zZXR0aW5ncy5saXRlcmF0dXJlTm90ZUZvbGRlciwgYCR7dGl0bGV9Lm1kYCk7XG4gIH1cblxuICBnZXRJbml0aWFsQ29udGVudEZvckNpdGVrZXkoY2l0ZWtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5saXRlcmF0dXJlTm90ZUNvbnRlbnRUZW1wbGF0ZShcbiAgICAgIHRoaXMubGlicmFyeS5nZXRUZW1wbGF0ZVZhcmlhYmxlc0ZvckNpdGVrZXkoY2l0ZWtleSksXG4gICAgKTtcbiAgfVxuXG4gIGdldE1hcmtkb3duQ2l0YXRpb25Gb3JDaXRla2V5KGNpdGVrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubWFya2Rvd25DaXRhdGlvblRlbXBsYXRlKFxuICAgICAgdGhpcy5saWJyYXJ5LmdldFRlbXBsYXRlVmFyaWFibGVzRm9yQ2l0ZWtleShjaXRla2V5KSxcbiAgICApO1xuICB9XG5cbiAgZ2V0QWx0ZXJuYXRpdmVNYXJrZG93bkNpdGF0aW9uRm9yQ2l0ZWtleShjaXRla2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFsdGVybmF0aXZlTWFya2Rvd25DaXRhdGlvblRlbXBsYXRlKFxuICAgICAgdGhpcy5saWJyYXJ5LmdldFRlbXBsYXRlVmFyaWFibGVzRm9yQ2l0ZWtleShjaXRla2V5KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJ1biBhIGNhc2UtaW5zZW5zaXRpdmUgc2VhcmNoIGZvciB0aGUgbGl0ZXJhdHVyZSBub3RlIGZpbGUgY29ycmVzcG9uZGluZyB0b1xuICAgKiB0aGUgZ2l2ZW4gY2l0ZWtleS4gSWYgbm8gY29ycmVzcG9uZGluZyBmaWxlIGlzIGZvdW5kLCBjcmVhdGUgb25lLlxuICAgKi9cbiAgYXN5bmMgZ2V0T3JDcmVhdGVMaXRlcmF0dXJlTm90ZUZpbGUoY2l0ZWtleTogc3RyaW5nKTogUHJvbWlzZTxURmlsZT4ge1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLmdldFBhdGhGb3JDaXRla2V5KGNpdGVrZXkpO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRQYXRoID0gbm9ybWFsaXplUGF0aChwYXRoKTtcblxuICAgIGxldCBmaWxlID0gdGhpcy5hcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKG5vcm1hbGl6ZWRQYXRoKTtcbiAgICBpZiAoZmlsZSA9PSBudWxsKSB7XG4gICAgICAvLyBGaXJzdCB0cnkgYSBjYXNlLWluc2Vuc2l0aXZlIGxvb2t1cC5cbiAgICAgIGNvbnN0IG1hdGNoZXMgPSB0aGlzLmFwcC52YXVsdFxuICAgICAgICAuZ2V0TWFya2Rvd25GaWxlcygpXG4gICAgICAgIC5maWx0ZXIoKGYpID0+IGYucGF0aC50b0xvd2VyQ2FzZSgpID09IG5vcm1hbGl6ZWRQYXRoLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgaWYgKG1hdGNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBmaWxlID0gbWF0Y2hlc1swXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgZmlsZSA9IGF3YWl0IHRoaXMuYXBwLnZhdWx0LmNyZWF0ZShcbiAgICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgICB0aGlzLmdldEluaXRpYWxDb250ZW50Rm9yQ2l0ZWtleShjaXRla2V5KSxcbiAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChleGMpIHtcbiAgICAgICAgICB0aGlzLmxpdGVyYXR1cmVOb3RlRXJyb3JOb3RpZmllci5zaG93KCk7XG4gICAgICAgICAgdGhyb3cgZXhjO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbGUgYXMgVEZpbGU7XG4gIH1cblxuICBhc3luYyBvcGVuTGl0ZXJhdHVyZU5vdGUoY2l0ZWtleTogc3RyaW5nLCBuZXdQYW5lOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5nZXRPckNyZWF0ZUxpdGVyYXR1cmVOb3RlRmlsZShjaXRla2V5KVxuICAgICAgLnRoZW4oKGZpbGU6IFRGaWxlKSA9PiB7XG4gICAgICAgIHRoaXMuYXBwLndvcmtzcGFjZS5nZXRMZWFmKG5ld1BhbmUpLm9wZW5GaWxlKGZpbGUpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChjb25zb2xlLmVycm9yKTtcbiAgfVxuXG4gIGFzeW5jIGluc2VydExpdGVyYXR1cmVOb3RlTGluayhjaXRla2V5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmdldE9yQ3JlYXRlTGl0ZXJhdHVyZU5vdGVGaWxlKGNpdGVrZXkpXG4gICAgICAudGhlbigoZmlsZTogVEZpbGUpID0+IHtcbiAgICAgICAgY29uc3QgdXNlTWFya2Rvd246IGJvb2xlYW4gPSAoPFZhdWx0RXh0PnRoaXMuYXBwLnZhdWx0KS5nZXRDb25maWcoXG4gICAgICAgICAgJ3VzZU1hcmtkb3duTGlua3MnLFxuICAgICAgICApO1xuICAgICAgICBjb25zdCB0aXRsZSA9IHRoaXMuZ2V0VGl0bGVGb3JDaXRla2V5KGNpdGVrZXkpO1xuXG4gICAgICAgIGxldCBsaW5rVGV4dDogc3RyaW5nO1xuICAgICAgICBpZiAodXNlTWFya2Rvd24pIHtcbiAgICAgICAgICBjb25zdCB1cmkgPSBlbmNvZGVVUkkoXG4gICAgICAgICAgICB0aGlzLmFwcC5tZXRhZGF0YUNhY2hlLmZpbGVUb0xpbmt0ZXh0KGZpbGUsICcnLCBmYWxzZSksXG4gICAgICAgICAgKTtcbiAgICAgICAgICBsaW5rVGV4dCA9IGBbJHt0aXRsZX1dKCR7dXJpfSlgO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxpbmtUZXh0ID0gYFtbJHt0aXRsZX1dXWA7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmVkaXRvci5yZXBsYWNlU2VsZWN0aW9uKGxpbmtUZXh0KTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goY29uc29sZS5lcnJvcik7XG4gIH1cblxuICAvKipcbiAgICogRm9ybWF0IGxpdGVyYXR1cmUgbm90ZSBjb250ZW50IGZvciBhIGdpdmVuIHJlZmVyZW5jZSBhbmQgaW5zZXJ0IGluIHRoZVxuICAgKiBjdXJyZW50bHkgYWN0aXZlIHBhbmUuXG4gICAqL1xuICBhc3luYyBpbnNlcnRMaXRlcmF0dXJlTm90ZUNvbnRlbnQoY2l0ZWtleTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuZ2V0SW5pdGlhbENvbnRlbnRGb3JDaXRla2V5KGNpdGVrZXkpO1xuICAgIHRoaXMuZWRpdG9yLnJlcGxhY2VSYW5nZShjb250ZW50LCB0aGlzLmVkaXRvci5nZXRDdXJzb3IoKSk7XG4gIH1cblxuICBhc3luYyBpbnNlcnRNYXJrZG93bkNpdGF0aW9uKFxuICAgIGNpdGVrZXk6IHN0cmluZyxcbiAgICBhbHRlcm5hdGl2ZSA9IGZhbHNlLFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBmdW5jID0gYWx0ZXJuYXRpdmVcbiAgICAgID8gdGhpcy5nZXRBbHRlcm5hdGl2ZU1hcmtkb3duQ2l0YXRpb25Gb3JDaXRla2V5XG4gICAgICA6IHRoaXMuZ2V0TWFya2Rvd25DaXRhdGlvbkZvckNpdGVrZXk7XG4gICAgY29uc3QgY2l0YXRpb24gPSBmdW5jLmJpbmQodGhpcykoY2l0ZWtleSk7XG5cbiAgICB0aGlzLmVkaXRvci5yZXBsYWNlUmFuZ2UoY2l0YXRpb24sIHRoaXMuZWRpdG9yLmdldEN1cnNvcigpKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbInBhdGgiLCJyZXF1aXJlJCQwIiwiUE9TSVhfUkVHRVhfU09VUkNFIiwicGFyc2UiLCJzY2FuIiwicmVxdWlyZSQkMSIsImZzIiwicGljb21hdGNoIiwic3lzUGF0aCIsInV0aWxzIiwiaXNPYmplY3QiLCJpc051bWJlciIsInN0cmluZ2lmeSIsInRvUmVnZXhSYW5nZSIsInV0aWwiLCJmaWxsIiwiTUFYX0xFTkdUSCIsIkNIQVJfQ09NTUEiLCJDSEFSX0RPVCIsIkNIQVJfTEVGVF9QQVJFTlRIRVNFUyIsIkNIQVJfUklHSFRfUEFSRU5USEVTRVMiLCJDSEFSX0xFRlRfQ1VSTFlfQlJBQ0UiLCJDSEFSX1JJR0hUX0NVUkxZX0JSQUNFIiwiQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VUIiwiQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVCIsImNvbXBpbGUiLCJleHBhbmQiLCJwcm9taXNpZnkiLCJTVEFSIiwib3BlbiIsInN0YXQiLCJsc3RhdCIsIkVWX0FERCIsIkVWX0NIQU5HRSIsIkVWX0FERF9ESVIiLCJFVl9FUlJPUiIsIlNUUl9EQVRBIiwiU1RSX0VORCIsIkVNUFRZX0ZOIiwicmVhbHBhdGgiLCJzdGF0TWV0aG9kcyIsInJlcXVpcmUkJDIiLCJFVl9VTkxJTksiLCJCUkFDRV9TVEFSVCIsIkJBTkciLCJGVU5DVElPTl9UWVBFIiwiRU1QVFlfU1RSIiwiaXNXaW5kb3dzIiwicmVxdWlyZSQkMyIsInJlYWRkaXIiLCJicmFjZXMiLCJGc0V2ZW50c0hhbmRsZXIiLCJOb2RlRnNIYW5kbGVyIiwicmVhZGRpcnAiLCJfdXRpbHMiLCJfZXhjZXB0aW9uIiwiZ2xvYmFsIiwiX2hlbHBlcnNCbG9ja0hlbHBlck1pc3NpbmciLCJfaGVscGVyc0VhY2giLCJfaGVscGVyc0hlbHBlck1pc3NpbmciLCJfaGVscGVyc0lmIiwiX2hlbHBlcnNMb2ciLCJfaGVscGVyc0xvb2t1cCIsIl9oZWxwZXJzV2l0aCIsIl9kZWNvcmF0b3JzSW5saW5lIiwiX2xvZ2dlciIsIl9jcmVhdGVOZXdMb29rdXBPYmplY3QiLCJoZWxwZXJzIiwiZGVjb3JhdG9ycyIsIl9oZWxwZXJzIiwiX2RlY29yYXRvcnMiLCJfaW50ZXJuYWxQcm90b0FjY2VzcyIsIl9iYXNlIiwiX2ludGVybmFsV3JhcEhlbHBlciIsImJhc2UiLCJfaGFuZGxlYmFyc0Jhc2UiLCJfaGFuZGxlYmFyc1NhZmVTdHJpbmciLCJfaGFuZGxlYmFyc0V4Y2VwdGlvbiIsIl9oYW5kbGViYXJzVXRpbHMiLCJydW50aW1lIiwiX2hhbmRsZWJhcnNSdW50aW1lIiwiX2hhbmRsZWJhcnNOb0NvbmZsaWN0IiwiX3Zpc2l0b3IiLCJfcGFyc2VyIiwiX3doaXRlc3BhY2VDb250cm9sIiwiX2FzdCIsIkFycmF5U2V0IiwiTWFwcGluZ0xpc3QiLCJiYXNlNjRWTFEiLCJxdWlja1NvcnQiLCJTb3VyY2VNYXBHZW5lcmF0b3IiLCJkZWZpbmUiLCJfY29kZUdlbiIsIl9oYW5kbGViYXJzQ29tcGlsZXJBc3QiLCJfaGFuZGxlYmFyc0NvbXBpbGVySmF2YXNjcmlwdENvbXBpbGVyIiwiX2hhbmRsZWJhcnNDb21waWxlclZpc2l0b3IiLCJfaGFuZGxlYmFyc0NvbXBpbGVyQ29tcGlsZXIiLCJfaGFuZGxlYmFyc0NvbXBpbGVyQmFzZSIsImhhbmRsZWJhcnMiLCJyZXF1aXJlIiwiRXZlbnRzIiwicmVuZGVyTWF0Y2hlcyIsIkZ1enp5U3VnZ2VzdE1vZGFsIiwiTm90aWNlIiwiY2hhckNhdGVnb3JpZXMiLCJjaHVua2VyXzEiLCJiaWJ0ZXgiLCJ1bmljb2RlMmxhdGV4XzEiLCJqYWJyZWZfMSIsIlNldHRpbmciLCJGaWxlU3lzdGVtQWRhcHRlciIsIlBsdWdpblNldHRpbmdUYWIiLCJQcm9taXNlV29ya2VyIiwiTG9hZFdvcmtlciIsIk1hcmtkb3duVmlldyIsImNob2tpZGFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLndhdGNoIiwicGF0aC5yZXNvbHZlIiwiY29tcGlsZVRlbXBsYXRlIiwicGF0aC5qb2luIiwibm9ybWFsaXplUGF0aCIsIlBsdWdpbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxhQUFhLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ25DLElBQUksYUFBYSxHQUFHLE1BQU0sQ0FBQyxjQUFjO0FBQ3pDLFNBQVMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFlBQVksS0FBSyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNwRixRQUFRLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUMxRyxJQUFJLE9BQU8sYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMvQixDQUFDLENBQUM7QUFDRjtBQUNPLFNBQVMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDaEMsSUFBSSxhQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3hCLElBQUksU0FBUyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxFQUFFO0FBQzNDLElBQUksQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN6RixDQUFDO0FBQ0Q7QUFDTyxJQUFJLFFBQVEsR0FBRyxXQUFXO0FBQ2pDLElBQUksUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksU0FBUyxRQUFRLENBQUMsQ0FBQyxFQUFFO0FBQ3JELFFBQVEsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDN0QsWUFBWSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCLFlBQVksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekYsU0FBUztBQUNULFFBQVEsT0FBTyxDQUFDLENBQUM7QUFDakIsTUFBSztBQUNMLElBQUksT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztBQUMzQyxFQUFDO0FBNEJEO0FBQ08sU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFO0FBQzdELElBQUksU0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxLQUFLLFlBQVksQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxVQUFVLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0FBQ2hILElBQUksT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsVUFBVSxPQUFPLEVBQUUsTUFBTSxFQUFFO0FBQy9ELFFBQVEsU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUNuRyxRQUFRLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUN0RyxRQUFRLFNBQVMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRTtBQUN0SCxRQUFRLElBQUksQ0FBQyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxVQUFVLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUM5RSxLQUFLLENBQUMsQ0FBQztBQUNQLENBQUM7QUFDRDtBQUNPLFNBQVMsV0FBVyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUU7QUFDM0MsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3JILElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sTUFBTSxLQUFLLFVBQVUsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFdBQVcsRUFBRSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDN0osSUFBSSxTQUFTLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxPQUFPLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUN0RSxJQUFJLFNBQVMsSUFBSSxDQUFDLEVBQUUsRUFBRTtBQUN0QixRQUFRLElBQUksQ0FBQyxFQUFFLE1BQU0sSUFBSSxTQUFTLENBQUMsaUNBQWlDLENBQUMsQ0FBQztBQUN0RSxRQUFRLE9BQU8sQ0FBQyxFQUFFLElBQUk7QUFDdEIsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN6SyxZQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDcEQsWUFBWSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDekIsZ0JBQWdCLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU07QUFDOUMsZ0JBQWdCLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUN4RSxnQkFBZ0IsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztBQUNqRSxnQkFBZ0IsS0FBSyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUztBQUNqRSxnQkFBZ0I7QUFDaEIsb0JBQW9CLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUU7QUFDaEksb0JBQW9CLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUU7QUFDMUcsb0JBQW9CLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtBQUN6RixvQkFBb0IsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FB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LElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQzlFLE1BQU0sUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFDdkQsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0MsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTtBQUM3RCxNQUFNLElBQUksQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQztBQUM5QixNQUFNLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDO0FBQ3BELE1BQU0sT0FBTztBQUNiLEtBQUs7QUFDTDtBQUNBLElBQUksR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDcEIsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JCLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQztBQUNmLEdBQUcsQ0FBQztBQUNKO0FBQ0EsRUFBRSxNQUFNLFdBQVcsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLEtBQUs7QUFDdkMsSUFBSSxNQUFNLEtBQUssR0FBRyxFQUFFLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ3hFO0FBQ0EsSUFBSSxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUN0QixJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FB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S0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDakMsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQ3BELENBQUMsQ0FBQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSztBQUNsRixFQUFFLE1BQU0sS0FBSyxHQUFHLElBQUksWUFBWSxNQUFNLEdBQUcsSUFBSSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2hGLEVBQUUsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDRiwyQkFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzFDLENBQUMsQ0FBQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLE9BQU8sS0FBSyxTQUFTLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxLQUFLO0FBQ3hDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxD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QUcsUUFBUSxDQUFDO0FBQzlCLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUM1QyxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNiLElBQUksSUFBSSxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN6QyxJQUFJLFNBQVMsR0FBRyxlQUFlLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2xFLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ2QsSUFBSSxTQUFTLEdBQUcsZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ25ELEdBQUc7QUFDSDtBQUNBLEVBQUUsS0FBSyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7QUFDOUIsRUFBRSxLQUFLLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztBQUM5QixFQUFFLEtBQUssQ0FBQyxNQUFNLEdBQUcsZUFBZSxDQUFDLFNBQVMsRUFBRSxTQUFlLENBQUMsQ0FBQztBQUM3RDtBQUNBLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksRUFBRTtBQUM3QixJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QyxHQUFHLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sSUFBSSxD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QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ25CLEVBQUUsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO0FBQ2YsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUQsRUFBRSxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFDRDtBQUNBLFNBQVMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDdkIsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFDRDtBQUNBLFNBQVMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO0FBQ2pDLEVBQUUsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUNEO0FBQ0EsU0FBUyxVQUFVLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUM5QixFQUFFLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzlELENBQUM7QUFDRDtBQUNBLFNBQVMsVUFBVSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUU7QUFDcEMsRUFBRSxPQUFPLE9BQU8sSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxD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QU8sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFO0FBQzVFLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDM0IsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztBQUMxQixLQUFLO0FBQ0w7QUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNoRCxNQUFNLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEM7QUFDQSxNQUFNLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUU7QUFDM0QsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNwQyxRQUFRLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdkIsUUFBUSxTQUFTO0FBQ2pCLE9BQU87QUFDUDtBQUNBLE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtBQUNsQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNoRCxRQUFRLFNBQVM7QUFDakIsT0FBTztBQUNQO0FBQ0EsTUFBTSxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7QUFDaEQsUUFBUSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDckQsUUFBUSxTQUFTO0FBQ2pCLE9B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QUFDQSxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDdEQsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDO0FBQ3hCLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3BELEVBQUUsT0FBTyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ3pCLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7QUFDdEM7QUFDQTtBQUNBO0FBQ0EsRUFBRSxNQUFNLElBQUksR0FBR0EsMkJBQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzdDLEVBQUUsTUFBTSxRQUFRLEdBQUdBLDJCQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pDLEVBQUUsV0FBVyxHQUFHLFdBQVcsSUFBSSxJQUFJO0FBQ25DLE1BQU0sV0FBVztBQUNqQixNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzdEO0FBQ0E7QUFDQTtBQUNBLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxPQUFPO0FBQ25EO0FBQ0E7QUFDQSxFQUFFLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUks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QixFQUFFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPO0FBQ3ZCLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksTUFBTSxFQUFFLENBQUMsQ0FBQztBQUN0QyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRTtBQUM3QixFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTztBQUN0QixFQUFFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3JDLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRTtBQUNiLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUNkLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2xDLEdBQUc7QUFDSCxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDcEIsQ0FBQztBQUNEO0FBQ0EsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDdEIsRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTztBQUMxQixFQUFFLE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUN6RSxFQUFFLElBQUksTUFBTSxHQUFHNkMsVUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN2QyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FB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LENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFF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QUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMxSCxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN6RSxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoQyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoQyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoQyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoQyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoQyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoQyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoQyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoQyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoQyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoQyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNoQyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QyxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdEMsb0JBQW9CLE1BQU07QUFDMUIsZ0JBQWdCLEtBQUssRUFBRTtBQUN2QixvQkFBb0IsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDNUMsb0JBQW9CLE1BQU07QUFDMUIsZ0JBQWdCLEtBQUssR0FBRztBQUN4QixvQkFBb0IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLG9CQUFvQixNQUFNO0FBQzFCLGdCQUFnQixLQUFLLEdBQUc7QUFDeEIsb0JBQW9CLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzVDLG9CQUFvQixNQUFNO0FBQzFCLGFBQWE7QUFDYixTQUFTO0FBQ1QsUUFBUSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDL2pkLFFBQVEsY0FBYyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFB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LEVBQUU7QUFDdkIsb0JBQW9CLE9BQU8sRUFBRSxDQUFDO0FBRTlCLGdCQUFnQixLQUFLLEVBQUU7QUFDdkIsb0JBQW9CLE9BQU8sRUFBRSxDQUFDO0FBRTlCLGdCQUFnQixLQUFLLEVBQUU7QUFDdkI7QUFDQSxvQkFBb0IsTUFBTTtBQUMxQixnQkFBZ0IsS0FBSyxFQUFFO0FBQ3ZCLG9CQUFvQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7QUFFOUMsZ0JBQWdCLEtBQUssRUFBRTtBQUN2QixvQkFBb0IsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBRTlDLGdCQUFnQixLQUFLLEVBQUU7QUFDdkIsb0JBQW9CLEdBQUcsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBRTVFLGdCQUFnQixLQUFLLEVBQUU7QUFDdkIsb0JBQW9CLEdBQUcsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBRTVFLGdCQUFnQixLQUFLLEVBQUU7QUFDdkIsb0JBQW9CLE9BQU8sRUFBRSxDQUFDO0FBRTlCLGdCQUFnQixLQUFLLEVBQUU7QUFDdkIsb0JBQW9CLE9BQU8sRUFBRSxDQUFDO0FBRTlCLGdCQUFnQixLQUFLLEVBQUU7QUFDdkIsb0JBQW9CLE9BQU8sRUFBRSxDQUFDO0FBRTlCLGdCQUFnQixLQUFLLEVBQUU7QUFDdkIsb0JBQW9CLE9BQU8sRUFBRSxDQUFDO0FBRTlCLGdCQUFnQixLQUFLLEVBQUU7QUFDdkIsb0JBQW9CLE9BQU8sRUFBRSxDQUFDO0FBRTlCLGdCQUFnQixLQUFLLEVBQUU7QUFDdkIsb0JBQW9CLE9BQU8sRUFBRSxDQUFDO0FBRTlCLGdCQUFnQixLQUFLLEVBQUU7QUFDdkIsb0JBQW9CLE9BQU8sRUFBRSxDQUFDO0FBRTlCLGdCQUFnQixLQUFLLEVBQUU7QUFDdkIsb0JBQW9CLE9BQU8sRUFBRSxDQUFDO0FBRTlCLGdCQUFnQixLQUFLLEVBQUU7QUFDdkIsb0JBQW9CLE9BQU8sRUFBRSxDQUFDO0FBRTlCLGdCQUFnQixLQUFLLEVBQUU7QUFDdkIsb0JBQW9CLEdBQUcsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBRW5GLGdCQUFnQixLQUFLLEVBQUU7QUFDdkIsb0JBQW9CLE9BQU8sU0FBUyxDQUFDO0FBRXJDLGdCQUFnQixLQUFLLEVBQUU7QUFDdkIsb0JBQW9CLE9BQU8sQ0FBQyxDQUFDO0FBRTdCLGFBQWE7QUFDYixTQUFTLENBQUM7QUFDVixRQUFRLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQywwQkFBMEIsRUFBRSxlQUFlLEVBQUUsK0NBQStDLEVBQUUsd0JBQXdCLEVBQUUsb0VBQW9FLEVBQUUsOEJBQThCLEVBQUUseUJBQXlCLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLDRCQUE0QixFQUFFLGlDQUFpQyxFQUFFLGlCQUFpQixFQUFFLHdCQUF3QixFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLDRCQUE0QixFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsMkJBQTJCLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLHdCQUF3QixFQUFFLHlCQUF5QixFQUFFLDZCQUE2QixFQUFFLHdCQUF3QixFQUFFLHlDQUF5QyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUseURBQXlELEVBQUUsd0JBQXdCLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZqQyxRQUFRLEtBQUssQ0FBQyxVQUFVLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztBQUNoYSxRQUFRLE9BQU8sS0FBSyxDQUFDO0FBQ3JCLEtBQUssR0FBRyxDQUFDO0FBQ1QsSUFBSSxNQUFNLENBQUMsS0FB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RyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDekIsRUFBRSxJQUFJLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEIsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xCLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNoQixDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFO0FBQ3JDLEVBQUUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxRCxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLFdBQVcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksVUFBVSxHQUFHLGdCQUFnQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEI7QUFDQSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdCLElBQUksSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFB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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsS0FBSyxDQUFDLEtBQUssRUFBRSxPQUFPLEdBQUcsRUFBRSxFQUFFO0FBQ3BDLElBQUksT0FBTyxDQUFDLElBQUksWUFBWSxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDcEQsQ0FBQztBQUNELGFBQWEsR0FBRyxLQUFLLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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LEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbEMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xDLFlBQVksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNsQyxZQUFZLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbEMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xDLFlBQVksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNsQyxZQUFZLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbEMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xDLFlBQVksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNsQyxZQUFZLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbEMsWUFBWSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7QUFDdkQsWUFBWSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFDakQsWUFBWSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUM7QUFDMUQsWUFBWSxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHlDQUF5QyxDQUFDLENBQUM7QUFDMUUsWUFBWSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHFC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LENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RSxlQUFlQSxhQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzdELGVBQWVBLGFBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hFLGVBQWVBLGFBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvRCxlQUFlQSxhQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvRCxRQUFRLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSUEsYUFBZSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztBQUN2SCxZQUFZLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHQSxhQUFlLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkYsUUFBUSxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVc7QUFDekMsWUFBWSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUks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QUFBRCxDQUxBLENBQTBDLEtBQUssR0FLOUM7QUFXRCxJQUFNLDJCQUEyQixHQUF5QjtJQUN4RCxlQUFlLEVBQUUsS0FBSztDQUN2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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 diff --git a/.obsidian/plugins/obsidian-citation-plugin/manifest.json b/.obsidian/plugins/obsidian-citation-plugin/manifest.json new file mode 100644 index 00000000..8bd5e59e --- /dev/null +++ b/.obsidian/plugins/obsidian-citation-plugin/manifest.json @@ -0,0 +1,10 @@ +{ + "id": "obsidian-citation-plugin", + "name": "Citations", + "version": "0.4.5", + "minAppVersion": "0.9.20", + "description": "Automatically search and insert citations from a Zotero library", + "author": "Jon Gauthier", + "authorUrl": "http://foldl.me", + "isDesktopOnly": true +} diff --git a/.obsidian/plugins/obsidian-citation-plugin/styles.css b/.obsidian/plugins/obsidian-citation-plugin/styles.css new file mode 100644 index 00000000..729a0d16 --- /dev/null +++ b/.obsidian/plugins/obsidian-citation-plugin/styles.css @@ -0,0 +1,114 @@ +/** Citations modal **/ + +/* + * Loading animation from + * https://loading.io/css/ + */ + .zoteroModalLoading { + color: var(--text-muted); + text-align: center; + } +.zoteroModalLoadingAnimation { + display: inline-block; + width: 80px; + height: 80px; +} +.zoteroModalLoadingAnimation { + content: " "; + display: block; + width: 32px; + height: 32px; + margin: 10px auto; + border-radius: 50%; + border: 3px solid #eee; + border-color: #eee transparent #eee transparent; + animation: lds-dual-ring 1.2s linear infinite; +} +@keyframes lds-dual-ring { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} + +#zoteroSettingTab .text-monospace { + font-family: monospace; +} + +.zoteroModalResults .suggestion-item { + height: fit-content; + line-height: 1.5rem; +} + +.zoteroTitle { + font-size: 14px; + display: block; +} +.zoteroAuthors { + color: #555; + font-size: 13px; +} +.zoteroAuthorsEmpty::after { + font-style: italic; + content: 'Unknown authors'; +} +.zoteroCitekey { + color: #555; + font-size: 13px; + font-family: monospace; + display: inline-block; + margin-right: 5px; + padding-right: 5px; + border-right: 1px solid #ccc; +} + +.theme-dark .zoteroTitle { + font-size: 14px; + display: block; +} +.theme-dark .zoteroAuthors { + color: #aaa; + font-size: 13px; +} +.theme-dark .zoteroCitekey { + color: #aaa; + font-size: 13px; + font-family: monospace; + display: inline-block; + margin-right: 5px; + padding-right: 5px; + border-right: 1px solid #aaa; +} + +/** Settings dialog **/ +.d-none { + display: none; +} +.zoteroSettingCitationPathLoading, +.zoteroSettingCitationPathError, +.zoteroSettingCitationPathSuccess { + font-size: 14px; +} +.zoteroSettingCitationPathLoading { + color: var(--text-muted); +} +.zoteroSettingCitationPathError { + color: var(--text-error); +} +.zoteroSettingCitationPathError:hover { + color: var(--text-error-hover); +} +.zoteroSettingCitationPathSuccess { + color: var(--text-accent); +} +.zoteroSettingCitationPathSuccess:hover { + color: var(--text-accent-hover); +} + +#zoteroSettingTab textarea { + resize: vertical; + width: 100%; + min-height: 10em; +} diff --git a/.obsidian/plugins/obsidian-excalidraw-plugin/data.json b/.obsidian/plugins/obsidian-excalidraw-plugin/data.json index 6fabead5..8ec1e121 100644 --- a/.obsidian/plugins/obsidian-excalidraw-plugin/data.json +++ b/.obsidian/plugins/obsidian-excalidraw-plugin/data.json @@ -73,7 +73,7 @@ "library2": { "type": "excalidrawlib", "version": 2, - "source": "https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/1.9.19", + "source": "https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/2.0.16", "libraryItems": [ { "status": "published", @@ -10409,7 +10409,7 @@ "containerId": null, "originalText": "!", "lineHeight": 1.222222222222222, - "baseline": 17 + "baseline": 18 } ], "id": "a4aCbz4Mh-PMppX8JV9oJ", @@ -47208,7 +47208,7 @@ "containerId": null, "originalText": "5\n\n4\n\n3\n\n2\n\n1 \n\n0\n\n\n-1\n\n-2\n\n-3\n\n-4\n\n-5", "lineHeight": 1.2490706319702598, - "baseline": 441 + "baseline": 442 }, { "type": "line", @@ -48424,7 +48424,7 @@ "containerId": null, "originalText": "5\n\n4\n\n3\n\n2\n\n1 \n\n0\n\n\n-1\n\n-2\n\n-3\n\n-4\n\n-5", "lineHeight": 1.2490706319702598, - "baseline": 441 + "baseline": 442 }, { "type": "line", @@ -61506,7 +61506,7 @@ "containerId": null, "originalText": "KEY", "lineHeight": 1.2989276108437504, - "baseline": 16 + "baseline": 17 }, { "type": "text", @@ -61543,7 +61543,7 @@ "containerId": null, "originalText": "DATA", "lineHeight": 1.2989276108437484, - "baseline": 16 + "baseline": 17 } ], "id": "0fN1YgloN8QEBcG1nuLU0", @@ -68690,7 +68690,7 @@ "containerId": null, "originalText": "0", "lineHeight": 1.2305837462742493, - "baseline": 15 + "baseline": 16 }, { "type": "text", @@ -68727,7 +68727,7 @@ "containerId": null, "originalText": "1", "lineHeight": 1.2305837462742486, - "baseline": 15 + "baseline": 16 }, { "type": "text", @@ -68764,7 +68764,7 @@ "containerId": null, "originalText": "2", "lineHeight": 1.2305837462742486, - "baseline": 15 + "baseline": 16 }, { "type": "text", @@ -68801,7 +68801,7 @@ "containerId": null, "originalText": "3", "lineHeight": 1.230583746274251, - "baseline": 15 + "baseline": 16 }, { "type": "text", @@ -68838,7 +68838,7 @@ "containerId": null, "originalText": "4", "lineHeight": 1.2305837462742497, - "baseline": 15 + "baseline": 16 }, { "type": "text", @@ -68875,7 +68875,7 @@ "containerId": null, "originalText": "0", "lineHeight": 1.2665105496217897, - "baseline": 17 + "baseline": 18 }, { "type": "text", @@ -68912,7 +68912,7 @@ "containerId": null, "originalText": "1", "lineHeight": 1.266510549621791, - "baseline": 17 + "baseline": 18 }, { "type": "text", @@ -68949,7 +68949,7 @@ "containerId": null, "originalText": "2", "lineHeight": 1.2665105496217899, - "baseline": 17 + "baseline": 18 }, { "type": "text", @@ -68986,7 +68986,7 @@ "containerId": null, "originalText": "3", "lineHeight": 1.2665105496217897, - "baseline": 17 + "baseline": 18 }, { "type": "text", @@ -69023,7 +69023,7 @@ "containerId": null, "originalText": "4", "lineHeight": 1.2665105496217892, - "baseline": 17 + "baseline": 18 }, { "type": "rectangle", @@ -69870,7 +69870,7 @@ "containerId": null, "originalText": "5", "lineHeight": 1.2305837462742497, - "baseline": 15 + "baseline": 16 }, { "type": "rectangle", @@ -70177,7 +70177,7 @@ "containerId": null, "originalText": "6", "lineHeight": 1.230583746274251, - "baseline": 15 + "baseline": 16 }, { "type": "rectangle", @@ -70484,7 +70484,7 @@ "containerId": null, "originalText": "7", "lineHeight": 1.2305837462742502, - "baseline": 15 + "baseline": 16 }, { "type": "rectangle", @@ -70791,7 +70791,7 @@ "containerId": null, "originalText": "8", "lineHeight": 1.23058374627425, - "baseline": 15 + "baseline": 16 }, { "type": "rectangle", @@ -71098,7 +71098,7 @@ "containerId": null, "originalText": "9", "lineHeight": 1.2305837462742488, - "baseline": 15 + "baseline": 16 }, { "type": "rectangle", @@ -71270,7 +71270,7 @@ "containerId": null, "originalText": "5", "lineHeight": 1.2665105496217908, - "baseline": 17 + "baseline": 18 }, { "type": "text", @@ -71307,7 +71307,7 @@ "containerId": null, "originalText": "6", "lineHeight": 1.2665105496217908, - "baseline": 17 + "baseline": 18 }, { "type": "text", @@ -71344,7 +71344,7 @@ "containerId": null, "originalText": "7", "lineHeight": 1.2665105496217899, - "baseline": 17 + "baseline": 18 }, { "type": "text", @@ -71381,7 +71381,7 @@ "containerId": null, "originalText": "8", "lineHeight": 1.2665105496217905, - "baseline": 17 + "baseline": 18 }, { "type": "text", @@ -71418,7 +71418,7 @@ "containerId": null, "originalText": "9", "lineHeight": 1.2665105496217908, - "baseline": 17 + "baseline": 18 } ], "id": "v64rHLhwhoMh6YxxcvFRW", @@ -72138,7 +72138,7 @@ "containerId": null, "originalText": "0", "lineHeight": 1.2258489560818937, - "baseline": 15 + "baseline": 16 }, { "type": "text", @@ -72175,7 +72175,7 @@ "containerId": null, "originalText": "1", "lineHeight": 1.2258489560818937, - "baseline": 15 + "baseline": 16 }, { "type": "text", @@ -72212,7 +72212,7 @@ "containerId": null, "originalText": "2", "lineHeight": 1.2258489560818915, - "baseline": 15 + "baseline": 16 }, { "type": "text", @@ -72249,7 +72249,7 @@ "containerId": null, "originalText": "3", "lineHeight": 1.2258489560818941, - "baseline": 15 + "baseline": 16 }, { "type": "text", @@ -72286,7 +72286,7 @@ "containerId": null, "originalText": "4", "lineHeight": 1.2258489560818953, - "baseline": 15 + "baseline": 16 }, { "type": "text", @@ -72948,7 +72948,7 @@ "containerId": null, "originalText": "0", "lineHeight": 1.2227829575141542, - "baseline": 15 + "baseline": 16 }, { "type": "text", @@ -72985,7 +72985,7 @@ "containerId": null, "originalText": "1", "lineHeight": 1.2227829575141567, - "baseline": 15 + "baseline": 16 }, { "type": "text", @@ -73022,7 +73022,7 @@ "containerId": null, "originalText": "2", "lineHeight": 1.2227829575141556, - "baseline": 15 + "baseline": 16 }, { "type": "text", @@ -73059,7 +73059,7 @@ "containerId": null, "originalText": "3", "lineHeight": 1.222782957514155, - "baseline": 15 + "baseline": 16 }, { "type": "text", diff --git a/.obsidian/plugins/obsidian-kanban/data.json b/.obsidian/plugins/obsidian-kanban/data.json index b70e699a..a231b4f5 100644 --- a/.obsidian/plugins/obsidian-kanban/data.json +++ b/.obsidian/plugins/obsidian-kanban/data.json @@ -3,5 +3,6 @@ "date-format": "YYYY-MM-DD", "link-date-to-daily-note": true, "prepend-archive-format": "YYYY-MM-DD HH:mm", - "show-view-as-markdown": false + "show-view-as-markdown": false, + "lane-width": 350 } \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-minimal-settings/data.json b/.obsidian/plugins/obsidian-minimal-settings/data.json index d609fd9e..57313625 100644 --- a/.obsidian/plugins/obsidian-minimal-settings/data.json +++ b/.obsidian/plugins/obsidian-minimal-settings/data.json @@ -9,7 +9,7 @@ "lineWidth": 40, "lineWidthWide": 5000, "maxWidth": 98, - "textNormal": 22.5, + "textNormal": 16.5, "textSmall": 13, "imgGrid": false, "imgWidth": "img-default-width", diff --git a/.obsidian/plugins/obsidian-pocket/data.json b/.obsidian/plugins/obsidian-pocket/data.json index 23a878e9..ae4098bd 100644 --- a/.obsidian/plugins/obsidian-pocket/data.json +++ b/.obsidian/plugins/obsidian-pocket/data.json @@ -1,5 +1,5 @@ { - "pocket-sync-tag": "obsidian_export", + "pocket-sync-tag": null, "item-notes-folder": "sources", "frontmatter-url-key": "link" } \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-spaced-repetition/data.json b/.obsidian/plugins/obsidian-spaced-repetition/data.json index 662acbec..f3ecd918 100644 --- a/.obsidian/plugins/obsidian-spaced-repetition/data.json +++ b/.obsidian/plugins/obsidian-spaced-repetition/data.json @@ -30,7 +30,7 @@ "noteFoldersToIgnore": [], "openRandomNote": false, "autoNextNote": true, - "disableFileMenuReviewOptions": true, + "disableFileMenuReviewOptions": false, "maxNDaysNotesReviewQueue": 365, "initiallyExpandAllSubdecksInTree": true, "baseEase": 250, @@ -43,7 +43,7 @@ "singlelineCardSeparator": "::", "singlelineReversedCardSeparator": ":::" }, - "buryDate": "2024-01-10", + "buryDate": "2024-02-28", "buryList": [], "historyDeck": "" } \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-vault-statistics-plugin/data.json b/.obsidian/plugins/obsidian-vault-statistics-plugin/data.json index b848d418..d5a77bcb 100644 --- a/.obsidian/plugins/obsidian-vault-statistics-plugin/data.json +++ b/.obsidian/plugins/obsidian-vault-statistics-plugin/data.json @@ -1,9 +1,9 @@ { "displayIndividualItems": false, "showNotes": true, - "showAttachments": false, - "showFiles": false, - "showLinks": false, - "showWords": false, - "showSize": false + "showAttachments": true, + "showFiles": true, + "showLinks": true, + "showWords": true, + "showSize": true } \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-zotero-desktop-connector/data.json b/.obsidian/plugins/obsidian-zotero-desktop-connector/data.json new file mode 100644 index 00000000..887f7a5a --- /dev/null +++ b/.obsidian/plugins/obsidian-zotero-desktop-connector/data.json @@ -0,0 +1,19 @@ +{ + "database": "Zotero", + "noteImportFolder": "sources", + "pdfExportImageDPI": 120, + "pdfExportImageFormat": "jpg", + "pdfExportImageQuality": 90, + "citeFormats": [], + "exportFormats": [ + { + "name": "Import #1", + "outputPathTemplate": "sources/{{citekey}}.md", + "imageOutputPathTemplate": "images/{{citekey}}/", + "imageBaseNameTemplate": "image" + } + ], + "citeSuggestTemplate": "[[{{citekey}}]]", + "openNoteAfterImport": true, + "whichNotesToOpenAfterImport": "first-imported-note" +} \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-zotero-desktop-connector/main.js b/.obsidian/plugins/obsidian-zotero-desktop-connector/main.js new file mode 100644 index 00000000..a58535d5 --- /dev/null +++ b/.obsidian/plugins/obsidian-zotero-desktop-connector/main.js @@ -0,0 +1,191 @@ +var aT=Object.create;var Yr=Object.defineProperty;var nT=Object.getOwnPropertyDescriptor;var iT=Object.getOwnPropertyNames;var rT=Object.getPrototypeOf,oT=Object.prototype.hasOwnProperty;var O=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),sT=(e,t)=>{for(var a in t)Yr(e,a,{get:t[a],enumerable:!0})},Tm=(e,t,a,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of iT(t))!oT.call(e,i)&&i!==a&&Yr(e,i,{get:()=>t[i],enumerable:!(n=nT(t,i))||n.enumerable});return e};var _e=(e,t,a)=>(a=e!=null?aT(rT(e)):{},Tm(t||!e||!e.__esModule?Yr(a,"default",{value:e,enumerable:!0}):a,e)),lT=e=>Tm(Yr({},"__esModule",{value:!0}),e);var Rm=O((hD,Om)=>{Om.exports=Pm;Pm.sync=uT;var km=require("fs");function cT(e,t){var a=t.pathExt!==void 0?t.pathExt:process.env.PATHEXT;if(!a||(a=a.split(";"),a.indexOf("")!==-1))return!0;for(var n=0;n{Lm.exports=Nm;Nm.sync=pT;var Bm=require("fs");function Nm(e,t,a){Bm.stat(e,function(n,i){a(n,n?!1:jm(i,t))})}function pT(e,t){return jm(Bm.statSync(e),t)}function jm(e,t){return e.isFile()&&dT(e,t)}function dT(e,t){var a=e.mode,n=e.uid,i=e.gid,r=t.uid!==void 0?t.uid:process.getuid&&process.getuid(),o=t.gid!==void 0?t.gid:process.getgid&&process.getgid(),s=parseInt("100",8),l=parseInt("010",8),u=parseInt("001",8),c=s|l,f=a&u||a&l&&i===o||a&s&&n===r||a&c&&r===0;return f}});var Mc=O((gD,Dm)=>{var bD=require("fs"),Kr;process.platform==="win32"||global.TESTING_WINDOWS?Kr=Rm():Kr=Mm();Dm.exports=Lc;Lc.sync=fT;function Lc(e,t,a){if(typeof t=="function"&&(a=t,t={}),!a){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(n,i){Lc(e,t||{},function(r,o){r?i(r):n(o)})})}Kr(e,t||{},function(n,i){n&&(n.code==="EACCES"||t&&t.ignoreErrors)&&(n=null,i=!1),a(n,i)})}function fT(e,t){try{return Kr.sync(e,t||{})}catch(a){if(t&&t.ignoreErrors||a.code==="EACCES")return!1;throw a}}});var Jm=O((xD,Um)=>{var Cn=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",zm=require("path"),mT=Cn?";":":",Gm=Mc(),Hm=e=>Object.assign(new Error(`not found: ${e}`),{code:"ENOENT"}),Wm=(e,t)=>{let a=t.colon||mT,n=e.match(/\//)||Cn&&e.match(/\\/)?[""]:[...Cn?[process.cwd()]:[],...(t.path||process.env.PATH||"").split(a)],i=Cn?t.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",r=Cn?i.split(a):[""];return Cn&&e.indexOf(".")!==-1&&r[0]!==""&&r.unshift(""),{pathEnv:n,pathExt:r,pathExtExe:i}},Vm=(e,t,a)=>{typeof t=="function"&&(a=t,t={}),t||(t={});let{pathEnv:n,pathExt:i,pathExtExe:r}=Wm(e,t),o=[],s=u=>new Promise((c,f)=>{if(u===n.length)return t.all&&o.length?c(o):f(Hm(e));let p=n[u],b=/^".*"$/.test(p)?p.slice(1,-1):p,d=zm.join(b,e),m=!b&&/^\.[\\\/]/.test(e)?e.slice(0,2)+d:d;c(l(m,u,0))}),l=(u,c,f)=>new Promise((p,b)=>{if(f===i.length)return p(s(c+1));let d=i[f];Gm(u+d,{pathExt:r},(m,h)=>{if(!m&&h)if(t.all)o.push(u+d);else return p(u+d);return p(l(u,c,f+1))})});return a?s(0).then(u=>a(null,u),a):s(0)},hT=(e,t)=>{t=t||{};let{pathEnv:a,pathExt:n,pathExtExe:i}=Wm(e,t),r=[];for(let o=0;o{"use strict";var Zm=(e={})=>{let t=e.env||process.env;return(e.platform||process.platform)!=="win32"?"PATH":Object.keys(t).reverse().find(n=>n.toUpperCase()==="PATH")||"Path"};Dc.exports=Zm;Dc.exports.default=Zm});var Ym=O((wD,$m)=>{"use strict";var qm=require("path"),vT=Jm(),bT=zc();function Xm(e,t){let a=e.options.env||process.env,n=process.cwd(),i=e.options.cwd!=null,r=i&&process.chdir!==void 0&&!process.chdir.disabled;if(r)try{process.chdir(e.options.cwd)}catch(s){}let o;try{o=vT.sync(e.command,{path:a[bT({env:a})],pathExt:t?qm.delimiter:void 0})}catch(s){}finally{r&&process.chdir(n)}return o&&(o=qm.resolve(i?e.options.cwd:"",o)),o}function gT(e){return Xm(e)||Xm(e,!0)}$m.exports=gT});var Km=O((ED,Hc)=>{"use strict";var Gc=/([()\][%!^"`<>&|;, *?])/g;function xT(e){return e=e.replace(Gc,"^$1"),e}function yT(e,t){return e=`${e}`,e=e.replace(/(\\*)"/g,'$1$1\\"'),e=e.replace(/(\\*)$/,"$1$1"),e=`"${e}"`,e=e.replace(Gc,"^$1"),t&&(e=e.replace(Gc,"^$1")),e}Hc.exports.command=xT;Hc.exports.argument=yT});var eh=O((SD,Qm)=>{"use strict";Qm.exports=/^#!(.*)/});var ah=O((CD,th)=>{"use strict";var wT=eh();th.exports=(e="")=>{let t=e.match(wT);if(!t)return null;let[a,n]=t[0].replace(/#! ?/,"").split(" "),i=a.split("/").pop();return i==="env"?n:n?`${i} ${n}`:i}});var ih=O((AD,nh)=>{"use strict";var Wc=require("fs"),ET=ah();function ST(e){let a=Buffer.alloc(150),n;try{n=Wc.openSync(e,"r"),Wc.readSync(n,a,0,150,0),Wc.closeSync(n)}catch(i){}return ET(a.toString())}nh.exports=ST});var lh=O((ID,sh)=>{"use strict";var CT=require("path"),rh=Ym(),oh=Km(),AT=ih(),IT=process.platform==="win32",_T=/\.(?:com|exe)$/i,TT=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function kT(e){e.file=rh(e);let t=e.file&&AT(e.file);return t?(e.args.unshift(e.file),e.command=t,rh(e)):e.file}function FT(e){if(!IT)return e;let t=kT(e),a=!_T.test(t);if(e.options.forceShell||a){let n=TT.test(t);e.command=CT.normalize(e.command),e.command=oh.command(e.command),e.args=e.args.map(r=>oh.argument(r,n));let i=[e.command].concat(e.args).join(" ");e.args=["/d","/s","/c",`"${i}"`],e.command=process.env.comspec||"cmd.exe",e.options.windowsVerbatimArguments=!0}return e}function PT(e,t,a){t&&!Array.isArray(t)&&(a=t,t=null),t=t?t.slice(0):[],a=Object.assign({},a);let n={command:e,args:t,options:a,file:void 0,original:{command:e,args:t}};return a.shell?n:FT(n)}sh.exports=PT});var ph=O((_D,uh)=>{"use strict";var Vc=process.platform==="win32";function Uc(e,t){return Object.assign(new Error(`${t} ${e.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${t} ${e.command}`,path:e.command,spawnargs:e.args})}function OT(e,t){if(!Vc)return;let a=e.emit;e.emit=function(n,i){if(n==="exit"){let r=ch(i,t,"spawn");if(r)return a.call(e,"error",r)}return a.apply(e,arguments)}}function ch(e,t){return Vc&&e===1&&!t.file?Uc(t.original,"spawn"):null}function RT(e,t){return Vc&&e===1&&!t.file?Uc(t.original,"spawnSync"):null}uh.exports={hookChildProcess:OT,verifyENOENT:ch,verifyENOENTSync:RT,notFoundError:Uc}});var qc=O((TD,An)=>{"use strict";var dh=require("child_process"),Jc=lh(),Zc=ph();function fh(e,t,a){let n=Jc(e,t,a),i=dh.spawn(n.command,n.args,n.options);return Zc.hookChildProcess(i,n),i}function BT(e,t,a){let n=Jc(e,t,a),i=dh.spawnSync(n.command,n.args,n.options);return i.error=i.error||Zc.verifyENOENTSync(i.status,n),i}An.exports=fh;An.exports.spawn=fh;An.exports.sync=BT;An.exports._parse=Jc;An.exports._enoent=Zc});var hh=O((kD,mh)=>{"use strict";mh.exports=e=>{let t=typeof e=="string"?` +`:` +`.charCodeAt(),a=typeof e=="string"?"\r":"\r".charCodeAt();return e[e.length-1]===t&&(e=e.slice(0,e.length-1)),e[e.length-1]===a&&(e=e.slice(0,e.length-1)),e}});var gh=O((FD,ki)=>{"use strict";var Ti=require("path"),vh=zc(),bh=e=>{e={cwd:process.cwd(),path:process.env[vh()],execPath:process.execPath,...e};let t,a=Ti.resolve(e.cwd),n=[];for(;t!==a;)n.push(Ti.join(a,"node_modules/.bin")),t=a,a=Ti.resolve(a,"..");let i=Ti.resolve(e.cwd,e.execPath,"..");return n.push(i),n.concat(e.path).join(Ti.delimiter)};ki.exports=bh;ki.exports.default=bh;ki.exports.env=e=>{e={env:process.env,...e};let t={...e.env},a=vh({env:t});return e.path=t[a],t[a]=ki.exports(e),t}});var yh=O((PD,Xc)=>{"use strict";var xh=(e,t)=>{for(let a of Reflect.ownKeys(t))Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(t,a));return e};Xc.exports=xh;Xc.exports.default=xh});var Eh=O((OD,eo)=>{"use strict";var NT=yh(),Qr=new WeakMap,wh=(e,t={})=>{if(typeof e!="function")throw new TypeError("Expected a function");let a,n=0,i=e.displayName||e.name||"",r=function(...o){if(Qr.set(r,++n),n===1)a=e.apply(this,o),e=null;else if(t.throw===!0)throw new Error(`Function \`${i}\` can only be called once`);return a};return NT(r,e),Qr.set(r,n),r};eo.exports=wh;eo.exports.default=wh;eo.exports.callCount=e=>{if(!Qr.has(e))throw new Error(`The given function \`${e.name}\` is not wrapped by the \`onetime\` package`);return Qr.get(e)}});var Sh=O(to=>{"use strict";Object.defineProperty(to,"__esModule",{value:!0});to.SIGNALS=void 0;var jT=[{name:"SIGHUP",number:1,action:"terminate",description:"Terminal closed",standard:"posix"},{name:"SIGINT",number:2,action:"terminate",description:"User interruption with CTRL-C",standard:"ansi"},{name:"SIGQUIT",number:3,action:"core",description:"User interruption with CTRL-\\",standard:"posix"},{name:"SIGILL",number:4,action:"core",description:"Invalid machine instruction",standard:"ansi"},{name:"SIGTRAP",number:5,action:"core",description:"Debugger breakpoint",standard:"posix"},{name:"SIGABRT",number:6,action:"core",description:"Aborted",standard:"ansi"},{name:"SIGIOT",number:6,action:"core",description:"Aborted",standard:"bsd"},{name:"SIGBUS",number:7,action:"core",description:"Bus error due to misaligned, non-existing address or paging error",standard:"bsd"},{name:"SIGEMT",number:7,action:"terminate",description:"Command should be emulated but is not implemented",standard:"other"},{name:"SIGFPE",number:8,action:"core",description:"Floating point arithmetic error",standard:"ansi"},{name:"SIGKILL",number:9,action:"terminate",description:"Forced termination",standard:"posix",forced:!0},{name:"SIGUSR1",number:10,action:"terminate",description:"Application-specific signal",standard:"posix"},{name:"SIGSEGV",number:11,action:"core",description:"Segmentation fault",standard:"ansi"},{name:"SIGUSR2",number:12,action:"terminate",description:"Application-specific signal",standard:"posix"},{name:"SIGPIPE",number:13,action:"terminate",description:"Broken pipe or socket",standard:"posix"},{name:"SIGALRM",number:14,action:"terminate",description:"Timeout or timer",standard:"posix"},{name:"SIGTERM",number:15,action:"terminate",description:"Termination",standard:"ansi"},{name:"SIGSTKFLT",number:16,action:"terminate",description:"Stack is empty or overflowed",standard:"other"},{name:"SIGCHLD",number:17,action:"ignore",description:"Child process terminated, paused or unpaused",standard:"posix"},{name:"SIGCLD",number:17,action:"ignore",description:"Child process terminated, paused or unpaused",standard:"other"},{name:"SIGCONT",number:18,action:"unpause",description:"Unpaused",standard:"posix",forced:!0},{name:"SIGSTOP",number:19,action:"pause",description:"Paused",standard:"posix",forced:!0},{name:"SIGTSTP",number:20,action:"pause",description:'Paused using CTRL-Z or "suspend"',standard:"posix"},{name:"SIGTTIN",number:21,action:"pause",description:"Background process cannot read terminal input",standard:"posix"},{name:"SIGBREAK",number:21,action:"terminate",description:"User interruption with CTRL-BREAK",standard:"other"},{name:"SIGTTOU",number:22,action:"pause",description:"Background process cannot write to terminal output",standard:"posix"},{name:"SIGURG",number:23,action:"ignore",description:"Socket received out-of-band data",standard:"bsd"},{name:"SIGXCPU",number:24,action:"core",description:"Process timed out",standard:"bsd"},{name:"SIGXFSZ",number:25,action:"core",description:"File too big",standard:"bsd"},{name:"SIGVTALRM",number:26,action:"terminate",description:"Timeout or timer",standard:"bsd"},{name:"SIGPROF",number:27,action:"terminate",description:"Timeout or timer",standard:"bsd"},{name:"SIGWINCH",number:28,action:"ignore",description:"Terminal window size changed",standard:"bsd"},{name:"SIGIO",number:29,action:"terminate",description:"I/O is available",standard:"other"},{name:"SIGPOLL",number:29,action:"terminate",description:"Watched event",standard:"other"},{name:"SIGINFO",number:29,action:"ignore",description:"Request for process information",standard:"other"},{name:"SIGPWR",number:30,action:"terminate",description:"Device running out of power",standard:"systemv"},{name:"SIGSYS",number:31,action:"core",description:"Invalid system call",standard:"other"},{name:"SIGUNUSED",number:31,action:"terminate",description:"Invalid system call",standard:"other"}];to.SIGNALS=jT});var $c=O(In=>{"use strict";Object.defineProperty(In,"__esModule",{value:!0});In.SIGRTMAX=In.getRealtimeSignals=void 0;var LT=function(){let e=Ah-Ch+1;return Array.from({length:e},MT)};In.getRealtimeSignals=LT;var MT=function(e,t){return{name:`SIGRT${t+1}`,number:Ch+t,action:"terminate",description:"Application-specific signal (realtime)",standard:"posix"}},Ch=34,Ah=64;In.SIGRTMAX=Ah});var Ih=O(ao=>{"use strict";Object.defineProperty(ao,"__esModule",{value:!0});ao.getSignals=void 0;var DT=require("os"),zT=Sh(),GT=$c(),HT=function(){let e=(0,GT.getRealtimeSignals)();return[...zT.SIGNALS,...e].map(WT)};ao.getSignals=HT;var WT=function({name:e,number:t,description:a,action:n,forced:i=!1,standard:r}){let{signals:{[e]:o}}=DT.constants,s=o!==void 0;return{name:e,number:s?o:t,description:a,supported:s,action:n,forced:i,standard:r}}});var Th=O(_n=>{"use strict";Object.defineProperty(_n,"__esModule",{value:!0});_n.signalsByNumber=_n.signalsByName=void 0;var VT=require("os"),_h=Ih(),UT=$c(),JT=function(){return(0,_h.getSignals)().reduce(ZT,{})},ZT=function(e,{name:t,number:a,description:n,supported:i,action:r,forced:o,standard:s}){return{...e,[t]:{name:t,number:a,description:n,supported:i,action:r,forced:o,standard:s}}},qT=JT();_n.signalsByName=qT;var XT=function(){let e=(0,_h.getSignals)(),t=UT.SIGRTMAX+1,a=Array.from({length:t},(n,i)=>$T(i,e));return Object.assign({},...a)},$T=function(e,t){let a=YT(e,t);if(a===void 0)return{};let{name:n,description:i,supported:r,action:o,forced:s,standard:l}=a;return{[e]:{name:n,number:e,description:i,supported:r,action:o,forced:s,standard:l}}},YT=function(e,t){let a=t.find(({name:n})=>VT.constants.signals[n]===e);return a!==void 0?a:t.find(n=>n.number===e)},KT=XT();_n.signalsByNumber=KT});var Fh=O((LD,kh)=>{"use strict";var{signalsByName:QT}=Th(),e4=({timedOut:e,timeout:t,errorCode:a,signal:n,signalDescription:i,exitCode:r,isCanceled:o})=>e?`timed out after ${t} milliseconds`:o?"was canceled":a!==void 0?`failed with ${a}`:n!==void 0?`was killed with ${n} (${i})`:r!==void 0?`failed with exit code ${r}`:"failed",t4=({stdout:e,stderr:t,all:a,error:n,signal:i,exitCode:r,command:o,escapedCommand:s,timedOut:l,isCanceled:u,killed:c,parsed:{options:{timeout:f}}})=>{r=r===null?void 0:r,i=i===null?void 0:i;let p=i===void 0?void 0:QT[i].description,b=n&&n.code,m=`Command ${e4({timedOut:l,timeout:f,errorCode:b,signal:i,signalDescription:p,exitCode:r,isCanceled:u})}: ${o}`,h=Object.prototype.toString.call(n)==="[object Error]",v=h?`${m} +${n.message}`:m,x=[v,t,e].filter(Boolean).join(` +`);return h?(n.originalMessage=n.message,n.message=x):n=new Error(x),n.shortMessage=v,n.command=o,n.escapedCommand=s,n.exitCode=r,n.signal=i,n.signalDescription=p,n.stdout=e,n.stderr=t,a!==void 0&&(n.all=a),"bufferedData"in n&&delete n.bufferedData,n.failed=!0,n.timedOut=!!l,n.isCanceled=u,n.killed=c&&!l,n};kh.exports=t4});var Oh=O((MD,Yc)=>{"use strict";var no=["stdin","stdout","stderr"],a4=e=>no.some(t=>e[t]!==void 0),Ph=e=>{if(!e)return;let{stdio:t}=e;if(t===void 0)return no.map(n=>e[n]);if(a4(e))throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${no.map(n=>`\`${n}\``).join(", ")}`);if(typeof t=="string")return t;if(!Array.isArray(t))throw new TypeError(`Expected \`stdio\` to be of type \`string\` or \`Array\`, got \`${typeof t}\``);let a=Math.max(t.length,no.length);return Array.from({length:a},(n,i)=>t[i])};Yc.exports=Ph;Yc.exports.node=e=>{let t=Ph(e);return t==="ipc"?"ipc":t===void 0||typeof t=="string"?[t,t,t,"ipc"]:t.includes("ipc")?t:[...t,"ipc"]}});var Rh=O((DD,io)=>{io.exports=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"];process.platform!=="win32"&&io.exports.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&io.exports.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED")});var eu=O((zD,Fn)=>{var Ge=global.process,qa=function(e){return e&&typeof e=="object"&&typeof e.removeListener=="function"&&typeof e.emit=="function"&&typeof e.reallyExit=="function"&&typeof e.listeners=="function"&&typeof e.kill=="function"&&typeof e.pid=="number"&&typeof e.on=="function"};qa(Ge)?(Bh=require("assert"),Tn=Rh(),Nh=/^win/i.test(Ge.platform),Fi=require("events"),typeof Fi!="function"&&(Fi=Fi.EventEmitter),Ge.__signal_exit_emitter__?at=Ge.__signal_exit_emitter__:(at=Ge.__signal_exit_emitter__=new Fi,at.count=0,at.emitted={}),at.infinite||(at.setMaxListeners(1/0),at.infinite=!0),Fn.exports=function(e,t){if(!qa(global.process))return function(){};Bh.equal(typeof e,"function","a callback must be provided for exit handler"),kn===!1&&Kc();var a="exit";t&&t.alwaysLast&&(a="afterexit");var n=function(){at.removeListener(a,e),at.listeners("exit").length===0&&at.listeners("afterexit").length===0&&ro()};return at.on(a,e),n},ro=function(){!kn||!qa(global.process)||(kn=!1,Tn.forEach(function(t){try{Ge.removeListener(t,oo[t])}catch(a){}}),Ge.emit=so,Ge.reallyExit=Qc,at.count-=1)},Fn.exports.unload=ro,Xa=function(t,a,n){at.emitted[t]||(at.emitted[t]=!0,at.emit(t,a,n))},oo={},Tn.forEach(function(e){oo[e]=function(){if(qa(global.process)){var a=Ge.listeners(e);a.length===at.count&&(ro(),Xa("exit",null,e),Xa("afterexit",null,e),Nh&&e==="SIGHUP"&&(e="SIGINT"),Ge.kill(Ge.pid,e))}}}),Fn.exports.signals=function(){return Tn},kn=!1,Kc=function(){kn||!qa(global.process)||(kn=!0,at.count+=1,Tn=Tn.filter(function(t){try{return Ge.on(t,oo[t]),!0}catch(a){return!1}}),Ge.emit=Lh,Ge.reallyExit=jh)},Fn.exports.load=Kc,Qc=Ge.reallyExit,jh=function(t){qa(global.process)&&(Ge.exitCode=t||0,Xa("exit",Ge.exitCode,null),Xa("afterexit",Ge.exitCode,null),Qc.call(Ge,Ge.exitCode))},so=Ge.emit,Lh=function(t,a){if(t==="exit"&&qa(global.process)){a!==void 0&&(Ge.exitCode=a);var n=so.apply(this,arguments);return Xa("exit",Ge.exitCode,null),Xa("afterexit",Ge.exitCode,null),n}else return so.apply(this,arguments)}):Fn.exports=function(){return function(){}};var Bh,Tn,Nh,Fi,at,ro,Xa,oo,kn,Kc,Qc,jh,so,Lh});var Dh=O((GD,Mh)=>{"use strict";var n4=require("os"),i4=eu(),r4=1e3*5,o4=(e,t="SIGTERM",a={})=>{let n=e(t);return s4(e,t,a,n),n},s4=(e,t,a,n)=>{if(!l4(t,a,n))return;let i=u4(a),r=setTimeout(()=>{e("SIGKILL")},i);r.unref&&r.unref()},l4=(e,{forceKillAfterTimeout:t},a)=>c4(e)&&t!==!1&&a,c4=e=>e===n4.constants.signals.SIGTERM||typeof e=="string"&&e.toUpperCase()==="SIGTERM",u4=({forceKillAfterTimeout:e=!0})=>{if(e===!0)return r4;if(!Number.isFinite(e)||e<0)throw new TypeError(`Expected the \`forceKillAfterTimeout\` option to be a non-negative integer, got \`${e}\` (${typeof e})`);return e},p4=(e,t)=>{e.kill()&&(t.isCanceled=!0)},d4=(e,t,a)=>{e.kill(t),a(Object.assign(new Error("Timed out"),{timedOut:!0,signal:t}))},f4=(e,{timeout:t,killSignal:a="SIGTERM"},n)=>{if(t===0||t===void 0)return n;let i,r=new Promise((s,l)=>{i=setTimeout(()=>{d4(e,a,l)},t)}),o=n.finally(()=>{clearTimeout(i)});return Promise.race([r,o])},m4=({timeout:e})=>{if(e!==void 0&&(!Number.isFinite(e)||e<0))throw new TypeError(`Expected the \`timeout\` option to be a non-negative integer, got \`${e}\` (${typeof e})`)},h4=async(e,{cleanup:t,detached:a},n)=>{if(!t||a)return n;let i=i4(()=>{e.kill()});return n.finally(()=>{i()})};Mh.exports={spawnedKill:o4,spawnedCancel:p4,setupTimeout:f4,validateTimeout:m4,setExitHandler:h4}});var Gh=O((HD,zh)=>{"use strict";var Xt=e=>e!==null&&typeof e=="object"&&typeof e.pipe=="function";Xt.writable=e=>Xt(e)&&e.writable!==!1&&typeof e._write=="function"&&typeof e._writableState=="object";Xt.readable=e=>Xt(e)&&e.readable!==!1&&typeof e._read=="function"&&typeof e._readableState=="object";Xt.duplex=e=>Xt.writable(e)&&Xt.readable(e);Xt.transform=e=>Xt.duplex(e)&&typeof e._transform=="function";zh.exports=Xt});var Wh=O((WD,Hh)=>{"use strict";var{PassThrough:v4}=require("stream");Hh.exports=e=>{e={...e};let{array:t}=e,{encoding:a}=e,n=a==="buffer",i=!1;t?i=!(a||n):a=a||"utf8",n&&(a=null);let r=new v4({objectMode:i});a&&r.setEncoding(a);let o=0,s=[];return r.on("data",l=>{s.push(l),i?o=s.length:o+=l.length}),r.getBufferedValue=()=>t?s:n?Buffer.concat(s,o):s.join(""),r.getBufferedLength=()=>o,r}});var Vh=O((VD,Pi)=>{"use strict";var{constants:b4}=require("buffer"),g4=require("stream"),{promisify:x4}=require("util"),y4=Wh(),w4=x4(g4.pipeline),lo=class extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}};async function tu(e,t){if(!e)throw new Error("Expected a stream");t={maxBuffer:1/0,...t};let{maxBuffer:a}=t,n=y4(t);return await new Promise((i,r)=>{let o=s=>{s&&n.getBufferedLength()<=b4.MAX_LENGTH&&(s.bufferedData=n.getBufferedValue()),r(s)};(async()=>{try{await w4(e,n),i()}catch(s){o(s)}})(),n.on("data",()=>{n.getBufferedLength()>a&&o(new lo)})}),n.getBufferedValue()}Pi.exports=tu;Pi.exports.buffer=(e,t)=>tu(e,{...t,encoding:"buffer"});Pi.exports.array=(e,t)=>tu(e,{...t,array:!0});Pi.exports.MaxBufferError=lo});var au=O((UD,Uh)=>{"use strict";var{PassThrough:E4}=require("stream");Uh.exports=function(){var e=[],t=new E4({objectMode:!0});return t.setMaxListeners(0),t.add=a,t.isEmpty=n,t.on("unpipe",i),Array.prototype.slice.call(arguments).forEach(a),t;function a(r){return Array.isArray(r)?(r.forEach(a),this):(e.push(r),r.once("end",i.bind(null,r)),r.once("error",t.emit.bind(t,"error")),r.pipe(t,{end:!1}),this)}function n(){return e.length==0}function i(r){e=e.filter(function(o){return o!==r}),!e.length&&t.readable&&t.end()}}});var Xh=O((JD,qh)=>{"use strict";var Zh=Gh(),Jh=Vh(),S4=au(),C4=(e,t)=>{t===void 0||e.stdin===void 0||(Zh(t)?t.pipe(e.stdin):e.stdin.end(t))},A4=(e,{all:t})=>{if(!t||!e.stdout&&!e.stderr)return;let a=S4();return e.stdout&&a.add(e.stdout),e.stderr&&a.add(e.stderr),a},nu=async(e,t)=>{if(e){e.destroy();try{return await t}catch(a){return a.bufferedData}}},iu=(e,{encoding:t,buffer:a,maxBuffer:n})=>{if(!(!e||!a))return t?Jh(e,{encoding:t,maxBuffer:n}):Jh.buffer(e,{maxBuffer:n})},I4=async({stdout:e,stderr:t,all:a},{encoding:n,buffer:i,maxBuffer:r},o)=>{let s=iu(e,{encoding:n,buffer:i,maxBuffer:r}),l=iu(t,{encoding:n,buffer:i,maxBuffer:r}),u=iu(a,{encoding:n,buffer:i,maxBuffer:r*2});try{return await Promise.all([o,s,l,u])}catch(c){return Promise.all([{error:c,signal:c.signal,timedOut:c.timedOut},nu(e,s),nu(t,l),nu(a,u)])}},_4=({input:e})=>{if(Zh(e))throw new TypeError("The `input` option cannot be a stream in sync mode")};qh.exports={handleInput:C4,makeAllStream:A4,getSpawnedResult:I4,validateInputSync:_4}});var Yh=O((ZD,$h)=>{"use strict";var T4=(async()=>{})().constructor.prototype,k4=["then","catch","finally"].map(e=>[e,Reflect.getOwnPropertyDescriptor(T4,e)]),F4=(e,t)=>{for(let[a,n]of k4){let i=typeof t=="function"?(...r)=>Reflect.apply(n.value,t(),r):n.value.bind(t);Reflect.defineProperty(e,a,{...n,value:i})}return e},P4=e=>new Promise((t,a)=>{e.on("exit",(n,i)=>{t({exitCode:n,signal:i})}),e.on("error",n=>{a(n)}),e.stdin&&e.stdin.on("error",n=>{a(n)})});$h.exports={mergePromise:F4,getSpawnedPromise:P4}});var ev=O((qD,Qh)=>{"use strict";var Kh=(e,t=[])=>Array.isArray(t)?[e,...t]:[e],O4=/^[\w.-]+$/,R4=/"/g,B4=e=>typeof e!="string"||O4.test(e)?e:`"${e.replace(R4,'\\"')}"`,N4=(e,t)=>Kh(e,t).join(" "),j4=(e,t)=>Kh(e,t).map(a=>B4(a)).join(" "),L4=/ +/g,M4=e=>{let t=[];for(let a of e.trim().split(L4)){let n=t[t.length-1];n&&n.endsWith("\\")?t[t.length-1]=`${n.slice(0,-1)} ${a}`:t.push(a)}return t};Qh.exports={joinCommand:N4,getEscapedCommand:j4,parseCommand:M4}});var sv=O((XD,Pn)=>{"use strict";var D4=require("path"),ru=require("child_process"),z4=qc(),G4=hh(),H4=gh(),W4=Eh(),co=Fh(),av=Oh(),{spawnedKill:V4,spawnedCancel:U4,setupTimeout:J4,validateTimeout:Z4,setExitHandler:q4}=Dh(),{handleInput:X4,getSpawnedResult:$4,makeAllStream:Y4,validateInputSync:K4}=Xh(),{mergePromise:tv,getSpawnedPromise:Q4}=Yh(),{joinCommand:nv,parseCommand:iv,getEscapedCommand:rv}=ev(),ek=1e3*1e3*100,tk=({env:e,extendEnv:t,preferLocal:a,localDir:n,execPath:i})=>{let r=t?{...process.env,...e}:e;return a?H4.env({env:r,cwd:n,execPath:i}):r},ov=(e,t,a={})=>{let n=z4._parse(e,t,a);return e=n.command,t=n.args,a=n.options,a={maxBuffer:ek,buffer:!0,stripFinalNewline:!0,extendEnv:!0,preferLocal:!1,localDir:a.cwd||process.cwd(),execPath:process.execPath,encoding:"utf8",reject:!0,cleanup:!0,all:!1,windowsHide:!0,...a},a.env=tk(a),a.stdio=av(a),process.platform==="win32"&&D4.basename(e,".exe")==="cmd"&&t.unshift("/q"),{file:e,args:t,options:a,parsed:n}},Oi=(e,t,a)=>typeof t!="string"&&!Buffer.isBuffer(t)?a===void 0?void 0:"":e.stripFinalNewline?G4(t):t,uo=(e,t,a)=>{let n=ov(e,t,a),i=nv(e,t),r=rv(e,t);Z4(n.options);let o;try{o=ru.spawn(n.file,n.args,n.options)}catch(b){let d=new ru.ChildProcess,m=Promise.reject(co({error:b,stdout:"",stderr:"",all:"",command:i,escapedCommand:r,parsed:n,timedOut:!1,isCanceled:!1,killed:!1}));return tv(d,m)}let s=Q4(o),l=J4(o,n.options,s),u=q4(o,n.options,l),c={isCanceled:!1};o.kill=V4.bind(null,o.kill.bind(o)),o.cancel=U4.bind(null,o,c);let p=W4(async()=>{let[{error:b,exitCode:d,signal:m,timedOut:h},v,x,E]=await $4(o,n.options,u),g=Oi(n.options,v),w=Oi(n.options,x),C=Oi(n.options,E);if(b||d!==0||m!==null){let y=co({error:b,exitCode:d,signal:m,stdout:g,stderr:w,all:C,command:i,escapedCommand:r,parsed:n,timedOut:h,isCanceled:c.isCanceled,killed:o.killed});if(!n.options.reject)return y;throw y}return{command:i,escapedCommand:r,exitCode:0,stdout:g,stderr:w,all:C,failed:!1,timedOut:!1,isCanceled:!1,killed:!1}});return X4(o,n.options.input),o.all=Y4(o,n.options),tv(o,p)};Pn.exports=uo;Pn.exports.sync=(e,t,a)=>{let n=ov(e,t,a),i=nv(e,t),r=rv(e,t);K4(n.options);let o;try{o=ru.spawnSync(n.file,n.args,n.options)}catch(u){throw co({error:u,stdout:"",stderr:"",all:"",command:i,escapedCommand:r,parsed:n,timedOut:!1,isCanceled:!1,killed:!1})}let s=Oi(n.options,o.stdout,o.error),l=Oi(n.options,o.stderr,o.error);if(o.error||o.status!==0||o.signal!==null){let u=co({stdout:s,stderr:l,error:o.error,signal:o.signal,exitCode:o.status,command:i,escapedCommand:r,parsed:n,timedOut:o.error&&o.error.code==="ETIMEDOUT",isCanceled:!1,killed:o.signal!==null});if(!n.options.reject)return u;throw u}return{command:i,escapedCommand:r,exitCode:0,stdout:s,stderr:l,failed:!1,timedOut:!1,isCanceled:!1,killed:!1}};Pn.exports.command=(e,t)=>{let[a,...n]=iv(e);return uo(a,n,t)};Pn.exports.commandSync=(e,t)=>{let[a,...n]=iv(e);return uo.sync(a,n,t)};Pn.exports.node=(e,t,a={})=>{t&&!Array.isArray(t)&&typeof t=="object"&&(a=t,t=[]);let n=av.node(a),i=process.execArgv.filter(s=>!s.startsWith("--inspect")),{nodePath:r=process.execPath,nodeOptions:o=i}=a;return uo(r,[...o,e,...Array.isArray(t)?t:[]],{...a,stdin:void 0,stdout:void 0,stderr:void 0,stdio:n,shell:!1})}});var o0=O((Eo,r0)=>{"use strict";Eo.__esModule=!0;Eo.default={scheme:"threezerotwofour",author:"jan t. sott (http://github.com/idleberg)",base00:"#090300",base01:"#3a3432",base02:"#4a4543",base03:"#5c5855",base04:"#807d7c",base05:"#a5a2a2",base06:"#d6d5d4",base07:"#f7f7f7",base08:"#db2d20",base09:"#e8bbd0",base0A:"#fded02",base0B:"#01a252",base0C:"#b5e4f4",base0D:"#01a0e4",base0E:"#a16a94",base0F:"#cdab53"};r0.exports=Eo.default});var l0=O((So,s0)=>{"use strict";So.__esModule=!0;So.default={scheme:"apathy",author:"jannik siebert (https://github.com/janniks)",base00:"#031A16",base01:"#0B342D",base02:"#184E45",base03:"#2B685E",base04:"#5F9C92",base05:"#81B5AC",base06:"#A7CEC8",base07:"#D2E7E4",base08:"#3E9688",base09:"#3E7996",base0A:"#3E4C96",base0B:"#883E96",base0C:"#963E4C",base0D:"#96883E",base0E:"#4C963E",base0F:"#3E965B"};s0.exports=So.default});var u0=O((Co,c0)=>{"use strict";Co.__esModule=!0;Co.default={scheme:"ashes",author:"jannik siebert (https://github.com/janniks)",base00:"#1C2023",base01:"#393F45",base02:"#565E65",base03:"#747C84",base04:"#ADB3BA",base05:"#C7CCD1",base06:"#DFE2E5",base07:"#F3F4F5",base08:"#C7AE95",base09:"#C7C795",base0A:"#AEC795",base0B:"#95C7AE",base0C:"#95AEC7",base0D:"#AE95C7",base0E:"#C795AE",base0F:"#C79595"};c0.exports=Co.default});var d0=O((Ao,p0)=>{"use strict";Ao.__esModule=!0;Ao.default={scheme:"atelier dune",author:"bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune)",base00:"#20201d",base01:"#292824",base02:"#6e6b5e",base03:"#7d7a68",base04:"#999580",base05:"#a6a28c",base06:"#e8e4cf",base07:"#fefbec",base08:"#d73737",base09:"#b65611",base0A:"#cfb017",base0B:"#60ac39",base0C:"#1fad83",base0D:"#6684e1",base0E:"#b854d4",base0F:"#d43552"};p0.exports=Ao.default});var m0=O((Io,f0)=>{"use strict";Io.__esModule=!0;Io.default={scheme:"atelier forest",author:"bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest)",base00:"#1b1918",base01:"#2c2421",base02:"#68615e",base03:"#766e6b",base04:"#9c9491",base05:"#a8a19f",base06:"#e6e2e0",base07:"#f1efee",base08:"#f22c40",base09:"#df5320",base0A:"#d5911a",base0B:"#5ab738",base0C:"#00ad9c",base0D:"#407ee7",base0E:"#6666ea",base0F:"#c33ff3"};f0.exports=Io.default});var v0=O((_o,h0)=>{"use strict";_o.__esModule=!0;_o.default={scheme:"atelier heath",author:"bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath)",base00:"#1b181b",base01:"#292329",base02:"#695d69",base03:"#776977",base04:"#9e8f9e",base05:"#ab9bab",base06:"#d8cad8",base07:"#f7f3f7",base08:"#ca402b",base09:"#a65926",base0A:"#bb8a35",base0B:"#379a37",base0C:"#159393",base0D:"#516aec",base0E:"#7b59c0",base0F:"#cc33cc"};h0.exports=_o.default});var g0=O((To,b0)=>{"use strict";To.__esModule=!0;To.default={scheme:"atelier lakeside",author:"bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside/)",base00:"#161b1d",base01:"#1f292e",base02:"#516d7b",base03:"#5a7b8c",base04:"#7195a8",base05:"#7ea2b4",base06:"#c1e4f6",base07:"#ebf8ff",base08:"#d22d72",base09:"#935c25",base0A:"#8a8a0f",base0B:"#568c3b",base0C:"#2d8f6f",base0D:"#257fad",base0E:"#5d5db1",base0F:"#b72dd2"};b0.exports=To.default});var y0=O((ko,x0)=>{"use strict";ko.__esModule=!0;ko.default={scheme:"atelier seaside",author:"bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside/)",base00:"#131513",base01:"#242924",base02:"#5e6e5e",base03:"#687d68",base04:"#809980",base05:"#8ca68c",base06:"#cfe8cf",base07:"#f0fff0",base08:"#e6193c",base09:"#87711d",base0A:"#c3c322",base0B:"#29a329",base0C:"#1999b3",base0D:"#3d62f5",base0E:"#ad2bee",base0F:"#e619c3"};x0.exports=ko.default});var E0=O((Fo,w0)=>{"use strict";Fo.__esModule=!0;Fo.default={scheme:"bespin",author:"jan t. sott",base00:"#28211c",base01:"#36312e",base02:"#5e5d5c",base03:"#666666",base04:"#797977",base05:"#8a8986",base06:"#9d9b97",base07:"#baae9e",base08:"#cf6a4c",base09:"#cf7d34",base0A:"#f9ee98",base0B:"#54be0d",base0C:"#afc4db",base0D:"#5ea6ea",base0E:"#9b859d",base0F:"#937121"};w0.exports=Fo.default});var C0=O((Po,S0)=>{"use strict";Po.__esModule=!0;Po.default={scheme:"brewer",author:"timoth\xE9e poisot (http://github.com/tpoisot)",base00:"#0c0d0e",base01:"#2e2f30",base02:"#515253",base03:"#737475",base04:"#959697",base05:"#b7b8b9",base06:"#dadbdc",base07:"#fcfdfe",base08:"#e31a1c",base09:"#e6550d",base0A:"#dca060",base0B:"#31a354",base0C:"#80b1d3",base0D:"#3182bd",base0E:"#756bb1",base0F:"#b15928"};S0.exports=Po.default});var I0=O((Oo,A0)=>{"use strict";Oo.__esModule=!0;Oo.default={scheme:"bright",author:"chris kempson (http://chriskempson.com)",base00:"#000000",base01:"#303030",base02:"#505050",base03:"#b0b0b0",base04:"#d0d0d0",base05:"#e0e0e0",base06:"#f5f5f5",base07:"#ffffff",base08:"#fb0120",base09:"#fc6d24",base0A:"#fda331",base0B:"#a1c659",base0C:"#76c7b7",base0D:"#6fb3d2",base0E:"#d381c3",base0F:"#be643c"};A0.exports=Oo.default});var T0=O((Ro,_0)=>{"use strict";Ro.__esModule=!0;Ro.default={scheme:"chalk",author:"chris kempson (http://chriskempson.com)",base00:"#151515",base01:"#202020",base02:"#303030",base03:"#505050",base04:"#b0b0b0",base05:"#d0d0d0",base06:"#e0e0e0",base07:"#f5f5f5",base08:"#fb9fb1",base09:"#eda987",base0A:"#ddb26f",base0B:"#acc267",base0C:"#12cfc0",base0D:"#6fc2ef",base0E:"#e1a3ee",base0F:"#deaf8f"};_0.exports=Ro.default});var F0=O((Bo,k0)=>{"use strict";Bo.__esModule=!0;Bo.default={scheme:"codeschool",author:"brettof86",base00:"#232c31",base01:"#1c3657",base02:"#2a343a",base03:"#3f4944",base04:"#84898c",base05:"#9ea7a6",base06:"#a7cfa3",base07:"#b5d8f6",base08:"#2a5491",base09:"#43820d",base0A:"#a03b1e",base0B:"#237986",base0C:"#b02f30",base0D:"#484d79",base0E:"#c59820",base0F:"#c98344"};k0.exports=Bo.default});var O0=O((No,P0)=>{"use strict";No.__esModule=!0;No.default={scheme:"colors",author:"mrmrs (http://clrs.cc)",base00:"#111111",base01:"#333333",base02:"#555555",base03:"#777777",base04:"#999999",base05:"#bbbbbb",base06:"#dddddd",base07:"#ffffff",base08:"#ff4136",base09:"#ff851b",base0A:"#ffdc00",base0B:"#2ecc40",base0C:"#7fdbff",base0D:"#0074d9",base0E:"#b10dc9",base0F:"#85144b"};P0.exports=No.default});var B0=O((jo,R0)=>{"use strict";jo.__esModule=!0;jo.default={scheme:"default",author:"chris kempson (http://chriskempson.com)",base00:"#181818",base01:"#282828",base02:"#383838",base03:"#585858",base04:"#b8b8b8",base05:"#d8d8d8",base06:"#e8e8e8",base07:"#f8f8f8",base08:"#ab4642",base09:"#dc9656",base0A:"#f7ca88",base0B:"#a1b56c",base0C:"#86c1b9",base0D:"#7cafc2",base0E:"#ba8baf",base0F:"#a16946"};R0.exports=jo.default});var j0=O((Lo,N0)=>{"use strict";Lo.__esModule=!0;Lo.default={scheme:"eighties",author:"chris kempson (http://chriskempson.com)",base00:"#2d2d2d",base01:"#393939",base02:"#515151",base03:"#747369",base04:"#a09f93",base05:"#d3d0c8",base06:"#e8e6df",base07:"#f2f0ec",base08:"#f2777a",base09:"#f99157",base0A:"#ffcc66",base0B:"#99cc99",base0C:"#66cccc",base0D:"#6699cc",base0E:"#cc99cc",base0F:"#d27b53"};N0.exports=Lo.default});var M0=O((Mo,L0)=>{"use strict";Mo.__esModule=!0;Mo.default={scheme:"embers",author:"jannik siebert (https://github.com/janniks)",base00:"#16130F",base01:"#2C2620",base02:"#433B32",base03:"#5A5047",base04:"#8A8075",base05:"#A39A90",base06:"#BEB6AE",base07:"#DBD6D1",base08:"#826D57",base09:"#828257",base0A:"#6D8257",base0B:"#57826D",base0C:"#576D82",base0D:"#6D5782",base0E:"#82576D",base0F:"#825757"};L0.exports=Mo.default});var z0=O((Do,D0)=>{"use strict";Do.__esModule=!0;Do.default={scheme:"flat",author:"chris kempson (http://chriskempson.com)",base00:"#2C3E50",base01:"#34495E",base02:"#7F8C8D",base03:"#95A5A6",base04:"#BDC3C7",base05:"#e0e0e0",base06:"#f5f5f5",base07:"#ECF0F1",base08:"#E74C3C",base09:"#E67E22",base0A:"#F1C40F",base0B:"#2ECC71",base0C:"#1ABC9C",base0D:"#3498DB",base0E:"#9B59B6",base0F:"#be643c"};D0.exports=Do.default});var H0=O((zo,G0)=>{"use strict";zo.__esModule=!0;zo.default={scheme:"google",author:"seth wright (http://sethawright.com)",base00:"#1d1f21",base01:"#282a2e",base02:"#373b41",base03:"#969896",base04:"#b4b7b4",base05:"#c5c8c6",base06:"#e0e0e0",base07:"#ffffff",base08:"#CC342B",base09:"#F96A38",base0A:"#FBA922",base0B:"#198844",base0C:"#3971ED",base0D:"#3971ED",base0E:"#A36AC7",base0F:"#3971ED"};G0.exports=zo.default});var V0=O((Go,W0)=>{"use strict";Go.__esModule=!0;Go.default={scheme:"grayscale",author:"alexandre gavioli (https://github.com/alexx2/)",base00:"#101010",base01:"#252525",base02:"#464646",base03:"#525252",base04:"#ababab",base05:"#b9b9b9",base06:"#e3e3e3",base07:"#f7f7f7",base08:"#7c7c7c",base09:"#999999",base0A:"#a0a0a0",base0B:"#8e8e8e",base0C:"#868686",base0D:"#686868",base0E:"#747474",base0F:"#5e5e5e"};W0.exports=Go.default});var J0=O((Ho,U0)=>{"use strict";Ho.__esModule=!0;Ho.default={scheme:"green screen",author:"chris kempson (http://chriskempson.com)",base00:"#001100",base01:"#003300",base02:"#005500",base03:"#007700",base04:"#009900",base05:"#00bb00",base06:"#00dd00",base07:"#00ff00",base08:"#007700",base09:"#009900",base0A:"#007700",base0B:"#00bb00",base0C:"#005500",base0D:"#009900",base0E:"#00bb00",base0F:"#005500"};U0.exports=Ho.default});var q0=O((Wo,Z0)=>{"use strict";Wo.__esModule=!0;Wo.default={scheme:"harmonic16",author:"jannik siebert (https://github.com/janniks)",base00:"#0b1c2c",base01:"#223b54",base02:"#405c79",base03:"#627e99",base04:"#aabcce",base05:"#cbd6e2",base06:"#e5ebf1",base07:"#f7f9fb",base08:"#bf8b56",base09:"#bfbf56",base0A:"#8bbf56",base0B:"#56bf8b",base0C:"#568bbf",base0D:"#8b56bf",base0E:"#bf568b",base0F:"#bf5656"};Z0.exports=Wo.default});var $0=O((Vo,X0)=>{"use strict";Vo.__esModule=!0;Vo.default={scheme:"hopscotch",author:"jan t. sott",base00:"#322931",base01:"#433b42",base02:"#5c545b",base03:"#797379",base04:"#989498",base05:"#b9b5b8",base06:"#d5d3d5",base07:"#ffffff",base08:"#dd464c",base09:"#fd8b19",base0A:"#fdcc59",base0B:"#8fc13e",base0C:"#149b93",base0D:"#1290bf",base0E:"#c85e7c",base0F:"#b33508"};X0.exports=Vo.default});var K0=O((Uo,Y0)=>{"use strict";Uo.__esModule=!0;Uo.default={scheme:"isotope",author:"jan t. sott",base00:"#000000",base01:"#404040",base02:"#606060",base03:"#808080",base04:"#c0c0c0",base05:"#d0d0d0",base06:"#e0e0e0",base07:"#ffffff",base08:"#ff0000",base09:"#ff9900",base0A:"#ff0099",base0B:"#33ff00",base0C:"#00ffff",base0D:"#0066ff",base0E:"#cc00ff",base0F:"#3300ff"};Y0.exports=Uo.default});var eb=O((Jo,Q0)=>{"use strict";Jo.__esModule=!0;Jo.default={scheme:"marrakesh",author:"alexandre gavioli (http://github.com/alexx2/)",base00:"#201602",base01:"#302e00",base02:"#5f5b17",base03:"#6c6823",base04:"#86813b",base05:"#948e48",base06:"#ccc37a",base07:"#faf0a5",base08:"#c35359",base09:"#b36144",base0A:"#a88339",base0B:"#18974e",base0C:"#75a738",base0D:"#477ca1",base0E:"#8868b3",base0F:"#b3588e"};Q0.exports=Jo.default});var ab=O((Zo,tb)=>{"use strict";Zo.__esModule=!0;Zo.default={scheme:"mocha",author:"chris kempson (http://chriskempson.com)",base00:"#3B3228",base01:"#534636",base02:"#645240",base03:"#7e705a",base04:"#b8afad",base05:"#d0c8c6",base06:"#e9e1dd",base07:"#f5eeeb",base08:"#cb6077",base09:"#d28b71",base0A:"#f4bc87",base0B:"#beb55b",base0C:"#7bbda4",base0D:"#8ab3b5",base0E:"#a89bb9",base0F:"#bb9584"};tb.exports=Zo.default});var ib=O((qo,nb)=>{"use strict";qo.__esModule=!0;qo.default={scheme:"monokai",author:"wimer hazenberg (http://www.monokai.nl)",base00:"#272822",base01:"#383830",base02:"#49483e",base03:"#75715e",base04:"#a59f85",base05:"#f8f8f2",base06:"#f5f4f1",base07:"#f9f8f5",base08:"#f92672",base09:"#fd971f",base0A:"#f4bf75",base0B:"#a6e22e",base0C:"#a1efe4",base0D:"#66d9ef",base0E:"#ae81ff",base0F:"#cc6633"};nb.exports=qo.default});var ob=O((Xo,rb)=>{"use strict";Xo.__esModule=!0;Xo.default={scheme:"ocean",author:"chris kempson (http://chriskempson.com)",base00:"#2b303b",base01:"#343d46",base02:"#4f5b66",base03:"#65737e",base04:"#a7adba",base05:"#c0c5ce",base06:"#dfe1e8",base07:"#eff1f5",base08:"#bf616a",base09:"#d08770",base0A:"#ebcb8b",base0B:"#a3be8c",base0C:"#96b5b4",base0D:"#8fa1b3",base0E:"#b48ead",base0F:"#ab7967"};rb.exports=Xo.default});var lb=O(($o,sb)=>{"use strict";$o.__esModule=!0;$o.default={scheme:"paraiso",author:"jan t. sott",base00:"#2f1e2e",base01:"#41323f",base02:"#4f424c",base03:"#776e71",base04:"#8d8687",base05:"#a39e9b",base06:"#b9b6b0",base07:"#e7e9db",base08:"#ef6155",base09:"#f99b15",base0A:"#fec418",base0B:"#48b685",base0C:"#5bc4bf",base0D:"#06b6ef",base0E:"#815ba4",base0F:"#e96ba8"};sb.exports=$o.default});var ub=O((Yo,cb)=>{"use strict";Yo.__esModule=!0;Yo.default={scheme:"pop",author:"chris kempson (http://chriskempson.com)",base00:"#000000",base01:"#202020",base02:"#303030",base03:"#505050",base04:"#b0b0b0",base05:"#d0d0d0",base06:"#e0e0e0",base07:"#ffffff",base08:"#eb008a",base09:"#f29333",base0A:"#f8ca12",base0B:"#37b349",base0C:"#00aabb",base0D:"#0e5a94",base0E:"#b31e8d",base0F:"#7a2d00"};cb.exports=Yo.default});var db=O((Ko,pb)=>{"use strict";Ko.__esModule=!0;Ko.default={scheme:"railscasts",author:"ryan bates (http://railscasts.com)",base00:"#2b2b2b",base01:"#272935",base02:"#3a4055",base03:"#5a647e",base04:"#d4cfc9",base05:"#e6e1dc",base06:"#f4f1ed",base07:"#f9f7f3",base08:"#da4939",base09:"#cc7833",base0A:"#ffc66d",base0B:"#a5c261",base0C:"#519f50",base0D:"#6d9cbe",base0E:"#b6b3eb",base0F:"#bc9458"};pb.exports=Ko.default});var mb=O((Qo,fb)=>{"use strict";Qo.__esModule=!0;Qo.default={scheme:"shapeshifter",author:"tyler benziger (http://tybenz.com)",base00:"#000000",base01:"#040404",base02:"#102015",base03:"#343434",base04:"#555555",base05:"#ababab",base06:"#e0e0e0",base07:"#f9f9f9",base08:"#e92f2f",base09:"#e09448",base0A:"#dddd13",base0B:"#0ed839",base0C:"#23edda",base0D:"#3b48e3",base0E:"#f996e2",base0F:"#69542d"};fb.exports=Qo.default});var vb=O((es,hb)=>{"use strict";es.__esModule=!0;es.default={scheme:"solarized",author:"ethan schoonover (http://ethanschoonover.com/solarized)",base00:"#002b36",base01:"#073642",base02:"#586e75",base03:"#657b83",base04:"#839496",base05:"#93a1a1",base06:"#eee8d5",base07:"#fdf6e3",base08:"#dc322f",base09:"#cb4b16",base0A:"#b58900",base0B:"#859900",base0C:"#2aa198",base0D:"#268bd2",base0E:"#6c71c4",base0F:"#d33682"};hb.exports=es.default});var gb=O((ts,bb)=>{"use strict";ts.__esModule=!0;ts.default={scheme:"summerfruit",author:"christopher corley (http://cscorley.github.io/)",base00:"#151515",base01:"#202020",base02:"#303030",base03:"#505050",base04:"#B0B0B0",base05:"#D0D0D0",base06:"#E0E0E0",base07:"#FFFFFF",base08:"#FF0086",base09:"#FD8900",base0A:"#ABA800",base0B:"#00C918",base0C:"#1faaaa",base0D:"#3777E6",base0E:"#AD00A1",base0F:"#cc6633"};bb.exports=ts.default});var yb=O((as,xb)=>{"use strict";as.__esModule=!0;as.default={scheme:"tomorrow",author:"chris kempson (http://chriskempson.com)",base00:"#1d1f21",base01:"#282a2e",base02:"#373b41",base03:"#969896",base04:"#b4b7b4",base05:"#c5c8c6",base06:"#e0e0e0",base07:"#ffffff",base08:"#cc6666",base09:"#de935f",base0A:"#f0c674",base0B:"#b5bd68",base0C:"#8abeb7",base0D:"#81a2be",base0E:"#b294bb",base0F:"#a3685a"};xb.exports=as.default});var Eb=O((ns,wb)=>{"use strict";ns.__esModule=!0;ns.default={scheme:"london tube",author:"jan t. sott",base00:"#231f20",base01:"#1c3f95",base02:"#5a5758",base03:"#737171",base04:"#959ca1",base05:"#d9d8d8",base06:"#e7e7e8",base07:"#ffffff",base08:"#ee2e24",base09:"#f386a1",base0A:"#ffd204",base0B:"#00853e",base0C:"#85cebc",base0D:"#009ddc",base0E:"#98005d",base0F:"#b06110"};wb.exports=ns.default});var Cb=O((is,Sb)=>{"use strict";is.__esModule=!0;is.default={scheme:"twilight",author:"david hart (http://hart-dev.com)",base00:"#1e1e1e",base01:"#323537",base02:"#464b50",base03:"#5f5a60",base04:"#838184",base05:"#a7a7a7",base06:"#c3c3c3",base07:"#ffffff",base08:"#cf6a4c",base09:"#cda869",base0A:"#f9ee98",base0B:"#8f9d6a",base0C:"#afc4db",base0D:"#7587a6",base0E:"#9b859d",base0F:"#9b703f"};Sb.exports=is.default});var Ab=O(de=>{"use strict";de.__esModule=!0;function me(e){return e&&e.__esModule?e.default:e}var Yk=o0();de.threezerotwofour=me(Yk);var Kk=l0();de.apathy=me(Kk);var Qk=u0();de.ashes=me(Qk);var e5=d0();de.atelierDune=me(e5);var t5=m0();de.atelierForest=me(t5);var a5=v0();de.atelierHeath=me(a5);var n5=g0();de.atelierLakeside=me(n5);var i5=y0();de.atelierSeaside=me(i5);var r5=E0();de.bespin=me(r5);var o5=C0();de.brewer=me(o5);var s5=I0();de.bright=me(s5);var l5=T0();de.chalk=me(l5);var c5=F0();de.codeschool=me(c5);var u5=O0();de.colors=me(u5);var p5=B0();de.default=me(p5);var d5=j0();de.eighties=me(d5);var f5=M0();de.embers=me(f5);var m5=z0();de.flat=me(m5);var h5=H0();de.google=me(h5);var v5=V0();de.grayscale=me(v5);var b5=J0();de.greenscreen=me(b5);var g5=q0();de.harmonic=me(g5);var x5=$0();de.hopscotch=me(x5);var y5=K0();de.isotope=me(y5);var w5=eb();de.marrakesh=me(w5);var E5=ab();de.mocha=me(E5);var S5=ib();de.monokai=me(S5);var C5=ob();de.ocean=me(C5);var A5=lb();de.paraiso=me(A5);var I5=ub();de.pop=me(I5);var _5=db();de.railscasts=me(_5);var T5=mb();de.shapeshifter=me(T5);var k5=vb();de.solarized=me(k5);var F5=gb();de.summerfruit=me(F5);var P5=yb();de.tomorrow=me(P5);var O5=Eb();de.tube=me(O5);var R5=Cb();de.twilight=me(R5)});var Ru=O((w8,Ib)=>{"use strict";Ib.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var Tb=O((E8,_b)=>{_b.exports=function(t){return!t||typeof t=="string"?!1:t instanceof Array||Array.isArray(t)||t.length>=0&&(t.splice instanceof Function||Object.getOwnPropertyDescriptor(t,t.length-1)&&t.constructor.name!=="String")}});var Pb=O((S8,Fb)=>{"use strict";var B5=Tb(),N5=Array.prototype.concat,j5=Array.prototype.slice,kb=Fb.exports=function(t){for(var a=[],n=0,i=t.length;n{var Hi=Ru(),Wi=Pb(),Ob=Object.hasOwnProperty,Rb=Object.create(null);for(rs in Hi)Ob.call(Hi,rs)&&(Rb[Hi[rs]]=rs);var rs,Tt=Bb.exports={to:{},get:{}};Tt.get=function(e){var t=e.substring(0,3).toLowerCase(),a,n;switch(t){case"hsl":a=Tt.get.hsl(e),n="hsl";break;case"hwb":a=Tt.get.hwb(e),n="hwb";break;default:a=Tt.get.rgb(e),n="rgb";break}return a?{model:n,value:a}:null};Tt.get.rgb=function(e){if(!e)return null;var t=/^#([a-f0-9]{3,4})$/i,a=/^#([a-f0-9]{6})([a-f0-9]{2})?$/i,n=/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/,i=/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/,r=/^(\w+)$/,o=[0,0,0,1],s,l,u;if(s=e.match(a)){for(u=s[2],s=s[1],l=0;l<3;l++){var c=l*2;o[l]=parseInt(s.slice(c,c+2),16)}u&&(o[3]=parseInt(u,16)/255)}else if(s=e.match(t)){for(s=s[1],u=s[3],l=0;l<3;l++)o[l]=parseInt(s[l]+s[l],16);u&&(o[3]=parseInt(u+u,16)/255)}else if(s=e.match(n)){for(l=0;l<3;l++)o[l]=parseInt(s[l+1],0);s[4]&&(s[5]?o[3]=parseFloat(s[4])*.01:o[3]=parseFloat(s[4]))}else if(s=e.match(i)){for(l=0;l<3;l++)o[l]=Math.round(parseFloat(s[l+1])*2.55);s[4]&&(s[5]?o[3]=parseFloat(s[4])*.01:o[3]=parseFloat(s[4]))}else return(s=e.match(r))?s[1]==="transparent"?[0,0,0,0]:Ob.call(Hi,s[1])?(o=Hi[s[1]],o[3]=1,o):null:null;for(l=0;l<3;l++)o[l]=Fa(o[l],0,255);return o[3]=Fa(o[3],0,1),o};Tt.get.hsl=function(e){if(!e)return null;var t=/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/,a=e.match(t);if(a){var n=parseFloat(a[4]),i=(parseFloat(a[1])%360+360)%360,r=Fa(parseFloat(a[2]),0,100),o=Fa(parseFloat(a[3]),0,100),s=Fa(isNaN(n)?1:n,0,1);return[i,r,o,s]}return null};Tt.get.hwb=function(e){if(!e)return null;var t=/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/,a=e.match(t);if(a){var n=parseFloat(a[4]),i=(parseFloat(a[1])%360+360)%360,r=Fa(parseFloat(a[2]),0,100),o=Fa(parseFloat(a[3]),0,100),s=Fa(isNaN(n)?1:n,0,1);return[i,r,o,s]}return null};Tt.to.hex=function(){var e=Wi(arguments);return"#"+os(e[0])+os(e[1])+os(e[2])+(e[3]<1?os(Math.round(e[3]*255)):"")};Tt.to.rgb=function(){var e=Wi(arguments);return e.length<4||e[3]===1?"rgb("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+")":"rgba("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+", "+e[3]+")"};Tt.to.rgb.percent=function(){var e=Wi(arguments),t=Math.round(e[0]/255*100),a=Math.round(e[1]/255*100),n=Math.round(e[2]/255*100);return e.length<4||e[3]===1?"rgb("+t+"%, "+a+"%, "+n+"%)":"rgba("+t+"%, "+a+"%, "+n+"%, "+e[3]+")"};Tt.to.hsl=function(){var e=Wi(arguments);return e.length<4||e[3]===1?"hsl("+e[0]+", "+e[1]+"%, "+e[2]+"%)":"hsla("+e[0]+", "+e[1]+"%, "+e[2]+"%, "+e[3]+")"};Tt.to.hwb=function(){var e=Wi(arguments),t="";return e.length>=4&&e[3]!==1&&(t=", "+e[3]),"hwb("+e[0]+", "+e[1]+"%, "+e[2]+"%"+t+")"};Tt.to.keyword=function(e){return Rb[e.slice(0,3)]};function Fa(e,t,a){return Math.min(Math.max(t,e),a)}function os(e){var t=Math.round(e).toString(16).toUpperCase();return t.length<2?"0"+t:t}});var Bu=O((A8,Db)=>{var Ka=Ru(),Mb={};for(ss in Ka)Ka.hasOwnProperty(ss)&&(Mb[Ka[ss]]=ss);var ss,Y=Db.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(vt in Y)if(Y.hasOwnProperty(vt)){if(!("channels"in Y[vt]))throw new Error("missing channels property: "+vt);if(!("labels"in Y[vt]))throw new Error("missing channel labels property: "+vt);if(Y[vt].labels.length!==Y[vt].channels)throw new Error("channel and label counts mismatch: "+vt);jb=Y[vt].channels,Lb=Y[vt].labels,delete Y[vt].channels,delete Y[vt].labels,Object.defineProperty(Y[vt],"channels",{value:jb}),Object.defineProperty(Y[vt],"labels",{value:Lb})}var jb,Lb,vt;Y.rgb.hsl=function(e){var t=e[0]/255,a=e[1]/255,n=e[2]/255,i=Math.min(t,a,n),r=Math.max(t,a,n),o=r-i,s,l,u;return r===i?s=0:t===r?s=(a-n)/o:a===r?s=2+(n-t)/o:n===r&&(s=4+(t-a)/o),s=Math.min(s*60,360),s<0&&(s+=360),u=(i+r)/2,r===i?l=0:u<=.5?l=o/(r+i):l=o/(2-r-i),[s,l*100,u*100]};Y.rgb.hsv=function(e){var t,a,n,i,r,o=e[0]/255,s=e[1]/255,l=e[2]/255,u=Math.max(o,s,l),c=u-Math.min(o,s,l),f=function(p){return(u-p)/6/c+1/2};return c===0?i=r=0:(r=c/u,t=f(o),a=f(s),n=f(l),o===u?i=n-a:s===u?i=1/3+t-n:l===u&&(i=2/3+a-t),i<0?i+=1:i>1&&(i-=1)),[i*360,r*100,u*100]};Y.rgb.hwb=function(e){var t=e[0],a=e[1],n=e[2],i=Y.rgb.hsl(e)[0],r=1/255*Math.min(t,Math.min(a,n));return n=1-1/255*Math.max(t,Math.max(a,n)),[i,r*100,n*100]};Y.rgb.cmyk=function(e){var t=e[0]/255,a=e[1]/255,n=e[2]/255,i,r,o,s;return s=Math.min(1-t,1-a,1-n),i=(1-t-s)/(1-s)||0,r=(1-a-s)/(1-s)||0,o=(1-n-s)/(1-s)||0,[i*100,r*100,o*100,s*100]};function L5(e,t){return Math.pow(e[0]-t[0],2)+Math.pow(e[1]-t[1],2)+Math.pow(e[2]-t[2],2)}Y.rgb.keyword=function(e){var t=Mb[e];if(t)return t;var a=1/0,n;for(var i in Ka)if(Ka.hasOwnProperty(i)){var r=Ka[i],o=L5(e,r);o.04045?Math.pow((t+.055)/1.055,2.4):t/12.92,a=a>.04045?Math.pow((a+.055)/1.055,2.4):a/12.92,n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92;var i=t*.4124+a*.3576+n*.1805,r=t*.2126+a*.7152+n*.0722,o=t*.0193+a*.1192+n*.9505;return[i*100,r*100,o*100]};Y.rgb.lab=function(e){var t=Y.rgb.xyz(e),a=t[0],n=t[1],i=t[2],r,o,s;return a/=95.047,n/=100,i/=108.883,a=a>.008856?Math.pow(a,1/3):7.787*a+16/116,n=n>.008856?Math.pow(n,1/3):7.787*n+16/116,i=i>.008856?Math.pow(i,1/3):7.787*i+16/116,r=116*n-16,o=500*(a-n),s=200*(n-i),[r,o,s]};Y.hsl.rgb=function(e){var t=e[0]/360,a=e[1]/100,n=e[2]/100,i,r,o,s,l;if(a===0)return l=n*255,[l,l,l];n<.5?r=n*(1+a):r=n+a-n*a,i=2*n-r,s=[0,0,0];for(var u=0;u<3;u++)o=t+1/3*-(u-1),o<0&&o++,o>1&&o--,6*o<1?l=i+(r-i)*6*o:2*o<1?l=r:3*o<2?l=i+(r-i)*(2/3-o)*6:l=i,s[u]=l*255;return s};Y.hsl.hsv=function(e){var t=e[0],a=e[1]/100,n=e[2]/100,i=a,r=Math.max(n,.01),o,s;return n*=2,a*=n<=1?n:2-n,i*=r<=1?r:2-r,s=(n+a)/2,o=n===0?2*i/(r+i):2*a/(n+a),[t,o*100,s*100]};Y.hsv.rgb=function(e){var t=e[0]/60,a=e[1]/100,n=e[2]/100,i=Math.floor(t)%6,r=t-Math.floor(t),o=255*n*(1-a),s=255*n*(1-a*r),l=255*n*(1-a*(1-r));switch(n*=255,i){case 0:return[n,l,o];case 1:return[s,n,o];case 2:return[o,n,l];case 3:return[o,s,n];case 4:return[l,o,n];case 5:return[n,o,s]}};Y.hsv.hsl=function(e){var t=e[0],a=e[1]/100,n=e[2]/100,i=Math.max(n,.01),r,o,s;return s=(2-a)*n,r=(2-a)*i,o=a*i,o/=r<=1?r:2-r,o=o||0,s/=2,[t,o*100,s*100]};Y.hwb.rgb=function(e){var t=e[0]/360,a=e[1]/100,n=e[2]/100,i=a+n,r,o,s,l;i>1&&(a/=i,n/=i),r=Math.floor(6*t),o=1-n,s=6*t-r,r&1&&(s=1-s),l=a+s*(o-a);var u,c,f;switch(r){default:case 6:case 0:u=o,c=l,f=a;break;case 1:u=l,c=o,f=a;break;case 2:u=a,c=o,f=l;break;case 3:u=a,c=l,f=o;break;case 4:u=l,c=a,f=o;break;case 5:u=o,c=a,f=l;break}return[u*255,c*255,f*255]};Y.cmyk.rgb=function(e){var t=e[0]/100,a=e[1]/100,n=e[2]/100,i=e[3]/100,r,o,s;return r=1-Math.min(1,t*(1-i)+i),o=1-Math.min(1,a*(1-i)+i),s=1-Math.min(1,n*(1-i)+i),[r*255,o*255,s*255]};Y.xyz.rgb=function(e){var t=e[0]/100,a=e[1]/100,n=e[2]/100,i,r,o;return i=t*3.2406+a*-1.5372+n*-.4986,r=t*-.9689+a*1.8758+n*.0415,o=t*.0557+a*-.204+n*1.057,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:i*12.92,r=r>.0031308?1.055*Math.pow(r,1/2.4)-.055:r*12.92,o=o>.0031308?1.055*Math.pow(o,1/2.4)-.055:o*12.92,i=Math.min(Math.max(0,i),1),r=Math.min(Math.max(0,r),1),o=Math.min(Math.max(0,o),1),[i*255,r*255,o*255]};Y.xyz.lab=function(e){var t=e[0],a=e[1],n=e[2],i,r,o;return t/=95.047,a/=100,n/=108.883,t=t>.008856?Math.pow(t,1/3):7.787*t+16/116,a=a>.008856?Math.pow(a,1/3):7.787*a+16/116,n=n>.008856?Math.pow(n,1/3):7.787*n+16/116,i=116*a-16,r=500*(t-a),o=200*(a-n),[i,r,o]};Y.lab.xyz=function(e){var t=e[0],a=e[1],n=e[2],i,r,o;r=(t+16)/116,i=a/500+r,o=r-n/200;var s=Math.pow(r,3),l=Math.pow(i,3),u=Math.pow(o,3);return r=s>.008856?s:(r-16/116)/7.787,i=l>.008856?l:(i-16/116)/7.787,o=u>.008856?u:(o-16/116)/7.787,i*=95.047,r*=100,o*=108.883,[i,r,o]};Y.lab.lch=function(e){var t=e[0],a=e[1],n=e[2],i,r,o;return i=Math.atan2(n,a),r=i*360/2/Math.PI,r<0&&(r+=360),o=Math.sqrt(a*a+n*n),[t,o,r]};Y.lch.lab=function(e){var t=e[0],a=e[1],n=e[2],i,r,o;return o=n/360*2*Math.PI,i=a*Math.cos(o),r=a*Math.sin(o),[t,i,r]};Y.rgb.ansi16=function(e){var t=e[0],a=e[1],n=e[2],i=1 in arguments?arguments[1]:Y.rgb.hsv(e)[2];if(i=Math.round(i/50),i===0)return 30;var r=30+(Math.round(n/255)<<2|Math.round(a/255)<<1|Math.round(t/255));return i===2&&(r+=60),r};Y.hsv.ansi16=function(e){return Y.rgb.ansi16(Y.hsv.rgb(e),e[2])};Y.rgb.ansi256=function(e){var t=e[0],a=e[1],n=e[2];if(t===a&&a===n)return t<8?16:t>248?231:Math.round((t-8)/247*24)+232;var i=16+36*Math.round(t/255*5)+6*Math.round(a/255*5)+Math.round(n/255*5);return i};Y.ansi16.rgb=function(e){var t=e%10;if(t===0||t===7)return e>50&&(t+=3.5),t=t/10.5*255,[t,t,t];var a=(~~(e>50)+1)*.5,n=(t&1)*a*255,i=(t>>1&1)*a*255,r=(t>>2&1)*a*255;return[n,i,r]};Y.ansi256.rgb=function(e){if(e>=232){var t=(e-232)*10+8;return[t,t,t]}e-=16;var a,n=Math.floor(e/36)/5*255,i=Math.floor((a=e%36)/6)/5*255,r=a%6/5*255;return[n,i,r]};Y.rgb.hex=function(e){var t=((Math.round(e[0])&255)<<16)+((Math.round(e[1])&255)<<8)+(Math.round(e[2])&255),a=t.toString(16).toUpperCase();return"000000".substring(a.length)+a};Y.hex.rgb=function(e){var t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];var a=t[0];t[0].length===3&&(a=a.split("").map(function(s){return s+s}).join(""));var n=parseInt(a,16),i=n>>16&255,r=n>>8&255,o=n&255;return[i,r,o]};Y.rgb.hcg=function(e){var t=e[0]/255,a=e[1]/255,n=e[2]/255,i=Math.max(Math.max(t,a),n),r=Math.min(Math.min(t,a),n),o=i-r,s,l;return o<1?s=r/(1-o):s=0,o<=0?l=0:i===t?l=(a-n)/o%6:i===a?l=2+(n-t)/o:l=4+(t-a)/o+4,l/=6,l%=1,[l*360,o*100,s*100]};Y.hsl.hcg=function(e){var t=e[1]/100,a=e[2]/100,n=1,i=0;return a<.5?n=2*t*a:n=2*t*(1-a),n<1&&(i=(a-.5*n)/(1-n)),[e[0],n*100,i*100]};Y.hsv.hcg=function(e){var t=e[1]/100,a=e[2]/100,n=t*a,i=0;return n<1&&(i=(a-n)/(1-n)),[e[0],n*100,i*100]};Y.hcg.rgb=function(e){var t=e[0]/360,a=e[1]/100,n=e[2]/100;if(a===0)return[n*255,n*255,n*255];var i=[0,0,0],r=t%1*6,o=r%1,s=1-o,l=0;switch(Math.floor(r)){case 0:i[0]=1,i[1]=o,i[2]=0;break;case 1:i[0]=s,i[1]=1,i[2]=0;break;case 2:i[0]=0,i[1]=1,i[2]=o;break;case 3:i[0]=0,i[1]=s,i[2]=1;break;case 4:i[0]=o,i[1]=0,i[2]=1;break;default:i[0]=1,i[1]=0,i[2]=s}return l=(1-a)*n,[(a*i[0]+l)*255,(a*i[1]+l)*255,(a*i[2]+l)*255]};Y.hcg.hsv=function(e){var t=e[1]/100,a=e[2]/100,n=t+a*(1-t),i=0;return n>0&&(i=t/n),[e[0],i*100,n*100]};Y.hcg.hsl=function(e){var t=e[1]/100,a=e[2]/100,n=a*(1-t)+.5*t,i=0;return n>0&&n<.5?i=t/(2*n):n>=.5&&n<1&&(i=t/(2*(1-n))),[e[0],i*100,n*100]};Y.hcg.hwb=function(e){var t=e[1]/100,a=e[2]/100,n=t+a*(1-t);return[e[0],(n-t)*100,(1-n)*100]};Y.hwb.hcg=function(e){var t=e[1]/100,a=e[2]/100,n=1-a,i=n-t,r=0;return i<1&&(r=(n-i)/(1-i)),[e[0],i*100,r*100]};Y.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]};Y.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]};Y.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]};Y.gray.hsl=Y.gray.hsv=function(e){return[0,0,e[0]]};Y.gray.hwb=function(e){return[0,100,e[0]]};Y.gray.cmyk=function(e){return[0,0,0,e[0]]};Y.gray.lab=function(e){return[e[0],0,0]};Y.gray.hex=function(e){var t=Math.round(e[0]/100*255)&255,a=(t<<16)+(t<<8)+t,n=a.toString(16).toUpperCase();return"000000".substring(n.length)+n};Y.rgb.gray=function(e){var t=(e[0]+e[1]+e[2])/3;return[t/255*100]}});var Gb=O((I8,zb)=>{var ls=Bu();function M5(){for(var e={},t=Object.keys(ls),a=t.length,n=0;n{var Nu=Bu(),H5=Gb(),Ln={},W5=Object.keys(Nu);function V5(e){var t=function(a){return a==null?a:(arguments.length>1&&(a=Array.prototype.slice.call(arguments)),e(a))};return"conversion"in e&&(t.conversion=e.conversion),t}function U5(e){var t=function(a){if(a==null)return a;arguments.length>1&&(a=Array.prototype.slice.call(arguments));var n=e(a);if(typeof n=="object")for(var i=n.length,r=0;r{"use strict";var Vi=Nb(),kt=Wb(),Mu=[].slice,Vb=["keyword","gray","hex"],ju={};Object.keys(kt).forEach(function(e){ju[Mu.call(kt[e].labels).sort().join("")]=e});var cs={};function st(e,t){if(!(this instanceof st))return new st(e,t);if(t&&t in Vb&&(t=null),t&&!(t in kt))throw new Error("Unknown model: "+t);var a,n;if(e==null)this.model="rgb",this.color=[0,0,0],this.valpha=1;else if(e instanceof st)this.model=e.model,this.color=e.color.slice(),this.valpha=e.valpha;else if(typeof e=="string"){var i=Vi.get(e);if(i===null)throw new Error("Unable to parse color from string: "+e);this.model=i.model,n=kt[this.model].channels,this.color=i.value.slice(0,n),this.valpha=typeof i.value[n]=="number"?i.value[n]:1}else if(e.length){this.model=t||"rgb",n=kt[this.model].channels;var r=Mu.call(e,0,n);this.color=Lu(r,n),this.valpha=typeof e[n]=="number"?e[n]:1}else if(typeof e=="number")e&=16777215,this.model="rgb",this.color=[e>>16&255,e>>8&255,e&255],this.valpha=1;else{this.valpha=1;var o=Object.keys(e);"alpha"in e&&(o.splice(o.indexOf("alpha"),1),this.valpha=typeof e.alpha=="number"?e.alpha:0);var s=o.sort().join("");if(!(s in ju))throw new Error("Unable to parse color from object: "+JSON.stringify(e));this.model=ju[s];var l=kt[this.model].labels,u=[];for(a=0;aa?(t+.05)/(a+.05):(a+.05)/(t+.05)},level:function(e){var t=this.contrast(e);return t>=7.1?"AAA":t>=4.5?"AA":""},isDark:function(){var e=this.rgb().color,t=(e[0]*299+e[1]*587+e[2]*114)/1e3;return t<128},isLight:function(){return!this.isDark()},negate:function(){for(var e=this.rgb(),t=0;t<3;t++)e.color[t]=255-e.color[t];return e},lighten:function(e){var t=this.hsl();return t.color[2]+=t.color[2]*e,t},darken:function(e){var t=this.hsl();return t.color[2]-=t.color[2]*e,t},saturate:function(e){var t=this.hsl();return t.color[1]+=t.color[1]*e,t},desaturate:function(e){var t=this.hsl();return t.color[1]-=t.color[1]*e,t},whiten:function(e){var t=this.hwb();return t.color[1]+=t.color[1]*e,t},blacken:function(e){var t=this.hwb();return t.color[2]+=t.color[2]*e,t},grayscale:function(){var e=this.rgb().color,t=e[0]*.3+e[1]*.59+e[2]*.11;return st.rgb(t,t,t)},fade:function(e){return this.alpha(this.valpha-this.valpha*e)},opaquer:function(e){return this.alpha(this.valpha+this.valpha*e)},rotate:function(e){var t=this.hsl(),a=t.color[0];return a=(a+e)%360,a=a<0?360+a:a,t.color[0]=a,t},mix:function(e,t){if(!e||!e.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof e);var a=e.rgb(),n=this.rgb(),i=t===void 0?.5:t,r=2*i-1,o=a.alpha()-n.alpha(),s=((r*o===-1?r:(r+o)/(1+r*o))+1)/2,l=1-s;return st.rgb(s*a.red()+l*n.red(),s*a.green()+l*n.green(),s*a.blue()+l*n.blue(),a.alpha()*i+n.alpha()*(1-i))}};Object.keys(kt).forEach(function(e){if(Vb.indexOf(e)===-1){var t=kt[e].channels;st.prototype[e]=function(){if(this.model===e)return new st(this);if(arguments.length)return new st(arguments,e);var a=typeof arguments[t]=="number"?t:this.valpha;return new st(q5(kt[this.model][e].raw(this.color)).concat(a),e)},st[e]=function(a){return typeof a=="number"&&(a=Lu(Mu.call(arguments),t)),new st(a,e)}}});function J5(e,t){return Number(e.toFixed(t))}function Z5(e){return function(t){return J5(t,e)}}function Ue(e,t,a){return e=Array.isArray(e)?e:[e],e.forEach(function(n){(cs[n]||(cs[n]=[]))[t]=a}),e=e[0],function(n){var i;return arguments.length?(a&&(n=a(n)),i=this[e](),i.color[t]=n,i):(i=this[e]().color[t],a&&(i=a(i)),i)}}function et(e){return function(t){return Math.max(0,Math.min(e,t))}}function q5(e){return Array.isArray(e)?e:[e]}function Lu(e,t){for(var a=0;a{var X5="Expected a function",Zb="__lodash_placeholder__",en=1,ps=2,$5=4,Qa=8,Ui=16,Mn=32,Ji=64,eg=128,Y5=256,tg=512,qb=1/0,K5=9007199254740991,Q5=17976931348623157e292,Xb=0/0,eF=[["ary",eg],["bind",en],["bindKey",ps],["curry",Qa],["curryRight",Ui],["flip",tg],["partial",Mn],["partialRight",Ji],["rearg",Y5]],tF="[object Function]",aF="[object GeneratorFunction]",nF="[object Symbol]",iF=/[\\^$.*+?()[\]{}|]/g,rF=/^\s+|\s+$/g,oF=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,sF=/\{\n\/\* \[wrapped with (.+)\] \*/,lF=/,? & /,cF=/^[-+]0x[0-9a-f]+$/i,uF=/^0b[01]+$/i,pF=/^\[object .+?Constructor\]$/,dF=/^0o[0-7]+$/i,fF=/^(?:0|[1-9]\d*)$/,mF=parseInt,hF=typeof global=="object"&&global&&global.Object===Object&&global,vF=typeof self=="object"&&self&&self.Object===Object&&self,qi=hF||vF||Function("return this")();function ag(e,t,a){switch(a.length){case 0:return e.call(t);case 1:return e.call(t,a[0]);case 2:return e.call(t,a[0],a[1]);case 3:return e.call(t,a[0],a[1],a[2])}return e.apply(t,a)}function bF(e,t){for(var a=-1,n=e?e.length:0;++a-1}function xF(e,t,a,n){for(var i=e.length,r=a+(n?1:-1);n?r--:++r2?e:void 0}();function FF(e){return Dn(e)?TF(e):{}}function PF(e){if(!Dn(e)||HF(e))return!1;var t=JF(e)||CF(e)?_F:pF;return t.test(VF(e))}function OF(e,t,a,n){for(var i=-1,r=e.length,o=a.length,s=-1,l=t.length,u=us(r-o,0),c=Array(l+u),f=!n;++s1&&x.reverse(),c&&l1?"& ":"")+t[n],t=t.join(a>2?", ":" "),e.replace(oF,`{ +/* [wrapped with `+t+`] */ +`)}function GF(e,t){return t=t==null?K5:t,!!t&&(typeof e=="number"||fF.test(e))&&e>-1&&e%1==0&&e{"use strict";var{PassThrough:LP}=require("stream");Jg.exports=e=>{e={...e};let{array:t}=e,{encoding:a}=e,n=a==="buffer",i=!1;t?i=!(a||n):a=a||"utf8",n&&(a=null);let r=new LP({objectMode:i});a&&r.setEncoding(a);let o=0,s=[];return r.on("data",l=>{s.push(l),i?o=s.length:o+=l.length}),r.getBufferedValue=()=>t?s:n?Buffer.concat(s,o):s.join(""),r.getBufferedLength=()=>o,r}});var qg=O((hz,Yi)=>{"use strict";var{constants:MP}=require("buffer"),DP=require("stream"),{promisify:zP}=require("util"),GP=Zg(),HP=zP(DP.pipeline),vs=class extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}};async function Yu(e,t){if(!e)throw new Error("Expected a stream");t={maxBuffer:1/0,...t};let{maxBuffer:a}=t,n=GP(t);return await new Promise((i,r)=>{let o=s=>{s&&n.getBufferedLength()<=MP.MAX_LENGTH&&(s.bufferedData=n.getBufferedValue()),r(s)};(async()=>{try{await HP(e,n),i()}catch(s){o(s)}})(),n.on("data",()=>{n.getBufferedLength()>a&&o(new vs)})}),n.getBufferedValue()}Yi.exports=Yu;Yi.exports.buffer=(e,t)=>Yu(e,{...t,encoding:"buffer"});Yi.exports.array=(e,t)=>Yu(e,{...t,array:!0});Yi.exports.MaxBufferError=vs});var Ax=O((tr,up)=>{(function(t,a){typeof tr=="object"&&typeof up=="object"?up.exports=a():typeof define=="function"&&define.amd?define([],a):typeof tr=="object"?tr.nunjucks=a():t.nunjucks=a()})(typeof self!="undefined"?self:tr,function(){return function(e){var t={};function a(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,a),i.l=!0,i.exports}return a.m=e,a.c=t,a.d=function(n,i,r){a.o(n,i)||Object.defineProperty(n,i,{configurable:!1,enumerable:!0,get:r})},a.n=function(n){var i=n&&n.__esModule?function(){return n.default}:function(){return n};return a.d(i,"a",i),i},a.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)},a.p="",a(a.s=11)}([function(e,s,a){"use strict";var n=Array.prototype,i=Object.prototype,r={"&":"&",'"':""","'":"'","<":"<",">":">","\\":"\"},o=/[&"'<>\\]/g,s=e.exports={};function l(T,N){return i.hasOwnProperty.call(T,N)}s.hasOwnProp=l;function u(T){return r[T]}function c(T,N,M){if(M.Update||(M=new s.TemplateError(M)),M.Update(T),!N){var D=M;M=new Error(D.message),M.name=D.name}return M}s._prettifyError=c;function f(T,N,M){var D,V;T instanceof Error&&(V=T,T=V.name+": "+V.message),Object.setPrototypeOf?(D=new Error(T),Object.setPrototypeOf(D,f.prototype)):(D=this,Object.defineProperty(D,"message",{enumerable:!1,writable:!0,value:T})),Object.defineProperty(D,"name",{value:"Template render error"}),Error.captureStackTrace&&Error.captureStackTrace(D,this.constructor);var q;if(V){var Z=Object.getOwnPropertyDescriptor(V,"stack");q=Z&&(Z.get||function(){return Z.value}),q||(q=function(){return V.stack})}else{var pe=new Error(T).stack;q=function(){return pe}}return Object.defineProperty(D,"stack",{get:function(){return q.call(D)}}),Object.defineProperty(D,"cause",{value:V}),D.lineno=N,D.colno=M,D.firstUpdate=!0,D.Update=function(ee){var oe="("+(ee||"unknown path")+")";return this.firstUpdate&&(this.lineno&&this.colno?oe+=" [Line "+this.lineno+", Column "+this.colno+"]":this.lineno&&(oe+=" [Line "+this.lineno+"]")),oe+=` + `,this.firstUpdate&&(oe+=" "),this.message=oe+(this.message||""),this.firstUpdate=!1,this},D}Object.setPrototypeOf?Object.setPrototypeOf(f.prototype,Error.prototype):f.prototype=Object.create(Error.prototype,{constructor:{value:f}}),s.TemplateError=f;function p(T){return T.replace(o,u)}s.escape=p;function b(T){return i.toString.call(T)==="[object Function]"}s.isFunction=b;function d(T){return i.toString.call(T)==="[object Array]"}s.isArray=d;function m(T){return i.toString.call(T)==="[object String]"}s.isString=m;function h(T){return i.toString.call(T)==="[object Object]"}s.isObject=h;function v(T){return T?typeof T=="string"?T.split("."):[T]:[]}function x(T){var N=v(T);return function(D){for(var V=D,q=0;qS.length)k=B.slice(0,S.length),B.slice(k.length,L).forEach(function(D,V){V2?_i-2:0),$r=2;$r<_i;$r++)Q_[$r-2]=arguments[$r];this.lineno=Ie,this.colno=Xe,this.fields.forEach(function(eT,tT){var jc=St[tT+2];jc===void 0&&(jc=null),Za[eT]=jc})},we.findAll=function(Ie,Xe){var St=this;return Xe=Xe||[],this instanceof d?this.children.forEach(function(Za){return f(Za,Ie,Xe)}):this.fields.forEach(function(Za){return f(St[Za],Ie,Xe)}),Xe},we.iterFields=function(Ie){var Xe=this;this.fields.forEach(function(St){Ie(Xe[St],St)})},ie}(c),b=function(te){s(ie,te);function ie(){return te.apply(this,arguments)||this}return i(ie,[{key:"typename",get:function(){return"Value"}},{key:"fields",get:function(){return["value"]}}]),ie}(p),d=function(te){s(ie,te);function ie(){return te.apply(this,arguments)||this}var we=ie.prototype;return we.init=function(Ie,Xe,St){te.prototype.init.call(this,Ie,Xe,St||[])},we.addChild=function(Ie){this.children.push(Ie)},i(ie,[{key:"typename",get:function(){return"NodeList"}},{key:"fields",get:function(){return["children"]}}]),ie}(p),m=d.extend("Root"),h=b.extend("Literal"),v=b.extend("Symbol"),x=d.extend("Group"),E=d.extend("Array"),g=p.extend("Pair",{fields:["key","value"]}),w=d.extend("Dict"),C=p.extend("LookupVal",{fields:["target","val"]}),y=p.extend("If",{fields:["cond","body","else_"]}),S=y.extend("IfAsync"),A=p.extend("InlineIf",{fields:["cond","body","else_"]}),_=p.extend("For",{fields:["arr","name","body","else_"]}),P=_.extend("AsyncEach"),F=_.extend("AsyncAll"),B=p.extend("Macro",{fields:["name","args","body"]}),j=B.extend("Caller"),L=p.extend("Import",{fields:["template","target","withContext"]}),k=function(te){s(ie,te);function ie(){return te.apply(this,arguments)||this}var we=ie.prototype;return we.init=function(Ie,Xe,St,Za,_i){te.prototype.init.call(this,Ie,Xe,St,Za||new d,_i)},i(ie,[{key:"typename",get:function(){return"FromImport"}},{key:"fields",get:function(){return["template","names","withContext"]}}]),ie}(p),T=p.extend("FunCall",{fields:["name","args"]}),N=T.extend("Filter"),M=N.extend("FilterAsync",{fields:["name","args","symbol"]}),D=w.extend("KeywordArgs"),V=p.extend("Block",{fields:["name","body"]}),q=p.extend("Super",{fields:["blockName","symbol"]}),Z=p.extend("TemplateRef",{fields:["template"]}),pe=Z.extend("Extends"),fe=p.extend("Include",{fields:["template","ignoreMissing"]}),ee=p.extend("Set",{fields:["targets","value"]}),oe=p.extend("Switch",{fields:["expr","cases","default"]}),U=p.extend("Case",{fields:["cond","body"]}),X=d.extend("Output"),$=p.extend("Capture",{fields:["body"]}),he=h.extend("TemplateData"),qe=p.extend("UnaryOp",{fields:["target"]}),ze=p.extend("BinOp",{fields:["left","right"]}),ht=ze.extend("In"),R=ze.extend("Is"),z=ze.extend("Or"),J=ze.extend("And"),H=qe.extend("Not"),ne=ze.extend("Add"),K=ze.extend("Concat"),Ae=ze.extend("Sub"),ue=ze.extend("Mul"),Ne=ze.extend("Div"),Nt=ze.extend("FloorDiv"),Vt=ze.extend("Mod"),Ia=ze.extend("Pow"),q_=qe.extend("Neg"),X_=qe.extend("Pos"),$_=p.extend("Compare",{fields:["expr","ops"]}),Y_=p.extend("CompareOperand",{fields:["expr","type"]}),Nc=p.extend("CallExtension",{init:function(ie,we,ge,Ie){this.parent(),this.extName=ie.__name||ie,this.prop=we,this.args=ge||new d,this.contentArgs=Ie||[],this.autoescape=ie.autoescape},fields:["extName","prop","args","contentArgs"]}),K_=Nc.extend("CallExtensionAsync");function Sn(te,ie,we){var ge=te.split(` +`);ge.forEach(function(Ie,Xe){Ie&&(we&&Xe>0||!we)&&process.stdout.write(" ".repeat(ie));var St=Xe===ge.length-1?"":` +`;process.stdout.write(""+Ie+St)})}function Ii(te,ie){if(ie=ie||0,Sn(te.typename+": ",ie),te instanceof d)Sn(` +`),te.children.forEach(function(Ie){Ii(Ie,ie+2)});else if(te instanceof Nc)Sn(te.extName+"."+te.prop+` +`),te.args&&Ii(te.args,ie+2),te.contentArgs&&te.contentArgs.forEach(function(Ie){Ii(Ie,ie+2)});else{var we=[],ge=null;te.iterFields(function(Ie,Xe){Ie instanceof p?we.push([Xe,Ie]):(ge=ge||{},ge[Xe]=Ie)}),ge?Sn(JSON.stringify(ge,null,2)+` +`,null,!0):Sn(` +`),we.forEach(function(Ie){var Xe=Ie[0],St=Ie[1];Sn("["+Xe+"] =>",ie+2),Ii(St,ie+4)})}}e.exports={Node:p,Root:m,NodeList:d,Value:b,Literal:h,Symbol:v,Group:x,Array:E,Pair:g,Dict:w,Output:X,Capture:$,TemplateData:he,If:y,IfAsync:S,InlineIf:A,For:_,AsyncEach:P,AsyncAll:F,Macro:B,Caller:j,Import:L,FromImport:k,FunCall:T,Filter:N,FilterAsync:M,KeywordArgs:D,Block:V,Super:q,Extends:pe,Include:fe,Set:ee,Switch:oe,Case:U,LookupVal:C,BinOp:ze,In:ht,Is:R,Or:z,And:J,Not:H,Add:ne,Concat:K,Sub:Ae,Mul:ue,Div:Ne,FloorDiv:Nt,Mod:Vt,Pow:Ia,Neg:q_,Pos:X_,Compare:$_,CompareOperand:Y_,CallExtension:Nc,CallExtensionAsync:K_,printNodes:Ii}},function(e,t){},function(e,t,a){"use strict";function n(h,v){h.prototype=Object.create(v.prototype),h.prototype.constructor=h,i(h,v)}function i(h,v){return i=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(E,g){return E.__proto__=g,E},i(h,v)}var r=a(8),o=a(17),s=a(3),l=a(0),u=l.TemplateError,c=a(2),f=c.Frame,p=a(1),b=p.Obj,d={"==":"==","===":"===","!=":"!=","!==":"!==","<":"<",">":">","<=":"<=",">=":">="},m=function(h){n(v,h);function v(){return h.apply(this,arguments)||this}var x=v.prototype;return x.init=function(g,w){this.templateName=g,this.codebuf=[],this.lastId=0,this.buffer=null,this.bufferStack=[],this._scopeClosers="",this.inBlock=!1,this.throwOnUndefined=w},x.fail=function(g,w,C){throw w!==void 0&&(w+=1),C!==void 0&&(C+=1),new u(g,w,C)},x._pushBuffer=function(){var g=this._tmpid();return this.bufferStack.push(this.buffer),this.buffer=g,this._emit("var "+this.buffer+' = "";'),g},x._popBuffer=function(){this.buffer=this.bufferStack.pop()},x._emit=function(g){this.codebuf.push(g)},x._emitLine=function(g){this._emit(g+` +`)},x._emitLines=function(){for(var g=this,w=arguments.length,C=new Array(w),y=0;y0&&S._emit(","),S.compile(A,w)}),y&&this._emit(y)},x._compileExpression=function(g,w){this.assertType(g,s.Literal,s.Symbol,s.Group,s.Array,s.Dict,s.FunCall,s.Caller,s.Filter,s.LookupVal,s.Compare,s.InlineIf,s.In,s.Is,s.And,s.Or,s.Not,s.Add,s.Concat,s.Sub,s.Mul,s.Div,s.FloorDiv,s.Mod,s.Pow,s.Neg,s.Pos,s.Compare,s.NodeList),this.compile(g,w)},x.assertType=function(g){for(var w=arguments.length,C=new Array(w>1?w-1:0),y=1;y0&&y._emit(","),F){y._emitLine("function(cb) {"),y._emitLine("if(!cb) { cb = function(err) { if(err) { throw err; }}}");var j=y._pushBuffer();y._withScopedSyntax(function(){y.compile(F,w),y._emitLine("cb(null, "+j+");")}),y._popBuffer(),y._emitLine("return "+j+";"),y._emitLine("}")}else y._emit("null")}),C){var P=this._tmpid();this._emitLine(", "+this._makeCallback(P)),this._emitLine(this.buffer+" += runtime.suppressValue("+P+", "+_+" && env.opts.autoescape);"),this._addScopeLevel()}else this._emit(")"),this._emit(", "+_+` && env.opts.autoescape); +`)},x.compileCallExtensionAsync=function(g,w){this.compileCallExtension(g,w,!0)},x.compileNodeList=function(g,w){this._compileChildren(g,w)},x.compileLiteral=function(g){if(typeof g.value=="string"){var w=g.value.replace(/\\/g,"\\\\");w=w.replace(/"/g,'\\"'),w=w.replace(/\n/g,"\\n"),w=w.replace(/\r/g,"\\r"),w=w.replace(/\t/g,"\\t"),w=w.replace(/\u2028/g,"\\u2028"),this._emit('"'+w+'"')}else g.value===null?this._emit("null"):this._emit(g.value.toString())},x.compileSymbol=function(g,w){var C=g.value,y=w.lookup(C);y?this._emit(y):this._emit('runtime.contextOrFrameLookup(context, frame, "'+C+'")')},x.compileGroup=function(g,w){this._compileAggregate(g,w,"(",")")},x.compileArray=function(g,w){this._compileAggregate(g,w,"[","]")},x.compileDict=function(g,w){this._compileAggregate(g,w,"{","}")},x.compilePair=function(g,w){var C=g.key,y=g.value;C instanceof s.Symbol?C=new s.Literal(C.lineno,C.colno,C.value):C instanceof s.Literal&&typeof C.value=="string"||this.fail("compilePair: Dict keys must be strings or names",C.lineno,C.colno),this.compile(C,w),this._emit(": "),this._compileExpression(y,w)},x.compileInlineIf=function(g,w){this._emit("("),this.compile(g.cond,w),this._emit("?"),this.compile(g.body,w),this._emit(":"),g.else_!==null?this.compile(g.else_,w):this._emit('""'),this._emit(")")},x.compileIn=function(g,w){this._emit("runtime.inOperator("),this.compile(g.left,w),this._emit(","),this.compile(g.right,w),this._emit(")")},x.compileIs=function(g,w){var C=g.right.name?g.right.name.value:g.right.value;this._emit('env.getTest("'+C+'").call(context, '),this.compile(g.left,w),g.right.args&&(this._emit(","),this.compile(g.right.args,w)),this._emit(") === true")},x._binOpEmitter=function(g,w,C){this.compile(g.left,w),this._emit(C),this.compile(g.right,w)},x.compileOr=function(g,w){return this._binOpEmitter(g,w," || ")},x.compileAnd=function(g,w){return this._binOpEmitter(g,w," && ")},x.compileAdd=function(g,w){return this._binOpEmitter(g,w," + ")},x.compileConcat=function(g,w){return this._binOpEmitter(g,w,' + "" + ')},x.compileSub=function(g,w){return this._binOpEmitter(g,w," - ")},x.compileMul=function(g,w){return this._binOpEmitter(g,w," * ")},x.compileDiv=function(g,w){return this._binOpEmitter(g,w," / ")},x.compileMod=function(g,w){return this._binOpEmitter(g,w," % ")},x.compileNot=function(g,w){this._emit("!"),this.compile(g.target,w)},x.compileFloorDiv=function(g,w){this._emit("Math.floor("),this.compile(g.left,w),this._emit(" / "),this.compile(g.right,w),this._emit(")")},x.compilePow=function(g,w){this._emit("Math.pow("),this.compile(g.left,w),this._emit(", "),this.compile(g.right,w),this._emit(")")},x.compileNeg=function(g,w){this._emit("-"),this.compile(g.target,w)},x.compilePos=function(g,w){this._emit("+"),this.compile(g.target,w)},x.compileCompare=function(g,w){var C=this;this.compile(g.expr,w),g.ops.forEach(function(y){C._emit(" "+d[y.type]+" "),C.compile(y.expr,w)})},x.compileLookupVal=function(g,w){this._emit("runtime.memberLookup(("),this._compileExpression(g.target,w),this._emit("),"),this._compileExpression(g.val,w),this._emit(")")},x._getNodeName=function(g){switch(g.typename){case"Symbol":return g.value;case"FunCall":return"the return value of ("+this._getNodeName(g.name)+")";case"LookupVal":return this._getNodeName(g.target)+'["'+this._getNodeName(g.val)+'"]';case"Literal":return g.value.toString();default:return"--expression--"}},x.compileFunCall=function(g,w){this._emit("(lineno = "+g.lineno+", colno = "+g.colno+", "),this._emit("runtime.callWrap("),this._compileExpression(g.name,w),this._emit(', "'+this._getNodeName(g.name).replace(/"/g,'\\"')+'", context, '),this._compileAggregate(g.args,w,"[","])"),this._emit(")")},x.compileFilter=function(g,w){var C=g.name;this.assertType(C,s.Symbol),this._emit('env.getFilter("'+C.value+'").call(context, '),this._compileAggregate(g.args,w),this._emit(")")},x.compileFilterAsync=function(g,w){var C=g.name,y=g.symbol.value;this.assertType(C,s.Symbol),w.set(y,y),this._emit('env.getFilter("'+C.value+'").call(context, '),this._compileAggregate(g.args,w),this._emitLine(", "+this._makeCallback(y)),this._addScopeLevel()},x.compileKeywordArgs=function(g,w){this._emit("runtime.makeKeywordArgs("),this.compileDict(g,w),this._emit(")")},x.compileSet=function(g,w){var C=this,y=[];g.targets.forEach(function(S){var A=S.value,_=w.lookup(A);_==null&&(_=C._tmpid(),C._emitLine("var "+_+";")),y.push(_)}),g.value?(this._emit(y.join(" = ")+" = "),this._compileExpression(g.value,w),this._emitLine(";")):(this._emit(y.join(" = ")+" = "),this.compile(g.body,w),this._emitLine(";")),g.targets.forEach(function(S,A){var _=y[A],P=S.value;C._emitLine('frame.set("'+P+'", '+_+", true);"),C._emitLine("if(frame.topLevel) {"),C._emitLine('context.setVariable("'+P+'", '+_+");"),C._emitLine("}"),P.charAt(0)!=="_"&&(C._emitLine("if(frame.topLevel) {"),C._emitLine('context.addExport("'+P+'", '+_+");"),C._emitLine("}"))})},x.compileSwitch=function(g,w){var C=this;this._emit("switch ("),this.compile(g.expr,w),this._emit(") {"),g.cases.forEach(function(y,S){C._emit("case "),C.compile(y.cond,w),C._emit(": "),C.compile(y.body,w),y.body.children.length&&C._emitLine("break;")}),g.default&&(this._emit("default:"),this.compile(g.default,w)),this._emit("}")},x.compileIf=function(g,w,C){var y=this;this._emit("if("),this._compileExpression(g.cond,w),this._emitLine(") {"),this._withScopedSyntax(function(){y.compile(g.body,w),C&&y._emit("cb()")}),g.else_?(this._emitLine(`} +else {`),this._withScopedSyntax(function(){y.compile(g.else_,w),C&&y._emit("cb()")})):C&&(this._emitLine(`} +else {`),this._emit("cb()")),this._emitLine("}")},x.compileIfAsync=function(g,w){this._emit("(function(cb) {"),this.compileIf(g,w,!0),this._emit("})("+this._makeCallback()),this._addScopeLevel()},x._emitLoopBindings=function(g,w,C,y){var S=this,A=[{name:"index",val:C+" + 1"},{name:"index0",val:C},{name:"revindex",val:y+" - "+C},{name:"revindex0",val:y+" - "+C+" - 1"},{name:"first",val:C+" === 0"},{name:"last",val:C+" === "+y+" - 1"},{name:"length",val:y}];A.forEach(function(_){S._emitLine('frame.set("loop.'+_.name+'", '+_.val+");")})},x.compileFor=function(g,w){var C=this,y=this._tmpid(),S=this._tmpid(),A=this._tmpid();if(w=w.push(),this._emitLine("frame = frame.push();"),this._emit("var "+A+" = "),this._compileExpression(g.arr,w),this._emitLine(";"),this._emit("if("+A+") {"),this._emitLine(A+" = runtime.fromIterator("+A+");"),g.name instanceof s.Array){this._emitLine("var "+y+";"),this._emitLine("if(runtime.isArray("+A+")) {"),this._emitLine("var "+S+" = "+A+".length;"),this._emitLine("for("+y+"=0; "+y+" < "+A+".length; "+y+"++) {"),g.name.children.forEach(function(k,T){var N=C._tmpid();C._emitLine("var "+N+" = "+A+"["+y+"]["+T+"];"),C._emitLine('frame.set("'+k+'", '+A+"["+y+"]["+T+"]);"),w.set(g.name.children[T].value,N)}),this._emitLoopBindings(g,A,y,S),this._withScopedSyntax(function(){C.compile(g.body,w)}),this._emitLine("}"),this._emitLine("} else {");var _=g.name.children,P=_[0],F=_[1],B=this._tmpid(),j=this._tmpid();w.set(P.value,B),w.set(F.value,j),this._emitLine(y+" = -1;"),this._emitLine("var "+S+" = runtime.keys("+A+").length;"),this._emitLine("for(var "+B+" in "+A+") {"),this._emitLine(y+"++;"),this._emitLine("var "+j+" = "+A+"["+B+"];"),this._emitLine('frame.set("'+P.value+'", '+B+");"),this._emitLine('frame.set("'+F.value+'", '+j+");"),this._emitLoopBindings(g,A,y,S),this._withScopedSyntax(function(){C.compile(g.body,w)}),this._emitLine("}"),this._emitLine("}")}else{var L=this._tmpid();w.set(g.name.value,L),this._emitLine("var "+S+" = "+A+".length;"),this._emitLine("for(var "+y+"=0; "+y+" < "+A+".length; "+y+"++) {"),this._emitLine("var "+L+" = "+A+"["+y+"];"),this._emitLine('frame.set("'+g.name.value+'", '+L+");"),this._emitLoopBindings(g,A,y,S),this._withScopedSyntax(function(){C.compile(g.body,w)}),this._emitLine("}")}this._emitLine("}"),g.else_&&(this._emitLine("if (!"+S+") {"),this.compile(g.else_,w),this._emitLine("}")),this._emitLine("frame = frame.pop();")},x._compileAsyncLoop=function(g,w,C){var y=this,S=this._tmpid(),A=this._tmpid(),_=this._tmpid(),P=C?"asyncAll":"asyncEach";if(w=w.push(),this._emitLine("frame = frame.push();"),this._emit("var "+_+" = runtime.fromIterator("),this._compileExpression(g.arr,w),this._emitLine(");"),g.name instanceof s.Array){var F=g.name.children.length;this._emit("runtime."+P+"("+_+", "+F+", function("),g.name.children.forEach(function(L){y._emit(L.value+",")}),this._emit(S+","+A+",next) {"),g.name.children.forEach(function(L){var k=L.value;w.set(k,k),y._emitLine('frame.set("'+k+'", '+k+");")})}else{var B=g.name.value;this._emitLine("runtime."+P+"("+_+", 1, function("+B+", "+S+", "+A+",next) {"),this._emitLine('frame.set("'+B+'", '+B+");"),w.set(B,B)}this._emitLoopBindings(g,_,S,A),this._withScopedSyntax(function(){var L;C&&(L=y._pushBuffer()),y.compile(g.body,w),y._emitLine("next("+S+(L?","+L:"")+");"),C&&y._popBuffer()});var j=this._tmpid();this._emitLine("}, "+this._makeCallback(j)),this._addScopeLevel(),C&&this._emitLine(this.buffer+" += "+j+";"),g.else_&&(this._emitLine("if (!"+_+".length) {"),this.compile(g.else_,w),this._emitLine("}")),this._emitLine("frame = frame.pop();")},x.compileAsyncEach=function(g,w){this._compileAsyncLoop(g,w)},x.compileAsyncAll=function(g,w){this._compileAsyncLoop(g,w,!0)},x._compileMacro=function(g,w){var C=this,y=[],S=null,A="macro_"+this._tmpid(),_=w!==void 0;g.args.children.forEach(function(k,T){T===g.args.children.length-1&&k instanceof s.Dict?S=k:(C.assertType(k,s.Symbol),y.push(k))});var P=[].concat(y.map(function(k){return"l_"+k.value}),["kwargs"]),F=y.map(function(k){return'"'+k.value+'"'}),B=(S&&S.children||[]).map(function(k){return'"'+k.key.value+'"'}),j;_?j=w.push(!0):j=new f,this._emitLines("var "+A+" = runtime.makeMacro(","["+F.join(", ")+"], ","["+B.join(", ")+"], ","function ("+P.join(", ")+") {","var callerFrame = frame;","frame = "+(_?"frame.push(true);":"new runtime.Frame();"),"kwargs = kwargs || {};",'if (Object.prototype.hasOwnProperty.call(kwargs, "caller")) {','frame.set("caller", kwargs.caller); }'),y.forEach(function(k){C._emitLine('frame.set("'+k.value+'", l_'+k.value+");"),j.set(k.value,"l_"+k.value)}),S&&S.children.forEach(function(k){var T=k.key.value;C._emit('frame.set("'+T+'", '),C._emit('Object.prototype.hasOwnProperty.call(kwargs, "'+T+'")'),C._emit(' ? kwargs["'+T+'"] : '),C._compileExpression(k.value,j),C._emit(");")});var L=this._pushBuffer();return this._withScopedSyntax(function(){C.compile(g.body,j)}),this._emitLine("frame = "+(_?"frame.pop();":"callerFrame;")),this._emitLine("return new runtime.SafeString("+L+");"),this._emitLine("});"),this._popBuffer(),A},x.compileMacro=function(g,w){var C=this._compileMacro(g),y=g.name.value;w.set(y,C),w.parent?this._emitLine('frame.set("'+y+'", '+C+");"):(g.name.value.charAt(0)!=="_"&&this._emitLine('context.addExport("'+y+'");'),this._emitLine('context.setVariable("'+y+'", '+C+");"))},x.compileCaller=function(g,w){this._emit("(function (){");var C=this._compileMacro(g,w);this._emit("return "+C+";})()")},x._compileGetTemplate=function(g,w,C,y){var S=this._tmpid(),A=this._templateName(),_=this._makeCallback(S),P=C?"true":"false",F=y?"true":"false";return this._emit("env.getTemplate("),this._compileExpression(g.template,w),this._emitLine(", "+P+", "+A+", "+F+", "+_),S},x.compileImport=function(g,w){var C=g.target.value,y=this._compileGetTemplate(g,w,!1,!1);this._addScopeLevel(),this._emitLine(y+".getExported("+(g.withContext?"context.getVariables(), frame, ":"")+this._makeCallback(y)),this._addScopeLevel(),w.set(C,y),w.parent?this._emitLine('frame.set("'+C+'", '+y+");"):this._emitLine('context.setVariable("'+C+'", '+y+");")},x.compileFromImport=function(g,w){var C=this,y=this._compileGetTemplate(g,w,!1,!1);this._addScopeLevel(),this._emitLine(y+".getExported("+(g.withContext?"context.getVariables(), frame, ":"")+this._makeCallback(y)),this._addScopeLevel(),g.names.children.forEach(function(S){var A,_,P=C._tmpid();S instanceof s.Pair?(A=S.key.value,_=S.value.value):(A=S.value,_=A),C._emitLine("if(Object.prototype.hasOwnProperty.call("+y+', "'+A+'")) {'),C._emitLine("var "+P+" = "+y+"."+A+";"),C._emitLine("} else {"),C._emitLine(`cb(new Error("cannot import '`+A+`'")); return;`),C._emitLine("}"),w.set(_,P),w.parent?C._emitLine('frame.set("'+_+'", '+P+");"):C._emitLine('context.setVariable("'+_+'", '+P+");")})},x.compileBlock=function(g){var w=this._tmpid();this.inBlock||this._emit('(parentTemplate ? function(e, c, f, r, cb) { cb(""); } : '),this._emit('context.getBlock("'+g.name.value+'")'),this.inBlock||this._emit(")"),this._emitLine("(env, context, frame, runtime, "+this._makeCallback(w)),this._emitLine(this.buffer+" += "+w+";"),this._addScopeLevel()},x.compileSuper=function(g,w){var C=g.blockName.value,y=g.symbol.value,S=this._makeCallback(y);this._emitLine('context.getSuper(env, "'+C+'", b_'+C+", frame, runtime, "+S),this._emitLine(y+" = runtime.markSafe("+y+");"),this._addScopeLevel(),w.set(y,y)},x.compileExtends=function(g,w){var C=this._tmpid(),y=this._compileGetTemplate(g,w,!0,!1);this._emitLine("parentTemplate = "+y),this._emitLine("for(var "+C+" in parentTemplate.blocks) {"),this._emitLine("context.addBlock("+C+", parentTemplate.blocks["+C+"]);"),this._emitLine("}"),this._addScopeLevel()},x.compileInclude=function(g,w){this._emitLine("var tasks = [];"),this._emitLine("tasks.push("),this._emitLine("function(callback) {");var C=this._compileGetTemplate(g,w,!1,g.ignoreMissing);this._emitLine("callback(null,"+C+");});"),this._emitLine("});");var y=this._tmpid();this._emitLine("tasks.push("),this._emitLine("function(template, callback){"),this._emitLine("template.render(context.getVariables(), frame, "+this._makeCallback(y)),this._emitLine("callback(null,"+y+");});"),this._emitLine("});"),this._emitLine("tasks.push("),this._emitLine("function(result, callback){"),this._emitLine(this.buffer+" += result;"),this._emitLine("callback(null);"),this._emitLine("});"),this._emitLine("env.waterfall(tasks, function(){"),this._addScopeLevel()},x.compileTemplateData=function(g,w){this.compileLiteral(g,w)},x.compileCapture=function(g,w){var C=this,y=this.buffer;this.buffer="output",this._emitLine("(function() {"),this._emitLine('var output = "";'),this._withScopedSyntax(function(){C.compile(g.body,w)}),this._emitLine("return output;"),this._emitLine("})()"),this.buffer=y},x.compileOutput=function(g,w){var C=this,y=g.children;y.forEach(function(S){S instanceof s.TemplateData?S.value&&(C._emit(C.buffer+" += "),C.compileLiteral(S,w),C._emitLine(";")):(C._emit(C.buffer+" += runtime.suppressValue("),C.throwOnUndefined&&C._emit("runtime.ensureDefined("),C.compile(S,w),C.throwOnUndefined&&C._emit(","+g.lineno+","+g.colno+")"),C._emit(`, env.opts.autoescape); +`))})},x.compileRoot=function(g,w){var C=this;w&&this.fail("compileRoot: root node can't have frame"),w=new f,this._emitFuncBegin(g,"root"),this._emitLine("var parentTemplate = null;"),this._compileChildren(g,w),this._emitLine("if(parentTemplate) {"),this._emitLine("parentTemplate.rootRenderFunc(env, context, frame, runtime, cb);"),this._emitLine("} else {"),this._emitLine("cb(null, "+this.buffer+");"),this._emitLine("}"),this._emitFuncEnd(!0),this.inBlock=!0;var y=[],S=g.findAll(s.Block);S.forEach(function(A,_){var P=A.name.value;if(y.indexOf(P)!==-1)throw new Error('Block "'+P+'" defined more than once.');y.push(P),C._emitFuncBegin(A,"b_"+P);var F=new f;C._emitLine("var frame = frame.push(true);"),C.compile(A.body,F),C._emitFuncEnd()}),this._emitLine("return {"),S.forEach(function(A,_){var P="b_"+A.name.value;C._emitLine(P+": "+P+",")}),this._emitLine(`root: root +};`)},x.compile=function(g,w){var C=this["compile"+g.typename];C?C.call(this,g,w):this.fail("compile: Cannot compile node: "+g.typename,g.lineno,g.colno)},x.getCode=function(){return this.codebuf.join("")},v}(b);e.exports={compile:function(v,x,E,g,w){w===void 0&&(w={});var C=new m(g,w.throwOnUndefined),y=(E||[]).map(function(A){return A.preprocess}).filter(function(A){return!!A}),S=y.reduce(function(A,_){return _(A)},v);return C.compile(o.transform(r.parse(S,E,w),x,g)),C.getCode()},Compiler:m}},function(e,t,a){"use strict";function n(l,u){l.prototype=Object.create(u.prototype),l.prototype.constructor=l,i(l,u)}function i(l,u){return i=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(f,p){return f.__proto__=p,f},i(l,u)}var r=a(4),o=a(1),s=o.EmitterObj;e.exports=function(l){n(u,l);function u(){return l.apply(this,arguments)||this}var c=u.prototype;return c.resolve=function(p,b){return r.resolve(r.dirname(p),b)},c.isRelative=function(p){return p.indexOf("./")===0||p.indexOf("../")===0},u}(s)},function(e,t,a){"use strict";function n(F,B){F.prototype=Object.create(B.prototype),F.prototype.constructor=F,i(F,B)}function i(F,B){return i=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(L,k){return L.__proto__=k,L},i(F,B)}var r=a(12),o=a(15),s=a(0),l=a(5),u=a(18),c=a(10),f=c.FileSystemLoader,p=c.WebLoader,b=c.PrecompiledLoader,d=a(20),m=a(21),h=a(1),v=h.Obj,x=h.EmitterObj,E=a(2),g=E.handleError,w=E.Frame,C=a(22);function y(F,B,j){r(function(){F(B,j)})}var S={type:"code",obj:{root:function(B,j,L,k,T){try{T(null,"")}catch(N){T(g(N,null,null))}}}},A=function(F){n(B,F);function B(){return F.apply(this,arguments)||this}var j=B.prototype;return j.init=function(k,T){var N=this;T=this.opts=T||{},this.opts.dev=!!T.dev,this.opts.autoescape=T.autoescape!=null?T.autoescape:!0,this.opts.throwOnUndefined=!!T.throwOnUndefined,this.opts.trimBlocks=!!T.trimBlocks,this.opts.lstripBlocks=!!T.lstripBlocks,this.loaders=[],k?this.loaders=s.isArray(k)?k:[k]:f?this.loaders=[new f("views")]:p&&(this.loaders=[new p("/views")]),typeof window!="undefined"&&window.nunjucksPrecompiled&&this.loaders.unshift(new b(window.nunjucksPrecompiled)),this._initLoaders(),this.globals=m(),this.filters={},this.tests={},this.asyncFilters=[],this.extensions={},this.extensionsList=[],s._entries(u).forEach(function(M){var D=M[0],V=M[1];return N.addFilter(D,V)}),s._entries(d).forEach(function(M){var D=M[0],V=M[1];return N.addTest(D,V)})},j._initLoaders=function(){var k=this;this.loaders.forEach(function(T){T.cache={},typeof T.on=="function"&&(T.on("update",function(N,M){T.cache[N]=null,k.emit("update",N,M,T)}),T.on("load",function(N,M){k.emit("load",N,M,T)}))})},j.invalidateCache=function(){this.loaders.forEach(function(k){k.cache={}})},j.addExtension=function(k,T){return T.__name=k,this.extensions[k]=T,this.extensionsList.push(T),this},j.removeExtension=function(k){var T=this.getExtension(k);T&&(this.extensionsList=s.without(this.extensionsList,T),delete this.extensions[k])},j.getExtension=function(k){return this.extensions[k]},j.hasExtension=function(k){return!!this.extensions[k]},j.addGlobal=function(k,T){return this.globals[k]=T,this},j.getGlobal=function(k){if(typeof this.globals[k]=="undefined")throw new Error("global not found: "+k);return this.globals[k]},j.addFilter=function(k,T,N){var M=T;return N&&this.asyncFilters.push(k),this.filters[k]=M,this},j.getFilter=function(k){if(!this.filters[k])throw new Error("filter not found: "+k);return this.filters[k]},j.addTest=function(k,T){return this.tests[k]=T,this},j.getTest=function(k){if(!this.tests[k])throw new Error("test not found: "+k);return this.tests[k]},j.resolveTemplate=function(k,T,N){var M=k.isRelative&&T?k.isRelative(N):!1;return M&&k.resolve?k.resolve(T,N):N},j.getTemplate=function(k,T,N,M,D){var V=this,q=this,Z=null;if(k&&k.raw&&(k=k.raw),s.isFunction(N)&&(D=N,N=null,T=T||!1),s.isFunction(T)&&(D=T,T=!1),k instanceof P)Z=k;else{if(typeof k!="string")throw new Error("template names must be a string: "+k);for(var pe=0;pe0&&!this.skip(r.TOKEN_COMMA)&&this.fail("parseFrom: expected comma",d.lineno,d.colno);var E=this.parsePrimary();if(E.value.charAt(0)==="_"&&this.fail("parseFrom: names starting with an underscore cannot be imported",E.lineno,E.colno),this.skipSymbol("as")){var g=this.parsePrimary();h.addChild(new o.Pair(E.lineno,E.colno,E,g))}else h.addChild(E);v=this.parseWithContext()}return new o.FromImport(d.lineno,d.colno,m,h,v)},p.parseBlock=function(){var d=this.peekToken();this.skipSymbol("block")||this.fail("parseBlock: expected block",d.lineno,d.colno);var m=new o.Block(d.lineno,d.colno);m.name=this.parsePrimary(),m.name instanceof o.Symbol||this.fail("parseBlock: variable name expected",d.lineno,d.colno),this.advanceAfterBlockEnd(d.value),m.body=this.parseUntilBlocks("endblock"),this.skipSymbol("endblock"),this.skipSymbol(m.name.value);var h=this.peekToken();return h||this.fail("parseBlock: expected endblock, got end of file"),this.advanceAfterBlockEnd(h.value),m},p.parseExtends=function(){var d="extends",m=this.peekToken();this.skipSymbol(d)||this.fail("parseTemplateRef: expected "+d);var h=new o.Extends(m.lineno,m.colno);return h.template=this.parseExpression(),this.advanceAfterBlockEnd(m.value),h},p.parseInclude=function(){var d="include",m=this.peekToken();this.skipSymbol(d)||this.fail("parseInclude: expected "+d);var h=new o.Include(m.lineno,m.colno);return h.template=this.parseExpression(),this.skipSymbol("ignore")&&this.skipSymbol("missing")&&(h.ignoreMissing=!0),this.advanceAfterBlockEnd(m.value),h},p.parseIf=function(){var d=this.peekToken(),m;this.skipSymbol("if")||this.skipSymbol("elif")||this.skipSymbol("elseif")?m=new o.If(d.lineno,d.colno):this.skipSymbol("ifAsync")?m=new o.IfAsync(d.lineno,d.colno):this.fail("parseIf: expected if, elif, or elseif",d.lineno,d.colno),m.cond=this.parseExpression(),this.advanceAfterBlockEnd(d.value),m.body=this.parseUntilBlocks("elif","elseif","else","endif");var h=this.peekToken();switch(h&&h.value){case"elseif":case"elif":m.else_=this.parseIf();break;case"else":this.advanceAfterBlockEnd(),m.else_=this.parseUntilBlocks("endif"),this.advanceAfterBlockEnd();break;case"endif":m.else_=null,this.advanceAfterBlockEnd();break;default:this.fail("parseIf: expected elif, else, or endif, got end of file")}return m},p.parseSet=function(){var d=this.peekToken();this.skipSymbol("set")||this.fail("parseSet: expected set",d.lineno,d.colno);for(var m=new o.Set(d.lineno,d.colno,[]),h;(h=this.parsePrimary())&&(m.targets.push(h),!!this.skip(r.TOKEN_COMMA)););return this.skipValue(r.TOKEN_OPERATOR,"=")?(m.value=this.parseExpression(),this.advanceAfterBlockEnd(d.value)):this.skip(r.TOKEN_BLOCK_END)?(m.body=new o.Capture(d.lineno,d.colno,this.parseUntilBlocks("endset")),m.value=null,this.advanceAfterBlockEnd()):this.fail("parseSet: expected = or block end in set tag",d.lineno,d.colno),m},p.parseSwitch=function(){var d="switch",m="endswitch",h="case",v="default",x=this.peekToken();!this.skipSymbol(d)&&!this.skipSymbol(h)&&!this.skipSymbol(v)&&this.fail('parseSwitch: expected "switch," "case" or "default"',x.lineno,x.colno);var E=this.parseExpression();this.advanceAfterBlockEnd(d),this.parseUntilBlocks(h,v,m);var g=this.peekToken(),w=[],C;do{this.skipSymbol(h);var y=this.parseExpression();this.advanceAfterBlockEnd(d);var S=this.parseUntilBlocks(h,v,m);w.push(new o.Case(g.line,g.col,y,S)),g=this.peekToken()}while(g&&g.value===h);switch(g.value){case v:this.advanceAfterBlockEnd(),C=this.parseUntilBlocks(m),this.advanceAfterBlockEnd();break;case m:this.advanceAfterBlockEnd();break;default:this.fail('parseSwitch: expected "case," "default" or "endswitch," got EOF.')}return new o.Switch(x.lineno,x.colno,E,w,C)},p.parseStatement=function(){var d=this.peekToken(),m;if(d.type!==r.TOKEN_SYMBOL&&this.fail("tag name expected",d.lineno,d.colno),this.breakOnBlocks&&l.indexOf(this.breakOnBlocks,d.value)!==-1)return null;switch(d.value){case"raw":return this.parseRaw();case"verbatim":return this.parseRaw("verbatim");case"if":case"ifAsync":return this.parseIf();case"for":case"asyncEach":case"asyncAll":return this.parseFor();case"block":return this.parseBlock();case"extends":return this.parseExtends();case"include":return this.parseInclude();case"set":return this.parseSet();case"macro":return this.parseMacro();case"call":return this.parseCall();case"import":return this.parseImport();case"from":return this.parseFrom();case"filter":return this.parseFilterStatement();case"switch":return this.parseSwitch();default:if(this.extensions.length)for(var h=0;h0;){var w=E[0],C=E[1],y=E[2];y===d?v+=1:y===m&&(v-=1),v===0?(x+=C,this.tokens.backN(w.length-C.length)):x+=w}return new o.Output(g.lineno,g.colno,[new o.TemplateData(g.lineno,g.colno,x)])},p.parsePostfix=function(d){for(var m,h=this.peekToken();h;){if(h.type===r.TOKEN_LEFT_PAREN)d=new o.FunCall(h.lineno,h.colno,d,this.parseSignature());else if(h.type===r.TOKEN_LEFT_BRACKET)m=this.parseAggregate(),m.children.length>1&&this.fail("invalid index"),d=new o.LookupVal(h.lineno,h.colno,d,m.children[0]);else if(h.type===r.TOKEN_OPERATOR&&h.value==="."){this.nextToken();var v=this.nextToken();v.type!==r.TOKEN_SYMBOL&&this.fail("expected name as lookup value, got "+v.value,v.lineno,v.colno),m=new o.Literal(v.lineno,v.colno,v.value),d=new o.LookupVal(h.lineno,h.colno,d,m)}else break;h=this.peekToken()}return d},p.parseExpression=function(){var d=this.parseInlineIf();return d},p.parseInlineIf=function(){var d=this.parseOr();if(this.skipSymbol("if")){var m=this.parseOr(),h=d;d=new o.InlineIf(d.lineno,d.colno),d.body=h,d.cond=m,this.skipSymbol("else")?d.else_=this.parseOr():d.else_=null}return d},p.parseOr=function(){for(var d=this.parseAnd();this.skipSymbol("or");){var m=this.parseAnd();d=new o.Or(d.lineno,d.colno,d,m)}return d},p.parseAnd=function(){for(var d=this.parseNot();this.skipSymbol("and");){var m=this.parseNot();d=new o.And(d.lineno,d.colno,d,m)}return d},p.parseNot=function(){var d=this.peekToken();return this.skipSymbol("not")?new o.Not(d.lineno,d.colno,this.parseNot()):this.parseIn()},p.parseIn=function(){for(var d=this.parseIs();;){var m=this.nextToken();if(!m)break;var h=m.type===r.TOKEN_SYMBOL&&m.value==="not";if(h||this.pushToken(m),this.skipSymbol("in")){var v=this.parseIs();d=new o.In(d.lineno,d.colno,d,v),h&&(d=new o.Not(d.lineno,d.colno,d))}else{h&&this.pushToken(m);break}}return d},p.parseIs=function(){var d=this.parseCompare();if(this.skipSymbol("is")){var m=this.skipSymbol("not"),h=this.parseCompare();d=new o.Is(d.lineno,d.colno,d,h),m&&(d=new o.Not(d.lineno,d.colno,d))}return d},p.parseCompare=function(){for(var d=["==","===","!=","!==","<",">","<=",">="],m=this.parseConcat(),h=[];;){var v=this.nextToken();if(v)if(d.indexOf(v.value)!==-1)h.push(new o.CompareOperand(v.lineno,v.colno,this.parseConcat(),v.value));else{this.pushToken(v);break}else break}return h.length?new o.Compare(h[0].lineno,h[0].colno,m,h):m},p.parseConcat=function(){for(var d=this.parseAdd();this.skipValue(r.TOKEN_TILDE,"~");){var m=this.parseAdd();d=new o.Concat(d.lineno,d.colno,d,m)}return d},p.parseAdd=function(){for(var d=this.parseSub();this.skipValue(r.TOKEN_OPERATOR,"+");){var m=this.parseSub();d=new o.Add(d.lineno,d.colno,d,m)}return d},p.parseSub=function(){for(var d=this.parseMul();this.skipValue(r.TOKEN_OPERATOR,"-");){var m=this.parseMul();d=new o.Sub(d.lineno,d.colno,d,m)}return d},p.parseMul=function(){for(var d=this.parseDiv();this.skipValue(r.TOKEN_OPERATOR,"*");){var m=this.parseDiv();d=new o.Mul(d.lineno,d.colno,d,m)}return d},p.parseDiv=function(){for(var d=this.parseFloorDiv();this.skipValue(r.TOKEN_OPERATOR,"/");){var m=this.parseFloorDiv();d=new o.Div(d.lineno,d.colno,d,m)}return d},p.parseFloorDiv=function(){for(var d=this.parseMod();this.skipValue(r.TOKEN_OPERATOR,"//");){var m=this.parseMod();d=new o.FloorDiv(d.lineno,d.colno,d,m)}return d},p.parseMod=function(){for(var d=this.parsePow();this.skipValue(r.TOKEN_OPERATOR,"%");){var m=this.parsePow();d=new o.Mod(d.lineno,d.colno,d,m)}return d},p.parsePow=function(){for(var d=this.parseUnary();this.skipValue(r.TOKEN_OPERATOR,"**");){var m=this.parseUnary();d=new o.Pow(d.lineno,d.colno,d,m)}return d},p.parseUnary=function(d){var m=this.peekToken(),h;return this.skipValue(r.TOKEN_OPERATOR,"-")?h=new o.Neg(m.lineno,m.colno,this.parseUnary(!0)):this.skipValue(r.TOKEN_OPERATOR,"+")?h=new o.Pos(m.lineno,m.colno,this.parseUnary(!0)):h=this.parsePrimary(),d||(h=this.parseFilter(h)),h},p.parsePrimary=function(d){var m=this.nextToken(),h,v=null;if(m?m.type===r.TOKEN_STRING?h=m.value:m.type===r.TOKEN_INT?h=parseInt(m.value,10):m.type===r.TOKEN_FLOAT?h=parseFloat(m.value):m.type===r.TOKEN_BOOLEAN?m.value==="true"?h=!0:m.value==="false"?h=!1:this.fail("invalid boolean: "+m.value,m.lineno,m.colno):m.type===r.TOKEN_NONE?h=null:m.type===r.TOKEN_REGEX&&(h=new RegExp(m.value.body,m.value.flags)):this.fail("expected expression, got end of file"),h!==void 0?v=new o.Literal(m.lineno,m.colno,h):m.type===r.TOKEN_SYMBOL?v=new o.Symbol(m.lineno,m.colno,m.value):(this.pushToken(m),v=this.parseAggregate()),d||(v=this.parsePostfix(v)),v)return v;throw this.error("unexpected token: "+m.value,m.lineno,m.colno)},p.parseFilterName=function(){for(var d=this.expect(r.TOKEN_SYMBOL),m=d.value;this.skipValue(r.TOKEN_OPERATOR,".");)m+="."+this.expect(r.TOKEN_SYMBOL).value;return new o.Symbol(d.lineno,d.colno,m)},p.parseFilterArgs=function(d){if(this.peekToken().type===r.TOKEN_LEFT_PAREN){var m=this.parsePostfix(d);return m.args.children}return[]},p.parseFilter=function(d){for(;this.skip(r.TOKEN_PIPE);){var m=this.parseFilterName();d=new o.Filter(m.lineno,m.colno,m,new o.NodeList(m.lineno,m.colno,[d].concat(this.parseFilterArgs(d))))}return d},p.parseFilterStatement=function(){var d=this.peekToken();this.skipSymbol("filter")||this.fail("parseFilterStatement: expected filter");var m=this.parseFilterName(),h=this.parseFilterArgs(m);this.advanceAfterBlockEnd(d.value);var v=new o.Capture(m.lineno,m.colno,this.parseUntilBlocks("endfilter"));this.advanceAfterBlockEnd();var x=new o.Filter(m.lineno,m.colno,m,new o.NodeList(m.lineno,m.colno,[v].concat(h)));return new o.Output(m.lineno,m.colno,[x])},p.parseAggregate=function(){var d=this.nextToken(),m;switch(d.type){case r.TOKEN_LEFT_PAREN:m=new o.Group(d.lineno,d.colno);break;case r.TOKEN_LEFT_BRACKET:m=new o.Array(d.lineno,d.colno);break;case r.TOKEN_LEFT_CURLY:m=new o.Dict(d.lineno,d.colno);break;default:return null}for(;;){var h=this.peekToken().type;if(h===r.TOKEN_RIGHT_PAREN||h===r.TOKEN_RIGHT_BRACKET||h===r.TOKEN_RIGHT_CURLY){this.nextToken();break}if(m.children.length>0&&(this.skip(r.TOKEN_COMMA)||this.fail("parseAggregate: expected comma after expression",d.lineno,d.colno)),m instanceof o.Dict){var v=this.parsePrimary();this.skip(r.TOKEN_COLON)||this.fail("parseAggregate: expected colon after dict key",d.lineno,d.colno);var x=this.parseExpression();m.addChild(new o.Pair(v.lineno,v.colno,v,x))}else{var E=this.parseExpression();m.addChild(E)}}return m},p.parseSignature=function(d,m){var h=this.peekToken();if(!m&&h.type!==r.TOKEN_LEFT_PAREN){if(d)return null;this.fail("expected arguments",h.lineno,h.colno)}h.type===r.TOKEN_LEFT_PAREN&&(h=this.nextToken());for(var v=new o.NodeList(h.lineno,h.colno),x=new o.KeywordArgs(h.lineno,h.colno),E=!1;;){if(h=this.peekToken(),!m&&h.type===r.TOKEN_RIGHT_PAREN){this.nextToken();break}else if(m&&h.type===r.TOKEN_BLOCK_END)break;if(E&&!this.skip(r.TOKEN_COMMA))this.fail("parseSignature: expected comma after expression",h.lineno,h.colno);else{var g=this.parseExpression();this.skipValue(r.TOKEN_OPERATOR,"=")?x.addChild(new o.Pair(g.lineno,g.colno,g,this.parseExpression())):v.addChild(g)}E=!0}return x.children.length&&v.addChild(x),v},p.parseUntilBlocks=function(){for(var d=this.breakOnBlocks,m=arguments.length,h=new Array(m),v=0;v=","//","**"],J=he+this.current(),H;switch(n.indexOf(z,J)!==-1&&(this.forward(),he=J,n.indexOf(z,J+this.current())!==-1&&(he=J+this.current(),this.forward())),he){case"(":H=w;break;case")":H=C;break;case"[":H=y;break;case"]":H=S;break;case"{":H=A;break;case"}":H=_;break;case",":H=F;break;case":":H=B;break;case"~":H=j;break;case"|":H=L;break;default:H=P}return Z(H,he,U,X)}else if($=this._extractUntil(i+r),$.match(/^[-+]?[0-9]+$/))if(this.current()==="."){this.forward();var ne=this._extract(o);return Z(T,$+"."+ne,U,X)}else return Z(k,$,U,X);else{if($.match(/^(true|false)$/))return Z(N,$,U,X);if($==="none")return Z(M,$,U,X);if($==="null")return Z(M,$,U,X);if($)return Z(D,$,U,X);throw new Error("Unexpected value while parsing: "+$)}}else{var K=this.tags.BLOCK_START.charAt(0)+this.tags.VARIABLE_START.charAt(0)+this.tags.COMMENT_START.charAt(0)+this.tags.COMMENT_END.charAt(0);if(this.isFinished())return null;if(($=this._extractString(this.tags.BLOCK_START+"-"))||($=this._extractString(this.tags.BLOCK_START)))return this.in_code=!0,Z(h,$,U,X);if(($=this._extractString(this.tags.VARIABLE_START+"-"))||($=this._extractString(this.tags.VARIABLE_START)))return this.in_code=!0,Z(x,$,U,X);$="";var Ae,ue=!1;for(this._matches(this.tags.COMMENT_START)&&(ue=!0,$=this._extractString(this.tags.COMMENT_START));(Ae=this._extractUntil(K))!==null;)if($+=Ae,(this._matches(this.tags.BLOCK_START)||this._matches(this.tags.VARIABLE_START)||this._matches(this.tags.COMMENT_START))&&!ue){if(this.lstripBlocks&&this._matches(this.tags.BLOCK_START)&&this.colno>0&&this.colno<=$.length){var Ne=$.slice(-this.colno);if(/^\s+$/.test(Ne)&&($=$.slice(0,-this.colno),!$.length))return this.nextToken()}break}else if(this._matches(this.tags.COMMENT_END)){if(!ue)throw new Error("unexpected end of comment");$+=this._extractString(this.tags.COMMENT_END);break}else $+=this.current(),this.forward();if(Ae===null&&ue)throw new Error("expected end of comment, got end of file");return Z(ue?g:m,$,U,X)}},ee._parseString=function(U){this.forward();for(var X="";!this.isFinished()&&this.current()!==U;){var $=this.current();if($==="\\"){switch(this.forward(),this.current()){case"n":X+=` +`;break;case"t":X+=" ";break;case"r":X+="\r";break;default:X+=this.current()}this.forward()}else X+=$,this.forward()}return this.forward(),X},ee._matches=function(U){if(this.index+U.length>this.len)return null;var X=this.str.slice(this.index,this.index+U.length);return X===U},ee._extractString=function(U){return this._matches(U)?(this.forwardN(U.length),U):null},ee._extractUntil=function(U){return this._extractMatching(!0,U||"")},ee._extract=function(U){return this._extractMatching(!1,U)},ee._extractMatching=function(U,X){if(this.isFinished())return null;var $=X.indexOf(this.current());if(U&&$===-1||!U&&$!==-1){var he=this.current();this.forward();for(var qe=X.indexOf(this.current());(U&&qe===-1||!U&&qe!==-1)&&!this.isFinished();)he+=this.current(),this.forward(),qe=X.indexOf(this.current());return he}return""},ee._extractRegex=function(U){var X=this.currentStr().match(U);return X?(this.forwardN(X[0].length),X):null},ee.isFinished=function(){return this.index>=this.len},ee.forwardN=function(U){for(var X=0;Xu){for(var h=0,v=r.length-l;h0&&(B=A[0]),B instanceof Error)throw B;var j=new Error("Unhandled error."+(B?" ("+B.message+")":""));throw j.context=B,j}var L=F[S];if(L===void 0)return!1;if(typeof L=="function")i(L,this,A);else for(var k=L.length,T=v(L,k),_=0;_0&&B.length>P&&!B.warned){B.warned=!0;var j=new Error("Possible EventEmitter memory leak detected. "+B.length+" "+String(S)+" listeners added. Use emitter.setMaxListeners() to increase limit");j.name="MaxListenersExceededWarning",j.emitter=y,j.type=S,j.count=B.length,o(j)}return y}l.prototype.addListener=function(S,A){return p(this,S,A,!1)},l.prototype.on=l.prototype.addListener,l.prototype.prependListener=function(S,A){return p(this,S,A,!0)};function b(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function d(y,S,A){var _={fired:!1,wrapFn:void 0,target:y,type:S,listener:A},P=b.bind(_);return P.listener=A,_.wrapFn=P,P}l.prototype.once=function(S,A){return c(A),this.on(S,d(this,S,A)),this},l.prototype.prependOnceListener=function(S,A){return c(A),this.prependListener(S,d(this,S,A)),this},l.prototype.removeListener=function(S,A){var _,P,F,B,j;if(c(A),P=this._events,P===void 0)return this;if(_=P[S],_===void 0)return this;if(_===A||_.listener===A)--this._eventsCount===0?this._events=Object.create(null):(delete P[S],P.removeListener&&this.emit("removeListener",S,_.listener||A));else if(typeof _!="function"){for(F=-1,B=_.length-1;B>=0;B--)if(_[B]===A||_[B].listener===A){j=_[B].listener,F=B;break}if(F<0)return this;F===0?_.shift():x(_,F),_.length===1&&(P[S]=_[0]),P.removeListener!==void 0&&this.emit("removeListener",S,j||A)}return this},l.prototype.off=l.prototype.removeListener,l.prototype.removeAllListeners=function(S){var A,_,P;if(_=this._events,_===void 0)return this;if(_.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):_[S]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete _[S]),this;if(arguments.length===0){var F=Object.keys(_),B;for(P=0;P=0;P--)this.removeListener(S,A[P]);return this};function m(y,S,A){var _=y._events;if(_===void 0)return[];var P=_[S];return P===void 0?[]:typeof P=="function"?A?[P.listener||P]:[P]:A?E(P):v(P,P.length)}l.prototype.listeners=function(S){return m(this,S,!0)},l.prototype.rawListeners=function(S){return m(this,S,!1)},l.listenerCount=function(y,S){return typeof y.listenerCount=="function"?y.listenerCount(S):h.call(y,S)},l.prototype.listenerCount=h;function h(y){var S=this._events;if(S!==void 0){var A=S[y];if(typeof A=="function")return 1;if(A!==void 0)return A.length}return 0}l.prototype.eventNames=function(){return this._eventsCount>0?r(this._events):[]};function v(y,S){for(var A=new Array(S),_=0;_=z)return R;var J=z-R.length,H=n.repeat(" ",J/2-J%2),ne=n.repeat(" ",J/2);return i.copySafeness(R,H+R+ne)}r.center=c;function f(R,z,J){return J?R||z:R!==void 0?R:z}r.default=f;function p(R,z,J){if(!n.isObject(R))throw new n.TemplateError("dictsort filter: val must be an object");var H=[];for(var ne in R)H.push([ne,R[ne]]);var K;if(J===void 0||J==="key")K=0;else if(J==="value")K=1;else throw new n.TemplateError("dictsort filter: You can only sort by either key or value");return H.sort(function(Ae,ue){var Ne=Ae[K],Nt=ue[K];return z||(n.isString(Ne)&&(Ne=Ne.toUpperCase()),n.isString(Nt)&&(Nt=Nt.toUpperCase())),Ne>Nt?1:Ne===Nt?0:-1}),H}r.dictsort=p;function b(R,z){return JSON.stringify(R,null,z)}r.dump=b;function d(R){return R instanceof i.SafeString?R:(R=R==null?"":R,i.markSafe(n.escape(R.toString())))}r.escape=d;function m(R){return R instanceof i.SafeString?R:(R=R==null?"":R,i.markSafe(R.toString()))}r.safe=m;function h(R){return R[0]}r.first=h;function v(R){return R=R==null?"":R,i.markSafe(n.escape(R.toString()))}r.forceescape=v;function x(R,z){return n.groupBy(R,z,this.env.opts.throwOnUndefined)}r.groupby=x;function E(R,z,J){if(R=o(R,""),R==="")return"";z=z||4;var H=R.split(` +`),ne=n.repeat(" ",z),K=H.map(function(Ae,ue){return ue===0&&!J?Ae:""+ne+Ae}).join(` +`);return i.copySafeness(R,K)}r.indent=E;function g(R,z,J){return z=z||"",J&&(R=n.map(R,function(H){return H[J]})),R.join(z)}r.join=g;function w(R){return R[R.length-1]}r.last=w;function C(R){var z=o(R,"");return z!==void 0?typeof Map=="function"&&z instanceof Map||typeof Set=="function"&&z instanceof Set?z.size:n.isObject(z)&&!(z instanceof i.SafeString)?n.keys(z).length:z.length:0}r.length=C;function y(R){if(n.isString(R))return R.split("");if(n.isObject(R))return n._entries(R||{}).map(function(z){var J=z[0],H=z[1];return{key:J,value:H}});if(n.isArray(R))return R;throw new n.TemplateError("list filter: type not iterable")}r.list=y;function S(R){return R=o(R,""),R.toLowerCase()}r.lower=S;function A(R){return R==null?"":i.copySafeness(R,R.replace(/\r\n|\n/g,`
    +`))}r.nl2br=A;function _(R){return R[Math.floor(Math.random()*R.length)]}r.random=_;function P(R){function z(J,H,ne){H===void 0&&(H="truthy");var K=this,Ae=K.env.getTest(H);return n.toArray(J).filter(function(Ne){return Ae.call(K,Ne,ne)===R})}return z}r.reject=P(!1);function F(R,z){return R.filter(function(J){return!J[z]})}r.rejectattr=F,r.select=P(!0);function B(R,z){return R.filter(function(J){return!!J[z]})}r.selectattr=B;function j(R,z,J,H){var ne=R;if(z instanceof RegExp)return R.replace(z,J);typeof H=="undefined"&&(H=-1);var K="";if(typeof z=="number")z=""+z;else if(typeof z!="string")return R;if(typeof R=="number"&&(R=""+R),typeof R!="string"&&!(R instanceof i.SafeString))return R;if(z==="")return K=J+R.split("").join(J)+J,i.copySafeness(R,K);var Ae=R.indexOf(z);if(H===0||Ae===-1)return R;for(var ue=0,Ne=0;Ae>-1&&(H===-1||Ne=ne&&Vt.push(J),K.push(Vt)}return K}r.slice=T;function N(R,z,J){return J===void 0&&(J=0),z&&(R=n.map(R,function(H){return H[z]})),J+R.reduce(function(H,ne){return H+ne},0)}r.sum=N,r.sort=i.makeMacro(["value","reverse","case_sensitive","attribute"],[],function(z,J,H,ne){var K=this,Ae=n.map(z,function(Ne){return Ne}),ue=n.getAttrGetter(ne);return Ae.sort(function(Ne,Nt){var Vt=ne?ue(Ne):Ne,Ia=ne?ue(Nt):Nt;if(K.env.opts.throwOnUndefined&&ne&&(Vt===void 0||Ia===void 0))throw new TypeError('sort: attribute "'+ne+'" resolved to undefined');return!H&&n.isString(Vt)&&n.isString(Ia)&&(Vt=Vt.toLowerCase(),Ia=Ia.toLowerCase()),VtIa?J?-1:1:0}),Ae});function M(R){return i.copySafeness(R,R)}r.string=M;function D(R,z){R=o(R,"");var J=/<\/?([a-z][a-z0-9]*)\b[^>]*>|/gi,H=q(R.replace(J,"")),ne="";return z?ne=H.replace(/^ +| +$/gm,"").replace(/ +/g," ").replace(/(\r\n)/g,` +`).replace(/\n\n\n+/g,` + +`):ne=H.replace(/\s+/gi," "),i.copySafeness(R,ne)}r.striptags=D;function V(R){R=o(R,"");var z=R.split(" ").map(function(J){return u(J)});return i.copySafeness(R,z.join(" "))}r.title=V;function q(R){return i.copySafeness(R,R.replace(/^\s*|\s*$/g,""))}r.trim=q;function Z(R,z,J,H){var ne=R;if(R=o(R,""),z=z||255,R.length<=z)return R;if(J)R=R.substring(0,z);else{var K=R.lastIndexOf(" ",z);K===-1&&(K=z),R=R.substring(0,K)}return R+=H!=null?H:"...",i.copySafeness(ne,R)}r.truncate=Z;function pe(R){return R=o(R,""),R.toUpperCase()}r.upper=pe;function fe(R){var z=encodeURIComponent;if(n.isString(R))return z(R);var J=n.isArray(R)?R:n._entries(R);return J.map(function(H){var ne=H[0],K=H[1];return z(ne)+"="+z(K)}).join("&")}r.urlencode=fe;var ee=/^(?:\(|<|<)?(.*?)(?:\.|,|\)|\n|>)?$/,oe=/^[\w.!#$%&'*+\-\/=?\^`{|}~]+@[a-z\d\-]+(\.[a-z\d\-]+)+$/i,U=/^https?:\/\/.*$/,X=/^www\./,$=/\.(?:org|net|com)(?:\:|\/|$)/;function he(R,z,J){s(z)&&(z=1/0);var H=J===!0?' rel="nofollow"':"",ne=R.split(/(\s+)/).filter(function(K){return K&&K.length}).map(function(K){var Ae=K.match(ee),ue=Ae?Ae[1]:K,Ne=ue.substr(0,z);return U.test(ue)?'"+Ne+"":X.test(ue)?'"+Ne+"":oe.test(ue)?''+ue+"":$.test(ue)?'"+Ne+"":K});return ne.join("")}r.urlize=he;function qe(R){R=o(R,"");var z=R?R.match(/\w+/g):null;return z?z.length:null}r.wordcount=qe;function ze(R,z){var J=parseFloat(R);return s(J)?z:J}r.float=ze;var ht=i.makeMacro(["value","default","base"],[],function(z,J,H){H===void 0&&(H=10);var ne=parseInt(z,H);return s(ne)?J:ne});r.int=ht,r.d=r.default,r.e=r.escape},function(e,t,a){"use strict";function n(s,l){s.prototype=Object.create(l.prototype),s.prototype.constructor=s,i(s,l)}function i(s,l){return i=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(c,f){return c.__proto__=f,c},i(s,l)}var r=a(6),o=function(s){n(l,s);function l(c){var f;return f=s.call(this)||this,f.precompiled=c||{},f}var u=l.prototype;return u.getSource=function(f){return this.precompiled[f]?{src:{type:"code",obj:this.precompiled[f]},path:f}:null},l}(r);e.exports={PrecompiledLoader:o}},function(e,t,a){"use strict";var n=a(2).SafeString;function i(_){return typeof _=="function"}t.callable=i;function r(_){return _!==void 0}t.defined=r;function o(_,P){return _%P===0}t.divisibleby=o;function s(_){return _ instanceof n}t.escaped=s;function l(_,P){return _===P}t.equalto=l,t.eq=t.equalto,t.sameas=t.equalto;function u(_){return _%2===0}t.even=u;function c(_){return!_}t.falsy=c;function f(_,P){return _>=P}t.ge=f;function p(_,P){return _>P}t.greaterthan=p,t.gt=t.greaterthan;function b(_,P){return _<=P}t.le=b;function d(_,P){return _=o.length&&(s=0),this.current=o[s],this.current}}}function i(o){o=o||",";var s=!0;return function(){var l=s?"":o;return s=!1,l}}function r(){return{range:function(s,l,u){typeof l=="undefined"?(l=s,s=0,u=1):u||(u=1);var c=[];if(u>0)for(var f=s;fl;p+=u)c.push(p);return c},cycler:function(){return n(Array.prototype.slice.call(arguments))},joiner:function(s){return i(s)}}}e.exports=r},function(e,t,a){var n=a(4);e.exports=function(r,o){function s(l,u){if(this.name=l,this.path=l,this.defaultEngine=u.defaultEngine,this.ext=n.extname(l),!this.ext&&!this.defaultEngine)throw new Error("No default engine was specified and no extension was provided.");this.ext||(this.name+=this.ext=(this.defaultEngine[0]!=="."?".":"")+this.defaultEngine)}return s.prototype.render=function(u,c){r.render(this.name,u,c)},o.set("view",s),o.set("nunjucksEnv",r),r}},function(e,t,a){"use strict";var n=a(4),i=a(4),r=a(0),o=r._prettifyError,s=a(5),l=a(7),u=l.Environment,c=a(24);function f(m,h){return Array.isArray(h)?h.some(function(v){return m.match(v)}):!1}function p(m,h){h=h||{},h.isString=!0;var v=h.env||new u([]),x=h.wrapper||c;if(!h.name)throw new Error('the "name" option is required when compiling a string');return x([d(m,h.name,v)],h)}function b(m,h){h=h||{};var v=h.env||new u([]),x=h.wrapper||c;if(h.isString)return p(m,h);var E=n.existsSync(m)&&n.statSync(m),g=[],w=[];function C(A){n.readdirSync(A).forEach(function(_){var P=i.join(A,_),F=P.substr(i.join(m,"/").length),B=n.statSync(P);B&&B.isDirectory()?(F+="/",f(F,h.exclude)||C(P)):f(F,h.include)&&w.push(P)})}if(E.isFile())g.push(d(n.readFileSync(m,"utf-8"),h.name||m,v));else if(E.isDirectory()){C(m);for(var y=0;yw.length||S>0&&_>=y||S<0&&_<=y);_+=S)A.push(i.memberLookup(w,_));return A}function x(w,C){return Object.prototype.hasOwnProperty.call(w,C)}var E={pop:function(C){if(C===void 0)return this.pop();if(C>=this.length||C<0)throw new Error("KeyError");return this.splice(C,1)},append:function(C){return this.push(C)},remove:function(C){for(var y=0;y{var Rs=require("buffer"),ea=Rs.Buffer;function Qx(e,t){for(var a in e)t[a]=e[a]}ea.from&&ea.alloc&&ea.allocUnsafe&&ea.allocUnsafeSlow?ey.exports=Rs:(Qx(Rs,Sp),Sp.Buffer=pn);function pn(e,t,a){return ea(e,t,a)}pn.prototype=Object.create(ea.prototype);Qx(ea,pn);pn.from=function(e,t,a){if(typeof e=="number")throw new TypeError("Argument must not be a number");return ea(e,t,a)};pn.alloc=function(e,t,a){if(typeof e!="number")throw new TypeError("Argument must be a number");var n=ea(e);return t!==void 0?typeof a=="string"?n.fill(t,a):n.fill(t):n.fill(0),n};pn.allocUnsafe=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return ea(e)};pn.allocUnsafeSlow=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return Rs.SlowBuffer(e)}});var oy=O((JG,Cp)=>{"use strict";Cp.exports=VO;Cp.exports.parse=qO;var ty=require("path").basename,BO=Bs().Buffer,NO=/[\x00-\x20"'()*,/:;<=>?@[\\\]{}\x7f]/g,jO=/%[0-9A-Fa-f]{2}/,LO=/%([0-9A-Fa-f]{2})/g,ny=/[^\x20-\x7e\xa0-\xff]/g,MO=/\\([\u0000-\u007f])/g,DO=/([\\"])/g,ay=/;[\x09\x20]*([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*=[\x09\x20]*("(?:[\x20!\x23-\x5b\x5d-\x7e\x80-\xff]|\\[\x20-\x7e])*"|[!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*/g,zO=/^[\x20-\x7e\x80-\xff]+$/,GO=/^[!#$%&'*+.0-9A-Z^_`a-z|~-]+$/,HO=/^([A-Za-z0-9!#$%&+\-^_`{}~]+)'(?:[A-Za-z]{2,3}(?:-[A-Za-z]{3}){0,3}|[A-Za-z]{4,8}|)'((?:%[0-9A-Fa-f]{2}|[A-Za-z0-9!#$&+.^_`|~-])+)$/,WO=/^([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*(?:$|;)/;function VO(e,t){var a=t||{},n=a.type||"attachment",i=UO(e,a.fallback);return JO(new ry(n,i))}function UO(e,t){if(e!==void 0){var a={};if(typeof e!="string")throw new TypeError("filename must be a string");if(t===void 0&&(t=!0),typeof t!="string"&&typeof t!="boolean")throw new TypeError("fallback must be a string or boolean");if(typeof t=="string"&&ny.test(t))throw new TypeError("fallback must be ISO-8859-1 string");var n=ty(e),i=zO.test(n),r=typeof t!="string"?t&&iy(n):ty(t),o=typeof r=="string"&&r!==n;return(o||!i||jO.test(n))&&(a["filename*"]=n),(i||o)&&(a.filename=o?r:n),a}}function JO(e){var t=e.parameters,a=e.type;if(!a||typeof a!="string"||!GO.test(a))throw new TypeError("invalid type");var n=String(a).toLowerCase();if(t&&typeof t=="object")for(var i,r=Object.keys(t).sort(),o=0;o{"use strict";sy.exports=e=>{let t=new Uint8Array(e);if(!(t&&t.length>1))return null;let a=(n,i)=>{i=Object.assign({offset:0},i);for(let r=0;rs[o]===66&&s[o+1]===130);if(i>=0){let r=i+3,o=s=>Array.from(s).every((l,u)=>n[r+u]===l.charCodeAt(0));if(o("matroska"))return{ext:"mkv",mime:"video/x-matroska"};if(o("webm"))return{ext:"webm",mime:"video/webm"}}}return a([0,0,0,20,102,116,121,112,113,116,32,32])||a([102,114,101,101],{offset:4})||a([102,116,121,112,113,116,32,32],{offset:4})||a([109,100,97,116],{offset:4})||a([119,105,100,101],{offset:4})?{ext:"mov",mime:"video/quicktime"}:a([82,73,70,70])&&a([65,86,73],{offset:8})?{ext:"avi",mime:"video/x-msvideo"}:a([48,38,178,117,142,102,207,17,166,217])?{ext:"wmv",mime:"video/x-ms-wmv"}:a([0,0,1,186])?{ext:"mpg",mime:"video/mpeg"}:a([73,68,51])||a([255,251])?{ext:"mp3",mime:"audio/mpeg"}:a([102,116,121,112,77,52,65],{offset:4})||a([77,52,65,32])?{ext:"m4a",mime:"audio/m4a"}:a([79,112,117,115,72,101,97,100],{offset:28})?{ext:"opus",mime:"audio/opus"}:a([79,103,103,83])?{ext:"ogg",mime:"audio/ogg"}:a([102,76,97,67])?{ext:"flac",mime:"audio/x-flac"}:a([82,73,70,70])&&a([87,65,86,69],{offset:8})?{ext:"wav",mime:"audio/x-wav"}:a([35,33,65,77,82,10])?{ext:"amr",mime:"audio/amr"}:a([37,80,68,70])?{ext:"pdf",mime:"application/pdf"}:a([77,90])?{ext:"exe",mime:"application/x-msdownload"}:(t[0]===67||t[0]===70)&&a([87,83],{offset:1})?{ext:"swf",mime:"application/x-shockwave-flash"}:a([123,92,114,116,102])?{ext:"rtf",mime:"application/rtf"}:a([0,97,115,109])?{ext:"wasm",mime:"application/wasm"}:a([119,79,70,70])&&(a([0,1,0,0],{offset:4})||a([79,84,84,79],{offset:4}))?{ext:"woff",mime:"application/font-woff"}:a([119,79,70,50])&&(a([0,1,0,0],{offset:4})||a([79,84,84,79],{offset:4}))?{ext:"woff2",mime:"application/font-woff"}:a([76,80],{offset:34})&&(a([0,0,1],{offset:8})||a([1,0,2],{offset:8})||a([2,0,2],{offset:8}))?{ext:"eot",mime:"application/octet-stream"}:a([0,1,0,0,0])?{ext:"ttf",mime:"application/font-sfnt"}:a([79,84,84,79,0])?{ext:"otf",mime:"application/font-sfnt"}:a([0,0,1,0])?{ext:"ico",mime:"image/x-icon"}:a([70,76,86,1])?{ext:"flv",mime:"video/x-flv"}:a([37,33])?{ext:"ps",mime:"application/postscript"}:a([253,55,122,88,90,0])?{ext:"xz",mime:"application/x-xz"}:a([83,81,76,105])?{ext:"sqlite",mime:"application/x-sqlite3"}:a([78,69,83,26])?{ext:"nes",mime:"application/x-nintendo-nes-rom"}:a([67,114,50,52])?{ext:"crx",mime:"application/x-google-chrome-extension"}:a([77,83,67,70])||a([73,83,99,40])?{ext:"cab",mime:"application/vnd.ms-cab-compressed"}:a([33,60,97,114,99,104,62,10,100,101,98,105,97,110,45,98,105,110,97,114,121])?{ext:"deb",mime:"application/x-deb"}:a([33,60,97,114,99,104,62])?{ext:"ar",mime:"application/x-unix-archive"}:a([237,171,238,219])?{ext:"rpm",mime:"application/x-rpm"}:a([31,160])||a([31,157])?{ext:"Z",mime:"application/x-compress"}:a([76,90,73,80])?{ext:"lz",mime:"application/x-lzip"}:a([208,207,17,224,161,177,26,225])?{ext:"msi",mime:"application/x-msi"}:a([6,14,43,52,2,5,1,1,13,1,2,1,1,2])?{ext:"mxf",mime:"application/mxf"}:a([66,76,69,78,68,69,82])?{ext:"blend",mime:"application/x-blender"}:null}});var uy=O((qG,cy)=>{"use strict";var QO=ly(),e3=new Set(["7z","bz2","gz","rar","tar","zip","xz","gz"]);cy.exports=e=>{let t=QO(e);return e3.has(t&&t.ext)?t:null}});var dy=O((XG,py)=>{var Na=require("constants"),t3=process.cwd,Ns=null,a3=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){return Ns||(Ns=t3.call(process)),Ns};try{process.cwd()}catch(e){}typeof process.chdir=="function"&&(Ap=process.chdir,process.chdir=function(e){Ns=null,Ap.call(process,e)},Object.setPrototypeOf&&Object.setPrototypeOf(process.chdir,Ap));var Ap;py.exports=n3;function n3(e){Na.hasOwnProperty("O_SYMLINK")&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)&&t(e),e.lutimes||a(e),e.chown=r(e.chown),e.fchown=r(e.fchown),e.lchown=r(e.lchown),e.chmod=n(e.chmod),e.fchmod=n(e.fchmod),e.lchmod=n(e.lchmod),e.chownSync=o(e.chownSync),e.fchownSync=o(e.fchownSync),e.lchownSync=o(e.lchownSync),e.chmodSync=i(e.chmodSync),e.fchmodSync=i(e.fchmodSync),e.lchmodSync=i(e.lchmodSync),e.stat=s(e.stat),e.fstat=s(e.fstat),e.lstat=s(e.lstat),e.statSync=l(e.statSync),e.fstatSync=l(e.fstatSync),e.lstatSync=l(e.lstatSync),e.chmod&&!e.lchmod&&(e.lchmod=function(c,f,p){p&&process.nextTick(p)},e.lchmodSync=function(){}),e.chown&&!e.lchown&&(e.lchown=function(c,f,p,b){b&&process.nextTick(b)},e.lchownSync=function(){}),a3==="win32"&&(e.rename=typeof e.rename!="function"?e.rename:function(c){function f(p,b,d){var m=Date.now(),h=0;c(p,b,function v(x){if(x&&(x.code==="EACCES"||x.code==="EPERM"||x.code==="EBUSY")&&Date.now()-m<6e4){setTimeout(function(){e.stat(b,function(E,g){E&&E.code==="ENOENT"?c(p,b,v):d(x)})},h),h<100&&(h+=10);return}d&&d(x)})}return Object.setPrototypeOf&&Object.setPrototypeOf(f,c),f}(e.rename)),e.read=typeof e.read!="function"?e.read:function(c){function f(p,b,d,m,h,v){var x;if(v&&typeof v=="function"){var E=0;x=function(g,w,C){if(g&&g.code==="EAGAIN"&&E<10)return E++,c.call(e,p,b,d,m,h,x);v.apply(this,arguments)}}return c.call(e,p,b,d,m,h,x)}return Object.setPrototypeOf&&Object.setPrototypeOf(f,c),f}(e.read),e.readSync=typeof e.readSync!="function"?e.readSync:function(c){return function(f,p,b,d,m){for(var h=0;;)try{return c.call(e,f,p,b,d,m)}catch(v){if(v.code==="EAGAIN"&&h<10){h++;continue}throw v}}}(e.readSync);function t(c){c.lchmod=function(f,p,b){c.open(f,Na.O_WRONLY|Na.O_SYMLINK,p,function(d,m){if(d){b&&b(d);return}c.fchmod(m,p,function(h){c.close(m,function(v){b&&b(h||v)})})})},c.lchmodSync=function(f,p){var b=c.openSync(f,Na.O_WRONLY|Na.O_SYMLINK,p),d=!0,m;try{m=c.fchmodSync(b,p),d=!1}finally{if(d)try{c.closeSync(b)}catch(h){}else c.closeSync(b)}return m}}function a(c){Na.hasOwnProperty("O_SYMLINK")&&c.futimes?(c.lutimes=function(f,p,b,d){c.open(f,Na.O_SYMLINK,function(m,h){if(m){d&&d(m);return}c.futimes(h,p,b,function(v){c.close(h,function(x){d&&d(v||x)})})})},c.lutimesSync=function(f,p,b){var d=c.openSync(f,Na.O_SYMLINK),m,h=!0;try{m=c.futimesSync(d,p,b),h=!1}finally{if(h)try{c.closeSync(d)}catch(v){}else c.closeSync(d)}return m}):c.futimes&&(c.lutimes=function(f,p,b,d){d&&process.nextTick(d)},c.lutimesSync=function(){})}function n(c){return c&&function(f,p,b){return c.call(e,f,p,function(d){u(d)&&(d=null),b&&b.apply(this,arguments)})}}function i(c){return c&&function(f,p){try{return c.call(e,f,p)}catch(b){if(!u(b))throw b}}}function r(c){return c&&function(f,p,b,d){return c.call(e,f,p,b,function(m){u(m)&&(m=null),d&&d.apply(this,arguments)})}}function o(c){return c&&function(f,p,b){try{return c.call(e,f,p,b)}catch(d){if(!u(d))throw d}}}function s(c){return c&&function(f,p,b){typeof p=="function"&&(b=p,p=null);function d(m,h){h&&(h.uid<0&&(h.uid+=4294967296),h.gid<0&&(h.gid+=4294967296)),b&&b.apply(this,arguments)}return p?c.call(e,f,p,d):c.call(e,f,d)}}function l(c){return c&&function(f,p){var b=p?c.call(e,f,p):c.call(e,f);return b&&(b.uid<0&&(b.uid+=4294967296),b.gid<0&&(b.gid+=4294967296)),b}}function u(c){if(!c||c.code==="ENOSYS")return!0;var f=!process.getuid||process.getuid()!==0;return!!(f&&(c.code==="EINVAL"||c.code==="EPERM"))}}});var hy=O(($G,my)=>{var fy=require("stream").Stream;my.exports=i3;function i3(e){return{ReadStream:t,WriteStream:a};function t(n,i){if(!(this instanceof t))return new t(n,i);fy.call(this);var r=this;this.path=n,this.fd=null,this.readable=!0,this.paused=!1,this.flags="r",this.mode=438,this.bufferSize=64*1024,i=i||{};for(var o=Object.keys(i),s=0,l=o.length;sthis.end)throw new Error("start must be <= end");this.pos=this.start}if(this.fd!==null){process.nextTick(function(){r._read()});return}e.open(this.path,this.flags,this.mode,function(c,f){if(c){r.emit("error",c),r.readable=!1;return}r.fd=f,r.emit("open",f),r._read()})}function a(n,i){if(!(this instanceof a))return new a(n,i);fy.call(this),this.path=n,this.fd=null,this.writable=!0,this.flags="w",this.encoding="binary",this.mode=438,this.bytesWritten=0,i=i||{};for(var r=Object.keys(i),o=0,s=r.length;o= zero");this.pos=this.start}this.busy=!1,this._queue=[],this.fd===null&&(this._open=e.open,this._queue.push([this._open,this.path,this.flags,this.mode,void 0]),this.flush())}}});var by=O((YG,vy)=>{"use strict";vy.exports=o3;var r3=Object.getPrototypeOf||function(e){return e.__proto__};function o3(e){if(e===null||typeof e!="object")return e;if(e instanceof Object)var t={__proto__:r3(e)};else var t=Object.create(null);return Object.getOwnPropertyNames(e).forEach(function(a){Object.defineProperty(t,a,Object.getOwnPropertyDescriptor(e,a))}),t}});var wy=O((KG,Tp)=>{var We=require("fs"),s3=dy(),l3=hy(),c3=by(),js=require("util"),ct,Ms;typeof Symbol=="function"&&typeof Symbol.for=="function"?(ct=Symbol.for("graceful-fs.queue"),Ms=Symbol.for("graceful-fs.previous")):(ct="___graceful-fs.queue",Ms="___graceful-fs.previous");function u3(){}function yy(e,t){Object.defineProperty(e,ct,{get:function(){return t}})}var dn=u3;js.debuglog?dn=js.debuglog("gfs4"):/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&(dn=function(){var e=js.format.apply(js,arguments);e="GFS4: "+e.split(/\n/).join(` +GFS4: `),console.error(e)});We[ct]||(gy=global[ct]||[],yy(We,gy),We.close=function(e){function t(a,n){return e.call(We,a,function(i){i||xy(),typeof n=="function"&&n.apply(this,arguments)})}return Object.defineProperty(t,Ms,{value:e}),t}(We.close),We.closeSync=function(e){function t(a){e.apply(We,arguments),xy()}return Object.defineProperty(t,Ms,{value:e}),t}(We.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&process.on("exit",function(){dn(We[ct]),require("assert").equal(We[ct].length,0)}));var gy;global[ct]||yy(global,We[ct]);Tp.exports=Ip(c3(We));process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!We.__patched&&(Tp.exports=Ip(We),We.__patched=!0);function Ip(e){s3(e),e.gracefulify=Ip,e.createReadStream=w,e.createWriteStream=C;var t=e.readFile;e.readFile=a;function a(A,_,P){return typeof _=="function"&&(P=_,_=null),F(A,_,P);function F(B,j,L,k){return t(B,j,function(T){T&&(T.code==="EMFILE"||T.code==="ENFILE")?Jn([F,[B,j,L],T,k||Date.now(),Date.now()]):typeof L=="function"&&L.apply(this,arguments)})}}var n=e.writeFile;e.writeFile=i;function i(A,_,P,F){return typeof P=="function"&&(F=P,P=null),B(A,_,P,F);function B(j,L,k,T,N){return n(j,L,k,function(M){M&&(M.code==="EMFILE"||M.code==="ENFILE")?Jn([B,[j,L,k,T],M,N||Date.now(),Date.now()]):typeof T=="function"&&T.apply(this,arguments)})}}var r=e.appendFile;r&&(e.appendFile=o);function o(A,_,P,F){return typeof P=="function"&&(F=P,P=null),B(A,_,P,F);function B(j,L,k,T,N){return r(j,L,k,function(M){M&&(M.code==="EMFILE"||M.code==="ENFILE")?Jn([B,[j,L,k,T],M,N||Date.now(),Date.now()]):typeof T=="function"&&T.apply(this,arguments)})}}var s=e.copyFile;s&&(e.copyFile=l);function l(A,_,P,F){return typeof P=="function"&&(F=P,P=0),B(A,_,P,F);function B(j,L,k,T,N){return s(j,L,k,function(M){M&&(M.code==="EMFILE"||M.code==="ENFILE")?Jn([B,[j,L,k,T],M,N||Date.now(),Date.now()]):typeof T=="function"&&T.apply(this,arguments)})}}var u=e.readdir;e.readdir=f;var c=/^v[0-5]\./;function f(A,_,P){typeof _=="function"&&(P=_,_=null);var F=c.test(process.version)?function(L,k,T,N){return u(L,B(L,k,T,N))}:function(L,k,T,N){return u(L,k,B(L,k,T,N))};return F(A,_,P);function B(j,L,k,T){return function(N,M){N&&(N.code==="EMFILE"||N.code==="ENFILE")?Jn([F,[j,L,k],N,T||Date.now(),Date.now()]):(M&&M.sort&&M.sort(),typeof k=="function"&&k.call(this,N,M))}}}if(process.version.substr(0,4)==="v0.8"){var p=l3(e);v=p.ReadStream,E=p.WriteStream}var b=e.ReadStream;b&&(v.prototype=Object.create(b.prototype),v.prototype.open=x);var d=e.WriteStream;d&&(E.prototype=Object.create(d.prototype),E.prototype.open=g),Object.defineProperty(e,"ReadStream",{get:function(){return v},set:function(A){v=A},enumerable:!0,configurable:!0}),Object.defineProperty(e,"WriteStream",{get:function(){return E},set:function(A){E=A},enumerable:!0,configurable:!0});var m=v;Object.defineProperty(e,"FileReadStream",{get:function(){return m},set:function(A){m=A},enumerable:!0,configurable:!0});var h=E;Object.defineProperty(e,"FileWriteStream",{get:function(){return h},set:function(A){h=A},enumerable:!0,configurable:!0});function v(A,_){return this instanceof v?(b.apply(this,arguments),this):v.apply(Object.create(v.prototype),arguments)}function x(){var A=this;S(A.path,A.flags,A.mode,function(_,P){_?(A.autoClose&&A.destroy(),A.emit("error",_)):(A.fd=P,A.emit("open",P),A.read())})}function E(A,_){return this instanceof E?(d.apply(this,arguments),this):E.apply(Object.create(E.prototype),arguments)}function g(){var A=this;S(A.path,A.flags,A.mode,function(_,P){_?(A.destroy(),A.emit("error",_)):(A.fd=P,A.emit("open",P))})}function w(A,_){return new e.ReadStream(A,_)}function C(A,_){return new e.WriteStream(A,_)}var y=e.open;e.open=S;function S(A,_,P,F){return typeof P=="function"&&(F=P,P=null),B(A,_,P,F);function B(j,L,k,T,N){return y(j,L,k,function(M,D){M&&(M.code==="EMFILE"||M.code==="ENFILE")?Jn([B,[j,L,k,T],M,N||Date.now(),Date.now()]):typeof T=="function"&&T.apply(this,arguments)})}}return e}function Jn(e){dn("ENQUEUE",e[0].name,e[1]),We[ct].push(e),_p()}var Ls;function xy(){for(var e=Date.now(),t=0;t2&&(We[ct][t][3]=e,We[ct][t][4]=e);_p()}function _p(){if(clearTimeout(Ls),Ls=void 0,We[ct].length!==0){var e=We[ct].shift(),t=e[0],a=e[1],n=e[2],i=e[3],r=e[4];if(i===void 0)dn("RETRY",t.name,a),t.apply(null,a);else if(Date.now()-i>=6e4){dn("TIMEOUT",t.name,a);var o=a.pop();typeof o=="function"&&o.call(null,n)}else{var s=Date.now()-r,l=Math.max(r-i,1),u=Math.min(l*1.2,100);s>=u?(dn("RETRY",t.name,a),t.apply(null,a.concat([i]))):We[ct].push(e)}Ls===void 0&&(Ls=setTimeout(_p,0))}}});var Sy=O((QG,Ey)=>{"use strict";Ey.exports=e=>{let t=new Uint8Array(e);if(!(t&&t.length>1))return null;let a=(n,i)=>{i=Object.assign({offset:0},i);for(let r=0;rs[o]===66&&s[o+1]===130);if(i>=0){let r=i+3,o=s=>Array.from(s).every((l,u)=>n[r+u]===l.charCodeAt(0));if(o("matroska"))return{ext:"mkv",mime:"video/x-matroska"};if(o("webm"))return{ext:"webm",mime:"video/webm"}}}return a([0,0,0,20,102,116,121,112,113,116,32,32])||a([102,114,101,101],{offset:4})||a([102,116,121,112,113,116,32,32],{offset:4})||a([109,100,97,116],{offset:4})||a([119,105,100,101],{offset:4})?{ext:"mov",mime:"video/quicktime"}:a([82,73,70,70])&&a([65,86,73],{offset:8})?{ext:"avi",mime:"video/x-msvideo"}:a([48,38,178,117,142,102,207,17,166,217])?{ext:"wmv",mime:"video/x-ms-wmv"}:a([0,0,1,186])?{ext:"mpg",mime:"video/mpeg"}:a([73,68,51])||a([255,251])?{ext:"mp3",mime:"audio/mpeg"}:a([102,116,121,112,77,52,65],{offset:4})||a([77,52,65,32])?{ext:"m4a",mime:"audio/m4a"}:a([79,112,117,115,72,101,97,100],{offset:28})?{ext:"opus",mime:"audio/opus"}:a([79,103,103,83])?{ext:"ogg",mime:"audio/ogg"}:a([102,76,97,67])?{ext:"flac",mime:"audio/x-flac"}:a([82,73,70,70])&&a([87,65,86,69],{offset:8})?{ext:"wav",mime:"audio/x-wav"}:a([35,33,65,77,82,10])?{ext:"amr",mime:"audio/amr"}:a([37,80,68,70])?{ext:"pdf",mime:"application/pdf"}:a([77,90])?{ext:"exe",mime:"application/x-msdownload"}:(t[0]===67||t[0]===70)&&a([87,83],{offset:1})?{ext:"swf",mime:"application/x-shockwave-flash"}:a([123,92,114,116,102])?{ext:"rtf",mime:"application/rtf"}:a([0,97,115,109])?{ext:"wasm",mime:"application/wasm"}:a([119,79,70,70])&&(a([0,1,0,0],{offset:4})||a([79,84,84,79],{offset:4}))?{ext:"woff",mime:"font/woff"}:a([119,79,70,50])&&(a([0,1,0,0],{offset:4})||a([79,84,84,79],{offset:4}))?{ext:"woff2",mime:"font/woff2"}:a([76,80],{offset:34})&&(a([0,0,1],{offset:8})||a([1,0,2],{offset:8})||a([2,0,2],{offset:8}))?{ext:"eot",mime:"application/octet-stream"}:a([0,1,0,0,0])?{ext:"ttf",mime:"font/ttf"}:a([79,84,84,79,0])?{ext:"otf",mime:"font/otf"}:a([0,0,1,0])?{ext:"ico",mime:"image/x-icon"}:a([70,76,86,1])?{ext:"flv",mime:"video/x-flv"}:a([37,33])?{ext:"ps",mime:"application/postscript"}:a([253,55,122,88,90,0])?{ext:"xz",mime:"application/x-xz"}:a([83,81,76,105])?{ext:"sqlite",mime:"application/x-sqlite3"}:a([78,69,83,26])?{ext:"nes",mime:"application/x-nintendo-nes-rom"}:a([67,114,50,52])?{ext:"crx",mime:"application/x-google-chrome-extension"}:a([77,83,67,70])||a([73,83,99,40])?{ext:"cab",mime:"application/vnd.ms-cab-compressed"}:a([33,60,97,114,99,104,62,10,100,101,98,105,97,110,45,98,105,110,97,114,121])?{ext:"deb",mime:"application/x-deb"}:a([33,60,97,114,99,104,62])?{ext:"ar",mime:"application/x-unix-archive"}:a([237,171,238,219])?{ext:"rpm",mime:"application/x-rpm"}:a([31,160])||a([31,157])?{ext:"Z",mime:"application/x-compress"}:a([76,90,73,80])?{ext:"lz",mime:"application/x-lzip"}:a([208,207,17,224,161,177,26,225])?{ext:"msi",mime:"application/x-msi"}:a([6,14,43,52,2,5,1,1,13,1,2,1,1,2])?{ext:"mxf",mime:"application/mxf"}:a([71],{offset:4})&&(a([71],{offset:192})||a([71],{offset:196}))?{ext:"mts",mime:"video/mp2t"}:a([66,76,69,78,68,69,82])?{ext:"blend",mime:"application/x-blender"}:a([66,80,71,251])?{ext:"bpg",mime:"image/bpg"}:null}});var Ds=O((eH,Cy)=>{"use strict";var va=Cy.exports=function(e){return e!==null&&typeof e=="object"&&typeof e.pipe=="function"};va.writable=function(e){return va(e)&&e.writable!==!1&&typeof e._write=="function"&&typeof e._writableState=="object"};va.readable=function(e){return va(e)&&e.readable!==!1&&typeof e._read=="function"&&typeof e._readableState=="object"};va.duplex=function(e){return va.writable(e)&&va.readable(e)};va.transform=function(e){return va.duplex(e)&&typeof e._transform=="function"&&typeof e._transformState=="object"}});var ir=O((tH,kp)=>{"use strict";typeof process=="undefined"||!process.version||process.version.indexOf("v0.")===0||process.version.indexOf("v1.")===0&&process.version.indexOf("v1.8.")!==0?kp.exports={nextTick:p3}:kp.exports=process;function p3(e,t,a,n){if(typeof e!="function")throw new TypeError('"callback" argument must be a function');var i=arguments.length,r,o;switch(i){case 0:case 1:return process.nextTick(e);case 2:return process.nextTick(function(){e.call(null,t)});case 3:return process.nextTick(function(){e.call(null,t,a)});case 4:return process.nextTick(function(){e.call(null,t,a,n)});default:for(r=new Array(i-1),o=0;o{function d3(e){return Array.isArray?Array.isArray(e):zs(e)==="[object Array]"}mt.isArray=d3;function f3(e){return typeof e=="boolean"}mt.isBoolean=f3;function m3(e){return e===null}mt.isNull=m3;function h3(e){return e==null}mt.isNullOrUndefined=h3;function v3(e){return typeof e=="number"}mt.isNumber=v3;function b3(e){return typeof e=="string"}mt.isString=b3;function g3(e){return typeof e=="symbol"}mt.isSymbol=g3;function x3(e){return e===void 0}mt.isUndefined=x3;function y3(e){return zs(e)==="[object RegExp]"}mt.isRegExp=y3;function w3(e){return typeof e=="object"&&e!==null}mt.isObject=w3;function E3(e){return zs(e)==="[object Date]"}mt.isDate=E3;function S3(e){return zs(e)==="[object Error]"||e instanceof Error}mt.isError=S3;function C3(e){return typeof e=="function"}mt.isFunction=C3;function A3(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"||typeof e=="symbol"||typeof e=="undefined"}mt.isPrimitive=A3;mt.isBuffer=require("buffer").Buffer.isBuffer;function zs(e){return Object.prototype.toString.call(e)}});var fn=O((nH,Fp)=>{typeof Object.create=="function"?Fp.exports=function(t,a){a&&(t.super_=a,t.prototype=Object.create(a.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:Fp.exports=function(t,a){if(a){t.super_=a;var n=function(){};n.prototype=a.prototype,t.prototype=new n,t.prototype.constructor=t}}});var Iy=O((iH,Ay)=>{var I3={}.toString;Ay.exports=Array.isArray||function(e){return I3.call(e)=="[object Array]"}});var Pp=O((rH,_y)=>{_y.exports=require("events").EventEmitter});var Hs=O((Op,ky)=>{var Gs=require("buffer"),ba=Gs.Buffer;function Ty(e,t){for(var a in e)t[a]=e[a]}ba.from&&ba.alloc&&ba.allocUnsafe&&ba.allocUnsafeSlow?ky.exports=Gs:(Ty(Gs,Op),Op.Buffer=qn);function qn(e,t,a){return ba(e,t,a)}Ty(ba,qn);qn.from=function(e,t,a){if(typeof e=="number")throw new TypeError("Argument must not be a number");return ba(e,t,a)};qn.alloc=function(e,t,a){if(typeof e!="number")throw new TypeError("Argument must be a number");var n=ba(e);return t!==void 0?typeof a=="string"?n.fill(t,a):n.fill(t):n.fill(0),n};qn.allocUnsafe=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return ba(e)};qn.allocUnsafeSlow=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return Gs.SlowBuffer(e)}});var Py=O((oH,Rp)=>{"use strict";function _3(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var Fy=Hs().Buffer,rr=require("util");function T3(e,t,a){e.copy(t,a)}Rp.exports=function(){function e(){_3(this,e),this.head=null,this.tail=null,this.length=0}return e.prototype.push=function(a){var n={data:a,next:null};this.length>0?this.tail.next=n:this.head=n,this.tail=n,++this.length},e.prototype.unshift=function(a){var n={data:a,next:this.head};this.length===0&&(this.tail=n),this.head=n,++this.length},e.prototype.shift=function(){if(this.length!==0){var a=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,a}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(a){if(this.length===0)return"";for(var n=this.head,i=""+n.data;n=n.next;)i+=a+n.data;return i},e.prototype.concat=function(a){if(this.length===0)return Fy.alloc(0);for(var n=Fy.allocUnsafe(a>>>0),i=this.head,r=0;i;)T3(i.data,n,r),r+=i.data.length,i=i.next;return n},e}();rr&&rr.inspect&&rr.inspect.custom&&(Rp.exports.prototype[rr.inspect.custom]=function(){var e=rr.inspect({length:this.length});return this.constructor.name+" "+e})});var Bp=O((sH,Oy)=>{"use strict";var Ws=ir();function k3(e,t){var a=this,n=this._readableState&&this._readableState.destroyed,i=this._writableState&&this._writableState.destroyed;return n||i?(t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,Ws.nextTick(Vs,this,e)):Ws.nextTick(Vs,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(r){!t&&r?a._writableState?a._writableState.errorEmitted||(a._writableState.errorEmitted=!0,Ws.nextTick(Vs,a,r)):Ws.nextTick(Vs,a,r):t&&t(r)}),this)}function F3(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function Vs(e,t){e.emit("error",t)}Oy.exports={destroy:k3,undestroy:F3}});var Gp=O((cH,Vy)=>{"use strict";var $n=ir();Vy.exports=Me;var P3=Iy(),or;Me.ReadableState=Dy;var lH=require("events").EventEmitter,jy=function(e,t){return e.listeners(t).length},Dp=Pp(),sr=Hs().Buffer,O3=(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:{}).Uint8Array||function(){};function R3(e){return sr.from(e)}function B3(e){return sr.isBuffer(e)||e instanceof O3}var Ly=Object.create(Zn());Ly.inherits=fn();var Np=require("util"),Ce=void 0;Np&&Np.debuglog?Ce=Np.debuglog("stream"):Ce=function(){};var N3=Py(),My=Bp(),Xn;Ly.inherits(Me,Dp);var jp=["error","close","destroy","pause","resume"];function j3(e,t,a){if(typeof e.prependListener=="function")return e.prependListener(t,a);!e._events||!e._events[t]?e.on(t,a):P3(e._events[t])?e._events[t].unshift(a):e._events[t]=[a,e._events[t]]}function Dy(e,t){or=or||ja(),e=e||{};var a=t instanceof or;this.objectMode=!!e.objectMode,a&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var n=e.highWaterMark,i=e.readableHighWaterMark,r=this.objectMode?16:16*1024;n||n===0?this.highWaterMark=n:a&&(i||i===0)?this.highWaterMark=i:this.highWaterMark=r,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new N3,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(Xn||(Xn=require("string_decoder/").StringDecoder),this.decoder=new Xn(e.encoding),this.encoding=e.encoding)}function Me(e){if(or=or||ja(),!(this instanceof Me))return new Me(e);this._readableState=new Dy(e,this),this.readable=!0,e&&(typeof e.read=="function"&&(this._read=e.read),typeof e.destroy=="function"&&(this._destroy=e.destroy)),Dp.call(this)}Object.defineProperty(Me.prototype,"destroyed",{get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(e){this._readableState&&(this._readableState.destroyed=e)}});Me.prototype.destroy=My.destroy;Me.prototype._undestroy=My.undestroy;Me.prototype._destroy=function(e,t){this.push(null),t(e)};Me.prototype.push=function(e,t){var a=this._readableState,n;return a.objectMode?n=!0:typeof e=="string"&&(t=t||a.defaultEncoding,t!==a.encoding&&(e=sr.from(e,t),t=""),n=!0),zy(this,e,t,!1,n)};Me.prototype.unshift=function(e){return zy(this,e,null,!0,!1)};function zy(e,t,a,n,i){var r=e._readableState;if(t===null)r.reading=!1,z3(e,r);else{var o;i||(o=L3(r,t)),o?e.emit("error",o):r.objectMode||t&&t.length>0?(typeof t!="string"&&!r.objectMode&&Object.getPrototypeOf(t)!==sr.prototype&&(t=R3(t)),n?r.endEmitted?e.emit("error",new Error("stream.unshift() after end event")):Lp(e,r,t,!0):r.ended?e.emit("error",new Error("stream.push() after EOF")):(r.reading=!1,r.decoder&&!a?(t=r.decoder.write(t),r.objectMode||t.length!==0?Lp(e,r,t,!1):Gy(e,r)):Lp(e,r,t,!1))):n||(r.reading=!1)}return M3(r)}function Lp(e,t,a,n){t.flowing&&t.length===0&&!t.sync?(e.emit("data",a),e.read(0)):(t.length+=t.objectMode?1:a.length,n?t.buffer.unshift(a):t.buffer.push(a),t.needReadable&&Us(e)),Gy(e,t)}function L3(e,t){var a;return!B3(t)&&typeof t!="string"&&t!==void 0&&!e.objectMode&&(a=new TypeError("Invalid non-string/buffer chunk")),a}function M3(e){return!e.ended&&(e.needReadable||e.length=Ry?e=Ry:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}function By(e,t){return e<=0||t.length===0&&t.ended?0:t.objectMode?1:e!==e?t.flowing&&t.length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=D3(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}Me.prototype.read=function(e){Ce("read",e),e=parseInt(e,10);var t=this._readableState,a=e;if(e!==0&&(t.emittedReadable=!1),e===0&&t.needReadable&&(t.length>=t.highWaterMark||t.ended))return Ce("read: emitReadable",t.length,t.ended),t.length===0&&t.ended?Mp(this):Us(this),null;if(e=By(e,t),e===0&&t.ended)return t.length===0&&Mp(this),null;var n=t.needReadable;Ce("need readable",n),(t.length===0||t.length-e0?i=Hy(e,t):i=null,i===null?(t.needReadable=!0,e=0):t.length-=e,t.length===0&&(t.ended||(t.needReadable=!0),a!==e&&t.ended&&Mp(this)),i!==null&&this.emit("data",i),i};function z3(e,t){if(!t.ended){if(t.decoder){var a=t.decoder.end();a&&a.length&&(t.buffer.push(a),t.length+=t.objectMode?1:a.length)}t.ended=!0,Us(e)}}function Us(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(Ce("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?$n.nextTick(Ny,e):Ny(e))}function Ny(e){Ce("emit readable"),e.emit("readable"),zp(e)}function Gy(e,t){t.readingMore||(t.readingMore=!0,$n.nextTick(G3,e,t))}function G3(e,t){for(var a=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length1&&Wy(n.pipes,e)!==-1)&&!u&&(Ce("false write response, pause",n.awaitDrain),n.awaitDrain++,f=!0),a.pause())}function b(v){Ce("onerror",v),h(),e.removeListener("error",b),jy(e,"error")===0&&e.emit("error",v)}j3(e,"error",b);function d(){e.removeListener("finish",m),h()}e.once("close",d);function m(){Ce("onfinish"),e.removeListener("close",d),h()}e.once("finish",m);function h(){Ce("unpipe"),a.unpipe(e)}return e.emit("pipe",a),n.flowing||(Ce("pipe resume"),a.resume()),e};function H3(e){return function(){var t=e._readableState;Ce("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,t.awaitDrain===0&&jy(e,"data")&&(t.flowing=!0,zp(e))}}Me.prototype.unpipe=function(e){var t=this._readableState,a={hasUnpiped:!1};if(t.pipesCount===0)return this;if(t.pipesCount===1)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,a),this);if(!e){var n=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var r=0;r=t.length?(t.decoder?a=t.buffer.join(""):t.buffer.length===1?a=t.buffer.head.data:a=t.buffer.concat(t.length),t.buffer.clear()):a=J3(e,t.buffer,t.decoder),a}function J3(e,t,a){var n;return er.length?r.length:e;if(o===r.length?i+=r:i+=r.slice(0,e),e-=o,e===0){o===r.length?(++n,a.next?t.head=a.next:t.head=t.tail=null):(t.head=a,a.data=r.slice(o));break}++n}return t.length-=n,i}function q3(e,t){var a=sr.allocUnsafe(e),n=t.head,i=1;for(n.data.copy(a),e-=n.data.length;n=n.next;){var r=n.data,o=e>r.length?r.length:e;if(r.copy(a,a.length-e,0,o),e-=o,e===0){o===r.length?(++i,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=r.slice(o));break}++i}return t.length-=i,a}function Mp(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,$n.nextTick(X3,t,e))}function X3(e,t){!e.endEmitted&&e.length===0&&(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function Wy(e,t){for(var a=0,n=e.length;a{Uy.exports=$3;function $3(e,t){if(Hp("noDeprecation"))return e;var a=!1;function n(){if(!a){if(Hp("throwDeprecation"))throw new Error(t);Hp("traceDeprecation")?console.trace(t):console.warn(t),a=!0}return e.apply(this,arguments)}return n}function Hp(e){try{if(!global.localStorage)return!1}catch(a){return!1}var t=global.localStorage[e];return t==null?!1:String(t).toLowerCase()==="true"}});var Vp=O((pH,ew)=>{"use strict";var mn=ir();ew.exports=Ye;function qy(e){var t=this;this.next=null,this.entry=null,this.finish=function(){m6(t,e)}}var Y3=!process.browser&&["v0.10","v0.9."].indexOf(process.version.slice(0,5))>-1?setImmediate:mn.nextTick,Yn;Ye.WritableState=cr;var Xy=Object.create(Zn());Xy.inherits=fn();var K3={deprecate:Jy()},$y=Pp(),Zs=Hs().Buffer,Q3=(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:{}).Uint8Array||function(){};function e6(e){return Zs.from(e)}function t6(e){return Zs.isBuffer(e)||e instanceof Q3}var Yy=Bp();Xy.inherits(Ye,$y);function a6(){}function cr(e,t){Yn=Yn||ja(),e=e||{};var a=t instanceof Yn;this.objectMode=!!e.objectMode,a&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var n=e.highWaterMark,i=e.writableHighWaterMark,r=this.objectMode?16:16*1024;n||n===0?this.highWaterMark=n:a&&(i||i===0)?this.highWaterMark=i:this.highWaterMark=r,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var o=e.decodeStrings===!1;this.decodeStrings=!o,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(s){c6(t,s)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new qy(this)}cr.prototype.getBuffer=function(){for(var t=this.bufferedRequest,a=[];t;)a.push(t),t=t.next;return a};(function(){try{Object.defineProperty(cr.prototype,"buffer",{get:K3.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}})();var Js;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(Js=Function.prototype[Symbol.hasInstance],Object.defineProperty(Ye,Symbol.hasInstance,{value:function(e){return Js.call(this,e)?!0:this!==Ye?!1:e&&e._writableState instanceof cr}})):Js=function(e){return e instanceof this};function Ye(e){if(Yn=Yn||ja(),!Js.call(Ye,this)&&!(this instanceof Yn))return new Ye(e);this._writableState=new cr(e,this),this.writable=!0,e&&(typeof e.write=="function"&&(this._write=e.write),typeof e.writev=="function"&&(this._writev=e.writev),typeof e.destroy=="function"&&(this._destroy=e.destroy),typeof e.final=="function"&&(this._final=e.final)),$y.call(this)}Ye.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))};function n6(e,t){var a=new Error("write after end");e.emit("error",a),mn.nextTick(t,a)}function i6(e,t,a,n){var i=!0,r=!1;return a===null?r=new TypeError("May not write null values to stream"):typeof a!="string"&&a!==void 0&&!t.objectMode&&(r=new TypeError("Invalid non-string/buffer chunk")),r&&(e.emit("error",r),mn.nextTick(n,r),i=!1),i}Ye.prototype.write=function(e,t,a){var n=this._writableState,i=!1,r=!n.objectMode&&t6(e);return r&&!Zs.isBuffer(e)&&(e=e6(e)),typeof t=="function"&&(a=t,t=null),r?t="buffer":t||(t=n.defaultEncoding),typeof a!="function"&&(a=a6),n.ended?n6(this,a):(r||i6(this,n,e,a))&&(n.pendingcb++,i=o6(this,n,r,e,t,a)),i};Ye.prototype.cork=function(){var e=this._writableState;e.corked++};Ye.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,!e.writing&&!e.corked&&!e.bufferProcessing&&e.bufferedRequest&&Ky(this,e))};Ye.prototype.setDefaultEncoding=function(t){if(typeof t=="string"&&(t=t.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+t);return this._writableState.defaultEncoding=t,this};function r6(e,t,a){return!e.objectMode&&e.decodeStrings!==!1&&typeof t=="string"&&(t=Zs.from(t,a)),t}Object.defineProperty(Ye.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function o6(e,t,a,n,i,r){if(!a){var o=r6(t,n,i);n!==o&&(a=!0,i="buffer",n=o)}var s=t.objectMode?1:n.length;t.length+=s;var l=t.length{"use strict";var tw=ir(),h6=Object.keys||function(e){var t=[];for(var a in e)t.push(a);return t};iw.exports=ga;var aw=Object.create(Zn());aw.inherits=fn();var nw=Gp(),Jp=Vp();aw.inherits(ga,nw);for(Up=h6(Jp.prototype),qs=0;qs{rw.exports=ja()});var lw=O((mH,sw)=>{var Zp=ow(),g6=require("util"),Kn=Bs().Buffer;function Je(e){if(!(this instanceof Je))return new Je(e);if(this._bufs=[],this.length=0,typeof e=="function"){this._callback=e;var t=function(n){this._callback&&(this._callback(n),this._callback=null)}.bind(this);this.on("pipe",function(n){n.on("error",t)}),this.on("unpipe",function(n){n.removeListener("error",t)})}else this.append(e);Zp.call(this)}g6.inherits(Je,Zp);Je.prototype._offset=function(t){var a=0,n=0,i;if(t===0)return[0,0];for(;nthis.length)&&(i=this.length),n>=this.length||i<=0)return t||Kn.alloc(0);var r=!!t,o=this._offset(n),s=i-n,l=s,u=r&&a||0,c=o[1],f,p;if(n===0&&i==this.length){if(!r)return this._bufs.length===1?this._bufs[0]:Kn.concat(this._bufs,this.length);for(p=0;pf)this._bufs[p].copy(t,u,c),u+=f;else{this._bufs[p].copy(t,u,c,c+l),u+=f;break}l-=f,c&&(c=0)}return t.length>u?t.slice(0,u):t};Je.prototype.shallowSlice=function(t,a){t=t||0,a=a||this.length,t<0&&(t+=this.length),a<0&&(a+=this.length);var n=this._offset(t),i=this._offset(a),r=this._bufs.slice(n[0],i[0]+1);return i[1]==0?r.pop():r[r.length-1]=r[r.length-1].slice(0,i[1]),n[1]!=0&&(r[0]=r[0].slice(n[1])),new Je(r)};Je.prototype.toString=function(t,a,n){return this.slice(a,n).toString(t)};Je.prototype.consume=function(t){if(t=Math.trunc(t),Number.isNaN(t)||t<=0)return this;for(;this._bufs.length;)if(t>=this._bufs[0].length)t-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(t),this.length-=t;break}return this};Je.prototype.duplicate=function(){for(var t=0,a=new Je;t{cw.exports=y6;var x6=Object.prototype.hasOwnProperty;function y6(){for(var e={},t=0;t{dw.exports=E6;var pw=Buffer.from&&Buffer.from!==Uint8Array.from?Buffer.from:w6;function w6(e,t){return new Buffer(e,t)}function E6(e,t){if(Buffer.isBuffer(e))return e;if(typeof e=="string")return pw(e,t);if(Array.isArray(e))return pw(e);throw new Error("Input should be a buffer or a string")}});var mw=O((bH,fw)=>{var S6=function(){try{if(!Buffer.isEncoding("latin1"))return!1;var e=Buffer.alloc?Buffer.alloc(4):new Buffer(4);return e.fill("ab","ucs2"),e.toString("hex")==="61006200"}catch(t){return!1}}();function C6(e){return e.length===1&&e.charCodeAt(0)<256}function $s(e,t,a,n){if(a<0||n>e.length)throw new RangeError("Out of range index");return a=a>>>0,n=n===void 0?e.length:n>>>0,n>a&&e.fill(t,a,n),e}function A6(e,t,a,n){if(a<0||n>e.length)throw new RangeError("Out of range index");if(n<=a)return e;a=a>>>0,n=n===void 0?e.length:n>>>0;for(var i=a,r=t.length;i<=n-r;)t.copy(e,i),i+=r;return i!==n&&t.copy(e,i,0,n-i),e}function I6(e,t,a,n,i){if(S6)return e.fill(t,a,n,i);if(typeof t=="number")return $s(e,t,a,n);if(typeof t=="string"){if(typeof a=="string"?(i=a,a=0,n=e.length):typeof n=="string"&&(i=n,n=e.length),i!==void 0&&typeof i!="string")throw new TypeError("encoding must be a string");if(i==="latin1"&&(i="binary"),typeof i=="string"&&!Buffer.isEncoding(i))throw new TypeError("Unknown encoding: "+i);if(t==="")return $s(e,0,a,n);if(C6(t))return $s(e,t.charCodeAt(0),a,n);t=new Buffer(t,i)}return Buffer.isBuffer(t)?A6(e,t,a,n):$s(e,0,a,n)}fw.exports=I6});var vw=O((gH,hw)=>{function _6(e){if(typeof e!="number")throw new TypeError('"size" argument must be a number');if(e<0)throw new RangeError('"size" argument must not be negative');return Buffer.allocUnsafe?Buffer.allocUnsafe(e):new Buffer(e)}hw.exports=_6});var Xp=O((xH,gw)=>{var bw=mw(),T6=vw();gw.exports=function(t,a,n){if(typeof t!="number")throw new TypeError('"size" argument must be a number');if(t<0)throw new RangeError('"size" argument must not be negative');if(Buffer.alloc)return Buffer.alloc(t,a,n);var i=T6(t);return t===0?i:a===void 0?bw(i,0):(typeof n!="string"&&(n=void 0),bw(i,a,n))}});var Yp=O(ei=>{var k6=qp(),F6=Xp(),P6="0000000000000000000",O6="7777777777777777777",xw="0".charCodeAt(0),R6="ustar\x0000",B6=parseInt("7777",8),N6=function(e,t,a){return typeof e!="number"?a:(e=~~e,e>=t?t:e>=0||(e+=t,e>=0)?e:0)},j6=function(e){switch(e){case 0:return"file";case 1:return"link";case 2:return"symlink";case 3:return"character-device";case 4:return"block-device";case 5:return"directory";case 6:return"fifo";case 7:return"contiguous-file";case 72:return"pax-header";case 55:return"pax-global-header";case 27:return"gnu-long-link-path";case 28:case 30:return"gnu-long-path"}return null},L6=function(e){switch(e){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72}return 0},yw=function(e,t,a,n){for(;at?O6.slice(0,t)+" ":P6.slice(0,t-e.length)+e+" "};function M6(e){var t;if(e[0]===128)t=!0;else if(e[0]===255)t=!1;else return null;for(var a=!1,n=[],i=e.length-1;i>0;i--){var r=e[i];t?n.push(r):a&&r===0?n.push(0):a?(a=!1,n.push(256-r)):n.push(255-r)}var o=0,s=n.length;for(i=0;i=Math.pow(10,a)&&a++,t+a+e};ei.decodeLongPath=function(e,t){return Qn(e,0,e.length,t)};ei.encodePax=function(e){var t="";e.name&&(t+=$p(" path="+e.name+` +`)),e.linkname&&(t+=$p(" linkpath="+e.linkname+` +`));var a=e.pax;if(a)for(var n in a)t+=$p(" "+n+"="+a[n]+` +`);return k6(t)};ei.decodePax=function(e){for(var t={};e.length;){for(var a=0;a100;){var i=a.indexOf("/");if(i===-1)return null;n+=n?"/"+a.slice(0,i):a.slice(0,i),a=a.slice(i+1)}return Buffer.byteLength(a)>100||Buffer.byteLength(n)>155||e.linkname&&Buffer.byteLength(e.linkname)>100?null:(t.write(a),t.write(La(e.mode&B6,6),100),t.write(La(e.uid,6),108),t.write(La(e.gid,6),116),t.write(La(e.size,11),124),t.write(La(e.mtime.getTime()/1e3|0,11),136),t[156]=xw+L6(e.type),e.linkname&&t.write(e.linkname,157),t.write(R6,257),e.uname&&t.write(e.uname,265),e.gname&&t.write(e.gname,297),t.write(La(e.devmajor||0,6),329),t.write(La(e.devminor||0,6),337),n&&t.write(n,345),t.write(La(ww(t),6),148),t)};ei.decode=function(e,t){var a=e[156]===0?0:e[156]-xw,n=Qn(e,0,100,t),i=Ma(e,100,8),r=Ma(e,108,8),o=Ma(e,116,8),s=Ma(e,124,12),l=Ma(e,136,12),u=j6(a),c=e[157]===0?null:Qn(e,157,100,t),f=Qn(e,265,32),p=Qn(e,297,32),b=Ma(e,329,8),d=Ma(e,337,8);e[345]&&(n=Qn(e,345,155,t)+"/"+n),a===0&&n&&n[n.length-1]==="/"&&(a=5);var m=ww(e);if(m===8*32)return null;if(m!==Ma(e,148,8))throw new Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");return{name:n,mode:i,uid:r,gid:o,size:s,mtime:new Date(1e3*l),type:u,linkname:c,uname:f,gname:p,devmajor:b,devminor:d}}});var Kp=O((wH,Cw)=>{"use strict";Cw.exports=xa;var Ys=ja(),Sw=Object.create(Zn());Sw.inherits=fn();Sw.inherits(xa,Ys);function D6(e,t){var a=this._transformState;a.transforming=!1;var n=a.writecb;if(!n)return this.emit("error",new Error("write callback called multiple times"));a.writechunk=null,a.writecb=null,t!=null&&this.push(t),n(e);var i=this._readableState;i.reading=!1,(i.needReadable||i.length{"use strict";_w.exports=ur;var Aw=Kp(),Iw=Object.create(Zn());Iw.inherits=fn();Iw.inherits(ur,Aw);function ur(e){if(!(this instanceof ur))return new ur(e);Aw.call(this,e)}ur.prototype._transform=function(e,t,a){a(null,e)}});var ti=O((ta,kw)=>{ta=kw.exports=Gp();ta.Stream=ta;ta.Readable=ta;ta.Writable=Vp();ta.Duplex=ja();ta.Transform=Kp();ta.PassThrough=Tw()});var jw=O((SH,Nw)=>{var Pw=require("util"),G6=lw(),H6=uw(),pr=Yp(),Ow=ti().Writable,Rw=ti().PassThrough,Bw=function(){},Fw=function(e){return e&=511,e&&512-e},W6=function(e,t){var a=new Ks(e,t);return a.end(),a},V6=function(e,t){return t.path&&(e.name=t.path),t.linkpath&&(e.linkname=t.linkpath),t.size&&(e.size=parseInt(t.size,10)),e.pax=t,e},Ks=function(e,t){this._parent=e,this.offset=t,Rw.call(this)};Pw.inherits(Ks,Rw);Ks.prototype.destroy=function(e){this._parent.destroy(e)};var ya=function(e){if(!(this instanceof ya))return new ya(e);Ow.call(this,e),e=e||{},this._offset=0,this._buffer=G6(),this._missing=0,this._partial=!1,this._onparse=Bw,this._header=null,this._stream=null,this._overflow=null,this._cb=null,this._locked=!1,this._destroyed=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null;var t=this,a=t._buffer,n=function(){t._continue()},i=function(p){if(t._locked=!1,p)return t.destroy(p);t._stream||n()},r=function(){t._stream=null;var p=Fw(t._header.size);p?t._parse(p,o):t._parse(512,f),t._locked||n()},o=function(){t._buffer.consume(Fw(t._header.size)),t._parse(512,f),n()},s=function(){var p=t._header.size;t._paxGlobal=pr.decodePax(a.slice(0,p)),a.consume(p),r()},l=function(){var p=t._header.size;t._pax=pr.decodePax(a.slice(0,p)),t._paxGlobal&&(t._pax=H6(t._paxGlobal,t._pax)),a.consume(p),r()},u=function(){var p=t._header.size;this._gnuLongPath=pr.decodeLongPath(a.slice(0,p),e.filenameEncoding),a.consume(p),r()},c=function(){var p=t._header.size;this._gnuLongLinkPath=pr.decodeLongPath(a.slice(0,p),e.filenameEncoding),a.consume(p),r()},f=function(){var p=t._offset,b;try{b=t._header=pr.decode(a.slice(0,512),e.filenameEncoding)}catch(d){t.emit("error",d)}if(a.consume(512),!b){t._parse(512,f),n();return}if(b.type==="gnu-long-path"){t._parse(b.size,u),n();return}if(b.type==="gnu-long-link-path"){t._parse(b.size,c),n();return}if(b.type==="pax-global-header"){t._parse(b.size,s),n();return}if(b.type==="pax-header"){t._parse(b.size,l),n();return}if(t._gnuLongPath&&(b.name=t._gnuLongPath,t._gnuLongPath=null),t._gnuLongLinkPath&&(b.linkname=t._gnuLongLinkPath,t._gnuLongLinkPath=null),t._pax&&(t._header=b=V6(b,t._pax),t._pax=null),t._locked=!0,!b.size||b.type==="directory"){t._parse(512,f),t.emit("entry",b,W6(t,p),i);return}t._stream=new Ks(t,p),t.emit("entry",b,t._stream,i),t._parse(b.size,r),n()};this._onheader=f,this._parse(512,f)};Pw.inherits(ya,Ow);ya.prototype.destroy=function(e){this._destroyed||(this._destroyed=!0,e&&this.emit("error",e),this.emit("close"),this._stream&&this._stream.emit("close"))};ya.prototype._parse=function(e,t){this._destroyed||(this._offset+=e,this._missing=e,t===this._onheader&&(this._partial=!1),this._onparse=t)};ya.prototype._continue=function(){if(!this._destroyed){var e=this._cb;this._cb=Bw,this._overflow?this._write(this._overflow,void 0,e):e()}};ya.prototype._write=function(e,t,a){if(!this._destroyed){var n=this._stream,i=this._buffer,r=this._missing;if(e.length&&(this._partial=!0),e.lengthr&&(o=e.slice(r),e=e.slice(0,r)),n?n.end(e):i.append(e),this._overflow=o,this._onparse()}};ya.prototype._final=function(e){if(this._partial)return this.destroy(new Error("Unexpected end of data"));e()};Nw.exports=ya});var Mw=O((CH,Lw)=>{Lw.exports=require("constants")});var Gw=O((AH,zw)=>{zw.exports=Dw;function Dw(e,t){if(e&&t)return Dw(e)(t);if(typeof e!="function")throw new TypeError("need wrapper function");return Object.keys(e).forEach(function(n){a[n]=e[n]}),a;function a(){for(var n=new Array(arguments.length),i=0;i{var Hw=Gw();Qp.exports=Hw(Qs);Qp.exports.strict=Hw(Ww);Qs.proto=Qs(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return Qs(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return Ww(this)},configurable:!0})});function Qs(e){var t=function(){return t.called?t.value:(t.called=!0,t.value=e.apply(this,arguments))};return t.called=!1,t}function Ww(e){var t=function(){if(t.called)throw new Error(t.onceError);return t.called=!0,t.value=e.apply(this,arguments)},a=e.name||"Function wrapped with `once`";return t.onceError=a+" shouldn't be called more than once",t.called=!1,t}});var td=O((_H,Uw)=>{var U6=ed(),J6=function(){},Z6=function(e){return e.setHeader&&typeof e.abort=="function"},q6=function(e){return e.stdio&&Array.isArray(e.stdio)&&e.stdio.length===3},Vw=function(e,t,a){if(typeof t=="function")return Vw(e,null,t);t||(t={}),a=U6(a||J6);var n=e._writableState,i=e._readableState,r=t.readable||t.readable!==!1&&e.readable,o=t.writable||t.writable!==!1&&e.writable,s=!1,l=function(){e.writable||u()},u=function(){o=!1,r||a.call(e)},c=function(){r=!1,o||a.call(e)},f=function(h){a.call(e,h?new Error("exited with error code: "+h):null)},p=function(h){a.call(e,h)},b=function(){process.nextTick(d)},d=function(){if(!s){if(r&&!(i&&i.ended&&!i.destroyed))return a.call(e,new Error("premature close"));if(o&&!(n&&n.ended&&!n.destroyed))return a.call(e,new Error("premature close"))}},m=function(){e.req.on("finish",u)};return Z6(e)?(e.on("complete",u),e.on("abort",b),e.req?m():e.on("request",m)):o&&!n&&(e.on("end",l),e.on("close",l)),q6(e)&&e.on("exit",f),e.on("end",c),e.on("finish",u),t.error!==!1&&e.on("error",p),e.on("close",b),function(){s=!0,e.removeListener("complete",u),e.removeListener("abort",b),e.removeListener("request",m),e.req&&e.req.removeListener("finish",u),e.removeListener("end",l),e.removeListener("close",l),e.removeListener("finish",u),e.removeListener("exit",f),e.removeListener("end",c),e.removeListener("error",p),e.removeListener("close",b)}};Uw.exports=Vw});var $w=O((TH,Xw)=>{var ai=Mw(),Jw=td(),tl=require("util"),X6=Xp(),$6=qp(),Zw=ti().Readable,ni=ti().Writable,Y6=require("string_decoder").StringDecoder,el=Yp(),K6=parseInt("755",8),Q6=parseInt("644",8),qw=X6(1024),nd=function(){},ad=function(e,t){t&=511,t&&e.push(qw.slice(0,512-t))};function eR(e){switch(e&ai.S_IFMT){case ai.S_IFBLK:return"block-device";case ai.S_IFCHR:return"character-device";case ai.S_IFDIR:return"directory";case ai.S_IFIFO:return"fifo";case ai.S_IFLNK:return"symlink"}return"file"}var al=function(e){ni.call(this),this.written=0,this._to=e,this._destroyed=!1};tl.inherits(al,ni);al.prototype._write=function(e,t,a){if(this.written+=e.length,this._to.push(e))return a();this._to._drain=a};al.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var nl=function(){ni.call(this),this.linkname="",this._decoder=new Y6("utf-8"),this._destroyed=!1};tl.inherits(nl,ni);nl.prototype._write=function(e,t,a){this.linkname+=this._decoder.write(e),a()};nl.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var dr=function(){ni.call(this),this._destroyed=!1};tl.inherits(dr,ni);dr.prototype._write=function(e,t,a){a(new Error("No body allowed for this entry"))};dr.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var aa=function(e){if(!(this instanceof aa))return new aa(e);Zw.call(this,e),this._drain=nd,this._finalized=!1,this._finalizing=!1,this._destroyed=!1,this._stream=null};tl.inherits(aa,Zw);aa.prototype.entry=function(e,t,a){if(this._stream)throw new Error("already piping an entry");if(!(this._finalized||this._destroyed)){typeof t=="function"&&(a=t,t=null),a||(a=nd);var n=this;if((!e.size||e.type==="symlink")&&(e.size=0),e.type||(e.type=eR(e.mode)),e.mode||(e.mode=e.type==="directory"?K6:Q6),e.uid||(e.uid=0),e.gid||(e.gid=0),e.mtime||(e.mtime=new Date),typeof t=="string"&&(t=$6(t)),Buffer.isBuffer(t))return e.size=t.length,this._encode(e),this.push(t),ad(n,e.size),process.nextTick(a),new dr;if(e.type==="symlink"&&!e.linkname){var i=new nl;return Jw(i,function(o){if(o)return n.destroy(),a(o);e.linkname=i.linkname,n._encode(e),a()}),i}if(this._encode(e),e.type!=="file"&&e.type!=="contiguous-file")return process.nextTick(a),new dr;var r=new al(this);return this._stream=r,Jw(r,function(o){if(n._stream=null,o)return n.destroy(),a(o);if(r.written!==e.size)return n.destroy(),a(new Error("size mismatch"));ad(n,e.size),n._finalizing&&n.finalize(),a()}),r}};aa.prototype.finalize=function(){if(this._stream){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push(qw),this.push(null))};aa.prototype.destroy=function(e){this._destroyed||(this._destroyed=!0,e&&this.emit("error",e),this.emit("close"),this._stream&&this._stream.destroy&&this._stream.destroy())};aa.prototype._encode=function(e){if(!e.pax){var t=el.encode(e);if(t){this.push(t);return}}this._encodePax(e)};aa.prototype._encodePax=function(e){var t=el.encodePax({name:e.name,linkname:e.linkname,pax:e.pax}),a={name:"PaxHeader",mode:e.mode,uid:e.uid,gid:e.gid,size:t.length,mtime:e.mtime,type:"pax-header",linkname:e.linkname&&"PaxHeader",uname:e.uname,gname:e.gname,devmajor:e.devmajor,devminor:e.devminor};this.push(el.encode(a)),this.push(t),ad(this,t.length),a.size=e.size,a.type=e.type,this.push(el.encode(a))};aa.prototype._read=function(e){var t=this._drain;this._drain=nd,t()};Xw.exports=aa});var Yw=O(id=>{id.extract=jw();id.pack=$w()});var il=O((FH,Qw)=>{"use strict";var Kw=Sy(),tR=Ds(),aR=Yw();Qw.exports=()=>e=>{if(!Buffer.isBuffer(e)&&!tR(e))return Promise.reject(new TypeError(`Expected a Buffer or Stream, got ${typeof e}`));if(Buffer.isBuffer(e)&&(!Kw(e)||Kw(e).ext!=="tar"))return Promise.resolve([]);let t=aR.extract(),a=[];t.on("entry",(i,r,o)=>{let s=[];r.on("data",l=>s.push(l)),r.on("end",()=>{let l={data:Buffer.concat(s),mode:i.mode,mtime:i.mtime,path:i.name,type:i.type};(i.type==="symlink"||i.type==="link")&&(l.linkname=i.linkname),a.push(l),o()})});let n=new Promise((i,r)=>{Buffer.isBuffer(e)||e.on("error",r),t.on("finish",()=>i(a)),t.on("error",r)});return t.then=n.then.bind(n),t.catch=n.catch.bind(n),Buffer.isBuffer(e)?t.end(e):e.pipe(t),t}});var t1=O((PH,e1)=>{"use strict";var ii=e=>Array.from(e).map(t=>t.charCodeAt(0)),nR=ii("META-INF/mozilla.rsa"),iR=ii("[Content_Types].xml"),rR=ii("_rels/.rels");e1.exports=e=>{let t=new Uint8Array(e);if(!(t&&t.length>1))return null;let a=(n,i)=>{i=Object.assign({offset:0},i);for(let r=0;ro.findIndex((s,l,u)=>u[l]===80&&u[l+1]===75&&u[l+2]===3&&u[l+3]===4),r=i(n);if(r!==-1){let o=t.subarray(r+8,r+8+1e3),s=i(o);if(s!==-1){let l=8+r+s+30;if(a(ii("word/"),{offset:l}))return{ext:"docx",mime:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"};if(a(ii("ppt/"),{offset:l}))return{ext:"pptx",mime:"application/vnd.openxmlformats-officedocument.presentationml.presentation"};if(a(ii("xl/"),{offset:l}))return{ext:"xlsx",mime:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}}}}}if(a([80,75])&&(t[2]===3||t[2]===5||t[2]===7)&&(t[3]===4||t[3]===6||t[3]===8))return{ext:"zip",mime:"application/zip"};if(a([117,115,116,97,114],{offset:257}))return{ext:"tar",mime:"application/x-tar"};if(a([82,97,114,33,26,7])&&(t[6]===0||t[6]===1))return{ext:"rar",mime:"application/x-rar-compressed"};if(a([31,139,8]))return{ext:"gz",mime:"application/gzip"};if(a([66,90,104]))return{ext:"bz2",mime:"application/x-bzip2"};if(a([55,122,188,175,39,28]))return{ext:"7z",mime:"application/x-7z-compressed"};if(a([120,1]))return{ext:"dmg",mime:"application/x-apple-diskimage"};if(a([51,103,112,53])||a([0,0,0])&&a([102,116,121,112],{offset:4})&&(a([109,112,52,49],{offset:8})||a([109,112,52,50],{offset:8})||a([105,115,111,109],{offset:8})||a([105,115,111,50],{offset:8})||a([109,109,112,52],{offset:8})||a([77,52,86],{offset:8})||a([100,97,115,104],{offset:8})))return{ext:"mp4",mime:"video/mp4"};if(a([77,84,104,100]))return{ext:"mid",mime:"audio/midi"};if(a([26,69,223,163])){let n=t.subarray(4,4100),i=n.findIndex((r,o,s)=>s[o]===66&&s[o+1]===130);if(i!==-1){let r=i+3,o=s=>Array.from(s).every((l,u)=>n[r+u]===l.charCodeAt(0));if(o("matroska"))return{ext:"mkv",mime:"video/x-matroska"};if(o("webm"))return{ext:"webm",mime:"video/webm"}}}if(a([0,0,0,20,102,116,121,112,113,116,32,32])||a([102,114,101,101],{offset:4})||a([102,116,121,112,113,116,32,32],{offset:4})||a([109,100,97,116],{offset:4})||a([119,105,100,101],{offset:4}))return{ext:"mov",mime:"video/quicktime"};if(a([82,73,70,70])&&a([65,86,73],{offset:8}))return{ext:"avi",mime:"video/x-msvideo"};if(a([48,38,178,117,142,102,207,17,166,217]))return{ext:"wmv",mime:"video/x-ms-wmv"};if(a([0,0,1,186]))return{ext:"mpg",mime:"video/mpeg"};for(let n=0;n<2&&n{var a1=[0,1,3,7,15,31,63,127,255],fr=function(e){this.stream=e,this.bitOffset=0,this.curByte=0,this.hasByte=!1};fr.prototype._ensureByte=function(){this.hasByte||(this.curByte=this.stream.readByte(),this.hasByte=!0)};fr.prototype.read=function(e){for(var t=0;e>0;){this._ensureByte();var a=8-this.bitOffset;if(e>=a)t<<=a,t|=a1[a]&this.curByte,this.hasByte=!1,this.bitOffset=0,e-=a;else{t<<=e;var n=a-e;t|=(this.curByte&a1[e]<>n,this.bitOffset+=e,e=0}}return t};fr.prototype.seek=function(e){var t=e%8,a=(e-t)/8;this.bitOffset=t,this.stream.seek(a),this.hasByte=!1};fr.prototype.pi=function(){var e=new Buffer(6),t;for(t=0;t{var hn=function(){};hn.prototype.readByte=function(){throw new Error("abstract method readByte() not implemented")};hn.prototype.read=function(e,t,a){for(var n=0;n{s1.exports=function(){var e=new Uint32Array([0,79764919,159529838,222504665,319059676,398814059,445009330,507990021,638119352,583659535,797628118,726387553,890018660,835552979,1015980042,944750013,1276238704,1221641927,1167319070,1095957929,1595256236,1540665371,1452775106,1381403509,1780037320,1859660671,1671105958,1733955601,2031960084,2111593891,1889500026,1952343757,2552477408,2632100695,2443283854,2506133561,2334638140,2414271883,2191915858,2254759653,3190512472,3135915759,3081330742,3009969537,2905550212,2850959411,2762807018,2691435357,3560074640,3505614887,3719321342,3648080713,3342211916,3287746299,3467911202,3396681109,4063920168,4143685023,4223187782,4286162673,3779000052,3858754371,3904687514,3967668269,881225847,809987520,1023691545,969234094,662832811,591600412,771767749,717299826,311336399,374308984,453813921,533576470,25881363,88864420,134795389,214552010,2023205639,2086057648,1897238633,1976864222,1804852699,1867694188,1645340341,1724971778,1587496639,1516133128,1461550545,1406951526,1302016099,1230646740,1142491917,1087903418,2896545431,2825181984,2770861561,2716262478,3215044683,3143675388,3055782693,3001194130,2326604591,2389456536,2200899649,2280525302,2578013683,2640855108,2418763421,2498394922,3769900519,3832873040,3912640137,3992402750,4088425275,4151408268,4197601365,4277358050,3334271071,3263032808,3476998961,3422541446,3585640067,3514407732,3694837229,3640369242,1762451694,1842216281,1619975040,1682949687,2047383090,2127137669,1938468188,2001449195,1325665622,1271206113,1183200824,1111960463,1543535498,1489069629,1434599652,1363369299,622672798,568075817,748617968,677256519,907627842,853037301,1067152940,995781531,51762726,131386257,177728840,240578815,269590778,349224269,429104020,491947555,4046411278,4126034873,4172115296,4234965207,3794477266,3874110821,3953728444,4016571915,3609705398,3555108353,3735388376,3664026991,3290680682,3236090077,3449943556,3378572211,3174993278,3120533705,3032266256,2961025959,2923101090,2868635157,2813903052,2742672763,2604032198,2683796849,2461293480,2524268063,2284983834,2364738477,2175806836,2238787779,1569362073,1498123566,1409854455,1355396672,1317987909,1246755826,1192025387,1137557660,2072149281,2135122070,1912620623,1992383480,1753615357,1816598090,1627664531,1707420964,295390185,358241886,404320391,483945776,43990325,106832002,186451547,266083308,932423249,861060070,1041341759,986742920,613929101,542559546,756411363,701822548,3316196985,3244833742,3425377559,3370778784,3601682597,3530312978,3744426955,3689838204,3819031489,3881883254,3928223919,4007849240,4037393693,4100235434,4180117107,4259748804,2310601993,2373574846,2151335527,2231098320,2596047829,2659030626,2470359227,2550115596,2947551409,2876312838,2788305887,2733848168,3165939309,3094707162,3040238851,2985771188]),t=function(){var a=4294967295;this.getCRC=function(){return~a>>>0},this.updateCRC=function(n){a=a<<8^e[(a>>>24^n)&255]},this.updateCRCRun=function(n,i){for(;i-- >0;)a=a<<8^e[(a>>>24^n)&255]}};return t}()});var c1=O((NH,oR)=>{oR.exports={name:"seek-bzip",version:"1.0.6",contributors:["C. Scott Ananian (http://cscott.net)","Eli Skeggs","Kevin Kwok","Rob Landley (http://landley.net)"],description:"a pure-JavaScript Node.JS module for random-access decoding bzip2 data",main:"./lib/index.js",repository:{type:"git",url:"https://github.com/cscott/seek-bzip.git"},license:"MIT",bin:{"seek-bunzip":"./bin/seek-bunzip","seek-table":"./bin/seek-bzip-table"},directories:{test:"test"},dependencies:{commander:"^2.8.1"},devDependencies:{fibers:"~1.0.6",mocha:"~2.2.5"},scripts:{test:"mocha"}}});var b1=O((jH,v1)=>{var sR=i1(),mr=o1(),f1=l1(),m1=c1(),rl=20,u1=258,p1=0,lR=1,cR=2,uR=6,pR=50,dR="314159265359",fR="177245385090",d1=function(e,t){var a=e[t],n;for(n=t;n>0;n--)e[n]=e[n-1];return e[0]=a,a},De={OK:0,LAST_BLOCK:-1,NOT_BZIP_DATA:-2,UNEXPECTED_INPUT_EOF:-3,UNEXPECTED_OUTPUT_EOF:-4,DATA_ERROR:-5,OUT_OF_MEMORY:-6,OBSOLETE_INPUT:-7,END_OF_BLOCK:-8},Da={};Da[De.LAST_BLOCK]="Bad file checksum";Da[De.NOT_BZIP_DATA]="Not bzip data";Da[De.UNEXPECTED_INPUT_EOF]="Unexpected input EOF";Da[De.UNEXPECTED_OUTPUT_EOF]="Unexpected output EOF";Da[De.DATA_ERROR]="Data error";Da[De.OUT_OF_MEMORY]="Out of memory";Da[De.OBSOLETE_INPUT]="Obsolete (pre 0.9.5) bzip format not supported.";var ut=function(e,t){var a=Da[e]||"unknown error";t&&(a+=": "+t);var n=new TypeError(a);throw n.errorCode=e,n},gt=function(e,t){this.writePos=this.writeCurrent=this.writeCount=0,this._start_bunzip(e,t)};gt.prototype._init_block=function(){var e=this._get_next_block();return e?(this.blockCRC=new f1,!0):(this.writeCount=-1,!1)};gt.prototype._start_bunzip=function(e,t){var a=new Buffer(4);(e.read(a,0,4)!==4||String.fromCharCode(a[0],a[1],a[2])!=="BZh")&&ut(De.NOT_BZIP_DATA,"bad magic");var n=a[3]-48;(n<1||n>9)&&ut(De.NOT_BZIP_DATA,"level out of range"),this.reader=new sR(e),this.dbufSize=1e5*n,this.nextoutput=0,this.outputStream=t,this.streamCRC=0};gt.prototype._get_next_block=function(){var e,t,a,n=this.reader,i=n.pi();if(i===fR)return!1;i!==dR&&ut(De.NOT_BZIP_DATA),this.targetBlockCRC=n.read(32)>>>0,this.streamCRC=(this.targetBlockCRC^(this.streamCRC<<1|this.streamCRC>>>31))>>>0,n.read(1)&&ut(De.OBSOLETE_INPUT);var r=n.read(24);r>this.dbufSize&&ut(De.DATA_ERROR,"initial position out of bounds");var o=n.read(16),s=new Buffer(256),l=0;for(e=0;e<16;e++)if(o&1<<15-e){var u=e*16;for(a=n.read(16),t=0;t<16;t++)a&1<<15-t&&(s[l++]=u+t)}var c=n.read(3);(cuR)&&ut(De.DATA_ERROR);var f=n.read(15);f===0&&ut(De.DATA_ERROR);var p=new Buffer(256);for(e=0;e=c&&ut(De.DATA_ERROR);b[e]=d1(p,t)}var d=l+2,m=[],h;for(t=0;trl)&&ut(De.DATA_ERROR),!!n.read(1);)n.read(1)?o--:o++;v[e]=o}var E,g;for(E=g=v[0],e=1;eg?g=v[e]:v[e]=f&&ut(De.DATA_ERROR),h=m[b[A++]]),e=h.minLen,t=n.read(e);e>h.maxLen&&ut(De.DATA_ERROR),!(t<=h.limit[e]);e++)t=t<<1|n.read(1);t-=h.base[e],(t<0||t>=u1)&&ut(De.DATA_ERROR);var F=h.permute[t];if(F===p1||F===lR){y||(y=1,o=0),F===p1?o+=y:o+=2*y,y<<=1;continue}if(y)for(y=0,S+o>this.dbufSize&&ut(De.DATA_ERROR),_=s[p[0]],C[_]+=o;o--;)P[S++]=_;if(F>l)break;S>=this.dbufSize&&ut(De.DATA_ERROR),e=F-1,_=d1(p,e),_=s[_],C[_]++,P[S++]=_}for((r<0||r>=S)&&ut(De.DATA_ERROR),t=0,e=0;e<256;e++)a=t+C[e],C[e]=t,t=a;for(e=0;e>=8,L=-1),this.writePos=B,this.writeCurrent=j,this.writeCount=S,this.writeRun=L,!0};gt.prototype._read_bunzip=function(e,t){var a,n,i;if(this.writeCount<0)return 0;for(var r=0,o=this.dbuf,s=this.writePos,l=this.writeCurrent,u=this.writeCount,c=this.outputsize,f=this.writeRun;u;){for(u--,n=l,s=o[s],l=s&255,s>>=8,f++===3?(a=l,i=n,l=-1):(a=1,i=l),this.blockCRC.updateCRCRun(i,a);a--;)this.outputStream.writeByte(i),this.nextoutput++;l!=n&&(f=0)}return this.writeCount=u,this.blockCRC.getCRC()!==this.targetBlockCRC&&ut(De.DATA_ERROR,"Bad block CRC (got "+this.blockCRC.getCRC().toString(16)+" expected "+this.targetBlockCRC.toString(16)+")"),this.nextoutput};var rd=function(e){if("readByte"in e)return e;var t=new mr;return t.pos=0,t.readByte=function(){return e[this.pos++]},t.seek=function(a){this.pos=a},t.eof=function(){return this.pos>=e.length},t},h1=function(e){var t=new mr,a=!0;if(e)if(typeof e=="number")t.buffer=new Buffer(e),a=!1;else{if("writeByte"in e)return e;t.buffer=e,a=!1}else t.buffer=new Buffer(16384);return t.pos=0,t.writeByte=function(n){if(a&&this.pos>=this.buffer.length){var i=new Buffer(this.buffer.length*2);this.buffer.copy(i),this.buffer=i}this.buffer[this.pos++]=n},t.getBuffer=function(){if(this.pos!==this.buffer.length){if(!a)throw new TypeError("outputsize does not match decoded input");var n=new Buffer(this.pos);this.buffer.copy(n,0,0,this.pos),this.buffer=n}return this.buffer},t._coerced=!0,t};gt.Err=De;gt.decode=function(e,t,a){for(var n=rd(e),i=h1(t),r=new gt(n,i);!("eof"in n&&n.eof());)if(r._init_block())r._read_bunzip();else{var o=r.reader.read(32)>>>0;if(o!==r.streamCRC&&ut(De.DATA_ERROR,"Bad stream CRC (got "+r.streamCRC.toString(16)+" expected "+o.toString(16)+")"),a&&"eof"in n&&!n.eof())r._start_bunzip(n,i);else break}if("getBuffer"in i)return i.getBuffer()};gt.decodeBlock=function(e,t,a){var n=rd(e),i=h1(a),r=new gt(n,i);r.reader.seek(t);var o=r._get_next_block();if(o&&(r.blockCRC=new f1,r.writeCopies=0,r._read_bunzip()),"getBuffer"in i)return i.getBuffer()};gt.table=function(e,t,a){var n=new mr;n.delegate=rd(e),n.pos=0,n.readByte=function(){return this.pos++,this.delegate.readByte()},n.delegate.eof&&(n.eof=n.delegate.eof.bind(n.delegate));var i=new mr;i.pos=0,i.writeByte=function(){this.pos++};for(var r=new gt(n,i),o=r.dbufSize;!("eof"in n&&n.eof());){var s=n.pos*8+r.reader.bitOffset;if(r.reader.hasByte&&(s-=8),r._init_block()){var l=i.pos;r._read_bunzip(),t(s,i.pos-l)}else{var u=r.reader.read(32);if(a&&"eof"in n&&!n.eof())r._start_bunzip(n,i),console.assert(r.dbufSize===o,"shouldn't change block size within multistream file");else break}}};gt.Stream=mr;gt.version=m1.version;gt.license=m1.license;v1.exports=gt});var y1=O((g1,x1)=>{var mR=require("stream");g1=x1.exports=od;od.through=od;function od(e,t,a){e=e||function(c){this.queue(c)},t=t||function(){this.queue(null)};var n=!1,i=!1,r=[],o=!1,s=new mR;s.readable=s.writable=!0,s.paused=!1,s.autoDestroy=!(a&&a.autoDestroy===!1),s.write=function(c){return e.call(this,c),!s.paused};function l(){for(;r.length&&!s.paused;){var c=r.shift();if(c===null)return s.emit("end");s.emit("data",c)}}s.queue=s.push=function(c){return o||(c===null&&(o=!0),r.push(c),l()),s},s.on("end",function(){s.readable=!1,!s.writable&&s.autoDestroy&&process.nextTick(function(){s.destroy()})});function u(){s.writable=!1,t.call(s),!s.readable&&s.autoDestroy&&s.destroy()}return s.end=function(c){if(!n)return n=!0,arguments.length&&s.write(c),u(),s},s.destroy=function(){if(!i)return i=!0,n=!0,r.length=0,s.writable=s.readable=!1,s.emit("close"),s},s.pause=function(){if(!s.paused)return s.paused=!0,s},s.resume=function(){return s.paused&&(s.paused=!1,s.emit("resume")),l(),s.paused||s.emit("drain"),s},s}});var E1=O((LH,w1)=>{function sd(e){this.name="Bzip2Error",this.message=e,this.stack=new Error().stack}sd.prototype=new Error;var pt={Error:function(e){throw new sd(e)}},na={};na.Bzip2Error=sd;na.crcTable=[0,79764919,159529838,222504665,319059676,398814059,445009330,507990021,638119352,583659535,797628118,726387553,890018660,835552979,1015980042,944750013,1276238704,1221641927,1167319070,1095957929,1595256236,1540665371,1452775106,1381403509,1780037320,1859660671,1671105958,1733955601,2031960084,2111593891,1889500026,1952343757,2552477408,2632100695,2443283854,2506133561,2334638140,2414271883,2191915858,2254759653,3190512472,3135915759,3081330742,3009969537,2905550212,2850959411,2762807018,2691435357,3560074640,3505614887,3719321342,3648080713,3342211916,3287746299,3467911202,3396681109,4063920168,4143685023,4223187782,4286162673,3779000052,3858754371,3904687514,3967668269,881225847,809987520,1023691545,969234094,662832811,591600412,771767749,717299826,311336399,374308984,453813921,533576470,25881363,88864420,134795389,214552010,2023205639,2086057648,1897238633,1976864222,1804852699,1867694188,1645340341,1724971778,1587496639,1516133128,1461550545,1406951526,1302016099,1230646740,1142491917,1087903418,2896545431,2825181984,2770861561,2716262478,3215044683,3143675388,3055782693,3001194130,2326604591,2389456536,2200899649,2280525302,2578013683,2640855108,2418763421,2498394922,3769900519,3832873040,3912640137,3992402750,4088425275,4151408268,4197601365,4277358050,3334271071,3263032808,3476998961,3422541446,3585640067,3514407732,3694837229,3640369242,1762451694,1842216281,1619975040,1682949687,2047383090,2127137669,1938468188,2001449195,1325665622,1271206113,1183200824,1111960463,1543535498,1489069629,1434599652,1363369299,622672798,568075817,748617968,677256519,907627842,853037301,1067152940,995781531,51762726,131386257,177728840,240578815,269590778,349224269,429104020,491947555,4046411278,4126034873,4172115296,4234965207,3794477266,3874110821,3953728444,4016571915,3609705398,3555108353,3735388376,3664026991,3290680682,3236090077,3449943556,3378572211,3174993278,3120533705,3032266256,2961025959,2923101090,2868635157,2813903052,2742672763,2604032198,2683796849,2461293480,2524268063,2284983834,2364738477,2175806836,2238787779,1569362073,1498123566,1409854455,1355396672,1317987909,1246755826,1192025387,1137557660,2072149281,2135122070,1912620623,1992383480,1753615357,1816598090,1627664531,1707420964,295390185,358241886,404320391,483945776,43990325,106832002,186451547,266083308,932423249,861060070,1041341759,986742920,613929101,542559546,756411363,701822548,3316196985,3244833742,3425377559,3370778784,3601682597,3530312978,3744426955,3689838204,3819031489,3881883254,3928223919,4007849240,4037393693,4100235434,4180117107,4259748804,2310601993,2373574846,2151335527,2231098320,2596047829,2659030626,2470359227,2550115596,2947551409,2876312838,2788305887,2733848168,3165939309,3094707162,3040238851,2985771188];na.array=function(e){var t=0,a=0,n=[0,1,3,7,15,31,63,127,255];return function(i){for(var r=0;i>0;){var o=8-t;i>=o?(r<<=o,r|=n[o]&e[a++],t=0,i-=o):(r<<=i,r|=(e[a]&n[i]<<8-i-t)>>8-i-t,t+=i,i=0)}return r}};na.simple=function(e,t){var a=na.array(e),n=na.header(a),i=!1,r=1e5*n,o=new Int32Array(r);do i=na.decompress(a,t,o,r);while(!i)};na.header=function(e){this.byteCount=new Int32Array(256),this.symToByte=new Uint8Array(256),this.mtfSymbol=new Int32Array(256),this.selectors=new Uint8Array(32768),e(8*3)!=4348520&&pt.Error("No magic number found");var t=e(8)-48;return(t<1||t>9)&&pt.Error("Not a BZIP archive"),t};na.decompress=function(e,t,a,n,i){for(var r=20,o=258,s=0,l=1,u=50,c=-1,f="",p=0;p<6;p++)f+=e(8).toString(16);if(f=="177245385090"){var b=e(32)|0;return b!==i&&pt.Error("Error in bzip2: crc32 do not match"),e(null),null}f!="314159265359"&&pt.Error("eek not valid bzip data");var d=e(32)|0;e(1)&&pt.Error("unsupported obsolete version");var m=e(24);m>n&&pt.Error("Initial position larger than buffer size");var h=e(16),v=0;for(p=0;p<16;p++)if(h&1<<15-p){var x=e(16);for(D=0;D<16;D++)x&1<<15-D&&(this.symToByte[v++]=16*p+D)}var E=e(3);(E<2||E>6)&&pt.Error("another error");var g=e(15);g==0&&pt.Error("meh");for(var p=0;p=E&&pt.Error("whoops another error");for(var w=this.mtfSymbol[D],x=D-1;x>=0;x--)this.mtfSymbol[x+1]=this.mtfSymbol[x];this.mtfSymbol[0]=w,this.selectors[p]=w}for(var T=v+2,C=[],y=new Uint8Array(o),S=new Uint16Array(r+1),A,D=0;Dr)&&pt.Error("I gave up a while ago on writing error messages"),!!e(1);)e(1)?h--:h++;y[p]=h}var _,P;_=P=y[0];for(var p=1;pP?P=y[p]:y[p]<_&&(_=y[p]);A=C[D]={},A.permute=new Int32Array(o),A.limit=new Int32Array(r+1),A.base=new Int32Array(r+1),A.minLen=_,A.maxLen=P;for(var F=A.base,B=A.limit,j=0,p=_;p<=P;p++)for(var h=0;h=g&&pt.Error("meow i'm a kitty, that's an error"),A=C[this.selectors[N++]],F=A.base,B=A.limit),p=A.minLen,D=e(p);p>A.maxLen&&pt.Error("rawr i'm a dinosaur"),!(D<=B[p]);)p++,D=D<<1|e(1);D-=F[p],(D<0||D>=o)&&pt.Error("moo i'm a cow");var M=A.permute[D];if(M==s||M==l){L||(L=1,h=0),M==s?h+=L:h+=2*L,L<<=1;continue}if(L)for(L=0,k+h>n&&pt.Error("Boom."),w=this.symToByte[this.mtfSymbol[0]],this.byteCount[w]+=h;h--;)a[k++]=w;if(M>v)break;k>=n&&pt.Error("I can't think of anything. Error"),p=M-1,w=this.mtfSymbol[p];for(var x=p-1;x>=0;x--)this.mtfSymbol[x+1]=this.mtfSymbol[x];this.mtfSymbol[0]=w,w=this.symToByte[w],this.byteCount[w]++,a[k++]=w}(m<0||m>=k)&&pt.Error("I'm a monkey and I'm throwing something at someone, namely you");for(var D=0,p=0;p<256;p++)x=D+this.byteCount[p],this.byteCount[p]=D,D=x;for(var p=0;p>=8,Z=-1),k=k;for(var pe,fe,ee;k;){for(k--,fe=q,V=a[V],q=V&255,V>>=8,Z++==3?(pe=q,ee=fe,q=-1):(pe=1,ee=q);pe--;)c=(c<<8^this.crcTable[(c>>24^ee)&255])&4294967295,t(ee);q!=fe&&(Z=0)}return c=(c^-1)>>>0,(c|0)!=(d|0)&&pt.Error("Error in bzip2: crc32 do not match"),i=(c^(i<<1|i>>>31))&4294967295,i};w1.exports=na});var A1=O((MH,C1)=>{var S1=[0,1,3,7,15,31,63,127,255];C1.exports=function(t){var a=0,n=0,i=t(),r=function(o){if(o===null&&a!=0){a=0,n++;return}for(var s=0;o>0;){n>=i.length&&(n=0,i=t());var l=8-a;a===0&&o>0&&r.bytesRead++,o>=l?(s<<=l,s|=S1[l]&i[n++],a=0,o-=l):(s<<=o,s|=(i[n]&S1[o]<<8-o-a)>>8-o-a,a+=o,o=0)}return s};return r.bytesRead=0,r}});var T1=O((DH,_1)=>{var hR=y1(),I1=E1(),vR=A1();_1.exports=bR;function bR(){var e=[],t=0,a=0,n=!1,i=!1,r=null,o=null;function s(c){if(a){var f=1e5*a,p=new Int32Array(f),b=[],d=function(m){b.push(m)};return o=I1.decompress(r,d,p,f,o),o===null?(a=0,!1):(c(Buffer.from(b)),!0)}else return a=I1.header(r),o=0,!0}var l=0;function u(c){if(!n)try{return s(function(f){c.queue(f),f!==null&&(l+=f.length)})}catch(f){return c.emit("error",f),n=!0,!1}}return hR(function(f){for(e.push(f),t+=f.length,r===null&&(r=vR(function(){return e.shift()}));!n&&t-r.bytesRead+1>=(25e3+1e5*a||4);)u(this)},function(f){for(;!n&&r&&t>r.bytesRead;)u(this);n||(o!==null&&this.emit("error",new Error("input stream ended prematurely")),this.queue(null))})}});var O1=O((zH,P1)=>{"use strict";var k1=il(),F1=t1(),gR=Ds(),xR=b1(),yR=T1();P1.exports=()=>e=>!Buffer.isBuffer(e)&&!gR(e)?Promise.reject(new TypeError(`Expected a Buffer or Stream, got ${typeof e}`)):Buffer.isBuffer(e)&&(!F1(e)||F1(e).ext!=="bz2")?Promise.resolve([]):Buffer.isBuffer(e)?k1()(xR.decode(e)):k1()(e.pipe(yR()))});var B1=O((GH,R1)=>{"use strict";R1.exports=e=>{let t=new Uint8Array(e);if(!(t&&t.length>1))return null;let a=(n,i)=>{i=Object.assign({offset:0},i);for(let r=0;rs[o]===66&&s[o+1]===130);if(i>=0){let r=i+3,o=s=>Array.from(s).every((l,u)=>n[r+u]===l.charCodeAt(0));if(o("matroska"))return{ext:"mkv",mime:"video/x-matroska"};if(o("webm"))return{ext:"webm",mime:"video/webm"}}}return a([0,0,0,20,102,116,121,112,113,116,32,32])||a([102,114,101,101],{offset:4})||a([102,116,121,112,113,116,32,32],{offset:4})||a([109,100,97,116],{offset:4})||a([119,105,100,101],{offset:4})?{ext:"mov",mime:"video/quicktime"}:a([82,73,70,70])&&a([65,86,73],{offset:8})?{ext:"avi",mime:"video/x-msvideo"}:a([48,38,178,117,142,102,207,17,166,217])?{ext:"wmv",mime:"video/x-ms-wmv"}:a([0,0,1,186])?{ext:"mpg",mime:"video/mpeg"}:a([73,68,51])||a([255,251])?{ext:"mp3",mime:"audio/mpeg"}:a([102,116,121,112,77,52,65],{offset:4})||a([77,52,65,32])?{ext:"m4a",mime:"audio/m4a"}:a([79,112,117,115,72,101,97,100],{offset:28})?{ext:"opus",mime:"audio/opus"}:a([79,103,103,83])?{ext:"ogg",mime:"audio/ogg"}:a([102,76,97,67])?{ext:"flac",mime:"audio/x-flac"}:a([82,73,70,70])&&a([87,65,86,69],{offset:8})?{ext:"wav",mime:"audio/x-wav"}:a([35,33,65,77,82,10])?{ext:"amr",mime:"audio/amr"}:a([37,80,68,70])?{ext:"pdf",mime:"application/pdf"}:a([77,90])?{ext:"exe",mime:"application/x-msdownload"}:(t[0]===67||t[0]===70)&&a([87,83],{offset:1})?{ext:"swf",mime:"application/x-shockwave-flash"}:a([123,92,114,116,102])?{ext:"rtf",mime:"application/rtf"}:a([0,97,115,109])?{ext:"wasm",mime:"application/wasm"}:a([119,79,70,70])&&(a([0,1,0,0],{offset:4})||a([79,84,84,79],{offset:4}))?{ext:"woff",mime:"font/woff"}:a([119,79,70,50])&&(a([0,1,0,0],{offset:4})||a([79,84,84,79],{offset:4}))?{ext:"woff2",mime:"font/woff2"}:a([76,80],{offset:34})&&(a([0,0,1],{offset:8})||a([1,0,2],{offset:8})||a([2,0,2],{offset:8}))?{ext:"eot",mime:"application/octet-stream"}:a([0,1,0,0,0])?{ext:"ttf",mime:"font/ttf"}:a([79,84,84,79,0])?{ext:"otf",mime:"font/otf"}:a([0,0,1,0])?{ext:"ico",mime:"image/x-icon"}:a([70,76,86,1])?{ext:"flv",mime:"video/x-flv"}:a([37,33])?{ext:"ps",mime:"application/postscript"}:a([253,55,122,88,90,0])?{ext:"xz",mime:"application/x-xz"}:a([83,81,76,105])?{ext:"sqlite",mime:"application/x-sqlite3"}:a([78,69,83,26])?{ext:"nes",mime:"application/x-nintendo-nes-rom"}:a([67,114,50,52])?{ext:"crx",mime:"application/x-google-chrome-extension"}:a([77,83,67,70])||a([73,83,99,40])?{ext:"cab",mime:"application/vnd.ms-cab-compressed"}:a([33,60,97,114,99,104,62,10,100,101,98,105,97,110,45,98,105,110,97,114,121])?{ext:"deb",mime:"application/x-deb"}:a([33,60,97,114,99,104,62])?{ext:"ar",mime:"application/x-unix-archive"}:a([237,171,238,219])?{ext:"rpm",mime:"application/x-rpm"}:a([31,160])||a([31,157])?{ext:"Z",mime:"application/x-compress"}:a([76,90,73,80])?{ext:"lz",mime:"application/x-lzip"}:a([208,207,17,224,161,177,26,225])?{ext:"msi",mime:"application/x-msi"}:a([6,14,43,52,2,5,1,1,13,1,2,1,1,2])?{ext:"mxf",mime:"application/mxf"}:a([71],{offset:4})&&(a([71],{offset:192})||a([71],{offset:196}))?{ext:"mts",mime:"video/mp2t"}:a([66,76,69,78,68,69,82])?{ext:"blend",mime:"application/x-blender"}:a([66,80,71,251])?{ext:"bpg",mime:"image/bpg"}:null}});var L1=O((HH,j1)=>{"use strict";var wR=require("zlib"),ER=il(),N1=B1(),SR=Ds();j1.exports=()=>e=>{if(!Buffer.isBuffer(e)&&!SR(e))return Promise.reject(new TypeError(`Expected a Buffer or Stream, got ${typeof e}`));if(Buffer.isBuffer(e)&&(!N1(e)||N1(e).ext!=="gz"))return Promise.resolve([]);let t=wR.createGunzip(),a=ER()(t);return Buffer.isBuffer(e)?t.end(e):e.pipe(t),a}});var D1=O((WH,M1)=>{"use strict";M1.exports=function(e){return e&&e.length>1?e[0]===255&&e[1]===216&&e[2]===255?{ext:"jpg",mime:"image/jpeg"}:e[0]===137&&e[1]===80&&e[2]===78&&e[3]===71?{ext:"png",mime:"image/png"}:e[0]===71&&e[1]===73&&e[2]===70?{ext:"gif",mime:"image/gif"}:e[8]===87&&e[9]===69&&e[10]===66&&e[11]===80?{ext:"webp",mime:"image/webp"}:e[0]===70&&e[1]===76&&e[2]===73&&e[3]===70?{ext:"flif",mime:"image/flif"}:(e[0]===73&&e[1]===73&&e[2]===42&&e[3]===0||e[0]===77&&e[1]===77&&e[2]===0&&e[3]===42)&&e[8]===67&&e[9]===82?{ext:"cr2",mime:"image/x-canon-cr2"}:e[0]===73&&e[1]===73&&e[2]===42&&e[3]===0||e[0]===77&&e[1]===77&&e[2]===0&&e[3]===42?{ext:"tif",mime:"image/tiff"}:e[0]===66&&e[1]===77?{ext:"bmp",mime:"image/bmp"}:e[0]===73&&e[1]===73&&e[2]===188?{ext:"jxr",mime:"image/vnd.ms-photo"}:e[0]===56&&e[1]===66&&e[2]===80&&e[3]===83?{ext:"psd",mime:"image/vnd.adobe.photoshop"}:e[0]===80&&e[1]===75&&e[2]===3&&e[3]===4&&e[30]===109&&e[31]===105&&e[32]===109&&e[33]===101&&e[34]===116&&e[35]===121&&e[36]===112&&e[37]===101&&e[38]===97&&e[39]===112&&e[40]===112&&e[41]===108&&e[42]===105&&e[43]===99&&e[44]===97&&e[45]===116&&e[46]===105&&e[47]===111&&e[48]===110&&e[49]===47&&e[50]===101&&e[51]===112&&e[52]===117&&e[53]===98&&e[54]===43&&e[55]===122&&e[56]===105&&e[57]===112?{ext:"epub",mime:"application/epub+zip"}:e[0]===80&&e[1]===75&&e[2]===3&&e[3]===4&&e[30]===77&&e[31]===69&&e[32]===84&&e[33]===65&&e[34]===45&&e[35]===73&&e[36]===78&&e[37]===70&&e[38]===47&&e[39]===109&&e[40]===111&&e[41]===122&&e[42]===105&&e[43]===108&&e[44]===108&&e[45]===97&&e[46]===46&&e[47]===114&&e[48]===115&&e[49]===97?{ext:"xpi",mime:"application/x-xpinstall"}:e[0]===80&&e[1]===75&&(e[2]===3||e[2]===5||e[2]===7)&&(e[3]===4||e[3]===6||e[3]===8)?{ext:"zip",mime:"application/zip"}:e[257]===117&&e[258]===115&&e[259]===116&&e[260]===97&&e[261]===114?{ext:"tar",mime:"application/x-tar"}:e[0]===82&&e[1]===97&&e[2]===114&&e[3]===33&&e[4]===26&&e[5]===7&&(e[6]===0||e[6]===1)?{ext:"rar",mime:"application/x-rar-compressed"}:e[0]===31&&e[1]===139&&e[2]===8?{ext:"gz",mime:"application/gzip"}:e[0]===66&&e[1]===90&&e[2]===104?{ext:"bz2",mime:"application/x-bzip2"}:e[0]===55&&e[1]===122&&e[2]===188&&e[3]===175&&e[4]===39&&e[5]===28?{ext:"7z",mime:"application/x-7z-compressed"}:e[0]===120&&e[1]===1?{ext:"dmg",mime:"application/x-apple-diskimage"}:e[0]===0&&e[1]===0&&e[2]===0&&(e[3]===24||e[3]===32)&&e[4]===102&&e[5]===116&&e[6]===121&&e[7]===112||e[0]===51&&e[1]===103&&e[2]===112&&e[3]===53||e[0]===0&&e[1]===0&&e[2]===0&&e[3]===28&&e[4]===102&&e[5]===116&&e[6]===121&&e[7]===112&&e[8]===109&&e[9]===112&&e[10]===52&&e[11]===50&&e[16]===109&&e[17]===112&&e[18]===52&&e[19]===49&&e[20]===109&&e[21]===112&&e[22]===52&&e[23]===50&&e[24]===105&&e[25]===115&&e[26]===111&&e[27]===109||e[0]===0&&e[1]===0&&e[2]===0&&e[3]===28&&e[4]===102&&e[5]===116&&e[6]===121&&e[7]===112&&e[8]===105&&e[9]===115&&e[10]===111&&e[11]===109||e[0]===0&&e[1]===0&&e[2]===0&&e[3]===28&&e[4]===102&&e[5]===116&&e[6]===121&&e[7]===112&&e[8]===109&&e[9]===112&&e[10]===52&&e[11]===50&&e[12]===0&&e[13]===0&&e[14]===0&&e[15]===0?{ext:"mp4",mime:"video/mp4"}:e[0]===0&&e[1]===0&&e[2]===0&&e[3]===28&&e[4]===102&&e[5]===116&&e[6]===121&&e[7]===112&&e[8]===77&&e[9]===52&&e[10]===86?{ext:"m4v",mime:"video/x-m4v"}:e[0]===77&&e[1]===84&&e[2]===104&&e[3]===100?{ext:"mid",mime:"audio/midi"}:e[31]===109&&e[32]===97&&e[33]===116&&e[34]===114&&e[35]===111&&e[36]===115&&e[37]===107&&e[38]===97?{ext:"mkv",mime:"video/x-matroska"}:e[0]===26&&e[1]===69&&e[2]===223&&e[3]===163?{ext:"webm",mime:"video/webm"}:e[0]===0&&e[1]===0&&e[2]===0&&e[3]===20&&e[4]===102&&e[5]===116&&e[6]===121&&e[7]===112?{ext:"mov",mime:"video/quicktime"}:e[0]===82&&e[1]===73&&e[2]===70&&e[3]===70&&e[8]===65&&e[9]===86&&e[10]===73?{ext:"avi",mime:"video/x-msvideo"}:e[0]===48&&e[1]===38&&e[2]===178&&e[3]===117&&e[4]===142&&e[5]===102&&e[6]===207&&e[7]===17&&e[8]===166&&e[9]===217?{ext:"wmv",mime:"video/x-ms-wmv"}:e[0]===0&&e[1]===0&&e[2]===1&&e[3].toString(16)[0]==="b"?{ext:"mpg",mime:"video/mpeg"}:e[0]===73&&e[1]===68&&e[2]===51||e[0]===255&&e[1]===251?{ext:"mp3",mime:"audio/mpeg"}:e[4]===102&&e[5]===116&&e[6]===121&&e[7]===112&&e[8]===77&&e[9]===52&&e[10]===65||e[0]===77&&e[1]===52&&e[2]===65&&e[3]===32?{ext:"m4a",mime:"audio/m4a"}:e[28]===79&&e[29]===112&&e[30]===117&&e[31]===115&&e[32]===72&&e[33]===101&&e[34]===97&&e[35]===100?{ext:"opus",mime:"audio/opus"}:e[0]===79&&e[1]===103&&e[2]===103&&e[3]===83?{ext:"ogg",mime:"audio/ogg"}:e[0]===102&&e[1]===76&&e[2]===97&&e[3]===67?{ext:"flac",mime:"audio/x-flac"}:e[0]===82&&e[1]===73&&e[2]===70&&e[3]===70&&e[8]===87&&e[9]===65&&e[10]===86&&e[11]===69?{ext:"wav",mime:"audio/x-wav"}:e[0]===35&&e[1]===33&&e[2]===65&&e[3]===77&&e[4]===82&&e[5]===10?{ext:"amr",mime:"audio/amr"}:e[0]===37&&e[1]===80&&e[2]===68&&e[3]===70?{ext:"pdf",mime:"application/pdf"}:e[0]===77&&e[1]===90?{ext:"exe",mime:"application/x-msdownload"}:(e[0]===67||e[0]===70)&&e[1]===87&&e[2]===83?{ext:"swf",mime:"application/x-shockwave-flash"}:e[0]===123&&e[1]===92&&e[2]===114&&e[3]===116&&e[4]===102?{ext:"rtf",mime:"application/rtf"}:e[0]===119&&e[1]===79&&e[2]===70&&e[3]===70&&(e[4]===0&&e[5]===1&&e[6]===0&&e[7]===0||e[4]===79&&e[5]===84&&e[6]===84&&e[7]===79)?{ext:"woff",mime:"application/font-woff"}:e[0]===119&&e[1]===79&&e[2]===70&&e[3]===50&&(e[4]===0&&e[5]===1&&e[6]===0&&e[7]===0||e[4]===79&&e[5]===84&&e[6]===84&&e[7]===79)?{ext:"woff2",mime:"application/font-woff"}:e[34]===76&&e[35]===80&&(e[8]===0&&e[9]===0&&e[10]===1||e[8]===1&&e[9]===0&&e[10]===2||e[8]===2&&e[9]===0&&e[10]===2)?{ext:"eot",mime:"application/octet-stream"}:e[0]===0&&e[1]===1&&e[2]===0&&e[3]===0&&e[4]===0?{ext:"ttf",mime:"application/font-sfnt"}:e[0]===79&&e[1]===84&&e[2]===84&&e[3]===79&&e[4]===0?{ext:"otf",mime:"application/font-sfnt"}:e[0]===0&&e[1]===0&&e[2]===1&&e[3]===0?{ext:"ico",mime:"image/x-icon"}:e[0]===70&&e[1]===76&&e[2]===86&&e[3]===1?{ext:"flv",mime:"video/x-flv"}:e[0]===37&&e[1]===33?{ext:"ps",mime:"application/postscript"}:e[0]===253&&e[1]===55&&e[2]===122&&e[3]===88&&e[4]===90&&e[5]===0?{ext:"xz",mime:"application/x-xz"}:e[0]===83&&e[1]===81&&e[2]===76&&e[3]===105?{ext:"sqlite",mime:"application/x-sqlite3"}:e[0]===78&&e[1]===69&&e[2]===83&&e[3]===26?{ext:"nes",mime:"application/x-nintendo-nes-rom"}:e[0]===67&&e[1]===114&&e[2]===50&&e[3]===52?{ext:"crx",mime:"application/x-google-chrome-extension"}:e[0]===77&&e[1]===83&&e[2]===67&&e[3]===70||e[0]===73&&e[1]===83&&e[2]===99&&e[3]===40?{ext:"cab",mime:"application/vnd.ms-cab-compressed"}:e[0]===33&&e[1]===60&&e[2]===97&&e[3]===114&&e[4]===99&&e[5]===104&&e[6]===62&&e[7]===10&&e[8]===100&&e[9]===101&&e[10]===98&&e[11]===105&&e[12]===97&&e[13]===110&&e[14]===45&&e[15]===98&&e[16]===105&&e[17]===110&&e[18]===97&&e[19]===114&&e[20]===121?{ext:"deb",mime:"application/x-deb"}:e[0]===33&&e[1]===60&&e[2]===97&&e[3]===114&&e[4]===99&&e[5]===104&&e[6]===62?{ext:"ar",mime:"application/x-unix-archive"}:e[0]===237&&e[1]===171&&e[2]===238&&e[3]===219?{ext:"rpm",mime:"application/x-rpm"}:e[0]===31&&e[1]===160||e[0]===31&&e[1]===157?{ext:"Z",mime:"application/x-compress"}:e[0]===76&&e[1]===90&&e[2]===73&&e[3]===80?{ext:"lz",mime:"application/x-lzip"}:e[0]===208&&e[1]===207&&e[2]===17&&e[3]===224&&e[4]===161&&e[5]===177&&e[6]===26&&e[7]===225?{ext:"msi",mime:"application/x-msi"}:null:null}});var Z1=O((VH,J1)=>{"use strict";var cd="pending",z1="settled",ol="fulfilled",sl="rejected",CR=function(){},G1=typeof global!="undefined"&&typeof global.process!="undefined"&&typeof global.process.emit=="function",AR=typeof setImmediate=="undefined"?setTimeout:setImmediate,hr=[],ld;function IR(){for(var e=0;e{"use strict";q1.exports=typeof Promise=="function"?Promise:Z1()});var cl=O((JH,Y1)=>{"use strict";var $1=Object.getOwnPropertySymbols,PR=Object.prototype.hasOwnProperty,OR=Object.prototype.propertyIsEnumerable;function RR(e){if(e==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}function BR(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de",Object.getOwnPropertyNames(e)[0]==="5")return!1;for(var t={},a=0;a<10;a++)t["_"+String.fromCharCode(a)]=a;var n=Object.getOwnPropertyNames(t).map(function(r){return t[r]});if(n.join("")!=="0123456789")return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach(function(r){i[r]=r}),Object.keys(Object.assign({},i)).join("")==="abcdefghijklmnopqrst"}catch(r){return!1}}Y1.exports=BR()?Object.assign:function(e,t){for(var a,n=RR(e),i,r=1;r{var NR=require("stream").PassThrough,jR=cl();K1.exports=function(e){e=jR({},e);var t=e.array,a=e.encoding,n=a==="buffer",i=!1;t?i=!(a||n):a=a||"utf8",n&&(a=null);var r=0,o=[],s=new NR({objectMode:i});return a&&s.setEncoding(a),s.on("data",function(l){o.push(l),i?r=o.length:r+=l.length}),s.getBufferedValue=function(){return t?o:n?Buffer.concat(o,r):o.join("")},s.getBufferedLength=function(){return r},s}});var tE=O((qH,ul)=>{"use strict";var eE=X1(),pd=cl(),LR=Q1();function dd(e,t){if(!e)return eE.reject(new Error("Expected a stream"));t=pd({maxBuffer:1/0},t);var a=t.maxBuffer,n,i,r=new eE(function(o,s){n=LR(t),e.once("error",l),e.pipe(n),n.on("data",function(){n.getBufferedLength()>a&&s(new Error("maxBuffer exceeded"))}),n.once("error",l),n.on("end",o),i=function(){e.unpipe&&e.unpipe(n)};function l(u){u&&(u.bufferedData=n.getBufferedValue()),s(u)}});return r.then(i,i),r.then(function(){return n.getBufferedValue()})}ul.exports=dd;ul.exports.buffer=function(e,t){return dd(e,pd({},t,{encoding:"buffer"}))};ul.exports.array=function(e,t){return dd(e,pd({},t,{array:!0}))}});var rE=O((XH,iE)=>{"use strict";var aE=function(e,t,a){return function(){for(var n=this,i=new Array(arguments.length),r=0;r{lE.exports=pl;function pl(){this.pending=0,this.max=1/0,this.listeners=[],this.waiting=[],this.error=null}pl.prototype.go=function(e){this.pending0&&e.pending{var br=require("fs"),dl=require("util"),fd=require("stream"),uE=fd.Readable,md=fd.Writable,MR=fd.PassThrough,DR=cE(),fl=require("events").EventEmitter;gr.createFromBuffer=zR;gr.createFromFd=GR;gr.BufferSlicer=Ea;gr.FdSlicer=wa;dl.inherits(wa,fl);function wa(e,t){t=t||{},fl.call(this),this.fd=e,this.pend=new DR,this.pend.max=1,this.refCount=0,this.autoClose=!!t.autoClose}wa.prototype.read=function(e,t,a,n,i){var r=this;r.pend.go(function(o){br.read(r.fd,e,t,a,n,function(s,l,u){o(),i(s,l,u)})})};wa.prototype.write=function(e,t,a,n,i){var r=this;r.pend.go(function(o){br.write(r.fd,e,t,a,n,function(s,l,u){o(),i(s,l,u)})})};wa.prototype.createReadStream=function(e){return new ml(this,e)};wa.prototype.createWriteStream=function(e){return new hl(this,e)};wa.prototype.ref=function(){this.refCount+=1};wa.prototype.unref=function(){var e=this;if(e.refCount-=1,e.refCount>0)return;if(e.refCount<0)throw new Error("invalid unref");e.autoClose&&br.close(e.fd,t);function t(a){a?e.emit("error",a):e.emit("close")}};dl.inherits(ml,uE);function ml(e,t){t=t||{},uE.call(this,t),this.context=e,this.context.ref(),this.start=t.start||0,this.endOffset=t.end,this.pos=this.start,this.destroyed=!1}ml.prototype._read=function(e){var t=this;if(!t.destroyed){var a=Math.min(t._readableState.highWaterMark,e);if(t.endOffset!=null&&(a=Math.min(a,t.endOffset-t.pos)),a<=0){t.destroyed=!0,t.push(null),t.context.unref();return}t.context.pend.go(function(n){if(t.destroyed)return n();var i=new Buffer(a);br.read(t.context.fd,i,0,a,t.pos,function(r,o){r?t.destroy(r):o===0?(t.destroyed=!0,t.push(null),t.context.unref()):(t.pos+=o,t.push(i.slice(0,o))),n()})})}};ml.prototype.destroy=function(e){this.destroyed||(e=e||new Error("stream destroyed"),this.destroyed=!0,this.emit("error",e),this.context.unref())};dl.inherits(hl,md);function hl(e,t){t=t||{},md.call(this,t),this.context=e,this.context.ref(),this.start=t.start||0,this.endOffset=t.end==null?1/0:+t.end,this.bytesWritten=0,this.pos=this.start,this.destroyed=!1,this.on("finish",this.destroy.bind(this))}hl.prototype._write=function(e,t,a){var n=this;if(!n.destroyed){if(n.pos+e.length>n.endOffset){var i=new Error("maximum file length exceeded");i.code="ETOOBIG",n.destroy(),a(i);return}n.context.pend.go(function(r){if(n.destroyed)return r();br.write(n.context.fd,e,0,e.length,n.pos,function(o,s){o?(n.destroy(),r(),a(o)):(n.bytesWritten+=s,n.pos+=s,n.emit("progress"),r(),a())})})}};hl.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.context.unref())};dl.inherits(Ea,fl);function Ea(e,t){fl.call(this),t=t||{},this.refCount=0,this.buffer=e,this.maxChunkSize=t.maxChunkSize||Number.MAX_SAFE_INTEGER}Ea.prototype.read=function(e,t,a,n,i){var r=n+a,o=r-this.buffer.length,s=o>0?o:a;this.buffer.copy(e,t,n,r),setImmediate(function(){i(null,s)})};Ea.prototype.write=function(e,t,a,n,i){e.copy(this.buffer,n,t,t+a),setImmediate(function(){i(null,a,e)})};Ea.prototype.createReadStream=function(e){e=e||{};var t=new MR(e);t.destroyed=!1,t.start=e.start||0,t.endOffset=e.end,t.pos=t.endOffset||this.buffer.length;for(var a=this.buffer.slice(t.start,t.pos),n=0;;){var i=n+this.maxChunkSize;if(i>=a.length){na.endOffset){var s=new Error("maximum file length exceeded");s.code="ETOOBIG",a.destroyed=!0,r(s);return}n.copy(t.buffer,a.pos,0,n.length),a.bytesWritten+=n.length,a.pos=o,a.emit("progress"),r()}},a.destroy=function(){a.destroyed=!0},a};Ea.prototype.ref=function(){this.refCount+=1};Ea.prototype.unref=function(){if(this.refCount-=1,this.refCount<0)throw new Error("invalid unref")};function zR(e,t){return new Ea(e,t)}function GR(e,t){return new wa(e,t)}});var mE=O((KH,fE)=>{var za=require("buffer").Buffer,hd=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];typeof Int32Array!="undefined"&&(hd=new Int32Array(hd));function dE(e){if(za.isBuffer(e))return e;var t=typeof za.alloc=="function"&&typeof za.from=="function";if(typeof e=="number")return t?za.alloc(e):new za(e);if(typeof e=="string")return t?za.from(e):new za(e);throw new Error("input must be buffer, number, or string, received "+typeof e)}function HR(e){var t=dE(4);return t.writeInt32BE(e,0),t}function vd(e,t){e=dE(e),za.isBuffer(t)&&(t=t.readUInt32BE(0));for(var a=~~t^-1,n=0;n>>8;return a^-1}function bd(){return HR(vd.apply(null,arguments))}bd.signed=function(){return vd.apply(null,arguments)};bd.unsigned=function(){return vd.apply(null,arguments)>>>0};fE.exports=bd});var wE=O(ra=>{var gd=require("fs"),WR=require("zlib"),hE=pE(),VR=mE(),gl=require("util"),xl=require("events").EventEmitter,vE=require("stream").Transform,xd=require("stream").PassThrough,UR=require("stream").Writable;ra.open=JR;ra.fromFd=bE;ra.fromBuffer=ZR;ra.fromRandomAccessReader=yd;ra.dosDateTimeToDate=xE;ra.validateFileName=yE;ra.ZipFile=Ga;ra.Entry=xr;ra.RandomAccessReader=Ha;function JR(e,t,a){typeof t=="function"&&(a=t,t=null),t==null&&(t={}),t.autoClose==null&&(t.autoClose=!0),t.lazyEntries==null&&(t.lazyEntries=!1),t.decodeStrings==null&&(t.decodeStrings=!0),t.validateEntrySizes==null&&(t.validateEntrySizes=!0),t.strictFileNames==null&&(t.strictFileNames=!1),a==null&&(a=bl),gd.open(e,"r",function(n,i){if(n)return a(n);bE(i,t,function(r,o){r&&gd.close(i,bl),a(r,o)})})}function bE(e,t,a){typeof t=="function"&&(a=t,t=null),t==null&&(t={}),t.autoClose==null&&(t.autoClose=!1),t.lazyEntries==null&&(t.lazyEntries=!1),t.decodeStrings==null&&(t.decodeStrings=!0),t.validateEntrySizes==null&&(t.validateEntrySizes=!0),t.strictFileNames==null&&(t.strictFileNames=!1),a==null&&(a=bl),gd.fstat(e,function(n,i){if(n)return a(n);var r=hE.createFromFd(e,{autoClose:!0});yd(r,i.size,t,a)})}function ZR(e,t,a){typeof t=="function"&&(a=t,t=null),t==null&&(t={}),t.autoClose=!1,t.lazyEntries==null&&(t.lazyEntries=!1),t.decodeStrings==null&&(t.decodeStrings=!0),t.validateEntrySizes==null&&(t.validateEntrySizes=!0),t.strictFileNames==null&&(t.strictFileNames=!1);var n=hE.createFromBuffer(e,{maxChunkSize:65536});yd(n,e.length,t,a)}function yd(e,t,a,n){typeof a=="function"&&(n=a,a=null),a==null&&(a={}),a.autoClose==null&&(a.autoClose=!0),a.lazyEntries==null&&(a.lazyEntries=!1),a.decodeStrings==null&&(a.decodeStrings=!0);var i=!!a.decodeStrings;if(a.validateEntrySizes==null&&(a.validateEntrySizes=!0),a.strictFileNames==null&&(a.strictFileNames=!1),n==null&&(n=bl),typeof t!="number")throw new Error("expected totalSize parameter to be a number");if(t>Number.MAX_SAFE_INTEGER)throw new Error("zip file too large. only file sizes up to 2^52 are supported due to JavaScript's Number type being an IEEE 754 double.");e.ref();var r=22,o=65535,s=Math.min(r+o,t),l=ia(s),u=t-l.length;ri(e,l,0,s,u,function(c){if(c)return n(c);for(var f=s-r;f>=0;f-=1)if(l.readUInt32LE(f)===101010256){var p=l.slice(f),b=p.readUInt16LE(4);if(b!==0)return n(new Error("multi-disk zip files are not supported: found disk number: "+b));var d=p.readUInt16LE(10),m=p.readUInt32LE(16),h=p.readUInt16LE(20),v=p.length-r;if(h!==v)return n(new Error("invalid comment length. expected: "+v+". found: "+h));var x=i?vl(p,22,p.length,!1):p.slice(22);if(!(d===65535||m===4294967295))return n(null,new Ga(e,m,t,d,x,a.autoClose,a.lazyEntries,i,a.validateEntrySizes,a.strictFileNames));var E=ia(20),g=u+f-E.length;ri(e,E,0,E.length,g,function(w){if(w)return n(w);if(E.readUInt32LE(0)!==117853008)return n(new Error("invalid zip64 end of central directory locator signature"));var C=oi(E,8),y=ia(56);ri(e,y,0,y.length,C,function(S){return S?n(S):y.readUInt32LE(0)!==101075792?n(new Error("invalid zip64 end of central directory record signature")):(d=oi(y,32),m=oi(y,48),n(null,new Ga(e,m,t,d,x,a.autoClose,a.lazyEntries,i,a.validateEntrySizes,a.strictFileNames)))})});return}n(new Error("end of central directory record signature not found"))})}gl.inherits(Ga,xl);function Ga(e,t,a,n,i,r,o,s,l,u){var c=this;xl.call(c),c.reader=e,c.reader.on("error",function(f){gE(c,f)}),c.reader.once("close",function(){c.emit("close")}),c.readEntryCursor=t,c.fileSize=a,c.entryCount=n,c.comment=i,c.entriesRead=0,c.autoClose=!!r,c.lazyEntries=!!o,c.decodeStrings=!!s,c.validateEntrySizes=!!l,c.strictFileNames=!!u,c.isOpen=!0,c.emittedError=!1,c.lazyEntries||c._readEntry()}Ga.prototype.close=function(){this.isOpen&&(this.isOpen=!1,this.reader.unref())};function Zt(e,t){e.autoClose&&e.close(),gE(e,t)}function gE(e,t){e.emittedError||(e.emittedError=!0,e.emit("error",t))}Ga.prototype.readEntry=function(){if(!this.lazyEntries)throw new Error("readEntry() called without lazyEntries:true");this._readEntry()};Ga.prototype._readEntry=function(){var e=this;if(e.entryCount===e.entriesRead){setImmediate(function(){e.autoClose&&e.close(),!e.emittedError&&e.emit("end")});return}if(!e.emittedError){var t=ia(46);ri(e.reader,t,0,t.length,e.readEntryCursor,function(a){if(a)return Zt(e,a);if(!e.emittedError){var n=new xr,i=t.readUInt32LE(0);if(i!==33639248)return Zt(e,new Error("invalid central directory file header signature: 0x"+i.toString(16)));if(n.versionMadeBy=t.readUInt16LE(4),n.versionNeededToExtract=t.readUInt16LE(6),n.generalPurposeBitFlag=t.readUInt16LE(8),n.compressionMethod=t.readUInt16LE(10),n.lastModFileTime=t.readUInt16LE(12),n.lastModFileDate=t.readUInt16LE(14),n.crc32=t.readUInt32LE(16),n.compressedSize=t.readUInt32LE(20),n.uncompressedSize=t.readUInt32LE(24),n.fileNameLength=t.readUInt16LE(28),n.extraFieldLength=t.readUInt16LE(30),n.fileCommentLength=t.readUInt16LE(32),n.internalFileAttributes=t.readUInt16LE(36),n.externalFileAttributes=t.readUInt32LE(38),n.relativeOffsetOfLocalHeader=t.readUInt32LE(42),n.generalPurposeBitFlag&64)return Zt(e,new Error("strong encryption is not supported"));e.readEntryCursor+=46,t=ia(n.fileNameLength+n.extraFieldLength+n.fileCommentLength),ri(e.reader,t,0,t.length,e.readEntryCursor,function(r){if(r)return Zt(e,r);if(!e.emittedError){var o=(n.generalPurposeBitFlag&2048)!==0;n.fileName=e.decodeStrings?vl(t,0,n.fileNameLength,o):t.slice(0,n.fileNameLength);var s=n.fileNameLength+n.extraFieldLength,l=t.slice(n.fileNameLength,s);n.extraFields=[];for(var u=0;ul.length)return Zt(e,new Error("extra field length exceeds extra field buffer size"));var d=ia(f);l.copy(d,0,p,b),n.extraFields.push({id:c,data:d}),u=b}if(n.fileComment=e.decodeStrings?vl(t,s,s+n.fileCommentLength,o):t.slice(s,s+n.fileCommentLength),n.comment=n.fileComment,e.readEntryCursor+=t.length,e.entriesRead+=1,n.uncompressedSize===4294967295||n.compressedSize===4294967295||n.relativeOffsetOfLocalHeader===4294967295){for(var m=null,u=0;um.length)return Zt(e,new Error("zip64 extended information extra field does not include uncompressed size"));n.uncompressedSize=oi(m,v),v+=8}if(n.compressedSize===4294967295){if(v+8>m.length)return Zt(e,new Error("zip64 extended information extra field does not include compressed size"));n.compressedSize=oi(m,v),v+=8}if(n.relativeOffsetOfLocalHeader===4294967295){if(v+8>m.length)return Zt(e,new Error("zip64 extended information extra field does not include relative header offset"));n.relativeOffsetOfLocalHeader=oi(m,v),v+=8}}if(e.decodeStrings)for(var u=0;ue.compressedSize)throw new Error("options.start > entry.compressedSize")}if(t.end!=null){if(r=t.end,r<0)throw new Error("options.end < 0");if(r>e.compressedSize)throw new Error("options.end > entry.compressedSize");if(rn.fileSize)return a(new Error("file data overflows file bounds: "+b+" + "+e.compressedSize+" > "+n.fileSize));var m=n.reader.createReadStream({start:b+i,end:b+r}),h=m;if(p){var v=!1,x=WR.createInflateRaw();m.on("error",function(E){setImmediate(function(){v||x.emit("error",E)})}),m.pipe(x),n.validateEntrySizes?(h=new yr(e.uncompressedSize),x.on("error",function(E){setImmediate(function(){v||h.emit("error",E)})}),x.pipe(h)):h=x,h.destroy=function(){v=!0,x!==h&&x.unpipe(h),m.unpipe(x),m.destroy()}}a(null,h)}finally{n.reader.unref()}})};function xr(){}xr.prototype.getLastModDate=function(){return xE(this.lastModFileDate,this.lastModFileTime)};xr.prototype.isEncrypted=function(){return(this.generalPurposeBitFlag&1)!==0};xr.prototype.isCompressed=function(){return this.compressionMethod===8};function xE(e,t){var a=e&31,n=(e>>5&15)-1,i=(e>>9&127)+1980,r=0,o=(t&31)*2,s=t>>5&63,l=t>>11&31;return new Date(i,n,a,l,s,o,r)}function yE(e){return e.indexOf("\\")!==-1?"invalid characters in fileName: "+e:/^[a-zA-Z]:/.test(e)||/^\//.test(e)?"absolute path: "+e:e.split("/").indexOf("..")!==-1?"invalid relative path: "+e:null}function ri(e,t,a,n,i,r){if(n===0)return setImmediate(function(){r(null,ia(0))});e.read(t,a,n,i,function(o,s){if(o)return r(o);if(sthis.expectedByteCount){var n="too many bytes in the stream. expected "+this.expectedByteCount+". got at least "+this.actualByteCount;return a(new Error(n))}a(null,e)};yr.prototype._flush=function(e){if(this.actualByteCount0)return;if(e.refCount<0)throw new Error("invalid unref");e.close(t);function t(a){if(a)return e.emit("error",a);e.emit("close")}};Ha.prototype.createReadStream=function(e){var t=e.start,a=e.end;if(t===a){var n=new xd;return setImmediate(function(){n.end()}),n}var i=this._readStreamForRange(t,a),r=!1,o=new yl(this);i.on("error",function(l){setImmediate(function(){r||o.emit("error",l)})}),o.destroy=function(){i.unpipe(o),o.unref(),i.destroy()};var s=new yr(a-t);return o.on("error",function(l){setImmediate(function(){r||s.emit("error",l)})}),s.destroy=function(){r=!0,o.unpipe(s),o.destroy()},i.pipe(o).pipe(s)};Ha.prototype._readStreamForRange=function(e,t){throw new Error("not implemented")};Ha.prototype.read=function(e,t,a,n,i){var r=this.createReadStream({start:n,end:n+a}),o=new UR,s=0;o._write=function(l,u,c){l.copy(e,t+s,0,l.length),s+=l.length,c()},o.on("finish",i),r.on("error",function(l){i(l)}),r.pipe(o)};Ha.prototype.close=function(e){setImmediate(e)};gl.inherits(yl,xd);function yl(e){xd.call(this),this.context=e,this.context.ref(),this.unreffedYet=!1}yl.prototype._flush=function(e){this.unref(),e()};yl.prototype.unref=function(e){this.unreffedYet||(this.unreffedYet=!0,this.context.unref())};var qR="\0\u263A\u263B\u2665\u2666\u2663\u2660\u2022\u25D8\u25CB\u25D9\u2642\u2640\u266A\u266B\u263C\u25BA\u25C4\u2195\u203C\xB6\xA7\u25AC\u21A8\u2191\u2193\u2192\u2190\u221F\u2194\u25B2\u25BC !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u2302\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0";function vl(e,t,a,n){if(n)return e.toString("utf8",t,a);for(var i="",r=t;r{"use strict";var EE=D1(),XR=tE(),SE=rE(),$R=wE(),YR=(e,t)=>{let r=e.versionMadeBy>>8;return(t&61440)===40960?"symlink":(t&61440)===16384||r===0&&e.externalFileAttributes===16?"directory":"file"},KR=(e,t)=>{let a={mode:e.externalFileAttributes>>16&65535,mtime:e.getLastModDate(),path:e.fileName};return a.type=YR(e,a.mode),a.mode===0&&a.type==="directory"&&(a.mode=493),a.mode===0&&(a.mode=420),SE(t.openReadStream.bind(t))(e).then(XR.buffer).then(n=>(a.data=n,a.type==="symlink"&&(a.linkname=n.toString()),a)).catch(n=>{throw t.close(),n})},QR=e=>new Promise((t,a)=>{let n=[];e.readEntry(),e.on("entry",i=>{KR(i,e).catch(a).then(r=>{n.push(r),e.readEntry()})}),e.on("error",a),e.on("end",()=>t(n))});CE.exports=()=>e=>Buffer.isBuffer(e)?!EE(e)||EE(e).ext!=="zip"?Promise.resolve([]):SE($R.fromBuffer)(e,{lazyEntries:!0}).then(QR):Promise.reject(new TypeError(`Expected a Buffer, got ${typeof e}`))});var TE=O((tW,_E)=>{"use strict";var IE=(e,t)=>function(){let a=t.promiseModule,n=new Array(arguments.length);for(let i=0;i{t.errorFirst?n.push(function(o,s){if(t.multiArgs){let l=new Array(arguments.length-1);for(let u=1;u{t=Object.assign({exclude:[/.+(Sync|Stream)$/],errorFirst:!0,promiseModule:Promise},t);let a=i=>{let r=o=>typeof o=="string"?i===o:o.test(i);return t.include?t.include.some(r):!t.exclude.some(r)},n;typeof e=="function"?n=function(){return t.excludeMain?e.apply(this,arguments):IE(e,t).apply(this,arguments)}:n=Object.create(Object.getPrototypeOf(e));for(let i in e){let r=e[i];n[i]=typeof r=="function"&&a(i)?IE(r,t):r}return n}});var OE=O((aW,wd)=>{"use strict";var eB=require("fs"),vn=require("path"),kE=TE(),FE={mode:511&~process.umask(),fs:eB},PE=e=>{if(process.platform==="win32"&&/[<>:"|?*]/.test(e.replace(vn.parse(e).root,""))){let a=new Error(`Path contains invalid characters: ${e}`);throw a.code="EINVAL",a}};wd.exports=(e,t)=>Promise.resolve().then(()=>{PE(e),t=Object.assign({},FE,t);let a=kE(t.fs.mkdir),n=kE(t.fs.stat),i=r=>a(r,t.mode).then(()=>r).catch(o=>{if(o.code==="ENOENT"){if(o.message.includes("null bytes")||vn.dirname(r)===r)throw o;return i(vn.dirname(r)).then(()=>i(r))}return n(r).then(s=>s.isDirectory()?r:Promise.reject()).catch(()=>{throw o})});return i(vn.resolve(e))});wd.exports.sync=(e,t)=>{PE(e),t=Object.assign({},FE,t);let a=n=>{try{t.fs.mkdirSync(n,t.mode)}catch(i){if(i.code==="ENOENT"){if(i.message.includes("null bytes")||vn.dirname(n)===n)throw i;return a(vn.dirname(n)),a(n)}try{if(!t.fs.statSync(n).isDirectory())throw new Error("The path is not a directory")}catch(r){throw i}}return n};return a(vn.resolve(e))}});var jE=O((nW,NE)=>{"use strict";var RE=function(e,t,a){return function(){for(var n=this,i=new Array(arguments.length),r=0;r{"use strict";LE.exports=function(t,a){if(a){if(typeof a!="object")throw new TypeError(String(a)+" is not an object. Expected an object that has boolean `includeZero` property.");if("includeZero"in a){if(typeof a.includeZero!="boolean")throw new TypeError(String(a.includeZero)+" is neither true nor false. `includeZero` option must be a Boolean value.");if(a.includeZero&&t===0)return!0}}return Number.isSafeInteger(t)&&t>=1}});var zE=O((rW,DE)=>{"use strict";var wr=require("path"),Er=require("util"),tB=ME();DE.exports=function(t,a,n){if(typeof t!="string")throw new TypeError(Er.inspect(t)+" is not a string. First argument to strip-dirs must be a path string.");if(wr.posix.isAbsolute(t)||wr.win32.isAbsolute(t))throw new Error(`${t} is an absolute path. strip-dirs requires a relative path.`);if(!tB(a,{includeZero:!0}))throw new Error("The Second argument of strip-dirs must be a natural number or 0, but received "+Er.inspect(a)+".");if(n){if(typeof n!="object")throw new TypeError(Er.inspect(n)+" is not an object. Expected an object with a boolean `disallowOverflow` property.");if(Array.isArray(n))throw new TypeError(Er.inspect(n)+" is an array. Expected an object with a boolean `disallowOverflow` property.");if("disallowOverflow"in n&&typeof n.disallowOverflow!="boolean")throw new TypeError(Er.inspect(n.disallowOverflow)+" is neither true nor false. `disallowOverflow` option must be a Boolean value.")}else n={disallowOverflow:!1};let i=wr.normalize(t).split(wr.sep);if(i.length>1&&i[0]==="."&&i.shift(),a>i.length-1){if(n.disallowOverflow)throw new RangeError("Cannot strip more directories than there are.");a=i.length-1}return wr.join.apply(null,i.slice(a))}});var HE=O((oW,GE)=>{"use strict";var wl=require("path"),aB=wy(),nB=il(),iB=O1(),rB=L1(),oB=AE(),Ed=OE(),sB=jE(),lB=zE(),Pt=sB(aB),cB=(e,t)=>t.plugins.length===0?Promise.resolve([]):Promise.all(t.plugins.map(a=>a(e,t))).then(a=>a.reduce((n,i)=>n.concat(i))),Sd=(e,t)=>Pt.realpath(e).catch(a=>{let n=wl.dirname(e);return Sd(n,t)}).then(a=>{if(a.indexOf(t)!==0)throw new Error("Refusing to create a directory outside the output path.");return Ed(e).then(Pt.realpath)}),uB=(e,t)=>Pt.readlink(e).catch(a=>null).then(a=>{if(a)throw new Error("Refusing to write into a symlink");return t}),pB=(e,t,a)=>cB(e,a).then(n=>(a.strip>0&&(n=n.map(i=>(i.path=lB(i.path,a.strip),i)).filter(i=>i.path!==".")),typeof a.filter=="function"&&(n=n.filter(a.filter)),typeof a.map=="function"&&(n=n.map(a.map)),t?Promise.all(n.map(i=>{let r=wl.join(t,i.path),o=i.mode&~process.umask(),s=new Date;return i.type==="directory"?Ed(t).then(l=>Pt.realpath(l)).then(l=>Sd(r,l)).then(()=>Pt.utimes(r,s,i.mtime)).then(()=>i):Ed(t).then(l=>Pt.realpath(l)).then(l=>Sd(wl.dirname(r),l).then(()=>l)).then(l=>i.type==="file"?uB(r,l):l).then(l=>Pt.realpath(wl.dirname(r)).then(u=>{if(u.indexOf(l)!==0)throw new Error("Refusing to write outside output directory: "+u)})).then(()=>i.type==="link"||i.type==="symlink"&&process.platform==="win32"?Pt.link(i.linkname,r):i.type==="symlink"?Pt.symlink(i.linkname,r):Pt.writeFile(r,i.data,{mode:o})).then(()=>i.type==="file"&&Pt.utimes(r,s,i.mtime)).then(()=>i)})):n));GE.exports=(e,t,a)=>typeof e!="string"&&!Buffer.isBuffer(e)?Promise.reject(new TypeError("Input file required")):(typeof t=="object"&&(a=t,t=null),a=Object.assign({plugins:[nB(),iB(),rB(),oB()]},a),(typeof e=="string"?Pt.readFile(e):Promise.resolve(e)).then(i=>pB(i,t,a)))});var VE=O((sW,WE)=>{"use strict";var dB=/[|\\{}()[\]^$+*?.]/g;WE.exports=function(e){if(typeof e!="string")throw new TypeError("Expected a string");return e.replace(dB,"\\$&")}});var JE=O((lW,UE)=>{"use strict";var fB=VE();UE.exports=function(e,t){if(typeof e!="string"||typeof t!="string")throw new TypeError("Expected a string");return e.replace(new RegExp("(?:"+fB(t)+"){2,}","g"),t)}});var ZE=O((cW,Cd)=>{"use strict";Cd.exports=()=>/[<>:"\/\\|?*\x00-\x1F]/g;Cd.exports.windowsNames=()=>/^(con|prn|aux|nul|com[0-9]|lpt[0-9])$/i});var XE=O((uW,qE)=>{"use strict";var mB=/[|\\{}()[\]^$+*?.]/g;qE.exports=function(e){if(typeof e!="string")throw new TypeError("Expected a string");return e.replace(mB,"\\$&")}});var YE=O((pW,$E)=>{"use strict";var hB=XE();$E.exports=function(e,t){if(typeof e!="string"||typeof t!="string")throw new TypeError;return t=hB(t),e.replace(new RegExp("^"+t+"|"+t+"$","g"),"")}});var QE=O((dW,Id)=>{"use strict";var El=require("path"),vB=JE(),Ad=ZE(),bB=YE(),gB=100,KE=/[\u0000-\u001f\u0080-\u009f]/g,xB=/^\.+/,Sl=(e,t={})=>{if(typeof e!="string")throw new TypeError("Expected a string");let a=t.replacement===void 0?"!":t.replacement;if(Ad().test(a)&&KE.test(a))throw new Error("Replacement string cannot contain reserved filename characters");return e=e.replace(Ad(),a),e=e.replace(KE,a),e=e.replace(xB,a),a.length>0&&(e=vB(e,a),e=e.length>1?bB(e,a):e),e=Ad.windowsNames().test(e)?e+a:e,e=e.slice(0,gB),e};Sl.path=(e,t)=>(e=El.resolve(e),El.join(El.dirname(e),Sl(El.basename(e),t)));Id.exports=Sl;Id.exports.default=Sl});var aS=O((fW,tS)=>{var yB=ed(),wB=td(),_d=require("fs"),Sr=function(){},EB=/^v?\.0/.test(process.version),Cl=function(e){return typeof e=="function"},SB=function(e){return!EB||!_d?!1:(e instanceof(_d.ReadStream||Sr)||e instanceof(_d.WriteStream||Sr))&&Cl(e.close)},CB=function(e){return e.setHeader&&Cl(e.abort)},AB=function(e,t,a,n){n=yB(n);var i=!1;e.on("close",function(){i=!0}),wB(e,{readable:t,writable:a},function(o){if(o)return n(o);i=!0,n()});var r=!1;return function(o){if(!i&&!r){if(r=!0,SB(e))return e.close(Sr);if(CB(e))return e.abort();if(Cl(e.destroy))return e.destroy();n(o||new Error("stream was destroyed"))}}},eS=function(e){e()},IB=function(e,t){return e.pipe(t)},_B=function(){var e=Array.prototype.slice.call(arguments),t=Cl(e[e.length-1]||Sr)&&e.pop()||Sr;if(Array.isArray(e[0])&&(e=e[0]),e.length<2)throw new Error("pump requires two streams per minimum");var a,n=e.map(function(i,r){var o=r0;return AB(i,o,s,function(l){a||(a=l),l&&n.forEach(eS),!o&&(n.forEach(eS),t(a))})});return e.reduce(IB)};tS.exports=_B});var iS=O((mW,nS)=>{"use strict";var{PassThrough:TB}=require("stream");nS.exports=e=>{e=Object.assign({},e);let{array:t}=e,{encoding:a}=e,n=a==="buffer",i=!1;t?i=!(a||n):a=a||"utf8",n&&(a=null);let r=0,o=[],s=new TB({objectMode:i});return a&&s.setEncoding(a),s.on("data",l=>{o.push(l),i?r=o.length:r+=l.length}),s.getBufferedValue=()=>t?o:n?Buffer.concat(o,r):o.join(""),s.getBufferedLength=()=>r,s}});var rS=O((hW,Cr)=>{"use strict";var kB=aS(),FB=iS(),Al=class extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}};function Td(e,t){if(!e)return Promise.reject(new Error("Expected a stream"));t=Object.assign({maxBuffer:1/0},t);let{maxBuffer:a}=t,n;return new Promise((i,r)=>{let o=s=>{s&&(s.bufferedData=n.getBufferedValue()),r(s)};n=kB(e,FB(t),s=>{if(s){o(s);return}i()}),n.on("data",()=>{n.getBufferedLength()>a&&o(new Al)})}).then(()=>n.getBufferedValue())}Cr.exports=Td;Cr.exports.buffer=(e,t)=>Td(e,Object.assign({},t,{encoding:"buffer"}));Cr.exports.array=(e,t)=>Td(e,Object.assign({},t,{array:!0}));Cr.exports.MaxBufferError=Al});var sS=O((vW,oS)=>{"use strict";oS.exports=function(e){return encodeURIComponent(e).replace(/[!'()*]/g,function(t){return"%"+t.charCodeAt(0).toString(16).toUpperCase()})}});var dS=O((bW,pS)=>{"use strict";var uS="%[a-f0-9]{2}",lS=new RegExp("("+uS+")|([^%]+?)","gi"),cS=new RegExp("("+uS+")+","gi");function kd(e,t){try{return[decodeURIComponent(e.join(""))]}catch(i){}if(e.length===1)return e;t=t||1;var a=e.slice(0,t),n=e.slice(t);return Array.prototype.concat.call([],kd(a),kd(n))}function PB(e){try{return decodeURIComponent(e)}catch(n){for(var t=e.match(lS)||[],a=1;a{"use strict";var RB=sS(),mS=cl(),fS=dS();function BB(e){switch(e.arrayFormat){case"index":return function(t,a,n){return a===null?[Ot(t,e),"[",n,"]"].join(""):[Ot(t,e),"[",Ot(n,e),"]=",Ot(a,e)].join("")};case"bracket":return function(t,a){return a===null?Ot(t,e):[Ot(t,e),"[]=",Ot(a,e)].join("")};default:return function(t,a){return a===null?Ot(t,e):[Ot(t,e),"=",Ot(a,e)].join("")}}}function NB(e){var t;switch(e.arrayFormat){case"index":return function(a,n,i){if(t=/\[(\d*)\]$/.exec(a),a=a.replace(/\[\d*\]$/,""),!t){i[a]=n;return}i[a]===void 0&&(i[a]={}),i[a][t[1]]=n};case"bracket":return function(a,n,i){if(t=/(\[\])$/.exec(a),a=a.replace(/\[\]$/,""),t){if(i[a]===void 0){i[a]=[n];return}}else{i[a]=n;return}i[a]=[].concat(i[a],n)};default:return function(a,n,i){if(i[a]===void 0){i[a]=n;return}i[a]=[].concat(i[a],n)}}}function Ot(e,t){return t.encode?t.strict?RB(e):encodeURIComponent(e):e}function hS(e){return Array.isArray(e)?e.sort():typeof e=="object"?hS(Object.keys(e)).sort(function(t,a){return Number(t)-Number(a)}).map(function(t){return e[t]}):e}function vS(e){var t=e.indexOf("?");return t===-1?"":e.slice(t+1)}function bS(e,t){t=mS({arrayFormat:"none"},t);var a=NB(t),n=Object.create(null);return typeof e!="string"||(e=e.trim().replace(/^[?#&]/,""),!e)?n:(e.split("&").forEach(function(i){var r=i.replace(/\+/g," ").split("="),o=r.shift(),s=r.length>0?r.join("="):void 0;s=s===void 0?null:fS(s),a(fS(o),s,n)}),Object.keys(n).sort().reduce(function(i,r){var o=n[r];return o&&typeof o=="object"&&!Array.isArray(o)?i[r]=hS(o):i[r]=o,i},Object.create(null)))}Ar.extract=vS;Ar.parse=bS;Ar.stringify=function(e,t){var a={encode:!0,strict:!0,arrayFormat:"none"};t=mS(a,t),t.sort===!1&&(t.sort=function(){});var n=BB(t);return e?Object.keys(e).sort(t.sort).map(function(i){var r=e[i];if(r===void 0)return"";if(r===null)return Ot(i,t);if(Array.isArray(r)){var o=[];return r.slice().forEach(function(s){s!==void 0&&o.push(n(i,s,o.length))}),o.join("&")}return Ot(i,t)+"="+Ot(r,t)}).filter(function(i){return i.length>0}).join("&"):""};Ar.parseUrl=function(e,t){return{url:e.split("?")[0]||"",query:bS(vS(e),t)}}});var Fd=O((xW,xS)=>{"use strict";xS.exports=(e,t)=>{if(typeof e!="string")throw new TypeError(`Expected \`url\` to be of type \`string\`, got \`${typeof e}\``);return e=e.trim(),t=Object.assign({https:!1},t),/^\.*\/|^(?!localhost)\w+:/.test(e)?e:e.replace(/^(?!(?:\w+:)?\/\/)/,t.https?"https://":"http://")}});var Pd=O((yW,yS)=>{"use strict";var jB=Object.prototype.toString;yS.exports=function(e){var t;return jB.call(e)==="[object Object]"&&(t=Object.getPrototypeOf(e),t===null||t===Object.getPrototypeOf({}))}});var ES=O((wW,wS)=>{"use strict";var Od=Pd();wS.exports=(e,t)=>{if(!Od(e))throw new TypeError("Expected a plain object");if(t=t||{},typeof t=="function")throw new TypeError("Specify the compare function as an option instead");let a=t.deep,n=[],i=[],r=o=>{let s=n.indexOf(o);if(s!==-1)return i[s];let l={},u=Object.keys(o).sort(t.compare);n.push(o),i.push(l);for(let c=0;c{"use strict";var Rd=require("url"),LB=require("punycode"),SS=gS(),MB=Fd(),DB=ES(),zB={"http:":80,"https:":443,"ftp:":21},GB={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function CS(e,t){return t.some(a=>a instanceof RegExp?a.test(e):a===e)}AS.exports=(e,t)=>{if(t=Object.assign({normalizeProtocol:!0,normalizeHttps:!1,stripFragment:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0},t),typeof e!="string")throw new TypeError("Expected a string");let a=e.startsWith("//");e=MB(e.trim()).replace(/^\/\//,"http://");let n=Rd.parse(e);if(t.normalizeHttps&&n.protocol==="https:"&&(n.protocol="http:"),!n.hostname&&!n.pathname)throw new Error("Invalid URL");delete n.host,delete n.query,t.stripFragment&&delete n.hash;let i=zB[n.protocol];if(Number(n.port)===i&&delete n.port,n.pathname&&(n.pathname=n.pathname.replace(/\/{2,}/g,"/")),n.pathname&&(n.pathname=decodeURI(n.pathname)),t.removeDirectoryIndex===!0&&(t.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(t.removeDirectoryIndex)&&t.removeDirectoryIndex.length>0){let o=n.pathname.split("/"),s=o[o.length-1];CS(s,t.removeDirectoryIndex)&&(o=o.slice(0,o.length-1),n.pathname=o.slice(1).join("/")+"/")}if(GB[n.protocol]){let o=n.protocol+"//"+n.hostname,s=Rd.resolve(o,n.pathname);n.pathname=s.replace(o,"")}n.hostname&&(n.hostname=LB.toUnicode(n.hostname).toLowerCase(),n.hostname=n.hostname.replace(/\.$/,""),t.stripWWW&&(n.hostname=n.hostname.replace(/^www\./,""))),n.search==="?"&&delete n.search;let r=SS.parse(n.search);if(Array.isArray(t.removeQueryParameters))for(let o in r)CS(o,t.removeQueryParameters)&&delete r[o];return t.sortQueryParameters&&(n.search=SS.stringify(DB(r))),n.search!==null&&(n.search=decodeURIComponent(n.search)),e=Rd.format(n),(t.removeTrailingSlash||n.pathname==="/")&&(e=e.replace(/\/$/,"")),a&&!t.normalizeProtocol&&(e=e.replace(/^http:\/\//,"//")),e}});var TS=O((SW,_S)=>{"use strict";var HB=require("stream").PassThrough;_S.exports=e=>{e=Object.assign({},e);let t=e.array,a=e.encoding,n=a==="buffer",i=!1;t?i=!(a||n):a=a||"utf8",n&&(a=null);let r=0,o=[],s=new HB({objectMode:i});return a&&s.setEncoding(a),s.on("data",l=>{o.push(l),i?r=o.length:r+=l.length}),s.getBufferedValue=()=>t?o:n?Buffer.concat(o,r):o.join(""),s.getBufferedLength=()=>r,s}});var kS=O((CW,Il)=>{"use strict";var WB=TS();function Bd(e,t){if(!e)return Promise.reject(new Error("Expected a stream"));t=Object.assign({maxBuffer:1/0},t);let a=t.maxBuffer,n,i,r=new Promise((o,s)=>{let l=u=>{u&&(u.bufferedData=n.getBufferedValue()),s(u)};n=WB(t),e.once("error",l),e.pipe(n),n.on("data",()=>{n.getBufferedLength()>a&&s(new Error("maxBuffer exceeded"))}),n.once("error",l),n.on("end",o),i=()=>{e.unpipe&&e.unpipe(n)}});return r.then(i,i),r.then(()=>n.getBufferedValue())}Il.exports=Bd;Il.exports.buffer=(e,t)=>Bd(e,Object.assign({},t,{encoding:"buffer"}));Il.exports.array=(e,t)=>Bd(e,Object.assign({},t,{array:!0}))});var PS=O((AW,FS)=>{"use strict";function VB(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var UB=[200,203,204,206,300,301,404,405,410,414,501],JB=[200,203,204,300,301,302,303,307,308,404,405,410,414,501],ZB={connection:!0,"keep-alive":!0,"proxy-authenticate":!0,"proxy-authorization":!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0},qB={"content-length":!0,"content-encoding":!0,"transfer-encoding":!0,"content-range":!0};function Nd(e){var t={};if(!e)return t;for(var a=e.trim().split(/\s*,\s*/),r=a,n=Array.isArray(r),i=0,r=n?r:r[Symbol.iterator]();;){var o;if(n){if(i>=r.length)break;o=r[i++]}else{if(i=r.next(),i.done)break;o=i.value}var s=o,l=s.split(/\s*=\s*/,2),u=l[0],c=l[1];t[u]=c===void 0?!0:c.replace(/^"|"$/g,"")}return t}function XB(e){var t=[];for(var a in e){var n=e[a];t.push(n===!0?a:a+"="+n)}if(t.length)return t.join(", ")}FS.exports=function(){function e(t,a){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},i=n.shared,r=n.cacheHeuristic,o=n.immutableMinTimeToLive,s=n.ignoreCargoCult,l=n._fromObject;if(VB(this,e),l){this._fromObject(l);return}if(!a||!a.headers)throw Error("Response headers missing");this._assertRequestHasHeaders(t),this._responseTime=this.now(),this._isShared=i!==!1,this._cacheHeuristic=r!==void 0?r:.1,this._immutableMinTtl=o!==void 0?o:24*3600*1e3,this._status="status"in a?a.status:200,this._resHeaders=a.headers,this._rescc=Nd(a.headers["cache-control"]),this._method="method"in t?t.method:"GET",this._url=t.url,this._host=t.headers.host,this._noAuthorization=!t.headers.authorization,this._reqHeaders=a.headers.vary?t.headers:null,this._reqcc=Nd(t.headers["cache-control"]),s&&"pre-check"in this._rescc&&"post-check"in this._rescc&&(delete this._rescc["pre-check"],delete this._rescc["post-check"],delete this._rescc["no-cache"],delete this._rescc["no-store"],delete this._rescc["must-revalidate"],this._resHeaders=Object.assign({},this._resHeaders,{"cache-control":XB(this._rescc)}),delete this._resHeaders.expires,delete this._resHeaders.pragma),!a.headers["cache-control"]&&/no-cache/.test(a.headers.pragma)&&(this._rescc["no-cache"]=!0)}return e.prototype.now=function(){return Date.now()},e.prototype.storable=function(){return!!(!this._reqcc["no-store"]&&(this._method==="GET"||this._method==="HEAD"||this._method==="POST"&&this._hasExplicitExpiration())&&JB.indexOf(this._status)!==-1&&!this._rescc["no-store"]&&(!this._isShared||!this._rescc.private)&&(!this._isShared||this._noAuthorization||this._allowsStoringAuthenticated())&&(this._resHeaders.expires||this._rescc.public||this._rescc["max-age"]||this._rescc["s-maxage"]||UB.indexOf(this._status)!==-1))},e.prototype._hasExplicitExpiration=function(){return this._isShared&&this._rescc["s-maxage"]||this._rescc["max-age"]||this._resHeaders.expires},e.prototype._assertRequestHasHeaders=function(a){if(!a||!a.headers)throw Error("Request headers missing")},e.prototype.satisfiesWithoutRevalidation=function(a){this._assertRequestHasHeaders(a);var n=Nd(a.headers["cache-control"]);if(n["no-cache"]||/no-cache/.test(a.headers.pragma)||n["max-age"]&&this.age()>n["max-age"]||n["min-fresh"]&&this.timeToLive()<1e3*n["min-fresh"])return!1;if(this.stale()){var i=n["max-stale"]&&!this._rescc["must-revalidate"]&&(n["max-stale"]===!0||n["max-stale"]>this.age()-this.maxAge());if(!i)return!1}return this._requestMatches(a,!1)},e.prototype._requestMatches=function(a,n){return(!this._url||this._url===a.url)&&this._host===a.headers.host&&(!a.method||this._method===a.method||n&&a.method==="HEAD")&&this._varyMatches(a)},e.prototype._allowsStoringAuthenticated=function(){return this._rescc["must-revalidate"]||this._rescc.public||this._rescc["s-maxage"]},e.prototype._varyMatches=function(a){if(!this._resHeaders.vary)return!0;if(this._resHeaders.vary==="*")return!1;for(var n=this._resHeaders.vary.trim().toLowerCase().split(/\s*,\s*/),o=n,i=Array.isArray(o),r=0,o=i?o:o[Symbol.iterator]();;){var s;if(i){if(r>=o.length)break;s=o[r++]}else{if(r=o.next(),r.done)break;s=r.value}var l=s;if(a.headers[l]!==this._reqHeaders[l])return!1}return!0},e.prototype._copyWithoutHopByHopHeaders=function(a){var n={};for(var i in a)ZB[i]||(n[i]=a[i]);if(a.connection)for(var r=a.connection.trim().split(/\s*,\s*/),l=r,o=Array.isArray(l),s=0,l=o?l:l[Symbol.iterator]();;){var u;if(o){if(s>=l.length)break;u=l[s++]}else{if(s=l.next(),s.done)break;u=s.value}var c=u;delete n[c]}if(n.warning){var f=n.warning.split(/,/).filter(function(p){return!/^\s*1[0-9][0-9]/.test(p)});f.length?n.warning=f.join(",").trim():delete n.warning}return n},e.prototype.responseHeaders=function(){var a=this._copyWithoutHopByHopHeaders(this._resHeaders),n=this.age();return n>3600*24&&!this._hasExplicitExpiration()&&this.maxAge()>3600*24&&(a.warning=(a.warning?`${a.warning}, `:"")+'113 - "rfc7234 5.5.4"'),a.age=`${Math.round(n)}`,a},e.prototype.date=function(){var a=Date.parse(this._resHeaders.date),n=8*3600*1e3;return Number.isNaN(a)||athis._responseTime+n?this._responseTime:a},e.prototype.age=function(){var a=Math.max(0,(this._responseTime-this.date())/1e3);if(this._resHeaders.age){var n=this._ageValue();n>a&&(a=n)}var i=(this.now()-this._responseTime)/1e3;return a+i},e.prototype._ageValue=function(){var a=parseInt(this._resHeaders.age);return isFinite(a)?a:0},e.prototype.maxAge=function(){if(!this.storable()||this._rescc["no-cache"]||this._isShared&&this._resHeaders["set-cookie"]&&!this._rescc.public&&!this._rescc.immutable||this._resHeaders.vary==="*")return 0;if(this._isShared){if(this._rescc["proxy-revalidate"])return 0;if(this._rescc["s-maxage"])return parseInt(this._rescc["s-maxage"],10)}if(this._rescc["max-age"])return parseInt(this._rescc["max-age"],10);var a=this._rescc.immutable?this._immutableMinTtl:0,n=this.date();if(this._resHeaders.expires){var i=Date.parse(this._resHeaders.expires);return Number.isNaN(i)||ir)return Math.max(a,(n-r)/1e3*this._cacheHeuristic)}return a},e.prototype.timeToLive=function(){return Math.max(0,this.maxAge()-this.age())*1e3},e.prototype.stale=function(){return this.maxAge()<=this.age()},e.fromObject=function(a){return new this(void 0,void 0,{_fromObject:a})},e.prototype._fromObject=function(a){if(this._responseTime)throw Error("Reinitialized");if(!a||a.v!==1)throw Error("Invalid serialization");this._responseTime=a.t,this._isShared=a.sh,this._cacheHeuristic=a.ch,this._immutableMinTtl=a.imm!==void 0?a.imm:24*3600*1e3,this._status=a.st,this._resHeaders=a.resh,this._rescc=a.rescc,this._method=a.m,this._url=a.u,this._host=a.h,this._noAuthorization=a.a,this._reqHeaders=a.reqh,this._reqcc=a.reqcc},e.prototype.toObject=function(){return{v:1,t:this._responseTime,sh:this._isShared,ch:this._cacheHeuristic,imm:this._immutableMinTtl,st:this._status,resh:this._resHeaders,rescc:this._rescc,m:this._method,u:this._url,h:this._host,a:this._noAuthorization,reqh:this._reqHeaders,reqcc:this._reqcc}},e.prototype.revalidationHeaders=function(a){this._assertRequestHasHeaders(a);var n=this._copyWithoutHopByHopHeaders(a.headers);if(delete n["if-range"],!this._requestMatches(a,!0)||!this.storable())return delete n["if-none-match"],delete n["if-modified-since"],n;this._resHeaders.etag&&(n["if-none-match"]=n["if-none-match"]?`${n["if-none-match"]}, ${this._resHeaders.etag}`:this._resHeaders.etag);var i=n["accept-ranges"]||n["if-match"]||n["if-unmodified-since"]||this._method&&this._method!="GET";if(i){if(delete n["if-modified-since"],n["if-none-match"]){var r=n["if-none-match"].split(/,/).filter(function(o){return!/^\s*W\//.test(o)});r.length?n["if-none-match"]=r.join(",").trim():delete n["if-none-match"]}}else this._resHeaders["last-modified"]&&!n["if-modified-since"]&&(n["if-modified-since"]=this._resHeaders["last-modified"]);return n},e.prototype.revalidatedPolicy=function(a,n){if(this._assertRequestHasHeaders(a),!n||!n.headers)throw Error("Response headers missing");var i=!1;if(n.status!==void 0&&n.status!=304?i=!1:n.headers.etag&&!/^\s*W\//.test(n.headers.etag)?i=this._resHeaders.etag&&this._resHeaders.etag.replace(/^\s*W\//,"")===n.headers.etag:this._resHeaders.etag&&n.headers.etag?i=this._resHeaders.etag.replace(/^\s*W\//,"")===n.headers.etag.replace(/^\s*W\//,""):this._resHeaders["last-modified"]?i=this._resHeaders["last-modified"]===n.headers["last-modified"]:!this._resHeaders.etag&&!this._resHeaders["last-modified"]&&!n.headers.etag&&!n.headers["last-modified"]&&(i=!0),!i)return{policy:new this.constructor(a,n),modified:!0};var r={};for(var o in this._resHeaders)r[o]=o in n.headers&&!qB[o]?n.headers[o]:this._resHeaders[o];var s=Object.assign({},n,{status:this._status,method:this._method,headers:r});return{policy:new this.constructor(a,s),modified:!1}},e}()});var jd=O((IW,OS)=>{"use strict";OS.exports=function(e){for(var t={},a=Object.keys(Object(e)),n=0;n{"use strict";var $B=require("stream").Readable,YB=jd(),Ld=class extends $B{constructor(t,a,n,i){if(typeof t!="number")throw new TypeError("Argument `statusCode` should be a number");if(typeof a!="object")throw new TypeError("Argument `headers` should be an object");if(!(n instanceof Buffer))throw new TypeError("Argument `body` should be a buffer");if(typeof i!="string")throw new TypeError("Argument `url` should be a string");super(),this.statusCode=t,this.headers=YB(a),this.body=n,this.url=i}_read(){this.push(this.body),this.push(null)}};RS.exports=Ld});var jS=O((TW,NS)=>{"use strict";NS.exports=function(e){for(var t={},a=Object.keys(Object(e)),n=0;n{"use strict";var KB=["destroy","setTimeout","socket","headers","trailers","rawHeaders","statusCode","httpVersion","httpVersionMinor","httpVersionMajor","rawTrailers","statusMessage"];LS.exports=(e,t)=>{let a=new Set(Object.keys(e).concat(KB));for(let n of a)n in t||(t[n]=typeof e[n]=="function"?e[n].bind(e):e[n])}});var DS=O((FW,MS)=>{"use strict";var QB=require("stream").PassThrough,eN=Md(),tN=e=>{if(!(e&&e.pipe))throw new TypeError("Parameter `response` must be a response stream.");let t=new QB;return eN(e,t),e.pipe(t)};MS.exports=tN});var zS=O(Dd=>{Dd.stringify=function e(t){if(typeof t=="undefined")return t;if(t&&Buffer.isBuffer(t))return JSON.stringify(":base64:"+t.toString("base64"));if(t&&t.toJSON&&(t=t.toJSON()),t&&typeof t=="object"){var a="",n=Array.isArray(t);a=n?"[":"{";var i=!0;for(var r in t){var o=typeof t[r]=="function"||!n&&typeof t[r]=="undefined";Object.hasOwnProperty.call(t,r)&&!o&&(i||(a+=","),i=!1,n?t[r]==null?a+="null":a+=e(t[r]):t[r]!==void 0&&(a+=e(r)+":"+e(t[r])))}return a+=n?"]":"}",a}else return typeof t=="string"?JSON.stringify(/^:/.test(t)?":"+t:t):typeof t=="undefined"?"null":JSON.stringify(t)};Dd.parse=function(e){return JSON.parse(e,function(t,a){return typeof a=="string"?/^:base64:/.test(a)?new Buffer(a.substring(8),"base64"):/^:/.test(a)?a.substring(1):a:a})}});var WS=O((OW,HS)=>{"use strict";var aN=require("events"),GS=zS(),nN=e=>{let t={redis:"@keyv/redis",mongodb:"@keyv/mongo",mongo:"@keyv/mongo",sqlite:"@keyv/sqlite",postgresql:"@keyv/postgres",postgres:"@keyv/postgres",mysql:"@keyv/mysql"};if(e.adapter||e.uri){let a=e.adapter||/^[^:]*/.exec(e.uri)[0];return new(require(t[a]))(e)}return new Map},zd=class extends aN{constructor(t,a){if(super(),this.opts=Object.assign({namespace:"keyv"},typeof t=="string"?{uri:t}:t,a),!this.opts.store){let n=Object.assign({},this.opts);this.opts.store=nN(n)}typeof this.opts.store.on=="function"&&this.opts.store.on("error",n=>this.emit("error",n)),this.opts.store.namespace=this.opts.namespace}_getKeyPrefix(t){return`${this.opts.namespace}:${t}`}get(t){t=this._getKeyPrefix(t);let a=this.opts.store;return Promise.resolve().then(()=>a.get(t)).then(n=>{if(n=typeof n=="string"?GS.parse(n):n,n!==void 0){if(typeof n.expires=="number"&&Date.now()>n.expires){this.delete(t);return}return n.value}})}set(t,a,n){t=this._getKeyPrefix(t),typeof n=="undefined"&&(n=this.opts.ttl),n===0&&(n=void 0);let i=this.opts.store;return Promise.resolve().then(()=>{let r=typeof n=="number"?Date.now()+n:null;return a={value:a,expires:r},i.set(t,GS.stringify(a),n)}).then(()=>!0)}delete(t){t=this._getKeyPrefix(t);let a=this.opts.store;return Promise.resolve().then(()=>a.delete(t))}clear(){let t=this.opts.store;return Promise.resolve().then(()=>t.clear())}};HS.exports=zd});var ZS=O((RW,JS)=>{"use strict";var iN=require("events"),VS=require("url"),rN=IS(),oN=kS(),Gd=PS(),US=BS(),sN=jS(),lN=DS(),cN=WS(),Ir=class e{constructor(t,a){if(typeof t!="function")throw new TypeError("Parameter `request` must be a function");return this.cache=new cN({uri:typeof a=="string"&&a,store:typeof a!="string"&&a,namespace:"cacheable-request"}),this.createCacheableRequest(t)}createCacheableRequest(t){return(a,n)=>{typeof a=="string"&&(a=VS.parse(a)),a=Object.assign({headers:{},method:"GET",cache:!0,strictTtl:!1,automaticFailover:!1},a),a.headers=sN(a.headers);let i=new iN,r=rN(VS.format(a)),o=`${a.method}:${r}`,s=!1,l=!1,u=f=>{l=!0;let p=b=>{if(s){let m=Gd.fromObject(s.cachePolicy).revalidatedPolicy(f,b);if(!m.modified){let h=m.policy.responseHeaders();b=new US(b.statusCode,h,s.body,s.url),b.cachePolicy=m.policy,b.fromCache=!0}}b.fromCache||(b.cachePolicy=new Gd(f,b),b.fromCache=!1);let d;f.cache&&b.cachePolicy.storable()?(d=lN(b),oN.buffer(b).then(m=>{let h={cachePolicy:b.cachePolicy.toObject(),url:b.url,statusCode:b.fromCache?s.statusCode:b.statusCode,body:m},v=f.strictTtl?b.cachePolicy.timeToLive():void 0;return this.cache.set(o,h,v)}).catch(m=>i.emit("error",new e.CacheError(m)))):f.cache&&s&&this.cache.delete(o).catch(m=>i.emit("error",new e.CacheError(m))),i.emit("response",d||b),typeof n=="function"&&n(d||b)};try{let b=t(f,p);i.emit("request",b)}catch(b){i.emit("error",new e.RequestError(b))}},c=f=>Promise.resolve().then(()=>f.cache?this.cache.get(o):void 0).then(p=>{if(typeof p=="undefined")return u(f);let b=Gd.fromObject(p.cachePolicy);if(b.satisfiesWithoutRevalidation(f)){let d=b.responseHeaders(),m=new US(p.statusCode,d,p.body,p.url);m.cachePolicy=b,m.fromCache=!0,i.emit("response",m),typeof n=="function"&&n(m)}else s=p,f.headers=b.revalidationHeaders(f),u(f)});return this.cache.on("error",f=>i.emit("error",new e.CacheError(f))),c(a).catch(f=>{a.automaticFailover&&!l&&u(a),i.emit("error",new e.CacheError(f))}),i}}};Ir.RequestError=class extends Error{constructor(e){super(e.message),this.name="RequestError",Object.assign(this,e)}};Ir.CacheError=class extends Error{constructor(e){super(e.message),this.name="CacheError",Object.assign(this,e)}};JS.exports=Ir});var qS=O((jW,Wd)=>{"use strict";var Hd=require("stream");function si(e,t,a){typeof a=="undefined"&&(a=t,t=e,e=null),Hd.Duplex.call(this,e),typeof a.read!="function"&&(a=new Hd.Readable(e).wrap(a)),this._writable=t,this._readable=a,this._waiting=!1;var n=this;t.once("finish",function(){n.end()}),this.once("finish",function(){t.end()}),a.on("readable",function(){n._waiting&&(n._waiting=!1,n._read())}),a.once("end",function(){n.push(null)}),(!e||typeof e.bubbleErrors=="undefined"||e.bubbleErrors)&&(t.on("error",function(i){n.emit("error",i)}),a.on("error",function(i){n.emit("error",i)}))}si.prototype=Object.create(Hd.Duplex.prototype,{constructor:{value:si}});si.prototype._write=function(t,a,n){this._writable.write(t,a,n)};si.prototype._read=function(){for(var t,a=0;(t=this._readable.read())!==null;)this.push(t),a++;a===0&&(this._waiting=!0)};Wd.exports=function(t,a,n){return new si(t,a,n)};Wd.exports.DuplexWrapper=si});var eC=O((LW,QS)=>{var XS=ti().Readable,uN=fn();QS.exports=_l;_l.ctor=$S;_l.obj=fN;var pN=$S();function dN(e){return e=e.slice(),function(t,a){var n=null,i=e.length?e.shift():null;i instanceof Error&&(n=i,i=null),a(n,i)}}function _l(e,t){(typeof e!="object"||Array.isArray(e))&&(t=e,e={});var a=new pN(e);return a._from=Array.isArray(t)?dN(t):t||YS,a}function $S(e,t){typeof e=="function"&&(t=e,e={}),e=KS(e),uN(a,XS);function a(n){if(!(this instanceof a))return new a(n);this._reading=!1,this._callback=o,this.destroyed=!1,XS.call(this,n||e);var i=this,r=this._readableState.highWaterMark;function o(s,l){if(!i.destroyed){if(s)return i.destroy(s);if(l===null)return i.push(null);i._reading=!1,i.push(l)&&i._read(r)}}}return a.prototype._from=t||YS,a.prototype._read=function(n){this._reading||this.destroyed||(this._reading=!0,this._from(n,this._callback))},a.prototype.destroy=function(n){if(!this.destroyed){this.destroyed=!0;var i=this;process.nextTick(function(){n&&i.emit("error",n),i.emit("close")})}},a}function fN(e,t){return(typeof e=="function"||Array.isArray(e))&&(t=e,e={}),e=KS(e),e.objectMode=!0,e.highWaterMark=16,_l(e,t)}function YS(){}function KS(e){return e=e||{},e}});var aC=O((MW,tC)=>{"use strict";tC.exports=e=>e instanceof Promise||e!==null&&typeof e=="object"&&typeof e.then=="function"&&typeof e.catch=="function"});var rC=O((DW,Vd)=>{"use strict";var nC=eC(),iC=aC();Vd.exports=e=>{Array.isArray(e)&&(e=e.slice());let t,a;n(e);function n(i){e=i,t=iC(e)?e:null,a=!t&&e[Symbol.iterator]&&typeof e!="string"&&!Buffer.isBuffer(e)?e[Symbol.iterator]():null}return nC(function i(r,o){if(t){t.then(n).then(()=>i.call(this,r,o),o);return}if(a){let l=a.next();setImmediate(o,null,l.done?null:l.value);return}if(e.length===0){setImmediate(o,null,null);return}let s=e.slice(0,r);e=e.slice(r),setImmediate(o,null,s)})};Vd.exports.obj=e=>{Array.isArray(e)&&(e=e.slice());let t,a;n(e);function n(i){e=i,t=iC(e)?e:null,a=!t&&e[Symbol.iterator]?e[Symbol.iterator]():null}return nC.obj(function i(r,o){if(t){t.then(n).then(()=>i.call(this,r,o),o);return}if(a){let s=a.next();setImmediate(o,null,s.done?null:s.value);return}this.push(e),setImmediate(o,null,null)})}});var Zd=O((Ud,Jd)=>{"use strict";Object.defineProperty(Ud,"__esModule",{value:!0});var oC=require("util"),mN=Object.prototype.toString,_r=e=>t=>typeof t===e,Tl=e=>{let t=mN.call(e).slice(8,-1);return t||null},Ke=e=>t=>Tl(t)===e;function oa(e){if(e===null)return"null";if(e===!0||e===!1)return"boolean";let t=typeof e;if(t==="undefined")return"undefined";if(t==="string")return"string";if(t==="number")return"number";if(t==="symbol")return"symbol";if(oa.function_(e))return"Function";if(Array.isArray(e))return"Array";if(Buffer.isBuffer(e))return"Buffer";let a=Tl(e);if(a)return a;if(e instanceof String||e instanceof Boolean||e instanceof Number)throw new TypeError("Please don't use object wrappers for primitive types");return"Object"}(function(e){let t=v=>typeof v=="object";e.undefined=_r("undefined"),e.string=_r("string"),e.number=_r("number"),e.function_=_r("function"),e.null_=v=>v===null,e.class_=v=>e.function_(v)&&v.toString().startsWith("class "),e.boolean=v=>v===!0||v===!1,e.symbol=_r("symbol"),e.array=Array.isArray,e.buffer=Buffer.isBuffer,e.nullOrUndefined=v=>e.null_(v)||e.undefined(v),e.object=v=>!e.nullOrUndefined(v)&&(e.function_(v)||t(v)),e.iterable=v=>!e.nullOrUndefined(v)&&e.function_(v[Symbol.iterator]),e.generator=v=>e.iterable(v)&&e.function_(v.next)&&e.function_(v.throw),e.nativePromise=Ke("Promise");let a=v=>!e.null_(v)&&t(v)&&e.function_(v.then)&&e.function_(v.catch);e.promise=v=>e.nativePromise(v)||a(v);let n=v=>x=>e.function_(x)&&e.function_(x.constructor)&&x.constructor.name===v;e.generatorFunction=n("GeneratorFunction"),e.asyncFunction=n("AsyncFunction"),e.boundFunction=v=>e.function_(v)&&!v.hasOwnProperty("prototype"),e.regExp=Ke("RegExp"),e.date=Ke("Date"),e.error=Ke("Error"),e.map=Ke("Map"),e.set=Ke("Set"),e.weakMap=Ke("WeakMap"),e.weakSet=Ke("WeakSet"),e.int8Array=Ke("Int8Array"),e.uint8Array=Ke("Uint8Array"),e.uint8ClampedArray=Ke("Uint8ClampedArray"),e.int16Array=Ke("Int16Array"),e.uint16Array=Ke("Uint16Array"),e.int32Array=Ke("Int32Array"),e.uint32Array=Ke("Uint32Array"),e.float32Array=Ke("Float32Array"),e.float64Array=Ke("Float64Array"),e.arrayBuffer=Ke("ArrayBuffer"),e.sharedArrayBuffer=Ke("SharedArrayBuffer"),e.dataView=Ke("DataView"),e.directInstanceOf=(v,x)=>e.object(v)&&e.object(x)&&Object.getPrototypeOf(v)===x.prototype,e.truthy=v=>!!v,e.falsy=v=>!v,e.nan=v=>Number.isNaN(v);let i=new Set(["undefined","string","number","boolean","symbol"]);e.primitive=v=>e.null_(v)||i.has(typeof v),e.integer=v=>Number.isInteger(v),e.safeInteger=v=>Number.isSafeInteger(v),e.plainObject=v=>{let x;return Tl(v)==="Object"&&(x=Object.getPrototypeOf(v),x===null||x===Object.getPrototypeOf({}))};let r=new Set(["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array"]);e.typedArray=v=>{let x=Tl(v);return x===null?!1:r.has(x)};let o=v=>e.safeInteger(v)&&v>-1;e.arrayLike=v=>!e.nullOrUndefined(v)&&!e.function_(v)&&o(v.length),e.inRange=(v,x)=>{if(e.number(x))return v>=Math.min(0,x)&&v<=Math.max(x,0);if(e.array(x)&&x.length===2)return v>=Math.min.apply(null,x)&&v<=Math.max.apply(null,x);throw new TypeError(`Invalid range: ${oC.inspect(x)}`)};let s=1,l=["innerHTML","ownerDocument","style","attributes","nodeValue"];e.domElement=v=>e.object(v)&&v.nodeType===s&&e.string(v.nodeName)&&!e.plainObject(v)&&l.every(x=>x in v),e.nodeStream=v=>!e.nullOrUndefined(v)&&t(v)&&e.function_(v.pipe),e.infinite=v=>v===1/0||v===-1/0;let u=v=>x=>e.integer(x)&&Math.abs(x%2)===v;e.even=u(0),e.odd=u(1);let c=v=>e.string(v)&&/\S/.test(v)===!1,f=v=>(e.string(v)||e.array(v))&&v.length===0,p=v=>!e.map(v)&&!e.set(v)&&e.object(v)&&Object.keys(v).length===0,b=v=>(e.map(v)||e.set(v))&&v.size===0;e.empty=v=>e.falsy(v)||f(v)||p(v)||b(v),e.emptyOrWhitespace=v=>e.empty(v)||c(v);let d=(v,x,E)=>{let g=Array.prototype.slice.call(E,1);if(e.function_(x)===!1)throw new TypeError(`Invalid predicate: ${oC.inspect(x)}`);if(g.length===0)throw new TypeError("Invalid number of values");return v.call(g,x)};function m(v){return d(Array.prototype.some,v,arguments)}e.any=m;function h(v){return d(Array.prototype.every,v,arguments)}e.all=h})(oa||(oa={}));Object.defineProperties(oa,{class:{value:oa.class_},function:{value:oa.function_},null:{value:oa.null_}});Ud.default=oa;Jd.exports=oa;Jd.exports.default=oa});var lC=O((zW,sC)=>{"use strict";var hN=require("stream").PassThrough;sC.exports=e=>{e=Object.assign({},e);let t=e.array,a=e.encoding,n=a==="buffer",i=!1;t?i=!(a||n):a=a||"utf8",n&&(a=null);let r=0,o=[],s=new hN({objectMode:i});return a&&s.setEncoding(a),s.on("data",l=>{o.push(l),i?r=o.length:r+=l.length}),s.getBufferedValue=()=>t?o:n?Buffer.concat(o,r):o.join(""),s.getBufferedLength=()=>r,s}});var cC=O((GW,kl)=>{"use strict";var vN=lC();function qd(e,t){if(!e)return Promise.reject(new Error("Expected a stream"));t=Object.assign({maxBuffer:1/0},t);let a=t.maxBuffer,n,i,r=new Promise((o,s)=>{let l=u=>{u&&(u.bufferedData=n.getBufferedValue()),s(u)};n=vN(t),e.once("error",l),e.pipe(n),n.on("data",()=>{n.getBufferedLength()>a&&s(new Error("maxBuffer exceeded"))}),n.once("error",l),n.on("end",o),i=()=>{e.unpipe&&e.unpipe(n)}});return r.then(i,i),r.then(()=>n.getBufferedValue())}kl.exports=qd;kl.exports.buffer=(e,t)=>qd(e,Object.assign({},t,{encoding:"buffer"}));kl.exports.array=(e,t)=>qd(e,Object.assign({},t,{array:!0}))});var pC=O((HW,uC)=>{"use strict";uC.exports=function(e,t){if(e.timeoutTimer)return e;var a=isNaN(t)?t:{socket:t,connect:t},n=e._headers?" to "+e._headers.host:"";a.connect!==void 0&&(e.timeoutTimer=setTimeout(function(){e.abort();var s=new Error("Connection timed out on request"+n);s.code="ETIMEDOUT",e.emit("error",s)},a.connect)),e.on("socket",function(s){if(!(s.connecting||s._connecting)){r();return}s.once("connect",r)});function i(){e.timeoutTimer&&(clearTimeout(e.timeoutTimer),e.timeoutTimer=null)}function r(){i(),a.socket!==void 0&&e.setTimeout(a.socket,function(){e.abort();var s=new Error("Socket timed out on request"+n);s.code="ESOCKETTIMEDOUT",e.emit("error",s)})}return e.on("error",i)}});var fC=O((WW,dC)=>{"use strict";var bN=require("url"),gN=Fd();dC.exports=(e,t)=>{if(typeof e!="string")throw new TypeError(`Expected \`url\` to be of type \`string\`, got \`${typeof e}\` instead.`);let a=gN(e,Object.assign({https:!0},t));return bN.parse(a)}});var hC=O((VW,mC)=>{"use strict";function xN(e){var t={protocol:e.protocol,hostname:e.hostname,hash:e.hash,search:e.search,pathname:e.pathname,path:`${e.pathname}${e.search}`,href:e.href};return e.port!==""&&(t.port=Number(e.port)),(e.username||e.password)&&(t.auth=`${e.username}:${e.password}`),t}mC.exports=xN});var vC=O(()=>{});var gC=O((ZW,bC)=>{"use strict";var yN=["ETIMEDOUT","ECONNRESET","EADDRINUSE","ESOCKETTIMEDOUT","ECONNREFUSED","EPIPE","EHOSTUNREACH","EAI_AGAIN"],wN=["ENOTFOUND","ENETUNREACH","UNABLE_TO_GET_ISSUER_CERT","UNABLE_TO_GET_CRL","UNABLE_TO_DECRYPT_CERT_SIGNATURE","UNABLE_TO_DECRYPT_CRL_SIGNATURE","UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY","CERT_SIGNATURE_FAILURE","CRL_SIGNATURE_FAILURE","CERT_NOT_YET_VALID","CERT_HAS_EXPIRED","CRL_NOT_YET_VALID","CRL_HAS_EXPIRED","ERROR_IN_CERT_NOT_BEFORE_FIELD","ERROR_IN_CERT_NOT_AFTER_FIELD","ERROR_IN_CRL_LAST_UPDATE_FIELD","ERROR_IN_CRL_NEXT_UPDATE_FIELD","OUT_OF_MEM","DEPTH_ZERO_SELF_SIGNED_CERT","SELF_SIGNED_CERT_IN_CHAIN","UNABLE_TO_GET_ISSUER_CERT_LOCALLY","UNABLE_TO_VERIFY_LEAF_SIGNATURE","CERT_CHAIN_TOO_LONG","CERT_REVOKED","INVALID_CA","PATH_LENGTH_EXCEEDED","INVALID_PURPOSE","CERT_UNTRUSTED","CERT_REJECTED"];bC.exports=function(e){return!e||!e.code||yN.indexOf(e.code)!==-1?!0:wN.indexOf(e.code)===-1}});var yC=O((qW,xC)=>{"use strict";xC.exports=typeof Symbol=="function"&&typeof Symbol("")=="symbol"});var EC=O((XW,wC)=>{"use strict";wC.exports=yC()&&typeof Symbol.toStringTag=="symbol"});var CC=O(($W,SC)=>{"use strict";SC.exports=function(t){return typeof t=="object"&&t!==null}});var _C=O((YW,IC)=>{"use strict";var EN=EC(),AC=CC(),SN=Object.prototype.toString,CN="[object URL]",AN="hash",IN="host",_N="hostname",TN="href",kN="password",FN="pathname",PN="port",ON="protocol",RN="search",BN="username",Xd=(e,t)=>AC(e)?!EN&&SN.call(e)===CN?!0:!(!(TN in e)||!(ON in e)||!(BN in e)||!(kN in e)||!(_N in e)||!(PN in e)||!(IN in e)||!(FN in e)||!(RN in e)||!(AN in e)||t!==!0&&!AC(e.searchParams)):!1;Xd.lenient=e=>Xd(e,!0);IC.exports=Xd});var Yd=O((KW,$d)=>{"use strict";var Fl=class extends Error{constructor(){super("Promise was canceled"),this.name="CancelError"}get isCanceled(){return!0}},Pl=class e{static fn(t){return function(){let a=[].slice.apply(arguments);return new e((n,i,r)=>{a.push(r),t.apply(null,a).then(n,i)})}}constructor(t){this._cancelHandlers=[],this._isPending=!0,this._isCanceled=!1,this._promise=new Promise((a,n)=>(this._reject=n,t(i=>{this._isPending=!1,a(i)},i=>{this._isPending=!1,n(i)},i=>{this._cancelHandlers.push(i)})))}then(t,a){return this._promise.then(t,a)}catch(t){return this._promise.catch(t)}finally(t){return this._promise.finally(t)}cancel(){if(!(!this._isPending||this._isCanceled)){if(this._cancelHandlers.length>0)try{for(let t of this._cancelHandlers)t()}catch(t){this._reject(t)}this._isCanceled=!0,this._reject(new Fl)}}get isCanceled(){return this._isCanceled}};Object.setPrototypeOf(Pl.prototype,Promise.prototype);$d.exports=Pl;$d.exports.CancelError=Fl});var kC=O((QW,TC)=>{"use strict";TC.exports=(e,t)=>(t=t||(()=>{}),e.then(a=>new Promise(n=>{n(t())}).then(()=>a),a=>new Promise(n=>{n(t())}).then(()=>{throw a})))});var Qd=O((eV,Kd)=>{"use strict";var NN=kC(),Ol=class extends Error{constructor(t){super(t),this.name="TimeoutError"}};Kd.exports=(e,t,a)=>new Promise((n,i)=>{if(typeof t!="number"||t<0)throw new TypeError("Expected `ms` to be a positive number");let r=setTimeout(()=>{if(typeof a=="function"){try{n(a())}catch(l){i(l)}return}let o=typeof a=="string"?a:`Promise timed out after ${t} milliseconds`,s=a instanceof Error?a:new Ol(o);typeof e.cancel=="function"&&e.cancel(),i(s)},t);NN(e.then(n,i),()=>{clearTimeout(r)})});Kd.exports.TimeoutError=Ol});var OC=O((tV,PC)=>{"use strict";var FC=(e,t)=>function(){let a=t.promiseModule,n=new Array(arguments.length);for(let i=0;i{t.errorFirst?n.push(function(o,s){if(t.multiArgs){let l=new Array(arguments.length-1);for(let u=1;u{t=Object.assign({exclude:[/.+(Sync|Stream)$/],errorFirst:!0,promiseModule:Promise},t);let a=i=>{let r=o=>typeof o=="string"?i===o:o.test(i);return t.include?t.include.some(r):!t.exclude.some(r)},n;typeof e=="function"?n=function(){return t.excludeMain?e.apply(this,arguments):FC(e,t).apply(this,arguments)}:n=Object.create(Object.getPrototypeOf(e));for(let i in e){let r=e[i];n[i]=typeof r=="function"&&a(i)?FC(r,t):r}return n}});var RC=O((aV,jN)=>{jN.exports={name:"got",version:"8.3.2",description:"Simplified HTTP requests",license:"MIT",repository:"sindresorhus/got",maintainers:[{name:"Sindre Sorhus",email:"sindresorhus@gmail.com",url:"sindresorhus.com"},{name:"Vsevolod Strukchinsky",email:"floatdrop@gmail.com",url:"github.com/floatdrop"},{name:"Alexander Tesfamichael",email:"alex.tesfamichael@gmail.com",url:"alextes.me"}],engines:{node:">=4"},scripts:{test:"xo && nyc ava",coveralls:"nyc report --reporter=text-lcov | coveralls"},files:["index.js","errors.js"],keywords:["http","https","get","got","url","uri","request","util","utility","simple","curl","wget","fetch","net","network","electron"],dependencies:{"@sindresorhus/is":"^0.7.0","cacheable-request":"^2.1.1","decompress-response":"^3.3.0",duplexer3:"^0.1.4","get-stream":"^3.0.0","into-stream":"^3.1.0","is-retry-allowed":"^1.1.0",isurl:"^1.0.0-alpha5","lowercase-keys":"^1.0.0","mimic-response":"^1.0.0","p-cancelable":"^0.4.0","p-timeout":"^2.0.1",pify:"^3.0.0","safe-buffer":"^5.1.1","timed-out":"^4.0.1","url-parse-lax":"^3.0.0","url-to-options":"^1.0.1"},devDependencies:{ava:"^0.25.0",coveralls:"^3.0.0","form-data":"^2.1.1","get-port":"^3.0.0",nyc:"^11.0.2","p-event":"^1.3.0",pem:"^1.4.4",proxyquire:"^1.8.0",sinon:"^4.0.0","slow-stream":"0.0.4",tempfile:"^2.0.0",tempy:"^0.2.1","universal-url":"1.0.0-alpha",xo:"^0.20.0"},ava:{concurrency:4},browser:{"decompress-response":!1,electron:!1}}});var BC=O((nV,la)=>{"use strict";var LN=require("url"),ef=require("http"),MN=Yd(),DN=Zd(),sa=class extends Error{constructor(t,a,n){super(t),Error.captureStackTrace(this,this.constructor),this.name="GotError",DN.undefined(a.code)||(this.code=a.code),Object.assign(this,{host:n.host,hostname:n.hostname,method:n.method,path:n.path,protocol:n.protocol,url:n.href})}};la.exports.GotError=sa;la.exports.CacheError=class extends sa{constructor(e,t){super(e.message,e,t),this.name="CacheError"}};la.exports.RequestError=class extends sa{constructor(e,t){super(e.message,e,t),this.name="RequestError"}};la.exports.ReadError=class extends sa{constructor(e,t){super(e.message,e,t),this.name="ReadError"}};la.exports.ParseError=class extends sa{constructor(e,t,a,n){super(`${e.message} in "${LN.format(a)}": +${n.slice(0,77)}...`,e,a),this.name="ParseError",this.statusCode=t,this.statusMessage=ef.STATUS_CODES[this.statusCode]}};la.exports.HTTPError=class extends sa{constructor(e,t,a,n){t?t=t.replace(/\r?\n/g," ").trim():t=ef.STATUS_CODES[e],super(`Response code ${e} (${t})`,{},n),this.name="HTTPError",this.statusCode=e,this.statusMessage=t,this.headers=a}};la.exports.MaxRedirectsError=class extends sa{constructor(e,t,a){super("Redirected 10 times. Aborting.",{},a),this.name="MaxRedirectsError",this.statusCode=e,this.statusMessage=ef.STATUS_CODES[this.statusCode],this.redirectUrls=t}};la.exports.UnsupportedProtocolError=class extends sa{constructor(e){super(`Unsupported protocol "${e.protocol}"`,{},e),this.name="UnsupportedProtocolError"}};la.exports.CancelError=MN.CancelError});var qC=O((pV,ZC)=>{"use strict";var WC=require("events"),zN=require("http"),GN=require("https"),NC=require("stream").PassThrough,HN=require("stream").Transform,Tr=require("url"),jC=require("fs"),LC=require("querystring"),MC=ZS(),WN=qS(),VN=rC(),xe=Zd(),DC=cC(),UN=pC(),JN=fC(),ZN=hC(),qN=jd(),zC=vC(),XN=Md(),$N=gC(),YN=_C(),KN=Yd(),QN=Qd(),GC=OC(),Rl=Bs().Buffer,HC=RC(),ej=BC(),tj=new Set([300,301,302,303,304,305,307,308]),aj=new Set([300,303,307,308]),tf=e=>xe.nodeStream(e)&&xe.function(e.getBoundary),nj=e=>{let t=e.body;return e.headers["content-length"]?Number(e.headers["content-length"]):!t&&!e.stream?0:xe.string(t)?Rl.byteLength(t):tf(t)?GC(t.getLength.bind(t))():t instanceof jC.ReadStream?GC(jC.stat)(t.path).then(a=>a.size):xe.nodeStream(t)&&xe.buffer(t._buffer)?t._buffer.length:null};function VC(e){e=e||{};let t=new WC,a=e.href||Tr.resolve(Tr.format(e),e.path),n=[],i=xe.object(e.agent)?e.agent:null,r=0,o,s,l=0,u=c=>{if(c.protocol!=="http:"&&c.protocol!=="https:"){t.emit("error",new tt.UnsupportedProtocolError(c));return}let f=c.protocol==="https:"?GN:zN;if(i){let m=c.protocol==="https:"?"https":"http";c.agent=i[m]||c.agent}if(c.useElectronNet&&process.versions.electron){let m=require("electron");f=m.net||m.remote.net}let p,d=new MC(f.request,c.cache)(c,m=>{clearInterval(p),t.emit("uploadProgress",{percent:1,transferred:l,total:s});let h=m.statusCode;m.url=o||a,m.requestUrl=a;let v=c.followRedirect&&"location"in m.headers,x=v&&tj.has(h);if(v&&aj.has(h)||x&&(c.method==="GET"||c.method==="HEAD")){if(m.resume(),h===303&&(c.method="GET"),n.length>=10){t.emit("error",new tt.MaxRedirectsError(h,n,c),null,m);return}let g=Rl.from(m.headers.location,"binary").toString();o=Tr.resolve(Tr.format(c),g),n.push(o);let w=Object.assign({},c,Tr.parse(o));t.emit("redirect",m,w),u(w);return}setImmediate(()=>{try{ij(m,c,t,n)}catch(g){t.emit("error",g)}})});d.on("error",m=>{m instanceof MC.RequestError?t.emit("error",new tt.RequestError(m,c)):t.emit("error",new tt.CacheError(m,c))}),d.once("request",m=>{let h=!1;m.once("abort",v=>{h=!0}),m.once("error",v=>{if(clearInterval(p),h)return;let x=c.retries(++r,v);if(x){setTimeout(u,x,c);return}t.emit("error",new tt.RequestError(v,c))}),t.once("request",v=>{t.emit("uploadProgress",{percent:0,transferred:0,total:s});let x=v.connection;if(x){let E=x.connecting===void 0?x._connecting:x.connecting,g=()=>{p=setInterval(()=>{if(x.destroyed){clearInterval(p);return}let C=l,y=v._header?Rl.byteLength(v._header):0;l=x.bytesWritten-y,s&&l>s&&(l=s),!(l===C||l===s)&&t.emit("uploadProgress",{percent:s?l/s:0,transferred:l,total:s})},150)};E?x.once("connect",g):g()}}),c.gotTimeout&&(clearInterval(p),UN(m,c.gotTimeout)),setImmediate(()=>{t.emit("request",m)})})};return setImmediate(()=>{Promise.resolve(nj(e)).then(c=>{s=c,xe.undefined(e.headers["content-length"])&&xe.undefined(e.headers["transfer-encoding"])&&tf(e.body)&&(e.headers["content-length"]=c),u(e)}).catch(c=>{t.emit("error",c)})}),t}function ij(e,t,a,n){let i=Number(e.headers["content-length"])||null,r=0,o=new HN({transform(l,u,c){r+=l.length;let f=i?r/i:0;f<1&&a.emit("downloadProgress",{percent:f,transferred:r,total:i}),c(null,l)},flush(l){a.emit("downloadProgress",{percent:1,transferred:r,total:i}),l()}});XN(e,o),o.redirectUrls=n;let s=t.decompress===!0&&xe.function(zC)&&t.method!=="HEAD"?zC(o):o;!t.decompress&&["gzip","deflate"].indexOf(e.headers["content-encoding"])!==-1&&(t.encoding=null),a.emit("response",s),a.emit("downloadProgress",{percent:0,transferred:0,total:i}),e.pipe(o)}function rj(e){let t=r=>e.gotTimeout&&e.gotTimeout.request?QN(r,e.gotTimeout.request,new tt.RequestError({message:"Request timed out",code:"ETIMEDOUT"},e)):r,a=new WC,n=new KN((r,o,s)=>{let l=VC(e),u=!1;s(()=>{u=!0}),l.on("request",c=>{if(u&&c.abort(),s(()=>{c.abort()}),xe.nodeStream(e.body)){e.body.pipe(c),e.body=void 0;return}c.end(e.body)}),l.on("response",c=>{(xe.null(e.encoding)?DC.buffer(c):DC(c,e)).catch(p=>o(new tt.ReadError(p,e))).then(p=>{let b=c.statusCode,d=e.followRedirect?299:399;if(c.body=p,e.json&&c.body)try{c.body=JSON.parse(c.body)}catch(m){if(b>=200&&b<300)throw new tt.ParseError(m,b,e,p)}if(e.throwHttpErrors&&b!==304&&(b<200||b>d))throw new tt.HTTPError(b,c.statusMessage,c.headers,e);r(c)}).catch(p=>{Object.defineProperty(p,"response",{value:c}),o(p)})}),l.once("error",o),l.on("redirect",a.emit.bind(a,"redirect")),l.on("uploadProgress",a.emit.bind(a,"uploadProgress")),l.on("downloadProgress",a.emit.bind(a,"downloadProgress"))});Object.defineProperty(n,"canceled",{get(){return n.isCanceled}});let i=t(n);return i.cancel=n.cancel.bind(n),i.on=(r,o)=>(a.on(r,o),i),i}function UC(e){e.stream=!0;let t=new NC,a=new NC,n=WN(t,a),i;if(e.gotTimeout&&e.gotTimeout.request&&(i=setTimeout(()=>{n.emit("error",new tt.RequestError({message:"Request timed out",code:"ETIMEDOUT"},e))},e.gotTimeout.request)),e.json)throw new Error("Got can not be used as a stream when the `json` option is used");e.body&&(n.write=()=>{throw new Error("Got's stream is not writable when the `body` option is used")});let r=VC(e);return r.on("request",o=>{if(n.emit("request",o),xe.nodeStream(e.body)){e.body.pipe(o);return}if(e.body){o.end(e.body);return}if(e.method==="POST"||e.method==="PUT"||e.method==="PATCH"){t.pipe(o);return}o.end()}),r.on("response",o=>{clearTimeout(i);let s=o.statusCode;if(o.on("error",l=>{n.emit("error",new tt.ReadError(l,e))}),o.pipe(a),e.throwHttpErrors&&s!==304&&(s<200||s>299)){n.emit("error",new tt.HTTPError(s,o.statusMessage,o.headers,e),null,o);return}n.emit("response",o)}),r.on("error",n.emit.bind(n,"error")),r.on("redirect",n.emit.bind(n,"redirect")),r.on("uploadProgress",n.emit.bind(n,"uploadProgress")),r.on("downloadProgress",n.emit.bind(n,"downloadProgress")),n}function JC(e,t){if(!xe.string(e)&&!xe.object(e))throw new TypeError(`Parameter \`url\` must be a string or object, not ${xe(e)}`);if(xe.string(e)){e=e.replace(/^unix:/,"http://$&");try{decodeURI(e)}catch(r){throw new Error("Parameter `url` must contain valid UTF-8 character sequences")}if(e=JN(e),e.auth)throw new Error("Basic authentication must be done with the `auth` option")}else YN.lenient(e)&&(e=ZN(e));t=Object.assign({path:"",retries:2,cache:!1,decompress:!0,useElectronNet:!1,throwHttpErrors:!0},e,{protocol:e.protocol||"http:"},t);let a=qN(t.headers);for(let r of Object.keys(a))xe.nullOrUndefined(a[r])&&delete a[r];t.headers=Object.assign({"user-agent":`${HC.name}/${HC.version} (https://github.com/sindresorhus/got)`},a),t.decompress&&xe.undefined(t.headers["accept-encoding"])&&(t.headers["accept-encoding"]="gzip, deflate");let n=t.query;n&&(xe.string(n)||(t.query=LC.stringify(n)),t.path=`${t.path.split("?")[0]}?${t.query}`,delete t.query),t.json&&xe.undefined(t.headers.accept)&&(t.headers.accept="application/json");let i=t.body;if(xe.nullOrUndefined(i))t.method=(t.method||"GET").toUpperCase();else{let r=t.headers;if(!xe.nodeStream(i)&&!xe.string(i)&&!xe.buffer(i)&&!(t.form||t.json))throw new TypeError("The `body` option must be a stream.Readable, string, Buffer or plain Object");let o=xe.plainObject(i)||xe.array(i);if((t.form||t.json)&&!o)throw new TypeError("The `body` option must be a plain Object or Array when the `form` or `json` option is used");if(tf(i)?r["content-type"]=r["content-type"]||`multipart/form-data; boundary=${i.getBoundary()}`:t.form&&o?(r["content-type"]=r["content-type"]||"application/x-www-form-urlencoded",t.body=LC.stringify(i)):t.json&&o&&(r["content-type"]=r["content-type"]||"application/json",t.body=JSON.stringify(i)),xe.undefined(r["content-length"])&&xe.undefined(r["transfer-encoding"])&&!xe.nodeStream(i)){let s=xe.string(t.body)?Rl.byteLength(t.body):t.body.length;r["content-length"]=s}xe.buffer(i)&&(t.body=VN(i),t.body._buffer=i),t.method=(t.method||"POST").toUpperCase()}if(t.hostname==="unix"){let r=/(.+?):(.+)/.exec(t.path);r&&(t.socketPath=r[1],t.path=r[2],t.host=null)}if(!xe.function(t.retries)){let r=t.retries;t.retries=(o,s)=>{if(o>r||!$N(s))return 0;let l=Math.random()*100;return(1<UC(JC(e,t));var oj=["get","post","put","patch","head","delete"];for(let e of oj)tt[e]=(t,a)=>tt(t,Object.assign({},a,{method:e})),tt.stream[e]=(t,a)=>tt.stream(t,Object.assign({},a,{method:e}));Object.assign(tt,ej);ZC.exports=tt});var af=O((dV,$C)=>{"use strict";var XC=(e,t)=>function(...a){let n=t.promiseModule;return new n((i,r)=>{t.multiArgs?a.push((...o)=>{t.errorFirst?o[0]?r(o):(o.shift(),i(o)):i(o)}):t.errorFirst?a.push((o,s)=>{o?r(o):i(s)}):a.push(i),e.apply(this,a)})};$C.exports=(e,t)=>{t=Object.assign({exclude:[/.+(Sync|Stream)$/],errorFirst:!0,promiseModule:Promise},t);let a=typeof e;if(!(e!==null&&(a==="object"||a==="function")))throw new TypeError(`Expected \`input\` to be a \`Function\` or \`Object\`, got \`${e===null?"null":a}\``);let n=r=>{let o=s=>typeof s=="string"?r===s:s.test(r);return t.include?t.include.some(o):!t.exclude.some(o)},i;a==="function"?i=function(...r){return t.excludeMain?e(...r):XC(e,t).apply(this,r)}:i=Object.create(Object.getPrototypeOf(e));for(let r in e){let o=e[r];i[r]=typeof o=="function"&&n(r)?XC(o,t):o}return i}});var fA=O((ce,dA)=>{ce=dA.exports=be;var Te;typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?Te=function(){var e=Array.prototype.slice.call(arguments,0);e.unshift("SEMVER"),console.log.apply(console,e)}:Te=function(){};ce.SEMVER_SPEC_VERSION="2.0.0";var rf=256,Bl=Number.MAX_SAFE_INTEGER||9007199254740991,nf=16,Oe=ce.re=[],G=ce.src=[],ve=0,li=ve++;G[li]="0|[1-9]\\d*";var ci=ve++;G[ci]="[0-9]+";var cf=ve++;G[cf]="\\d*[a-zA-Z-][a-zA-Z0-9-]*";var KC=ve++;G[KC]="("+G[li]+")\\.("+G[li]+")\\.("+G[li]+")";var QC=ve++;G[QC]="("+G[ci]+")\\.("+G[ci]+")\\.("+G[ci]+")";var of=ve++;G[of]="(?:"+G[li]+"|"+G[cf]+")";var sf=ve++;G[sf]="(?:"+G[ci]+"|"+G[cf]+")";var uf=ve++;G[uf]="(?:-("+G[of]+"(?:\\."+G[of]+")*))";var pf=ve++;G[pf]="(?:-?("+G[sf]+"(?:\\."+G[sf]+")*))";var lf=ve++;G[lf]="[0-9A-Za-z-]+";var Pr=ve++;G[Pr]="(?:\\+("+G[lf]+"(?:\\."+G[lf]+")*))";var df=ve++,eA="v?"+G[KC]+G[uf]+"?"+G[Pr]+"?";G[df]="^"+eA+"$";var ff="[v=\\s]*"+G[QC]+G[pf]+"?"+G[Pr]+"?",mf=ve++;G[mf]="^"+ff+"$";var di=ve++;G[di]="((?:<|>)?=?)";var Nl=ve++;G[Nl]=G[ci]+"|x|X|\\*";var jl=ve++;G[jl]=G[li]+"|x|X|\\*";var bn=ve++;G[bn]="[v=\\s]*("+G[jl]+")(?:\\.("+G[jl]+")(?:\\.("+G[jl]+")(?:"+G[uf]+")?"+G[Pr]+"?)?)?";var pi=ve++;G[pi]="[v=\\s]*("+G[Nl]+")(?:\\.("+G[Nl]+")(?:\\.("+G[Nl]+")(?:"+G[pf]+")?"+G[Pr]+"?)?)?";var tA=ve++;G[tA]="^"+G[di]+"\\s*"+G[bn]+"$";var aA=ve++;G[aA]="^"+G[di]+"\\s*"+G[pi]+"$";var nA=ve++;G[nA]="(?:^|[^\\d])(\\d{1,"+nf+"})(?:\\.(\\d{1,"+nf+"}))?(?:\\.(\\d{1,"+nf+"}))?(?:$|[^\\d])";var Hl=ve++;G[Hl]="(?:~>?)";var Ll=ve++;G[Ll]="(\\s*)"+G[Hl]+"\\s+";Oe[Ll]=new RegExp(G[Ll],"g");var sj="$1~",iA=ve++;G[iA]="^"+G[Hl]+G[bn]+"$";var rA=ve++;G[rA]="^"+G[Hl]+G[pi]+"$";var Wl=ve++;G[Wl]="(?:\\^)";var Ml=ve++;G[Ml]="(\\s*)"+G[Wl]+"\\s+";Oe[Ml]=new RegExp(G[Ml],"g");var lj="$1^",oA=ve++;G[oA]="^"+G[Wl]+G[bn]+"$";var sA=ve++;G[sA]="^"+G[Wl]+G[pi]+"$";var hf=ve++;G[hf]="^"+G[di]+"\\s*("+ff+")$|^$";var vf=ve++;G[vf]="^"+G[di]+"\\s*("+eA+")$|^$";var kr=ve++;G[kr]="(\\s*)"+G[di]+"\\s*("+ff+"|"+G[bn]+")";Oe[kr]=new RegExp(G[kr],"g");var cj="$1$2$3",lA=ve++;G[lA]="^\\s*("+G[bn]+")\\s+-\\s+("+G[bn]+")\\s*$";var cA=ve++;G[cA]="^\\s*("+G[pi]+")\\s+-\\s+("+G[pi]+")\\s*$";var uA=ve++;G[uA]="(<|>)?=?\\s*\\*";for(Wa=0;Warf)return null;var a=t.loose?Oe[mf]:Oe[df];if(!a.test(e))return null;try{return new be(e,t)}catch(n){return null}}ce.valid=uj;function uj(e,t){var a=gn(e,t);return a?a.version:null}ce.clean=pj;function pj(e,t){var a=gn(e.trim().replace(/^[=v]+/,""),t);return a?a.version:null}ce.SemVer=be;function be(e,t){if((!t||typeof t!="object")&&(t={loose:!!t,includePrerelease:!1}),e instanceof be){if(e.loose===t.loose)return e;e=e.version}else if(typeof e!="string")throw new TypeError("Invalid Version: "+e);if(e.length>rf)throw new TypeError("version is longer than "+rf+" characters");if(!(this instanceof be))return new be(e,t);Te("SemVer",e,t),this.options=t,this.loose=!!t.loose;var a=e.trim().match(t.loose?Oe[mf]:Oe[df]);if(!a)throw new TypeError("Invalid Version: "+e);if(this.raw=e,this.major=+a[1],this.minor=+a[2],this.patch=+a[3],this.major>Bl||this.major<0)throw new TypeError("Invalid major version");if(this.minor>Bl||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>Bl||this.patch<0)throw new TypeError("Invalid patch version");a[4]?this.prerelease=a[4].split(".").map(function(n){if(/^[0-9]+$/.test(n)){var i=+n;if(i>=0&&i=0;)typeof this.prerelease[a]=="number"&&(this.prerelease[a]++,a=-2);a===-1&&this.prerelease.push(0)}t&&(this.prerelease[0]===t?isNaN(this.prerelease[1])&&(this.prerelease=[t,0]):this.prerelease=[t,0]);break;default:throw new Error("invalid increment argument: "+e)}return this.format(),this.raw=this.version,this};ce.inc=dj;function dj(e,t,a,n){typeof a=="string"&&(n=a,a=void 0);try{return new be(e,a).inc(t,n).version}catch(i){return null}}ce.diff=fj;function fj(e,t){if(bf(e,t))return null;var a=gn(e),n=gn(t),i="";if(a.prerelease.length||n.prerelease.length){i="pre";var r="prerelease"}for(var o in a)if((o==="major"||o==="minor"||o==="patch")&&a[o]!==n[o])return i+o;return r}ce.compareIdentifiers=ui;var YC=/^[0-9]+$/;function ui(e,t){var a=YC.test(e),n=YC.test(t);return a&&n&&(e=+e,t=+t),e===t?0:a&&!n?-1:n&&!a?1:e0}ce.lt=Dl;function Dl(e,t,a){return Sa(e,t,a)<0}ce.eq=bf;function bf(e,t,a){return Sa(e,t,a)===0}ce.neq=pA;function pA(e,t,a){return Sa(e,t,a)!==0}ce.gte=gf;function gf(e,t,a){return Sa(e,t,a)>=0}ce.lte=xf;function xf(e,t,a){return Sa(e,t,a)<=0}ce.cmp=zl;function zl(e,t,a,n){switch(t){case"===":return typeof e=="object"&&(e=e.version),typeof a=="object"&&(a=a.version),e===a;case"!==":return typeof e=="object"&&(e=e.version),typeof a=="object"&&(a=a.version),e!==a;case"":case"=":case"==":return bf(e,a,n);case"!=":return pA(e,a,n);case">":return Fr(e,a,n);case">=":return gf(e,a,n);case"<":return Dl(e,a,n);case"<=":return xf(e,a,n);default:throw new TypeError("Invalid operator: "+t)}}ce.Comparator=Gt;function Gt(e,t){if((!t||typeof t!="object")&&(t={loose:!!t,includePrerelease:!1}),e instanceof Gt){if(e.loose===!!t.loose)return e;e=e.value}if(!(this instanceof Gt))return new Gt(e,t);Te("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===Or?this.value="":this.value=this.operator+this.semver.version,Te("comp",this)}var Or={};Gt.prototype.parse=function(e){var t=this.options.loose?Oe[hf]:Oe[vf],a=e.match(t);if(!a)throw new TypeError("Invalid comparator: "+e);this.operator=a[1],this.operator==="="&&(this.operator=""),a[2]?this.semver=new be(a[2],this.options.loose):this.semver=Or};Gt.prototype.toString=function(){return this.value};Gt.prototype.test=function(e){return Te("Comparator.test",e,this.options.loose),this.semver===Or?!0:(typeof e=="string"&&(e=new be(e,this.options)),zl(e,this.operator,this.semver,this.options))};Gt.prototype.intersects=function(e,t){if(!(e instanceof Gt))throw new TypeError("a Comparator is required");(!t||typeof t!="object")&&(t={loose:!!t,includePrerelease:!1});var a;if(this.operator==="")return a=new Ve(e.value,t),Gl(this.value,a,t);if(e.operator==="")return a=new Ve(this.value,t),Gl(e.semver,a,t);var n=(this.operator===">="||this.operator===">")&&(e.operator===">="||e.operator===">"),i=(this.operator==="<="||this.operator==="<")&&(e.operator==="<="||e.operator==="<"),r=this.semver.version===e.semver.version,o=(this.operator===">="||this.operator==="<=")&&(e.operator===">="||e.operator==="<="),s=zl(this.semver,"<",e.semver,t)&&(this.operator===">="||this.operator===">")&&(e.operator==="<="||e.operator==="<"),l=zl(this.semver,">",e.semver,t)&&(this.operator==="<="||this.operator==="<")&&(e.operator===">="||e.operator===">");return n||i||r&&o||s||l};ce.Range=Ve;function Ve(e,t){if((!t||typeof t!="object")&&(t={loose:!!t,includePrerelease:!1}),e instanceof Ve)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new Ve(e.raw,t);if(e instanceof Gt)return new Ve(e.value,t);if(!(this instanceof Ve))return new Ve(e,t);if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(function(a){return this.parseRange(a.trim())},this).filter(function(a){return a.length}),!this.set.length)throw new TypeError("Invalid SemVer Range: "+e);this.format()}Ve.prototype.format=function(){return this.range=this.set.map(function(e){return e.join(" ").trim()}).join("||").trim(),this.range};Ve.prototype.toString=function(){return this.range};Ve.prototype.parseRange=function(e){var t=this.options.loose;e=e.trim();var a=t?Oe[cA]:Oe[lA];e=e.replace(a,Pj),Te("hyphen replace",e),e=e.replace(Oe[kr],cj),Te("comparator trim",e,Oe[kr]),e=e.replace(Oe[Ll],sj),e=e.replace(Oe[Ml],lj),e=e.split(/\s+/).join(" ");var n=t?Oe[hf]:Oe[vf],i=e.split(" ").map(function(r){return Sj(r,this.options)},this).join(" ").split(/\s+/);return this.options.loose&&(i=i.filter(function(r){return!!r.match(n)})),i=i.map(function(r){return new Gt(r,this.options)},this),i};Ve.prototype.intersects=function(e,t){if(!(e instanceof Ve))throw new TypeError("a Range is required");return this.set.some(function(a){return a.every(function(n){return e.set.some(function(i){return i.every(function(r){return n.intersects(r,t)})})})})};ce.toComparators=Ej;function Ej(e,t){return new Ve(e,t).set.map(function(a){return a.map(function(n){return n.value}).join(" ").trim().split(" ")})}function Sj(e,t){return Te("comp",e,t),e=Ij(e,t),Te("caret",e),e=Cj(e,t),Te("tildes",e),e=Tj(e,t),Te("xrange",e),e=Fj(e,t),Te("stars",e),e}function xt(e){return!e||e.toLowerCase()==="x"||e==="*"}function Cj(e,t){return e.trim().split(/\s+/).map(function(a){return Aj(a,t)}).join(" ")}function Aj(e,t){var a=t.loose?Oe[rA]:Oe[iA];return e.replace(a,function(n,i,r,o,s){Te("tilde",e,n,i,r,o,s);var l;return xt(i)?l="":xt(r)?l=">="+i+".0.0 <"+(+i+1)+".0.0":xt(o)?l=">="+i+"."+r+".0 <"+i+"."+(+r+1)+".0":s?(Te("replaceTilde pr",s),l=">="+i+"."+r+"."+o+"-"+s+" <"+i+"."+(+r+1)+".0"):l=">="+i+"."+r+"."+o+" <"+i+"."+(+r+1)+".0",Te("tilde return",l),l})}function Ij(e,t){return e.trim().split(/\s+/).map(function(a){return _j(a,t)}).join(" ")}function _j(e,t){Te("caret",e,t);var a=t.loose?Oe[sA]:Oe[oA];return e.replace(a,function(n,i,r,o,s){Te("caret",e,n,i,r,o,s);var l;return xt(i)?l="":xt(r)?l=">="+i+".0.0 <"+(+i+1)+".0.0":xt(o)?i==="0"?l=">="+i+"."+r+".0 <"+i+"."+(+r+1)+".0":l=">="+i+"."+r+".0 <"+(+i+1)+".0.0":s?(Te("replaceCaret pr",s),i==="0"?r==="0"?l=">="+i+"."+r+"."+o+"-"+s+" <"+i+"."+r+"."+(+o+1):l=">="+i+"."+r+"."+o+"-"+s+" <"+i+"."+(+r+1)+".0":l=">="+i+"."+r+"."+o+"-"+s+" <"+(+i+1)+".0.0"):(Te("no pr"),i==="0"?r==="0"?l=">="+i+"."+r+"."+o+" <"+i+"."+r+"."+(+o+1):l=">="+i+"."+r+"."+o+" <"+i+"."+(+r+1)+".0":l=">="+i+"."+r+"."+o+" <"+(+i+1)+".0.0"),Te("caret return",l),l})}function Tj(e,t){return Te("replaceXRanges",e,t),e.split(/\s+/).map(function(a){return kj(a,t)}).join(" ")}function kj(e,t){e=e.trim();var a=t.loose?Oe[aA]:Oe[tA];return e.replace(a,function(n,i,r,o,s,l){Te("xRange",e,n,i,r,o,s,l);var u=xt(r),c=u||xt(o),f=c||xt(s),p=f;return i==="="&&p&&(i=""),u?i===">"||i==="<"?n="<0.0.0":n="*":i&&p?(c&&(o=0),s=0,i===">"?(i=">=",c?(r=+r+1,o=0,s=0):(o=+o+1,s=0)):i==="<="&&(i="<",c?r=+r+1:o=+o+1),n=i+r+"."+o+"."+s):c?n=">="+r+".0.0 <"+(+r+1)+".0.0":f&&(n=">="+r+"."+o+".0 <"+r+"."+(+o+1)+".0"),Te("xRange return",n),n})}function Fj(e,t){return Te("replaceStars",e,t),e.trim().replace(Oe[uA],"")}function Pj(e,t,a,n,i,r,o,s,l,u,c,f,p){return xt(a)?t="":xt(n)?t=">="+a+".0.0":xt(i)?t=">="+a+"."+n+".0":t=">="+t,xt(l)?s="":xt(u)?s="<"+(+l+1)+".0.0":xt(c)?s="<"+l+"."+(+u+1)+".0":f?s="<="+l+"."+u+"."+c+"-"+f:s="<="+s,(t+" "+s).trim()}Ve.prototype.test=function(e){if(!e)return!1;typeof e=="string"&&(e=new be(e,this.options));for(var t=0;t0){var i=e[n].semver;if(i.major===t.major&&i.minor===t.minor&&i.patch===t.patch)return!0}return!1}return!0}ce.satisfies=Gl;function Gl(e,t,a){try{t=new Ve(t,a)}catch(n){return!1}return t.test(e)}ce.maxSatisfying=Rj;function Rj(e,t,a){var n=null,i=null;try{var r=new Ve(t,a)}catch(o){return null}return e.forEach(function(o){r.test(o)&&(!n||i.compare(o)===-1)&&(n=o,i=new be(n,a))}),n}ce.minSatisfying=Bj;function Bj(e,t,a){var n=null,i=null;try{var r=new Ve(t,a)}catch(o){return null}return e.forEach(function(o){r.test(o)&&(!n||i.compare(o)===1)&&(n=o,i=new be(n,a))}),n}ce.minVersion=Nj;function Nj(e,t){e=new Ve(e,t);var a=new be("0.0.0");if(e.test(a)||(a=new be("0.0.0-0"),e.test(a)))return a;a=null;for(var n=0;n":o.prerelease.length===0?o.patch++:o.prerelease.push(0),o.raw=o.format();case"":case">=":(!a||Fr(a,o))&&(a=o);break;case"<":case"<=":break;default:throw new Error("Unexpected operation: "+r.operator)}})}return a&&e.test(a)?a:null}ce.validRange=jj;function jj(e,t){try{return new Ve(e,t).range||"*"}catch(a){return null}}ce.ltr=Lj;function Lj(e,t,a){return yf(e,t,"<",a)}ce.gtr=Mj;function Mj(e,t,a){return yf(e,t,">",a)}ce.outside=yf;function yf(e,t,a,n){e=new be(e,n),t=new Ve(t,n);var i,r,o,s,l;switch(a){case">":i=Fr,r=xf,o=Dl,s=">",l=">=";break;case"<":i=Dl,r=gf,o=Fr,s="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(Gl(e,t,n))return!1;for(var u=0;u=0.0.0")),f=f||b,p=p||b,i(b.semver,f.semver,n)?f=b:o(b.semver,p.semver,n)&&(p=b)}),f.operator===s||f.operator===l||(!p.operator||p.operator===s)&&r(e,p.semver))return!1;if(p.operator===l&&o(e,p.semver))return!1}return!0}ce.prerelease=Dj;function Dj(e,t){var a=gn(e,t);return a&&a.prerelease.length?a.prerelease:null}ce.intersects=zj;function zj(e,t,a){return e=new Ve(e,a),t=new Ve(t,a),e.intersects(t)}ce.coerce=Gj;function Gj(e){if(e instanceof be)return e;if(typeof e!="string")return null;var t=e.match(Oe[nA]);return t==null?null:gn(t[1]+"."+(t[2]||"0")+"."+(t[3]||"0"))}});var yA=O((fV,Ul)=>{"use strict";var Vl=require("fs"),Ca=require("path"),mA=af(),Hj=fA(),hA={mode:511&~process.umask(),fs:Vl},vA=Hj.satisfies(process.version,">=10.12.0"),bA=e=>{if(process.platform==="win32"&&/[<>:"|?*]/.test(e.replace(Ca.parse(e).root,""))){let a=new Error(`Path contains invalid characters: ${e}`);throw a.code="EINVAL",a}},gA=e=>{let t=new Error(`operation not permitted, mkdir '${e}'`);return t.code="EPERM",t.errno=-4048,t.path=e,t.syscall="mkdir",t},xA=(e,t)=>Promise.resolve().then(()=>{bA(e),t=Object.assign({},hA,t);let a=mA(t.fs.mkdir),n=mA(t.fs.stat);if(vA&&t.fs.mkdir===Vl.mkdir){let r=Ca.resolve(e);return a(r,{mode:t.mode,recursive:!0}).then(()=>r)}let i=r=>a(r,t.mode).then(()=>r).catch(o=>{if(o.code==="EPERM")throw o;if(o.code==="ENOENT"){if(Ca.dirname(r)===r)throw gA(r);if(o.message.includes("null bytes"))throw o;return i(Ca.dirname(r)).then(()=>i(r))}return n(r).then(s=>s.isDirectory()?r:Promise.reject()).catch(()=>{throw o})});return i(Ca.resolve(e))});Ul.exports=xA;Ul.exports.default=xA;Ul.exports.sync=(e,t)=>{if(bA(e),t=Object.assign({},hA,t),vA&&t.fs.mkdirSync===Vl.mkdirSync){let n=Ca.resolve(e);return Vl.mkdirSync(n,{mode:t.mode,recursive:!0}),n}let a=n=>{try{t.fs.mkdirSync(n,t.mode)}catch(i){if(i.code==="EPERM")throw i;if(i.code==="ENOENT"){if(Ca.dirname(n)===n)throw gA(n);if(i.message.includes("null bytes"))throw i;return a(Ca.dirname(n)),a(n)}try{if(!t.fs.statSync(n).isDirectory())throw new Error("The path is not a directory")}catch(r){throw i}}return n};return a(Ca.resolve(e))}});var CA=O((mV,Jl)=>{"use strict";var Wj=Qd(),Vj=Symbol.asyncIterator||"@@asyncIterator",wA=e=>{let t=e.on||e.addListener||e.addEventListener,a=e.off||e.removeListener||e.removeEventListener;if(!t||!a)throw new TypeError("Emitter is not compatible");return{addListener:t.bind(e),removeListener:a.bind(e)}},EA=e=>Array.isArray(e)?e:[e],SA=(e,t,a)=>{let n,i=new Promise((r,o)=>{if(a=Object.assign({rejectionEvents:["error"],multiArgs:!1,resolveImmediately:!1},a),!(a.count>=0&&(a.count===1/0||Number.isInteger(a.count))))throw new TypeError("The `count` option should be at least 0 or more");let s=EA(t),l=[],{addListener:u,removeListener:c}=wA(e),f=(...b)=>{let d=a.multiArgs?b:b[0];a.filter&&!a.filter(d)||(l.push(d),a.count===l.length&&(n(),r(l)))},p=b=>{n(),o(b)};n=()=>{for(let b of s)c(b,f);for(let b of a.rejectionEvents)c(b,p)};for(let b of s)u(b,f);for(let b of a.rejectionEvents)u(b,p);a.resolveImmediately&&r(l)});if(i.cancel=n,typeof a.timeout=="number"){let r=Wj(i,a.timeout);return r.cancel=n,r}return i};Jl.exports=(e,t,a)=>{typeof a=="function"&&(a={filter:a}),a=Object.assign({},a,{count:1,resolveImmediately:!1});let n=SA(e,t,a),i=n.then(r=>r[0]);return i.cancel=n.cancel,i};Jl.exports.multiple=SA;Jl.exports.iterator=(e,t,a)=>{typeof a=="function"&&(a={filter:a});let n=EA(t);a=Object.assign({rejectionEvents:["error"],resolutionEvents:[],limit:1/0,multiArgs:!1},a);let{limit:i}=a;if(!(i>=0&&(i===1/0||Number.isInteger(i))))throw new TypeError("The `limit` option should be a non-negative integer or Infinity");if(i===0)return{[Symbol.asyncIterator](){return this},next(){return Promise.resolve({done:!0,value:void 0})}};let o=!1,{addListener:s,removeListener:l}=wA(e),u=!1,c,f=!1,p=[],b=[],d=0,m=(...E)=>{d++,o=d===i;let g=a.multiArgs?E:E[0];if(p.length>0){let{resolve:w}=p.shift();w({done:!1,value:g}),o&&h();return}b.push(g),o&&h()},h=()=>{u=!0;for(let E of n)l(E,m);for(let E of a.rejectionEvents)l(E,v);for(let E of a.resolutionEvents)l(E,x);for(;p.length>0;){let{resolve:E}=p.shift();E({done:!0,value:void 0})}},v=(...E)=>{if(c=a.multiArgs?E:E[0],p.length>0){let{reject:g}=p.shift();g(c)}else f=!0;h()},x=(...E)=>{let g=a.multiArgs?E:E[0];if(!(a.filter&&!a.filter(g))){if(p.length>0){let{resolve:w}=p.shift();w({done:!0,value:g})}else b.push(g);h()}};for(let E of n)s(E,m);for(let E of a.rejectionEvents)s(E,v);for(let E of a.resolutionEvents)s(E,x);return{[Vj](){return this},next(){if(b.length>0){let E=b.shift();return Promise.resolve({done:u&&b.length===0&&!o,value:E})}return f?(f=!1,Promise.reject(c)):u?Promise.resolve({done:!0,value:void 0}):new Promise((E,g)=>p.push({resolve:E,reject:g}))},return(E){return h(),Promise.resolve({done:u,value:E})}}}});var IA=O(Rr=>{"use strict";Rr.stringToBytes=e=>[...e].map(t=>t.charCodeAt(0));var AA=(e,t,a)=>String.fromCharCode(...e.slice(t,a));Rr.readUInt64LE=(e,t=0)=>{let a=e[t],n=1,i=0;for(;++i<8;)n*=256,a+=e[t+i]*n;return a};Rr.tarHeaderChecksumMatches=e=>{if(e.length<512)return!1;let t=128,a=256,n=0;for(let r=0;r<148;r++){let o=e[r];a+=o,n+=o&t}for(let r=156;r<512;r++){let o=e[r];a+=o,n+=o&t}let i=parseInt(AA(e,148,154),8);return i===a||i===a-(n<<1)};Rr.uint8ArrayUtf8ByteString=AA});var _A=O((exports,module)=>{"use strict";var{stringToBytes,readUInt64LE,tarHeaderChecksumMatches,uint8ArrayUtf8ByteString}=IA(),xpiZipFilename=stringToBytes("META-INF/mozilla.rsa"),oxmlContentTypes=stringToBytes("[Content_Types].xml"),oxmlRels=stringToBytes("_rels/.rels"),fileType=e=>{if(!(e instanceof Uint8Array||e instanceof ArrayBuffer||Buffer.isBuffer(e)))throw new TypeError(`Expected the \`input\` argument to be of type \`Uint8Array\` or \`Buffer\` or \`ArrayBuffer\`, got \`${typeof e}\``);let t=e instanceof Uint8Array?e:new Uint8Array(e);if(!(t&&t.length>1))return;let a=(i,r)=>{r=Object.assign({offset:0},r);for(let o=0;oa(stringToBytes(i),r);if(a([255,216,255]))return{ext:"jpg",mime:"image/jpeg"};if(a([137,80,78,71,13,10,26,10]))return{ext:"png",mime:"image/png"};if(a([71,73,70]))return{ext:"gif",mime:"image/gif"};if(a([87,69,66,80],{offset:8}))return{ext:"webp",mime:"image/webp"};if(a([70,76,73,70]))return{ext:"flif",mime:"image/flif"};if((a([73,73,42,0])||a([77,77,0,42]))&&a([67,82],{offset:8}))return{ext:"cr2",mime:"image/x-canon-cr2"};if(a([73,73,82,79,8,0,0,0,24]))return{ext:"orf",mime:"image/x-olympus-orf"};if(a([73,73,42,0,16,251,134,1]))return{ext:"arw",mime:"image/x-sony-arw"};if(a([73,73,42,0,8,0,0,0,45]))return{ext:"dng",mime:"image/x-adobe-dng"};if(a([73,73,42,0,48,61,114,1,28]))return{ext:"nef",mime:"image/x-nikon-nef"};if(a([73,73,42,0])||a([77,77,0,42]))return{ext:"tif",mime:"image/tiff"};if(a([66,77]))return{ext:"bmp",mime:"image/bmp"};if(a([73,73,188]))return{ext:"jxr",mime:"image/vnd.ms-photo"};if(a([56,66,80,83]))return{ext:"psd",mime:"image/vnd.adobe.photoshop"};if(a([80,75,3,4])){if(a([109,105,109,101,116,121,112,101,97,112,112,108,105,99,97,116,105,111,110,47,101,112,117,98,43,122,105,112],{offset:30}))return{ext:"epub",mime:"application/epub+zip"};if(a(xpiZipFilename,{offset:30}))return{ext:"xpi",mime:"application/x-xpinstall"};if(n("mimetypeapplication/vnd.oasis.opendocument.text",{offset:30}))return{ext:"odt",mime:"application/vnd.oasis.opendocument.text"};if(n("mimetypeapplication/vnd.oasis.opendocument.spreadsheet",{offset:30}))return{ext:"ods",mime:"application/vnd.oasis.opendocument.spreadsheet"};if(n("mimetypeapplication/vnd.oasis.opendocument.presentation",{offset:30}))return{ext:"odp",mime:"application/vnd.oasis.opendocument.presentation"};let i=(l,u=0)=>l.findIndex((c,f,p)=>f>=u&&p[f]===80&&p[f+1]===75&&p[f+2]===3&&p[f+3]===4),r=0,o=!1,s;do{let l=r+30;if(o||(o=a(oxmlContentTypes,{offset:l})||a(oxmlRels,{offset:l})),s||(n("word/",{offset:l})?s={ext:"docx",mime:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"}:n("ppt/",{offset:l})?s={ext:"pptx",mime:"application/vnd.openxmlformats-officedocument.presentationml.presentation"}:n("xl/",{offset:l})&&(s={ext:"xlsx",mime:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"})),o&&s)return s;r=i(t,l)}while(r>=0);if(s)return s}if(a([80,75])&&(t[2]===3||t[2]===5||t[2]===7)&&(t[3]===4||t[3]===6||t[3]===8))return{ext:"zip",mime:"application/zip"};if(a([48,48,48,48,48,48],{offset:148,mask:[248,248,248,248,248,248]})&&tarHeaderChecksumMatches(t))return{ext:"tar",mime:"application/x-tar"};if(a([82,97,114,33,26,7])&&(t[6]===0||t[6]===1))return{ext:"rar",mime:"application/x-rar-compressed"};if(a([31,139,8]))return{ext:"gz",mime:"application/gzip"};if(a([66,90,104]))return{ext:"bz2",mime:"application/x-bzip2"};if(a([55,122,188,175,39,28]))return{ext:"7z",mime:"application/x-7z-compressed"};if(a([120,1]))return{ext:"dmg",mime:"application/x-apple-diskimage"};if(a([102,114,101,101],{offset:4})||a([109,100,97,116],{offset:4})||a([109,111,111,118],{offset:4})||a([119,105,100,101],{offset:4}))return{ext:"mov",mime:"video/quicktime"};if(a([102,116,121,112],{offset:4})&&t[8]&96&&t[9]&96&&t[10]&96&&t[11]&96){let i=uint8ArrayUtf8ByteString(t,8,12);switch(i){case"mif1":return{ext:"heic",mime:"image/heif"};case"msf1":return{ext:"heic",mime:"image/heif-sequence"};case"heic":case"heix":return{ext:"heic",mime:"image/heic"};case"hevc":case"hevx":return{ext:"heic",mime:"image/heic-sequence"};case"qt ":return{ext:"mov",mime:"video/quicktime"};case"M4V ":case"M4VH":case"M4VP":return{ext:"m4v",mime:"video/x-m4v"};case"M4P ":return{ext:"m4p",mime:"video/mp4"};case"M4B ":return{ext:"m4b",mime:"audio/mp4"};case"M4A ":return{ext:"m4a",mime:"audio/x-m4a"};case"F4V ":return{ext:"f4v",mime:"video/mp4"};case"F4P ":return{ext:"f4p",mime:"video/mp4"};case"F4A ":return{ext:"f4a",mime:"audio/mp4"};case"F4B ":return{ext:"f4b",mime:"audio/mp4"};default:return i.startsWith("3g")?i.startsWith("3g2")?{ext:"3g2",mime:"video/3gpp2"}:{ext:"3gp",mime:"video/3gpp"}:{ext:"mp4",mime:"video/mp4"}}}if(a([77,84,104,100]))return{ext:"mid",mime:"audio/midi"};if(a([26,69,223,163])){let i=t.subarray(4,4100),r=i.findIndex((o,s,l)=>l[s]===66&&l[s+1]===130);if(r!==-1){let o=r+3,s=l=>[...l].every((u,c)=>i[o+c]===u.charCodeAt(0));if(s("matroska"))return{ext:"mkv",mime:"video/x-matroska"};if(s("webm"))return{ext:"webm",mime:"video/webm"}}}if(a([82,73,70,70])){if(a([65,86,73],{offset:8}))return{ext:"avi",mime:"video/vnd.avi"};if(a([87,65,86,69],{offset:8}))return{ext:"wav",mime:"audio/vnd.wave"};if(a([81,76,67,77],{offset:8}))return{ext:"qcp",mime:"audio/qcelp"}}if(a([48,38,178,117,142,102,207,17,166,217])){let i=30;do{let r=readUInt64LE(t,i+16);if(a([145,7,220,183,183,169,207,17,142,230,0,192,12,32,83,101],{offset:i})){if(a([64,158,105,248,77,91,207,17,168,253,0,128,95,92,68,43],{offset:i+24}))return{ext:"wma",mime:"audio/x-ms-wma"};if(a([192,239,25,188,77,91,207,17,168,253,0,128,95,92,68,43],{offset:i+24}))return{ext:"wmv",mime:"video/x-ms-asf"};break}i+=r}while(i+24<=t.length);return{ext:"asf",mime:"application/vnd.ms-asf"}}if(a([0,0,1,186])||a([0,0,1,179]))return{ext:"mpg",mime:"video/mpeg"};for(let i=0;i<2&&inew Promise((resolve,reject)=>{let stream=eval("require")("stream");readableStream.once("readable",()=>{let e=new stream.PassThrough,t=readableStream.read(module.exports.minimumBytes)||readableStream.read();try{e.fileType=fileType(t)}catch(a){reject(a)}readableStream.unshift(t),stream.pipeline?resolve(stream.pipeline(readableStream,e,()=>{})):resolve(readableStream.pipe(e))})})});var TA=O((vV,Uj)=>{Uj.exports={"application/1d-interleaved-parityfec":{source:"iana"},"application/3gpdash-qoe-report+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/3gpp-ims+xml":{source:"iana",compressible:!0},"application/3gpphal+json":{source:"iana",compressible:!0},"application/3gpphalforms+json":{source:"iana",compressible:!0},"application/a2l":{source:"iana"},"application/ace+cbor":{source:"iana"},"application/activemessage":{source:"iana"},"application/activity+json":{source:"iana",compressible:!0},"application/alto-costmap+json":{source:"iana",compressible:!0},"application/alto-costmapfilter+json":{source:"iana",compressible:!0},"application/alto-directory+json":{source:"iana",compressible:!0},"application/alto-endpointcost+json":{source:"iana",compressible:!0},"application/alto-endpointcostparams+json":{source:"iana",compressible:!0},"application/alto-endpointprop+json":{source:"iana",compressible:!0},"application/alto-endpointpropparams+json":{source:"iana",compressible:!0},"application/alto-error+json":{source:"iana",compressible:!0},"application/alto-networkmap+json":{source:"iana",compressible:!0},"application/alto-networkmapfilter+json":{source:"iana",compressible:!0},"application/alto-updatestreamcontrol+json":{source:"iana",compressible:!0},"application/alto-updatestreamparams+json":{source:"iana",compressible:!0},"application/aml":{source:"iana"},"application/andrew-inset":{source:"iana",extensions:["ez"]},"application/applefile":{source:"iana"},"application/applixware":{source:"apache",extensions:["aw"]},"application/at+jwt":{source:"iana"},"application/atf":{source:"iana"},"application/atfx":{source:"iana"},"application/atom+xml":{source:"iana",compressible:!0,extensions:["atom"]},"application/atomcat+xml":{source:"iana",compressible:!0,extensions:["atomcat"]},"application/atomdeleted+xml":{source:"iana",compressible:!0,extensions:["atomdeleted"]},"application/atomicmail":{source:"iana"},"application/atomsvc+xml":{source:"iana",compressible:!0,extensions:["atomsvc"]},"application/atsc-dwd+xml":{source:"iana",compressible:!0,extensions:["dwd"]},"application/atsc-dynamic-event-message":{source:"iana"},"application/atsc-held+xml":{source:"iana",compressible:!0,extensions:["held"]},"application/atsc-rdt+json":{source:"iana",compressible:!0},"application/atsc-rsat+xml":{source:"iana",compressible:!0,extensions:["rsat"]},"application/atxml":{source:"iana"},"application/auth-policy+xml":{source:"iana",compressible:!0},"application/bacnet-xdd+zip":{source:"iana",compressible:!1},"application/batch-smtp":{source:"iana"},"application/bdoc":{compressible:!1,extensions:["bdoc"]},"application/beep+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/calendar+json":{source:"iana",compressible:!0},"application/calendar+xml":{source:"iana",compressible:!0,extensions:["xcs"]},"application/call-completion":{source:"iana"},"application/cals-1840":{source:"iana"},"application/captive+json":{source:"iana",compressible:!0},"application/cbor":{source:"iana"},"application/cbor-seq":{source:"iana"},"application/cccex":{source:"iana"},"application/ccmp+xml":{source:"iana",compressible:!0},"application/ccxml+xml":{source:"iana",compressible:!0,extensions:["ccxml"]},"application/cdfx+xml":{source:"iana",compressible:!0,extensions:["cdfx"]},"application/cdmi-capability":{source:"iana",extensions:["cdmia"]},"application/cdmi-container":{source:"iana",extensions:["cdmic"]},"application/cdmi-domain":{source:"iana",extensions:["cdmid"]},"application/cdmi-object":{source:"iana",extensions:["cdmio"]},"application/cdmi-queue":{source:"iana",extensions:["cdmiq"]},"application/cdni":{source:"iana"},"application/cea":{source:"iana"},"application/cea-2018+xml":{source:"iana",compressible:!0},"application/cellml+xml":{source:"iana",compressible:!0},"application/cfw":{source:"iana"},"application/city+json":{source:"iana",compressible:!0},"application/clr":{source:"iana"},"application/clue+xml":{source:"iana",compressible:!0},"application/clue_info+xml":{source:"iana",compressible:!0},"application/cms":{source:"iana"},"application/cnrp+xml":{source:"iana",compressible:!0},"application/coap-group+json":{source:"iana",compressible:!0},"application/coap-payload":{source:"iana"},"application/commonground":{source:"iana"},"application/conference-info+xml":{source:"iana",compressible:!0},"application/cose":{source:"iana"},"application/cose-key":{source:"iana"},"application/cose-key-set":{source:"iana"},"application/cpl+xml":{source:"iana",compressible:!0,extensions:["cpl"]},"application/csrattrs":{source:"iana"},"application/csta+xml":{source:"iana",compressible:!0},"application/cstadata+xml":{source:"iana",compressible:!0},"application/csvm+json":{source:"iana",compressible:!0},"application/cu-seeme":{source:"apache",extensions:["cu"]},"application/cwt":{source:"iana"},"application/cybercash":{source:"iana"},"application/dart":{compressible:!0},"application/dash+xml":{source:"iana",compressible:!0,extensions:["mpd"]},"application/dash-patch+xml":{source:"iana",compressible:!0,extensions:["mpp"]},"application/dashdelta":{source:"iana"},"application/davmount+xml":{source:"iana",compressible:!0,extensions:["davmount"]},"application/dca-rft":{source:"iana"},"application/dcd":{source:"iana"},"application/dec-dx":{source:"iana"},"application/dialog-info+xml":{source:"iana",compressible:!0},"application/dicom":{source:"iana"},"application/dicom+json":{source:"iana",compressible:!0},"application/dicom+xml":{source:"iana",compressible:!0},"application/dii":{source:"iana"},"application/dit":{source:"iana"},"application/dns":{source:"iana"},"application/dns+json":{source:"iana",compressible:!0},"application/dns-message":{source:"iana"},"application/docbook+xml":{source:"apache",compressible:!0,extensions:["dbk"]},"application/dots+cbor":{source:"iana"},"application/dskpp+xml":{source:"iana",compressible:!0},"application/dssc+der":{source:"iana",extensions:["dssc"]},"application/dssc+xml":{source:"iana",compressible:!0,extensions:["xdssc"]},"application/dvcs":{source:"iana"},"application/ecmascript":{source:"iana",compressible:!0,extensions:["es","ecma"]},"application/edi-consent":{source:"iana"},"application/edi-x12":{source:"iana",compressible:!1},"application/edifact":{source:"iana",compressible:!1},"application/efi":{source:"iana"},"application/elm+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/elm+xml":{source:"iana",compressible:!0},"application/emergencycalldata.cap+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/emergencycalldata.comment+xml":{source:"iana",compressible:!0},"application/emergencycalldata.control+xml":{source:"iana",compressible:!0},"application/emergencycalldata.deviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.ecall.msd":{source:"iana"},"application/emergencycalldata.providerinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.serviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.subscriberinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.veds+xml":{source:"iana",compressible:!0},"application/emma+xml":{source:"iana",compressible:!0,extensions:["emma"]},"application/emotionml+xml":{source:"iana",compressible:!0,extensions:["emotionml"]},"application/encaprtp":{source:"iana"},"application/epp+xml":{source:"iana",compressible:!0},"application/epub+zip":{source:"iana",compressible:!1,extensions:["epub"]},"application/eshop":{source:"iana"},"application/exi":{source:"iana",extensions:["exi"]},"application/expect-ct-report+json":{source:"iana",compressible:!0},"application/express":{source:"iana",extensions:["exp"]},"application/fastinfoset":{source:"iana"},"application/fastsoap":{source:"iana"},"application/fdt+xml":{source:"iana",compressible:!0,extensions:["fdt"]},"application/fhir+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/fhir+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/fido.trusted-apps+json":{compressible:!0},"application/fits":{source:"iana"},"application/flexfec":{source:"iana"},"application/font-sfnt":{source:"iana"},"application/font-tdpfr":{source:"iana",extensions:["pfr"]},"application/font-woff":{source:"iana",compressible:!1},"application/framework-attributes+xml":{source:"iana",compressible:!0},"application/geo+json":{source:"iana",compressible:!0,extensions:["geojson"]},"application/geo+json-seq":{source:"iana"},"application/geopackage+sqlite3":{source:"iana"},"application/geoxacml+xml":{source:"iana",compressible:!0},"application/gltf-buffer":{source:"iana"},"application/gml+xml":{source:"iana",compressible:!0,extensions:["gml"]},"application/gpx+xml":{source:"apache",compressible:!0,extensions:["gpx"]},"application/gxf":{source:"apache",extensions:["gxf"]},"application/gzip":{source:"iana",compressible:!1,extensions:["gz"]},"application/h224":{source:"iana"},"application/held+xml":{source:"iana",compressible:!0},"application/hjson":{extensions:["hjson"]},"application/http":{source:"iana"},"application/hyperstudio":{source:"iana",extensions:["stk"]},"application/ibe-key-request+xml":{source:"iana",compressible:!0},"application/ibe-pkg-reply+xml":{source:"iana",compressible:!0},"application/ibe-pp-data":{source:"iana"},"application/iges":{source:"iana"},"application/im-iscomposing+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/index":{source:"iana"},"application/index.cmd":{source:"iana"},"application/index.obj":{source:"iana"},"application/index.response":{source:"iana"},"application/index.vnd":{source:"iana"},"application/inkml+xml":{source:"iana",compressible:!0,extensions:["ink","inkml"]},"application/iotp":{source:"iana"},"application/ipfix":{source:"iana",extensions:["ipfix"]},"application/ipp":{source:"iana"},"application/isup":{source:"iana"},"application/its+xml":{source:"iana",compressible:!0,extensions:["its"]},"application/java-archive":{source:"apache",compressible:!1,extensions:["jar","war","ear"]},"application/java-serialized-object":{source:"apache",compressible:!1,extensions:["ser"]},"application/java-vm":{source:"apache",compressible:!1,extensions:["class"]},"application/javascript":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["js","mjs"]},"application/jf2feed+json":{source:"iana",compressible:!0},"application/jose":{source:"iana"},"application/jose+json":{source:"iana",compressible:!0},"application/jrd+json":{source:"iana",compressible:!0},"application/jscalendar+json":{source:"iana",compressible:!0},"application/json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["json","map"]},"application/json-patch+json":{source:"iana",compressible:!0},"application/json-seq":{source:"iana"},"application/json5":{extensions:["json5"]},"application/jsonml+json":{source:"apache",compressible:!0,extensions:["jsonml"]},"application/jwk+json":{source:"iana",compressible:!0},"application/jwk-set+json":{source:"iana",compressible:!0},"application/jwt":{source:"iana"},"application/kpml-request+xml":{source:"iana",compressible:!0},"application/kpml-response+xml":{source:"iana",compressible:!0},"application/ld+json":{source:"iana",compressible:!0,extensions:["jsonld"]},"application/lgr+xml":{source:"iana",compressible:!0,extensions:["lgr"]},"application/link-format":{source:"iana"},"application/load-control+xml":{source:"iana",compressible:!0},"application/lost+xml":{source:"iana",compressible:!0,extensions:["lostxml"]},"application/lostsync+xml":{source:"iana",compressible:!0},"application/lpf+zip":{source:"iana",compressible:!1},"application/lxf":{source:"iana"},"application/mac-binhex40":{source:"iana",extensions:["hqx"]},"application/mac-compactpro":{source:"apache",extensions:["cpt"]},"application/macwriteii":{source:"iana"},"application/mads+xml":{source:"iana",compressible:!0,extensions:["mads"]},"application/manifest+json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["webmanifest"]},"application/marc":{source:"iana",extensions:["mrc"]},"application/marcxml+xml":{source:"iana",compressible:!0,extensions:["mrcx"]},"application/mathematica":{source:"iana",extensions:["ma","nb","mb"]},"application/mathml+xml":{source:"iana",compressible:!0,extensions:["mathml"]},"application/mathml-content+xml":{source:"iana",compressible:!0},"application/mathml-presentation+xml":{source:"iana",compressible:!0},"application/mbms-associated-procedure-description+xml":{source:"iana",compressible:!0},"application/mbms-deregister+xml":{source:"iana",compressible:!0},"application/mbms-envelope+xml":{source:"iana",compressible:!0},"application/mbms-msk+xml":{source:"iana",compressible:!0},"application/mbms-msk-response+xml":{source:"iana",compressible:!0},"application/mbms-protection-description+xml":{source:"iana",compressible:!0},"application/mbms-reception-report+xml":{source:"iana",compressible:!0},"application/mbms-register+xml":{source:"iana",compressible:!0},"application/mbms-register-response+xml":{source:"iana",compressible:!0},"application/mbms-schedule+xml":{source:"iana",compressible:!0},"application/mbms-user-service-description+xml":{source:"iana",compressible:!0},"application/mbox":{source:"iana",extensions:["mbox"]},"application/media-policy-dataset+xml":{source:"iana",compressible:!0,extensions:["mpf"]},"application/media_control+xml":{source:"iana",compressible:!0},"application/mediaservercontrol+xml":{source:"iana",compressible:!0,extensions:["mscml"]},"application/merge-patch+json":{source:"iana",compressible:!0},"application/metalink+xml":{source:"apache",compressible:!0,extensions:["metalink"]},"application/metalink4+xml":{source:"iana",compressible:!0,extensions:["meta4"]},"application/mets+xml":{source:"iana",compressible:!0,extensions:["mets"]},"application/mf4":{source:"iana"},"application/mikey":{source:"iana"},"application/mipc":{source:"iana"},"application/missing-blocks+cbor-seq":{source:"iana"},"application/mmt-aei+xml":{source:"iana",compressible:!0,extensions:["maei"]},"application/mmt-usd+xml":{source:"iana",compressible:!0,extensions:["musd"]},"application/mods+xml":{source:"iana",compressible:!0,extensions:["mods"]},"application/moss-keys":{source:"iana"},"application/moss-signature":{source:"iana"},"application/mosskey-data":{source:"iana"},"application/mosskey-request":{source:"iana"},"application/mp21":{source:"iana",extensions:["m21","mp21"]},"application/mp4":{source:"iana",extensions:["mp4s","m4p"]},"application/mpeg4-generic":{source:"iana"},"application/mpeg4-iod":{source:"iana"},"application/mpeg4-iod-xmt":{source:"iana"},"application/mrb-consumer+xml":{source:"iana",compressible:!0},"application/mrb-publish+xml":{source:"iana",compressible:!0},"application/msc-ivr+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msc-mixer+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msword":{source:"iana",compressible:!1,extensions:["doc","dot"]},"application/mud+json":{source:"iana",compressible:!0},"application/multipart-core":{source:"iana"},"application/mxf":{source:"iana",extensions:["mxf"]},"application/n-quads":{source:"iana",extensions:["nq"]},"application/n-triples":{source:"iana",extensions:["nt"]},"application/nasdata":{source:"iana"},"application/news-checkgroups":{source:"iana",charset:"US-ASCII"},"application/news-groupinfo":{source:"iana",charset:"US-ASCII"},"application/news-transmission":{source:"iana"},"application/nlsml+xml":{source:"iana",compressible:!0},"application/node":{source:"iana",extensions:["cjs"]},"application/nss":{source:"iana"},"application/oauth-authz-req+jwt":{source:"iana"},"application/oblivious-dns-message":{source:"iana"},"application/ocsp-request":{source:"iana"},"application/ocsp-response":{source:"iana"},"application/octet-stream":{source:"iana",compressible:!1,extensions:["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{source:"iana",extensions:["oda"]},"application/odm+xml":{source:"iana",compressible:!0},"application/odx":{source:"iana"},"application/oebps-package+xml":{source:"iana",compressible:!0,extensions:["opf"]},"application/ogg":{source:"iana",compressible:!1,extensions:["ogx"]},"application/omdoc+xml":{source:"apache",compressible:!0,extensions:["omdoc"]},"application/onenote":{source:"apache",extensions:["onetoc","onetoc2","onetmp","onepkg"]},"application/opc-nodeset+xml":{source:"iana",compressible:!0},"application/oscore":{source:"iana"},"application/oxps":{source:"iana",extensions:["oxps"]},"application/p21":{source:"iana"},"application/p21+zip":{source:"iana",compressible:!1},"application/p2p-overlay+xml":{source:"iana",compressible:!0,extensions:["relo"]},"application/parityfec":{source:"iana"},"application/passport":{source:"iana"},"application/patch-ops-error+xml":{source:"iana",compressible:!0,extensions:["xer"]},"application/pdf":{source:"iana",compressible:!1,extensions:["pdf"]},"application/pdx":{source:"iana"},"application/pem-certificate-chain":{source:"iana"},"application/pgp-encrypted":{source:"iana",compressible:!1,extensions:["pgp"]},"application/pgp-keys":{source:"iana",extensions:["asc"]},"application/pgp-signature":{source:"iana",extensions:["asc","sig"]},"application/pics-rules":{source:"apache",extensions:["prf"]},"application/pidf+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pidf-diff+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pkcs10":{source:"iana",extensions:["p10"]},"application/pkcs12":{source:"iana"},"application/pkcs7-mime":{source:"iana",extensions:["p7m","p7c"]},"application/pkcs7-signature":{source:"iana",extensions:["p7s"]},"application/pkcs8":{source:"iana",extensions:["p8"]},"application/pkcs8-encrypted":{source:"iana"},"application/pkix-attr-cert":{source:"iana",extensions:["ac"]},"application/pkix-cert":{source:"iana",extensions:["cer"]},"application/pkix-crl":{source:"iana",extensions:["crl"]},"application/pkix-pkipath":{source:"iana",extensions:["pkipath"]},"application/pkixcmp":{source:"iana",extensions:["pki"]},"application/pls+xml":{source:"iana",compressible:!0,extensions:["pls"]},"application/poc-settings+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/postscript":{source:"iana",compressible:!0,extensions:["ai","eps","ps"]},"application/ppsp-tracker+json":{source:"iana",compressible:!0},"application/problem+json":{source:"iana",compressible:!0},"application/problem+xml":{source:"iana",compressible:!0},"application/provenance+xml":{source:"iana",compressible:!0,extensions:["provx"]},"application/prs.alvestrand.titrax-sheet":{source:"iana"},"application/prs.cww":{source:"iana",extensions:["cww"]},"application/prs.cyn":{source:"iana",charset:"7-BIT"},"application/prs.hpub+zip":{source:"iana",compressible:!1},"application/prs.nprend":{source:"iana"},"application/prs.plucker":{source:"iana"},"application/prs.rdf-xml-crypt":{source:"iana"},"application/prs.xsf+xml":{source:"iana",compressible:!0},"application/pskc+xml":{source:"iana",compressible:!0,extensions:["pskcxml"]},"application/pvd+json":{source:"iana",compressible:!0},"application/qsig":{source:"iana"},"application/raml+yaml":{compressible:!0,extensions:["raml"]},"application/raptorfec":{source:"iana"},"application/rdap+json":{source:"iana",compressible:!0},"application/rdf+xml":{source:"iana",compressible:!0,extensions:["rdf","owl"]},"application/reginfo+xml":{source:"iana",compressible:!0,extensions:["rif"]},"application/relax-ng-compact-syntax":{source:"iana",extensions:["rnc"]},"application/remote-printing":{source:"iana"},"application/reputon+json":{source:"iana",compressible:!0},"application/resource-lists+xml":{source:"iana",compressible:!0,extensions:["rl"]},"application/resource-lists-diff+xml":{source:"iana",compressible:!0,extensions:["rld"]},"application/rfc+xml":{source:"iana",compressible:!0},"application/riscos":{source:"iana"},"application/rlmi+xml":{source:"iana",compressible:!0},"application/rls-services+xml":{source:"iana",compressible:!0,extensions:["rs"]},"application/route-apd+xml":{source:"iana",compressible:!0,extensions:["rapd"]},"application/route-s-tsid+xml":{source:"iana",compressible:!0,extensions:["sls"]},"application/route-usd+xml":{source:"iana",compressible:!0,extensions:["rusd"]},"application/rpki-ghostbusters":{source:"iana",extensions:["gbr"]},"application/rpki-manifest":{source:"iana",extensions:["mft"]},"application/rpki-publication":{source:"iana"},"application/rpki-roa":{source:"iana",extensions:["roa"]},"application/rpki-updown":{source:"iana"},"application/rsd+xml":{source:"apache",compressible:!0,extensions:["rsd"]},"application/rss+xml":{source:"apache",compressible:!0,extensions:["rss"]},"application/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"application/rtploopback":{source:"iana"},"application/rtx":{source:"iana"},"application/samlassertion+xml":{source:"iana",compressible:!0},"application/samlmetadata+xml":{source:"iana",compressible:!0},"application/sarif+json":{source:"iana",compressible:!0},"application/sarif-external-properties+json":{source:"iana",compressible:!0},"application/sbe":{source:"iana"},"application/sbml+xml":{source:"iana",compressible:!0,extensions:["sbml"]},"application/scaip+xml":{source:"iana",compressible:!0},"application/scim+json":{source:"iana",compressible:!0},"application/scvp-cv-request":{source:"iana",extensions:["scq"]},"application/scvp-cv-response":{source:"iana",extensions:["scs"]},"application/scvp-vp-request":{source:"iana",extensions:["spq"]},"application/scvp-vp-response":{source:"iana",extensions:["spp"]},"application/sdp":{source:"iana",extensions:["sdp"]},"application/secevent+jwt":{source:"iana"},"application/senml+cbor":{source:"iana"},"application/senml+json":{source:"iana",compressible:!0},"application/senml+xml":{source:"iana",compressible:!0,extensions:["senmlx"]},"application/senml-etch+cbor":{source:"iana"},"application/senml-etch+json":{source:"iana",compressible:!0},"application/senml-exi":{source:"iana"},"application/sensml+cbor":{source:"iana"},"application/sensml+json":{source:"iana",compressible:!0},"application/sensml+xml":{source:"iana",compressible:!0,extensions:["sensmlx"]},"application/sensml-exi":{source:"iana"},"application/sep+xml":{source:"iana",compressible:!0},"application/sep-exi":{source:"iana"},"application/session-info":{source:"iana"},"application/set-payment":{source:"iana"},"application/set-payment-initiation":{source:"iana",extensions:["setpay"]},"application/set-registration":{source:"iana"},"application/set-registration-initiation":{source:"iana",extensions:["setreg"]},"application/sgml":{source:"iana"},"application/sgml-open-catalog":{source:"iana"},"application/shf+xml":{source:"iana",compressible:!0,extensions:["shf"]},"application/sieve":{source:"iana",extensions:["siv","sieve"]},"application/simple-filter+xml":{source:"iana",compressible:!0},"application/simple-message-summary":{source:"iana"},"application/simplesymbolcontainer":{source:"iana"},"application/sipc":{source:"iana"},"application/slate":{source:"iana"},"application/smil":{source:"iana"},"application/smil+xml":{source:"iana",compressible:!0,extensions:["smi","smil"]},"application/smpte336m":{source:"iana"},"application/soap+fastinfoset":{source:"iana"},"application/soap+xml":{source:"iana",compressible:!0},"application/sparql-query":{source:"iana",extensions:["rq"]},"application/sparql-results+xml":{source:"iana",compressible:!0,extensions:["srx"]},"application/spdx+json":{source:"iana",compressible:!0},"application/spirits-event+xml":{source:"iana",compressible:!0},"application/sql":{source:"iana"},"application/srgs":{source:"iana",extensions:["gram"]},"application/srgs+xml":{source:"iana",compressible:!0,extensions:["grxml"]},"application/sru+xml":{source:"iana",compressible:!0,extensions:["sru"]},"application/ssdl+xml":{source:"apache",compressible:!0,extensions:["ssdl"]},"application/ssml+xml":{source:"iana",compressible:!0,extensions:["ssml"]},"application/stix+json":{source:"iana",compressible:!0},"application/swid+xml":{source:"iana",compressible:!0,extensions:["swidtag"]},"application/tamp-apex-update":{source:"iana"},"application/tamp-apex-update-confirm":{source:"iana"},"application/tamp-community-update":{source:"iana"},"application/tamp-community-update-confirm":{source:"iana"},"application/tamp-error":{source:"iana"},"application/tamp-sequence-adjust":{source:"iana"},"application/tamp-sequence-adjust-confirm":{source:"iana"},"application/tamp-status-query":{source:"iana"},"application/tamp-status-response":{source:"iana"},"application/tamp-update":{source:"iana"},"application/tamp-update-confirm":{source:"iana"},"application/tar":{compressible:!0},"application/taxii+json":{source:"iana",compressible:!0},"application/td+json":{source:"iana",compressible:!0},"application/tei+xml":{source:"iana",compressible:!0,extensions:["tei","teicorpus"]},"application/tetra_isi":{source:"iana"},"application/thraud+xml":{source:"iana",compressible:!0,extensions:["tfi"]},"application/timestamp-query":{source:"iana"},"application/timestamp-reply":{source:"iana"},"application/timestamped-data":{source:"iana",extensions:["tsd"]},"application/tlsrpt+gzip":{source:"iana"},"application/tlsrpt+json":{source:"iana",compressible:!0},"application/tnauthlist":{source:"iana"},"application/token-introspection+jwt":{source:"iana"},"application/toml":{compressible:!0,extensions:["toml"]},"application/trickle-ice-sdpfrag":{source:"iana"},"application/trig":{source:"iana",extensions:["trig"]},"application/ttml+xml":{source:"iana",compressible:!0,extensions:["ttml"]},"application/tve-trigger":{source:"iana"},"application/tzif":{source:"iana"},"application/tzif-leap":{source:"iana"},"application/ubjson":{compressible:!1,extensions:["ubj"]},"application/ulpfec":{source:"iana"},"application/urc-grpsheet+xml":{source:"iana",compressible:!0},"application/urc-ressheet+xml":{source:"iana",compressible:!0,extensions:["rsheet"]},"application/urc-targetdesc+xml":{source:"iana",compressible:!0,extensions:["td"]},"application/urc-uisocketdesc+xml":{source:"iana",compressible:!0},"application/vcard+json":{source:"iana",compressible:!0},"application/vcard+xml":{source:"iana",compressible:!0},"application/vemmi":{source:"iana"},"application/vividence.scriptfile":{source:"apache"},"application/vnd.1000minds.decision-model+xml":{source:"iana",compressible:!0,extensions:["1km"]},"application/vnd.3gpp-prose+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc3ch+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-v2x-local-service-information":{source:"iana"},"application/vnd.3gpp.5gnas":{source:"iana"},"application/vnd.3gpp.access-transfer-events+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.bsf+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gmop+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gtpc":{source:"iana"},"application/vnd.3gpp.interworking-data":{source:"iana"},"application/vnd.3gpp.lpp":{source:"iana"},"application/vnd.3gpp.mc-signalling-ear":{source:"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-payload":{source:"iana"},"application/vnd.3gpp.mcdata-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-signalling":{source:"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-floor-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-signed+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-init-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-transmission-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mid-call+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ngap":{source:"iana"},"application/vnd.3gpp.pfcp":{source:"iana"},"application/vnd.3gpp.pic-bw-large":{source:"iana",extensions:["plb"]},"application/vnd.3gpp.pic-bw-small":{source:"iana",extensions:["psb"]},"application/vnd.3gpp.pic-bw-var":{source:"iana",extensions:["pvb"]},"application/vnd.3gpp.s1ap":{source:"iana"},"application/vnd.3gpp.sms":{source:"iana"},"application/vnd.3gpp.sms+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-ext+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.state-and-event-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ussd+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.bcmcsinfo+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.sms":{source:"iana"},"application/vnd.3gpp2.tcap":{source:"iana",extensions:["tcap"]},"application/vnd.3lightssoftware.imagescal":{source:"iana"},"application/vnd.3m.post-it-notes":{source:"iana",extensions:["pwn"]},"application/vnd.accpac.simply.aso":{source:"iana",extensions:["aso"]},"application/vnd.accpac.simply.imp":{source:"iana",extensions:["imp"]},"application/vnd.acucobol":{source:"iana",extensions:["acu"]},"application/vnd.acucorp":{source:"iana",extensions:["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{source:"apache",compressible:!1,extensions:["air"]},"application/vnd.adobe.flash.movie":{source:"iana"},"application/vnd.adobe.formscentral.fcdt":{source:"iana",extensions:["fcdt"]},"application/vnd.adobe.fxp":{source:"iana",extensions:["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{source:"iana"},"application/vnd.adobe.xdp+xml":{source:"iana",compressible:!0,extensions:["xdp"]},"application/vnd.adobe.xfdf":{source:"iana",extensions:["xfdf"]},"application/vnd.aether.imp":{source:"iana"},"application/vnd.afpc.afplinedata":{source:"iana"},"application/vnd.afpc.afplinedata-pagedef":{source:"iana"},"application/vnd.afpc.cmoca-cmresource":{source:"iana"},"application/vnd.afpc.foca-charset":{source:"iana"},"application/vnd.afpc.foca-codedfont":{source:"iana"},"application/vnd.afpc.foca-codepage":{source:"iana"},"application/vnd.afpc.modca":{source:"iana"},"application/vnd.afpc.modca-cmtable":{source:"iana"},"application/vnd.afpc.modca-formdef":{source:"iana"},"application/vnd.afpc.modca-mediummap":{source:"iana"},"application/vnd.afpc.modca-objectcontainer":{source:"iana"},"application/vnd.afpc.modca-overlay":{source:"iana"},"application/vnd.afpc.modca-pagesegment":{source:"iana"},"application/vnd.age":{source:"iana",extensions:["age"]},"application/vnd.ah-barcode":{source:"iana"},"application/vnd.ahead.space":{source:"iana",extensions:["ahead"]},"application/vnd.airzip.filesecure.azf":{source:"iana",extensions:["azf"]},"application/vnd.airzip.filesecure.azs":{source:"iana",extensions:["azs"]},"application/vnd.amadeus+json":{source:"iana",compressible:!0},"application/vnd.amazon.ebook":{source:"apache",extensions:["azw"]},"application/vnd.amazon.mobi8-ebook":{source:"iana"},"application/vnd.americandynamics.acc":{source:"iana",extensions:["acc"]},"application/vnd.amiga.ami":{source:"iana",extensions:["ami"]},"application/vnd.amundsen.maze+xml":{source:"iana",compressible:!0},"application/vnd.android.ota":{source:"iana"},"application/vnd.android.package-archive":{source:"apache",compressible:!1,extensions:["apk"]},"application/vnd.anki":{source:"iana"},"application/vnd.anser-web-certificate-issue-initiation":{source:"iana",extensions:["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{source:"apache",extensions:["fti"]},"application/vnd.antix.game-component":{source:"iana",extensions:["atx"]},"application/vnd.apache.arrow.file":{source:"iana"},"application/vnd.apache.arrow.stream":{source:"iana"},"application/vnd.apache.thrift.binary":{source:"iana"},"application/vnd.apache.thrift.compact":{source:"iana"},"application/vnd.apache.thrift.json":{source:"iana"},"application/vnd.api+json":{source:"iana",compressible:!0},"application/vnd.aplextor.warrp+json":{source:"iana",compressible:!0},"application/vnd.apothekende.reservation+json":{source:"iana",compressible:!0},"application/vnd.apple.installer+xml":{source:"iana",compressible:!0,extensions:["mpkg"]},"application/vnd.apple.keynote":{source:"iana",extensions:["key"]},"application/vnd.apple.mpegurl":{source:"iana",extensions:["m3u8"]},"application/vnd.apple.numbers":{source:"iana",extensions:["numbers"]},"application/vnd.apple.pages":{source:"iana",extensions:["pages"]},"application/vnd.apple.pkpass":{compressible:!1,extensions:["pkpass"]},"application/vnd.arastra.swi":{source:"iana"},"application/vnd.aristanetworks.swi":{source:"iana",extensions:["swi"]},"application/vnd.artisan+json":{source:"iana",compressible:!0},"application/vnd.artsquare":{source:"iana"},"application/vnd.astraea-software.iota":{source:"iana",extensions:["iota"]},"application/vnd.audiograph":{source:"iana",extensions:["aep"]},"application/vnd.autopackage":{source:"iana"},"application/vnd.avalon+json":{source:"iana",compressible:!0},"application/vnd.avistar+xml":{source:"iana",compressible:!0},"application/vnd.balsamiq.bmml+xml":{source:"iana",compressible:!0,extensions:["bmml"]},"application/vnd.balsamiq.bmpr":{source:"iana"},"application/vnd.banana-accounting":{source:"iana"},"application/vnd.bbf.usp.error":{source:"iana"},"application/vnd.bbf.usp.msg":{source:"iana"},"application/vnd.bbf.usp.msg+json":{source:"iana",compressible:!0},"application/vnd.bekitzur-stech+json":{source:"iana",compressible:!0},"application/vnd.bint.med-content":{source:"iana"},"application/vnd.biopax.rdf+xml":{source:"iana",compressible:!0},"application/vnd.blink-idb-value-wrapper":{source:"iana"},"application/vnd.blueice.multipass":{source:"iana",extensions:["mpm"]},"application/vnd.bluetooth.ep.oob":{source:"iana"},"application/vnd.bluetooth.le.oob":{source:"iana"},"application/vnd.bmi":{source:"iana",extensions:["bmi"]},"application/vnd.bpf":{source:"iana"},"application/vnd.bpf3":{source:"iana"},"application/vnd.businessobjects":{source:"iana",extensions:["rep"]},"application/vnd.byu.uapi+json":{source:"iana",compressible:!0},"application/vnd.cab-jscript":{source:"iana"},"application/vnd.canon-cpdl":{source:"iana"},"application/vnd.canon-lips":{source:"iana"},"application/vnd.capasystems-pg+json":{source:"iana",compressible:!0},"application/vnd.cendio.thinlinc.clientconf":{source:"iana"},"application/vnd.century-systems.tcp_stream":{source:"iana"},"application/vnd.chemdraw+xml":{source:"iana",compressible:!0,extensions:["cdxml"]},"application/vnd.chess-pgn":{source:"iana"},"application/vnd.chipnuts.karaoke-mmd":{source:"iana",extensions:["mmd"]},"application/vnd.ciedi":{source:"iana"},"application/vnd.cinderella":{source:"iana",extensions:["cdy"]},"application/vnd.cirpack.isdn-ext":{source:"iana"},"application/vnd.citationstyles.style+xml":{source:"iana",compressible:!0,extensions:["csl"]},"application/vnd.claymore":{source:"iana",extensions:["cla"]},"application/vnd.cloanto.rp9":{source:"iana",extensions:["rp9"]},"application/vnd.clonk.c4group":{source:"iana",extensions:["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{source:"iana",extensions:["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{source:"iana",extensions:["c11amz"]},"application/vnd.coffeescript":{source:"iana"},"application/vnd.collabio.xodocuments.document":{source:"iana"},"application/vnd.collabio.xodocuments.document-template":{source:"iana"},"application/vnd.collabio.xodocuments.presentation":{source:"iana"},"application/vnd.collabio.xodocuments.presentation-template":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{source:"iana"},"application/vnd.collection+json":{source:"iana",compressible:!0},"application/vnd.collection.doc+json":{source:"iana",compressible:!0},"application/vnd.collection.next+json":{source:"iana",compressible:!0},"application/vnd.comicbook+zip":{source:"iana",compressible:!1},"application/vnd.comicbook-rar":{source:"iana"},"application/vnd.commerce-battelle":{source:"iana"},"application/vnd.commonspace":{source:"iana",extensions:["csp"]},"application/vnd.contact.cmsg":{source:"iana",extensions:["cdbcmsg"]},"application/vnd.coreos.ignition+json":{source:"iana",compressible:!0},"application/vnd.cosmocaller":{source:"iana",extensions:["cmc"]},"application/vnd.crick.clicker":{source:"iana",extensions:["clkx"]},"application/vnd.crick.clicker.keyboard":{source:"iana",extensions:["clkk"]},"application/vnd.crick.clicker.palette":{source:"iana",extensions:["clkp"]},"application/vnd.crick.clicker.template":{source:"iana",extensions:["clkt"]},"application/vnd.crick.clicker.wordbank":{source:"iana",extensions:["clkw"]},"application/vnd.criticaltools.wbs+xml":{source:"iana",compressible:!0,extensions:["wbs"]},"application/vnd.cryptii.pipe+json":{source:"iana",compressible:!0},"application/vnd.crypto-shade-file":{source:"iana"},"application/vnd.cryptomator.encrypted":{source:"iana"},"application/vnd.cryptomator.vault":{source:"iana"},"application/vnd.ctc-posml":{source:"iana",extensions:["pml"]},"application/vnd.ctct.ws+xml":{source:"iana",compressible:!0},"application/vnd.cups-pdf":{source:"iana"},"application/vnd.cups-postscript":{source:"iana"},"application/vnd.cups-ppd":{source:"iana",extensions:["ppd"]},"application/vnd.cups-raster":{source:"iana"},"application/vnd.cups-raw":{source:"iana"},"application/vnd.curl":{source:"iana"},"application/vnd.curl.car":{source:"apache",extensions:["car"]},"application/vnd.curl.pcurl":{source:"apache",extensions:["pcurl"]},"application/vnd.cyan.dean.root+xml":{source:"iana",compressible:!0},"application/vnd.cybank":{source:"iana"},"application/vnd.cyclonedx+json":{source:"iana",compressible:!0},"application/vnd.cyclonedx+xml":{source:"iana",compressible:!0},"application/vnd.d2l.coursepackage1p0+zip":{source:"iana",compressible:!1},"application/vnd.d3m-dataset":{source:"iana"},"application/vnd.d3m-problem":{source:"iana"},"application/vnd.dart":{source:"iana",compressible:!0,extensions:["dart"]},"application/vnd.data-vision.rdz":{source:"iana",extensions:["rdz"]},"application/vnd.datapackage+json":{source:"iana",compressible:!0},"application/vnd.dataresource+json":{source:"iana",compressible:!0},"application/vnd.dbf":{source:"iana",extensions:["dbf"]},"application/vnd.debian.binary-package":{source:"iana"},"application/vnd.dece.data":{source:"iana",extensions:["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{source:"iana",compressible:!0,extensions:["uvt","uvvt"]},"application/vnd.dece.unspecified":{source:"iana",extensions:["uvx","uvvx"]},"application/vnd.dece.zip":{source:"iana",extensions:["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{source:"iana",extensions:["fe_launch"]},"application/vnd.desmume.movie":{source:"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{source:"iana"},"application/vnd.dm.delegation+xml":{source:"iana",compressible:!0},"application/vnd.dna":{source:"iana",extensions:["dna"]},"application/vnd.document+json":{source:"iana",compressible:!0},"application/vnd.dolby.mlp":{source:"apache",extensions:["mlp"]},"application/vnd.dolby.mobile.1":{source:"iana"},"application/vnd.dolby.mobile.2":{source:"iana"},"application/vnd.doremir.scorecloud-binary-document":{source:"iana"},"application/vnd.dpgraph":{source:"iana",extensions:["dpg"]},"application/vnd.dreamfactory":{source:"iana",extensions:["dfac"]},"application/vnd.drive+json":{source:"iana",compressible:!0},"application/vnd.ds-keypoint":{source:"apache",extensions:["kpxx"]},"application/vnd.dtg.local":{source:"iana"},"application/vnd.dtg.local.flash":{source:"iana"},"application/vnd.dtg.local.html":{source:"iana"},"application/vnd.dvb.ait":{source:"iana",extensions:["ait"]},"application/vnd.dvb.dvbisl+xml":{source:"iana",compressible:!0},"application/vnd.dvb.dvbj":{source:"iana"},"application/vnd.dvb.esgcontainer":{source:"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess2":{source:"iana"},"application/vnd.dvb.ipdcesgpdd":{source:"iana"},"application/vnd.dvb.ipdcroaming":{source:"iana"},"application/vnd.dvb.iptv.alfec-base":{source:"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{source:"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-container+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-generic+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-msglist+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-request+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-response+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-init+xml":{source:"iana",compressible:!0},"application/vnd.dvb.pfr":{source:"iana"},"application/vnd.dvb.service":{source:"iana",extensions:["svc"]},"application/vnd.dxr":{source:"iana"},"application/vnd.dynageo":{source:"iana",extensions:["geo"]},"application/vnd.dzr":{source:"iana"},"application/vnd.easykaraoke.cdgdownload":{source:"iana"},"application/vnd.ecdis-update":{source:"iana"},"application/vnd.ecip.rlp":{source:"iana"},"application/vnd.eclipse.ditto+json":{source:"iana",compressible:!0},"application/vnd.ecowin.chart":{source:"iana",extensions:["mag"]},"application/vnd.ecowin.filerequest":{source:"iana"},"application/vnd.ecowin.fileupdate":{source:"iana"},"application/vnd.ecowin.series":{source:"iana"},"application/vnd.ecowin.seriesrequest":{source:"iana"},"application/vnd.ecowin.seriesupdate":{source:"iana"},"application/vnd.efi.img":{source:"iana"},"application/vnd.efi.iso":{source:"iana"},"application/vnd.emclient.accessrequest+xml":{source:"iana",compressible:!0},"application/vnd.enliven":{source:"iana",extensions:["nml"]},"application/vnd.enphase.envoy":{source:"iana"},"application/vnd.eprints.data+xml":{source:"iana",compressible:!0},"application/vnd.epson.esf":{source:"iana",extensions:["esf"]},"application/vnd.epson.msf":{source:"iana",extensions:["msf"]},"application/vnd.epson.quickanime":{source:"iana",extensions:["qam"]},"application/vnd.epson.salt":{source:"iana",extensions:["slt"]},"application/vnd.epson.ssf":{source:"iana",extensions:["ssf"]},"application/vnd.ericsson.quickcall":{source:"iana"},"application/vnd.espass-espass+zip":{source:"iana",compressible:!1},"application/vnd.eszigno3+xml":{source:"iana",compressible:!0,extensions:["es3","et3"]},"application/vnd.etsi.aoc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.asic-e+zip":{source:"iana",compressible:!1},"application/vnd.etsi.asic-s+zip":{source:"iana",compressible:!1},"application/vnd.etsi.cug+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvcommand+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-bc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-cod+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-npvr+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvservice+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsync+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvueprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mcid+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mheg5":{source:"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{source:"iana",compressible:!0},"application/vnd.etsi.pstn+xml":{source:"iana",compressible:!0},"application/vnd.etsi.sci+xml":{source:"iana",compressible:!0},"application/vnd.etsi.simservs+xml":{source:"iana",compressible:!0},"application/vnd.etsi.timestamp-token":{source:"iana"},"application/vnd.etsi.tsl+xml":{source:"iana",compressible:!0},"application/vnd.etsi.tsl.der":{source:"iana"},"application/vnd.eu.kasparian.car+json":{source:"iana",compressible:!0},"application/vnd.eudora.data":{source:"iana"},"application/vnd.evolv.ecig.profile":{source:"iana"},"application/vnd.evolv.ecig.settings":{source:"iana"},"application/vnd.evolv.ecig.theme":{source:"iana"},"application/vnd.exstream-empower+zip":{source:"iana",compressible:!1},"application/vnd.exstream-package":{source:"iana"},"application/vnd.ezpix-album":{source:"iana",extensions:["ez2"]},"application/vnd.ezpix-package":{source:"iana",extensions:["ez3"]},"application/vnd.f-secure.mobile":{source:"iana"},"application/vnd.familysearch.gedcom+zip":{source:"iana",compressible:!1},"application/vnd.fastcopy-disk-image":{source:"iana"},"application/vnd.fdf":{source:"iana",extensions:["fdf"]},"application/vnd.fdsn.mseed":{source:"iana",extensions:["mseed"]},"application/vnd.fdsn.seed":{source:"iana",extensions:["seed","dataless"]},"application/vnd.ffsns":{source:"iana"},"application/vnd.ficlab.flb+zip":{source:"iana",compressible:!1},"application/vnd.filmit.zfc":{source:"iana"},"application/vnd.fints":{source:"iana"},"application/vnd.firemonkeys.cloudcell":{source:"iana"},"application/vnd.flographit":{source:"iana",extensions:["gph"]},"application/vnd.fluxtime.clip":{source:"iana",extensions:["ftc"]},"application/vnd.font-fontforge-sfd":{source:"iana"},"application/vnd.framemaker":{source:"iana",extensions:["fm","frame","maker","book"]},"application/vnd.frogans.fnc":{source:"iana",extensions:["fnc"]},"application/vnd.frogans.ltf":{source:"iana",extensions:["ltf"]},"application/vnd.fsc.weblaunch":{source:"iana",extensions:["fsc"]},"application/vnd.fujifilm.fb.docuworks":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.container":{source:"iana"},"application/vnd.fujifilm.fb.jfi+xml":{source:"iana",compressible:!0},"application/vnd.fujitsu.oasys":{source:"iana",extensions:["oas"]},"application/vnd.fujitsu.oasys2":{source:"iana",extensions:["oa2"]},"application/vnd.fujitsu.oasys3":{source:"iana",extensions:["oa3"]},"application/vnd.fujitsu.oasysgp":{source:"iana",extensions:["fg5"]},"application/vnd.fujitsu.oasysprs":{source:"iana",extensions:["bh2"]},"application/vnd.fujixerox.art-ex":{source:"iana"},"application/vnd.fujixerox.art4":{source:"iana"},"application/vnd.fujixerox.ddd":{source:"iana",extensions:["ddd"]},"application/vnd.fujixerox.docuworks":{source:"iana",extensions:["xdw"]},"application/vnd.fujixerox.docuworks.binder":{source:"iana",extensions:["xbd"]},"application/vnd.fujixerox.docuworks.container":{source:"iana"},"application/vnd.fujixerox.hbpl":{source:"iana"},"application/vnd.fut-misnet":{source:"iana"},"application/vnd.futoin+cbor":{source:"iana"},"application/vnd.futoin+json":{source:"iana",compressible:!0},"application/vnd.fuzzysheet":{source:"iana",extensions:["fzs"]},"application/vnd.genomatix.tuxedo":{source:"iana",extensions:["txd"]},"application/vnd.gentics.grd+json":{source:"iana",compressible:!0},"application/vnd.geo+json":{source:"iana",compressible:!0},"application/vnd.geocube+xml":{source:"iana",compressible:!0},"application/vnd.geogebra.file":{source:"iana",extensions:["ggb"]},"application/vnd.geogebra.slides":{source:"iana"},"application/vnd.geogebra.tool":{source:"iana",extensions:["ggt"]},"application/vnd.geometry-explorer":{source:"iana",extensions:["gex","gre"]},"application/vnd.geonext":{source:"iana",extensions:["gxt"]},"application/vnd.geoplan":{source:"iana",extensions:["g2w"]},"application/vnd.geospace":{source:"iana",extensions:["g3w"]},"application/vnd.gerber":{source:"iana"},"application/vnd.globalplatform.card-content-mgt":{source:"iana"},"application/vnd.globalplatform.card-content-mgt-response":{source:"iana"},"application/vnd.gmx":{source:"iana",extensions:["gmx"]},"application/vnd.google-apps.document":{compressible:!1,extensions:["gdoc"]},"application/vnd.google-apps.presentation":{compressible:!1,extensions:["gslides"]},"application/vnd.google-apps.spreadsheet":{compressible:!1,extensions:["gsheet"]},"application/vnd.google-earth.kml+xml":{source:"iana",compressible:!0,extensions:["kml"]},"application/vnd.google-earth.kmz":{source:"iana",compressible:!1,extensions:["kmz"]},"application/vnd.gov.sk.e-form+xml":{source:"iana",compressible:!0},"application/vnd.gov.sk.e-form+zip":{source:"iana",compressible:!1},"application/vnd.gov.sk.xmldatacontainer+xml":{source:"iana",compressible:!0},"application/vnd.grafeq":{source:"iana",extensions:["gqf","gqs"]},"application/vnd.gridmp":{source:"iana"},"application/vnd.groove-account":{source:"iana",extensions:["gac"]},"application/vnd.groove-help":{source:"iana",extensions:["ghf"]},"application/vnd.groove-identity-message":{source:"iana",extensions:["gim"]},"application/vnd.groove-injector":{source:"iana",extensions:["grv"]},"application/vnd.groove-tool-message":{source:"iana",extensions:["gtm"]},"application/vnd.groove-tool-template":{source:"iana",extensions:["tpl"]},"application/vnd.groove-vcard":{source:"iana",extensions:["vcg"]},"application/vnd.hal+json":{source:"iana",compressible:!0},"application/vnd.hal+xml":{source:"iana",compressible:!0,extensions:["hal"]},"application/vnd.handheld-entertainment+xml":{source:"iana",compressible:!0,extensions:["zmm"]},"application/vnd.hbci":{source:"iana",extensions:["hbci"]},"application/vnd.hc+json":{source:"iana",compressible:!0},"application/vnd.hcl-bireports":{source:"iana"},"application/vnd.hdt":{source:"iana"},"application/vnd.heroku+json":{source:"iana",compressible:!0},"application/vnd.hhe.lesson-player":{source:"iana",extensions:["les"]},"application/vnd.hl7cda+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.hl7v2+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.hp-hpgl":{source:"iana",extensions:["hpgl"]},"application/vnd.hp-hpid":{source:"iana",extensions:["hpid"]},"application/vnd.hp-hps":{source:"iana",extensions:["hps"]},"application/vnd.hp-jlyt":{source:"iana",extensions:["jlt"]},"application/vnd.hp-pcl":{source:"iana",extensions:["pcl"]},"application/vnd.hp-pclxl":{source:"iana",extensions:["pclxl"]},"application/vnd.httphone":{source:"iana"},"application/vnd.hydrostatix.sof-data":{source:"iana",extensions:["sfd-hdstx"]},"application/vnd.hyper+json":{source:"iana",compressible:!0},"application/vnd.hyper-item+json":{source:"iana",compressible:!0},"application/vnd.hyperdrive+json":{source:"iana",compressible:!0},"application/vnd.hzn-3d-crossword":{source:"iana"},"application/vnd.ibm.afplinedata":{source:"iana"},"application/vnd.ibm.electronic-media":{source:"iana"},"application/vnd.ibm.minipay":{source:"iana",extensions:["mpy"]},"application/vnd.ibm.modcap":{source:"iana",extensions:["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{source:"iana",extensions:["irm"]},"application/vnd.ibm.secure-container":{source:"iana",extensions:["sc"]},"application/vnd.iccprofile":{source:"iana",extensions:["icc","icm"]},"application/vnd.ieee.1905":{source:"iana"},"application/vnd.igloader":{source:"iana",extensions:["igl"]},"application/vnd.imagemeter.folder+zip":{source:"iana",compressible:!1},"application/vnd.imagemeter.image+zip":{source:"iana",compressible:!1},"application/vnd.immervision-ivp":{source:"iana",extensions:["ivp"]},"application/vnd.immervision-ivu":{source:"iana",extensions:["ivu"]},"application/vnd.ims.imsccv1p1":{source:"iana"},"application/vnd.ims.imsccv1p2":{source:"iana"},"application/vnd.ims.imsccv1p3":{source:"iana"},"application/vnd.ims.lis.v2.result+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy.id+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings.simple+json":{source:"iana",compressible:!0},"application/vnd.informedcontrol.rms+xml":{source:"iana",compressible:!0},"application/vnd.informix-visionary":{source:"iana"},"application/vnd.infotech.project":{source:"iana"},"application/vnd.infotech.project+xml":{source:"iana",compressible:!0},"application/vnd.innopath.wamp.notification":{source:"iana"},"application/vnd.insors.igm":{source:"iana",extensions:["igm"]},"application/vnd.intercon.formnet":{source:"iana",extensions:["xpw","xpx"]},"application/vnd.intergeo":{source:"iana",extensions:["i2g"]},"application/vnd.intertrust.digibox":{source:"iana"},"application/vnd.intertrust.nncp":{source:"iana"},"application/vnd.intu.qbo":{source:"iana",extensions:["qbo"]},"application/vnd.intu.qfx":{source:"iana",extensions:["qfx"]},"application/vnd.iptc.g2.catalogitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.conceptitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.knowledgeitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsmessage+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.packageitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.planningitem+xml":{source:"iana",compressible:!0},"application/vnd.ipunplugged.rcprofile":{source:"iana",extensions:["rcprofile"]},"application/vnd.irepository.package+xml":{source:"iana",compressible:!0,extensions:["irp"]},"application/vnd.is-xpr":{source:"iana",extensions:["xpr"]},"application/vnd.isac.fcs":{source:"iana",extensions:["fcs"]},"application/vnd.iso11783-10+zip":{source:"iana",compressible:!1},"application/vnd.jam":{source:"iana",extensions:["jam"]},"application/vnd.japannet-directory-service":{source:"iana"},"application/vnd.japannet-jpnstore-wakeup":{source:"iana"},"application/vnd.japannet-payment-wakeup":{source:"iana"},"application/vnd.japannet-registration":{source:"iana"},"application/vnd.japannet-registration-wakeup":{source:"iana"},"application/vnd.japannet-setstore-wakeup":{source:"iana"},"application/vnd.japannet-verification":{source:"iana"},"application/vnd.japannet-verification-wakeup":{source:"iana"},"application/vnd.jcp.javame.midlet-rms":{source:"iana",extensions:["rms"]},"application/vnd.jisp":{source:"iana",extensions:["jisp"]},"application/vnd.joost.joda-archive":{source:"iana",extensions:["joda"]},"application/vnd.jsk.isdn-ngn":{source:"iana"},"application/vnd.kahootz":{source:"iana",extensions:["ktz","ktr"]},"application/vnd.kde.karbon":{source:"iana",extensions:["karbon"]},"application/vnd.kde.kchart":{source:"iana",extensions:["chrt"]},"application/vnd.kde.kformula":{source:"iana",extensions:["kfo"]},"application/vnd.kde.kivio":{source:"iana",extensions:["flw"]},"application/vnd.kde.kontour":{source:"iana",extensions:["kon"]},"application/vnd.kde.kpresenter":{source:"iana",extensions:["kpr","kpt"]},"application/vnd.kde.kspread":{source:"iana",extensions:["ksp"]},"application/vnd.kde.kword":{source:"iana",extensions:["kwd","kwt"]},"application/vnd.kenameaapp":{source:"iana",extensions:["htke"]},"application/vnd.kidspiration":{source:"iana",extensions:["kia"]},"application/vnd.kinar":{source:"iana",extensions:["kne","knp"]},"application/vnd.koan":{source:"iana",extensions:["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{source:"iana",extensions:["sse"]},"application/vnd.las":{source:"iana"},"application/vnd.las.las+json":{source:"iana",compressible:!0},"application/vnd.las.las+xml":{source:"iana",compressible:!0,extensions:["lasxml"]},"application/vnd.laszip":{source:"iana"},"application/vnd.leap+json":{source:"iana",compressible:!0},"application/vnd.liberty-request+xml":{source:"iana",compressible:!0},"application/vnd.llamagraphics.life-balance.desktop":{source:"iana",extensions:["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{source:"iana",compressible:!0,extensions:["lbe"]},"application/vnd.logipipe.circuit+zip":{source:"iana",compressible:!1},"application/vnd.loom":{source:"iana"},"application/vnd.lotus-1-2-3":{source:"iana",extensions:["123"]},"application/vnd.lotus-approach":{source:"iana",extensions:["apr"]},"application/vnd.lotus-freelance":{source:"iana",extensions:["pre"]},"application/vnd.lotus-notes":{source:"iana",extensions:["nsf"]},"application/vnd.lotus-organizer":{source:"iana",extensions:["org"]},"application/vnd.lotus-screencam":{source:"iana",extensions:["scm"]},"application/vnd.lotus-wordpro":{source:"iana",extensions:["lwp"]},"application/vnd.macports.portpkg":{source:"iana",extensions:["portpkg"]},"application/vnd.mapbox-vector-tile":{source:"iana",extensions:["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.conftoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.license+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.mdcf":{source:"iana"},"application/vnd.mason+json":{source:"iana",compressible:!0},"application/vnd.maxar.archive.3tz+zip":{source:"iana",compressible:!1},"application/vnd.maxmind.maxmind-db":{source:"iana"},"application/vnd.mcd":{source:"iana",extensions:["mcd"]},"application/vnd.medcalcdata":{source:"iana",extensions:["mc1"]},"application/vnd.mediastation.cdkey":{source:"iana",extensions:["cdkey"]},"application/vnd.meridian-slingshot":{source:"iana"},"application/vnd.mfer":{source:"iana",extensions:["mwf"]},"application/vnd.mfmp":{source:"iana",extensions:["mfm"]},"application/vnd.micro+json":{source:"iana",compressible:!0},"application/vnd.micrografx.flo":{source:"iana",extensions:["flo"]},"application/vnd.micrografx.igx":{source:"iana",extensions:["igx"]},"application/vnd.microsoft.portable-executable":{source:"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{source:"iana"},"application/vnd.miele+json":{source:"iana",compressible:!0},"application/vnd.mif":{source:"iana",extensions:["mif"]},"application/vnd.minisoft-hp3000-save":{source:"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{source:"iana"},"application/vnd.mobius.daf":{source:"iana",extensions:["daf"]},"application/vnd.mobius.dis":{source:"iana",extensions:["dis"]},"application/vnd.mobius.mbk":{source:"iana",extensions:["mbk"]},"application/vnd.mobius.mqy":{source:"iana",extensions:["mqy"]},"application/vnd.mobius.msl":{source:"iana",extensions:["msl"]},"application/vnd.mobius.plc":{source:"iana",extensions:["plc"]},"application/vnd.mobius.txf":{source:"iana",extensions:["txf"]},"application/vnd.mophun.application":{source:"iana",extensions:["mpn"]},"application/vnd.mophun.certificate":{source:"iana",extensions:["mpc"]},"application/vnd.motorola.flexsuite":{source:"iana"},"application/vnd.motorola.flexsuite.adsi":{source:"iana"},"application/vnd.motorola.flexsuite.fis":{source:"iana"},"application/vnd.motorola.flexsuite.gotap":{source:"iana"},"application/vnd.motorola.flexsuite.kmr":{source:"iana"},"application/vnd.motorola.flexsuite.ttc":{source:"iana"},"application/vnd.motorola.flexsuite.wem":{source:"iana"},"application/vnd.motorola.iprm":{source:"iana"},"application/vnd.mozilla.xul+xml":{source:"iana",compressible:!0,extensions:["xul"]},"application/vnd.ms-3mfdocument":{source:"iana"},"application/vnd.ms-artgalry":{source:"iana",extensions:["cil"]},"application/vnd.ms-asf":{source:"iana"},"application/vnd.ms-cab-compressed":{source:"iana",extensions:["cab"]},"application/vnd.ms-color.iccprofile":{source:"apache"},"application/vnd.ms-excel":{source:"iana",compressible:!1,extensions:["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{source:"iana",extensions:["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{source:"iana",extensions:["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{source:"iana",extensions:["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{source:"iana",extensions:["xltm"]},"application/vnd.ms-fontobject":{source:"iana",compressible:!0,extensions:["eot"]},"application/vnd.ms-htmlhelp":{source:"iana",extensions:["chm"]},"application/vnd.ms-ims":{source:"iana",extensions:["ims"]},"application/vnd.ms-lrm":{source:"iana",extensions:["lrm"]},"application/vnd.ms-office.activex+xml":{source:"iana",compressible:!0},"application/vnd.ms-officetheme":{source:"iana",extensions:["thmx"]},"application/vnd.ms-opentype":{source:"apache",compressible:!0},"application/vnd.ms-outlook":{compressible:!1,extensions:["msg"]},"application/vnd.ms-package.obfuscated-opentype":{source:"apache"},"application/vnd.ms-pki.seccat":{source:"apache",extensions:["cat"]},"application/vnd.ms-pki.stl":{source:"apache",extensions:["stl"]},"application/vnd.ms-playready.initiator+xml":{source:"iana",compressible:!0},"application/vnd.ms-powerpoint":{source:"iana",compressible:!1,extensions:["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{source:"iana",extensions:["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{source:"iana",extensions:["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{source:"iana",extensions:["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{source:"iana",extensions:["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{source:"iana",extensions:["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{source:"iana",compressible:!0},"application/vnd.ms-printing.printticket+xml":{source:"apache",compressible:!0},"application/vnd.ms-printschematicket+xml":{source:"iana",compressible:!0},"application/vnd.ms-project":{source:"iana",extensions:["mpp","mpt"]},"application/vnd.ms-tnef":{source:"iana"},"application/vnd.ms-windows.devicepairing":{source:"iana"},"application/vnd.ms-windows.nwprinting.oob":{source:"iana"},"application/vnd.ms-windows.printerpairing":{source:"iana"},"application/vnd.ms-windows.wsd.oob":{source:"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.lic-resp":{source:"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.meter-resp":{source:"iana"},"application/vnd.ms-word.document.macroenabled.12":{source:"iana",extensions:["docm"]},"application/vnd.ms-word.template.macroenabled.12":{source:"iana",extensions:["dotm"]},"application/vnd.ms-works":{source:"iana",extensions:["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{source:"iana",extensions:["wpl"]},"application/vnd.ms-xpsdocument":{source:"iana",compressible:!1,extensions:["xps"]},"application/vnd.msa-disk-image":{source:"iana"},"application/vnd.mseq":{source:"iana",extensions:["mseq"]},"application/vnd.msign":{source:"iana"},"application/vnd.multiad.creator":{source:"iana"},"application/vnd.multiad.creator.cif":{source:"iana"},"application/vnd.music-niff":{source:"iana"},"application/vnd.musician":{source:"iana",extensions:["mus"]},"application/vnd.muvee.style":{source:"iana",extensions:["msty"]},"application/vnd.mynfc":{source:"iana",extensions:["taglet"]},"application/vnd.nacamar.ybrid+json":{source:"iana",compressible:!0},"application/vnd.ncd.control":{source:"iana"},"application/vnd.ncd.reference":{source:"iana"},"application/vnd.nearst.inv+json":{source:"iana",compressible:!0},"application/vnd.nebumind.line":{source:"iana"},"application/vnd.nervana":{source:"iana"},"application/vnd.netfpx":{source:"iana"},"application/vnd.neurolanguage.nlu":{source:"iana",extensions:["nlu"]},"application/vnd.nimn":{source:"iana"},"application/vnd.nintendo.nitro.rom":{source:"iana"},"application/vnd.nintendo.snes.rom":{source:"iana"},"application/vnd.nitf":{source:"iana",extensions:["ntf","nitf"]},"application/vnd.noblenet-directory":{source:"iana",extensions:["nnd"]},"application/vnd.noblenet-sealer":{source:"iana",extensions:["nns"]},"application/vnd.noblenet-web":{source:"iana",extensions:["nnw"]},"application/vnd.nokia.catalogs":{source:"iana"},"application/vnd.nokia.conml+wbxml":{source:"iana"},"application/vnd.nokia.conml+xml":{source:"iana",compressible:!0},"application/vnd.nokia.iptv.config+xml":{source:"iana",compressible:!0},"application/vnd.nokia.isds-radio-presets":{source:"iana"},"application/vnd.nokia.landmark+wbxml":{source:"iana"},"application/vnd.nokia.landmark+xml":{source:"iana",compressible:!0},"application/vnd.nokia.landmarkcollection+xml":{source:"iana",compressible:!0},"application/vnd.nokia.n-gage.ac+xml":{source:"iana",compressible:!0,extensions:["ac"]},"application/vnd.nokia.n-gage.data":{source:"iana",extensions:["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{source:"iana",extensions:["n-gage"]},"application/vnd.nokia.ncd":{source:"iana"},"application/vnd.nokia.pcd+wbxml":{source:"iana"},"application/vnd.nokia.pcd+xml":{source:"iana",compressible:!0},"application/vnd.nokia.radio-preset":{source:"iana",extensions:["rpst"]},"application/vnd.nokia.radio-presets":{source:"iana",extensions:["rpss"]},"application/vnd.novadigm.edm":{source:"iana",extensions:["edm"]},"application/vnd.novadigm.edx":{source:"iana",extensions:["edx"]},"application/vnd.novadigm.ext":{source:"iana",extensions:["ext"]},"application/vnd.ntt-local.content-share":{source:"iana"},"application/vnd.ntt-local.file-transfer":{source:"iana"},"application/vnd.ntt-local.ogw_remote-access":{source:"iana"},"application/vnd.ntt-local.sip-ta_remote":{source:"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{source:"iana"},"application/vnd.oasis.opendocument.chart":{source:"iana",extensions:["odc"]},"application/vnd.oasis.opendocument.chart-template":{source:"iana",extensions:["otc"]},"application/vnd.oasis.opendocument.database":{source:"iana",extensions:["odb"]},"application/vnd.oasis.opendocument.formula":{source:"iana",extensions:["odf"]},"application/vnd.oasis.opendocument.formula-template":{source:"iana",extensions:["odft"]},"application/vnd.oasis.opendocument.graphics":{source:"iana",compressible:!1,extensions:["odg"]},"application/vnd.oasis.opendocument.graphics-template":{source:"iana",extensions:["otg"]},"application/vnd.oasis.opendocument.image":{source:"iana",extensions:["odi"]},"application/vnd.oasis.opendocument.image-template":{source:"iana",extensions:["oti"]},"application/vnd.oasis.opendocument.presentation":{source:"iana",compressible:!1,extensions:["odp"]},"application/vnd.oasis.opendocument.presentation-template":{source:"iana",extensions:["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{source:"iana",compressible:!1,extensions:["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{source:"iana",extensions:["ots"]},"application/vnd.oasis.opendocument.text":{source:"iana",compressible:!1,extensions:["odt"]},"application/vnd.oasis.opendocument.text-master":{source:"iana",extensions:["odm"]},"application/vnd.oasis.opendocument.text-template":{source:"iana",extensions:["ott"]},"application/vnd.oasis.opendocument.text-web":{source:"iana",extensions:["oth"]},"application/vnd.obn":{source:"iana"},"application/vnd.ocf+cbor":{source:"iana"},"application/vnd.oci.image.manifest.v1+json":{source:"iana",compressible:!0},"application/vnd.oftn.l10n+json":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessdownload+xml":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessstreaming+xml":{source:"iana",compressible:!0},"application/vnd.oipf.cspg-hexbinary":{source:"iana"},"application/vnd.oipf.dae.svg+xml":{source:"iana",compressible:!0},"application/vnd.oipf.dae.xhtml+xml":{source:"iana",compressible:!0},"application/vnd.oipf.mippvcontrolmessage+xml":{source:"iana",compressible:!0},"application/vnd.oipf.pae.gem":{source:"iana"},"application/vnd.oipf.spdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.oipf.spdlist+xml":{source:"iana",compressible:!0},"application/vnd.oipf.ueprofile+xml":{source:"iana",compressible:!0},"application/vnd.oipf.userprofile+xml":{source:"iana",compressible:!0},"application/vnd.olpc-sugar":{source:"iana",extensions:["xo"]},"application/vnd.oma-scws-config":{source:"iana"},"application/vnd.oma-scws-http-request":{source:"iana"},"application/vnd.oma-scws-http-response":{source:"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.drm-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.imd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.ltkm":{source:"iana"},"application/vnd.oma.bcast.notification+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.provisioningtrigger":{source:"iana"},"application/vnd.oma.bcast.sgboot":{source:"iana"},"application/vnd.oma.bcast.sgdd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sgdu":{source:"iana"},"application/vnd.oma.bcast.simple-symbol-container":{source:"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sprov+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.stkm":{source:"iana"},"application/vnd.oma.cab-address-book+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-feature-handler+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-pcc+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-subs-invite+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-user-prefs+xml":{source:"iana",compressible:!0},"application/vnd.oma.dcd":{source:"iana"},"application/vnd.oma.dcdc":{source:"iana"},"application/vnd.oma.dd2+xml":{source:"iana",compressible:!0,extensions:["dd2"]},"application/vnd.oma.drm.risd+xml":{source:"iana",compressible:!0},"application/vnd.oma.group-usage-list+xml":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+cbor":{source:"iana"},"application/vnd.oma.lwm2m+json":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+tlv":{source:"iana"},"application/vnd.oma.pal+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.detailed-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.final-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.groups+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.invocation-descriptor+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.optimized-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.push":{source:"iana"},"application/vnd.oma.scidm.messages+xml":{source:"iana",compressible:!0},"application/vnd.oma.xcap-directory+xml":{source:"iana",compressible:!0},"application/vnd.omads-email+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-file+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-folder+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omaloc-supl-init":{source:"iana"},"application/vnd.onepager":{source:"iana"},"application/vnd.onepagertamp":{source:"iana"},"application/vnd.onepagertamx":{source:"iana"},"application/vnd.onepagertat":{source:"iana"},"application/vnd.onepagertatp":{source:"iana"},"application/vnd.onepagertatx":{source:"iana"},"application/vnd.openblox.game+xml":{source:"iana",compressible:!0,extensions:["obgx"]},"application/vnd.openblox.game-binary":{source:"iana"},"application/vnd.openeye.oeb":{source:"iana"},"application/vnd.openofficeorg.extension":{source:"apache",extensions:["oxt"]},"application/vnd.openstreetmap.data+xml":{source:"iana",compressible:!0,extensions:["osm"]},"application/vnd.opentimestamps.ots":{source:"iana"},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawing+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{source:"iana",compressible:!1,extensions:["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slide":{source:"iana",extensions:["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{source:"iana",extensions:["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.template":{source:"iana",extensions:["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{source:"iana",compressible:!1,extensions:["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{source:"iana",extensions:["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.theme+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.vmldrawing":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{source:"iana",compressible:!1,extensions:["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{source:"iana",extensions:["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.core-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.relationships+xml":{source:"iana",compressible:!0},"application/vnd.oracle.resource+json":{source:"iana",compressible:!0},"application/vnd.orange.indata":{source:"iana"},"application/vnd.osa.netdeploy":{source:"iana"},"application/vnd.osgeo.mapguide.package":{source:"iana",extensions:["mgp"]},"application/vnd.osgi.bundle":{source:"iana"},"application/vnd.osgi.dp":{source:"iana",extensions:["dp"]},"application/vnd.osgi.subsystem":{source:"iana",extensions:["esa"]},"application/vnd.otps.ct-kip+xml":{source:"iana",compressible:!0},"application/vnd.oxli.countgraph":{source:"iana"},"application/vnd.pagerduty+json":{source:"iana",compressible:!0},"application/vnd.palm":{source:"iana",extensions:["pdb","pqa","oprc"]},"application/vnd.panoply":{source:"iana"},"application/vnd.paos.xml":{source:"iana"},"application/vnd.patentdive":{source:"iana"},"application/vnd.patientecommsdoc":{source:"iana"},"application/vnd.pawaafile":{source:"iana",extensions:["paw"]},"application/vnd.pcos":{source:"iana"},"application/vnd.pg.format":{source:"iana",extensions:["str"]},"application/vnd.pg.osasli":{source:"iana",extensions:["ei6"]},"application/vnd.piaccess.application-licence":{source:"iana"},"application/vnd.picsel":{source:"iana",extensions:["efif"]},"application/vnd.pmi.widget":{source:"iana",extensions:["wg"]},"application/vnd.poc.group-advertisement+xml":{source:"iana",compressible:!0},"application/vnd.pocketlearn":{source:"iana",extensions:["plf"]},"application/vnd.powerbuilder6":{source:"iana",extensions:["pbd"]},"application/vnd.powerbuilder6-s":{source:"iana"},"application/vnd.powerbuilder7":{source:"iana"},"application/vnd.powerbuilder7-s":{source:"iana"},"application/vnd.powerbuilder75":{source:"iana"},"application/vnd.powerbuilder75-s":{source:"iana"},"application/vnd.preminet":{source:"iana"},"application/vnd.previewsystems.box":{source:"iana",extensions:["box"]},"application/vnd.proteus.magazine":{source:"iana",extensions:["mgz"]},"application/vnd.psfs":{source:"iana"},"application/vnd.publishare-delta-tree":{source:"iana",extensions:["qps"]},"application/vnd.pvi.ptid1":{source:"iana",extensions:["ptid"]},"application/vnd.pwg-multiplexed":{source:"iana"},"application/vnd.pwg-xhtml-print+xml":{source:"iana",compressible:!0},"application/vnd.qualcomm.brew-app-res":{source:"iana"},"application/vnd.quarantainenet":{source:"iana"},"application/vnd.quark.quarkxpress":{source:"iana",extensions:["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{source:"iana"},"application/vnd.radisys.moml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conn+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-stream+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-base+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-detect+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-group+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-speech+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-transform+xml":{source:"iana",compressible:!0},"application/vnd.rainstor.data":{source:"iana"},"application/vnd.rapid":{source:"iana"},"application/vnd.rar":{source:"iana",extensions:["rar"]},"application/vnd.realvnc.bed":{source:"iana",extensions:["bed"]},"application/vnd.recordare.musicxml":{source:"iana",extensions:["mxl"]},"application/vnd.recordare.musicxml+xml":{source:"iana",compressible:!0,extensions:["musicxml"]},"application/vnd.renlearn.rlprint":{source:"iana"},"application/vnd.resilient.logic":{source:"iana"},"application/vnd.restful+json":{source:"iana",compressible:!0},"application/vnd.rig.cryptonote":{source:"iana",extensions:["cryptonote"]},"application/vnd.rim.cod":{source:"apache",extensions:["cod"]},"application/vnd.rn-realmedia":{source:"apache",extensions:["rm"]},"application/vnd.rn-realmedia-vbr":{source:"apache",extensions:["rmvb"]},"application/vnd.route66.link66+xml":{source:"iana",compressible:!0,extensions:["link66"]},"application/vnd.rs-274x":{source:"iana"},"application/vnd.ruckus.download":{source:"iana"},"application/vnd.s3sms":{source:"iana"},"application/vnd.sailingtracker.track":{source:"iana",extensions:["st"]},"application/vnd.sar":{source:"iana"},"application/vnd.sbm.cid":{source:"iana"},"application/vnd.sbm.mid2":{source:"iana"},"application/vnd.scribus":{source:"iana"},"application/vnd.sealed.3df":{source:"iana"},"application/vnd.sealed.csf":{source:"iana"},"application/vnd.sealed.doc":{source:"iana"},"application/vnd.sealed.eml":{source:"iana"},"application/vnd.sealed.mht":{source:"iana"},"application/vnd.sealed.net":{source:"iana"},"application/vnd.sealed.ppt":{source:"iana"},"application/vnd.sealed.tiff":{source:"iana"},"application/vnd.sealed.xls":{source:"iana"},"application/vnd.sealedmedia.softseal.html":{source:"iana"},"application/vnd.sealedmedia.softseal.pdf":{source:"iana"},"application/vnd.seemail":{source:"iana",extensions:["see"]},"application/vnd.seis+json":{source:"iana",compressible:!0},"application/vnd.sema":{source:"iana",extensions:["sema"]},"application/vnd.semd":{source:"iana",extensions:["semd"]},"application/vnd.semf":{source:"iana",extensions:["semf"]},"application/vnd.shade-save-file":{source:"iana"},"application/vnd.shana.informed.formdata":{source:"iana",extensions:["ifm"]},"application/vnd.shana.informed.formtemplate":{source:"iana",extensions:["itp"]},"application/vnd.shana.informed.interchange":{source:"iana",extensions:["iif"]},"application/vnd.shana.informed.package":{source:"iana",extensions:["ipk"]},"application/vnd.shootproof+json":{source:"iana",compressible:!0},"application/vnd.shopkick+json":{source:"iana",compressible:!0},"application/vnd.shp":{source:"iana"},"application/vnd.shx":{source:"iana"},"application/vnd.sigrok.session":{source:"iana"},"application/vnd.simtech-mindmapper":{source:"iana",extensions:["twd","twds"]},"application/vnd.siren+json":{source:"iana",compressible:!0},"application/vnd.smaf":{source:"iana",extensions:["mmf"]},"application/vnd.smart.notebook":{source:"iana"},"application/vnd.smart.teacher":{source:"iana",extensions:["teacher"]},"application/vnd.snesdev-page-table":{source:"iana"},"application/vnd.software602.filler.form+xml":{source:"iana",compressible:!0,extensions:["fo"]},"application/vnd.software602.filler.form-xml-zip":{source:"iana"},"application/vnd.solent.sdkm+xml":{source:"iana",compressible:!0,extensions:["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{source:"iana",extensions:["dxp"]},"application/vnd.spotfire.sfs":{source:"iana",extensions:["sfs"]},"application/vnd.sqlite3":{source:"iana"},"application/vnd.sss-cod":{source:"iana"},"application/vnd.sss-dtf":{source:"iana"},"application/vnd.sss-ntf":{source:"iana"},"application/vnd.stardivision.calc":{source:"apache",extensions:["sdc"]},"application/vnd.stardivision.draw":{source:"apache",extensions:["sda"]},"application/vnd.stardivision.impress":{source:"apache",extensions:["sdd"]},"application/vnd.stardivision.math":{source:"apache",extensions:["smf"]},"application/vnd.stardivision.writer":{source:"apache",extensions:["sdw","vor"]},"application/vnd.stardivision.writer-global":{source:"apache",extensions:["sgl"]},"application/vnd.stepmania.package":{source:"iana",extensions:["smzip"]},"application/vnd.stepmania.stepchart":{source:"iana",extensions:["sm"]},"application/vnd.street-stream":{source:"iana"},"application/vnd.sun.wadl+xml":{source:"iana",compressible:!0,extensions:["wadl"]},"application/vnd.sun.xml.calc":{source:"apache",extensions:["sxc"]},"application/vnd.sun.xml.calc.template":{source:"apache",extensions:["stc"]},"application/vnd.sun.xml.draw":{source:"apache",extensions:["sxd"]},"application/vnd.sun.xml.draw.template":{source:"apache",extensions:["std"]},"application/vnd.sun.xml.impress":{source:"apache",extensions:["sxi"]},"application/vnd.sun.xml.impress.template":{source:"apache",extensions:["sti"]},"application/vnd.sun.xml.math":{source:"apache",extensions:["sxm"]},"application/vnd.sun.xml.writer":{source:"apache",extensions:["sxw"]},"application/vnd.sun.xml.writer.global":{source:"apache",extensions:["sxg"]},"application/vnd.sun.xml.writer.template":{source:"apache",extensions:["stw"]},"application/vnd.sus-calendar":{source:"iana",extensions:["sus","susp"]},"application/vnd.svd":{source:"iana",extensions:["svd"]},"application/vnd.swiftview-ics":{source:"iana"},"application/vnd.sycle+xml":{source:"iana",compressible:!0},"application/vnd.syft+json":{source:"iana",compressible:!0},"application/vnd.symbian.install":{source:"apache",extensions:["sis","sisx"]},"application/vnd.syncml+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xsm"]},"application/vnd.syncml.dm+wbxml":{source:"iana",charset:"UTF-8",extensions:["bdm"]},"application/vnd.syncml.dm+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xdm"]},"application/vnd.syncml.dm.notification":{source:"iana"},"application/vnd.syncml.dmddf+wbxml":{source:"iana"},"application/vnd.syncml.dmddf+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{source:"iana"},"application/vnd.syncml.dmtnds+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.syncml.ds.notification":{source:"iana"},"application/vnd.tableschema+json":{source:"iana",compressible:!0},"application/vnd.tao.intent-module-archive":{source:"iana",extensions:["tao"]},"application/vnd.tcpdump.pcap":{source:"iana",extensions:["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{source:"iana",compressible:!0},"application/vnd.tmd.mediaflex.api+xml":{source:"iana",compressible:!0},"application/vnd.tml":{source:"iana"},"application/vnd.tmobile-livetv":{source:"iana",extensions:["tmo"]},"application/vnd.tri.onesource":{source:"iana"},"application/vnd.trid.tpt":{source:"iana",extensions:["tpt"]},"application/vnd.triscape.mxs":{source:"iana",extensions:["mxs"]},"application/vnd.trueapp":{source:"iana",extensions:["tra"]},"application/vnd.truedoc":{source:"iana"},"application/vnd.ubisoft.webplayer":{source:"iana"},"application/vnd.ufdl":{source:"iana",extensions:["ufd","ufdl"]},"application/vnd.uiq.theme":{source:"iana",extensions:["utz"]},"application/vnd.umajin":{source:"iana",extensions:["umj"]},"application/vnd.unity":{source:"iana",extensions:["unityweb"]},"application/vnd.uoml+xml":{source:"iana",compressible:!0,extensions:["uoml"]},"application/vnd.uplanet.alert":{source:"iana"},"application/vnd.uplanet.alert-wbxml":{source:"iana"},"application/vnd.uplanet.bearer-choice":{source:"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{source:"iana"},"application/vnd.uplanet.cacheop":{source:"iana"},"application/vnd.uplanet.cacheop-wbxml":{source:"iana"},"application/vnd.uplanet.channel":{source:"iana"},"application/vnd.uplanet.channel-wbxml":{source:"iana"},"application/vnd.uplanet.list":{source:"iana"},"application/vnd.uplanet.list-wbxml":{source:"iana"},"application/vnd.uplanet.listcmd":{source:"iana"},"application/vnd.uplanet.listcmd-wbxml":{source:"iana"},"application/vnd.uplanet.signal":{source:"iana"},"application/vnd.uri-map":{source:"iana"},"application/vnd.valve.source.material":{source:"iana"},"application/vnd.vcx":{source:"iana",extensions:["vcx"]},"application/vnd.vd-study":{source:"iana"},"application/vnd.vectorworks":{source:"iana"},"application/vnd.vel+json":{source:"iana",compressible:!0},"application/vnd.verimatrix.vcas":{source:"iana"},"application/vnd.veritone.aion+json":{source:"iana",compressible:!0},"application/vnd.veryant.thin":{source:"iana"},"application/vnd.ves.encrypted":{source:"iana"},"application/vnd.vidsoft.vidconference":{source:"iana"},"application/vnd.visio":{source:"iana",extensions:["vsd","vst","vss","vsw"]},"application/vnd.visionary":{source:"iana",extensions:["vis"]},"application/vnd.vividence.scriptfile":{source:"iana"},"application/vnd.vsf":{source:"iana",extensions:["vsf"]},"application/vnd.wap.sic":{source:"iana"},"application/vnd.wap.slc":{source:"iana"},"application/vnd.wap.wbxml":{source:"iana",charset:"UTF-8",extensions:["wbxml"]},"application/vnd.wap.wmlc":{source:"iana",extensions:["wmlc"]},"application/vnd.wap.wmlscriptc":{source:"iana",extensions:["wmlsc"]},"application/vnd.webturbo":{source:"iana",extensions:["wtb"]},"application/vnd.wfa.dpp":{source:"iana"},"application/vnd.wfa.p2p":{source:"iana"},"application/vnd.wfa.wsc":{source:"iana"},"application/vnd.windows.devicepairing":{source:"iana"},"application/vnd.wmc":{source:"iana"},"application/vnd.wmf.bootstrap":{source:"iana"},"application/vnd.wolfram.mathematica":{source:"iana"},"application/vnd.wolfram.mathematica.package":{source:"iana"},"application/vnd.wolfram.player":{source:"iana",extensions:["nbp"]},"application/vnd.wordperfect":{source:"iana",extensions:["wpd"]},"application/vnd.wqd":{source:"iana",extensions:["wqd"]},"application/vnd.wrq-hp3000-labelled":{source:"iana"},"application/vnd.wt.stf":{source:"iana",extensions:["stf"]},"application/vnd.wv.csp+wbxml":{source:"iana"},"application/vnd.wv.csp+xml":{source:"iana",compressible:!0},"application/vnd.wv.ssp+xml":{source:"iana",compressible:!0},"application/vnd.xacml+json":{source:"iana",compressible:!0},"application/vnd.xara":{source:"iana",extensions:["xar"]},"application/vnd.xfdl":{source:"iana",extensions:["xfdl"]},"application/vnd.xfdl.webform":{source:"iana"},"application/vnd.xmi+xml":{source:"iana",compressible:!0},"application/vnd.xmpie.cpkg":{source:"iana"},"application/vnd.xmpie.dpkg":{source:"iana"},"application/vnd.xmpie.plan":{source:"iana"},"application/vnd.xmpie.ppkg":{source:"iana"},"application/vnd.xmpie.xlim":{source:"iana"},"application/vnd.yamaha.hv-dic":{source:"iana",extensions:["hvd"]},"application/vnd.yamaha.hv-script":{source:"iana",extensions:["hvs"]},"application/vnd.yamaha.hv-voice":{source:"iana",extensions:["hvp"]},"application/vnd.yamaha.openscoreformat":{source:"iana",extensions:["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{source:"iana",compressible:!0,extensions:["osfpvg"]},"application/vnd.yamaha.remote-setup":{source:"iana"},"application/vnd.yamaha.smaf-audio":{source:"iana",extensions:["saf"]},"application/vnd.yamaha.smaf-phrase":{source:"iana",extensions:["spf"]},"application/vnd.yamaha.through-ngn":{source:"iana"},"application/vnd.yamaha.tunnel-udpencap":{source:"iana"},"application/vnd.yaoweme":{source:"iana"},"application/vnd.yellowriver-custom-menu":{source:"iana",extensions:["cmp"]},"application/vnd.youtube.yt":{source:"iana"},"application/vnd.zul":{source:"iana",extensions:["zir","zirz"]},"application/vnd.zzazz.deck+xml":{source:"iana",compressible:!0,extensions:["zaz"]},"application/voicexml+xml":{source:"iana",compressible:!0,extensions:["vxml"]},"application/voucher-cms+json":{source:"iana",compressible:!0},"application/vq-rtcpxr":{source:"iana"},"application/wasm":{source:"iana",compressible:!0,extensions:["wasm"]},"application/watcherinfo+xml":{source:"iana",compressible:!0,extensions:["wif"]},"application/webpush-options+json":{source:"iana",compressible:!0},"application/whoispp-query":{source:"iana"},"application/whoispp-response":{source:"iana"},"application/widget":{source:"iana",extensions:["wgt"]},"application/winhlp":{source:"apache",extensions:["hlp"]},"application/wita":{source:"iana"},"application/wordperfect5.1":{source:"iana"},"application/wsdl+xml":{source:"iana",compressible:!0,extensions:["wsdl"]},"application/wspolicy+xml":{source:"iana",compressible:!0,extensions:["wspolicy"]},"application/x-7z-compressed":{source:"apache",compressible:!1,extensions:["7z"]},"application/x-abiword":{source:"apache",extensions:["abw"]},"application/x-ace-compressed":{source:"apache",extensions:["ace"]},"application/x-amf":{source:"apache"},"application/x-apple-diskimage":{source:"apache",extensions:["dmg"]},"application/x-arj":{compressible:!1,extensions:["arj"]},"application/x-authorware-bin":{source:"apache",extensions:["aab","x32","u32","vox"]},"application/x-authorware-map":{source:"apache",extensions:["aam"]},"application/x-authorware-seg":{source:"apache",extensions:["aas"]},"application/x-bcpio":{source:"apache",extensions:["bcpio"]},"application/x-bdoc":{compressible:!1,extensions:["bdoc"]},"application/x-bittorrent":{source:"apache",extensions:["torrent"]},"application/x-blorb":{source:"apache",extensions:["blb","blorb"]},"application/x-bzip":{source:"apache",compressible:!1,extensions:["bz"]},"application/x-bzip2":{source:"apache",compressible:!1,extensions:["bz2","boz"]},"application/x-cbr":{source:"apache",extensions:["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{source:"apache",extensions:["vcd"]},"application/x-cfs-compressed":{source:"apache",extensions:["cfs"]},"application/x-chat":{source:"apache",extensions:["chat"]},"application/x-chess-pgn":{source:"apache",extensions:["pgn"]},"application/x-chrome-extension":{extensions:["crx"]},"application/x-cocoa":{source:"nginx",extensions:["cco"]},"application/x-compress":{source:"apache"},"application/x-conference":{source:"apache",extensions:["nsc"]},"application/x-cpio":{source:"apache",extensions:["cpio"]},"application/x-csh":{source:"apache",extensions:["csh"]},"application/x-deb":{compressible:!1},"application/x-debian-package":{source:"apache",extensions:["deb","udeb"]},"application/x-dgc-compressed":{source:"apache",extensions:["dgc"]},"application/x-director":{source:"apache",extensions:["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{source:"apache",extensions:["wad"]},"application/x-dtbncx+xml":{source:"apache",compressible:!0,extensions:["ncx"]},"application/x-dtbook+xml":{source:"apache",compressible:!0,extensions:["dtb"]},"application/x-dtbresource+xml":{source:"apache",compressible:!0,extensions:["res"]},"application/x-dvi":{source:"apache",compressible:!1,extensions:["dvi"]},"application/x-envoy":{source:"apache",extensions:["evy"]},"application/x-eva":{source:"apache",extensions:["eva"]},"application/x-font-bdf":{source:"apache",extensions:["bdf"]},"application/x-font-dos":{source:"apache"},"application/x-font-framemaker":{source:"apache"},"application/x-font-ghostscript":{source:"apache",extensions:["gsf"]},"application/x-font-libgrx":{source:"apache"},"application/x-font-linux-psf":{source:"apache",extensions:["psf"]},"application/x-font-pcf":{source:"apache",extensions:["pcf"]},"application/x-font-snf":{source:"apache",extensions:["snf"]},"application/x-font-speedo":{source:"apache"},"application/x-font-sunos-news":{source:"apache"},"application/x-font-type1":{source:"apache",extensions:["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{source:"apache"},"application/x-freearc":{source:"apache",extensions:["arc"]},"application/x-futuresplash":{source:"apache",extensions:["spl"]},"application/x-gca-compressed":{source:"apache",extensions:["gca"]},"application/x-glulx":{source:"apache",extensions:["ulx"]},"application/x-gnumeric":{source:"apache",extensions:["gnumeric"]},"application/x-gramps-xml":{source:"apache",extensions:["gramps"]},"application/x-gtar":{source:"apache",extensions:["gtar"]},"application/x-gzip":{source:"apache"},"application/x-hdf":{source:"apache",extensions:["hdf"]},"application/x-httpd-php":{compressible:!0,extensions:["php"]},"application/x-install-instructions":{source:"apache",extensions:["install"]},"application/x-iso9660-image":{source:"apache",extensions:["iso"]},"application/x-iwork-keynote-sffkey":{extensions:["key"]},"application/x-iwork-numbers-sffnumbers":{extensions:["numbers"]},"application/x-iwork-pages-sffpages":{extensions:["pages"]},"application/x-java-archive-diff":{source:"nginx",extensions:["jardiff"]},"application/x-java-jnlp-file":{source:"apache",compressible:!1,extensions:["jnlp"]},"application/x-javascript":{compressible:!0},"application/x-keepass2":{extensions:["kdbx"]},"application/x-latex":{source:"apache",compressible:!1,extensions:["latex"]},"application/x-lua-bytecode":{extensions:["luac"]},"application/x-lzh-compressed":{source:"apache",extensions:["lzh","lha"]},"application/x-makeself":{source:"nginx",extensions:["run"]},"application/x-mie":{source:"apache",extensions:["mie"]},"application/x-mobipocket-ebook":{source:"apache",extensions:["prc","mobi"]},"application/x-mpegurl":{compressible:!1},"application/x-ms-application":{source:"apache",extensions:["application"]},"application/x-ms-shortcut":{source:"apache",extensions:["lnk"]},"application/x-ms-wmd":{source:"apache",extensions:["wmd"]},"application/x-ms-wmz":{source:"apache",extensions:["wmz"]},"application/x-ms-xbap":{source:"apache",extensions:["xbap"]},"application/x-msaccess":{source:"apache",extensions:["mdb"]},"application/x-msbinder":{source:"apache",extensions:["obd"]},"application/x-mscardfile":{source:"apache",extensions:["crd"]},"application/x-msclip":{source:"apache",extensions:["clp"]},"application/x-msdos-program":{extensions:["exe"]},"application/x-msdownload":{source:"apache",extensions:["exe","dll","com","bat","msi"]},"application/x-msmediaview":{source:"apache",extensions:["mvb","m13","m14"]},"application/x-msmetafile":{source:"apache",extensions:["wmf","wmz","emf","emz"]},"application/x-msmoney":{source:"apache",extensions:["mny"]},"application/x-mspublisher":{source:"apache",extensions:["pub"]},"application/x-msschedule":{source:"apache",extensions:["scd"]},"application/x-msterminal":{source:"apache",extensions:["trm"]},"application/x-mswrite":{source:"apache",extensions:["wri"]},"application/x-netcdf":{source:"apache",extensions:["nc","cdf"]},"application/x-ns-proxy-autoconfig":{compressible:!0,extensions:["pac"]},"application/x-nzb":{source:"apache",extensions:["nzb"]},"application/x-perl":{source:"nginx",extensions:["pl","pm"]},"application/x-pilot":{source:"nginx",extensions:["prc","pdb"]},"application/x-pkcs12":{source:"apache",compressible:!1,extensions:["p12","pfx"]},"application/x-pkcs7-certificates":{source:"apache",extensions:["p7b","spc"]},"application/x-pkcs7-certreqresp":{source:"apache",extensions:["p7r"]},"application/x-pki-message":{source:"iana"},"application/x-rar-compressed":{source:"apache",compressible:!1,extensions:["rar"]},"application/x-redhat-package-manager":{source:"nginx",extensions:["rpm"]},"application/x-research-info-systems":{source:"apache",extensions:["ris"]},"application/x-sea":{source:"nginx",extensions:["sea"]},"application/x-sh":{source:"apache",compressible:!0,extensions:["sh"]},"application/x-shar":{source:"apache",extensions:["shar"]},"application/x-shockwave-flash":{source:"apache",compressible:!1,extensions:["swf"]},"application/x-silverlight-app":{source:"apache",extensions:["xap"]},"application/x-sql":{source:"apache",extensions:["sql"]},"application/x-stuffit":{source:"apache",compressible:!1,extensions:["sit"]},"application/x-stuffitx":{source:"apache",extensions:["sitx"]},"application/x-subrip":{source:"apache",extensions:["srt"]},"application/x-sv4cpio":{source:"apache",extensions:["sv4cpio"]},"application/x-sv4crc":{source:"apache",extensions:["sv4crc"]},"application/x-t3vm-image":{source:"apache",extensions:["t3"]},"application/x-tads":{source:"apache",extensions:["gam"]},"application/x-tar":{source:"apache",compressible:!0,extensions:["tar"]},"application/x-tcl":{source:"apache",extensions:["tcl","tk"]},"application/x-tex":{source:"apache",extensions:["tex"]},"application/x-tex-tfm":{source:"apache",extensions:["tfm"]},"application/x-texinfo":{source:"apache",extensions:["texinfo","texi"]},"application/x-tgif":{source:"apache",extensions:["obj"]},"application/x-ustar":{source:"apache",extensions:["ustar"]},"application/x-virtualbox-hdd":{compressible:!0,extensions:["hdd"]},"application/x-virtualbox-ova":{compressible:!0,extensions:["ova"]},"application/x-virtualbox-ovf":{compressible:!0,extensions:["ovf"]},"application/x-virtualbox-vbox":{compressible:!0,extensions:["vbox"]},"application/x-virtualbox-vbox-extpack":{compressible:!1,extensions:["vbox-extpack"]},"application/x-virtualbox-vdi":{compressible:!0,extensions:["vdi"]},"application/x-virtualbox-vhd":{compressible:!0,extensions:["vhd"]},"application/x-virtualbox-vmdk":{compressible:!0,extensions:["vmdk"]},"application/x-wais-source":{source:"apache",extensions:["src"]},"application/x-web-app-manifest+json":{compressible:!0,extensions:["webapp"]},"application/x-www-form-urlencoded":{source:"iana",compressible:!0},"application/x-x509-ca-cert":{source:"iana",extensions:["der","crt","pem"]},"application/x-x509-ca-ra-cert":{source:"iana"},"application/x-x509-next-ca-cert":{source:"iana"},"application/x-xfig":{source:"apache",extensions:["fig"]},"application/x-xliff+xml":{source:"apache",compressible:!0,extensions:["xlf"]},"application/x-xpinstall":{source:"apache",compressible:!1,extensions:["xpi"]},"application/x-xz":{source:"apache",extensions:["xz"]},"application/x-zmachine":{source:"apache",extensions:["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{source:"iana"},"application/xacml+xml":{source:"iana",compressible:!0},"application/xaml+xml":{source:"apache",compressible:!0,extensions:["xaml"]},"application/xcap-att+xml":{source:"iana",compressible:!0,extensions:["xav"]},"application/xcap-caps+xml":{source:"iana",compressible:!0,extensions:["xca"]},"application/xcap-diff+xml":{source:"iana",compressible:!0,extensions:["xdf"]},"application/xcap-el+xml":{source:"iana",compressible:!0,extensions:["xel"]},"application/xcap-error+xml":{source:"iana",compressible:!0},"application/xcap-ns+xml":{source:"iana",compressible:!0,extensions:["xns"]},"application/xcon-conference-info+xml":{source:"iana",compressible:!0},"application/xcon-conference-info-diff+xml":{source:"iana",compressible:!0},"application/xenc+xml":{source:"iana",compressible:!0,extensions:["xenc"]},"application/xhtml+xml":{source:"iana",compressible:!0,extensions:["xhtml","xht"]},"application/xhtml-voice+xml":{source:"apache",compressible:!0},"application/xliff+xml":{source:"iana",compressible:!0,extensions:["xlf"]},"application/xml":{source:"iana",compressible:!0,extensions:["xml","xsl","xsd","rng"]},"application/xml-dtd":{source:"iana",compressible:!0,extensions:["dtd"]},"application/xml-external-parsed-entity":{source:"iana"},"application/xml-patch+xml":{source:"iana",compressible:!0},"application/xmpp+xml":{source:"iana",compressible:!0},"application/xop+xml":{source:"iana",compressible:!0,extensions:["xop"]},"application/xproc+xml":{source:"apache",compressible:!0,extensions:["xpl"]},"application/xslt+xml":{source:"iana",compressible:!0,extensions:["xsl","xslt"]},"application/xspf+xml":{source:"apache",compressible:!0,extensions:["xspf"]},"application/xv+xml":{source:"iana",compressible:!0,extensions:["mxml","xhvml","xvml","xvm"]},"application/yang":{source:"iana",extensions:["yang"]},"application/yang-data+json":{source:"iana",compressible:!0},"application/yang-data+xml":{source:"iana",compressible:!0},"application/yang-patch+json":{source:"iana",compressible:!0},"application/yang-patch+xml":{source:"iana",compressible:!0},"application/yin+xml":{source:"iana",compressible:!0,extensions:["yin"]},"application/zip":{source:"iana",compressible:!1,extensions:["zip"]},"application/zlib":{source:"iana"},"application/zstd":{source:"iana"},"audio/1d-interleaved-parityfec":{source:"iana"},"audio/32kadpcm":{source:"iana"},"audio/3gpp":{source:"iana",compressible:!1,extensions:["3gpp"]},"audio/3gpp2":{source:"iana"},"audio/aac":{source:"iana"},"audio/ac3":{source:"iana"},"audio/adpcm":{source:"apache",extensions:["adp"]},"audio/amr":{source:"iana",extensions:["amr"]},"audio/amr-wb":{source:"iana"},"audio/amr-wb+":{source:"iana"},"audio/aptx":{source:"iana"},"audio/asc":{source:"iana"},"audio/atrac-advanced-lossless":{source:"iana"},"audio/atrac-x":{source:"iana"},"audio/atrac3":{source:"iana"},"audio/basic":{source:"iana",compressible:!1,extensions:["au","snd"]},"audio/bv16":{source:"iana"},"audio/bv32":{source:"iana"},"audio/clearmode":{source:"iana"},"audio/cn":{source:"iana"},"audio/dat12":{source:"iana"},"audio/dls":{source:"iana"},"audio/dsr-es201108":{source:"iana"},"audio/dsr-es202050":{source:"iana"},"audio/dsr-es202211":{source:"iana"},"audio/dsr-es202212":{source:"iana"},"audio/dv":{source:"iana"},"audio/dvi4":{source:"iana"},"audio/eac3":{source:"iana"},"audio/encaprtp":{source:"iana"},"audio/evrc":{source:"iana"},"audio/evrc-qcp":{source:"iana"},"audio/evrc0":{source:"iana"},"audio/evrc1":{source:"iana"},"audio/evrcb":{source:"iana"},"audio/evrcb0":{source:"iana"},"audio/evrcb1":{source:"iana"},"audio/evrcnw":{source:"iana"},"audio/evrcnw0":{source:"iana"},"audio/evrcnw1":{source:"iana"},"audio/evrcwb":{source:"iana"},"audio/evrcwb0":{source:"iana"},"audio/evrcwb1":{source:"iana"},"audio/evs":{source:"iana"},"audio/flexfec":{source:"iana"},"audio/fwdred":{source:"iana"},"audio/g711-0":{source:"iana"},"audio/g719":{source:"iana"},"audio/g722":{source:"iana"},"audio/g7221":{source:"iana"},"audio/g723":{source:"iana"},"audio/g726-16":{source:"iana"},"audio/g726-24":{source:"iana"},"audio/g726-32":{source:"iana"},"audio/g726-40":{source:"iana"},"audio/g728":{source:"iana"},"audio/g729":{source:"iana"},"audio/g7291":{source:"iana"},"audio/g729d":{source:"iana"},"audio/g729e":{source:"iana"},"audio/gsm":{source:"iana"},"audio/gsm-efr":{source:"iana"},"audio/gsm-hr-08":{source:"iana"},"audio/ilbc":{source:"iana"},"audio/ip-mr_v2.5":{source:"iana"},"audio/isac":{source:"apache"},"audio/l16":{source:"iana"},"audio/l20":{source:"iana"},"audio/l24":{source:"iana",compressible:!1},"audio/l8":{source:"iana"},"audio/lpc":{source:"iana"},"audio/melp":{source:"iana"},"audio/melp1200":{source:"iana"},"audio/melp2400":{source:"iana"},"audio/melp600":{source:"iana"},"audio/mhas":{source:"iana"},"audio/midi":{source:"apache",extensions:["mid","midi","kar","rmi"]},"audio/mobile-xmf":{source:"iana",extensions:["mxmf"]},"audio/mp3":{compressible:!1,extensions:["mp3"]},"audio/mp4":{source:"iana",compressible:!1,extensions:["m4a","mp4a"]},"audio/mp4a-latm":{source:"iana"},"audio/mpa":{source:"iana"},"audio/mpa-robust":{source:"iana"},"audio/mpeg":{source:"iana",compressible:!1,extensions:["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{source:"iana"},"audio/musepack":{source:"apache"},"audio/ogg":{source:"iana",compressible:!1,extensions:["oga","ogg","spx","opus"]},"audio/opus":{source:"iana"},"audio/parityfec":{source:"iana"},"audio/pcma":{source:"iana"},"audio/pcma-wb":{source:"iana"},"audio/pcmu":{source:"iana"},"audio/pcmu-wb":{source:"iana"},"audio/prs.sid":{source:"iana"},"audio/qcelp":{source:"iana"},"audio/raptorfec":{source:"iana"},"audio/red":{source:"iana"},"audio/rtp-enc-aescm128":{source:"iana"},"audio/rtp-midi":{source:"iana"},"audio/rtploopback":{source:"iana"},"audio/rtx":{source:"iana"},"audio/s3m":{source:"apache",extensions:["s3m"]},"audio/scip":{source:"iana"},"audio/silk":{source:"apache",extensions:["sil"]},"audio/smv":{source:"iana"},"audio/smv-qcp":{source:"iana"},"audio/smv0":{source:"iana"},"audio/sofa":{source:"iana"},"audio/sp-midi":{source:"iana"},"audio/speex":{source:"iana"},"audio/t140c":{source:"iana"},"audio/t38":{source:"iana"},"audio/telephone-event":{source:"iana"},"audio/tetra_acelp":{source:"iana"},"audio/tetra_acelp_bb":{source:"iana"},"audio/tone":{source:"iana"},"audio/tsvcis":{source:"iana"},"audio/uemclip":{source:"iana"},"audio/ulpfec":{source:"iana"},"audio/usac":{source:"iana"},"audio/vdvi":{source:"iana"},"audio/vmr-wb":{source:"iana"},"audio/vnd.3gpp.iufp":{source:"iana"},"audio/vnd.4sb":{source:"iana"},"audio/vnd.audiokoz":{source:"iana"},"audio/vnd.celp":{source:"iana"},"audio/vnd.cisco.nse":{source:"iana"},"audio/vnd.cmles.radio-events":{source:"iana"},"audio/vnd.cns.anp1":{source:"iana"},"audio/vnd.cns.inf1":{source:"iana"},"audio/vnd.dece.audio":{source:"iana",extensions:["uva","uvva"]},"audio/vnd.digital-winds":{source:"iana",extensions:["eol"]},"audio/vnd.dlna.adts":{source:"iana"},"audio/vnd.dolby.heaac.1":{source:"iana"},"audio/vnd.dolby.heaac.2":{source:"iana"},"audio/vnd.dolby.mlp":{source:"iana"},"audio/vnd.dolby.mps":{source:"iana"},"audio/vnd.dolby.pl2":{source:"iana"},"audio/vnd.dolby.pl2x":{source:"iana"},"audio/vnd.dolby.pl2z":{source:"iana"},"audio/vnd.dolby.pulse.1":{source:"iana"},"audio/vnd.dra":{source:"iana",extensions:["dra"]},"audio/vnd.dts":{source:"iana",extensions:["dts"]},"audio/vnd.dts.hd":{source:"iana",extensions:["dtshd"]},"audio/vnd.dts.uhd":{source:"iana"},"audio/vnd.dvb.file":{source:"iana"},"audio/vnd.everad.plj":{source:"iana"},"audio/vnd.hns.audio":{source:"iana"},"audio/vnd.lucent.voice":{source:"iana",extensions:["lvp"]},"audio/vnd.ms-playready.media.pya":{source:"iana",extensions:["pya"]},"audio/vnd.nokia.mobile-xmf":{source:"iana"},"audio/vnd.nortel.vbk":{source:"iana"},"audio/vnd.nuera.ecelp4800":{source:"iana",extensions:["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{source:"iana",extensions:["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{source:"iana",extensions:["ecelp9600"]},"audio/vnd.octel.sbc":{source:"iana"},"audio/vnd.presonus.multitrack":{source:"iana"},"audio/vnd.qcelp":{source:"iana"},"audio/vnd.rhetorex.32kadpcm":{source:"iana"},"audio/vnd.rip":{source:"iana",extensions:["rip"]},"audio/vnd.rn-realaudio":{compressible:!1},"audio/vnd.sealedmedia.softseal.mpeg":{source:"iana"},"audio/vnd.vmx.cvsd":{source:"iana"},"audio/vnd.wave":{compressible:!1},"audio/vorbis":{source:"iana",compressible:!1},"audio/vorbis-config":{source:"iana"},"audio/wav":{compressible:!1,extensions:["wav"]},"audio/wave":{compressible:!1,extensions:["wav"]},"audio/webm":{source:"apache",compressible:!1,extensions:["weba"]},"audio/x-aac":{source:"apache",compressible:!1,extensions:["aac"]},"audio/x-aiff":{source:"apache",extensions:["aif","aiff","aifc"]},"audio/x-caf":{source:"apache",compressible:!1,extensions:["caf"]},"audio/x-flac":{source:"apache",extensions:["flac"]},"audio/x-m4a":{source:"nginx",extensions:["m4a"]},"audio/x-matroska":{source:"apache",extensions:["mka"]},"audio/x-mpegurl":{source:"apache",extensions:["m3u"]},"audio/x-ms-wax":{source:"apache",extensions:["wax"]},"audio/x-ms-wma":{source:"apache",extensions:["wma"]},"audio/x-pn-realaudio":{source:"apache",extensions:["ram","ra"]},"audio/x-pn-realaudio-plugin":{source:"apache",extensions:["rmp"]},"audio/x-realaudio":{source:"nginx",extensions:["ra"]},"audio/x-tta":{source:"apache"},"audio/x-wav":{source:"apache",extensions:["wav"]},"audio/xm":{source:"apache",extensions:["xm"]},"chemical/x-cdx":{source:"apache",extensions:["cdx"]},"chemical/x-cif":{source:"apache",extensions:["cif"]},"chemical/x-cmdf":{source:"apache",extensions:["cmdf"]},"chemical/x-cml":{source:"apache",extensions:["cml"]},"chemical/x-csml":{source:"apache",extensions:["csml"]},"chemical/x-pdb":{source:"apache"},"chemical/x-xyz":{source:"apache",extensions:["xyz"]},"font/collection":{source:"iana",extensions:["ttc"]},"font/otf":{source:"iana",compressible:!0,extensions:["otf"]},"font/sfnt":{source:"iana"},"font/ttf":{source:"iana",compressible:!0,extensions:["ttf"]},"font/woff":{source:"iana",extensions:["woff"]},"font/woff2":{source:"iana",extensions:["woff2"]},"image/aces":{source:"iana",extensions:["exr"]},"image/apng":{compressible:!1,extensions:["apng"]},"image/avci":{source:"iana",extensions:["avci"]},"image/avcs":{source:"iana",extensions:["avcs"]},"image/avif":{source:"iana",compressible:!1,extensions:["avif"]},"image/bmp":{source:"iana",compressible:!0,extensions:["bmp"]},"image/cgm":{source:"iana",extensions:["cgm"]},"image/dicom-rle":{source:"iana",extensions:["drle"]},"image/emf":{source:"iana",extensions:["emf"]},"image/fits":{source:"iana",extensions:["fits"]},"image/g3fax":{source:"iana",extensions:["g3"]},"image/gif":{source:"iana",compressible:!1,extensions:["gif"]},"image/heic":{source:"iana",extensions:["heic"]},"image/heic-sequence":{source:"iana",extensions:["heics"]},"image/heif":{source:"iana",extensions:["heif"]},"image/heif-sequence":{source:"iana",extensions:["heifs"]},"image/hej2k":{source:"iana",extensions:["hej2"]},"image/hsj2":{source:"iana",extensions:["hsj2"]},"image/ief":{source:"iana",extensions:["ief"]},"image/jls":{source:"iana",extensions:["jls"]},"image/jp2":{source:"iana",compressible:!1,extensions:["jp2","jpg2"]},"image/jpeg":{source:"iana",compressible:!1,extensions:["jpeg","jpg","jpe"]},"image/jph":{source:"iana",extensions:["jph"]},"image/jphc":{source:"iana",extensions:["jhc"]},"image/jpm":{source:"iana",compressible:!1,extensions:["jpm"]},"image/jpx":{source:"iana",compressible:!1,extensions:["jpx","jpf"]},"image/jxr":{source:"iana",extensions:["jxr"]},"image/jxra":{source:"iana",extensions:["jxra"]},"image/jxrs":{source:"iana",extensions:["jxrs"]},"image/jxs":{source:"iana",extensions:["jxs"]},"image/jxsc":{source:"iana",extensions:["jxsc"]},"image/jxsi":{source:"iana",extensions:["jxsi"]},"image/jxss":{source:"iana",extensions:["jxss"]},"image/ktx":{source:"iana",extensions:["ktx"]},"image/ktx2":{source:"iana",extensions:["ktx2"]},"image/naplps":{source:"iana"},"image/pjpeg":{compressible:!1},"image/png":{source:"iana",compressible:!1,extensions:["png"]},"image/prs.btif":{source:"iana",extensions:["btif"]},"image/prs.pti":{source:"iana",extensions:["pti"]},"image/pwg-raster":{source:"iana"},"image/sgi":{source:"apache",extensions:["sgi"]},"image/svg+xml":{source:"iana",compressible:!0,extensions:["svg","svgz"]},"image/t38":{source:"iana",extensions:["t38"]},"image/tiff":{source:"iana",compressible:!1,extensions:["tif","tiff"]},"image/tiff-fx":{source:"iana",extensions:["tfx"]},"image/vnd.adobe.photoshop":{source:"iana",compressible:!0,extensions:["psd"]},"image/vnd.airzip.accelerator.azv":{source:"iana",extensions:["azv"]},"image/vnd.cns.inf2":{source:"iana"},"image/vnd.dece.graphic":{source:"iana",extensions:["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{source:"iana",extensions:["djvu","djv"]},"image/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"image/vnd.dwg":{source:"iana",extensions:["dwg"]},"image/vnd.dxf":{source:"iana",extensions:["dxf"]},"image/vnd.fastbidsheet":{source:"iana",extensions:["fbs"]},"image/vnd.fpx":{source:"iana",extensions:["fpx"]},"image/vnd.fst":{source:"iana",extensions:["fst"]},"image/vnd.fujixerox.edmics-mmr":{source:"iana",extensions:["mmr"]},"image/vnd.fujixerox.edmics-rlc":{source:"iana",extensions:["rlc"]},"image/vnd.globalgraphics.pgb":{source:"iana"},"image/vnd.microsoft.icon":{source:"iana",compressible:!0,extensions:["ico"]},"image/vnd.mix":{source:"iana"},"image/vnd.mozilla.apng":{source:"iana"},"image/vnd.ms-dds":{compressible:!0,extensions:["dds"]},"image/vnd.ms-modi":{source:"iana",extensions:["mdi"]},"image/vnd.ms-photo":{source:"apache",extensions:["wdp"]},"image/vnd.net-fpx":{source:"iana",extensions:["npx"]},"image/vnd.pco.b16":{source:"iana",extensions:["b16"]},"image/vnd.radiance":{source:"iana"},"image/vnd.sealed.png":{source:"iana"},"image/vnd.sealedmedia.softseal.gif":{source:"iana"},"image/vnd.sealedmedia.softseal.jpg":{source:"iana"},"image/vnd.svf":{source:"iana"},"image/vnd.tencent.tap":{source:"iana",extensions:["tap"]},"image/vnd.valve.source.texture":{source:"iana",extensions:["vtf"]},"image/vnd.wap.wbmp":{source:"iana",extensions:["wbmp"]},"image/vnd.xiff":{source:"iana",extensions:["xif"]},"image/vnd.zbrush.pcx":{source:"iana",extensions:["pcx"]},"image/webp":{source:"apache",extensions:["webp"]},"image/wmf":{source:"iana",extensions:["wmf"]},"image/x-3ds":{source:"apache",extensions:["3ds"]},"image/x-cmu-raster":{source:"apache",extensions:["ras"]},"image/x-cmx":{source:"apache",extensions:["cmx"]},"image/x-freehand":{source:"apache",extensions:["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{source:"apache",compressible:!0,extensions:["ico"]},"image/x-jng":{source:"nginx",extensions:["jng"]},"image/x-mrsid-image":{source:"apache",extensions:["sid"]},"image/x-ms-bmp":{source:"nginx",compressible:!0,extensions:["bmp"]},"image/x-pcx":{source:"apache",extensions:["pcx"]},"image/x-pict":{source:"apache",extensions:["pic","pct"]},"image/x-portable-anymap":{source:"apache",extensions:["pnm"]},"image/x-portable-bitmap":{source:"apache",extensions:["pbm"]},"image/x-portable-graymap":{source:"apache",extensions:["pgm"]},"image/x-portable-pixmap":{source:"apache",extensions:["ppm"]},"image/x-rgb":{source:"apache",extensions:["rgb"]},"image/x-tga":{source:"apache",extensions:["tga"]},"image/x-xbitmap":{source:"apache",extensions:["xbm"]},"image/x-xcf":{compressible:!1},"image/x-xpixmap":{source:"apache",extensions:["xpm"]},"image/x-xwindowdump":{source:"apache",extensions:["xwd"]},"message/cpim":{source:"iana"},"message/delivery-status":{source:"iana"},"message/disposition-notification":{source:"iana",extensions:["disposition-notification"]},"message/external-body":{source:"iana"},"message/feedback-report":{source:"iana"},"message/global":{source:"iana",extensions:["u8msg"]},"message/global-delivery-status":{source:"iana",extensions:["u8dsn"]},"message/global-disposition-notification":{source:"iana",extensions:["u8mdn"]},"message/global-headers":{source:"iana",extensions:["u8hdr"]},"message/http":{source:"iana",compressible:!1},"message/imdn+xml":{source:"iana",compressible:!0},"message/news":{source:"iana"},"message/partial":{source:"iana",compressible:!1},"message/rfc822":{source:"iana",compressible:!0,extensions:["eml","mime"]},"message/s-http":{source:"iana"},"message/sip":{source:"iana"},"message/sipfrag":{source:"iana"},"message/tracking-status":{source:"iana"},"message/vnd.si.simp":{source:"iana"},"message/vnd.wfa.wsc":{source:"iana",extensions:["wsc"]},"model/3mf":{source:"iana",extensions:["3mf"]},"model/e57":{source:"iana"},"model/gltf+json":{source:"iana",compressible:!0,extensions:["gltf"]},"model/gltf-binary":{source:"iana",compressible:!0,extensions:["glb"]},"model/iges":{source:"iana",compressible:!1,extensions:["igs","iges"]},"model/mesh":{source:"iana",compressible:!1,extensions:["msh","mesh","silo"]},"model/mtl":{source:"iana",extensions:["mtl"]},"model/obj":{source:"iana",extensions:["obj"]},"model/step":{source:"iana"},"model/step+xml":{source:"iana",compressible:!0,extensions:["stpx"]},"model/step+zip":{source:"iana",compressible:!1,extensions:["stpz"]},"model/step-xml+zip":{source:"iana",compressible:!1,extensions:["stpxz"]},"model/stl":{source:"iana",extensions:["stl"]},"model/vnd.collada+xml":{source:"iana",compressible:!0,extensions:["dae"]},"model/vnd.dwf":{source:"iana",extensions:["dwf"]},"model/vnd.flatland.3dml":{source:"iana"},"model/vnd.gdl":{source:"iana",extensions:["gdl"]},"model/vnd.gs-gdl":{source:"apache"},"model/vnd.gs.gdl":{source:"iana"},"model/vnd.gtw":{source:"iana",extensions:["gtw"]},"model/vnd.moml+xml":{source:"iana",compressible:!0},"model/vnd.mts":{source:"iana",extensions:["mts"]},"model/vnd.opengex":{source:"iana",extensions:["ogex"]},"model/vnd.parasolid.transmit.binary":{source:"iana",extensions:["x_b"]},"model/vnd.parasolid.transmit.text":{source:"iana",extensions:["x_t"]},"model/vnd.pytha.pyox":{source:"iana"},"model/vnd.rosette.annotated-data-model":{source:"iana"},"model/vnd.sap.vds":{source:"iana",extensions:["vds"]},"model/vnd.usdz+zip":{source:"iana",compressible:!1,extensions:["usdz"]},"model/vnd.valve.source.compiled-map":{source:"iana",extensions:["bsp"]},"model/vnd.vtu":{source:"iana",extensions:["vtu"]},"model/vrml":{source:"iana",compressible:!1,extensions:["wrl","vrml"]},"model/x3d+binary":{source:"apache",compressible:!1,extensions:["x3db","x3dbz"]},"model/x3d+fastinfoset":{source:"iana",extensions:["x3db"]},"model/x3d+vrml":{source:"apache",compressible:!1,extensions:["x3dv","x3dvz"]},"model/x3d+xml":{source:"iana",compressible:!0,extensions:["x3d","x3dz"]},"model/x3d-vrml":{source:"iana",extensions:["x3dv"]},"multipart/alternative":{source:"iana",compressible:!1},"multipart/appledouble":{source:"iana"},"multipart/byteranges":{source:"iana"},"multipart/digest":{source:"iana"},"multipart/encrypted":{source:"iana",compressible:!1},"multipart/form-data":{source:"iana",compressible:!1},"multipart/header-set":{source:"iana"},"multipart/mixed":{source:"iana"},"multipart/multilingual":{source:"iana"},"multipart/parallel":{source:"iana"},"multipart/related":{source:"iana",compressible:!1},"multipart/report":{source:"iana"},"multipart/signed":{source:"iana",compressible:!1},"multipart/vnd.bint.med-plus":{source:"iana"},"multipart/voice-message":{source:"iana"},"multipart/x-mixed-replace":{source:"iana"},"text/1d-interleaved-parityfec":{source:"iana"},"text/cache-manifest":{source:"iana",compressible:!0,extensions:["appcache","manifest"]},"text/calendar":{source:"iana",extensions:["ics","ifb"]},"text/calender":{compressible:!0},"text/cmd":{compressible:!0},"text/coffeescript":{extensions:["coffee","litcoffee"]},"text/cql":{source:"iana"},"text/cql-expression":{source:"iana"},"text/cql-identifier":{source:"iana"},"text/css":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["css"]},"text/csv":{source:"iana",compressible:!0,extensions:["csv"]},"text/csv-schema":{source:"iana"},"text/directory":{source:"iana"},"text/dns":{source:"iana"},"text/ecmascript":{source:"iana"},"text/encaprtp":{source:"iana"},"text/enriched":{source:"iana"},"text/fhirpath":{source:"iana"},"text/flexfec":{source:"iana"},"text/fwdred":{source:"iana"},"text/gff3":{source:"iana"},"text/grammar-ref-list":{source:"iana"},"text/html":{source:"iana",compressible:!0,extensions:["html","htm","shtml"]},"text/jade":{extensions:["jade"]},"text/javascript":{source:"iana",compressible:!0},"text/jcr-cnd":{source:"iana"},"text/jsx":{compressible:!0,extensions:["jsx"]},"text/less":{compressible:!0,extensions:["less"]},"text/markdown":{source:"iana",compressible:!0,extensions:["markdown","md"]},"text/mathml":{source:"nginx",extensions:["mml"]},"text/mdx":{compressible:!0,extensions:["mdx"]},"text/mizar":{source:"iana"},"text/n3":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["n3"]},"text/parameters":{source:"iana",charset:"UTF-8"},"text/parityfec":{source:"iana"},"text/plain":{source:"iana",compressible:!0,extensions:["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{source:"iana",charset:"UTF-8"},"text/prs.fallenstein.rst":{source:"iana"},"text/prs.lines.tag":{source:"iana",extensions:["dsc"]},"text/prs.prop.logic":{source:"iana"},"text/raptorfec":{source:"iana"},"text/red":{source:"iana"},"text/rfc822-headers":{source:"iana"},"text/richtext":{source:"iana",compressible:!0,extensions:["rtx"]},"text/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"text/rtp-enc-aescm128":{source:"iana"},"text/rtploopback":{source:"iana"},"text/rtx":{source:"iana"},"text/sgml":{source:"iana",extensions:["sgml","sgm"]},"text/shaclc":{source:"iana"},"text/shex":{source:"iana",extensions:["shex"]},"text/slim":{extensions:["slim","slm"]},"text/spdx":{source:"iana",extensions:["spdx"]},"text/strings":{source:"iana"},"text/stylus":{extensions:["stylus","styl"]},"text/t140":{source:"iana"},"text/tab-separated-values":{source:"iana",compressible:!0,extensions:["tsv"]},"text/troff":{source:"iana",extensions:["t","tr","roff","man","me","ms"]},"text/turtle":{source:"iana",charset:"UTF-8",extensions:["ttl"]},"text/ulpfec":{source:"iana"},"text/uri-list":{source:"iana",compressible:!0,extensions:["uri","uris","urls"]},"text/vcard":{source:"iana",compressible:!0,extensions:["vcard"]},"text/vnd.a":{source:"iana"},"text/vnd.abc":{source:"iana"},"text/vnd.ascii-art":{source:"iana"},"text/vnd.curl":{source:"iana",extensions:["curl"]},"text/vnd.curl.dcurl":{source:"apache",extensions:["dcurl"]},"text/vnd.curl.mcurl":{source:"apache",extensions:["mcurl"]},"text/vnd.curl.scurl":{source:"apache",extensions:["scurl"]},"text/vnd.debian.copyright":{source:"iana",charset:"UTF-8"},"text/vnd.dmclientscript":{source:"iana"},"text/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"text/vnd.esmertec.theme-descriptor":{source:"iana",charset:"UTF-8"},"text/vnd.familysearch.gedcom":{source:"iana",extensions:["ged"]},"text/vnd.ficlab.flt":{source:"iana"},"text/vnd.fly":{source:"iana",extensions:["fly"]},"text/vnd.fmi.flexstor":{source:"iana",extensions:["flx"]},"text/vnd.gml":{source:"iana"},"text/vnd.graphviz":{source:"iana",extensions:["gv"]},"text/vnd.hans":{source:"iana"},"text/vnd.hgl":{source:"iana"},"text/vnd.in3d.3dml":{source:"iana",extensions:["3dml"]},"text/vnd.in3d.spot":{source:"iana",extensions:["spot"]},"text/vnd.iptc.newsml":{source:"iana"},"text/vnd.iptc.nitf":{source:"iana"},"text/vnd.latex-z":{source:"iana"},"text/vnd.motorola.reflex":{source:"iana"},"text/vnd.ms-mediapackage":{source:"iana"},"text/vnd.net2phone.commcenter.command":{source:"iana"},"text/vnd.radisys.msml-basic-layout":{source:"iana"},"text/vnd.senx.warpscript":{source:"iana"},"text/vnd.si.uricatalogue":{source:"iana"},"text/vnd.sosi":{source:"iana"},"text/vnd.sun.j2me.app-descriptor":{source:"iana",charset:"UTF-8",extensions:["jad"]},"text/vnd.trolltech.linguist":{source:"iana",charset:"UTF-8"},"text/vnd.wap.si":{source:"iana"},"text/vnd.wap.sl":{source:"iana"},"text/vnd.wap.wml":{source:"iana",extensions:["wml"]},"text/vnd.wap.wmlscript":{source:"iana",extensions:["wmls"]},"text/vtt":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["vtt"]},"text/x-asm":{source:"apache",extensions:["s","asm"]},"text/x-c":{source:"apache",extensions:["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{source:"nginx",extensions:["htc"]},"text/x-fortran":{source:"apache",extensions:["f","for","f77","f90"]},"text/x-gwt-rpc":{compressible:!0},"text/x-handlebars-template":{extensions:["hbs"]},"text/x-java-source":{source:"apache",extensions:["java"]},"text/x-jquery-tmpl":{compressible:!0},"text/x-lua":{extensions:["lua"]},"text/x-markdown":{compressible:!0,extensions:["mkd"]},"text/x-nfo":{source:"apache",extensions:["nfo"]},"text/x-opml":{source:"apache",extensions:["opml"]},"text/x-org":{compressible:!0,extensions:["org"]},"text/x-pascal":{source:"apache",extensions:["p","pas"]},"text/x-processing":{compressible:!0,extensions:["pde"]},"text/x-sass":{extensions:["sass"]},"text/x-scss":{extensions:["scss"]},"text/x-setext":{source:"apache",extensions:["etx"]},"text/x-sfv":{source:"apache",extensions:["sfv"]},"text/x-suse-ymp":{compressible:!0,extensions:["ymp"]},"text/x-uuencode":{source:"apache",extensions:["uu"]},"text/x-vcalendar":{source:"apache",extensions:["vcs"]},"text/x-vcard":{source:"apache",extensions:["vcf"]},"text/xml":{source:"iana",compressible:!0,extensions:["xml"]},"text/xml-external-parsed-entity":{source:"iana"},"text/yaml":{compressible:!0,extensions:["yaml","yml"]},"video/1d-interleaved-parityfec":{source:"iana"},"video/3gpp":{source:"iana",extensions:["3gp","3gpp"]},"video/3gpp-tt":{source:"iana"},"video/3gpp2":{source:"iana",extensions:["3g2"]},"video/av1":{source:"iana"},"video/bmpeg":{source:"iana"},"video/bt656":{source:"iana"},"video/celb":{source:"iana"},"video/dv":{source:"iana"},"video/encaprtp":{source:"iana"},"video/ffv1":{source:"iana"},"video/flexfec":{source:"iana"},"video/h261":{source:"iana",extensions:["h261"]},"video/h263":{source:"iana",extensions:["h263"]},"video/h263-1998":{source:"iana"},"video/h263-2000":{source:"iana"},"video/h264":{source:"iana",extensions:["h264"]},"video/h264-rcdo":{source:"iana"},"video/h264-svc":{source:"iana"},"video/h265":{source:"iana"},"video/iso.segment":{source:"iana",extensions:["m4s"]},"video/jpeg":{source:"iana",extensions:["jpgv"]},"video/jpeg2000":{source:"iana"},"video/jpm":{source:"apache",extensions:["jpm","jpgm"]},"video/jxsv":{source:"iana"},"video/mj2":{source:"iana",extensions:["mj2","mjp2"]},"video/mp1s":{source:"iana"},"video/mp2p":{source:"iana"},"video/mp2t":{source:"iana",extensions:["ts"]},"video/mp4":{source:"iana",compressible:!1,extensions:["mp4","mp4v","mpg4"]},"video/mp4v-es":{source:"iana"},"video/mpeg":{source:"iana",compressible:!1,extensions:["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{source:"iana"},"video/mpv":{source:"iana"},"video/nv":{source:"iana"},"video/ogg":{source:"iana",compressible:!1,extensions:["ogv"]},"video/parityfec":{source:"iana"},"video/pointer":{source:"iana"},"video/quicktime":{source:"iana",compressible:!1,extensions:["qt","mov"]},"video/raptorfec":{source:"iana"},"video/raw":{source:"iana"},"video/rtp-enc-aescm128":{source:"iana"},"video/rtploopback":{source:"iana"},"video/rtx":{source:"iana"},"video/scip":{source:"iana"},"video/smpte291":{source:"iana"},"video/smpte292m":{source:"iana"},"video/ulpfec":{source:"iana"},"video/vc1":{source:"iana"},"video/vc2":{source:"iana"},"video/vnd.cctv":{source:"iana"},"video/vnd.dece.hd":{source:"iana",extensions:["uvh","uvvh"]},"video/vnd.dece.mobile":{source:"iana",extensions:["uvm","uvvm"]},"video/vnd.dece.mp4":{source:"iana"},"video/vnd.dece.pd":{source:"iana",extensions:["uvp","uvvp"]},"video/vnd.dece.sd":{source:"iana",extensions:["uvs","uvvs"]},"video/vnd.dece.video":{source:"iana",extensions:["uvv","uvvv"]},"video/vnd.directv.mpeg":{source:"iana"},"video/vnd.directv.mpeg-tts":{source:"iana"},"video/vnd.dlna.mpeg-tts":{source:"iana"},"video/vnd.dvb.file":{source:"iana",extensions:["dvb"]},"video/vnd.fvt":{source:"iana",extensions:["fvt"]},"video/vnd.hns.video":{source:"iana"},"video/vnd.iptvforum.1dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.1dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.2dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.2dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.ttsavc":{source:"iana"},"video/vnd.iptvforum.ttsmpeg2":{source:"iana"},"video/vnd.motorola.video":{source:"iana"},"video/vnd.motorola.videop":{source:"iana"},"video/vnd.mpegurl":{source:"iana",extensions:["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{source:"iana",extensions:["pyv"]},"video/vnd.nokia.interleaved-multimedia":{source:"iana"},"video/vnd.nokia.mp4vr":{source:"iana"},"video/vnd.nokia.videovoip":{source:"iana"},"video/vnd.objectvideo":{source:"iana"},"video/vnd.radgamettools.bink":{source:"iana"},"video/vnd.radgamettools.smacker":{source:"iana"},"video/vnd.sealed.mpeg1":{source:"iana"},"video/vnd.sealed.mpeg4":{source:"iana"},"video/vnd.sealed.swf":{source:"iana"},"video/vnd.sealedmedia.softseal.mov":{source:"iana"},"video/vnd.uvvu.mp4":{source:"iana",extensions:["uvu","uvvu"]},"video/vnd.vivo":{source:"iana",extensions:["viv"]},"video/vnd.youtube.yt":{source:"iana"},"video/vp8":{source:"iana"},"video/vp9":{source:"iana"},"video/webm":{source:"apache",compressible:!1,extensions:["webm"]},"video/x-f4v":{source:"apache",extensions:["f4v"]},"video/x-fli":{source:"apache",extensions:["fli"]},"video/x-flv":{source:"apache",compressible:!1,extensions:["flv"]},"video/x-m4v":{source:"apache",extensions:["m4v"]},"video/x-matroska":{source:"apache",compressible:!1,extensions:["mkv","mk3d","mks"]},"video/x-mng":{source:"apache",extensions:["mng"]},"video/x-ms-asf":{source:"apache",extensions:["asf","asx"]},"video/x-ms-vob":{source:"apache",extensions:["vob"]},"video/x-ms-wm":{source:"apache",extensions:["wm"]},"video/x-ms-wmv":{source:"apache",compressible:!1,extensions:["wmv"]},"video/x-ms-wmx":{source:"apache",extensions:["wmx"]},"video/x-ms-wvx":{source:"apache",extensions:["wvx"]},"video/x-msvideo":{source:"apache",extensions:["avi"]},"video/x-sgi-movie":{source:"apache",extensions:["movie"]},"video/x-smv":{source:"apache",extensions:["smv"]},"x-conference/x-cooltalk":{source:"apache",extensions:["ice"]},"x-shader/x-fragment":{compressible:!0},"x-shader/x-vertex":{compressible:!0}}});var FA=O((bV,kA)=>{kA.exports=TA()});var RA=O((gV,OA)=>{"use strict";var PA=FA();OA.exports=function(){var e={};return Object.keys(PA).forEach(function(t){var a=PA[t];a.extensions&&a.extensions.length>0&&a.extensions.forEach(function(n){e[n]=t})}),e}});var jA=O((xV,NA)=>{"use strict";var BA=Pd();NA.exports=function(e,t){if(!BA(e))throw new TypeError("Expected a plain object");t=t||{},typeof t=="function"&&(t={compare:t});var a=t.deep,n=[],i=[],r=function(o){var s=n.indexOf(o);if(s!==-1)return i[s];var l={},u=Object.keys(o).sort(t.compare);n.push(o),i.push(l);for(var c=0;c{"use strict";var LA=jA();wf.exports.desc=function(e){return LA(e,function(t,a){return a.length-t.length})};wf.exports.asc=function(e){return LA(e,function(t,a){return t.length-a.length})}});var GA=O((wV,Ef)=>{"use strict";var DA=RA(),zA=MA();Ef.exports=e=>{let t=zA.desc(DA()),a=Object.keys(t).filter(n=>e.endsWith(n));return a.length===0?[]:a.map(n=>({ext:n,mime:t[n]}))};Ef.exports.mime=e=>{let t=zA.desc(DA()),a=Object.keys(t).filter(n=>t[n]===e);return a.length===0?[]:a.map(n=>({ext:n,mime:t[n]}))}});var UA=O((EV,VA)=>{"use strict";var Jj=require("fs"),Br=require("path"),{URL:Zj}=require("url"),qj=oy(),HA=uy(),WA=HE(),Xj=QE(),$j=rS(),Yj=qC(),Kj=yA(),Qj=af(),e9=CA(),t9=_A(),a9=GA(),n9=Qj(Jj),i9=e=>Br.basename(new Zj(e.requestUrl).pathname),r9=e=>{let t=e.headers["content-type"];if(!t)return null;let a=a9.mime(t);return a.length!==1?null:a[0].ext},o9=(e,t)=>{let a=e.headers["content-disposition"];if(a){let i=qj.parse(a);if(i.parameters&&i.parameters.filename)return i.parameters.filename}let n=i9(e);if(!Br.extname(n)){let i=(t9(t)||{}).ext||r9(e);i&&(n=`${n}.${i}`)}return n};VA.exports=(e,t,a)=>{typeof t=="object"&&(a=t,t=null),a=Object.assign({encoding:null,rejectUnauthorized:process.env.npm_config_strict_ssl!=="false"},a);let n=Yj.stream(e,a),i=e9(n,"response").then(r=>{let o=a.encoding===null?"buffer":a.encoding;return Promise.all([$j(n,{encoding:o}),r])}).then(r=>{let[o,s]=r;if(!t)return a.extract&&HA(o)?WA(o,a):o;let l=a.filename||Xj(o9(s,o)),u=Br.join(t,l);return a.extract&&HA(o)?WA(o,Br.dirname(u),a):Kj(Br.dirname(u)).then(()=>n9.writeFile(u,o)).then(()=>o)});return n.then=i.then.bind(i),n.catch=i.catch.bind(i),n}});var r2=O((OV,i2)=>{var KA=Mc(),{join:u9,delimiter:p9,sep:XA,posix:$A}=require("path"),YA=process.platform==="win32",QA=new RegExp(`[${$A.sep}${XA===$A.sep?"":XA}]`.replace(/(\\)/g,"\\$1")),d9=new RegExp(`^\\.${QA.source}`),e2=e=>Object.assign(new Error(`not found: ${e}`),{code:"ENOENT"}),t2=(e,{path:t=process.env.PATH,pathExt:a=process.env.PATHEXT,delimiter:n=p9})=>{let i=e.match(QA)?[""]:[...YA?[process.cwd()]:[],...(t||"").split(n)];if(YA){let r=a||[".EXE",".CMD",".BAT",".COM"].join(n),o=r.split(n).reduce((s,l)=>(s.push(l),s.push(l.toLowerCase()),s),[]);return e.includes(".")&&o[0]!==""&&o.unshift(""),{pathEnv:i,pathExt:o,pathExtExe:r}}return{pathEnv:i,pathExt:[""]}},a2=(e,t)=>{let a=/^".*"$/.test(e)?e.slice(1,-1):e;return(!a&&d9.test(t)?t.slice(0,2):"")+u9(a,t)},n2=async(e,t={})=>{let{pathEnv:a,pathExt:n,pathExtExe:i}=t2(e,t),r=[];for(let o of a){let s=a2(o,e);for(let l of n){let u=s+l;if(await KA(u,{pathExt:i,ignoreErrors:!0})){if(!t.all)return u;r.push(u)}}}if(t.all&&r.length)return r;if(t.nothrow)return null;throw e2(e)},f9=(e,t={})=>{let{pathEnv:a,pathExt:n,pathExtExe:i}=t2(e,t),r=[];for(let o of a){let s=a2(o,e);for(let l of n){let u=s+l;if(KA.sync(u,{pathExt:i,ignoreErrors:!0})){if(!t.all)return u;r.push(u)}}}if(t.all&&r.length)return r;if(t.nothrow)return null;throw e2(e)};i2.exports=n2;n2.sync=f9});var P2=O(ke=>{"use strict";var it=typeof Symbol=="function"&&Symbol.for,zf=it?Symbol.for("react.element"):60103,Gf=it?Symbol.for("react.portal"):60106,ac=it?Symbol.for("react.fragment"):60107,nc=it?Symbol.for("react.strict_mode"):60108,ic=it?Symbol.for("react.profiler"):60114,rc=it?Symbol.for("react.provider"):60109,oc=it?Symbol.for("react.context"):60110,Hf=it?Symbol.for("react.async_mode"):60111,sc=it?Symbol.for("react.concurrent_mode"):60111,lc=it?Symbol.for("react.forward_ref"):60112,cc=it?Symbol.for("react.suspense"):60113,C9=it?Symbol.for("react.suspense_list"):60120,uc=it?Symbol.for("react.memo"):60115,pc=it?Symbol.for("react.lazy"):60116,A9=it?Symbol.for("react.block"):60121,I9=it?Symbol.for("react.fundamental"):60117,_9=it?Symbol.for("react.responder"):60118,T9=it?Symbol.for("react.scope"):60119;function Rt(e){if(typeof e=="object"&&e!==null){var t=e.$$typeof;switch(t){case zf:switch(e=e.type,e){case Hf:case sc:case ac:case ic:case nc:case cc:return e;default:switch(e=e&&e.$$typeof,e){case oc:case lc:case pc:case uc:case rc:return e;default:return t}}case Gf:return t}}}function F2(e){return Rt(e)===sc}ke.AsyncMode=Hf;ke.ConcurrentMode=sc;ke.ContextConsumer=oc;ke.ContextProvider=rc;ke.Element=zf;ke.ForwardRef=lc;ke.Fragment=ac;ke.Lazy=pc;ke.Memo=uc;ke.Portal=Gf;ke.Profiler=ic;ke.StrictMode=nc;ke.Suspense=cc;ke.isAsyncMode=function(e){return F2(e)||Rt(e)===Hf};ke.isConcurrentMode=F2;ke.isContextConsumer=function(e){return Rt(e)===oc};ke.isContextProvider=function(e){return Rt(e)===rc};ke.isElement=function(e){return typeof e=="object"&&e!==null&&e.$$typeof===zf};ke.isForwardRef=function(e){return Rt(e)===lc};ke.isFragment=function(e){return Rt(e)===ac};ke.isLazy=function(e){return Rt(e)===pc};ke.isMemo=function(e){return Rt(e)===uc};ke.isPortal=function(e){return Rt(e)===Gf};ke.isProfiler=function(e){return Rt(e)===ic};ke.isStrictMode=function(e){return Rt(e)===nc};ke.isSuspense=function(e){return Rt(e)===cc};ke.isValidElementType=function(e){return typeof e=="string"||typeof e=="function"||e===ac||e===sc||e===ic||e===nc||e===cc||e===C9||typeof e=="object"&&e!==null&&(e.$$typeof===pc||e.$$typeof===uc||e.$$typeof===rc||e.$$typeof===oc||e.$$typeof===lc||e.$$typeof===I9||e.$$typeof===_9||e.$$typeof===T9||e.$$typeof===A9)};ke.typeOf=Rt});var R2=O((kU,O2)=>{"use strict";O2.exports=P2()});var z2=O((FU,D2)=>{"use strict";var Wf=R2(),k9={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},F9={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},P9={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},L2={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},Vf={};Vf[Wf.ForwardRef]=P9;Vf[Wf.Memo]=L2;function B2(e){return Wf.isMemo(e)?L2:Vf[e.$$typeof]||k9}var O9=Object.defineProperty,R9=Object.getOwnPropertyNames,N2=Object.getOwnPropertySymbols,B9=Object.getOwnPropertyDescriptor,N9=Object.getPrototypeOf,j2=Object.prototype;function M2(e,t,a){if(typeof t!="string"){if(j2){var n=N9(t);n&&n!==j2&&M2(e,n,a)}var i=R9(t);N2&&(i=i.concat(N2(t)));for(var r=B2(e),o=B2(t),s=0;sBc});module.exports=lT(fD);var En=require("obsidian");var fo=_e(require("node:process"),1),uv=_e(sv(),1);function ou({onlyFirst:e=!1}={}){let t=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(t,e?void 0:"g")}var ak=ou();function su(e){if(typeof e!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);return e.replace(ak,"")}var po=_e(require("node:process"),1),lv=require("node:os"),nk=()=>{let{env:e}=po.default;if(po.default.platform==="win32")return e.COMSPEC||"cmd.exe";try{let{shell:t}=(0,lv.userInfo)();if(t)return t}catch(t){}return po.default.platform==="darwin"?e.SHELL||"/bin/zsh":e.SHELL||"/bin/sh"},ik=nk(),cv=ik;var rk=["-ilc",'echo -n "_SHELL_ENV_DELIMITER_"; env; echo -n "_SHELL_ENV_DELIMITER_"; exit'],ok={DISABLE_AUTO_UPDATE:"true"},sk=e=>{e=e.split("_SHELL_ENV_DELIMITER_")[1];let t={};for(let a of su(e).split(` +`).filter(n=>!!n)){let[n,...i]=a.split("=");t[n]=i.join("=")}return t};async function pv(e){if(fo.default.platform==="win32")return fo.default.env;try{let{stdout:t}=await(0,uv.default)(e||cv,rk,{env:ok});return sk(t)}catch(t){if(e)throw t;return fo.default.env}}async function dv(){let{PATH:e}=await pv();return e}var Ba=require("obsidian");var Ni,Q,bv,lk,$a,fv,gv,lu,xv,mo={},yv=[],ck=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,bo=Array.isArray;function ma(e,t){for(var a in t)e[a]=t[a];return e}function wv(e){var t=e.parentNode;t&&t.removeChild(e)}function se(e,t,a){var n,i,r,o={};for(r in t)r=="key"?n=t[r]:r=="ref"?i=t[r]:o[r]=t[r];if(arguments.length>2&&(o.children=arguments.length>3?Ni.call(arguments,2):a),typeof e=="function"&&e.defaultProps!=null)for(r in e.defaultProps)o[r]===void 0&&(o[r]=e.defaultProps[r]);return Ri(e,o,n,i,null)}function Ri(e,t,a,n,i){var r={type:e,props:t,key:a,ref:n,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:i==null?++bv:i};return i==null&&Q.vnode!=null&&Q.vnode(r),r}function uu(){return{current:null}}function rt(e){return e.children}function Ct(e,t){this.props=e,this.context=t}function Bi(e,t){if(t==null)return e.__?Bi(e.__,e.__.__k.indexOf(e)+1):null;for(var a;tt&&$a.sort(lu));ho.__r=0}function Sv(e,t,a,n,i,r,o,s,l,u){var c,f,p,b,d,m,h,v=n&&n.__k||yv,x=v.length;for(a.__k=[],c=0;c0?Ri(b.type,b.props,b.key,b.ref?b.ref:null,b.__v):b)!=null){if(b.__=a,b.__b=a.__b+1,(p=v[c])===null||p&&b.key==p.key&&b.type===p.type)v[c]=void 0;else for(f=0;f=0;t--)if((a=e.__k[t])&&(n=Iv(a)))return n}return null}function uk(e,t,a,n,i){var r;for(r in a)r==="children"||r==="key"||r in t||vo(e,r,null,a[r],n);for(r in t)i&&typeof t[r]!="function"||r==="children"||r==="key"||r==="value"||r==="checked"||a[r]===t[r]||vo(e,r,t[r],a[r],n)}function mv(e,t,a){t[0]==="-"?e.setProperty(t,a==null?"":a):e[t]=a==null?"":typeof a!="number"||ck.test(t)?a:a+"px"}function vo(e,t,a,n,i){var r;e:if(t==="style")if(typeof a=="string")e.style.cssText=a;else{if(typeof n=="string"&&(e.style.cssText=n=""),n)for(t in n)a&&t in a||mv(e.style,t,"");if(a)for(t in a)n&&a[t]===n[t]||mv(e.style,t,a[t])}else if(t[0]==="o"&&t[1]==="n")r=t!==(t=t.replace(/Capture$/,"")),t=t.toLowerCase()in e?t.toLowerCase().slice(2):t.slice(2),e.l||(e.l={}),e.l[t+r]=a,a?n||e.addEventListener(t,r?vv:hv,r):e.removeEventListener(t,r?vv:hv,r);else if(t!=="dangerouslySetInnerHTML"){if(i)t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(t!=="width"&&t!=="height"&&t!=="href"&&t!=="list"&&t!=="form"&&t!=="tabIndex"&&t!=="download"&&t!=="rowSpan"&&t!=="colSpan"&&t in e)try{e[t]=a==null?"":a;break e}catch(o){}typeof a=="function"||(a==null||a===!1&&t[4]!=="-"?e.removeAttribute(t):e.setAttribute(t,a))}}function hv(e){return this.l[e.type+!1](Q.event?Q.event(e):e)}function vv(e){return this.l[e.type+!0](Q.event?Q.event(e):e)}function pu(e,t,a,n,i,r,o,s,l){var u,c,f,p,b,d,m,h,v,x,E,g,w,C,y,S=t.type;if(t.constructor!==void 0)return null;a.__h!=null&&(l=a.__h,s=t.__e=a.__e,t.__h=null,r=[s]),(u=Q.__b)&&u(t);try{e:if(typeof S=="function"){if(h=t.props,v=(u=S.contextType)&&n[u.__c],x=u?v?v.props.value:u.__:n,a.__c?m=(c=t.__c=a.__c).__=c.__E:("prototype"in S&&S.prototype.render?t.__c=c=new S(h,x):(t.__c=c=new Ct(h,x),c.constructor=S,c.render=dk),v&&v.sub(c),c.props=h,c.state||(c.state={}),c.context=x,c.__n=n,f=c.__d=!0,c.__h=[],c._sb=[]),c.__s==null&&(c.__s=c.state),S.getDerivedStateFromProps!=null&&(c.__s==c.state&&(c.__s=ma({},c.__s)),ma(c.__s,S.getDerivedStateFromProps(h,c.__s))),p=c.props,b=c.state,c.__v=t,f)S.getDerivedStateFromProps==null&&c.componentWillMount!=null&&c.componentWillMount(),c.componentDidMount!=null&&c.__h.push(c.componentDidMount);else{if(S.getDerivedStateFromProps==null&&h!==p&&c.componentWillReceiveProps!=null&&c.componentWillReceiveProps(h,x),!c.__e&&c.shouldComponentUpdate!=null&&c.shouldComponentUpdate(h,c.__s,x)===!1||t.__v===a.__v){for(t.__v!==a.__v&&(c.props=h,c.state=c.__s,c.__d=!1),c.__e=!1,t.__e=a.__e,t.__k=a.__k,t.__k.forEach(function(A){A&&(A.__=t)}),E=0;E2&&(s.children=arguments.length>3?Ni.call(arguments,2):a),Ri(e.type,s,n||e.key,i||e.ref,null)}function _a(e,t){var a={__c:t="__cC"+xv++,__:e,Consumer:function(n,i){return n.children(i)},Provider:function(n){var i,r;return this.getChildContext||(i=[],(r={})[t]=this,this.getChildContext=function(){return r},this.shouldComponentUpdate=function(o){this.props.value!==o.value&&i.some(function(s){s.__e=!0,cu(s)})},this.sub=function(o){i.push(o);var s=o.componentWillUnmount;o.componentWillUnmount=function(){i.splice(i.indexOf(o),1),s&&s.call(o)}}),n.children}};return a.Provider.__=a.Consumer.contextType=a}Ni=yv.slice,Q={__e:function(e,t,a,n){for(var i,r,o;t=t.__;)if((i=t.__c)&&!i.__)try{if((r=i.constructor)&&r.getDerivedStateFromError!=null&&(i.setState(r.getDerivedStateFromError(e)),o=i.__d),i.componentDidCatch!=null&&(i.componentDidCatch(e,n||{}),o=i.__d),o)return i.__E=i}catch(s){e=s}throw e}},bv=0,lk=function(e){return e!=null&&e.constructor===void 0},Ct.prototype.setState=function(e,t){var a;a=this.__s!=null&&this.__s!==this.state?this.__s:this.__s=ma({},this.state),typeof e=="function"&&(e=e(ma({},a),this.props)),e&&ma(a,e),e!=null&&this.__v&&(t&&this._sb.push(t),cu(this))},Ct.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),cu(this))},Ct.prototype.render=rt,$a=[],gv=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,lu=function(e,t){return e.__v.__b-t.__v.__b},ho.__r=0,xv=0;var Ta,je,fu,Pv,Rn=0,Mv=[],go=[],Ov=Q.__b,Rv=Q.__r,Bv=Q.diffed,Nv=Q.__c,jv=Q.unmount;function Bn(e,t){Q.__h&&Q.__h(je,e,Rn||t),Rn=0;var a=je.__H||(je.__H={__:[],__h:[]});return e>=a.__.length&&a.__.push({__V:go}),a.__[e]}function Re(e){return Rn=1,hu(Hv,e)}function hu(e,t,a){var n=Bn(Ta++,2);if(n.t=e,!n.__c&&(n.__=[a?a(t):Hv(void 0,t),function(s){var l=n.__N?n.__N[0]:n.__[0],u=n.t(l,s);l!==u&&(n.__N=[u,n.__[1]],n.__c.setState({}))}],n.__c=je,!je.u)){var i=function(s,l,u){if(!n.__c.__H)return!0;var c=n.__c.__H.__.filter(function(p){return p.__c});if(c.every(function(p){return!p.__N}))return!r||r.call(this,s,l,u);var f=!1;return c.forEach(function(p){if(p.__N){var b=p.__[0];p.__=p.__N,p.__N=void 0,b!==p.__[0]&&(f=!0)}}),!(!f&&n.__c.props===s)&&(!r||r.call(this,s,l,u))};je.u=!0;var r=je.shouldComponentUpdate,o=je.componentWillUpdate;je.componentWillUpdate=function(s,l,u){if(this.__e){var c=r;r=void 0,i(s,l,u),r=c}o&&o.call(this,s,l,u)},je.shouldComponentUpdate=i}return n.__N||n.__}function ha(e,t){var a=Bn(Ta++,3);!Q.__s&&vu(a.__H,t)&&(a.__=e,a.i=t,je.__H.__h.push(a))}function ka(e,t){var a=Bn(Ta++,4);!Q.__s&&vu(a.__H,t)&&(a.__=e,a.i=t,je.__h.push(a))}function ot(e){return Rn=5,At(function(){return{current:e}},[])}function Dv(e,t,a){Rn=6,ka(function(){return typeof e=="function"?(e(t()),function(){return e(null)}):e?(e.current=t(),function(){return e.current=null}):void 0},a==null?a:a.concat(e))}function At(e,t){var a=Bn(Ta++,7);return vu(a.__H,t)?(a.__V=e(),a.i=t,a.__h=e,a.__V):a.__}function Fe(e,t){return Rn=8,At(function(){return e},t)}function Yt(e){var t=je.context[e.__c],a=Bn(Ta++,9);return a.c=e,t?(a.__==null&&(a.__=!0,t.sub(je)),t.props.value):e.__}function zv(e,t){Q.useDebugValue&&Q.useDebugValue(t?t(e):e)}function Gv(){var e=Bn(Ta++,11);if(!e.__){for(var t=je.__v;t!==null&&!t.__m&&t.__!==null;)t=t.__;var a=t.__m||(t.__m=[0,0]);e.__="P"+a[0]+"-"+a[1]++}return e.__}function fk(){for(var e;e=Mv.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(xo),e.__H.__h.forEach(mu),e.__H.__h=[]}catch(t){e.__H.__h=[],Q.__e(t,e.__v)}}Q.__b=function(e){je=null,Ov&&Ov(e)},Q.__r=function(e){Rv&&Rv(e),Ta=0;var t=(je=e.__c).__H;t&&(fu===je?(t.__h=[],je.__h=[],t.__.forEach(function(a){a.__N&&(a.__=a.__N),a.__V=go,a.__N=a.i=void 0})):(t.__h.forEach(xo),t.__h.forEach(mu),t.__h=[],Ta=0)),fu=je},Q.diffed=function(e){Bv&&Bv(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(Mv.push(t)!==1&&Pv===Q.requestAnimationFrame||((Pv=Q.requestAnimationFrame)||mk)(fk)),t.__H.__.forEach(function(a){a.i&&(a.__H=a.i),a.__V!==go&&(a.__=a.__V),a.i=void 0,a.__V=go})),fu=je=null},Q.__c=function(e,t){t.some(function(a){try{a.__h.forEach(xo),a.__h=a.__h.filter(function(n){return!n.__||mu(n)})}catch(n){t.some(function(i){i.__h&&(i.__h=[])}),t=[],Q.__e(n,a.__v)}}),Nv&&Nv(e,t)},Q.unmount=function(e){jv&&jv(e);var t,a=e.__c;a&&a.__H&&(a.__H.__.forEach(function(n){try{xo(n)}catch(i){t=i}}),a.__H=void 0,t&&Q.__e(t,a.__v))};var Lv=typeof requestAnimationFrame=="function";function mk(e){var t,a=function(){clearTimeout(n),Lv&&cancelAnimationFrame(t),setTimeout(e)},n=setTimeout(a,100);Lv&&(t=requestAnimationFrame(a))}function xo(e){var t=je,a=e.__c;typeof a=="function"&&(e.__c=void 0,a()),je=t}function mu(e){var t=je;e.__c=e.__(),je=t}function vu(e,t){return!e||e.length!==t.length||t.some(function(a,n){return a!==e[n]})}function Hv(e,t){return typeof t=="function"?t(e):t}function Yv(e,t){for(var a in t)e[a]=t[a];return e}function gu(e,t){for(var a in e)if(a!=="__source"&&!(a in t))return!0;for(var n in t)if(n!=="__source"&&e[n]!==t[n])return!0;return!1}function bu(e,t){return e===t&&(e!==0||1/e==1/t)||e!=e&&t!=t}function xu(e){this.props=e}function hk(e,t){function a(i){var r=this.props.ref,o=r==i.ref;return!o&&r&&(r.call?r(null):r.current=null),t?!t(this.props,i)||!o:gu(this.props,i)}function n(i){return this.shouldComponentUpdate=a,se(e,i)}return n.displayName="Memo("+(e.displayName||e.name)+")",n.prototype.isReactComponent=!0,n.__f=!0,n}(xu.prototype=new Ct).isPureReactComponent=!0,xu.prototype.shouldComponentUpdate=function(e,t){return gu(this.props,e)||gu(this.state,t)};var Wv=Q.__b;Q.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),Wv&&Wv(e)};var vk=typeof Symbol!="undefined"&&Symbol.for&&Symbol.for("react.forward_ref")||3911;function Nn(e){function t(a){var n=Yv({},a);return delete n.ref,e(n,a.ref||null)}return t.$$typeof=vk,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName="ForwardRef("+(e.displayName||e.name)+")",t}var Vv=function(e,t){return e==null?null:$t($t(e).map(t))},bk={map:Vv,forEach:Vv,count:function(e){return e?$t(e).length:0},only:function(e){var t=$t(e);if(t.length!==1)throw"Children.only";return t[0]},toArray:$t},gk=Q.__e;Q.__e=function(e,t,a,n){if(e.then){for(var i,r=t;r=r.__;)if((i=r.__c)&&i.__c)return t.__e==null&&(t.__e=a.__e,t.__k=a.__k),i.__c(e,t)}gk(e,t,a,n)};var Uv=Q.unmount;function Kv(e,t,a){return e&&(e.__c&&e.__c.__H&&(e.__c.__H.__.forEach(function(n){typeof n.__c=="function"&&n.__c()}),e.__c.__H=null),(e=Yv({},e)).__c!=null&&(e.__c.__P===a&&(e.__c.__P=t),e.__c=null),e.__k=e.__k&&e.__k.map(function(n){return Kv(n,t,a)})),e}function Qv(e,t,a){return e&&(e.__v=null,e.__k=e.__k&&e.__k.map(function(n){return Qv(n,t,a)}),e.__c&&e.__c.__P===t&&(e.__e&&a.insertBefore(e.__e,e.__d),e.__c.__e=!0,e.__c.__P=a)),e}function yo(){this.__u=0,this.t=null,this.__b=null}function e0(e){var t=e.__.__c;return t&&t.__a&&t.__a(e)}function xk(e){var t,a,n;function i(r){if(t||(t=e()).then(function(o){a=o.default||o},function(o){n=o}),n)throw n;if(!a)throw t;return se(a,r)}return i.displayName="Lazy",i.__f=!0,i}function ji(){this.u=null,this.o=null}Q.unmount=function(e){var t=e.__c;t&&t.__R&&t.__R(),t&&e.__h===!0&&(e.type=null),Uv&&Uv(e)},(yo.prototype=new Ct).__c=function(e,t){var a=t.__c,n=this;n.t==null&&(n.t=[]),n.t.push(a);var i=e0(n.__v),r=!1,o=function(){r||(r=!0,a.__R=null,i?i(s):s())};a.__R=o;var s=function(){if(!--n.__u){if(n.state.__a){var u=n.state.__a;n.__v.__k[0]=Qv(u,u.__c.__P,u.__c.__O)}var c;for(n.setState({__a:n.__b=null});c=n.t.pop();)c.forceUpdate()}},l=t.__h===!0;n.__u++||l||n.setState({__a:n.__b=n.__v.__k[0]}),e.then(o,o)},yo.prototype.componentWillUnmount=function(){this.t=[]},yo.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var a=document.createElement("div"),n=this.__v.__k[0].__c;this.__v.__k[0]=Kv(this.__b,a,n.__O=n.__P)}this.__b=null}var i=t.__a&&se(rt,null,e.fallback);return i&&(i.__h=null),[se(rt,null,t.__a?null:e.children),i]};var Jv=function(e,t,a){if(++a[1]===a[0]&&e.o.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!=="t"||!e.o.size))for(a=e.u;a;){for(;a.length>3;)a.pop()();if(a[1]>>1,1),t.i.removeChild(n)}}),On(se(yk,{context:t.context},e.__v),t.l)):t.l&&t.componentWillUnmount()}function yu(e,t){var a=se(wk,{__v:e,i:t});return a.containerInfo=t,a}(ji.prototype=new Ct).__a=function(e){var t=this,a=e0(t.__v),n=t.o.get(e);return n[0]++,function(i){var r=function(){t.props.revealOrder?(n.push(i),Jv(t,e,n)):i()};a?a(r):r()}},ji.prototype.render=function(e){this.u=null,this.o=new Map;var t=$t(e.children);e.revealOrder&&e.revealOrder[0]==="b"&&t.reverse();for(var a=t.length;a--;)this.o.set(t[a],this.u=[1,0,this.u]);return e.children},ji.prototype.componentDidUpdate=ji.prototype.componentDidMount=function(){var e=this;this.o.forEach(function(t,a){Jv(e,a,t)})};var t0=typeof Symbol!="undefined"&&Symbol.for&&Symbol.for("react.element")||60103,Ek=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,Sk=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,Ck=/[A-Z0-9]/g,Ak=typeof document!="undefined",Ik=function(e){return(typeof Symbol!="undefined"&&typeof Symbol()=="symbol"?/fil|che|rad/:/fil|che|ra/).test(e)};function _k(e,t,a){return t.__k==null&&(t.textContent=""),On(e,t),typeof a=="function"&&a(),e?e.__c:null}function Tk(e,t,a){return du(e,t),typeof a=="function"&&a(),e?e.__c:null}Ct.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(e){Object.defineProperty(Ct.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var Zv=Q.event;function kk(){}function Fk(){return this.cancelBubble}function Pk(){return this.defaultPrevented}Q.event=function(e){return Zv&&(e=Zv(e)),e.persist=kk,e.isPropagationStopped=Fk,e.isDefaultPrevented=Pk,e.nativeEvent=e};var wu,Ok={enumerable:!1,configurable:!0,get:function(){return this.class}},qv=Q.vnode;Q.vnode=function(e){typeof e.type=="string"&&function(t){var a=t.props,n=t.type,i={};for(var r in a){var o=a[r];if(!(r==="value"&&"defaultValue"in a&&o==null||Ak&&r==="children"&&n==="noscript"||r==="class"||r==="className")){var s=r.toLowerCase();r==="defaultValue"&&"value"in a&&a.value==null?r="value":r==="download"&&o===!0?o="":s==="ondoubleclick"?r="ondblclick":s!=="onchange"||n!=="input"&&n!=="textarea"||Ik(a.type)?s==="onfocus"?r="onfocusin":s==="onblur"?r="onfocusout":Sk.test(r)?r=s:n.indexOf("-")===-1&&Ek.test(r)?r=r.replace(Ck,"-$&").toLowerCase():o===null&&(o=void 0):s=r="oninput",s==="oninput"&&i[r=s]&&(r="oninputCapture"),i[r]=o}}n=="select"&&i.multiple&&Array.isArray(i.value)&&(i.value=$t(a.children).forEach(function(l){l.props.selected=i.value.indexOf(l.props.value)!=-1})),n=="select"&&i.defaultValue!=null&&(i.value=$t(a.children).forEach(function(l){l.props.selected=i.multiple?i.defaultValue.indexOf(l.props.value)!=-1:i.defaultValue==l.props.value})),a.class&&!a.className?(i.class=a.class,Object.defineProperty(i,"className",Ok)):(a.className&&!a.class||a.class&&a.className)&&(i.class=i.className=a.className),t.props=i}(e),e.$$typeof=t0,qv&&qv(e)};var Xv=Q.__r;Q.__r=function(e){Xv&&Xv(e),wu=e.__c};var $v=Q.diffed;Q.diffed=function(e){$v&&$v(e);var t=e.props,a=e.__e;a!=null&&e.type==="textarea"&&"value"in t&&t.value!==a.value&&(a.value=t.value==null?"":t.value),wu=null};var Rk={ReactCurrentDispatcher:{current:{readContext:function(e){return wu.__n[e.__c].props.value}}}};function Bk(e){return se.bind(null,e)}function a0(e){return!!e&&e.$$typeof===t0}function Nk(e){return a0(e)?Fv.apply(null,arguments):e}function jk(e){return!!e.__k&&(On(null,e),!0)}function Lk(e){return e&&(e.base||e.nodeType===1&&e)||null}var Mk=function(e,t){return e(t)},Dk=function(e,t){return e(t)},zk=rt;function n0(e){e()}function Gk(e){return e}function Hk(){return[!1,n0]}var wo=ka;function Wk(e,t){var a=t(),n=Re({h:{__:a,v:t}}),i=n[0].h,r=n[1];return ka(function(){i.__=a,i.v=t,bu(i.__,t())||r({h:i})},[e,a,t]),ha(function(){return bu(i.__,i.v())||r({h:i}),e(function(){bu(i.__,i.v())||r({h:i})})},[e]),a}var I={useState:Re,useId:Gv,useReducer:hu,useEffect:ha,useLayoutEffect:ka,useInsertionEffect:wo,useTransition:Hk,useDeferredValue:Gk,useSyncExternalStore:Wk,startTransition:n0,useRef:ot,useImperativeHandle:Dv,useMemo:At,useCallback:Fe,useContext:Yt,useDebugValue:zv,version:"17.0.2",Children:bk,render:_k,hydrate:Tk,unmountComponentAtNode:jk,createPortal:yu,createElement:se,createContext:_a,createFactory:Bk,cloneElement:Nk,createRef:uu,Fragment:rt,isValidElement:a0,findDOMNode:Lk,Component:Ct,PureComponent:xu,memo:hk,forwardRef:Nn,flushSync:Dk,unstable_batchedUpdates:Mk,StrictMode:zk,Suspense:yo,SuspenseList:ji,lazy:xk,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:Rk};function W(){return W=Object.assign?Object.assign.bind():function(e){for(var t=1;t3&&arguments[3]!==void 0?arguments[3]:0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:1/0,r;if(e==="Object"){let o=Object.getOwnPropertyNames(t);a&&o.sort(a===!0?void 0:a),o=o.slice(n,i+1),r={entries:o.map(s=>({key:s,value:t[s]}))}}else if(e==="Array")r={entries:t.slice(n,i+1).map((o,s)=>({key:s+n,value:o}))};else{let o=0,s=[],l=!0,u=Uk(t);for(let c of t){if(o>i){l=!1;break}n<=o&&(u&&Array.isArray(c)?typeof c[0]=="string"||typeof c[0]=="number"?s.push({key:c[0],value:c[1]}):s.push({key:`[entry ${o}]`,value:{"[key]":c[0],"[value]":c[1]}}):s.push({key:o,value:c})),o++}r={hasMore:!l,entries:s}}return r}function Su(e,t,a){let n=[];for(;t-e>a*a;)a=a*a;for(let i=e;i<=t;i+=a)n.push({from:i,to:Math.min(t,i+a-1)});return n}function Cu(e,t,a,n){let i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0,r=arguments.length>5&&arguments[5]!==void 0?arguments[5]:1/0,o=Jk.bind(null,e,t,a);if(!n)return o().entries;let s=r<1/0,l=Math.min(r-i,Vk(e,t));if(e!=="Iterable"){if(l<=n||n<7)return o(i,r).entries}else if(l<=n&&!s)return o(i,r).entries;let u;if(e==="Iterable"){let{hasMore:c,entries:f}=o(i,i+n-1);u=c?[...f,...Su(i+n,i+2*n-1,n)]:f}else u=s?Su(i,r,n):[...o(0,n-5).entries,...Su(n-4,l-5,n),...o(l-4,l-1).entries];return u}function Au(e){let{styling:t,from:a,to:n,renderChildNodes:i,nodeType:r}=e,[o,s]=Re(!1),l=Fe(()=>{s(!o)},[o]);return o?I.createElement("div",t("itemRange",o),i(e,a,n)):I.createElement("div",W({},t("itemRange",o),{onClick:l}),I.createElement(Mi,{nodeType:r,styling:t,expanded:!1,onClick:l,arrowStyle:"double"}),`${a} ... ${n}`)}function Zk(e){return e.to!==void 0}function i0(e,t,a){let{nodeType:n,data:i,collectionLimit:r,circularCache:o,keyPath:s,postprocessValue:l,sortObjectKeys:u}=e,c=[];return Cu(n,i,u,r,t,a).forEach(f=>{if(Zk(f))c.push(I.createElement(Au,W({},e,{key:`ItemRange--${f.from}-${f.to}`,from:f.from,to:f.to,renderChildNodes:i0})));else{let{key:p,value:b}=f,d=o.indexOf(b)!==-1;c.push(I.createElement(Di,W({},e,{postprocessValue:l,collectionLimit:r,key:`Node--${p}`,keyPath:[p,...s],value:l(b),circularCache:[...o,b],isCircular:d,hideRoot:!1})))}}),c}function Ya(e){let{circularCache:t=[],collectionLimit:a,createItemString:n,data:i,expandable:r,getItemString:o,hideRoot:s,isCircular:l,keyPath:u,labelRenderer:c,level:f=0,nodeType:p,nodeTypeIndicator:b,shouldExpandNodeInitially:d,styling:m}=e,[h,v]=Re(l?!1:d(u,i,f)),x=Fe(()=>{r&&v(!h)},[r,h]),E=h||s&&f===0?i0({...e,circularCache:t,level:f+1}):null,g=I.createElement("span",m("nestedNodeItemType",h),b),w=o(p,i,g,n(i,a),u),C=[u,p,h,r];return s?I.createElement("li",m("rootNode",...C),I.createElement("ul",m("rootNodeChildren",...C),E)):I.createElement("li",m("nestedNode",...C),r&&I.createElement(Mi,{styling:m,nodeType:p,expanded:h,onClick:x}),I.createElement("label",W({},m(["label","nestedNodeLabel"],...C),{onClick:x}),c(...C)),I.createElement("span",W({},m("nestedNodeItemString",...C),{onClick:x}),w),I.createElement("ul",m("nestedNodeChildren",...C),E))}function qk(e){let t=Object.getOwnPropertyNames(e).length;return`${t} ${t!==1?"keys":"key"}`}function Iu(e){let{data:t,...a}=e;return I.createElement(Ya,W({},a,{data:t,nodeType:"Object",nodeTypeIndicator:a.nodeType==="Error"?"Error()":"{}",createItemString:qk,expandable:Object.getOwnPropertyNames(t).length>0}))}function Xk(e){return`${e.length} ${e.length!==1?"items":"item"}`}function _u(e){let{data:t,...a}=e;return I.createElement(Ya,W({},a,{data:t,nodeType:"Array",nodeTypeIndicator:"[]",createItemString:Xk,expandable:t.length>0}))}function $k(e,t){let a=0,n=!1;if(Number.isSafeInteger(e.size))a=e.size;else for(let i of e){if(t&&a+1>t){n=!0;break}a+=1}return`${n?">":""}${a} ${a!==1?"entries":"entry"}`}function Tu(e){return I.createElement(Ya,W({},e,{nodeType:"Iterable",nodeTypeIndicator:"()",createItemString:$k,expandable:!0}))}function Ut(e){let{nodeType:t,styling:a,labelRenderer:n,keyPath:i,valueRenderer:r,value:o,valueGetter:s=l=>l}=e;return I.createElement("li",a("value",t,i),I.createElement("label",a(["label","valueLabel"],t,i),n(i,t,!1,!1)),I.createElement("span",a("valueText",t,i),r(s(o),o,...i)))}function Di(e){let{getItemString:t,keyPath:a,labelRenderer:n,styling:i,value:r,valueRenderer:o,isCustomNode:s,...l}=e,u=s(r)?"Custom":Eu(r),c={getItemString:t,key:a[0],keyPath:a,labelRenderer:n,nodeType:u,styling:i,value:r,valueRenderer:o},f={...l,...c,data:r,isCustomNode:s};switch(u){case"Object":case"Error":case"WeakMap":case"WeakSet":return I.createElement(Iu,f);case"Array":return I.createElement(_u,f);case"Iterable":case"Map":case"Set":return I.createElement(Tu,f);case"String":return I.createElement(Ut,W({},c,{valueGetter:p=>`"${p}"`}));case"Number":return I.createElement(Ut,c);case"Boolean":return I.createElement(Ut,W({},c,{valueGetter:p=>p?"true":"false"}));case"Date":return I.createElement(Ut,W({},c,{valueGetter:p=>p.toISOString()}));case"Null":return I.createElement(Ut,W({},c,{valueGetter:()=>"null"}));case"Undefined":return I.createElement(Ut,W({},c,{valueGetter:()=>"undefined"}));case"Function":case"Symbol":return I.createElement(Ut,W({},c,{valueGetter:p=>p.toString()}));case"Custom":return I.createElement(Ut,c);default:return I.createElement(Ut,W({},c,{valueGetter:()=>`<${u}>`}))}}function ft(e){"@babel/helpers - typeof";return ft=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ft(e)}function ku(e,t){if(ft(e)!=="object"||e===null)return e;var a=e[Symbol.toPrimitive];if(a!==void 0){var n=a.call(e,t||"default");if(ft(n)!=="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function zi(e){var t=ku(e,"string");return ft(t)==="symbol"?t:String(t)}function jt(e,t,a){return t=zi(t),t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function Fu(e){if(Array.isArray(e))return e}function Pu(e,t){var a=e==null?null:typeof Symbol!="undefined"&&e[Symbol.iterator]||e["@@iterator"];if(a!=null){var n,i,r,o,s=[],l=!0,u=!1;try{if(r=(a=a.call(e)).next,t===0){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=r.call(a)).done)&&(s.push(n.value),s.length!==t);l=!0);}catch(c){u=!0,i=c}finally{try{if(!l&&a.return!=null&&(o=a.return(),Object(o)!==o))return}finally{if(u)throw i}}return s}}function jn(e,t){(t==null||t>e.length)&&(t=e.length);for(var a=0,n=new Array(t);a1?o-1:0),l=1;l1?o-1:0),l=1;l1?o-1:0),l=1;l1?o-1:0),l=1;l1?o-1:0),l=1;l2?n-2:0),r=2;r1&&arguments[1]!==void 0?arguments[1]:{},a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},n=t.defaultBase16,i=n===void 0?vg:n,r=t.base16Themes,o=r===void 0?null:r,s=iP(a,o);s&&(a=It(It({},s),a));for(var l=hg.reduce(function(m,h){return m[h]=a[h]||i[h],m},{}),u=Object.keys(a).reduce(function(m,h){return hg.indexOf(h)===-1&&(m[h]=a[h]),m},{}),c=e(l),f=aP(u,c),p=arguments.length,b=new Array(p>3?p-3:0),d=3;d({BACKGROUND_COLOR:e.base00,TEXT_COLOR:e.base07,STRING_COLOR:e.base0B,DATE_COLOR:e.base0B,NUMBER_COLOR:e.base09,BOOLEAN_COLOR:e.base09,NULL_COLOR:e.base08,UNDEFINED_COLOR:e.base08,FUNCTION_COLOR:e.base08,SYMBOL_COLOR:e.base08,LABEL_COLOR:e.base0D,ARROW_COLOR:e.base0D,ITEM_STRING_COLOR:e.base0B,ITEM_STRING_EXPANDED_COLOR:e.base03}),oP=e=>({String:e.STRING_COLOR,Date:e.DATE_COLOR,Number:e.NUMBER_COLOR,Boolean:e.BOOLEAN_COLOR,Null:e.NULL_COLOR,Undefined:e.UNDEFINED_COLOR,Function:e.FUNCTION_COLOR,Symbol:e.SYMBOL_COLOR}),sP=e=>{let t=rP(e);return{tree:{border:0,padding:0,marginTop:"0.5em",marginBottom:"0.5em",marginLeft:"0.125em",marginRight:0,listStyle:"none",MozUserSelect:"none",WebkitUserSelect:"none",backgroundColor:t.BACKGROUND_COLOR},value:(a,n,i)=>{let{style:r}=a;return{style:{...r,paddingTop:"0.25em",paddingRight:0,marginLeft:"0.875em",WebkitUserSelect:"text",MozUserSelect:"text",wordWrap:"break-word",paddingLeft:i.length>1?"2.125em":"1.25em",textIndent:"-0.5em",wordBreak:"break-all"}}},label:{display:"inline-block",color:t.LABEL_COLOR},valueLabel:{margin:"0 0.5em 0 0"},valueText:(a,n)=>{let{style:i}=a;return{style:{...i,color:oP(t)[n]}}},itemRange:(a,n)=>({style:{paddingTop:n?0:"0.25em",cursor:"pointer",color:t.LABEL_COLOR}}),arrow:(a,n,i)=>{let{style:r}=a;return{style:{...r,marginLeft:0,transition:"150ms",WebkitTransition:"150ms",MozTransition:"150ms",WebkitTransform:i?"rotateZ(90deg)":"rotateZ(0deg)",MozTransform:i?"rotateZ(90deg)":"rotateZ(0deg)",transform:i?"rotateZ(90deg)":"rotateZ(0deg)",transformOrigin:"45% 50%",WebkitTransformOrigin:"45% 50%",MozTransformOrigin:"45% 50%",position:"relative",lineHeight:"1.1em",fontSize:"0.75em"}}},arrowContainer:(a,n)=>{let{style:i}=a;return{style:{...i,display:"inline-block",paddingRight:"0.5em",paddingLeft:n==="double"?"1em":0,cursor:"pointer"}}},arrowSign:{color:t.ARROW_COLOR},arrowSignInner:{position:"absolute",top:0,left:"-0.4em"},nestedNode:(a,n,i,r,o)=>{let{style:s}=a;return{style:{...s,position:"relative",paddingTop:"0.25em",marginLeft:n.length>1?"0.875em":0,paddingLeft:o?0:"1.125em"}}},rootNode:{padding:0,margin:0},nestedNodeLabel:(a,n,i,r,o)=>{let{style:s}=a;return{style:{...s,margin:0,padding:0,WebkitUserSelect:o?"inherit":"text",MozUserSelect:o?"inherit":"text",cursor:o?"pointer":"default"}}},nestedNodeItemString:(a,n,i,r)=>{let{style:o}=a;return{style:{...o,paddingLeft:"0.5em",cursor:"default",color:r?t.ITEM_STRING_EXPANDED_COLOR:t.ITEM_STRING_COLOR}}},nestedNodeItemType:{marginLeft:"0.3em",marginRight:"0.3em"},nestedNodeChildren:(a,n,i)=>{let{style:r}=a;return{style:{...r,padding:0,margin:0,listStyle:"none",display:i?"block":"none"}}},rootNodeChildren:{padding:0,margin:0,listStyle:"none"}}},lP=bg(sP,{defaultBase16:yg}),wg=lP;var Eg=e=>e,cP=(e,t,a)=>a===0,uP=(e,t,a,n)=>I.createElement("span",null,a," ",n),pP=e=>{let[t]=e;return I.createElement("span",null,t,":")},dP=()=>!1;function Sg(e){let{data:t,theme:a,invertTheme:n,keyPath:i=["root"],labelRenderer:r=pP,valueRenderer:o=Eg,shouldExpandNodeInitially:s=cP,hideRoot:l=!1,getItemString:u=uP,postprocessValue:c=Eg,isCustomNode:f=dP,collectionLimit:p=50,sortObjectKeys:b=!1}=e,d=At(()=>wg(n?xg(a):a),[a,n]);return I.createElement("ul",d("tree"),I.createElement(Di,{keyPath:l?[]:i,value:c(t),isCustomNode:f,styling:d,labelRenderer:r,valueRenderer:o,shouldExpandNodeInitially:s,hideRoot:l,getItemString:u,postprocessValue:c,collectionLimit:p,sortObjectKeys:b}))}var Ra=require("fs"),Be=require("obsidian"),Jt=_e(require("path"));var px=require("node:buffer"),dx=_e(require("node:path"),1),xs=_e(require("node:child_process"),1),Ki=_e(require("node:process"),1),fx=_e(qc(),1);function Ju(e){let t=typeof e=="string"?` +`:` +`.charCodeAt(),a=typeof e=="string"?"\r":"\r".charCodeAt();return e[e.length-1]===t&&(e=e.slice(0,-1)),e[e.length-1]===a&&(e=e.slice(0,-1)),e}var Xi=_e(require("node:process"),1),Gn=_e(require("node:path"),1),Cg=_e(require("node:url"),1);function ds(e={}){let{env:t=process.env,platform:a=process.platform}=e;return a!=="win32"?"PATH":Object.keys(t).reverse().find(n=>n.toUpperCase()==="PATH")||"Path"}function fP(e={}){let{cwd:t=Xi.default.cwd(),path:a=Xi.default.env[ds()],execPath:n=Xi.default.execPath}=e,i,r=t instanceof URL?Cg.default.fileURLToPath(t):t,o=Gn.default.resolve(r),s=[];for(;i!==o;)s.push(Gn.default.join(o,"node_modules/.bin")),i=o,o=Gn.default.resolve(o,"..");return s.push(Gn.default.resolve(r,n,"..")),[...s,a].join(Gn.default.delimiter)}function Ag({env:e=Xi.default.env,...t}={}){e={...e};let a=ds({env:e});return t.path=e[a],e[a]=fP(t),e}var mP=(e,t,a,n)=>{if(a==="length"||a==="prototype"||a==="arguments"||a==="caller")return;let i=Object.getOwnPropertyDescriptor(e,a),r=Object.getOwnPropertyDescriptor(t,a);!hP(i,r)&&n||Object.defineProperty(e,a,r)},hP=function(e,t){return e===void 0||e.configurable||e.writable===t.writable&&e.enumerable===t.enumerable&&e.configurable===t.configurable&&(e.writable||e.value===t.value)},vP=(e,t)=>{let a=Object.getPrototypeOf(t);a!==Object.getPrototypeOf(e)&&Object.setPrototypeOf(e,a)},bP=(e,t)=>`/* Wrapped ${e}*/ +${t}`,gP=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),xP=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name"),yP=(e,t,a)=>{let n=a===""?"":`with ${a.trim()}() `,i=bP.bind(null,n,t.toString());Object.defineProperty(i,"name",xP),Object.defineProperty(e,"toString",{...gP,value:i})};function Zu(e,t,{ignoreNonConfigurable:a=!1}={}){let{name:n}=e;for(let i of Reflect.ownKeys(t))mP(e,t,i,a);return vP(e,t),yP(e,t,n),e}var fs=new WeakMap,Ig=(e,t={})=>{if(typeof e!="function")throw new TypeError("Expected a function");let a,n=0,i=e.displayName||e.name||"",r=function(...o){if(fs.set(r,++n),n===1)a=e.apply(this,o),e=null;else if(t.throw===!0)throw new Error(`Function \`${i}\` can only be called once`);return a};return Zu(r,e),fs.set(r,n),r};Ig.callCount=e=>{if(!fs.has(e))throw new Error(`The given function \`${e.name}\` is not wrapped by the \`onetime\` package`);return fs.get(e)};var _g=Ig;var Rg=require("node:os");var Tg=()=>{let e=Fg-kg+1;return Array.from({length:e},wP)},wP=(e,t)=>({name:`SIGRT${t+1}`,number:kg+t,action:"terminate",description:"Application-specific signal (realtime)",standard:"posix"}),kg=34,Fg=64;var Og=require("node:os");var Pg=[{name:"SIGHUP",number:1,action:"terminate",description:"Terminal closed",standard:"posix"},{name:"SIGINT",number:2,action:"terminate",description:"User interruption with CTRL-C",standard:"ansi"},{name:"SIGQUIT",number:3,action:"core",description:"User interruption with CTRL-\\",standard:"posix"},{name:"SIGILL",number:4,action:"core",description:"Invalid machine instruction",standard:"ansi"},{name:"SIGTRAP",number:5,action:"core",description:"Debugger breakpoint",standard:"posix"},{name:"SIGABRT",number:6,action:"core",description:"Aborted",standard:"ansi"},{name:"SIGIOT",number:6,action:"core",description:"Aborted",standard:"bsd"},{name:"SIGBUS",number:7,action:"core",description:"Bus error due to misaligned, non-existing address or paging error",standard:"bsd"},{name:"SIGEMT",number:7,action:"terminate",description:"Command should be emulated but is not implemented",standard:"other"},{name:"SIGFPE",number:8,action:"core",description:"Floating point arithmetic error",standard:"ansi"},{name:"SIGKILL",number:9,action:"terminate",description:"Forced termination",standard:"posix",forced:!0},{name:"SIGUSR1",number:10,action:"terminate",description:"Application-specific signal",standard:"posix"},{name:"SIGSEGV",number:11,action:"core",description:"Segmentation fault",standard:"ansi"},{name:"SIGUSR2",number:12,action:"terminate",description:"Application-specific signal",standard:"posix"},{name:"SIGPIPE",number:13,action:"terminate",description:"Broken pipe or socket",standard:"posix"},{name:"SIGALRM",number:14,action:"terminate",description:"Timeout or timer",standard:"posix"},{name:"SIGTERM",number:15,action:"terminate",description:"Termination",standard:"ansi"},{name:"SIGSTKFLT",number:16,action:"terminate",description:"Stack is empty or overflowed",standard:"other"},{name:"SIGCHLD",number:17,action:"ignore",description:"Child process terminated, paused or unpaused",standard:"posix"},{name:"SIGCLD",number:17,action:"ignore",description:"Child process terminated, paused or unpaused",standard:"other"},{name:"SIGCONT",number:18,action:"unpause",description:"Unpaused",standard:"posix",forced:!0},{name:"SIGSTOP",number:19,action:"pause",description:"Paused",standard:"posix",forced:!0},{name:"SIGTSTP",number:20,action:"pause",description:'Paused using CTRL-Z or "suspend"',standard:"posix"},{name:"SIGTTIN",number:21,action:"pause",description:"Background process cannot read terminal input",standard:"posix"},{name:"SIGBREAK",number:21,action:"terminate",description:"User interruption with CTRL-BREAK",standard:"other"},{name:"SIGTTOU",number:22,action:"pause",description:"Background process cannot write to terminal output",standard:"posix"},{name:"SIGURG",number:23,action:"ignore",description:"Socket received out-of-band data",standard:"bsd"},{name:"SIGXCPU",number:24,action:"core",description:"Process timed out",standard:"bsd"},{name:"SIGXFSZ",number:25,action:"core",description:"File too big",standard:"bsd"},{name:"SIGVTALRM",number:26,action:"terminate",description:"Timeout or timer",standard:"bsd"},{name:"SIGPROF",number:27,action:"terminate",description:"Timeout or timer",standard:"bsd"},{name:"SIGWINCH",number:28,action:"ignore",description:"Terminal window size changed",standard:"bsd"},{name:"SIGIO",number:29,action:"terminate",description:"I/O is available",standard:"other"},{name:"SIGPOLL",number:29,action:"terminate",description:"Watched event",standard:"other"},{name:"SIGINFO",number:29,action:"ignore",description:"Request for process information",standard:"other"},{name:"SIGPWR",number:30,action:"terminate",description:"Device running out of power",standard:"systemv"},{name:"SIGSYS",number:31,action:"core",description:"Invalid system call",standard:"other"},{name:"SIGUNUSED",number:31,action:"terminate",description:"Invalid system call",standard:"other"}];var qu=()=>{let e=Tg();return[...Pg,...e].map(EP)},EP=({name:e,number:t,description:a,action:n,forced:i=!1,standard:r})=>{let{signals:{[e]:o}}=Og.constants,s=o!==void 0;return{name:e,number:s?o:t,description:a,supported:s,action:n,forced:i,standard:r}};var SP=()=>{let e=qu();return Object.fromEntries(e.map(CP))},CP=({name:e,number:t,description:a,supported:n,action:i,forced:r,standard:o})=>[e,{name:e,number:t,description:a,supported:n,action:i,forced:r,standard:o}],Bg=SP(),AP=()=>{let e=qu(),t=64+1,a=Array.from({length:t},(n,i)=>IP(i,e));return Object.assign({},...a)},IP=(e,t)=>{let a=_P(e,t);if(a===void 0)return{};let{name:n,description:i,supported:r,action:o,forced:s,standard:l}=a;return{[e]:{name:n,number:e,description:i,supported:r,action:o,forced:s,standard:l}}},_P=(e,t)=>{let a=t.find(({name:n})=>Rg.constants.signals[n]===e);return a!==void 0?a:t.find(n=>n.number===e)},rz=AP();var TP=({timedOut:e,timeout:t,errorCode:a,signal:n,signalDescription:i,exitCode:r,isCanceled:o})=>e?`timed out after ${t} milliseconds`:o?"was canceled":a!==void 0?`failed with ${a}`:n!==void 0?`was killed with ${n} (${i})`:r!==void 0?`failed with exit code ${r}`:"failed",$i=({stdout:e,stderr:t,all:a,error:n,signal:i,exitCode:r,command:o,escapedCommand:s,timedOut:l,isCanceled:u,killed:c,parsed:{options:{timeout:f}}})=>{r=r===null?void 0:r,i=i===null?void 0:i;let p=i===void 0?void 0:Bg[i].description,b=n&&n.code,m=`Command ${TP({timedOut:l,timeout:f,errorCode:b,signal:i,signalDescription:p,exitCode:r,isCanceled:u})}: ${o}`,h=Object.prototype.toString.call(n)==="[object Error]",v=h?`${m} +${n.message}`:m,x=[v,t,e].filter(Boolean).join(` +`);return h?(n.originalMessage=n.message,n.message=x):n=new Error(x),n.shortMessage=v,n.command=o,n.escapedCommand=s,n.exitCode=r,n.signal=i,n.signalDescription=p,n.stdout=e,n.stderr=t,a!==void 0&&(n.all=a),"bufferedData"in n&&delete n.bufferedData,n.failed=!0,n.timedOut=!!l,n.isCanceled=u,n.killed=c&&!l,n};var ms=["stdin","stdout","stderr"],kP=e=>ms.some(t=>e[t]!==void 0),Ng=e=>{if(!e)return;let{stdio:t}=e;if(t===void 0)return ms.map(n=>e[n]);if(kP(e))throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${ms.map(n=>`\`${n}\``).join(", ")}`);if(typeof t=="string")return t;if(!Array.isArray(t))throw new TypeError(`Expected \`stdio\` to be of type \`string\` or \`Array\`, got \`${typeof t}\``);let a=Math.max(t.length,ms.length);return Array.from({length:a},(n,i)=>t[i])};var jg=_e(require("node:os"),1),Lg=_e(eu(),1),FP=1e3*5,Mg=(e,t="SIGTERM",a={})=>{let n=e(t);return PP(e,t,a,n),n},PP=(e,t,a,n)=>{if(!OP(t,a,n))return;let i=BP(a),r=setTimeout(()=>{e("SIGKILL")},i);r.unref&&r.unref()},OP=(e,{forceKillAfterTimeout:t},a)=>RP(e)&&t!==!1&&a,RP=e=>e===jg.default.constants.signals.SIGTERM||typeof e=="string"&&e.toUpperCase()==="SIGTERM",BP=({forceKillAfterTimeout:e=!0})=>{if(e===!0)return FP;if(!Number.isFinite(e)||e<0)throw new TypeError(`Expected the \`forceKillAfterTimeout\` option to be a non-negative integer, got \`${e}\` (${typeof e})`);return e},Dg=(e,t)=>{e.kill()&&(t.isCanceled=!0)},NP=(e,t,a)=>{e.kill(t),a(Object.assign(new Error("Timed out"),{timedOut:!0,signal:t}))},zg=(e,{timeout:t,killSignal:a="SIGTERM"},n)=>{if(t===0||t===void 0)return n;let i,r=new Promise((s,l)=>{i=setTimeout(()=>{NP(e,a,l)},t)}),o=n.finally(()=>{clearTimeout(i)});return Promise.race([r,o])},Gg=({timeout:e})=>{if(e!==void 0&&(!Number.isFinite(e)||e<0))throw new TypeError(`Expected the \`timeout\` option to be a non-negative integer, got \`${e}\` (${typeof e})`)},Hg=async(e,{cleanup:t,detached:a},n)=>{if(!t||a)return n;let i=(0,Lg.default)(()=>{e.kill()});return n.finally(()=>{i()})};var Wg=require("node:fs"),Vg=require("node:child_process");function hs(e){return e!==null&&typeof e=="object"&&typeof e.pipe=="function"}function Xu(e){return hs(e)&&e.writable!==!1&&typeof e._write=="function"&&typeof e._writableState=="object"}var jP=e=>e instanceof Vg.ChildProcess&&typeof e.then=="function",$u=(e,t,a)=>{if(typeof a=="string")return e[t].pipe((0,Wg.createWriteStream)(a)),e;if(Xu(a))return e[t].pipe(a),e;if(!jP(a))throw new TypeError("The second argument must be a string, a stream or an Execa child process.");if(!Xu(a.stdin))throw new TypeError("The target child process's stdin must be available.");return e[t].pipe(a.stdin),a},Ug=e=>{e.stdout!==null&&(e.pipeStdout=$u.bind(void 0,e,"stdout")),e.stderr!==null&&(e.pipeStderr=$u.bind(void 0,e,"stderr")),e.all!==void 0&&(e.pipeAll=$u.bind(void 0,e,"all"))};var bs=require("node:fs");var ep=_e(qg(),1),Xg=_e(au(),1),$g=e=>{if(e!==void 0)throw new TypeError("The `input` and `inputFile` options cannot be both set.")},WP=({input:e,inputFile:t})=>typeof t!="string"?e:($g(e),(0,bs.readFileSync)(t)),Yg=e=>{let t=WP(e);if(hs(t))throw new TypeError("The `input` option cannot be a stream in sync mode");return t},VP=({input:e,inputFile:t})=>typeof t!="string"?e:($g(e),(0,bs.createReadStream)(t)),Kg=(e,t)=>{let a=VP(t);a!==void 0&&(hs(a)?a.pipe(e.stdin):e.stdin.end(a))},Qg=(e,{all:t})=>{if(!t||!e.stdout&&!e.stderr)return;let a=(0,Xg.default)();return e.stdout&&a.add(e.stdout),e.stderr&&a.add(e.stderr),a},Ku=async(e,t)=>{if(!(!e||t===void 0)){e.destroy();try{return await t}catch(a){return a.bufferedData}}},Qu=(e,{encoding:t,buffer:a,maxBuffer:n})=>{if(!(!e||!a))return t?(0,ep.default)(e,{encoding:t,maxBuffer:n}):ep.default.buffer(e,{maxBuffer:n})},ex=async({stdout:e,stderr:t,all:a},{encoding:n,buffer:i,maxBuffer:r},o)=>{let s=Qu(e,{encoding:n,buffer:i,maxBuffer:r}),l=Qu(t,{encoding:n,buffer:i,maxBuffer:r}),u=Qu(a,{encoding:n,buffer:i,maxBuffer:r*2});try{return await Promise.all([o,s,l,u])}catch(c){return Promise.all([{error:c,signal:c.signal,timedOut:c.timedOut},Ku(e,s),Ku(t,l),Ku(a,u)])}};var UP=(async()=>{})().constructor.prototype,JP=["then","catch","finally"].map(e=>[e,Reflect.getOwnPropertyDescriptor(UP,e)]),tp=(e,t)=>{for(let[a,n]of JP){let i=typeof t=="function"?(...r)=>Reflect.apply(n.value,t(),r):n.value.bind(t);Reflect.defineProperty(e,a,{...n,value:i})}},tx=e=>new Promise((t,a)=>{e.on("exit",(n,i)=>{t({exitCode:n,signal:i})}),e.on("error",n=>{a(n)}),e.stdin&&e.stdin.on("error",n=>{a(n)})});var ix=require("node:buffer"),rx=require("node:child_process"),ox=(e,t=[])=>Array.isArray(t)?[e,...t]:[e],ZP=/^[\w.-]+$/,qP=/"/g,XP=e=>typeof e!="string"||ZP.test(e)?e:`"${e.replace(qP,'\\"')}"`,ap=(e,t)=>ox(e,t).join(" "),np=(e,t)=>ox(e,t).map(a=>XP(a)).join(" "),$P=/ +/g;var ax=e=>{let t=typeof e;if(t==="string")return e;if(t==="number")return String(e);if(t==="object"&&e!==null&&!(e instanceof rx.ChildProcess)&&"stdout"in e){let a=typeof e.stdout;if(a==="string")return e.stdout;if(ix.Buffer.isBuffer(e.stdout))return e.stdout.toString();throw new TypeError(`Unexpected "${a}" stdout in template expression`)}throw new TypeError(`Unexpected "${t}" in template expression`)},nx=(e,t,a)=>a||e.length===0||t.length===0?[...e,...t]:[...e.slice(0,-1),`${e[e.length-1]}${t[0]}`,...t.slice(1)],YP=({templates:e,expressions:t,tokens:a,index:n,template:i})=>{let r=i!=null?i:e.raw[n],o=r.split($P).filter(Boolean),s=nx(a,o,r.startsWith(" "));if(n===t.length)return s;let l=t[n],u=Array.isArray(l)?l.map(c=>ax(c)):[ax(l)];return nx(s,u,r.endsWith(" "))},ip=(e,t)=>{let a=[];for(let[n,i]of e.entries())a=YP({templates:e,expressions:t,tokens:a,index:n,template:i});return a};var sx=require("node:util"),lx=_e(require("node:process"),1),cx=(0,sx.debuglog)("execa").enabled,gs=(e,t)=>String(e).padStart(t,"0"),KP=()=>{let e=new Date;return`${gs(e.getHours(),2)}:${gs(e.getMinutes(),2)}:${gs(e.getSeconds(),2)}.${gs(e.getMilliseconds(),3)}`},rp=(e,{verbose:t})=>{t&&lx.default.stderr.write(`[${KP()}] ${e} +`)};var QP=1e3*1e3*100,eO=({env:e,extendEnv:t,preferLocal:a,localDir:n,execPath:i})=>{let r=t?{...Ki.default.env,...e}:e;return a?Ag({env:r,cwd:n,execPath:i}):r},mx=(e,t,a={})=>{let n=fx.default._parse(e,t,a);return e=n.command,t=n.args,a=n.options,a={maxBuffer:QP,buffer:!0,stripFinalNewline:!0,extendEnv:!0,preferLocal:!1,localDir:a.cwd||Ki.default.cwd(),execPath:Ki.default.execPath,encoding:"utf8",reject:!0,cleanup:!0,all:!1,windowsHide:!0,verbose:cx,...a},a.env=eO(a),a.stdio=Ng(a),Ki.default.platform==="win32"&&dx.default.basename(e,".exe")==="cmd"&&t.unshift("/q"),{file:e,args:t,options:a,parsed:n}},Qi=(e,t,a)=>typeof t!="string"&&!px.Buffer.isBuffer(t)?a===void 0?void 0:"":e.stripFinalNewline?Ju(t):t;function er(e,t,a){let n=mx(e,t,a),i=ap(e,t),r=np(e,t);rp(r,n.options),Gg(n.options);let o;try{o=xs.default.spawn(n.file,n.args,n.options)}catch(b){let d=new xs.default.ChildProcess,m=Promise.reject($i({error:b,stdout:"",stderr:"",all:"",command:i,escapedCommand:r,parsed:n,timedOut:!1,isCanceled:!1,killed:!1}));return tp(d,m),d}let s=tx(o),l=zg(o,n.options,s),u=Hg(o,n.options,l),c={isCanceled:!1};o.kill=Mg.bind(null,o.kill.bind(o)),o.cancel=Dg.bind(null,o,c);let p=_g(async()=>{let[{error:b,exitCode:d,signal:m,timedOut:h},v,x,E]=await ex(o,n.options,u),g=Qi(n.options,v),w=Qi(n.options,x),C=Qi(n.options,E);if(b||d!==0||m!==null){let y=$i({error:b,exitCode:d,signal:m,stdout:g,stderr:w,all:C,command:i,escapedCommand:r,parsed:n,timedOut:h,isCanceled:c.isCanceled||(n.options.signal?n.options.signal.aborted:!1),killed:o.killed});if(!n.options.reject)return y;throw y}return{command:i,escapedCommand:r,exitCode:0,stdout:g,stderr:w,all:C,failed:!1,timedOut:!1,isCanceled:!1,killed:!1}});return Kg(o,n.options),o.all=Qg(o,n.options),Ug(o),tp(o,p),o}function tO(e,t,a){let n=mx(e,t,a),i=ap(e,t),r=np(e,t);rp(r,n.options);let o=Yg(n.options),s;try{s=xs.default.spawnSync(n.file,n.args,{...n.options,input:o})}catch(c){throw $i({error:c,stdout:"",stderr:"",all:"",command:i,escapedCommand:r,parsed:n,timedOut:!1,isCanceled:!1,killed:!1})}let l=Qi(n.options,s.stdout,s.error),u=Qi(n.options,s.stderr,s.error);if(s.error||s.status!==0||s.signal!==null){let c=$i({stdout:l,stderr:u,error:s.error,signal:s.signal,exitCode:s.status,command:i,escapedCommand:r,parsed:n,timedOut:s.error&&s.error.code==="ETIMEDOUT",isCanceled:!1,killed:s.signal!==null});if(!n.options.reject)return c;throw c}return{command:i,escapedCommand:r,exitCode:0,stdout:l,stderr:u,failed:!1,timedOut:!1,isCanceled:!1,killed:!1}}var aO=({input:e,inputFile:t,stdio:a})=>e===void 0&&t===void 0&&a===void 0?{stdin:"inherit"}:{},ux=(e={})=>({preferLocal:!0,...aO(e),...e});function hx(e){function t(a,...n){if(!Array.isArray(a))return hx({...e,...a});let[i,...r]=ip(a,n);return er(i,r,ux(e))}return t.sync=(a,...n)=>{if(!Array.isArray(a))throw new TypeError("Please use $(options).sync`command` instead of $.sync(options)`command`.");let[i,...r]=ip(a,n);return tO(i,r,ux(e))},t}var Bz=hx();var lt=_e(require("fs")),op=require("obsidian"),tn=_e(require("os")),Lt=_e(require("path"));function sp(){return require("electron").remote.BrowserWindow.getFocusedWindow()}function lp(e){return e<10?`0${e}`:e.toString()}function an(){return app.vault.adapter.getBasePath()}function _t(){return Lt.default.join(an(),"./.obsidian/plugins/obsidian-zotero-desktop-connector/")}function nn(){return tn.default.platform()==="win32"?"pdfannots2json.exe":`pdfannots2json-${tn.default.platform()}-${tn.default.arch()}`}function vx(){tn.default.platform()!=="win32"&<.default.renameSync(Lt.default.join(_t(),cp()),Lt.default.join(_t(),nn()))}function cp(){return tn.default.platform()==="win32"?"pdfannots2json.exe":"pdfannots2json"}function bx(){return tn.default.platform()==="win32"?"pdf-annots2json.exe":"pdf-annots2json"}function Hn(e){return e?lt.default.existsSync(e):lt.default.existsSync(Lt.default.join(_t(),nn()))}function gx(e){return e?lt.default.existsSync(e):lt.default.existsSync(Lt.default.join(_t(),cp()))}function xx(){return lt.default.existsSync(Lt.default.join(_t(),bx()))}function yx(){lt.default.rmSync(Lt.default.join(_t(),nn()))}function wx(){lt.default.rmSync(Lt.default.join(_t(),cp()))}function Ex(){lt.default.rmSync(Lt.default.join(_t(),bx()))}async function Sx(e){try{let t=await er(e||Lt.default.join(_t(),nn()),["-v"]);if(t.stderr&&!t.stderr.includes("warning"))throw new op.Notice(`Error checking PDF utility version: ${t.stderr}`,1e4),new Error(t.stderr);return t.stdout.trim()}catch(t){throw console.error(t),new op.Notice(`Error checking PDF utility version: ${t.message}`,1e4),t}}function nO(e=0){return e|lt.default.constants.S_IXUSR|lt.default.constants.S_IXGRP|lt.default.constants.S_IXOTH}function iO(e){if(console.error("Error: pdfannots2json not executable",e),e.code==="ENOENT")return!1}function Cx(e){let t=e||Lt.default.join(_t(),nn());try{return lt.default.accessSync(t,lt.default.constants.X_OK),!0}catch(a){}try{let a=lt.default.statSync(t);return lt.default.chmodSync(t,nO(a.mode)),!0}catch(a){return iO(a)}}var Tx=require("obsidian");var Wn=_e(Ax()),ys=require("obsidian");Wn.default.runtime.memberLookup=function(t,a){if(t!=null)return a=="__proto__"||a=="constructor"?function(){return function(){}}:typeof t[a]=="function"?(...n)=>t[a].apply(t,n):t[a]};function rO(e){return e?e.split("."):[]}function oO(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function sO(e){let t=rO(e);return function(n){let i=n;for(let r=0;r{let o=typeof r=="string"?r:i(r);return o?typeof n[0]=="string"&&["startswith","endswith","contains"].includes(a)?(o=o.toString().toLocaleLowerCase(),n.some(s=>{let l=s.toLocaleLowerCase();return a==="startswith"?o.startsWith(l):a==="endswith"?o.endsWith(l):a==="contains"?o.includes(l):!0})):["dateafter","dateonorafter","datebefore","dateonorbefore"].includes(a)?n.some(s=>{if(!ys.moment.isMoment(o)||!ys.moment.isMoment(s))return!1;switch(a){case"dateafter":return o.isAfter(s);case"dateonorafter":return o.isSameOrAfter(s);case"datebefore":return o.isBefore(s);case"dateonorbefore":return o.isSameOrBefore(s)}}):!1:!1})}function cO(e,t){return e instanceof ys.moment?e.format(t):"Error: `format` can only be applied to dates. Tried for format "+typeof e}var Kt=class{constructor(){this.tags=["persist"]}parse(t,a){let n=t.nextToken(),i=t.parseSignature(null,!0);t.advanceAfterBlockEnd(n.value);let r=t.parseUntilBlocks("endpersist");return t.advanceAfterBlockEnd(),new a.CallExtension(this,"run",i,[r])}run(t,a,n){var o;let i="";(o=t==null?void 0:t.ctx)!=null&&o._retained&&t.ctx._retained[a]&&(i=t.ctx._retained[a]);let r=n();return i&&(r=r.trimStart()),new Wn.default.runtime.SafeString(`%% begin ${a} %%${i}${r}%% end ${a} %%`)}static hasPersist(t){return/%% begin (.+?) %%([\w\W]*?)%% end \1 %%/gi.test(t)}static prepareTemplateData(t,a){let n={};if(!a)return t;let i=a.matchAll(/%% begin (.+?) %%([\w\W]*?)%% end \1 %%/gi);for(let r of i)n[r[1]]=r[2];return{...t,_retained:n}}};Kt.id="PersistExtension";var pp=class extends Wn.Loader{constructor(){super(...arguments);this.async=!0}setSourceFile(a){this.sourceFile=a}getLinkPath(a){let n=a.trim().match(/^\[\[([^\]]+)\]\]$/);return n||(n=a.trim().match(/^\[[^\]]*\]\(([^)]+)\)$/),n)?n[1]:null}getSource(a,n){let i=this.getLinkPath(a);if(!i)return n(new Error("Cannot find file. Invalid markdown link: "+a),null);let r=app.metadataCache.getFirstLinkpathDest(i,this.sourceFile||"");if(!r)return n(new Error("Cannot find file. File not found: "+a),null);app.vault.cachedRead(r).then(o=>{let s={src:o,path:i,noCache:!0};n(null,s),this.emit("load",a,s)}).catch(o=>{n(o,null)})}},Ix=new pp,ar=new Wn.default.Environment(Ix,{autoescape:!1});ar.addFilter("setAttribute",function(e,t,a){return e[t]=a,e});ar.addFilter("filterby",lO);ar.addFilter("format",cO);ar.addExtension(Kt.id,new Kt);function bt(e,t,a){return new Promise((n,i)=>{Ix.setSourceFile(e),ar.renderString(t,a,(r,o)=>{if(r)return i(r);n(o)})})}var uO=` +{%- if creators and creators.length > 0 -%} + {%- for creator in creators -%} + {%- if creator.name -%} + {{creator.name}} + {%- else -%} + {{creator.firstName}} {{creator.lastName}} + {%- endif -%} + {% if not loop.last %}, {% endif %} + {%- endfor -%} +{%- endif -%} +`,pO=` +{%- if attachments and attachments.length > 0 -%} +{%- set file = attachments | filterby("path", "endswith", ".pdf") | first -%} +{%- if file and file.path and file.path.endsWith(".pdf") -%} + [{{file.title}}](file://{{file.path | replace(" ", "%20")}}) +{%- endif -%} +{%- endif -%} +`,dO=` +{%- if attachments and attachments.length > 0 -%} +{%- set file = attachments | filterby("path", "endswith", ".pdf") | first -%} +{%- if file and file.path and file.path.endsWith(".pdf") -%} + [{{file.title}}]({{file.desktopURI}}) +{%- endif -%} +{%- endif -%} +`,_x=` +{%- if annotations and annotations.length > 0 -%} +{%- set annots = annotations | filterby("date", "dateafter", lastExportDate) -%} +{%- if annots.length > 0 %} +**Imported: {{importDate | format("YYYY-MM-DD")}}** + +{% for annotation in annots -%} + {%- if annotation.annotatedText -%} + > \u201C{{annotation.annotatedText}}\u201D{% if annotation.color %} {{annotation.colorCategory}} {{annotation.type | capitalize}} {% else %} {{annotation.type | capitalize}} {% endif %}[Page {{annotation.page}}]({{annotation.attachment.desktopURI.replace("select", "open-pdf")}}?page={{annotation.pageLabel}}&annotation={{annotation.id}}) + {%- endif %} + {%- if annotation.imageRelativePath -%} + > ![[{{annotation.imageRelativePath}}]] + {%- endif %} +{% if annotation.comment %} +{{annotation.comment}} +{% endif %} +{% endfor -%} +{%- endif -%} +{%- endif -%} +`;async function ws(e,t){var r,o,s;if(!t)return t;let a=(t.creators||[]).reduce((l,u)=>(l[u.creatorType]||(l[u.creatorType]=[]),l[u.creatorType].push(u),l),{});await Promise.all(Object.keys(a).map(async l=>{t[`${l}s`]=(await bt(e,uO,{creators:a[l]})).trim()}));let n=(await bt(e,pO,t)).trim();n&&(t.pdfLink=n);let i=(await bt(e,dO,t)).trim();if(i&&(t.pdfZoteroLink=i),(r=t.notes)!=null&&r.length){let l=t.notes.reduce((u,c)=>c.note?`${u} + +${c.note.trim()}`:u,"").trim();l&&(t.markdownNotes=l)}return(o=t.tags)!=null&&o.length&&(t.allTags=t.tags.map(l=>l.tag).join(", "),t.hashTags=t.tags.map(l=>`#${l.tag.replace(/\s+/g,"-")}`).join(", ")),(s=t.annotations)!=null&&s.length&&(t.formattedAnnotationsNew=(await bt(e,_x,t)).trim(),t.formattedAnnotations=(await bt(e,_x,{...t,lastExportDate:(0,Tx.moment)(0)})).trim()),t}var Pa=require("obsidian");var kx=require("obsidian"),nt=class extends kx.Modal{constructor(a,n){super(a);this.message=n}onOpen(){this.contentEl.createDiv({text:this.message})}onClose(){this.contentEl.empty()}};var Es=_e(require("path")),Mt={"Content-Type":"application/json","User-Agent":"obsidian/zotero",Accept:"application/json",Connection:"keep-alive"};function Dt(e,t){return e==="Zotero"?"23119":e==="Juris-M"?"24119":t||"23119"}async function Ss(e){let t=Es.default.dirname(e);await app.vault.adapter.exists(t)||await app.vault.createFolder(t)}function Fx(e){return e.replace(/\s*[*?]+\s*/g," ").trim().replace(/\s*[:"<>|]+\s*/g," - ").trim()}function Vn(e){let t=Es.default.parse(e),a=Fx(t.dir),n=Fx(t.name);return Es.default.join(a,`${n}${t.ext}`)}function fO(e){let t="0",a="0",n="0";e.length==4?(t="0x"+e[1]+e[1],a="0x"+e[2]+e[2],n="0x"+e[3]+e[3]):e.length==7&&(t="0x"+e[1]+e[2],a="0x"+e[3]+e[4],n="0x"+e[5]+e[6]);let i=+t/255,r=+a/255,o=+n/255,s=Math.min(i,r,o),l=Math.max(i,r,o),u=l-s,c=0,f=0,p=0;return u==0?c=0:l==i?c=(r-o)/u%6:l==r?c=(o-i)/u+2:c=(i-r)/u+4,c=Math.round(c*60),c<0&&(c+=360),p=(l+s)/2,f=u==0?0:u/(1-Math.abs(2*p-1)),f=+(f*100).toFixed(1),p=+(p*100).toFixed(1),{h:c,s:f,l:p}}function Px(e){let{h:t,s:a,l:n}=fO(e);return n<12?"Black":n>98?"White":a<2?"Gray":t<15?"Red":t<45?"Orange":t<65?"Yellow":t<170?"Green":t<190?"Cyan":t<263?"Blue":t<280?"Purple":t<335?"Magenta":"Red"}function Qt(e,t,a){let n=t.split("/").pop(),i=`zotero://${e}`,r="";if(/group/.test(t)?r=t.replace("http://zotero.org",i):r=`${i}/library/items/${n}`,a){let o=new URLSearchParams(a);r+=`?${o}`}return r}var Pe=require("obsidian");var dp=class e{constructor(t){this.compare=t;this.heapArray=[];this._limit=0}static getChildrenIndexOf(t){return[t*2+1,t*2+2]}static getParentIndexOf(t){if(t<=0)return-1;let a=t%2?1:2;return Math.floor((t-a)/2)}push(t){return this._sortNodeUp(this.heapArray.push(t)-1),!0}length(){return this.heapArray.length}peek(){return this.heapArray[0]}pop(){let t=this.heapArray.pop();return this.length()>0&&t!==void 0?this.replace(t):t}replace(t){let a=this.heapArray[0];return this.heapArray[0]=t,this._sortNodeDown(0),a}size(){return this.length()}_moveNode(t,a){[this.heapArray[t],this.heapArray[a]]=[this.heapArray[a],this.heapArray[t]]}_sortNodeDown(t){let a=t(this.heapArray.length>o&&this.compare(this.heapArray[o],this.heapArray[r])<0&&(r=o),r);for(;a;){let r=e.getChildrenIndexOf(t),o=r.reduce(i,r[0]),s=this.heapArray[o];typeof s!="undefined"&&this.compare(n,s)>0?(this._moveNode(t,o),t=o):a=!1}}_sortNodeUp(t){let a=t>0;for(;a;){let n=e.getParentIndexOf(t);n>=0&&this.compare(this.heapArray[n],this.heapArray[t])>0?(this._moveNode(t,n),t=n):a=!1}}};function mO(e,t){return e.prio-t.prio||e.counter-t.counter}var fp=class{constructor(t,a){this.maxConcurrent=t||1,this.minCycle=a||0,this.queueRunning=new Map,this.queueWaiting=new dp(mO),this.lastRun=0,this.nextTimer=null,this.counter=0}tryRun(){for(;this.queueWaiting.size()>0&&this.queueRunning.sizeactiveWindow.setTimeout(()=>{this.nextTimer=null,this.tryRun(),a()},this.minCycle-Date.now()+this.lastRun)));return}let t=this.queueWaiting.pop();if(t!==void 0){let a,i={wait:new Promise(o=>{a=o}),signal:a},r={hash:t.hash,prio:t.prio,finish:i};if(this.queueRunning.has(t.hash))throw new Error("async-await-queue: duplicate hash "+t.hash);this.queueRunning.set(t.hash,r),this.lastRun=Date.now(),t.start.signal()}}}end(t){let a=this.queueRunning.get(t);if(a===void 0)throw new Error("async-await-queue: queue desync for "+t);this.queueRunning.delete(t),a.finish.signal(),this.tryRun()}async wait(t,a){let n=a!=null?a:0,i,r=new Promise(s=>{i=s}),o={hash:t,prio:n,start:{signal:i,wait:r},counter:this.counter++};this.queueWaiting.push(o),this.tryRun(),await r,this.lastRun=Date.now()}run(t,a){let n=a!=null?a:0,i=Symbol();return this.wait(i,n).then(t).finally(()=>{this.end(i)})}stat(){return{running:this.queueRunning.size,waiting:this.queueWaiting.size(),last:this.lastRun}}async flush(t){for(;this.queueRunning.size>0||this.queueWaiting.size()>0;){let a=this.queueWaiting.peek();if(a&&await a.start.wait,t!==void 0&&this.queueWaiting.size()0&&await this.queueRunning.values().next().value.finish.wait}}},Ee=new fp(1);async function Ox(e,t){let a,n=new nt(app,"Fetching notes from Zotero...");n.open();let i=Symbol();try{await Ee.wait(i),a=await(0,Pe.request)({method:"POST",url:`http://127.0.0.1:${Dt(t.database,t.port)}/better-bibtex/json-rpc`,body:JSON.stringify({jsonrpc:"2.0",method:"item.notes",params:[e.map(r=>r.key)]}),headers:Mt})}catch(r){return console.error(r),n.close(),new Pe.Notice(`Error retrieving notes: ${r.message}`,1e4),Ee.end(i),null}Ee.end(i),n.close();try{return JSON.parse(a).result}catch(r){return console.error(r),new Pe.Notice(`Error retrieving notes: ${r.message}`,1e4),null}}async function Rx(e,t){let a,n=new nt(app,"Fetching collections from Zotero...");n.open();let i=Symbol();try{await Ee.wait(i),a=await(0,Pe.request)({method:"POST",url:`http://127.0.0.1:${Dt(t.database,t.port)}/better-bibtex/json-rpc`,body:JSON.stringify({jsonrpc:"2.0",method:"item.collections",params:[[e.key],!0]}),headers:Mt})}catch(r){return console.error(r),n.close(),new Pe.Notice(`Error retrieving notes: ${r.message}`,1e4),Ee.end(i),null}Ee.end(i),n.close();try{return JSON.parse(a).result[e.key].map(s=>{let l=s,u=[s.name];for(;l.parentCollection;)u.push(l.parentCollection.name),l=l.parentCollection;return{key:s.key,name:s.name,fullPath:u.reverse().join("/")}})}catch(r){return console.error(r),new Pe.Notice(`Error retrieving notes: ${r.message}`,1e4),null}}async function Cs(e,t){let a,n=new nt(app,"Fetching collections from Zotero...");n.open();let i=Symbol();try{await Ee.wait(i),a=await(0,Pe.request)({method:"POST",url:`http://127.0.0.1:${Dt(t.database,t.port)}/better-bibtex/json-rpc`,body:JSON.stringify({jsonrpc:"2.0",method:"item.attachments",params:[e.key]}),headers:Mt})}catch(r){return console.error(r),n.close(),new Pe.Notice(`Error retrieving notes: ${r.message}`,1e4),Ee.end(i),null}Ee.end(i),n.close();try{return JSON.parse(a).result}catch(r){return console.error(r),new Pe.Notice(`Error retrieving notes: ${r.message}`,1e4),null}}function Bx(e,t,a,n,i){return mp([e],t,a,n,i)}async function mp(e,t,a,n,i){var l;if(!e||!e.length)return null;let r,o;i||(o=new nt(app,"Fetching data from Zotero..."),o.open());let s=Symbol();try{let u={quickCopy:!0,contentType:"html"};a&&(delete u.quickCopy,u.id=a),await Ee.wait(s),r=await(0,Pe.request)({method:"POST",url:`http://127.0.0.1:${Dt(t.database,t.port)}/better-bibtex/json-rpc`,body:JSON.stringify({jsonrpc:"2.0",method:"item.bibliography",params:[e.map(c=>c.key),u,e[0].library]}),headers:Mt})}catch(u){return console.error(u),!i&&o.close(),new Pe.Notice(`Error retrieving formatted bibliography: ${u.message}`,1e4),Ee.end(s),null}Ee.end(s),!i&&o.close();try{let u=JSON.parse(r);if((l=u.error)!=null&&l.message)throw new Error(u.error.message);return n==="html"?u.result:(0,Pe.htmlToMarkdown)(u.result)}catch(u){console.error(u),console.error(`Response from BBT: ${r}`);let c=`Error converting formatted bibliography to markdown: ${u.message}`;return u.message.includes("element/document/fragment")&&(c="Error: Received empty bibliography from Zotero. Ensure Zotero's quick copy settings are set and the selected citation style is installed."),new Pe.Notice(c,1e4),null}}async function nr(e,t,a){var o;let n,i=new nt(app,"Fetching data from Zotero...");i.open();let r=Symbol();try{await Ee.wait(r),n=await(0,Pe.request)({method:"POST",url:`http://127.0.0.1:${Dt(t.database,t.port)}/better-bibtex/json-rpc`,body:JSON.stringify({jsonrpc:"2.0",method:"item.export",params:[e.map(s=>s.key),"36a3b0b5-bad0-4a04-b79b-441c7cef77db",a]}),headers:Mt})}catch(s){return console.error(s),i.close(),new Pe.Notice(`Error retrieving item data: ${s.message}`,1e4),Ee.end(r),null}Ee.end(r),i.close();try{let s=JSON.parse(n);if((o=s.error)!=null&&o.message)throw new Error(s.error.message);return Array.isArray(s.result)?JSON.parse(s.result[2]).items:JSON.parse(s.result).items}catch(s){return console.error(s),new Pe.Notice(`Error retrieving item data: ${s.message}`,1e4),null}}async function Nx(e,t,a){let n,i=new nt(app,"Fetching data from Zotero...");i.open();let r={},o=[],s=Symbol();try{await Ee.wait(s),n=await(0,Pe.request)({method:"POST",url:`http://127.0.0.1:${Dt(a.database,a.port)}/better-bibtex/json-rpc`,body:JSON.stringify({jsonrpc:"2.0",method:"item.citationkey",params:[t.map(f=>{let p=f.split("/").pop();return o.push(p),r[p]=f,`${e}:${p}`})]}),headers:Mt})}catch(f){return console.error(f),i.close(),new Pe.Notice(`Error retrieving item data: ${f.message}`,1e4),Ee.end(s),null}Ee.end(s),i.close();let l={},u=[];try{let f=JSON.parse(n);Object.keys(f.result).forEach(p=>{let b=p.split(":").pop();f.result[p]?(u.push({key:f.result[p],library:e}),l[b]={citekey:f.result[p],uri:r[b]}):l[b]={uri:r[b]}})}catch(f){return console.error(f),new Pe.Notice(`Error retrieving item data: ${f.message}`,1e4),null}let c=u.length?await nr(u,a,e):[];return o.map(f=>{if(l[f].citekey){let p=c.find(b=>{var d;return((d=rn(b))==null?void 0:d.key)===l[f].citekey});if(p)return p}return l[f]})}async function jx(e,t){var r;let a,n=new nt(app,"Fetching data from Zotero...");n.open();let i=Symbol();try{await Ee.wait(i),a=await(0,Pe.request)({method:"POST",url:`http://127.0.0.1:${Dt(t.database,t.port)}/better-bibtex/json-rpc`,body:JSON.stringify({jsonrpc:"2.0",method:"item.export",params:[[e.key],"f4b52ab0-f878-4556-85a0-c7aeedd09dfc",e.library]}),headers:Mt})}catch(o){return console.error(o),n.close(),new Pe.Notice(`Error retrieving item data: ${o.message}`,1e4),Ee.end(i),null}Ee.end(i),n.close();try{let o=JSON.parse(a);if((r=o.error)!=null&&r.message)throw new Error(o.error.message);let l=(Array.isArray(o.result)?JSON.parse(o.result[2]):JSON.parse(o.result)).map(u=>{let{issued:c}=u;if(!c||!c["date-parts"])return null;let f=c["date-parts"][0];return f.length?(0,Pe.moment)(`${f[0]}-${f[1]?lp(f[1]):"01"}-${f[2]?lp(f[2]):"01"}`,"YYYY-MM-DD"):null}).filter(u=>u);return l[0]?l[0]:null}catch(o){return console.error(o),new Pe.Notice(`Error retrieving item data: ${o.message}`,1e4),null}}function rn(e){return!e.citekey&&!e.citationKey?null:{key:e.citekey||e.citationKey,library:e.libraryID}}var As=!1,Lx=0;async function hp(e,t){if(As&&Date.now()-Lx<1e3*30)return As;let a;t||(a=new nt(app,"Fetching data from Zotero..."),a.open());let n=Symbol();try{await Ee.wait(n);let i=await(0,Pa.request)({method:"GET",url:`http://127.0.0.1:${Dt(e.database,e.port)}/better-bibtex/cayw?probe=true`,headers:Mt});return a==null||a.close(),As=i==="ready",Lx=Date.now(),Ee.end(n),As}catch(i){return a==null||a.close(),!t&&new Pa.Notice("Cannot connect to Zotero. Please ensure it is running and the Better BibTeX plugin is installed",1e4),Ee.end(n),!1}}function hO(e){switch(e.format){case"formatted-bibliography":return"format=formatted-bibliography";case"formatted-citation":return`format=formatted-citation${e.cslStyle?`&style=${e.cslStyle}`:""}`;case"pandoc":return`format=pandoc${e.brackets?"&brackets=true":""}`;case"latex":return`format=latex&command=${e.command||"cite"}`;case"biblatex":return`format=biblatex&command=${e.command||"autocite"}`}}async function Mx(e,t){let a=sp();if(!await hp(t))return null;let n=new nt(app,"Awaiting item selection from Zotero...");n.open();let i=Symbol();try{if(e.format==="formatted-bibliography"){n.close();let o=await on(t);return await mp(o,t,e.cslStyle)}await Ee.wait(i);let r=await(0,Pa.request)({method:"GET",url:`http://127.0.0.1:${Dt(t.database,t.port)}/better-bibtex/cayw?${hO(e)}`,headers:Mt});return a.show(),n.close(),Ee.end(i),r}catch(r){return a.show(),console.error(r),n.close(),new Pa.Notice(`Error processing citation: ${r.message}`,1e4),Ee.end(i),null}}async function on(e){try{let t=await vO(e);if(!t)return[];let a=t.map(n=>rn(n)).filter(n=>!!n);return a.length?a:[]}catch(t){return[]}}async function vO(e){let t=sp();if(!await hp(e))return null;let a=new nt(app,"Awaiting item selection from Zotero...");a.open();let n=Symbol();try{await Ee.wait(n);let i=await(0,Pa.request)({method:"GET",url:`http://127.0.0.1:${Dt(e.database,e.port)}/better-bibtex/cayw?format=translate&translator=36a3b0b5-bad0-4a04-b79b-441c7cef77db&exportNotes=false`,headers:Mt});return t.show(),a.close(),Ee.end(n),i?JSON.parse(i).items||[]:null}catch(i){return t.show(),console.error(i),a.close(),new Pa.Notice(`Error retrieving cite key: ${i.message}`,1e4),Ee.end(n),null}}var Oa=require("fs"),zt=require("obsidian"),cn=_e(require("path"));var sn=require("obsidian");function Is(e,t){if(!t)return null;let a=app.vault.getAbstractFileByPath(bp(t));return a?app.vault.cachedRead(a):(new sn.Notice(`Error: ${e} template not found ${t}`),null)}async function Dx(e){let{exportFormat:t}=e,a=!t.headerTemplatePath&&!t.annotationTemplatePath&&!t.footerTemplatePath;return t.templatePath||a?{template:await Is("",t.templatePath)}:{headerTemplate:await Is("Header",t.headerTemplatePath),annotationTemplate:await Is("Annotation",t.annotationTemplatePath),footerTemplate:await Is("Footer",t.footerTemplatePath)}}function zx(e){let t=e.match(/%% Import Date: (\S+) %%\n$/);return t&&t[1]?(0,sn.moment)(t[1]):(t=e.match(/%% Export Date: (\S+) %%\n$/),t&&t[1]?(0,sn.moment)(t[1]):(0,sn.moment)(0))}function vp(e){return e+` + +%% Import Date: ${(0,sn.moment)().toISOString(!0)} %% +`}function Gx(e){let t=e.match(/%% Begin annotations %%([\w\W]+)%% End annotations %%/);return t&&t[1]?t[1].trim():""}function Hx(e){return` +%% Begin annotations %% +${e} +%% End annotations %% +`}function ln(e){return e.startsWith("/")?e.replace(/^\/+/,""):e}function bp(e){return e.endsWith(".md")||(e+=".md"),e.startsWith("/")&&(e=ln(e)),e}async function gp(e,t,a,n){let i=new DOMParser().parseFromString(t,"text/html"),r=i.querySelectorAll("[data-annotation]"),o=i.querySelectorAll("[data-citation]");for(let s of Array.from(r))try{let l=s.dataset.annotation,u=l?JSON.parse(decodeURIComponent(l)):null;if(!u)return;let c=u.annotationKey,f=s instanceof HTMLImageElement;if(f){let p=a[c];if(p){let b=cn.default.parse(p),d=await bO(c,b.ext.slice(1),n),h=cn.default.parse(cn.default.join(an(),d)).dir;(0,Oa.existsSync)(h)||(0,Oa.mkdirSync)(h,{recursive:!0});let v=cn.default.join(b.dir,`${c}${b.ext}`);try{if(!(0,Oa.existsSync)(v)){let x=v;if(v=p,!(0,Oa.existsSync)(v))throw new Error("Cannot find annotation image: "+x)}(0,Oa.copyFileSync)(v,cn.default.join(an(),d))}catch(x){new zt.Notice("Error: unable to copy annotation image from Zotero into your vault",7e3),console.error(x)}s.src=d}}s.insertAdjacentElement(f?"afterend":"beforebegin",createEl("a",{text:"Go to annotation",href:Qt("open-pdf",u.attachmentURI,{page:u.pageLabel,annotation:u.annotationKey})})),f?s.insertAdjacentElement("afterend",createEl("br")):s.insertAdjacentElement("beforebegin",createSpan({text:" "}))}catch(l){console.error(l)}return o.forEach(s=>{var l;try{let u=s.dataset.citation,c=u?JSON.parse(decodeURIComponent(u)):null;if(!c||!c.citationItems.length||!((l=c.citationItems[0].uris)!=null&&l.length))return;let f=s.querySelector("span");if(!f)return;let p=f.innerText;f.empty(),f.createEl("a",{text:p,href:Qt("select",c.citationItems[0].uris[0])})}catch(u){console.error(u)}}),i.body.innerHTML}async function xp(e,t){let a=await on(e);if(!a.length)return;let n=await Ox(a,e);if(!n){new zt.Notice("No notes found for selected items",7e3);return}let i=Object.keys(n);if(!i.length){new zt.Notice("No notes found for selected items",7e3);return}let r={};for(let s of a){let l=await Cs(s,e);if(l){let u={};l.forEach(c=>{var f;(f=c.annotations)==null||f.forEach(p=>{p.annotationType==="image"&&(u[p.key]=p.annotationImagePath)})}),r[s.key]=u}}let o={};for(let s of i){let l=[];for(let u of n[s])l.push((0,zt.htmlToMarkdown)(await gp(s,u,r[s],t)));o[s]=l.join(` + +`)}return o}async function bO(e,t,a){let n=app.vault.getConfig("attachmentFolderPath"),i=n==="."||n==="./",r=null;n.startsWith("./")&&(r=n.slice(2)),i?n=a||"":r&&(n=cn.default.join(a||"",r)),n=(0,zt.normalizePath)(n);let o=app.vault.getAbstractFileByPathInsensitive(n);return!o&&r&&(await app.vault.createFolder(n),o=app.vault.getAbstractFileByPathInsensitive(n)),o instanceof zt.TFolder?`${o.getParentPrefix()+e}.${t}`:`${e}.${t}`}function Wx(e,t){e.replaceSelection(Object.values(t).join(` + +`))}async function Vx(e,t){let a=Object.keys(t),n=[];for(let i of a){let r=await gO(e,i,t[i]);if(!r)break;n.push(r)}return n.map(i=>i.path)}async function gO(e,t,a){let n=(0,zt.normalizePath)(Vn(ln(`${e}/${t}.md`))),i=app.vault.getAbstractFileByPath(n);try{i?await app.vault.modify(i,a):(await Ss(n),i=await app.vault.create(n,a))}catch(r){return console.error(r),new zt.Notice(`Error creating file "${n}": ${r.message}`,1e4),null}return i}var un=require("obsidian"),_s=_e(require("path"));var xO={noWrite:"-w",imageOutputPath:"-o",imageBaseName:"-n",imageFormat:"-f",imageDPI:"-d",imageQuality:"-q",ignoreBefore:"-b",attemptOCR:"-e",ocrLang:"-l",tesseractPath:"--tesseract-path",tessDataDir:"--tess-data-dir"};async function yp(e,t,a){let n=new nt(app,"Extracting annotations...");n.open();let i=[e];Object.keys(t).forEach(r=>{let o=t[r];if(o===""||o===void 0)return"";let s=xO[r];typeof o=="boolean"?o&&i.push(s):(i.push(s),typeof o=="string"&&o.startsWith("-")?i.push(`"${o}"`):i.push(o.toString()))});try{if(!Cx(a))return new un.Notice("Error: PDF utility is not executable",1e4),"[]";let o=await er(a||_s.default.join(_t(),nn()),i);if(n.close(),o.stderr.toLowerCase().includes("password"))return new un.Notice(`Error opening ${_s.default.basename(e)}: PDF is password protected`,1e4),"[]";if(o.stderr&&!o.stderr.includes("warning"))throw new un.Notice(`Error processing PDF: ${o.stderr}`,1e4),new Error(o.stderr);return o.stdout}catch(r){if(n.close(),r.message.toLowerCase().includes("password"))return new un.Notice(`Error opening ${_s.default.basename(e)}: PDF is password protected`,1e4),"[]";if(r.message.toLowerCase().includes("type3"))return new un.Notice(`Error processing annotations: ${r.message}`,1e4),"[]";throw console.error(r),new un.Notice(`Error processing PDF: ${r.message}`,1e4),r}}async function yO(e,t,a,n,i){t.note&&(t.note=(0,Be.htmlToMarkdown)(await gp(e.key,t.note,{}))),t.dateAdded&&(t.dateAdded=(0,Be.moment)(t.dateAdded)),t.dateModified&&(t.dateModified=(0,Be.moment)(t.dateModified)),t.desktopURI=Qt("select",t.uri),t.relations=await Zx(t,e.library,a,n,i)}function wO(e){var t;e.dateAdded&&(e.dateAdded=(0,Be.moment)(e.dateAdded)),e.dateModified&&(e.dateModified=(0,Be.moment)(e.dateModified)),e.uri&&(e.itemKey=e.uri.split("/").pop(),e.desktopURI=e.select||Qt("select",e.uri),(t=e.path)!=null&&t.endsWith(".pdf")&&(e.pdfURI=Qt("open-pdf",e.uri)))}function Ux(e,t,a){e.date=(0,Be.moment)(e.date),e.attachment=t,e.source="pdf",e.imagePath&&(e.imageBaseName=Jt.default.basename(e.imagePath),e.imageExtension=Jt.default.extname(e.imagePath).slice(1),e.imageRelativePath=(0,Be.normalizePath)(Jt.default.join(a,e.imageBaseName))),e.desktopURI=Qt("open-pdf",t.uri,{page:e.pageLabel})}function Jx(e,t,a,n,i,r=!1){var l;let o=e.annotationPosition.rects[0],s={date:(0,Be.moment)(e.dateModified),attachment:t,page:e.annotationPosition.pageIndex+1,pageLabel:e.annotationPageLabel,id:e.key,type:e.annotationType,x:o[0],y:o[1],color:e.annotationColor,colorCategory:Px(e.annotationColor),desktopURI:Qt("open-pdf",t.uri,{page:e.annotationPageLabel,annotation:e.key}),source:"zotero"};if(e.annotationText&&(s.annotatedText=e.annotationText),e.annotationComment&&(s.comment=e.annotationComment),e.annotationImagePath){let u=Jt.default.parse(e.annotationImagePath);s.imageBaseName=`${i}-${s.page}-x${Math.round(s.x)}-y${Math.round(s.y)}${u.ext}`,s.imageRelativePath=(0,Be.normalizePath)(Jt.default.join(n,s.imageBaseName)),s.imageExtension=u.ext.slice(1);let c=Jt.default.join(a,s.imageBaseName);if(r){(0,Ra.existsSync)(a)||(0,Ra.mkdirSync)(a,{recursive:!0});let f=Jt.default.join(u.dir,`${e.key}${u.ext}`);try{if(!(0,Ra.existsSync)(f)){let p=f;if(f=e.annotationImagePath,!(0,Ra.existsSync)(f))throw new Error("Cannot find annotation image: "+p)}(0,Ra.copyFileSync)(f,c)}catch(p){new Be.Notice("Error: unable to copy annotation image from Zotero into your vault",7e3),console.error(p)}}s.imagePath=c}return(l=e.tags)!=null&&l.length&&(s.tags=e.tags,s.allTags=e.tags.map(u=>u.tag).join(", "),s.hashTags=e.tags.map(u=>`#${u.tag.replace(/\s+/g,"-")}`).join(", ")),s}function Fs(e){let t=[],a=/^\+\s*/;return e.forEach(n=>{if(typeof n.comment=="string"&&a.test(n.comment)){n.comment=n.comment.replace(a,"");let i=t[t.length-1];if(i){i.annotatedText=i.annotatedText?i.annotatedText+"..."+n.annotatedText:n.annotatedText,i.comment=i.comment?i.comment+"..."+n.comment:n.comment;return}}t.push(n)}),t}async function Zx(e,t,a,n,i){var o;if(e.relations&&!Array.isArray(e.relations)){let s=[];for(let l of Object.values(e.relations))Array.isArray(l)&&s.push(...l);e.relations=s}if(!((o=e.relations)!=null&&o.length))return[];let r=await Nx(t,e.relations,n);for(let s of r)rn(s)&&await Ps(s,a,n,i,!0);return r}async function Ps(e,t,a,n,i){let r=rn(e);if(e.importDate=t,e.exportDate=t,e.desktopURI=e.select||Qt("select",e.uri,e.itemKey),e.accessDate&&(e.accessDate=(0,Be.moment)(e.accessDate)),e.dateAdded&&(e.dateAdded=(0,Be.moment)(e.dateAdded)),e.dateModified&&(e.dateModified=(0,Be.moment)(e.dateModified)),r){e.citekey||(e.citekey=r.key),e.citationKey||(e.citationKey=r.key);try{e.date=await jx(r,a)}catch(o){}try{e.collections=await Rx(r,a)}catch(o){}try{e.bibliography=await Bx(r,a,n)}catch(o){e.bibliography="Error generating bibliography"}}if(e.notes)for(let o of e.notes)await yO(r,o,t,a,n);if(e.attachments)for(let o of e.attachments)wO(o);i||(e.relations=await Zx(e,e.libraryID,t,a,n))}function qx(e,t){let a=e.message;try{if(a){let n=a.match(/\[Line (\d+), Column (\d+)]/);if(n){let r=t.split(/\n/g)[Number(n[1])-1],o=" ".repeat(Number(n[2])-1)+"^";return`${a} + +${r} +${o}`}}}catch(n){}return a}function Ts(e,t,a){new Be.Notice(createFragment(n=>{n.createSpan({text:`Error parsing template "${t}": `}),n.createEl("code",{text:qx(e,a)})}),1e4)}function ks(e,t,a){return new Error(`Error parsing template "${t}": ${qx(e,a)}`)}async function wp(e,t,a,n){let{template:i,headerTemplate:r,annotationTemplate:o,footerTemplate:s}=await Dx(e);if(!i&&!r&&!o&&!s)throw new Error(`No templates found for export ${e.exportFormat.name}`);let l="",u=!1;if(i){try{l=await bt(e.exportFormat.templatePath,i,t),u=Kt.hasPersist(l)}catch(m){if(n)throw ks(m,e.exportFormat.templatePath,i);return Ts(m,e.exportFormat.templatePath,i),!1}return u?vp(l):l}let c="",f="",p="";try{c=r?await bt(e.exportFormat.headerTemplatePath,r,t):""}catch(m){if(n)throw ks(m,e.exportFormat.headerTemplatePath,r);return Ts(m,e.exportFormat.headerTemplatePath,r),!1}try{f=o?await bt(e.exportFormat.annotationTemplatePath,o,t):""}catch(m){if(n)throw ks(m,e.exportFormat.annotationTemplatePath,o);return Ts(m,e.exportFormat.annotationTemplatePath,o),!1}try{p=s?await bt(e.exportFormat.footerTemplatePath,s,t):""}catch(m){if(n)throw ks(m,e.exportFormat.footerTemplatePath,s);return Ts(m,e.exportFormat.footerTemplatePath,s),!1}let b=[];r&&c.trim()&&b.push(c);let d=o&&(a+f).trim();return d&&b.push(Hx(a+f)),s&&p.trim()&&b.push(p),d?vp(b.join("")):b.join("")}function EO({exportFormat:e}){return e.templatePath||e.headerTemplatePath||e.annotationTemplatePath||e.footerTemplatePath||""}async function Xx(e,t){let a={};try{let n=rn(e);n&&(a=(await Cs(n,t)||[]).reduce((r,o)=>(o!=null&&o.path&&(r[o.path]=o),r),{}))}catch(n){console.error(n)}return a}async function $x(e,t,a){var i;let n=t.attachments.find(r=>{var o,s;return((o=r.path)==null?void 0:o.endsWith(".pdf"))&&((s=r.annotations)==null?void 0:s.length)});return t.annotations=(i=n==null?void 0:n.annotations)!=null?i:[],t.lastImportDate=a,t.lastExportDate=a,t.isFirstImport=a.valueOf()===0,await ws(e,t)}async function Ep(e,t){var h,v;let a=(0,Be.moment)(),{database:n,exportFormat:i,settings:r}=e,o=EO(e),s=Hn(),l=t||await on(n);if(!l.length)return[];let u=l[0].library,c;try{c=await nr(l,n,u)}catch(x){return[]}let f=[];for(let x=0,E=c.length;x{if(!b.has(x)){let g=app.vault.getAbstractFileByPath(x),w=g?await app.vault.cachedRead(g):"",C=g?Gx(w):"",y=g?zx(w):(0,Be.moment)(0);b.set(x,{item:E,file:g,fileContent:w,lastImportDate:y,existingAnnotations:C})}},m=async x=>(0,Be.normalizePath)(Vn(ln(await bt(o,i.outputPathTemplate,x))));for(let x=0,E=c.length;x{var M;(M=N.annotationPosition.rects)!=null&&M.length&&T.push(Jx(N,A,j,B,L,!0))})),T.length&&r.shouldConcat&&(T=Fs(T)),P&&s)try{let N=await yp(_,{imageBaseName:L,imageDPI:r.pdfExportImageDPI,imageFormat:r.pdfExportImageFormat,imageOutputPath:j,imageQuality:r.pdfExportImageQuality,attemptOCR:r.pdfExportImageOCR,ocrLang:r.pdfExportImageOCRLang,tesseractPath:r.pdfExportImageTesseractPath,tessDataDir:r.pdfExportImageTessDataDir},r.exeOverridePath),M=JSON.parse(N);for(let D of M)Ux(D,A,B);r.shouldConcat&&M.length&&(M=Fs(M)),T.push(...M)}catch(N){}T.length&&(A.annotations=T),await d(k,g)}}for(let[x,E]of b.entries())try{let{existingAnnotations:g,file:w,fileContent:C,item:y,lastImportDate:S}=E,A=await $x(x,y,S),_=await wp(e,Kt.prepareTemplateData(A,C),g);if(!_)continue;w?await app.vault.modify(w,_):(await Ss(x),await app.vault.create(x,_)),f.push(x)}catch(g){new Be.Notice(`Import failed for ${x}, check developer console for details`,7e3),console.error(g)}return f}async function Yx(e){let t=(0,Be.moment)(),{database:a,format:n}=e,i=await on(a);if(!i.length)return null;let r=i[0].library,o;try{o=await nr(i,a,r)}catch(l){return null}if(o.length===0)return null;let s=[];for(let l=0,u=o.length;l{var d;return!!((d=b.path)!=null&&d.endsWith(".pdf"))})||c.length?c[0]:null,...o[l]};s.push(await bt("",n.template,p))}return s.join(" ")}function SO(e){let t=e.exportFormats.find(n=>!!n.cslStyle);if(t)return t.cslStyle;let a=e.citeFormats.find(n=>!!n.cslStyle);if(a)return a.cslStyle}async function Kx(e){var u,c;let t={database:e.database,port:e.port},a=await on(t),n=Hn();if(!a.length)return null;let i=a[0].library,r;try{r=await nr(a,t,i)}catch(f){return null}let o=(0,Be.moment)(),s=SO(e);for(let f=0,p=r.length;f{var C;(C=w.annotationPosition.rects)!=null&&C.length&&g.push(Jx(w,d[h],Jt.default.join(l,"output_path"),"base_name","output_path"))}),e.shouldConcat&&g.length&&(g=Fs(g)),n)try{let w=await yp(E,{noWrite:!0,imageBaseName:"base_name",imageDPI:e.pdfExportImageDPI,imageFormat:e.pdfExportImageFormat,imageOutputPath:Jt.default.join(l,"output_path"),imageQuality:e.pdfExportImageQuality,attemptOCR:e.pdfExportImageOCR,ocrLang:e.pdfExportImageOCRLang,tesseractPath:e.pdfExportImageTesseractPath,tessDataDir:e.pdfExportImageTessDataDir},e.exeOverridePath),C=JSON.parse(w);for(let y of C)Ux(y,d[h],"output_path");e.shouldConcat&&C.length&&(C=Fs(C)),g.push(...C)}catch(w){return!1}g.length&&(x.annotations=g)}}return await Promise.all(r.map(async f=>{await $x("",f,(0,Be.moment)(0))})),r}var Un="zdc-debug",CO={scheme:"Tomorrow",author:"Chris Kempson (http://chriskempson.com)",base00:"#ffffff",base01:"#e0e0e0",base02:"#d6d6d6",base03:"#8e908c",base04:"#969896",base05:"#4d4d4c",base06:"#282a2e",base07:"#1d1f21",base08:"#c82829",base09:"#f5871f",base0A:"#eab700",base0B:"#718c00",base0C:"#3e999f",base0D:"#4271ae",base0E:"#8959a8",base0F:"#a3685a"},AO={scheme:"Tomorrow Night",author:"Chris Kempson (http://chriskempson.com)",base00:"#1d1f21",base01:"#282a2e",base02:"#373b41",base03:"#969896",base04:"#b4b7b4",base05:"#c5c8c6",base06:"#e0e0e0",base07:"#ffffff",base08:"#cc6666",base09:"#de935f",base0A:"#f0c674",base0B:"#b5bd68",base0C:"#8abeb7",base0D:"#81a2be",base0E:"#b294bb",base0F:"#a3685a"};function IO({plugin:e,formatIndex:t,templateData:a}){let[n,i]=I.useState(null),[r,o]=I.useState(null),[s,l]=I.useState(0);return I.useEffect(()=>{let u=e.settings.exportFormats[t],c=u.templatePath?e.app.vault.getAbstractFileByPath(bp(u.templatePath)):null,f=b=>{b&&b===c&&l(Date.now())},p=()=>{l(Date.now())};return e.emitter.on("fileUpdated",f),e.emitter.on("settingsUpdated",p),()=>{e.emitter.off("fileUpdated",f),e.emitter.off("settingsUpdated",p)}},[t]),I.useEffect(()=>{if(i(null),t===null)return;let u={settings:e.settings,database:{database:e.settings.database,port:e.settings.port},exportFormat:e.settings.exportFormats[t]};(async()=>{try{let f="",p=(0,Ba.moment)(0),b=await wp(u,Kt.prepareTemplateData({...a,lastImportDate:p,lastExportDate:p},f),"",!0);o(b||null)}catch(f){i(f.message)}})()},[t,s,a]),!r&&!n?null:I.createElement("div",{className:`zt-json-viewer__preview${n?" error":""}`},I.createElement("pre",null,I.createElement("code",null,n||r)))}function _O({plugin:e}){let[t,a]=I.useState(null),[n,i]=I.useState(null),[r,o]=I.useState(null),s=I.useCallback(()=>{Kx(e.settings).then(l=>{!l||l.length===0?a("No data retrieved"):(a(null),i(l[0]))})},[]);return I.createElement("div",{className:"zt-json-viewer"},I.createElement("div",{className:"zt-json-viewer__btns"},I.createElement("div",null,I.createElement("button",{onClick:s},"Prompt For Selection")),I.createElement("div",null,I.createElement("select",{className:"dropdown",onChange:l=>{l.target.value?o(Number(l.target.value)):o(null)}},I.createElement("option",{value:""},"Preview Import Format"),e.settings.exportFormats.map((l,u)=>I.createElement("option",{key:u,value:u},l.name))))),t?I.createElement("div",null,t):I.createElement("div",null,n&&I.createElement(I.Fragment,null,r!==null&&I.createElement(IO,{plugin:e,formatIndex:r,templateData:n}),I.createElement("div",{className:"zt-json-viewer__data"},I.createElement(Sg,{data:n,sortObjectKeys:(l,u)=>l.localeCompare(u),isCustomNode:l=>l instanceof Ba.moment,valueRenderer:RO,labelRenderer:TO,theme:document.body.hasClass("theme-dark")?AO:CO,invertTheme:!1})))))}var Os=class extends Ba.ItemView{constructor(a,n){super(n);this.plugin=a,this.mountJsonViewer()}getViewType(){return Un}getIcon(){return"gear"}getDisplayText(){return"Zotero Data Explorer"}mountJsonViewer(){I.unmountComponentAtNode(this.contentEl),I.render(I.createElement(_O,{plugin:this.plugin}),this.contentEl)}unmountJsonViewer(){I.unmountComponentAtNode(this.contentEl)}async onClose(){this.unmountJsonViewer()}},TO=(e,t)=>{let a=e.length===1,n=e.slice(0,-1),i=kO(n);return I.createElement("span",{onContextMenu:a?void 0:o=>{let s=new Ba.Menu().addItem(l=>l.setIcon("lucide-copy").setTitle("Copy template path").onClick(()=>{navigator.clipboard.writeText(`{{${i}}}`)}));t==="Array"&&s.addItem(l=>l.setIcon("lucide-copy").setTitle("Copy template for loop").onClick(()=>{navigator.clipboard.writeText(`{% for item in ${i} %} +{% item %} +{% endfor %}`)})),o.preventDefault(),s.showAtMouseEvent(o)}},a?"Template Data":e[0])},kO=e=>e.map(PO).reverse().join(""),FO=/^[$_\p{ID_Start}][$\u200c\u200d\p{ID_Continue}]*$/u,PO=(e,t,a)=>typeof e=="number"?`[${e}]`:FO.test(e)?t===a.length-1?`${e}`:`.${e}`:`[${JSON.stringify(e)}]`,OO=/^#(?:[\dA-F]{3}){1,2}$|^#(?:[\dA-F]{4}){1,2}$/i,RO=(e,t)=>t instanceof Ba.moment?I.createElement(I.Fragment,null,"\u{1F4C5} ",t.format("l LTS")):typeof t=="string"&&OO.test(t)?I.createElement(I.Fragment,null,I.createElement("span",{style:{backgroundColor:t},className:"zt-color-chip"}),t):typeof t=="string"&&t.length>800?t.slice(0,800)+"...":e;var ZA=_e(UA()),Zl=require("obsidian"),Sf=_e(require("os"));var JA=require("obsidian");function ca({name:e,className:t}){return I.createElement("span",{"data-icon":e,className:t,ref:a=>{a&&(0,JA.setIcon)(a,e)}})}function s9({name:e,description:t}){return I.createElement("div",{className:"setting-item-info"},I.createElement("div",{className:"setting-item-name"},e),I.createElement("div",{className:"setting-item-description"},t))}function He({name:e,description:t,children:a,isHeading:n}){return I.createElement("div",{className:`zt-setting-item setting-item${n?" setting-item-heading":""}`},I.createElement(s9,{name:e,description:t}),I.createElement("div",{className:"setting-item-control"},a))}var Va="1.0.15",Cf=1,l9={darwin:{x64:`https://github.com/mgmeyers/pdfannots2json/releases/download/${Va}/pdfannots2json.Mac.Intel.tar.gz`,arm64:`https://github.com/mgmeyers/pdfannots2json/releases/download/${Va}/pdfannots2json.Mac.M1.tar.gz`},linux:{x64:`https://github.com/mgmeyers/pdfannots2json/releases/download/${Va}/pdfannots2json.Linux.x64.tar.gz`},win32:{x64:`https://github.com/mgmeyers/pdfannots2json/releases/download/${Va}/pdfannots2json.Windows.x64.zip`}};function c9(){let e=l9[Sf.default.platform()];if(!e)return null;let t=e[Sf.default.arch()];return t||null}async function Af(){let e=c9();if(console.log("Obsidian Zotero Integration: Downloading "+e),!e)return!1;try{xx()&&Ex(),gx()&&wx(),Hn()&&yx(),await(0,ZA.default)(e,_t(),{extract:!0}),vx()}catch(t){console.error(t),new Zl.Notice("Error downloading PDF utility. Check the console for more details.",1e4)}return!0}function qA(e){let[t,a]=I.useState(null),[n,i]=I.useState(!1),[r,o]=I.useState(!1),[s,l]=I.useState(e.settings.exeOverridePath),u=I.useMemo(()=>(0,Zl.debounce)(m=>{l(m),e.updateSetting("exeOverridePath",m)},150,!0),[]);I.useEffect(()=>{let m=Hn(s);o(m),m&&Sx(s).then(h=>{a(`v${Va}`===h)}).catch(()=>{})},[s]);let c=I.useCallback(()=>{i(!0),Af().then(m=>{i(!1),m&&(a(!0),o(!0))})},[]),f=["Extracting data from PDFs requires an external tool.","This plugin will still work without it, but annotations will not be included in exports."],b=I.createElement(He,{name:"PDF Utility Path Override",description:I.createElement(I.Fragment,null,"Override the path to the PDF utility. Specify an absolute path to the pdfannots2json executable."," ",I.createElement("a",{href:"https://github.com/mgmeyers/pdfannots2json/releases",target:"_blank",rel:"noreferrer"},"Download the executable here.")," ","You may need to provide Obsidian the appropriate OS permissions to access the executable.")},I.createElement("input",{onChange:m=>u(m.target.value),type:"text",spellCheck:!1,value:s}),I.createElement("div",{className:"clickable-icon setting-editor-extra-setting-button","aria-label":"Select the pdfannots2json executable",onClick:()=>{let m=require("electron").remote.dialog.showOpenDialogSync({properties:["openFile"]});m&&m.length&&u(m[0])}},I.createElement(ca,{name:"lucide-folder-open"})));if(r&&t)return I.createElement(I.Fragment,null,I.createElement(He,{name:"PDF Utility",description:f.join(" ")},I.createElement("div",{className:"zt-asset-success"},I.createElement("div",{className:"zt-asset-success__icon"},I.createElement(ca,{name:"check-small"})),I.createElement("div",{className:"zt-asset-success__message"},"PDF utility is up to date."))),b);let d=I.createElement(I.Fragment,null,f.join(" ")," ",r&&I.createElement("strong",{className:"mod-warning"},"The PDF extraction tool requires updating. Please re-download."),!r&&!s&&I.createElement("strong",null,"Click the button to download."));return I.createElement(I.Fragment,null,I.createElement(He,{name:"PDF Utility",description:d},!s&&I.createElement("button",{disabled:n,onClick:c},n?"Downloading...":"Download")),b)}var Ja=require("obsidian");var V_=_e(r2());function o2(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),a.push.apply(a,n)}return a}function ae(e){for(var t=1;t0?$e(wi,--wt):0,xi--,Qe===10&&(xi=1,Kl--),Qe}function Et(){return Qe=wt2||yi(Qe)>3?"":" "}function g2(e,t){for(;--t&&Et()&&!(Qe<48||Qe>102||Qe>57&&Qe<65||Qe>70&&Qe<97););return Si(e,Dr()+(t<6&&Ht()==32&&Et()==32))}function Mf(e){for(;Et();)switch(Qe){case e:return wt;case 34:case 39:e!==34&&e!==39&&Mf(Qe);break;case 40:e===41&&Mf(e);break;case 92:Et();break}return wt}function x2(e,t){for(;Et()&&e+Qe!==47+10;)if(e+Qe===42+42&&Ht()===47)break;return"/*"+Si(t,wt-1)+"*"+xn(e===47?e:Et())}function y2(e){for(;!yi(Ht());)Et();return Si(e,wt)}function S2(e){return ec(tc("",null,null,null,[""],e=Ql(e),0,[0],e))}function tc(e,t,a,n,i,r,o,s,l){for(var u=0,c=0,f=o,p=0,b=0,d=0,m=1,h=1,v=1,x=0,E="",g=i,w=r,C=n,y=E;h;)switch(d=x,x=Et()){case 40:if(d!=108&&$e(y,f-1)==58){Lr(y+=ye(Ci(x),"&","&\f"),"&\f")!=-1&&(v=-1);break}case 34:case 39:case 91:y+=Ci(x);break;case 9:case 10:case 13:case 32:y+=b2(d);break;case 92:y+=g2(Dr()-1,7);continue;case 47:switch(Ht()){case 42:case 47:gi(v9(x2(Et(),Dr()),t,a),l);break;default:y+="/"}break;case 123*m:s[u++]=yt(y)*v;case 125*m:case 59:case 0:switch(x){case 0:case 125:h=0;case 59+c:v==-1&&(y=ye(y,/\f/g,"")),b>0&&yt(y)-f&&gi(b>32?E2(y+";",n,a,f-1):E2(ye(y," ","")+";",n,a,f-2),l);break;case 59:y+=";";default:if(gi(C=w2(y,t,a,u,c,i,s,E,g=[],w=[],f),r),x===123)if(c===0)tc(y,t,C,C,g,r,f,s,w);else switch(p===99&&$e(y,3)===110?100:p){case 100:case 108:case 109:case 115:tc(e,C,C,n&&gi(w2(e,C,C,0,0,i,s,E,i,g=[],f),w),i,w,f,s,n?g:w);break;default:tc(y,C,C,C,[""],w,0,s,w)}}u=c=b=0,m=v=1,E=y="",f=o;break;case 58:f=1+yt(y),b=d;default:if(m<1){if(x==123)--m;else if(x==125&&m++==0&&v2()==125)continue}switch(y+=xn(x),x*m){case 38:v=c>0?1:(y+="\f",-1);break;case 44:s[u++]=(yt(y)-1)*v,v=1;break;case 64:Ht()===45&&(y+=Ci(Et())),p=Ht(),c=f=yt(E=y+=y2(Dr())),x++;break;case 45:d===45&&yt(y)==2&&(m=0)}}return r}function w2(e,t,a,n,i,r,o,s,l,u,c){for(var f=i-1,p=i===0?r:[""],b=bi(p),d=0,m=0,h=0;d0?p[v]+" "+x:ye(x,/&\f/g,p[v])))&&(l[h++]=E);return Mr(e,t,a,i===0?mi:s,l,u,c)}function v9(e,t,a){return Mr(e,t,a,Xl,xn(h2()),Ua(e,2,-2),0)}function E2(e,t,a,n){return Mr(e,t,a,hi,Ua(e,0,n),Ua(e,n+1,-1),n)}function yn(e,t){for(var a="",n=bi(e),i=0;i6)switch($e(e,t+1)){case 109:if($e(e,t+4)!==45)break;case 102:return ye(e,/(.+:)(.+)-([^]+)/,"$1"+Se+"$2-$3$1"+jr+($e(e,t+3)==108?"$3":"$2-$3"))+e;case 115:return~Lr(e,"stretch")?k2(ye(e,"stretch","fill-available"),t)+e:e}break;case 4949:if($e(e,t+1)!==115)break;case 6444:switch($e(e,yt(e)-3-(~Lr(e,"!important")&&10))){case 107:return ye(e,":",":"+Se)+e;case 101:return ye(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+Se+($e(e,14)===45?"inline-":"")+"box$3$1"+Se+"$2$3$1"+dt+"$2box$3")+e}break;case 5936:switch($e(e,t+11)){case 114:return Se+e+dt+ye(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return Se+e+dt+ye(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return Se+e+dt+ye(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return Se+e+dt+e+e}return e}var E9=function(t,a,n,i){if(t.length>-1&&!t.return)switch(t.type){case hi:t.return=k2(t.value,t.length);break;case $l:return yn([Ei(t,{value:ye(t.value,"@","@"+Se)})],i);case mi:if(t.length)return Lf(t.props,function(r){switch(jf(r,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return yn([Ei(t,{props:[ye(r,/:(read-\w+)/,":"+jr+"$1")]})],i);case"::placeholder":return yn([Ei(t,{props:[ye(r,/:(plac\w+)/,":"+Se+"input-$1")]}),Ei(t,{props:[ye(r,/:(plac\w+)/,":"+jr+"$1")]}),Ei(t,{props:[ye(r,/:(plac\w+)/,dt+"input-$1")]})],i)}return""})}},S9=[E9],Df=function(t){var a=t.key;if(a==="css"){var n=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(n,function(m){var h=m.getAttribute("data-emotion");h.indexOf(" ")!==-1&&(document.head.appendChild(m),m.setAttribute("data-s",""))})}var i=t.stylisPlugins||S9,r={},o,s=[];o=t.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+a+' "]'),function(m){for(var h=m.getAttribute("data-emotion").split(" "),v=1;v=4;++n,i-=4)a=e.charCodeAt(n)&255|(e.charCodeAt(++n)&255)<<8|(e.charCodeAt(++n)&255)<<16|(e.charCodeAt(++n)&255)<<24,a=(a&65535)*1540483477+((a>>>16)*59797<<16),a^=a>>>24,t=(a&65535)*1540483477+((a>>>16)*59797<<16)^(t&65535)*1540483477+((t>>>16)*59797<<16);switch(i){case 3:t^=(e.charCodeAt(n+2)&255)<<16;case 2:t^=(e.charCodeAt(n+1)&255)<<8;case 1:t^=e.charCodeAt(n)&255,t=(t&65535)*1540483477+((t>>>16)*59797<<16)}return t^=t>>>13,t=(t&65535)*1540483477+((t>>>16)*59797<<16),((t^t>>>15)>>>0).toString(36)}var H2={animationIterationCount:1,aspectRatio:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1};var L9=/[A-Z]|^ms/g,M9=/_EMO_([^_]+?)_([^]*?)_EMO_/g,J2=function(t){return t.charCodeAt(1)===45},W2=function(t){return t!=null&&typeof t!="boolean"},Zf=_2(function(e){return J2(e)?e:e.replace(L9,"-$&").toLowerCase()}),V2=function(t,a){switch(t){case"animation":case"animationName":if(typeof a=="string")return a.replace(M9,function(n,i,r){return ua={name:i,styles:r,next:ua},i})}return H2[t]!==1&&!J2(t)&&typeof a=="number"&&a!==0?a+"px":a};function zr(e,t,a){if(a==null)return"";if(a.__emotion_styles!==void 0)return a;switch(typeof a){case"boolean":return"";case"object":{if(a.anim===1)return ua={name:a.name,styles:a.styles,next:ua},a.name;if(a.styles!==void 0){var n=a.next;if(n!==void 0)for(;n!==void 0;)ua={name:n.name,styles:n.styles,next:ua},n=n.next;var i=a.styles+";";return i}return D9(e,t,a)}case"function":{if(e!==void 0){var r=ua,o=a(e);return ua=r,zr(e,t,o)}break}case"string":if(!1)var s,l;break}if(t==null)return a;var u=t[a];return u!==void 0?u:a}function D9(e,t,a){var n="";if(Array.isArray(a))for(var i=0;i=0)&&(a[i]=e[i]);return a}function Wt(e,t){if(e==null)return{};var a=Yf(e,t),n,i;if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}function Kf(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function K2(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}var V9=["top","right","bottom","left"],dJ=V9.reduce((e,t)=>e.concat(t,t+"-start",t+"-end"),[]);function pa(e){var t;return((t=e.ownerDocument)==null?void 0:t.defaultView)||window}function aI(e){return pa(e).getComputedStyle(e)}function nI(e){return e instanceof pa(e).Node}function iI(e){return nI(e)?(e.nodeName||"").toLowerCase():"#document"}function am(e){return e instanceof pa(e).HTMLElement}function em(e){return e instanceof pa(e).Element}function Q2(e){return typeof ShadowRoot!="undefined"&&(e instanceof pa(e).ShadowRoot||e instanceof ShadowRoot)}function rI(e){let{overflow:t,overflowX:a,overflowY:n,display:i}=aI(e);return/auto|scroll|overlay|hidden|clip/.test(t+n+a)&&!["inline","contents"].includes(i)}function U9(){return!(typeof CSS=="undefined"||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function J9(e){return["html","body","#document"].includes(iI(e))}var Z9=Math.min,q9=Math.max,bc=Math.round,vc=Math.floor,nm=e=>({x:e,y:e});function X9(e){let t=aI(e),a=parseFloat(t.width)||0,n=parseFloat(t.height)||0,i=am(e),r=i?e.offsetWidth:a,o=i?e.offsetHeight:n,s=bc(a)!==r||bc(n)!==o;return s&&(a=r,n=o),{width:a,height:n,$:s}}function im(e){return em(e)?e:e.contextElement}function Qf(e){let t=im(e);if(!am(t))return nm(1);let a=t.getBoundingClientRect(),{width:n,height:i,$:r}=X9(t),o=(r?bc(a.width):a.width)/n,s=(r?bc(a.height):a.height)/i;return o&&Number.isFinite(o)||(o=1),s&&Number.isFinite(s)||(s=1),{x:o,y:s}}var eI=nm(0);function $9(e,t,a){var n,i;if(t===void 0&&(t=!0),!U9())return eI;let r=e?pa(e):window;return!a||t&&a!==r?eI:{x:((n=r.visualViewport)==null?void 0:n.offsetLeft)||0,y:((i=r.visualViewport)==null?void 0:i.offsetTop)||0}}function tI(e,t,a,n){t===void 0&&(t=!1),a===void 0&&(a=!1);let i=e.getBoundingClientRect(),r=im(e),o=nm(1);t&&(n?em(n)&&(o=Qf(n)):o=Qf(e));let s=$9(r,a,n),l=(i.left+s.x)/o.x,u=(i.top+s.y)/o.y,c=i.width/o.x,f=i.height/o.y;if(r){let p=pa(r),b=n&&em(n)?pa(n):n,d=p.frameElement;for(;d&&n&&b!==p;){let m=Qf(d),h=d.getBoundingClientRect(),v=getComputedStyle(d),x=h.left+(d.clientLeft+parseFloat(v.paddingLeft))*m.x,E=h.top+(d.clientTop+parseFloat(v.paddingTop))*m.y;l*=m.x,u*=m.y,c*=m.x,f*=m.y,l+=x,u+=E,d=pa(d).frameElement}}return K2({width:c,height:f,x:l,y:u})}function oI(e){return((nI(e)?e.ownerDocument:e.document)||window.document).documentElement}function Y9(e){if(iI(e)==="html")return e;let t=e.assignedSlot||e.parentNode||Q2(e)&&e.host||oI(e);return Q2(t)?t.host:t}function sI(e){let t=Y9(e);return J9(t)?e.ownerDocument?e.ownerDocument.body:e.body:am(t)&&rI(t)?t:sI(t)}function tm(e,t){var a;t===void 0&&(t=[]);let n=sI(e),i=n===((a=e.ownerDocument)==null?void 0:a.body),r=pa(n);return i?t.concat(r,r.visualViewport||[],rI(n)?n:[]):t.concat(n,tm(n))}function lI(e,t,a,n){n===void 0&&(n={});let{ancestorScroll:i=!0,ancestorResize:r=!0,elementResize:o=typeof ResizeObserver=="function",layoutShift:s=typeof IntersectionObserver=="function",animationFrame:l=!1}=n,u=im(e),c=i||r?[...u?tm(u):[],...tm(t)]:[];c.forEach(h=>{i&&h.addEventListener("scroll",a,{passive:!0}),r&&h.addEventListener("resize",a)});let f=u&&s?function(h,v){let x,E=null,g=oI(h);function w(){clearTimeout(x),E&&E.disconnect(),E=null}return function C(y,S){y===void 0&&(y=!1),S===void 0&&(S=1),w();let{left:A,top:_,width:P,height:F}=h.getBoundingClientRect();if(y||v(),!P||!F)return;let B={rootMargin:-vc(_)+"px "+-vc(g.clientWidth-(A+P))+"px "+-vc(g.clientHeight-(_+F))+"px "+-vc(A)+"px",threshold:q9(0,Z9(1,S))||1},j=!0;function L(k){let T=k[0].intersectionRatio;if(T!==S){if(!j)return C();T?C(!1,T):x=setTimeout(()=>{C(!1,1e-7)},100)}j=!1}try{E=new IntersectionObserver(L,{...B,root:g.ownerDocument})}catch(k){E=new IntersectionObserver(L,B)}E.observe(h)}(!0),w}(u,a):null,p,b=-1,d=null;o&&(d=new ResizeObserver(h=>{let[v]=h;v&&v.target===u&&d&&(d.unobserve(t),cancelAnimationFrame(b),b=requestAnimationFrame(()=>{d&&d.observe(t)})),a()}),u&&!l&&d.observe(u),d.observe(t));let m=l?tI(e):null;return l&&function h(){let v=tI(e);!m||v.x===m.x&&v.y===m.y&&v.width===m.width&&v.height===m.height||a(),m=v,p=requestAnimationFrame(h)}(),a(),()=>{c.forEach(h=>{i&&h.removeEventListener("scroll",a),r&&h.removeEventListener("resize",a)}),f&&f(),d&&d.disconnect(),d=null,l&&cancelAnimationFrame(p)}}var K9=ka,gc=K9;var Q9=["className","clearValue","cx","getStyles","getClassNames","getValue","hasValue","isMulti","isRtl","options","selectOption","selectProps","setValue","theme"],Hr=function(){};function eL(e,t){return t?t[0]==="-"?e+t:e+"__"+t:e}function uI(e,t){for(var a=arguments.length,n=new Array(a>2?a-2:0),i=2;i-1}function tL(e){return Wr(e)?window.innerHeight:e.clientHeight}function fI(e){return Wr(e)?window.pageYOffset:e.scrollTop}function wc(e,t){if(Wr(e)){window.scrollTo(0,t);return}e.scrollTop=t}function aL(e){var t=getComputedStyle(e),a=t.position==="absolute",n=/(auto|scroll)/;if(t.position==="fixed")return document.documentElement;for(var i=e;i=i.parentElement;)if(t=getComputedStyle(i),!(a&&t.position==="static")&&n.test(t.overflow+t.overflowY+t.overflowX))return i;return document.documentElement}function nL(e,t,a,n){return a*((e=e/n-1)*e*e+1)+t}function xc(e,t){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:200,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:Hr,i=fI(e),r=t-i,o=10,s=0;function l(){s+=o;var u=nL(s,i,r,a);wc(e,u),sa.bottom?wc(e,Math.min(t.offsetTop+t.clientHeight-e.offsetHeight+i,e.scrollHeight)):n.top-i1?a-1:0),i=1;i=d)return{placement:"bottom",maxHeight:t};if(A>=d&&!o)return r&&xc(l,_,F),{placement:"bottom",maxHeight:t};if(!o&&A>=n||o&&y>=n){r&&xc(l,_,F);var B=o?y-g:A-g;return{placement:"bottom",maxHeight:B}}if(i==="auto"||o){var j=t,L=o?C:S;return L>=n&&(j=Math.min(L-g-s,t)),{placement:"top",maxHeight:j}}if(i==="bottom")return r&&wc(l,_),{placement:"bottom",maxHeight:t};break;case"top":if(C>=d)return{placement:"top",maxHeight:t};if(S>=d&&!o)return r&&xc(l,P,F),{placement:"top",maxHeight:t};if(!o&&S>=n||o&&C>=n){var k=t;return(!o&&S>=n||o&&C>=n)&&(k=o?C-w:S-w),r&&xc(l,P,F),{placement:"top",maxHeight:k}}return{placement:"bottom",maxHeight:t};default:throw new Error('Invalid placement provided "'.concat(i,'".'))}return u}function lL(e){var t={bottom:"top",top:"bottom"};return e?t[e]:"bottom"}var xI=function(t){return t==="auto"?"bottom":t},yI=function(t,a){var n,i=t.placement,r=t.theme,o=r.borderRadius,s=r.spacing,l=r.colors;return ae((n={label:"menu"},jt(n,lL(i),"100%"),jt(n,"position","absolute"),jt(n,"width","100%"),jt(n,"zIndex",1),n),a?{}:{backgroundColor:l.neutral0,borderRadius:o,boxShadow:"0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)",marginBottom:s.menuGutter,marginTop:s.menuGutter})},wI=_a(null),EI=function(t){var a=t.children,n=t.minMenuHeight,i=t.maxMenuHeight,r=t.menuPlacement,o=t.menuPosition,s=t.menuShouldScrollIntoView,l=t.theme,u=Yt(wI)||{},c=u.setPortalPlacement,f=ot(null),p=Re(i),b=Le(p,2),d=b[0],m=b[1],h=Re(null),v=Le(h,2),x=v[0],E=v[1],g=l.spacing.controlHeight;return gc(function(){var w=f.current;if(w){var C=o==="fixed",y=s&&!C,S=sL({maxHeight:i,menuEl:w,minHeight:n,placement:r,shouldScroll:y,isFixedPosition:C,controlHeight:g});m(S.maxHeight),E(S.placement),c==null||c(S.placement)}},[i,r,o,s,n,c,g]),a({ref:f,placerProps:ae(ae({},t),{},{placement:x||xI(r),maxHeight:d})})},cL=function(t){var a=t.children,n=t.innerRef,i=t.innerProps;return re("div",W({},Ze(t,"menu",{menu:!0}),{ref:n},i),a)},uL=cL,SI=function(t,a){var n=t.maxHeight,i=t.theme.spacing.baseUnit;return ae({maxHeight:n,overflowY:"auto",position:"relative",WebkitOverflowScrolling:"touch"},a?{}:{paddingBottom:i,paddingTop:i})},pL=function(t){var a=t.children,n=t.innerProps,i=t.innerRef,r=t.isMulti;return re("div",W({},Ze(t,"menuList",{"menu-list":!0,"menu-list--is-multi":r}),{ref:i},n),a)},CI=function(t,a){var n=t.theme,i=n.spacing.baseUnit,r=n.colors;return ae({textAlign:"center"},a?{}:{color:r.neutral40,padding:"".concat(i*2,"px ").concat(i*3,"px")})},AI=CI,II=CI,_I=function(t){var a=t.children,n=t.innerProps;return re("div",W({},Ze(t,"noOptionsMessage",{"menu-notice":!0,"menu-notice--no-options":!0}),n),a)};_I.defaultProps={children:"No options"};var TI=function(t){var a=t.children,n=t.innerProps;return re("div",W({},Ze(t,"loadingMessage",{"menu-notice":!0,"menu-notice--loading":!0}),n),a)};TI.defaultProps={children:"Loading..."};var kI=function(t){var a=t.rect,n=t.offset,i=t.position;return{left:a.left,position:i,top:n,width:a.width,zIndex:1}},dL=function(t){var a=t.appendTo,n=t.children,i=t.controlElement,r=t.innerProps,o=t.menuPlacement,s=t.menuPosition,l=ot(null),u=ot(null),c=Re(xI(o)),f=Le(c,2),p=f[0],b=f[1],d=At(function(){return{setPortalPlacement:b}},[]),m=Re(null),h=Le(m,2),v=h[0],x=h[1],E=Fe(function(){if(i){var y=iL(i),S=s==="fixed"?0:window.pageYOffset,A=y[p]+S;(A!==(v==null?void 0:v.offset)||y.left!==(v==null?void 0:v.rect.left)||y.width!==(v==null?void 0:v.rect.width))&&x({offset:A,rect:y})}},[i,s,p,v==null?void 0:v.offset,v==null?void 0:v.rect.left,v==null?void 0:v.rect.width]);gc(function(){E()},[E]);var g=Fe(function(){typeof u.current=="function"&&(u.current(),u.current=null),i&&l.current&&(u.current=lI(i,l.current,E,{elementResize:"ResizeObserver"in window}))},[i,E]);gc(function(){g()},[g]);var w=Fe(function(y){l.current=y,g()},[g]);if(!a&&s!=="fixed"||!v)return null;var C=re("div",W({ref:w},Ze(ae(ae({},t),{},{offset:v.offset,position:s,rect:v.rect}),"menuPortal",{"menu-portal":!0}),r),n);return re(wI.Provider,{value:d},a?yu(C,a):C)},FI=function(t){var a=t.isDisabled,n=t.isRtl;return{label:"container",direction:n?"rtl":void 0,pointerEvents:a?"none":void 0,position:"relative"}},fL=function(t){var a=t.children,n=t.innerProps,i=t.isDisabled,r=t.isRtl;return re("div",W({},Ze(t,"container",{"--is-disabled":i,"--is-rtl":r}),n),a)},PI=function(t,a){var n=t.theme.spacing,i=t.isMulti,r=t.hasValue,o=t.selectProps.controlShouldRenderValue;return ae({alignItems:"center",display:i&&r&&o?"flex":"grid",flex:1,flexWrap:"wrap",WebkitOverflowScrolling:"touch",position:"relative",overflow:"hidden"},a?{}:{padding:"".concat(n.baseUnit/2,"px ").concat(n.baseUnit*2,"px")})},mL=function(t){var a=t.children,n=t.innerProps,i=t.isMulti,r=t.hasValue;return re("div",W({},Ze(t,"valueContainer",{"value-container":!0,"value-container--is-multi":i,"value-container--has-value":r}),n),a)},OI=function(){return{alignItems:"center",alignSelf:"stretch",display:"flex",flexShrink:0}},hL=function(t){var a=t.children,n=t.innerProps;return re("div",W({},Ze(t,"indicatorsContainer",{indicators:!0}),n),a)},cI,vL=["size"];var bL={name:"8mmkcg",styles:"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0"},RI=function(t){var a=t.size,n=Wt(t,vL);return re("svg",W({height:a,width:a,viewBox:"0 0 20 20","aria-hidden":"true",focusable:"false",css:bL},n))},cm=function(t){return re(RI,W({size:20},t),re("path",{d:"M14.348 14.849c-0.469 0.469-1.229 0.469-1.697 0l-2.651-3.030-2.651 3.029c-0.469 0.469-1.229 0.469-1.697 0-0.469-0.469-0.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-0.469-0.469-0.469-1.228 0-1.697s1.228-0.469 1.697 0l2.652 3.031 2.651-3.031c0.469-0.469 1.228-0.469 1.697 0s0.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c0.469 0.469 0.469 1.229 0 1.698z"}))},BI=function(t){return re(RI,W({size:20},t),re("path",{d:"M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"}))},NI=function(t,a){var n=t.isFocused,i=t.theme,r=i.spacing.baseUnit,o=i.colors;return ae({label:"indicatorContainer",display:"flex",transition:"color 150ms"},a?{}:{color:n?o.neutral60:o.neutral20,padding:r*2,":hover":{color:n?o.neutral80:o.neutral40}})},jI=NI,gL=function(t){var a=t.children,n=t.innerProps;return re("div",W({},Ze(t,"dropdownIndicator",{indicator:!0,"dropdown-indicator":!0}),n),a||re(BI,null))},LI=NI,xL=function(t){var a=t.children,n=t.innerProps;return re("div",W({},Ze(t,"clearIndicator",{indicator:!0,"clear-indicator":!0}),n),a||re(cm,null))},MI=function(t,a){var n=t.isDisabled,i=t.theme,r=i.spacing.baseUnit,o=i.colors;return ae({label:"indicatorSeparator",alignSelf:"stretch",width:1},a?{}:{backgroundColor:n?o.neutral10:o.neutral20,marginBottom:r*2,marginTop:r*2})},yL=function(t){var a=t.innerProps;return re("span",W({},a,Ze(t,"indicatorSeparator",{"indicator-separator":!0})))},wL=Y2(cI||(cI=Kf([` + 0%, 80%, 100% { opacity: 0; } + 40% { opacity: 1; } +`]))),DI=function(t,a){var n=t.isFocused,i=t.size,r=t.theme,o=r.colors,s=r.spacing.baseUnit;return ae({label:"loadingIndicator",display:"flex",transition:"color 150ms",alignSelf:"center",fontSize:i,lineHeight:1,marginRight:i,textAlign:"center",verticalAlign:"middle"},a?{}:{color:n?o.neutral60:o.neutral20,padding:s*2})},rm=function(t){var a=t.delay,n=t.offset;return re("span",{css:Gr({animation:"".concat(wL," 1s ease-in-out ").concat(a,"ms infinite;"),backgroundColor:"currentColor",borderRadius:"1em",display:"inline-block",marginLeft:n?"1em":void 0,height:"1em",verticalAlign:"top",width:"1em"},"","")})},zI=function(t){var a=t.innerProps,n=t.isRtl;return re("div",W({},Ze(t,"loadingIndicator",{indicator:!0,"loading-indicator":!0}),a),re(rm,{delay:0,offset:n}),re(rm,{delay:160,offset:!0}),re(rm,{delay:320,offset:!n}))};zI.defaultProps={size:4};var GI=function(t,a){var n=t.isDisabled,i=t.isFocused,r=t.theme,o=r.colors,s=r.borderRadius,l=r.spacing;return ae({label:"control",alignItems:"center",cursor:"default",display:"flex",flexWrap:"wrap",justifyContent:"space-between",minHeight:l.controlHeight,outline:"0 !important",position:"relative",transition:"all 100ms"},a?{}:{backgroundColor:n?o.neutral5:o.neutral0,borderColor:n?o.neutral10:i?o.primary:o.neutral20,borderRadius:s,borderStyle:"solid",borderWidth:1,boxShadow:i?"0 0 0 1px ".concat(o.primary):void 0,"&:hover":{borderColor:i?o.primary:o.neutral30}})},EL=function(t){var a=t.children,n=t.isDisabled,i=t.isFocused,r=t.innerRef,o=t.innerProps,s=t.menuIsOpen;return re("div",W({ref:r},Ze(t,"control",{control:!0,"control--is-disabled":n,"control--is-focused":i,"control--menu-is-open":s}),o),a)},SL=EL,CL=["data"],HI=function(t,a){var n=t.theme.spacing;return a?{}:{paddingBottom:n.baseUnit*2,paddingTop:n.baseUnit*2}},AL=function(t){var a=t.children,n=t.cx,i=t.getStyles,r=t.getClassNames,o=t.Heading,s=t.headingProps,l=t.innerProps,u=t.label,c=t.theme,f=t.selectProps;return re("div",W({},Ze(t,"group",{group:!0}),l),re(o,W({},s,{selectProps:f,theme:c,getStyles:i,getClassNames:r,cx:n}),u),re("div",null,a))},WI=function(t,a){var n=t.theme,i=n.colors,r=n.spacing;return ae({label:"group",cursor:"default",display:"block"},a?{}:{color:i.neutral40,fontSize:"75%",fontWeight:500,marginBottom:"0.25em",paddingLeft:r.baseUnit*3,paddingRight:r.baseUnit*3,textTransform:"uppercase"})},IL=function(t){var a=pI(t);a.data;var n=Wt(a,CL);return re("div",W({},Ze(t,"groupHeading",{"group-heading":!0}),n))},_L=AL,TL=["innerRef","isDisabled","isHidden","inputClassName"],VI=function(t,a){var n=t.isDisabled,i=t.value,r=t.theme,o=r.spacing,s=r.colors;return ae(ae({visibility:n?"hidden":"visible",transform:i?"translateZ(0)":""},kL),a?{}:{margin:o.baseUnit/2,paddingBottom:o.baseUnit/2,paddingTop:o.baseUnit/2,color:s.neutral80})},UI={gridArea:"1 / 2",font:"inherit",minWidth:"2px",border:0,margin:0,outline:0,padding:0},kL={flex:"1 1 auto",display:"inline-grid",gridArea:"1 / 1 / 2 / 3",gridTemplateColumns:"0 min-content","&:after":ae({content:'attr(data-value) " "',visibility:"hidden",whiteSpace:"pre"},UI)},FL=function(t){return ae({label:"input",color:"inherit",background:0,opacity:t?0:1,width:"100%"},UI)},PL=function(t){var a=t.cx,n=t.value,i=pI(t),r=i.innerRef,o=i.isDisabled,s=i.isHidden,l=i.inputClassName,u=Wt(i,TL);return re("div",W({},Ze(t,"input",{"input-container":!0}),{"data-value":n||""}),re("input",W({className:a({input:!0},l),ref:r,style:FL(s),disabled:o},u)))},OL=PL,JI=function(t,a){var n=t.theme,i=n.spacing,r=n.borderRadius,o=n.colors;return ae({label:"multiValue",display:"flex",minWidth:0},a?{}:{backgroundColor:o.neutral10,borderRadius:r/2,margin:i.baseUnit/2})},ZI=function(t,a){var n=t.theme,i=n.borderRadius,r=n.colors,o=t.cropWithEllipsis;return ae({overflow:"hidden",textOverflow:o||o===void 0?"ellipsis":void 0,whiteSpace:"nowrap"},a?{}:{borderRadius:i/2,color:r.neutral80,fontSize:"85%",padding:3,paddingLeft:6})},qI=function(t,a){var n=t.theme,i=n.spacing,r=n.borderRadius,o=n.colors,s=t.isFocused;return ae({alignItems:"center",display:"flex"},a?{}:{borderRadius:r/2,backgroundColor:s?o.dangerLight:void 0,paddingLeft:i.baseUnit,paddingRight:i.baseUnit,":hover":{backgroundColor:o.dangerLight,color:o.danger}})},XI=function(t){var a=t.children,n=t.innerProps;return re("div",n,a)},RL=XI,BL=XI;function NL(e){var t=e.children,a=e.innerProps;return re("div",W({role:"button"},a),t||re(cm,{size:14}))}var jL=function(t){var a=t.children,n=t.components,i=t.data,r=t.innerProps,o=t.isDisabled,s=t.removeProps,l=t.selectProps,u=n.Container,c=n.Label,f=n.Remove;return re(u,{data:i,innerProps:ae(ae({},Ze(t,"multiValue",{"multi-value":!0,"multi-value--is-disabled":o})),r),selectProps:l},re(c,{data:i,innerProps:ae({},Ze(t,"multiValueLabel",{"multi-value__label":!0})),selectProps:l},a),re(f,{data:i,innerProps:ae(ae({},Ze(t,"multiValueRemove",{"multi-value__remove":!0})),{},{"aria-label":"Remove ".concat(a||"option")},s),selectProps:l}))},LL=jL,$I=function(t,a){var n=t.isDisabled,i=t.isFocused,r=t.isSelected,o=t.theme,s=o.spacing,l=o.colors;return ae({label:"option",cursor:"default",display:"block",fontSize:"inherit",width:"100%",userSelect:"none",WebkitTapHighlightColor:"rgba(0, 0, 0, 0)"},a?{}:{backgroundColor:r?l.primary:i?l.primary25:"transparent",color:n?l.neutral20:r?l.neutral0:"inherit",padding:"".concat(s.baseUnit*2,"px ").concat(s.baseUnit*3,"px"),":active":{backgroundColor:n?void 0:r?l.primary:l.primary50}})},ML=function(t){var a=t.children,n=t.isDisabled,i=t.isFocused,r=t.isSelected,o=t.innerRef,s=t.innerProps;return re("div",W({},Ze(t,"option",{option:!0,"option--is-disabled":n,"option--is-focused":i,"option--is-selected":r}),{ref:o,"aria-disabled":n},s),a)},DL=ML,YI=function(t,a){var n=t.theme,i=n.spacing,r=n.colors;return ae({label:"placeholder",gridArea:"1 / 1 / 2 / 3"},a?{}:{color:r.neutral50,marginLeft:i.baseUnit/2,marginRight:i.baseUnit/2})},zL=function(t){var a=t.children,n=t.innerProps;return re("div",W({},Ze(t,"placeholder",{placeholder:!0}),n),a)},GL=zL,KI=function(t,a){var n=t.isDisabled,i=t.theme,r=i.spacing,o=i.colors;return ae({label:"singleValue",gridArea:"1 / 1 / 2 / 3",maxWidth:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},a?{}:{color:n?o.neutral40:o.neutral80,marginLeft:r.baseUnit/2,marginRight:r.baseUnit/2})},HL=function(t){var a=t.children,n=t.isDisabled,i=t.innerProps;return re("div",W({},Ze(t,"singleValue",{"single-value":!0,"single-value--is-disabled":n}),i),a)},WL=HL,VL={ClearIndicator:xL,Control:SL,DropdownIndicator:gL,DownChevron:BI,CrossIcon:cm,Group:_L,GroupHeading:IL,IndicatorsContainer:hL,IndicatorSeparator:yL,Input:OL,LoadingIndicator:zI,Menu:uL,MenuList:pL,MenuPortal:dL,LoadingMessage:TI,NoOptionsMessage:_I,MultiValue:LL,MultiValueContainer:RL,MultiValueLabel:BL,MultiValueRemove:NL,Option:DL,Placeholder:GL,SelectContainer:fL,SingleValue:WL,ValueContainer:mL},QI=function(t){return ae(ae({},VL),t.components)};var e_=Number.isNaN||function(t){return typeof t=="number"&&t!==t};function UL(e,t){return!!(e===t||e_(e)&&e_(t))}function JL(e,t){if(e.length!==t.length)return!1;for(var a=0;a1?"s":""," ").concat(r.join(","),", selected.");case"select-option":return o?"option ".concat(i," is disabled. Select another option."):"option ".concat(i,", selected.");default:return""}},onFocus:function(t){var a=t.context,n=t.focused,i=t.options,r=t.label,o=r===void 0?"":r,s=t.selectValue,l=t.isDisabled,u=t.isSelected,c=function(d,m){return d&&d.length?"".concat(d.indexOf(m)+1," of ").concat(d.length):""};if(a==="value"&&s)return"value ".concat(o," focused, ").concat(c(s,n),".");if(a==="menu"){var f=l?" disabled":"",p="".concat(u?"selected":"focused").concat(f);return"option ".concat(o," ").concat(p,", ").concat(c(i,n),".")}return""},onFilter:function(t){var a=t.inputValue,n=t.resultsMessage;return"".concat(n).concat(a?" for search term "+a:"",".")}},$L=function(t){var a=t.ariaSelection,n=t.focusedOption,i=t.focusedValue,r=t.focusableOptions,o=t.isFocused,s=t.selectValue,l=t.selectProps,u=t.id,c=l.ariaLiveMessages,f=l.getOptionLabel,p=l.inputValue,b=l.isMulti,d=l.isOptionDisabled,m=l.isSearchable,h=l.menuIsOpen,v=l.options,x=l.screenReaderStatus,E=l.tabSelectsValue,g=l["aria-label"],w=l["aria-live"],C=At(function(){return ae(ae({},XL),c||{})},[c]),y=At(function(){var j="";if(a&&C.onChange){var L=a.option,k=a.options,T=a.removedValue,N=a.removedValues,M=a.value,D=function(oe){return Array.isArray(oe)?null:oe},V=T||L||D(M),q=V?f(V):"",Z=k||N||void 0,pe=Z?Z.map(f):[],fe=ae({isDisabled:V&&d(V,s),label:q,labels:pe},a);j=C.onChange(fe)}return j},[a,C,d,s,f]),S=At(function(){var j="",L=n||i,k=!!(n&&s&&s.includes(n));if(L&&C.onFocus){var T={focused:L,label:f(L),isDisabled:d(L,s),isSelected:k,options:r,context:L===n?"menu":"value",selectValue:s};j=C.onFocus(T)}return j},[n,i,f,d,C,r,s]),A=At(function(){var j="";if(h&&v.length&&C.onFilter){var L=x({count:r.length});j=C.onFilter({inputValue:p,resultsMessage:L})}return j},[r,p,h,C,v,x]),_=At(function(){var j="";if(C.guidance){var L=i?"value":h?"menu":"input";j=C.guidance({"aria-label":g,context:L,isDisabled:n&&d(n,s),isMulti:b,isSearchable:m,tabSelectsValue:E})}return j},[g,n,i,b,d,m,h,C,s,E]),P="".concat(S," ").concat(A," ").concat(_),F=re(rt,null,re("span",{id:"aria-selection"},y),re("span",{id:"aria-context"},P)),B=(a==null?void 0:a.action)==="initial-input-focus";return re(rt,null,re(a_,{id:u},B&&F),re(a_,{"aria-live":w,"aria-atomic":"false","aria-relevant":"additions text"},o&&!B&&F))},YL=$L,pm=[{base:"A",letters:"A\u24B6\uFF21\xC0\xC1\xC2\u1EA6\u1EA4\u1EAA\u1EA8\xC3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\xC4\u01DE\u1EA2\xC5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F"},{base:"AA",letters:"\uA732"},{base:"AE",letters:"\xC6\u01FC\u01E2"},{base:"AO",letters:"\uA734"},{base:"AU",letters:"\uA736"},{base:"AV",letters:"\uA738\uA73A"},{base:"AY",letters:"\uA73C"},{base:"B",letters:"B\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181"},{base:"C",letters:"C\u24B8\uFF23\u0106\u0108\u010A\u010C\xC7\u1E08\u0187\u023B\uA73E"},{base:"D",letters:"D\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779"},{base:"DZ",letters:"\u01F1\u01C4"},{base:"Dz",letters:"\u01F2\u01C5"},{base:"E",letters:"E\u24BA\uFF25\xC8\xC9\xCA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\xCB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E"},{base:"F",letters:"F\u24BB\uFF26\u1E1E\u0191\uA77B"},{base:"G",letters:"G\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E"},{base:"H",letters:"H\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D"},{base:"I",letters:"I\u24BE\uFF29\xCC\xCD\xCE\u0128\u012A\u012C\u0130\xCF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197"},{base:"J",letters:"J\u24BF\uFF2A\u0134\u0248"},{base:"K",letters:"K\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2"},{base:"L",letters:"L\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780"},{base:"LJ",letters:"\u01C7"},{base:"Lj",letters:"\u01C8"},{base:"M",letters:"M\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C"},{base:"N",letters:"N\u24C3\uFF2E\u01F8\u0143\xD1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4"},{base:"NJ",letters:"\u01CA"},{base:"Nj",letters:"\u01CB"},{base:"O",letters:"O\u24C4\uFF2F\xD2\xD3\xD4\u1ED2\u1ED0\u1ED6\u1ED4\xD5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\xD6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\xD8\u01FE\u0186\u019F\uA74A\uA74C"},{base:"OI",letters:"\u01A2"},{base:"OO",letters:"\uA74E"},{base:"OU",letters:"\u0222"},{base:"P",letters:"P\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754"},{base:"Q",letters:"Q\u24C6\uFF31\uA756\uA758\u024A"},{base:"R",letters:"R\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782"},{base:"S",letters:"S\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784"},{base:"T",letters:"T\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786"},{base:"TZ",letters:"\uA728"},{base:"U",letters:"U\u24CA\uFF35\xD9\xDA\xDB\u0168\u1E78\u016A\u1E7A\u016C\xDC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244"},{base:"V",letters:"V\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245"},{base:"VY",letters:"\uA760"},{base:"W",letters:"W\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72"},{base:"X",letters:"X\u24CD\uFF38\u1E8A\u1E8C"},{base:"Y",letters:"Y\u24CE\uFF39\u1EF2\xDD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE"},{base:"Z",letters:"Z\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762"},{base:"a",letters:"a\u24D0\uFF41\u1E9A\xE0\xE1\xE2\u1EA7\u1EA5\u1EAB\u1EA9\xE3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\xE4\u01DF\u1EA3\xE5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250"},{base:"aa",letters:"\uA733"},{base:"ae",letters:"\xE6\u01FD\u01E3"},{base:"ao",letters:"\uA735"},{base:"au",letters:"\uA737"},{base:"av",letters:"\uA739\uA73B"},{base:"ay",letters:"\uA73D"},{base:"b",letters:"b\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253"},{base:"c",letters:"c\u24D2\uFF43\u0107\u0109\u010B\u010D\xE7\u1E09\u0188\u023C\uA73F\u2184"},{base:"d",letters:"d\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A"},{base:"dz",letters:"\u01F3\u01C6"},{base:"e",letters:"e\u24D4\uFF45\xE8\xE9\xEA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\xEB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD"},{base:"f",letters:"f\u24D5\uFF46\u1E1F\u0192\uA77C"},{base:"g",letters:"g\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F"},{base:"h",letters:"h\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265"},{base:"hv",letters:"\u0195"},{base:"i",letters:"i\u24D8\uFF49\xEC\xED\xEE\u0129\u012B\u012D\xEF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131"},{base:"j",letters:"j\u24D9\uFF4A\u0135\u01F0\u0249"},{base:"k",letters:"k\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3"},{base:"l",letters:"l\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747"},{base:"lj",letters:"\u01C9"},{base:"m",letters:"m\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F"},{base:"n",letters:"n\u24DD\uFF4E\u01F9\u0144\xF1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5"},{base:"nj",letters:"\u01CC"},{base:"o",letters:"o\u24DE\uFF4F\xF2\xF3\xF4\u1ED3\u1ED1\u1ED7\u1ED5\xF5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\xF6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\xF8\u01FF\u0254\uA74B\uA74D\u0275"},{base:"oi",letters:"\u01A3"},{base:"ou",letters:"\u0223"},{base:"oo",letters:"\uA74F"},{base:"p",letters:"p\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755"},{base:"q",letters:"q\u24E0\uFF51\u024B\uA757\uA759"},{base:"r",letters:"r\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783"},{base:"s",letters:"s\u24E2\uFF53\xDF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B"},{base:"t",letters:"t\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787"},{base:"tz",letters:"\uA729"},{base:"u",letters:"u\u24E4\uFF55\xF9\xFA\xFB\u0169\u1E79\u016B\u1E7B\u016D\xFC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289"},{base:"v",letters:"v\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C"},{base:"vy",letters:"\uA761"},{base:"w",letters:"w\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73"},{base:"x",letters:"x\u24E7\uFF58\u1E8B\u1E8D"},{base:"y",letters:"y\u24E8\uFF59\u1EF3\xFD\u0177\u1EF9\u0233\u1E8F\xFF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF"},{base:"z",letters:"z\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763"}],KL=new RegExp("["+pm.map(function(e){return e.letters}).join("")+"]","g"),f_={};for(Ec=0;Ec-1}},aM=["innerRef"];function nM(e){var t=e.innerRef,a=Wt(e,aM),n=gI(a,"onExited","in","enter","exit","appear");return re("input",W({ref:t},n,{css:Gr({label:"dummyInput",background:0,border:0,caretColor:"transparent",fontSize:"inherit",gridArea:"1 / 1 / 2 / 3",outline:0,padding:0,width:1,color:"transparent",left:-100,opacity:0,position:"relative",transform:"scale(.01)"},"","")}))}var iM=function(t){t.preventDefault(),t.stopPropagation()};function rM(e){var t=e.isEnabled,a=e.onBottomArrive,n=e.onBottomLeave,i=e.onTopArrive,r=e.onTopLeave,o=ot(!1),s=ot(!1),l=ot(0),u=ot(null),c=Fe(function(h,v){if(u.current!==null){var x=u.current,E=x.scrollTop,g=x.scrollHeight,w=x.clientHeight,C=u.current,y=v>0,S=g-w-E,A=!1;S>v&&o.current&&(n&&n(h),o.current=!1),y&&s.current&&(r&&r(h),s.current=!1),y&&v>S?(a&&!o.current&&a(h),C.scrollTop=g,A=!0,o.current=!0):!y&&-v>E&&(i&&!s.current&&i(h),C.scrollTop=0,A=!0,s.current=!0),A&&iM(h)}},[a,n,i,r]),f=Fe(function(h){c(h,h.deltaY)},[c]),p=Fe(function(h){l.current=h.changedTouches[0].clientY},[]),b=Fe(function(h){var v=l.current-h.changedTouches[0].clientY;c(h,v)},[c]),d=Fe(function(h){if(h){var v=vI?{passive:!1}:!1;h.addEventListener("wheel",f,v),h.addEventListener("touchstart",p,v),h.addEventListener("touchmove",b,v)}},[b,p,f]),m=Fe(function(h){h&&(h.removeEventListener("wheel",f,!1),h.removeEventListener("touchstart",p,!1),h.removeEventListener("touchmove",b,!1))},[b,p,f]);return ha(function(){if(t){var h=u.current;return d(h),function(){m(h)}}},[t,d,m]),function(h){u.current=h}}var i_=["boxSizing","height","overflow","paddingRight","position"],r_={boxSizing:"border-box",overflow:"hidden",position:"relative",height:"100%"};function o_(e){e.preventDefault()}function s_(e){e.stopPropagation()}function l_(){var e=this.scrollTop,t=this.scrollHeight,a=e+this.offsetHeight;e===0?this.scrollTop=1:a===t&&(this.scrollTop=e-1)}function c_(){return"ontouchstart"in window||navigator.maxTouchPoints}var u_=!!(typeof window!="undefined"&&window.document&&window.document.createElement),Ur=0,Ai={capture:!1,passive:!1};function oM(e){var t=e.isEnabled,a=e.accountForScrollbars,n=a===void 0?!0:a,i=ot({}),r=ot(null),o=Fe(function(l){if(u_){var u=document.body,c=u&&u.style;if(n&&i_.forEach(function(d){var m=c&&c[d];i.current[d]=m}),n&&Ur<1){var f=parseInt(i.current.paddingRight,10)||0,p=document.body?document.body.clientWidth:0,b=window.innerWidth-p+f||0;Object.keys(r_).forEach(function(d){var m=r_[d];c&&(c[d]=m)}),c&&(c.paddingRight="".concat(b,"px"))}u&&c_()&&(u.addEventListener("touchmove",o_,Ai),l&&(l.addEventListener("touchstart",l_,Ai),l.addEventListener("touchmove",s_,Ai))),Ur+=1}},[n]),s=Fe(function(l){if(u_){var u=document.body,c=u&&u.style;Ur=Math.max(Ur-1,0),n&&Ur<1&&i_.forEach(function(f){var p=i.current[f];c&&(c[f]=p)}),u&&c_()&&(u.removeEventListener("touchmove",o_,Ai),l&&(l.removeEventListener("touchstart",l_,Ai),l.removeEventListener("touchmove",s_,Ai)))}},[n]);return ha(function(){if(t){var l=r.current;return o(l),function(){s(l)}}},[t,o,s]),function(l){r.current=l}}var sM=function(){return document.activeElement&&document.activeElement.blur()},lM={name:"1kfdb0e",styles:"position:fixed;left:0;bottom:0;right:0;top:0"};function cM(e){var t=e.children,a=e.lockEnabled,n=e.captureEnabled,i=n===void 0?!0:n,r=e.onBottomArrive,o=e.onBottomLeave,s=e.onTopArrive,l=e.onTopLeave,u=rM({isEnabled:i,onBottomArrive:r,onBottomLeave:o,onTopArrive:s,onTopLeave:l}),c=oM({isEnabled:a}),f=function(b){u(b),c(b)};return re(rt,null,a&&re("div",{onClick:sM,css:lM}),t(f))}var uM={name:"1a0ro4n-requiredInput",styles:"label:requiredInput;opacity:0;pointer-events:none;position:absolute;bottom:0;left:0;right:0;width:100%"},pM=function(t){var a=t.name,n=t.onFocus;return re("input",{required:!0,name:a,tabIndex:-1,"aria-hidden":"true",onFocus:n,css:uM,value:"",onChange:function(){}})},dM=pM,fM=function(t){return t.label},mM=function(t){return t.label},hM=function(t){return t.value},vM=function(t){return!!t.isDisabled},bM={clearIndicator:LI,container:FI,control:GI,dropdownIndicator:jI,group:HI,groupHeading:WI,indicatorsContainer:OI,indicatorSeparator:MI,input:VI,loadingIndicator:DI,loadingMessage:II,menu:yI,menuList:SI,menuPortal:kI,multiValue:JI,multiValueLabel:ZI,multiValueRemove:qI,noOptionsMessage:AI,option:$I,placeholder:YI,singleValue:KI,valueContainer:PI};var gM={primary:"#2684FF",primary75:"#4C9AFF",primary50:"#B2D4FF",primary25:"#DEEBFF",danger:"#DE350B",dangerLight:"#FFBDAD",neutral0:"hsl(0, 0%, 100%)",neutral5:"hsl(0, 0%, 95%)",neutral10:"hsl(0, 0%, 90%)",neutral20:"hsl(0, 0%, 80%)",neutral30:"hsl(0, 0%, 70%)",neutral40:"hsl(0, 0%, 60%)",neutral50:"hsl(0, 0%, 50%)",neutral60:"hsl(0, 0%, 40%)",neutral70:"hsl(0, 0%, 30%)",neutral80:"hsl(0, 0%, 20%)",neutral90:"hsl(0, 0%, 10%)"},xM=4,h_=4,yM=38,wM=h_*2,EM={baseUnit:h_,controlHeight:yM,menuGutter:wM},um={borderRadius:xM,colors:gM,spacing:EM},SM={"aria-live":"polite",backspaceRemovesValue:!0,blurInputOnSelect:lm(),captureMenuScroll:!lm(),classNames:{},closeMenuOnSelect:!0,closeMenuOnScroll:!1,components:{},controlShouldRenderValue:!0,escapeClearsValue:!1,filterOption:tM(),formatGroupLabel:fM,getOptionLabel:mM,getOptionValue:hM,isDisabled:!1,isLoading:!1,isMulti:!1,isRtl:!1,isSearchable:!0,isOptionDisabled:vM,loadingMessage:function(){return"Loading..."},maxMenuHeight:300,minMenuHeight:140,menuIsOpen:!1,menuPlacement:"bottom",menuPosition:"absolute",menuShouldBlockScroll:!1,menuShouldScrollIntoView:!mI(),noOptionsMessage:function(){return"No options"},openMenuOnFocus:!1,openMenuOnClick:!0,options:[],pageSize:5,placeholder:"Select...",screenReaderStatus:function(t){var a=t.count;return"".concat(a," result").concat(a!==1?"s":""," available")},styles:{},tabIndex:0,tabSelectsValue:!0,unstyled:!1};function p_(e,t,a,n){var i=x_(e,t,a),r=y_(e,t,a),o=g_(e,t),s=Ac(e,t);return{type:"option",data:t,isDisabled:i,isSelected:r,label:o,value:s,index:n}}function v_(e,t){return e.options.map(function(a,n){if("options"in a){var i=a.options.map(function(o,s){return p_(e,o,t,s)}).filter(function(o){return d_(e,o)});return i.length>0?{type:"group",data:a,options:i,index:n}:void 0}var r=p_(e,a,t,n);return d_(e,r)?r:void 0}).filter(bI)}function b_(e){return e.reduce(function(t,a){return a.type==="group"?t.push.apply(t,ql(a.options.map(function(n){return n.data}))):t.push(a.data),t},[])}function CM(e,t){return b_(v_(e,t))}function d_(e,t){var a=e.inputValue,n=a===void 0?"":a,i=t.data,r=t.isSelected,o=t.label,s=t.value;return(!E_(e)||!r)&&w_(e,{label:o,value:s,data:i},n)}function AM(e,t){var a=e.focusedValue,n=e.selectValue,i=n.indexOf(a);if(i>-1){var r=t.indexOf(a);if(r>-1)return a;if(i-1?a:t[0]}var g_=function(t,a){return t.getOptionLabel(a)},Ac=function(t,a){return t.getOptionValue(a)};function x_(e,t,a){return typeof e.isOptionDisabled=="function"?e.isOptionDisabled(t,a):!1}function y_(e,t,a){if(a.indexOf(t)>-1)return!0;if(typeof e.isOptionSelected=="function")return e.isOptionSelected(t,a);var n=Ac(e,t);return a.some(function(i){return Ac(e,i)===n})}function w_(e,t,a){return e.filterOption?e.filterOption(t,a):!0}var E_=function(t){var a=t.hideSelectedOptions,n=t.isMulti;return a===void 0?n:a},_M=1,dm=function(e){Tf(a,e);var t=Of(a);function a(n){var i;if(If(this,a),i=t.call(this,n),i.state={ariaSelection:null,focusedOption:null,focusedValue:null,inputIsHidden:!1,isFocused:!1,selectValue:[],clearFocusValueOnUpdate:!1,prevWasFocused:!1,inputIsHiddenAfterUpdate:void 0,prevProps:void 0},i.blockOptionHover=!1,i.isComposing=!1,i.commonProps=void 0,i.initialTouchX=0,i.initialTouchY=0,i.instancePrefix="",i.openAfterFocus=!1,i.scrollToFocusedOptionOnUpdate=!1,i.userIsDragging=void 0,i.controlRef=null,i.getControlRef=function(s){i.controlRef=s},i.focusedOptionRef=null,i.getFocusedOptionRef=function(s){i.focusedOptionRef=s},i.menuListRef=null,i.getMenuListRef=function(s){i.menuListRef=s},i.inputRef=null,i.getInputRef=function(s){i.inputRef=s},i.focus=i.focusInput,i.blur=i.blurInput,i.onChange=function(s,l){var u=i.props,c=u.onChange,f=u.name;l.name=f,i.ariaOnChange(s,l),c(s,l)},i.setValue=function(s,l,u){var c=i.props,f=c.closeMenuOnSelect,p=c.isMulti,b=c.inputValue;i.onInputChange("",{action:"set-value",prevInputValue:b}),f&&(i.setState({inputIsHiddenAfterUpdate:!p}),i.onMenuClose()),i.setState({clearFocusValueOnUpdate:!0}),i.onChange(s,{action:l,option:u})},i.selectOption=function(s){var l=i.props,u=l.blurInputOnSelect,c=l.isMulti,f=l.name,p=i.state.selectValue,b=c&&i.isOptionSelected(s,p),d=i.isOptionDisabled(s,p);if(b){var m=i.getOptionValue(s);i.setValue(p.filter(function(h){return i.getOptionValue(h)!==m}),"deselect-option",s)}else if(!d)c?i.setValue([].concat(ql(p),[s]),"select-option",s):i.setValue(s,"select-option");else{i.ariaOnChange(s,{action:"select-option",option:s,name:f});return}u&&i.blurInput()},i.removeValue=function(s){var l=i.props.isMulti,u=i.state.selectValue,c=i.getOptionValue(s),f=u.filter(function(b){return i.getOptionValue(b)!==c}),p=Vr(l,f,f[0]||null);i.onChange(p,{action:"remove-value",removedValue:s}),i.focusInput()},i.clearValue=function(){var s=i.state.selectValue;i.onChange(Vr(i.props.isMulti,[],null),{action:"clear",removedValues:s})},i.popValue=function(){var s=i.props.isMulti,l=i.state.selectValue,u=l[l.length-1],c=l.slice(0,l.length-1),f=Vr(s,c,c[0]||null);i.onChange(f,{action:"pop-value",removedValue:u})},i.getValue=function(){return i.state.selectValue},i.cx=function(){for(var s=arguments.length,l=new Array(s),u=0;up||f>p}},i.onTouchEnd=function(s){i.userIsDragging||(i.controlRef&&!i.controlRef.contains(s.target)&&i.menuListRef&&!i.menuListRef.contains(s.target)&&i.blurInput(),i.initialTouchX=0,i.initialTouchY=0)},i.onControlTouchEnd=function(s){i.userIsDragging||i.onControlMouseDown(s)},i.onClearIndicatorTouchEnd=function(s){i.userIsDragging||i.onClearIndicatorMouseDown(s)},i.onDropdownIndicatorTouchEnd=function(s){i.userIsDragging||i.onDropdownIndicatorMouseDown(s)},i.handleInputChange=function(s){var l=i.props.inputValue,u=s.currentTarget.value;i.setState({inputIsHiddenAfterUpdate:!1}),i.onInputChange(u,{action:"input-change",prevInputValue:l}),i.props.menuIsOpen||i.onMenuOpen()},i.onInputFocus=function(s){i.props.onFocus&&i.props.onFocus(s),i.setState({inputIsHiddenAfterUpdate:!1,isFocused:!0}),(i.openAfterFocus||i.props.openMenuOnFocus)&&i.openMenu("first"),i.openAfterFocus=!1},i.onInputBlur=function(s){var l=i.props.inputValue;if(i.menuListRef&&i.menuListRef.contains(document.activeElement)){i.inputRef.focus();return}i.props.onBlur&&i.props.onBlur(s),i.onInputChange("",{action:"input-blur",prevInputValue:l}),i.onMenuClose(),i.setState({focusedValue:null,isFocused:!1})},i.onOptionHover=function(s){i.blockOptionHover||i.state.focusedOption===s||i.setState({focusedOption:s})},i.shouldHideSelectedOptions=function(){return E_(i.props)},i.onValueInputFocus=function(s){s.preventDefault(),s.stopPropagation(),i.focus()},i.onKeyDown=function(s){var l=i.props,u=l.isMulti,c=l.backspaceRemovesValue,f=l.escapeClearsValue,p=l.inputValue,b=l.isClearable,d=l.isDisabled,m=l.menuIsOpen,h=l.onKeyDown,v=l.tabSelectsValue,x=l.openMenuOnFocus,E=i.state,g=E.focusedOption,w=E.focusedValue,C=E.selectValue;if(!d&&!(typeof h=="function"&&(h(s),s.defaultPrevented))){switch(i.blockOptionHover=!0,s.key){case"ArrowLeft":if(!u||p)return;i.focusValue("previous");break;case"ArrowRight":if(!u||p)return;i.focusValue("next");break;case"Delete":case"Backspace":if(p)return;if(w)i.removeValue(w);else{if(!c)return;u?i.popValue():b&&i.clearValue()}break;case"Tab":if(i.isComposing||s.shiftKey||!m||!v||!g||x&&i.isOptionSelected(g,C))return;i.selectOption(g);break;case"Enter":if(s.keyCode===229)break;if(m){if(!g||i.isComposing)return;i.selectOption(g);break}return;case"Escape":m?(i.setState({inputIsHiddenAfterUpdate:!1}),i.onInputChange("",{action:"menu-close",prevInputValue:p}),i.onMenuClose()):b&&f&&i.clearValue();break;case" ":if(p)return;if(!m){i.openMenu("first");break}if(!g)return;i.selectOption(g);break;case"ArrowUp":m?i.focusOption("up"):i.openMenu("last");break;case"ArrowDown":m?i.focusOption("down"):i.openMenu("first");break;case"PageUp":if(!m)return;i.focusOption("pageup");break;case"PageDown":if(!m)return;i.focusOption("pagedown");break;case"Home":if(!m)return;i.focusOption("first");break;case"End":if(!m)return;i.focusOption("last");break;default:return}s.preventDefault()}},i.instancePrefix="react-select-"+(i.props.instanceId||++_M),i.state.selectValue=om(n.value),n.menuIsOpen&&i.state.selectValue.length){var r=i.buildFocusableOptions(),o=r.indexOf(i.state.selectValue[0]);i.state.focusedOption=r[o]}return i}return _f(a,[{key:"componentDidMount",value:function(){this.startListeningComposition(),this.startListeningToTouch(),this.props.closeMenuOnScroll&&document&&document.addEventListener&&document.addEventListener("scroll",this.onScroll,!0),this.props.autoFocus&&this.focusInput(),this.props.menuIsOpen&&this.state.focusedOption&&this.menuListRef&&this.focusedOptionRef&&sm(this.menuListRef,this.focusedOptionRef)}},{key:"componentDidUpdate",value:function(i){var r=this.props,o=r.isDisabled,s=r.menuIsOpen,l=this.state.isFocused;(l&&!o&&i.isDisabled||l&&s&&!i.menuIsOpen)&&this.focusInput(),l&&o&&!i.isDisabled?this.setState({isFocused:!1},this.onMenuClose):!l&&!o&&i.isDisabled&&this.inputRef===document.activeElement&&this.setState({isFocused:!0}),this.menuListRef&&this.focusedOptionRef&&this.scrollToFocusedOptionOnUpdate&&(sm(this.menuListRef,this.focusedOptionRef),this.scrollToFocusedOptionOnUpdate=!1)}},{key:"componentWillUnmount",value:function(){this.stopListeningComposition(),this.stopListeningToTouch(),document.removeEventListener("scroll",this.onScroll,!0)}},{key:"onMenuOpen",value:function(){this.props.onMenuOpen()}},{key:"onMenuClose",value:function(){this.onInputChange("",{action:"menu-close",prevInputValue:this.props.inputValue}),this.props.onMenuClose()}},{key:"onInputChange",value:function(i,r){this.props.onInputChange(i,r)}},{key:"focusInput",value:function(){this.inputRef&&this.inputRef.focus()}},{key:"blurInput",value:function(){this.inputRef&&this.inputRef.blur()}},{key:"openMenu",value:function(i){var r=this,o=this.state,s=o.selectValue,l=o.isFocused,u=this.buildFocusableOptions(),c=i==="first"?0:u.length-1;if(!this.props.isMulti){var f=u.indexOf(s[0]);f>-1&&(c=f)}this.scrollToFocusedOptionOnUpdate=!(l&&this.menuListRef),this.setState({inputIsHiddenAfterUpdate:!1,focusedValue:null,focusedOption:u[c]},function(){return r.onMenuOpen()})}},{key:"focusValue",value:function(i){var r=this.state,o=r.selectValue,s=r.focusedValue;if(this.props.isMulti){this.setState({focusedOption:null});var l=o.indexOf(s);s||(l=-1);var u=o.length-1,c=-1;if(o.length){switch(i){case"previous":l===0?c=0:l===-1?c=u:c=l-1;break;case"next":l>-1&&l0&&arguments[0]!==void 0?arguments[0]:"first",r=this.props.pageSize,o=this.state.focusedOption,s=this.getFocusableOptions();if(s.length){var l=0,u=s.indexOf(o);o||(u=-1),i==="up"?l=u>0?u-1:s.length-1:i==="down"?l=(u+1)%s.length:i==="pageup"?(l=u-r,l<0&&(l=0)):i==="pagedown"?(l=u+r,l>s.length-1&&(l=s.length-1)):i==="last"&&(l=s.length-1),this.scrollToFocusedOptionOnUpdate=!0,this.setState({focusedOption:s[l],focusedValue:null})}}},{key:"getTheme",value:function(){return this.props.theme?typeof this.props.theme=="function"?this.props.theme(um):ae(ae({},um),this.props.theme):um}},{key:"getCommonProps",value:function(){var i=this.clearValue,r=this.cx,o=this.getStyles,s=this.getClassNames,l=this.getValue,u=this.selectOption,c=this.setValue,f=this.props,p=f.isMulti,b=f.isRtl,d=f.options,m=this.hasValue();return{clearValue:i,cx:r,getStyles:o,getClassNames:s,getValue:l,hasValue:m,isMulti:p,isRtl:b,options:d,selectOption:u,selectProps:f,setValue:c,theme:this.getTheme()}}},{key:"hasValue",value:function(){var i=this.state.selectValue;return i.length>0}},{key:"hasOptions",value:function(){return!!this.getFocusableOptions().length}},{key:"isClearable",value:function(){var i=this.props,r=i.isClearable,o=i.isMulti;return r===void 0?o:r}},{key:"isOptionDisabled",value:function(i,r){return x_(this.props,i,r)}},{key:"isOptionSelected",value:function(i,r){return y_(this.props,i,r)}},{key:"filterOption",value:function(i,r){return w_(this.props,i,r)}},{key:"formatOptionLabel",value:function(i,r){if(typeof this.props.formatOptionLabel=="function"){var o=this.props.inputValue,s=this.state.selectValue;return this.props.formatOptionLabel(i,{context:r,inputValue:o,selectValue:s})}else return this.getOptionLabel(i)}},{key:"formatGroupLabel",value:function(i){return this.props.formatGroupLabel(i)}},{key:"startListeningComposition",value:function(){document&&document.addEventListener&&(document.addEventListener("compositionstart",this.onCompositionStart,!1),document.addEventListener("compositionend",this.onCompositionEnd,!1))}},{key:"stopListeningComposition",value:function(){document&&document.removeEventListener&&(document.removeEventListener("compositionstart",this.onCompositionStart),document.removeEventListener("compositionend",this.onCompositionEnd))}},{key:"startListeningToTouch",value:function(){document&&document.addEventListener&&(document.addEventListener("touchstart",this.onTouchStart,!1),document.addEventListener("touchmove",this.onTouchMove,!1),document.addEventListener("touchend",this.onTouchEnd,!1))}},{key:"stopListeningToTouch",value:function(){document&&document.removeEventListener&&(document.removeEventListener("touchstart",this.onTouchStart),document.removeEventListener("touchmove",this.onTouchMove),document.removeEventListener("touchend",this.onTouchEnd))}},{key:"renderInput",value:function(){var i=this.props,r=i.isDisabled,o=i.isSearchable,s=i.inputId,l=i.inputValue,u=i.tabIndex,c=i.form,f=i.menuIsOpen,p=i.required,b=this.getComponents(),d=b.Input,m=this.state,h=m.inputIsHidden,v=m.ariaSelection,x=this.commonProps,E=s||this.getElementId("input"),g=ae(ae(ae({"aria-autocomplete":"list","aria-expanded":f,"aria-haspopup":!0,"aria-errormessage":this.props["aria-errormessage"],"aria-invalid":this.props["aria-invalid"],"aria-label":this.props["aria-label"],"aria-labelledby":this.props["aria-labelledby"],"aria-required":p,role:"combobox"},f&&{"aria-controls":this.getElementId("listbox"),"aria-owns":this.getElementId("listbox")}),!o&&{"aria-readonly":!0}),this.hasValue()?(v==null?void 0:v.action)==="initial-input-focus"&&{"aria-describedby":this.getElementId("live-region")}:{"aria-describedby":this.getElementId("placeholder")});return o?se(d,W({},x,{autoCapitalize:"none",autoComplete:"off",autoCorrect:"off",id:E,innerRef:this.getInputRef,isDisabled:r,isHidden:h,onBlur:this.onInputBlur,onChange:this.handleInputChange,onFocus:this.onInputFocus,spellCheck:"false",tabIndex:u,form:c,type:"text",value:l},g)):se(nM,W({id:E,innerRef:this.getInputRef,onBlur:this.onInputBlur,onChange:Hr,onFocus:this.onInputFocus,disabled:r,tabIndex:u,inputMode:"none",form:c,value:""},g))}},{key:"renderPlaceholderOrValue",value:function(){var i=this,r=this.getComponents(),o=r.MultiValue,s=r.MultiValueContainer,l=r.MultiValueLabel,u=r.MultiValueRemove,c=r.SingleValue,f=r.Placeholder,p=this.commonProps,b=this.props,d=b.controlShouldRenderValue,m=b.isDisabled,h=b.isMulti,v=b.inputValue,x=b.placeholder,E=this.state,g=E.selectValue,w=E.focusedValue,C=E.isFocused;if(!this.hasValue()||!d)return v?null:se(f,W({},p,{key:"placeholder",isDisabled:m,isFocused:C,innerProps:{id:this.getElementId("placeholder")}}),x);if(h)return g.map(function(S,A){var _=S===w,P="".concat(i.getOptionLabel(S),"-").concat(i.getOptionValue(S));return se(o,W({},p,{components:{Container:s,Label:l,Remove:u},isFocused:_,isDisabled:m,key:P,index:A,removeProps:{onClick:function(){return i.removeValue(S)},onTouchEnd:function(){return i.removeValue(S)},onMouseDown:function(B){B.preventDefault()}},data:S}),i.formatOptionLabel(S,"value"))});if(v)return null;var y=g[0];return se(c,W({},p,{data:y,isDisabled:m}),this.formatOptionLabel(y,"value"))}},{key:"renderClearIndicator",value:function(){var i=this.getComponents(),r=i.ClearIndicator,o=this.commonProps,s=this.props,l=s.isDisabled,u=s.isLoading,c=this.state.isFocused;if(!this.isClearable()||!r||l||!this.hasValue()||u)return null;var f={onMouseDown:this.onClearIndicatorMouseDown,onTouchEnd:this.onClearIndicatorTouchEnd,"aria-hidden":"true"};return se(r,W({},o,{innerProps:f,isFocused:c}))}},{key:"renderLoadingIndicator",value:function(){var i=this.getComponents(),r=i.LoadingIndicator,o=this.commonProps,s=this.props,l=s.isDisabled,u=s.isLoading,c=this.state.isFocused;if(!r||!u)return null;var f={"aria-hidden":"true"};return se(r,W({},o,{innerProps:f,isDisabled:l,isFocused:c}))}},{key:"renderIndicatorSeparator",value:function(){var i=this.getComponents(),r=i.DropdownIndicator,o=i.IndicatorSeparator;if(!r||!o)return null;var s=this.commonProps,l=this.props.isDisabled,u=this.state.isFocused;return se(o,W({},s,{isDisabled:l,isFocused:u}))}},{key:"renderDropdownIndicator",value:function(){var i=this.getComponents(),r=i.DropdownIndicator;if(!r)return null;var o=this.commonProps,s=this.props.isDisabled,l=this.state.isFocused,u={onMouseDown:this.onDropdownIndicatorMouseDown,onTouchEnd:this.onDropdownIndicatorTouchEnd,"aria-hidden":"true"};return se(r,W({},o,{innerProps:u,isDisabled:s,isFocused:l}))}},{key:"renderMenu",value:function(){var i=this,r=this.getComponents(),o=r.Group,s=r.GroupHeading,l=r.Menu,u=r.MenuList,c=r.MenuPortal,f=r.LoadingMessage,p=r.NoOptionsMessage,b=r.Option,d=this.commonProps,m=this.state.focusedOption,h=this.props,v=h.captureMenuScroll,x=h.inputValue,E=h.isLoading,g=h.loadingMessage,w=h.minMenuHeight,C=h.maxMenuHeight,y=h.menuIsOpen,S=h.menuPlacement,A=h.menuPosition,_=h.menuPortalTarget,P=h.menuShouldBlockScroll,F=h.menuShouldScrollIntoView,B=h.noOptionsMessage,j=h.onMenuScrollToTop,L=h.onMenuScrollToBottom;if(!y)return null;var k=function(Z,pe){var fe=Z.type,ee=Z.data,oe=Z.isDisabled,U=Z.isSelected,X=Z.label,$=Z.value,he=m===ee,qe=oe?void 0:function(){return i.onOptionHover(ee)},ze=oe?void 0:function(){return i.selectOption(ee)},ht="".concat(i.getElementId("option"),"-").concat(pe),R={id:ht,onClick:ze,onMouseMove:qe,onMouseOver:qe,tabIndex:-1};return se(b,W({},d,{innerProps:R,data:ee,isDisabled:oe,isSelected:U,key:ht,label:X,type:fe,value:$,isFocused:he,innerRef:he?i.getFocusedOptionRef:void 0}),i.formatOptionLabel(Z.data,"menu"))},T;if(this.hasOptions())T=this.getCategorizedOptions().map(function(q){if(q.type==="group"){var Z=q.data,pe=q.options,fe=q.index,ee="".concat(i.getElementId("group"),"-").concat(fe),oe="".concat(ee,"-heading");return se(o,W({},d,{key:ee,data:Z,options:pe,Heading:s,headingProps:{id:oe,data:q.data},label:i.formatGroupLabel(q.data)}),q.options.map(function(U){return k(U,"".concat(fe,"-").concat(U.index))}))}else if(q.type==="option")return k(q,"".concat(q.index))});else if(E){var N=g({inputValue:x});if(N===null)return null;T=se(f,d,N)}else{var M=B({inputValue:x});if(M===null)return null;T=se(p,d,M)}var D={minMenuHeight:w,maxMenuHeight:C,menuPlacement:S,menuPosition:A,menuShouldScrollIntoView:F},V=se(EI,W({},d,D),function(q){var Z=q.ref,pe=q.placerProps,fe=pe.placement,ee=pe.maxHeight;return se(l,W({},d,D,{innerRef:Z,innerProps:{onMouseDown:i.onMenuMouseDown,onMouseMove:i.onMenuMouseMove,id:i.getElementId("listbox")},isLoading:E,placement:fe}),se(cM,{captureEnabled:v,onTopArrive:j,onBottomArrive:L,lockEnabled:P},function(oe){return se(u,W({},d,{innerRef:function(X){i.getMenuListRef(X),oe(X)},isLoading:E,maxHeight:ee,focusedOption:m}),T)}))});return _||A==="fixed"?se(c,W({},d,{appendTo:_,controlElement:this.controlRef,menuPlacement:S,menuPosition:A}),V):V}},{key:"renderFormField",value:function(){var i=this,r=this.props,o=r.delimiter,s=r.isDisabled,l=r.isMulti,u=r.name,c=r.required,f=this.state.selectValue;if(c&&!this.hasValue()&&!s)return se(dM,{name:u,onFocus:this.onValueInputFocus});if(!(!u||s))if(l)if(o){var p=f.map(function(m){return i.getOptionValue(m)}).join(o);return se("input",{name:u,type:"hidden",value:p})}else{var b=f.length>0?f.map(function(m,h){return se("input",{key:"i-".concat(h),name:u,type:"hidden",value:i.getOptionValue(m)})}):se("input",{name:u,type:"hidden",value:""});return se("div",null,b)}else{var d=f[0]?this.getOptionValue(f[0]):"";return se("input",{name:u,type:"hidden",value:d})}}},{key:"renderLiveRegion",value:function(){var i=this.commonProps,r=this.state,o=r.ariaSelection,s=r.focusedOption,l=r.focusedValue,u=r.isFocused,c=r.selectValue,f=this.getFocusableOptions();return se(YL,W({},i,{id:this.getElementId("live-region"),ariaSelection:o,focusedOption:s,focusedValue:l,isFocused:u,selectValue:c,focusableOptions:f}))}},{key:"render",value:function(){var i=this.getComponents(),r=i.Control,o=i.IndicatorsContainer,s=i.SelectContainer,l=i.ValueContainer,u=this.props,c=u.className,f=u.id,p=u.isDisabled,b=u.menuIsOpen,d=this.state.isFocused,m=this.commonProps=this.getCommonProps();return se(s,W({},m,{className:c,innerProps:{id:f,onKeyDown:this.onKeyDown},isDisabled:p,isFocused:d}),this.renderLiveRegion(),se(r,W({},m,{innerRef:this.getControlRef,innerProps:{onMouseDown:this.onControlMouseDown,onTouchEnd:this.onControlTouchEnd},isDisabled:p,isFocused:d,menuIsOpen:b}),se(l,W({},m,{isDisabled:p}),this.renderPlaceholderOrValue(),this.renderInput()),se(o,W({},m,{isDisabled:p}),this.renderClearIndicator(),this.renderLoadingIndicator(),this.renderIndicatorSeparator(),this.renderDropdownIndicator())),this.renderMenu(),this.renderFormField())}}],[{key:"getDerivedStateFromProps",value:function(i,r){var o=r.prevProps,s=r.clearFocusValueOnUpdate,l=r.inputIsHiddenAfterUpdate,u=r.ariaSelection,c=r.isFocused,f=r.prevWasFocused,p=i.options,b=i.value,d=i.menuIsOpen,m=i.inputValue,h=i.isMulti,v=om(b),x={};if(o&&(b!==o.value||p!==o.options||d!==o.menuIsOpen||m!==o.inputValue)){var E=d?CM(i,v):[],g=s?AM(r,v):null,w=IM(r,E);x={selectValue:v,focusedOption:w,focusedValue:g,clearFocusValueOnUpdate:!1}}var C=l!=null&&i!==o?{inputIsHidden:l,inputIsHiddenAfterUpdate:void 0}:{},y=u,S=c&&f;return c&&!S&&(y={value:Vr(h,v,v[0]||null),options:v,action:"initial-input-focus"},S=!f),(u==null?void 0:u.action)==="initial-input-focus"&&(y=null),ae(ae(ae({},x),C),{},{prevProps:i,ariaSelection:y,prevWasFocused:S})}}]),a}(Ct);dm.defaultProps=SM;var TM=["defaultInputValue","defaultMenuIsOpen","defaultValue","inputValue","menuIsOpen","onChange","onInputChange","onMenuClose","onMenuOpen","value"];function S_(e){var t=e.defaultInputValue,a=t===void 0?"":t,n=e.defaultMenuIsOpen,i=n===void 0?!1:n,r=e.defaultValue,o=r===void 0?null:r,s=e.inputValue,l=e.menuIsOpen,u=e.onChange,c=e.onInputChange,f=e.onMenuClose,p=e.onMenuOpen,b=e.value,d=Wt(e,TM),m=Re(s!==void 0?s:a),h=Le(m,2),v=h[0],x=h[1],E=Re(l!==void 0?l:i),g=Le(E,2),w=g[0],C=g[1],y=Re(b!==void 0?b:o),S=Le(y,2),A=S[0],_=S[1],P=Fe(function(N,M){typeof u=="function"&&u(N,M),_(N)},[u]),F=Fe(function(N,M){var D;typeof c=="function"&&(D=c(N,M)),x(D!==void 0?D:N)},[c]),B=Fe(function(){typeof p=="function"&&p(),C(!0)},[p]),j=Fe(function(){typeof f=="function"&&f(),C(!1)},[f]),L=s!==void 0?s:v,k=l!==void 0?l:w,T=b!==void 0?b:A;return ae(ae({},d),{},{inputValue:L,menuIsOpen:k,onChange:P,onInputChange:F,onMenuClose:j,onMenuOpen:B,value:T})}var kM=["defaultOptions","cacheOptions","loadOptions","options","isLoading","onInputChange","filterOption"];function C_(e){var t=e.defaultOptions,a=t===void 0?!1:t,n=e.cacheOptions,i=n===void 0?!1:n,r=e.loadOptions;e.options;var o=e.isLoading,s=o===void 0?!1:o,l=e.onInputChange,u=e.filterOption,c=u===void 0?null:u,f=Wt(e,kM),p=f.inputValue,b=ot(void 0),d=ot(!1),m=Re(Array.isArray(a)?a:void 0),h=Le(m,2),v=h[0],x=h[1],E=Re(typeof p!="undefined"?p:""),g=Le(E,2),w=g[0],C=g[1],y=Re(a===!0),S=Le(y,2),A=S[0],_=S[1],P=Re(void 0),F=Le(P,2),B=F[0],j=F[1],L=Re([]),k=Le(L,2),T=k[0],N=k[1],M=Re(!1),D=Le(M,2),V=D[0],q=D[1],Z=Re({}),pe=Le(Z,2),fe=pe[0],ee=pe[1],oe=Re(void 0),U=Le(oe,2),X=U[0],$=U[1],he=Re(void 0),qe=Le(he,2),ze=qe[0],ht=qe[1];i!==ze&&(ee({}),ht(i)),a!==X&&(x(Array.isArray(a)?a:void 0),$(a)),ha(function(){return d.current=!0,function(){d.current=!1}},[]);var R=Fe(function(H,ne){if(!r)return ne();var K=r(H,ne);K&&typeof K.then=="function"&&K.then(ne,function(){return ne()})},[r]);ha(function(){a===!0&&R(w,function(H){d.current&&(x(H||[]),_(!!b.current))})},[]);var z=Fe(function(H,ne){var K=dI(H,ne,l);if(!K){b.current=void 0,C(""),j(""),N([]),_(!1),q(!1);return}if(i&&fe[K])C(K),j(K),N(fe[K]),_(!1),q(!1);else{var Ae=b.current={};C(K),_(!0),q(!B),R(K,function(ue){d&&Ae===b.current&&(b.current=void 0,_(!1),j(K),N(ue||[]),q(!1),ee(ue?ae(ae({},fe),{},jt({},K,ue)):fe))})}},[i,R,B,fe,l]),J=V?[]:w&&B?T:v||[];return ae(ae({},f),{},{options:J,isLoading:A||s,onInputChange:z,filterOption:c})}var FM=Nn(function(e,t){var a=C_(e),n=S_(a);return se(dm,W({ref:t},n))}),Jr=FM;function Aa(e){return Array.isArray?Array.isArray(e):O_(e)==="[object Array]"}var PM=1/0;function OM(e){if(typeof e=="string")return e;let t=e+"";return t=="0"&&1/e==-PM?"-0":t}function RM(e){return e==null?"":OM(e)}function da(e){return typeof e=="string"}function F_(e){return typeof e=="number"}function BM(e){return e===!0||e===!1||NM(e)&&O_(e)=="[object Boolean]"}function P_(e){return typeof e=="object"}function NM(e){return P_(e)&&e!==null}function Bt(e){return e!=null}function fm(e){return!e.trim().length}function O_(e){return e==null?e===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}var jM="Incorrect 'index' type",LM=e=>`Invalid value for key ${e}`,MM=e=>`Pattern length exceeds max of ${e}.`,DM=e=>`Missing ${e} property in key`,zM=e=>`Property 'weight' in key '${e}' must be a positive integer`,A_=Object.prototype.hasOwnProperty,mm=class{constructor(t){this._keys=[],this._keyMap={};let a=0;t.forEach(n=>{let i=R_(n);a+=i.weight,this._keys.push(i),this._keyMap[i.id]=i,a+=i.weight}),this._keys.forEach(n=>{n.weight/=a})}get(t){return this._keyMap[t]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}};function R_(e){let t=null,a=null,n=null,i=1,r=null;if(da(e)||Aa(e))n=e,t=I_(e),a=hm(e);else{if(!A_.call(e,"name"))throw new Error(DM("name"));let o=e.name;if(n=o,A_.call(e,"weight")&&(i=e.weight,i<=0))throw new Error(zM(o));t=I_(o),a=hm(o),r=e.getFn}return{path:t,id:a,weight:i,src:n,getFn:r}}function I_(e){return Aa(e)?e:e.split(".")}function hm(e){return Aa(e)?e.join("."):e}function GM(e,t){let a=[],n=!1,i=(r,o,s)=>{if(Bt(r))if(!o[s])a.push(r);else{let l=o[s],u=r[l];if(!Bt(u))return;if(s===o.length-1&&(da(u)||F_(u)||BM(u)))a.push(RM(u));else if(Aa(u)){n=!0;for(let c=0,f=u.length;ce.score===t.score?e.idx{this._keysMap[a.id]=n})}create(){this.isCreated||!this.docs.length||(this.isCreated=!0,da(this.docs[0])?this.docs.forEach((t,a)=>{this._addString(t,a)}):this.docs.forEach((t,a)=>{this._addObject(t,a)}),this.norm.clear())}add(t){let a=this.size();da(t)?this._addString(t,a):this._addObject(t,a)}removeAt(t){this.records.splice(t,1);for(let a=t,n=this.size();a{let o=i.getFn?i.getFn(t):this.getFn(t,i.path);if(Bt(o)){if(Aa(o)){let s=[],l=[{nestedArrIndex:-1,value:o}];for(;l.length;){let{nestedArrIndex:u,value:c}=l.pop();if(Bt(c))if(da(c)&&!fm(c)){let f={v:c,i:u,n:this.norm.get(c)};s.push(f)}else Aa(c)&&c.forEach((f,p)=>{l.push({nestedArrIndex:p,value:f})})}n.$[r]=s}else if(da(o)&&!fm(o)){let s={v:o,n:this.norm.get(o)};n.$[r]=s}}}),this.records.push(n)}toJSON(){return{keys:this.keys,records:this.records}}};function B_(e,t,{getFn:a=le.getFn,fieldNormWeight:n=le.fieldNormWeight}={}){let i=new Zr({getFn:a,fieldNormWeight:n});return i.setKeys(e.map(R_)),i.setSources(t),i.create(),i}function qM(e,{getFn:t=le.getFn,fieldNormWeight:a=le.fieldNormWeight}={}){let{keys:n,records:i}=e,r=new Zr({getFn:t,fieldNormWeight:a});return r.setKeys(n),r.setIndexRecords(i),r}function Ic(e,{errors:t=0,currentLocation:a=0,expectedLocation:n=0,distance:i=le.distance,ignoreLocation:r=le.ignoreLocation}={}){let o=t/e.length;if(r)return o;let s=Math.abs(n-a);return i?o+s/i:s?1:o}function XM(e=[],t=le.minMatchCharLength){let a=[],n=-1,i=-1,r=0;for(let o=e.length;r=t&&a.push([n,i]),n=-1)}return e[r-1]&&r-n>=t&&a.push([n,r-1]),a}var wn=32;function $M(e,t,a,{location:n=le.location,distance:i=le.distance,threshold:r=le.threshold,findAllMatches:o=le.findAllMatches,minMatchCharLength:s=le.minMatchCharLength,includeMatches:l=le.includeMatches,ignoreLocation:u=le.ignoreLocation}={}){if(t.length>wn)throw new Error(MM(wn));let c=t.length,f=e.length,p=Math.max(0,Math.min(n,f)),b=r,d=p,m=s>1||l,h=m?Array(f):[],v;for(;(v=e.indexOf(t,d))>-1;){let y=Ic(t,{currentLocation:v,expectedLocation:p,distance:i,ignoreLocation:u});if(b=Math.min(y,b),d=v+c,m){let S=0;for(;S=_;j-=1){let L=j-1,k=a[e.charAt(L)];if(m&&(h[L]=+!!k),F[j]=(F[j+1]<<1|1)&k,y&&(F[j]|=(x[j+1]|x[j])<<1|1|x[j+1]),F[j]&w&&(E=Ic(t,{errors:y,currentLocation:L,expectedLocation:p,distance:i,ignoreLocation:u}),E<=b)){if(b=E,d=L,d<=p)break;_=Math.max(1,2*p-d)}}if(Ic(t,{errors:y+1,currentLocation:p,expectedLocation:p,distance:i,ignoreLocation:u})>b)break;x=F}let C={isMatch:d>=0,score:Math.max(.001,E)};if(m){let y=XM(h,s);y.length?l&&(C.indices=y):C.isMatch=!1}return C}function YM(e){let t={};for(let a=0,n=e.length;a{this.chunks.push({pattern:p,alphabet:YM(p),startIndex:b})},f=this.pattern.length;if(f>wn){let p=0,b=f%wn,d=f-b;for(;p{let{isMatch:v,score:x,indices:E}=$M(t,d,m,{location:i+h,distance:r,threshold:o,findAllMatches:s,minMatchCharLength:l,includeMatches:n,ignoreLocation:u});v&&(p=!0),f+=x,v&&E&&(c=[...c,...E])});let b={isMatch:p,score:p?f/this.chunks.length:1};return p&&n&&(b.indices=c),b}},fa=class{constructor(t){this.pattern=t}static isMultiMatch(t){return __(t,this.multiRegex)}static isSingleMatch(t){return __(t,this.singleRegex)}search(){}};function __(e,t){let a=e.match(t);return a?a[1]:null}var vm=class extends fa{constructor(t){super(t)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(t){let a=t===this.pattern;return{isMatch:a,score:a?0:1,indices:[0,this.pattern.length-1]}}},bm=class extends fa{constructor(t){super(t)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(t){let n=t.indexOf(this.pattern)===-1;return{isMatch:n,score:n?0:1,indices:[0,t.length-1]}}},gm=class extends fa{constructor(t){super(t)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(t){let a=t.startsWith(this.pattern);return{isMatch:a,score:a?0:1,indices:[0,this.pattern.length-1]}}},xm=class extends fa{constructor(t){super(t)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(t){let a=!t.startsWith(this.pattern);return{isMatch:a,score:a?0:1,indices:[0,t.length-1]}}},ym=class extends fa{constructor(t){super(t)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(t){let a=t.endsWith(this.pattern);return{isMatch:a,score:a?0:1,indices:[t.length-this.pattern.length,t.length-1]}}},wm=class extends fa{constructor(t){super(t)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(t){let a=!t.endsWith(this.pattern);return{isMatch:a,score:a?0:1,indices:[0,t.length-1]}}},Tc=class extends fa{constructor(t,{location:a=le.location,threshold:n=le.threshold,distance:i=le.distance,includeMatches:r=le.includeMatches,findAllMatches:o=le.findAllMatches,minMatchCharLength:s=le.minMatchCharLength,isCaseSensitive:l=le.isCaseSensitive,ignoreLocation:u=le.ignoreLocation}={}){super(t),this._bitapSearch=new _c(t,{location:a,threshold:n,distance:i,includeMatches:r,findAllMatches:o,minMatchCharLength:s,isCaseSensitive:l,ignoreLocation:u})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(t){return this._bitapSearch.searchIn(t)}},kc=class extends fa{constructor(t){super(t)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(t){let a=0,n,i=[],r=this.pattern.length;for(;(n=t.indexOf(this.pattern,a))>-1;)a=n+r,i.push([n,a-1]);let o=!!i.length;return{isMatch:o,score:o?0:1,indices:i}}},Em=[vm,kc,gm,xm,wm,ym,bm,Tc],T_=Em.length,KM=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,QM="|";function eD(e,t={}){return e.split(QM).map(a=>{let n=a.trim().split(KM).filter(r=>r&&!!r.trim()),i=[];for(let r=0,o=n.length;r!!(e[Fc.AND]||e[Fc.OR]),nD=e=>!!e[Im.PATH],iD=e=>!Aa(e)&&P_(e)&&!_m(e),k_=e=>({[Fc.AND]:Object.keys(e).map(t=>({[t]:e[t]}))});function N_(e,t,{auto:a=!0}={}){let n=i=>{let r=Object.keys(i),o=nD(i);if(!o&&r.length>1&&!_m(i))return n(k_(i));if(iD(i)){let l=o?i[Im.PATH]:r[0],u=o?i[Im.PATTERN]:i[l];if(!da(u))throw new Error(LM(l));let c={keyId:hm(l),pattern:u};return a&&(c.searcher=Am(u,t)),c}let s={children:[],operator:r[0]};return r.forEach(l=>{let u=i[l];Aa(u)&&u.forEach(c=>{s.children.push(n(c))})}),s};return _m(e)||(e=k_(e)),n(e)}function rD(e,{ignoreFieldNorm:t=le.ignoreFieldNorm}){e.forEach(a=>{let n=1;a.matches.forEach(({key:i,norm:r,score:o})=>{let s=i?i.weight:null;n*=Math.pow(o===0&&s?Number.EPSILON:o,(s||1)*(t?1:r))}),a.score=n})}function oD(e,t){let a=e.matches;t.matches=[],Bt(a)&&a.forEach(n=>{if(!Bt(n.indices)||!n.indices.length)return;let{indices:i,value:r}=n,o={indices:i,value:r};n.key&&(o.key=n.key.src),n.idx>-1&&(o.refIndex=n.idx),t.matches.push(o)})}function sD(e,t){t.score=e.score}function lD(e,t,{includeMatches:a=le.includeMatches,includeScore:n=le.includeScore}={}){let i=[];return a&&i.push(oD),n&&i.push(sD),e.map(r=>{let{idx:o}=r,s={item:t[o],refIndex:o};return i.length&&i.forEach(l=>{l(r,s)}),s})}var qt=class{constructor(t,a={},n){this.options={...le,...a},this.options.useExtendedSearch,this._keyStore=new mm(this.options.keys),this.setCollection(t,n)}setCollection(t,a){if(this._docs=t,a&&!(a instanceof Zr))throw new Error(jM);this._myIndex=a||B_(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(t){Bt(t)&&(this._docs.push(t),this._myIndex.add(t))}remove(t=()=>!1){let a=[];for(let n=0,i=this._docs.length;n-1&&(l=l.slice(0,a)),lD(l,this._docs,{includeMatches:n,includeScore:i})}_searchStringList(t){let a=Am(t,this.options),{records:n}=this._myIndex,i=[];return n.forEach(({v:r,i:o,n:s})=>{if(!Bt(r))return;let{isMatch:l,score:u,indices:c}=a.searchIn(r);l&&i.push({item:r,idx:o,matches:[{score:u,value:r,norm:s,indices:c}]})}),i}_searchLogical(t){let a=N_(t,this.options),n=(s,l,u)=>{if(!s.children){let{keyId:f,searcher:p}=s,b=this._findMatches({key:this._keyStore.get(f),value:this._myIndex.getValueForItemAtKeyId(l,f),searcher:p});return b&&b.length?[{idx:u,item:l,matches:b}]:[]}let c=[];for(let f=0,p=s.children.length;f{if(Bt(s)){let u=n(a,s,l);u.length&&(r[l]||(r[l]={idx:l,item:s,matches:[]},o.push(r[l])),u.forEach(({matches:c})=>{r[l].matches.push(...c)}))}}),o}_searchObjectList(t){let a=Am(t,this.options),{keys:n,records:i}=this._myIndex,r=[];return i.forEach(({$:o,i:s})=>{if(!Bt(o))return;let l=[];n.forEach((u,c)=>{l.push(...this._findMatches({key:u,value:o[c],searcher:a}))}),l.length&&r.push({idx:s,item:o,matches:l})}),r}_findMatches({key:t,value:a,searcher:n}){if(!Bt(a))return[];let i=[];if(Aa(a))a.forEach(({v:r,i:o,n:s})=>{if(!Bt(r))return;let{isMatch:l,score:u,indices:c}=n.searchIn(r);l&&i.push({score:u,key:t,value:r,idx:o,norm:s,indices:c})});else{let{v:r,n:o}=a,{isMatch:s,score:l,indices:u}=n.searchIn(r);s&&i.push({score:l,key:t,value:r,norm:o,indices:u})}return i}};qt.version="6.6.2";qt.createIndex=B_;qt.parseIndex=qM;qt.config=le;qt.parseQuery=N_;aD(Sm);var qr=[{value:"academy-of-management-review",label:"Academy of Management Review"},{value:"accident-analysis-and-prevention",label:"Accident Analysis and Prevention"},{value:"aci-materials-journal",label:"ACI Materials Journal"},{value:"acm-sig-proceedings-long-author-list",label:'ACM SIG Proceedings ("et al." for 15+ authors)'},{value:"acm-sig-proceedings",label:'ACM SIG Proceedings ("et al." for 3+ authors)'},{value:"acm-sigchi-proceedings-extended-abstract-format",label:"ACM SIGCHI Proceedings - Extended Abstract Format"},{value:"acm-sigchi-proceedings",label:"ACM SIGCHI Proceedings (2016)"},{value:"acm-siggraph",label:"ACM SIGGRAPH"},{value:"acme-an-international-journal-for-critical-geographies",label:"ACME: An International Journal for Critical Geographies"},{value:"acta-amazonica",label:"Acta Amazonica"},{value:"acta-anaesthesiologica-scandinavica",label:"Acta Anaesthesiologica Scandinavica"},{value:"acta-anaesthesiologica-taiwanica",label:"Acta Anaesthesiologica Taiwanica"},{value:"acta-botanica-croatica",label:"Acta Botanica Croatica"},{value:"acta-chiropterologica",label:"Acta Chiropterologica"},{value:"acta-chirurgiae-orthopaedicae-et-traumatologiae-cechoslovaca",label:"Acta chirurgiae orthopaedicae et traumatologiae \u010Cechoslovaca"},{value:"acta-hydrotechnica",label:"Acta hydrotechnica"},{value:"acta-ichthyologica-et-piscatoria",label:"Acta Ichthyologica et Piscatoria"},{value:"acta-medica-peruana",label:"Acta M\xE9dica Peruana"},{value:"acta-naturae",label:"Acta Naturae"},{value:"acta-neurobiologiae-experimentalis",label:"Acta Neurobiologiae Experimentalis"},{value:"acta-neurochirurgica",label:"Acta Neurochirurgica"},{value:"acta-ophthalmologica",label:"Acta Ophthalmologica"},{value:"acta-ornithologica",label:"Acta Ornithologica"},{value:"acta-orthopaedica-belgica",label:"Acta Orthop\xE6dica Belgica"},{value:"acta-orthopaedica",label:"Acta Orthopaedica"},{value:"acta-paediatrica",label:"Acta Paediatrica"},{value:"acta-palaeontologica-polonica",label:"Acta Palaeontologica Polonica"},{value:"acta-pharmaceutica-sinica-b",label:"Acta Pharmaceutica Sinica B"},{value:"acta-pharmaceutica",label:"Acta Pharmaceutica"},{value:"acta-philosophica",label:"Acta Philosophica"},{value:"acta-physica-sinica",label:"Acta Physica Sinica (\u7269\u7406\u5B66\u62A5)"},{value:"acta-physiologica",label:"Acta Physiologica"},{value:"acta-polytechnica",label:"Acta Polytechnica"},{value:"acta-radiologica",label:"Acta Radiologica"},{value:"acta-scientiae-veterinariae",label:"Acta Scientiae Veterinariae"},{value:"acta-societatis-botanicorum-poloniae",label:"Acta Societatis Botanicorum Poloniae"},{value:"acta-universitatis-agriculturae-et-silviculturae-mendelianae-brunensis",label:"Acta Universitatis Agriculturae et Silviculturae Mendelianae Brunensis"},{value:"acta-universitatis-agriculturae-sueciae",label:"Acta Universitatis Agriculturae Sueciae (Swedish University of Agricultural Sciences)"},{value:"acta-zoologica-academiae-scientiarum-hungaricae",label:"Acta Zoologica Academiae Scientiarum Hungaricae"},{value:"administrative-science-quarterly",label:"Administrative Science Quarterly"},{value:"advanced-engineering-materials",label:"Advanced Engineering Materials"},{value:"advanced-functional-materials",label:"Advanced Functional Materials"},{value:"advanced-healthcare-materials",label:"Advanced Healthcare Materials"},{value:"advanced-materials",label:"Advanced Materials"},{value:"advanced-optical-materials",label:"Advanced Optical Materials"},{value:"advanced-pharmaceutical-bulletin",label:"Advanced Pharmaceutical Bulletin"},{value:"advances-in-alzheimers-disease",label:"Advances in Alzheimer's Disease"},{value:"advances-in-complex-systems",label:"Advances in Complex Systems"},{value:"aerosol-and-air-quality-research",label:"Aerosol and Air Quality Research"},{value:"aerosol-science-and-technology",label:"Aerosol Science and Technology"},{value:"aerospace-medicine-and-human-performance",label:"Aerospace Medicine and Human Performance"},{value:"african-journal-of-marine-science",label:"African Journal of Marine Science"},{value:"african-online-scientific-information-systems-harvard",label:"African Online Scientific Information Systems - Harvard"},{value:"african-online-scientific-information-systems-vancouver",label:"African Online Scientific Information Systems - Vancouver"},{value:"african-zoology",label:"African Zoology"},{value:"afro-asia",label:"Afro-\xC1sia (Portugu\xEAs - Brasil)"},{value:"age-and-ageing",label:"Age and Ageing"},{value:"ageing-and-society",label:"Ageing & Society"},{value:"aging-and-disease",label:"Aging and Disease"},{value:"aging-cell",label:"Aging Cell"},{value:"aging",label:"Aging"},{value:"agora",label:"Agora"},{value:"agriculturae-conspectus-scientificus",label:"Agriculturae Conspectus Scientificus"},{value:"aib-studi",label:"AIB studi (Italiano)"},{value:"aids",label:"AIDS"},{value:"aims-press",label:"AIMS Press"},{value:"aix-marseille-universite-departement-d-etudes-asiatiques",label:"Aix-Marseille Universit\xE9 - D\xE9partement d'\xE9tudes asiatiques (Fran\xE7ais)"},{value:"al-jamiah-journal-of-islamic-studies",label:"Al-Jami'ah - Journal of Islamic Studies"},{value:"alcohol-and-alcoholism",label:"Alcohol and Alcoholism"},{value:"alcoholism-clinical-and-experimental-research",label:"Alcoholism: Clinical and Experimental Research"},{value:"alkoholizmus-a-drogove-zavislosti",label:"Alkoholizmus a drogov\xE9 z\xE1vislosti"},{value:"allergology-international",label:"Allergology International"},{value:"allergy",label:"Allergy"},{value:"alternatif-politika",label:"Alternatif Politika"},{value:"alternatives-to-animal-experimentation",label:"Alternatives to Animal Experimentation"},{value:"ambio",label:"AMBIO"},{value:"ameghiniana",label:"Ameghiniana"},{value:"american-anthropological-association",label:"American Anthropological Association"},{value:"american-association-for-cancer-research",label:"American Association for Cancer Research"},{value:"american-association-of-petroleum-geologists",label:"American Association of Petroleum Geologists"},{value:"american-chemical-society",label:"American Chemical Society"},{value:"american-fisheries-society",label:"American Fisheries Society"},{value:"american-geophysical-union",label:"American Geophysical Union"},{value:"american-heart-association",label:"American Heart Association"},{value:"american-institute-of-aeronautics-and-astronautics",label:"American Institute of Aeronautics and Astronautics"},{value:"american-institute-of-physics",label:"American Institute of Physics"},{value:"american-journal-of-agricultural-economics",label:"American Journal of Agricultural Economics"},{value:"american-journal-of-archaeology",label:"American Journal of Archaeology"},{value:"american-journal-of-botany",label:"American Journal of Botany"},{value:"american-journal-of-climate-change",label:"American Journal of Climate Change"},{value:"american-journal-of-clinical-pathology",label:"American Journal of Clinical Pathology"},{value:"american-journal-of-enology-and-viticulture",label:"American Journal of Enology and Viticulture"},{value:"american-journal-of-epidemiology",label:"American Journal of Epidemiology"},{value:"american-journal-of-health-behavior",label:"American Journal of Health Behavior"},{value:"american-journal-of-hypertension",label:"American Journal of Hypertension"},{value:"american-journal-of-medical-genetics",label:"American Journal of Medical Genetics"},{value:"american-journal-of-neuroradiology",label:"American Journal of Neuroradiology"},{value:"american-journal-of-orthodontics-and-dentofacial-orthopedics",label:"American Journal of Orthodontics & Dentofacial Orthopedics"},{value:"american-journal-of-plant-sciences",label:"American Journal of Plant Sciences"},{value:"american-journal-of-political-science",label:"American Journal of Political Science"},{value:"american-journal-of-respiratory-and-critical-care-medicine",label:"American Journal of Respiratory and Critical Care Medicine"},{value:"american-journal-of-science",label:"American Journal of Science"},{value:"american-journal-of-sociology",label:"American Journal of Sociology"},{value:"american-journal-of-sonography",label:"American Journal of Sonography"},{value:"american-journal-of-surgical-pathology",label:"American Journal of Surgical Pathology"},{value:"american-journal-of-translational-research",label:"American Journal of Translational Research"},{value:"american-marketing-association",label:"American Marketing Association"},{value:"american-medical-association-10th-edition",label:"American Medical Association 10th edition"},{value:"american-medical-association-alphabetical",label:"American Medical Association 11th edition (sorted alphabetically)"},{value:"american-medical-association-brackets",label:"American Medical Association 11th edition (brackets)"},{value:"american-medical-association-no-et-al",label:'American Medical Association 11th edition (no "et al.")'},{value:"american-medical-association-no-url",label:"American Medical Association 11th edition (no URL)"},{value:"american-medical-association",label:"American Medical Association 11th edition"},{value:"american-meteorological-society",label:"American Meteorological Society"},{value:"american-mineralogist",label:"American Mineralogist"},{value:"american-nuclear-society",label:"American Nuclear Society"},{value:"american-physical-society-et-al",label:"American Physical Society - et al. (if more than 3 authors)"},{value:"american-physics-society-without-titles",label:"American Physical Society (without titles)"},{value:"american-physics-society",label:"American Physical Society"},{value:"american-physiological-society",label:"American Physiological Society"},{value:"american-phytopathological-society",label:"American Phytopathological Society"},{value:"american-political-science-association",label:"American Political Science Association"},{value:"american-school-of-classical-studies-at-athens",label:"American School of Classical Studies at Athens"},{value:"american-society-for-horticultural-science",label:"American Society for Horticultural Science"},{value:"american-society-for-microbiology",label:"American Society for Microbiology"},{value:"american-society-for-pharmacology-and-experimental-therapeutics",label:"American Society for Pharmacology and Experimental Therapeutics"},{value:"american-society-of-agricultural-and-biological-engineers",label:"American Society of Agricultural and Biological Engineers"},{value:"american-society-of-civil-engineers",label:"American Society of Civil Engineers"},{value:"american-society-of-mechanical-engineers",label:"American Society of Mechanical Engineers"},{value:"american-sociological-association",label:"American Sociological Association 6th edition"},{value:"american-statistical-association",label:"American Statistical Association"},{value:"american-veterinary-medical-association",label:"American Veterinary Medical Association"},{value:"amerindia",label:"Amerindia"},{value:"amphibia-reptilia",label:"Amphibia-Reptilia"},{value:"amsterdam-university-press-academic",label:"Amsterdam University Press - Academic"},{value:"anabases",label:"Anabases"},{value:"anaesthesia",label:"Anaesthesia"},{value:"analytical-sciences",label:"Analytical Sciences"},{value:"anatomical-sciences-education",label:"Anatomical Sciences Education"},{value:"ancilla-iuris",label:"Ancilla Iuris"},{value:"andean-geology",label:"Andean Geology"},{value:"anesthesia-and-analgesia",label:"Anesthesia and Analgesia"},{value:"anesthesiology",label:"Anesthesiology"},{value:"angewandte-chemie",label:"Angewandte Chemie International Edition"},{value:"angiologia",label:"Angiologia (Espa\xF1ol)"},{value:"anglia",label:"Anglia"},{value:"animal-conservation",label:"Animal Conservation"},{value:"animal-migration",label:"Animal Migration"},{value:"animal-welfare",label:"Animal Welfare"},{value:"animal",label:"animal"},{value:"annalen-des-naturhistorischen-museums-in-wien",label:"Annalen des Naturhistorischen Museums in Wien"},{value:"annales-de-demographie-historique",label:"Annales de d\xE9mographie historique"},{value:"annales",label:"Annales. Histoire, Sciences sociales (Fran\xE7ais)"},{value:"annals-of-applied-biology",label:"Annals of Applied Biology"},{value:"annals-of-behavioral-medicine",label:"Annals of Behavioral Medicine"},{value:"annals-of-biomedical-engineering",label:"Annals of Biomedical Engineering"},{value:"annals-of-botany",label:"Annals of Botany"},{value:"annals-of-eye-science",label:"Annals of Eye Science"},{value:"annals-of-joint",label:"Annals of Joint"},{value:"annals-of-laboratory-medicine",label:"Annals of Laboratory Medicine"},{value:"annals-of-neurology",label:"Annals of Neurology"},{value:"annals-of-oncology",label:"Annals of Oncology"},{value:"annals-of-public-and-cooperative-economics",label:"Annals of Public and Cooperative Economics"},{value:"annals-of-surgery",label:"Annals of Surgery"},{value:"annals-of-the-association-of-american-geographers",label:"Annals of the Association of American Geographers"},{value:"annals-of-the-new-york-academy-of-sciences",label:"Annals of the New York Academy of Sciences"},{value:"annals-of-work-exposures-and-health",label:"Annals of Work Exposures and Health"},{value:"annual-review-of-astronomy-and-astrophysics",label:"Annual Review of Astronomy and Astrophysics"},{value:"annual-review-of-linguistics",label:"Annual Review of Linguistics"},{value:"annual-review-of-medicine",label:"Annual Review of Medicine"},{value:"annual-review-of-nuclear-and-particle-science",label:"Annual Review of Nuclear and Particle Science"},{value:"annual-reviews-alphabetical",label:"Annual Reviews (sorted alphabetically)"},{value:"annual-reviews-author-date",label:"Annual Reviews (author-date)"},{value:"annual-reviews-without-titles",label:"Annual Reviews (sorted by order of appearance, without titles)"},{value:"annual-reviews",label:"Annual Reviews (sorted by order of appearance)"},{value:"antarctic-science",label:"Antarctic Science"},{value:"anthropologie-et-societes",label:"Anthropologie et Soci\xE9t\xE9s (Fran\xE7ais)"},{value:"anti-trafficking-review",label:"Anti-Trafficking Review"},{value:"anticancer-research",label:"Anticancer Research"},{value:"antipode",label:"Antipode"},{value:"antiquites-africaines",label:"Antiquit\xE9s africaines"},{value:"antiquity",label:"Antiquity"},{value:"apa-5th-edition",label:"American Psychological Association 5th edition"},{value:"apa-6th-edition-no-ampersand",label:"American Psychological Association 6th edition (no ampersand)"},{value:"apa-6th-edition",label:"American Psychological Association 6th edition"},{value:"apa-annotated-bibliography",label:"American Psychological Association 7th edition (annotated bibliography)"},{value:"apa-cv",label:"American Psychological Association 7th edition (curriculum vitae, sorted by descending date)"},{value:"apa-fr-provost",label:"American Psychological Association 6th edition (Provost) (Fran\xE7ais - Canada)"},{value:"apa-no-ampersand",label:"American Psychological Association 7th edition (no ampersand)"},{value:"apa-no-doi-no-issue",label:"American Psychological Association 6th edition (no DOIs, no issue numbers)"},{value:"apa-no-initials",label:"American Psychological Association 7th edition (no initials)"},{value:"apa-numeric-superscript-brackets",label:"American Psychological Association 7th edition (numeric, brackets)"},{value:"apa-numeric-superscript",label:"American Psychological Association 7th edition (numeric, superscript)"},{value:"apa-old-doi-prefix",label:'American Psychological Association 6th edition ("doi:" DOI prefix)'},{value:"apa-single-spaced",label:"American Psychological Association 7th edition (single-spaced bibliography)"},{value:"apa-tr",label:"American Psychological Association 6th edition (T\xFCrk\xE7e)"},{value:"apa-with-abstract",label:"American Psychological Association 7th edition (with abstract)"},{value:"apa",label:"American Psychological Association 7th edition"},{value:"aporia-the-nursing-journal",label:"Aporia: The Nursing Journal"},{value:"applied-clay-science",label:"Applied Clay Science"},{value:"applied-spectroscopy-reviews",label:"Applied Spectroscopy Reviews"},{value:"applied-spectroscopy",label:"Applied Spectroscopy"},{value:"aquatic-conservation",label:"Aquatic Conservation: Marine and Freshwater Ecosystems"},{value:"aquatic-invasions",label:"Aquatic Invasions"},{value:"aquatic-living-resources",label:"Aquatic Living Resources"},{value:"aquitania",label:"Aquitania (Fran\xE7ais)"},{value:"arachne",label:"Arachne"},{value:"arachnology",label:"Arachnology"},{value:"arbok-hins-islenzka-fornleifafelags",label:"\xC1rb\xF3k Hins \xEDslenzka fornleifaf\xE9lags (\xCDslenska)"},{value:"archaeologia-austriaca",label:"Archaeologia Austriaca"},{value:"archaeometry",label:"Archaeometry"},{value:"archaeonautica",label:"Archaeonautica"},{value:"archeologia-classica",label:"Archeologia Classica (Italiano)"},{value:"archeologicke-rozhledy",label:"Archeologick\xE9 rozhledy"},{value:"archeologie-medievale",label:"Arch\xE9ologie m\xE9di\xE9vale (Fran\xE7ais)"},{value:"archeologies-et-sciences-de-lantiquite",label:"Arch\xE9ologies et Sciences de l'Antiquit\xE9 (Fran\xE7ais)"},{value:"archeosciences",label:"ArcheoSciences (Fran\xE7ais)"},{value:"archiv-fur-die-civilistische-praxis",label:"Archiv f\xFCr die civilistische Praxis (Deutsch)"},{value:"archiv-fur-geschichte-der-philosophie",label:"Archiv f\xFCr Geschichte der Philosophie"},{value:"archives-of-hand-and-microsurgery",label:"Archives of Hand and Microsurgery"},{value:"archives-of-physical-medicine-and-rehabilitation",label:"Archives of Physical Medicine and Rehabilitation"},{value:"archivos-de-bronconeumologia",label:"Archivos de Bronconeumolog\xEDa"},{value:"archivos-de-la-sociedad-espanola-de-oftalmologia",label:"Archivos de la Sociedad Espa\xF1ola de Oftalmolog\xEDa (Espa\xF1ol)"},{value:"archivum-latinitatis-medii-aevi",label:"Archivum Latinitatis Medii Aevi (Fran\xE7ais)"},{value:"arctic-antarctic-and-alpine-research",label:"Arctic, Antarctic, and Alpine Research"},{value:"arctic",label:"Arctic"},{value:"arhiv-za-higijenu-rada-i-toksikologiju",label:"Arhiv za higijenu rada i toksikologiju (Archives of Industrial Hygiene and Toxicology)"},{value:"art-history",label:"Art History"},{value:"art-libraries-society-of-north-america-arlisna-reviews",label:"Art Libraries Society of North America: ARLIS/NA Reviews"},{value:"artery-research",label:"Artery Research"},{value:"arthritis-and-rheumatism",label:"Arthritis & Rheumatism"},{value:"arthropod-systematics-and-phylogeny",label:"Arthropod Systematics & Phylogeny"},{value:"arts-university-bournemouth",label:"Arts University Bournemouth"},{value:"arzneimitteltherapie",label:"Arzneimitteltherapie"},{value:"asa-cssa-sssa",label:"American Society of Agronomy, Crop Science Society of America, Soil Science Society of America"},{value:"asaio-journal",label:"ASAIO Journal (American Society for Artificial Internal Organs)"},{value:"asia-and-the-pacific-policy-studies",label:"Asia & the Pacific Policy Studies"},{value:"asia-pacific-journal-of-human-resources",label:"Asia Pacific Journal of Human Resources"},{value:"asian-journal-of-neurosurgery",label:"Asian Journal of Neurosurgery"},{value:"asian-myrmecology",label:"Asian Myrmecology"},{value:"asian-studies-review",label:"Asian Studies Review"},{value:"associacao-brasileira-de-normas-tecnicas-eceme",label:"Escola de Comando e Estado-Maior do Ex\xE9rcito - ABNT (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-instituto-meira-mattos",label:"Escola de Comando e Estado-Maior do Ex\xE9rcito - Instituto Meira Mattos - ABNT (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-ipea",label:"Instituto de Pesquisa Econ\xF4mica Aplicada - ABNT (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-note",label:"Associa\xE7\xE3o Brasileira de Normas T\xE9cnicas (note, Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-ufmg-face-full",label:"Universidade Federal de Minas Gerais - Faculdade de Ci\xEAncias Econ\xF4micas - ABNT (autoria completa) (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-ufmg-face-initials",label:"Universidade Federal de Minas Gerais - Faculdade de Ci\xEAncias Econ\xF4micas - ABNT (autoria abreviada) (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-ufpr",label:"Universidade Federal do Paran\xE1 - ABNT (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-ufrgs-initials",label:"Universidade Federal do Rio Grande do Sul - ABNT (autoria abreviada) (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-ufrgs-note-initials-with-ibid",label:"Universidade Federal do Rio Grande do Sul - ABNT (autoria abreviada, nota, com Ibid.) (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-ufrgs",label:"Universidade Federal do Rio Grande do Sul - ABNT (autoria completa) (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-ufs",label:"Universidade Federal de Sergipe - ABNT (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-unirio-eipp",label:"Universidade Federal do Estado do Rio de Janeiro - Educa\xE7\xE3o Infantil e Pol\xEDticas P\xFAblicas - ABNT (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas-usp-fmvz",label:"Universidade de S\xE3o Paulo - Faculdade de Medicina Veterin\xE1ria e Zootecnia - ABNT (Portugu\xEAs - Brasil)"},{value:"associacao-brasileira-de-normas-tecnicas",label:"Associa\xE7\xE3o Brasileira de Normas T\xE9cnicas (Portugu\xEAs - Brasil)"},{value:"associacao-nacional-de-pesquisa-e-ensino-em-transportes",label:"ANPET - Congresso de Pesquisa e Ensino em Transportes (Portugu\xEAs - Brasil)"},{value:"association-de-science-regionale-de-langue-francaise",label:"Association de Science R\xE9gionale de Langue Fran\xE7aise (Fran\xE7ais)"},{value:"association-for-computational-linguistics",label:"Association for Computational Linguistics - Conference Proceedings"},{value:"association-for-computing-machinery",label:"Association for Computing Machinery"},{value:"atlande",label:"Atlande (author-date, Fran\xE7ais)"},{value:"atlas-of-genetics-and-cytogenetics-in-oncology-and-haematology",label:"Atlas of Genetics and Cytogenetics in Oncology and Haematology"},{value:"ausonius-editions",label:"Ausonius \xC9ditions (Fran\xE7ais)"},{value:"austral-ecology",label:"Austral Ecology"},{value:"austral-entomology",label:"Austral Entomology"},{value:"australian-archaeology",label:"Australian Archaeology"},{value:"australian-critical-care",label:"Australian Critical Care"},{value:"australian-dental-journal",label:"Australian Dental Journal"},{value:"australian-guide-to-legal-citation-3rd-edition",label:"Australian Guide to Legal Citation 3rd edition"},{value:"australian-guide-to-legal-citation",label:"Australian Guide to Legal Citation 4th edition"},{value:"australian-historical-studies",label:"Australian Historical Studies"},{value:"australian-journal-of-earth-sciences",label:"Australian Journal of Earth Sciences"},{value:"australian-journal-of-grape-and-wine-research",label:"Australian Journal of Grape and Wine Research"},{value:"australian-road-research-board",label:"Australian Road Research Board"},{value:"australian-veterinary-journal",label:"Australian Veterinary Journal"},{value:"austrian-journal-of-development-studies",label:"Austrian Journal of Development Studies (Journal f\xFCr Entwicklungspolitik)"},{value:"austrian-legal",label:"Austrian Legal (Deutsch - \xD6sterreich)"},{value:"avian-conservation-and-ecology",label:"Avian Conservation and Ecology"},{value:"avian-diseases",label:"Avian Diseases"},{value:"avian-pathology",label:"Avian Pathology"},{value:"ayer",label:"Ayer (Espa\xF1ol)"},{value:"azr-abkurzungs-und-zitierregeln-der-osterreichischen-rechtssprache-und-europarechtlicher-rechtsquellen",label:"AZR - Abk\xFCrzungs- und Zitierregeln der \xF6sterreichischen Rechtssprache und europarechtlicher Rechtsquellen (Deutsch - \xD6sterreich)"},{value:"babes-bolyai-university-faculty-of-orthodox-theology",label:"Babes-Bolyai University - Faculty of Orthodox Theology (no ibid., Rom\xE2n\u0103)"},{value:"babesch-annual-papers-on-mediterranean-archaeology",label:"BABESCH - Annual Papers on Mediterranean Archaeology"},{value:"baghdad-science-journal",label:"Baghdad Science Journal"},{value:"baishideng-publishing-group",label:"Baishideng Publishing Group"},{value:"bakhtiniana-journal-of-discourse-studies",label:"Bakhtiniana: Journal of Discourse Studies"},{value:"begell-house-apa",label:"Begell House - APA"},{value:"begell-house-chicago-author-date",label:"Begell House - Chicago Manual of Style"},{value:"behaviour",label:"Behaviour"},{value:"beilstein-journal-of-organic-chemistry",label:"Beilstein Journal of Organic Chemistry"},{value:"beltz-padagogik",label:"Beltz - P\xE4dagogik (Deutsch)"},{value:"berghahn-books-author-date-en-gb",label:"Berghahn Books (author-date, English - UK)"},{value:"berlin-school-of-economics-and-law-international-marketing-management",label:"Berlin School of Economics and Law - International Marketing Management"},{value:"bern-university-of-applied-sciences-school-of-agricultural-forest-and-food-sciences-hafl",label:"Bern University of Applied Sciences - School of Agricultural, Forest and Food Sciences HAFL (author-date)"},{value:"betriebswirtschaftliche-forschung-und-praxis",label:"Betriebswirtschaftliche Forschung und Praxis (Deutsch)"},{value:"biblio-3w",label:"Biblio 3W (Espa\xF1ol)"},{value:"bibliothecae-it",label:"Bibliothecae.it (Italiano)"},{value:"bibliotheque-d-archeologie-mediterraneenne-et-africaine-biama",label:"Biblioth\xE8que d'arch\xE9ologie m\xE9diterran\xE9enne et africaine (BiAMA) (Fran\xE7ais)"},{value:"bibliotheque-universitaire-de-medecine-vancouver",label:"Biblioth\xE8que universitaire de m\xE9decine - Vancouver (Fran\xE7ais)"},{value:"bibtex",label:"BibTeX generic citation style"},{value:"biens-symboliques-symbolic-goods",label:"Biens symboliques / Symbolic Goods"},{value:"bioarchaeology-international",label:"Bioarchaeology International"},{value:"bioarchaeology-of-the-near-east",label:"Bioarchaeology of the Near East"},{value:"biochemical-journal",label:"Biochemical Journal"},{value:"biochemical-society-transactions",label:"Biochemical Society Transactions"},{value:"biochemistry-and-molecular-biology-education",label:"Biochemistry and Molecular Biology Education"},{value:"biochemistry",label:"Biochemistry"},{value:"biochimica-et-biophysica-acta",label:"Biochimica et Biophysica Acta"},{value:"bioelectromagnetics",label:"Bioelectromagnetics"},{value:"bioinformatics",label:"Bioinformatics"},{value:"biologia",label:"Biologia"},{value:"biological-and-pharmaceutical-bulletin",label:"Biological and Pharmaceutical Bulletin"},{value:"biological-journal-of-the-linnean-society",label:"Biological Journal of the Linnean Society"},{value:"biological-psychiatry",label:"Biological Psychiatry"},{value:"biological-reviews",label:"Biological Reviews"},{value:"biology-of-reproduction",label:"Biology of Reproduction"},{value:"biomarkers",label:"Biomarkers"},{value:"biomed-central",label:"BioMed Central"},{value:"biomed-research-international",label:"BioMed Research International"},{value:"biometrics",label:"Biometrics"},{value:"biophysical-journal",label:"Biophysical Journal"},{value:"biophysics-and-physicobiology",label:"Biophysics and Physicobiology"},{value:"biopolymers",label:"Biopolymers"},{value:"bioresources",label:"BioResources"},{value:"bioscience",label:"BioScience"},{value:"biosocieties",label:"BioSocieties"},{value:"biostatistics",label:"Biostatistics"},{value:"biota-neotropica",label:"Biota Neotropica"},{value:"biotechniques",label:"BioTechniques"},{value:"biotechnology-and-bioengineering",label:"Biotechnology and Bioengineering"},{value:"biotropica",label:"Biotropica"},{value:"bitonline",label:"b.i.t.online (note, Deutsch)"},{value:"biuletyn-polskiego-towarzystwa-jezykoznawczego",label:"Biuletyn Polskiego Towarzystwa J\u0119zykoznawczego (Polski)"},{value:"blood",label:"Blood"},{value:"bloomsbury-academic",label:"Bloomsbury Academic"},{value:"bluebook-inline",label:"Bluebook Inline"},{value:"bluebook-law-review",label:"Bluebook Law Review"},{value:"bluebook2",label:"Bluebook Law Review (2)"},{value:"bmj",label:"BMJ"},{value:"body-and-society",label:"Body & Society"},{value:"boletin-de-la-sociedad-geologica-mexicana",label:"Bolet\xEDn de la Sociedad Geol\xF3gica Mexicana (Espa\xF1ol - Mexico)"},{value:"boletin-de-pediatria",label:"Bolet\xEDn de Pediatr\xEDa (Espa\xF1ol)"},{value:"bollettino-d-archeologia-online",label:"Bollettino d'archeologia online (Italiano)"},{value:"boreal-environment-research",label:"Boreal Environment Research"},{value:"bourgogne-franche-comte-nature",label:"Bourgogne-Franche-Comt\xE9 Nature (Fran\xE7ais)"},{value:"brachytherapy",label:"Brachytherapy"},{value:"brain-behavior-and-evolution",label:"Brain, Behavior and Evolution"},{value:"brazilian-journal-of-experimental-design-data-analysis-and-inferential-statistics",label:"Brazilian Journal of Experimental Design, Data Analysis and Inferential Statistics"},{value:"brazilian-journal-of-infectious-diseases",label:"Brazilian Journal of Infectious Diseases"},{value:"brazilian-journal-of-psychiatry",label:"Brazilian Journal of Psychiatry"},{value:"brazilian-journal-of-veterinary-research-and-animal-science",label:"Brazilian Journal of Veterinary Research and Animal Science"},{value:"brazilian-oral-research",label:"Brazilian Oral Research"},{value:"brewingscience",label:"BrewingScience"},{value:"briefings-in-bioinformatics",label:"Briefings in Bioinformatics"},{value:"british-journal-of-anaesthesia",label:"British Journal of Anaesthesia"},{value:"british-journal-of-cancer",label:"British Journal of Cancer"},{value:"british-journal-of-dermatology",label:"British Journal of Dermatology"},{value:"british-journal-of-haematology",label:"British Journal of Haematology"},{value:"british-journal-of-industrial-relations",label:"British Journal of Industrial Relations"},{value:"british-journal-of-pharmacology",label:"British Journal of Pharmacology"},{value:"british-journal-of-political-science",label:"British Journal of Political Science"},{value:"british-journal-of-surgery",label:"British Journal of Surgery"},{value:"budownictwo-i-architektura-pl",label:"Budownictwo i Architektura"},{value:"building-structure",label:"Building Structure (\u4E2D\u6587)"},{value:"buletin-agrohorti",label:"Buletin Agrohorti"},{value:"bulletin-de-correspondance-hellenique",label:"Bulletin de correspondance hell\xE9nique"},{value:"bulletin-de-la-societe-entomologique-de-france",label:"Bulletin de la Soci\xE9t\xE9 Entomologique de France"},{value:"bulletin-de-la-societe-prehistorique-francaise",label:"Bulletin de la Soci\xE9t\xE9 pr\xE9historique fran\xE7aise (Fran\xE7ais)"},{value:"bulletin-du-centre-detudes-medievales-dauxerre",label:"Bulletin du Centre d\u2019\xE9tudes m\xE9di\xE9vales d\u2019Auxerre (Fran\xE7ais)"},{value:"bulletin-of-geosciences",label:"Bulletin of Geosciences"},{value:"bulletin-of-marine-science",label:"Bulletin of Marine Science"},{value:"bulletin-of-the-american-schools-of-oriental-research",label:"Bulletin of the American Schools of Oriental Research"},{value:"bulletin-of-the-seismological-society-of-america",label:"Bulletin of the Seismological Society of America"},{value:"bursa-uludag-universitesi-egitim-bilimleri-enstitusu",label:"Bursa Uluda\u011F \xDCniversitesi - E\u011Fitim Bilimleri Enstit\xFCs\xFC"},{value:"bursa-uludag-universitesi-fen-bilimleri-enstitusu",label:"Bursa Uludag \xDCniversitesi Fen Bilimleri Enstit\xFCs\xFC"},{value:"bursa-uludag-universitesi-saglik-bilimleri-enstitusu",label:"Bursa Uluda\u011F \xDCniversitesi - Sa\u011Fl\u0131k Bilimleri Enstit\xFCs\xFC"},{value:"bursa-uludag-universitesi-sosyal-bilimler-enstitusu-metinici-atif",label:"Bursa Uluda\u011F \xDCniversitesi - Sosyal Bilimler Enstit\xFCs\xFC (metinici atif)"},{value:"bursa-uludag-universitesi-sosyal-bilimler-enstitusu",label:"Bursa Uluda\u011F \xDCniversitesi - Sosyal Bilimler Enstit\xFCs\xFC"},{value:"business-ethics-a-european-review",label:"Business Ethics: A European Review"},{value:"byzantina-symmeikta",label:"BYZANTINA SYMMEIKTA"},{value:"byzantine-and-modern-greek-studies",label:"Byzantine and Modern Greek Studies"},{value:"cahiers-d-ethnomusicologie",label:"Cahiers d'ethnomusicologie (Fran\xE7ais)"},{value:"cahiers-du-centre-gustave-glotz",label:"Cahiers du Centre Gustave-Glotz (Fran\xE7ais)"},{value:"california-agriculture",label:"California Agriculture"},{value:"cambridge-journal-of-economics",label:"Cambridge Journal of Economics"},{value:"cambridge-university-press-author-date",label:"Cambridge University Press (author-date)"},{value:"cambridge-university-press-law-note",label:"Cambridge University Press - Law (note)"},{value:"cambridge-university-press-note",label:"Cambridge University Press (note)"},{value:"cambridge-university-press-numeric",label:"Cambridge University Press (numeric)"},{value:"campus-adventiste-du-saleve-faculte-adventiste-de-theologie",label:"Campus adventiste du Sal\xE8ve - Facult\xE9 adventiste de th\xE9ologie (Fran\xE7ais)"},{value:"canadian-biosystems-engineering",label:"Canadian Biosystems Engineering"},{value:"canadian-geotechnical-journal",label:"Canadian Geotechnical Journal"},{value:"canadian-journal-of-chemistry",label:"Canadian Journal of Chemistry"},{value:"canadian-journal-of-dietetic-practice-and-research",label:"Canadian Journal of Dietetic Practice and Research"},{value:"canadian-journal-of-earth-sciences",label:"Canadian Journal of Earth Sciences"},{value:"canadian-journal-of-economics",label:"Canadian Journal of Economics"},{value:"canadian-journal-of-fisheries-and-aquatic-sciences",label:"Canadian Journal of Fisheries and Aquatic Sciences"},{value:"canadian-journal-of-physics",label:"Canadian Journal of Physics"},{value:"canadian-journal-of-public-health",label:"Canadian Journal of Public Health"},{value:"canadian-journal-of-soil-science",label:"Canadian Journal of Soil Science"},{value:"canadian-public-policy",label:"Canadian Public Policy"},{value:"cancer-biomarkers",label:"Cancer Biomarkers"},{value:"cancer-drug-resistance",label:"Cancer Drug Resistance"},{value:"cancer-translational-medicine",label:"Cancer Translational Medicine"},{value:"carcinogenesis",label:"Carcinogenesis"},{value:"cardiff-university-harvard",label:"Cardiff University - Harvard"},{value:"cardiff-university-vancouver",label:"Cardiff University - Vancouver"},{value:"cardiocore",label:"Cardiocore (Espa\xF1ol)"},{value:"cath-lab-digest",label:"Cath Lab Digest"},{value:"catholic-biblical-association",label:"Catholic Biblical Association (full note)"},{value:"cell-numeric-superscript",label:"Cell journals (numeric, superscript)"},{value:"cell-numeric",label:"Cell journals (numeric)"},{value:"cell-research",label:"Cell Research"},{value:"cell-structure-and-function",label:"Cell Structure and Function"},{value:"cell-transplantation",label:"Cell Transplantation"},{value:"cell",label:"Cell"},{value:"cellular-and-molecular-bioengineering",label:"Cellular and Molecular Bioengineering"},{value:"cellular-and-molecular-gastroenterology-and-hepatology",label:"Cellular and Molecular Gastroenterology and Hepatology"},{value:"centaurus",label:"Centaurus"},{value:"centre-de-recherche-sur-les-civilisations-de-l-asie-orientale-auteur-date",label:"Centre de recherche sur les civilisations de l\u2019Asie orientale (Fran\xE7ais - Auteur, Date)"},{value:"centre-de-recherche-sur-les-civilisations-de-l-asie-orientale",label:"Centre de recherche sur les civilisations de l'Asie orientale (Fran\xE7ais - note)"},{value:"cerebral-cortex",label:"Cerebral Cortex"},{value:"ceska-zemedelska-univerzita-v-praze-fakulta-agrobiologie-potravinovych-a-prirodnich-zdroju",label:"\u010Cesk\xE1 zem\u011Bd\u011Blsk\xE1 univerzita v Praze - Fakulta agrobiologie, potravinov\xFDch a p\u0159\xEDrodn\xEDch zdroj\u016F"},{value:"changer-d-epoque",label:"Changer d'\xE9poque (Fran\xE7ais)"},{value:"chemical-and-pharmaceutical-bulletin",label:"Chemical and Pharmaceutical Bulletin"},{value:"chemical-biology-and-drug-design",label:"Chemical Biology & Drug Design"},{value:"chemical-engineering-progress",label:"Chemical Engineering Progress"},{value:"chemical-senses",label:"Chemical Senses"},{value:"chemie-ingenieur-technik",label:"Chemie Ingenieur Technik"},{value:"chemistry-education-research-and-practice",label:"Chemistry Education Research and Practice"},{value:"chest",label:"Chest"},{value:"chicago-annotated-bibliography",label:"Chicago Manual of Style 17th edition (note, annotated bibliography)"},{value:"chicago-author-date-16th-edition",label:"Chicago Manual of Style 16th edition (author-date)"},{value:"chicago-author-date-basque",label:"Chicago Manual of Style 16th edition (author-date, Euskara)"},{value:"chicago-author-date-de",label:"Chicago Manual of Style 16th edition (author-date, Deutsch)"},{value:"chicago-author-date-fr",label:"Chicago Manual of Style 17th edition (author-date, Fran\xE7ais)"},{value:"chicago-author-date",label:"Chicago Manual of Style 17th edition (author-date)"},{value:"chicago-figures",label:"Chicago Manual of Style 16th edition (figures and illustrations)"},{value:"chicago-fullnote-bibliography-16th-edition",label:"Chicago Manual of Style 16th edition (full note)"},{value:"chicago-fullnote-bibliography-fr",label:"Chicago Manual of Style 17th edition (full note, Fran\xE7ais)"},{value:"chicago-fullnote-bibliography-short-title-subsequent",label:"Chicago Manual of Style 17th edition (full note, short title subsequent)"},{value:"chicago-fullnote-bibliography-with-ibid",label:"Chicago Manual of Style 17th edition (full note, with Ibid.)"},{value:"chicago-fullnote-bibliography",label:"Chicago Manual of Style 17th edition (full note)"},{value:"chicago-library-list",label:"Chicago Manual of Style 17th edition (library list)"},{value:"chicago-note-bibliography-16th-edition",label:"Chicago Manual of Style 16th edition (note)"},{value:"chicago-note-bibliography-with-ibid",label:"Chicago Manual of Style 17th edition (note, with Ibid.)"},{value:"chicago-note-bibliography",label:"Chicago Manual of Style 17th edition (note)"},{value:"chimia",label:"CHIMIA"},{value:"china-information",label:"China Information"},{value:"china-national-standard-gb-t-7714-2015-author-date",label:"China National Standard GB/T 7714-2015 (author-date, \u4E2D\u6587)"},{value:"china-national-standard-gb-t-7714-2015-note",label:"China National Standard GB/T 7714-2015 (note, \u4E2D\u6587)"},{value:"china-national-standard-gb-t-7714-2015-numeric",label:"China National Standard GB/T 7714-2015 (numeric, \u4E2D\u6587)"},{value:"chinese-gb7714-1987-numeric",label:"China National Standard GB/T 7714-1987 (numeric, \u4E2D\u6587)"},{value:"chinese-gb7714-2005-author-date",label:"China National Standard GB/T 7714-2005 (author-date, \u4E2D\u6587)"},{value:"chinese-gb7714-2005-numeric",label:"China National Standard GB/T 7714-2005 (numeric, \u4E2D\u6587)"},{value:"chinese-journal-of-aeronautics",label:"Chinese Journal of Aeronautics"},{value:"chinese-medical-journal",label:"Chinese Medical Journal"},{value:"chroniques-des-activites-archeologiques-de-l-ecole-francaise-de-rome",label:"Chroniques des activit\xE9s arch\xE9ologiques de l'Ecole fran\xE7aise de Rome"},{value:"chungara-revista-de-antropologia-chilena",label:"Chungara Revista de Antropolog\xEDa Chilena (Espa\xF1ol - Chile)"},{value:"circulation-journal",label:"Circulation Journal"},{value:"circulation",label:"Circulation"},{value:"cirugia-cardiovascular",label:"Cirugia Cardiovascular (Espa\xF1ol)"},{value:"citation-compass-apa-note",label:"Citation Compass (Kildekompasset) - APA (note)"},{value:"citizen-science-theory-and-practice",label:"Citizen Science: Theory and Practice"},{value:"civilta-italiana",label:"Civilt\xE0 Italiana (Italiano)"},{value:"civitas-revista-de-ciencias-sociais",label:"Civitas: Revista de Ci\xEAncias Sociais"},{value:"cladistics",label:"Cladistics"},{value:"clara-architecture-recherche",label:"CLARA Architecture/Recherche (Fran\xE7ais)"},{value:"clay-minerals",label:"Clay Minerals"},{value:"clays-and-clay-minerals",label:"Clays and Clay Minerals"},{value:"climate-change-economics",label:"Climate Change Economics"},{value:"clinica-e-investigacion-en-arteriosclerosis",label:"Cl\xEDnica e Investigaci\xF3n en Arteriosclerosis (Espa\xF1ol)"},{value:"clinical-anatomy",label:"Clinical Anatomy"},{value:"clinical-dysmorphology",label:"Clinical Dysmorphology"},{value:"clinical-gastroenterology-and-hepatology",label:"Clinical Gastroenterology and Hepatology"},{value:"clinical-hemorheology-and-microcirculation",label:"Clinical Hemorheology and Microcirculation"},{value:"clinical-infectious-diseases",label:"Clinical Infectious Diseases"},{value:"clinical-journal-of-sport-medicine",label:"Clinical Journal of Sport Medicine"},{value:"clinical-journal-of-the-american-society-of-nephrology",label:"Clinical Journal of the American Society of Nephrology"},{value:"clinical-management-issues",label:"Clinical Management Issues"},{value:"clinical-nuclear-medicine",label:"Clinical Nuclear Medicine"},{value:"clinical-oral-implants-research",label:"Clinical Oral Implants Research"},{value:"clinical-orthopaedics-and-related-research",label:"Clinical Orthopaedics and Related Research"},{value:"clinical-otolaryngology",label:"Clinical Otolaryngology"},{value:"clinical-pharmacology-and-therapeutics",label:"Clinical Pharmacology & Therapeutics"},{value:"clinical-physiology-and-functional-imaging",label:"Clinical Physiology and Functional Imaging"},{value:"clinical-radiology",label:"Clinical Radiology"},{value:"clinical-spine-surgery",label:"Clinical Spine Surgery"},{value:"clio-medica",label:"Clio Medica"},{value:"cns-and-neurological-disorders-drug-targets",label:"CNS & Neurological Disorders - Drug Targets"},{value:"cns-spectrums",label:"CNS Spectrums"},{value:"cold-spring-harbor-laboratory-press",label:"Cold Spring Harbor Laboratory Press"},{value:"collection-de-l-ecole-francaise-de-rome-full-note",label:"Collection de l'Ecole fran\xE7aise de Rome (full note, Fran\xE7ais)"},{value:"collection-de-l-ecole-francaise-de-rome-note",label:"Collection de l'Ecole fran\xE7aise de Rome (note, Fran\xE7ais)"},{value:"collection-du-centre-jean-berard",label:"Collection du Centre Jean-B\xE9rard (Fran\xE7ais)"},{value:"collections-electroniques-de-l-inha-author-date",label:"Collections \xE9lectroniques de l'INHA (author-date, Fran\xE7ais)"},{value:"collections-electroniques-de-l-inha-full-note",label:"Collections \xE9lectroniques de l'INHA (full note, Fran\xE7ais)"},{value:"college-montmorency",label:"Coll\xE8ge Montmorency (note, Fran\xE7ais - Canada)"},{value:"college-of-naturopathic-medicine",label:"College of Naturopathic Medicine"},{value:"colombian-journal-of-anesthesiology",label:"Colombian Journal of Anesthesiology"},{value:"colorado-state-university-school-of-biomedical-engineering",label:"Colorado State University - School of Biomedical Engineering"},{value:"comision-economica-para-america-latina-y-el-caribe",label:"Comisi\xF3n Econ\xF3mica para Am\xE9rica Latina y el Caribe (Espa\xF1ol)"},{value:"common-market-law-review",label:"Common Market Law Review"},{value:"communication-et-langages",label:"Communication et Langages"},{value:"comparativ",label:"Comparativ"},{value:"comparative-politics",label:"Comparative Politics"},{value:"comparative-population-studies",label:"Comparative Population Studies"},{value:"computer-und-recht",label:"Computer und Recht (Deutsch)"},{value:"conservation-and-society",label:"Conservation & Society"},{value:"conservation-biology",label:"Conservation Biology"},{value:"conservation-letters",label:"Conservation Letters"},{value:"conservation-physiology",label:"Conservation Physiology"},{value:"contemporary-accounting-research",label:"Contemporary Accounting Research"},{value:"continuity-and-change",label:"Continuity and Change"},{value:"contributions-to-the-archaeology-of-egypt-nubia-and-the-levant",label:"Contributions to the Archaeology of Egypt, Nubia and the Levant"},{value:"copeia",label:"Copeia"},{value:"copernicus-publications",label:"Copernicus Publications"},{value:"coral-reefs",label:"Coral Reefs"},{value:"cornea",label:"Cornea"},{value:"corrosion",label:"Corrosion"},{value:"council-of-science-editors-alphabetical",label:"Council of Science Editors, Citation-Name (numeric, sorted alphabetically)"},{value:"council-of-science-editors-author-date",label:"Council of Science Editors, Name-Year (author-date)"},{value:"council-of-science-editors-brackets",label:"Council of Science Editors, Citation-Sequence (numeric, brackets)"},{value:"council-of-science-editors",label:"Council of Science Editors, Citation-Sequence (numeric)"},{value:"cranfield-university-numeric",label:"Cranfield University (numeric)"},{value:"creativity-and-innovation-management",label:"Creativity and Innovation Management"},{value:"critical-care-medicine",label:"Critical Care Medicine"},{value:"critical-reviews-in-plant-sciences",label:"Critical Reviews in Plant Sciences"},{value:"critical-reviews-in-solid-state-and-materials-sciences",label:"Critical Reviews in Solid State and Materials Sciences"},{value:"crop-breeding-and-applied-biotechnology",label:"Crop Breeding and Applied Biotechnology"},{value:"crustaceana",label:"Crustaceana"},{value:"cuadernos-de-filologia-clasica",label:"Cuadernos de Filolog\xEDa Cl\xE1sica. Estudios Griegos e Indoeuropeos (autor-a\xF1o, Espa\xF1ol)"},{value:"cultivos-tropicales",label:"Cultivos Tropicales (Espa\xF1ol)"},{value:"cultural-geographies",label:"cultural geographies"},{value:"cultural-studies-of-science-education",label:"Cultural Studies of Science Education"},{value:"culture-medicine-and-psychiatry",label:"Culture, Medicine, and Psychiatry"},{value:"cureus",label:"Cureus"},{value:"current-alzheimer-research",label:"Current Alzheimer Research"},{value:"current-gene-therapy",label:"Current Gene Therapy"},{value:"current-neurology-aktualnosci-neurologiczne",label:"Current Neurology - Aktualno\u015Bci Neurologiczne"},{value:"current-opinion-in-endocrinology-diabetes-and-obesity",label:"Current Opinion in Endocrinology, Diabetes and Obesity"},{value:"current-opinion",label:"Current Opinion journals"},{value:"current-pharmaceutical-design",label:"Current Pharmaceutical Design"},{value:"current-proteomics",label:"Current Proteomics"},{value:"current-protocols",label:"Current Protocols journals"},{value:"current-science",label:"Current Science"},{value:"current-topics-in-medicinal-chemistry",label:"Current Topics in Medicinal Chemistry"},{value:"currents-in-biblical-research",label:"Currents in Biblical Research"},{value:"cybium",label:"Cybium"},{value:"cytometry",label:"Cytometry"},{value:"data-science-journal",label:"Data Science Journal"},{value:"database",label:"Database"},{value:"de-buck",label:"De Buck (Nederlands)"},{value:"de-montfort-university-harvard",label:"De Montfort University - Harvard"},{value:"decision-sciences",label:"Decision Sciences"},{value:"demographic-research",label:"Demographic Research"},{value:"der-moderne-staat",label:"der moderne staat (Deutsch)"},{value:"dermatology-online-journal",label:"Dermatology Online Journal"},{value:"deutsche-gesellschaft-fur-psychologie",label:"Deutsche Gesellschaft f\xFCr Psychologie 5. Auflage (Deutsch)"},{value:"deutsche-sprache",label:"Deutsche Sprache (Deutsch)"},{value:"deutsches-archaologisches-institut",label:"Deutsches Arch\xE4ologisches Institut"},{value:"deutsches-arzteblatt",label:"Deutsches \xC4rzteblatt"},{value:"developing-world-bioethics",label:"Developing World Bioethics"},{value:"development-and-change",label:"Development and Change"},{value:"development-policy-review",label:"Development Policy Review"},{value:"developmental-medicine-and-child-neurology",label:"Developmental Medicine & Child Neurology"},{value:"developmental-neurobiology",label:"Developmental Neurobiology"},{value:"diabetologia",label:"Diabetologia"},{value:"diagnostico-prenatal",label:"Diagn\xF3stico Prenatal (Espa\xF1ol)"},{value:"dialisis-y-trasplante",label:"Dialisis y Trasplante (Espa\xF1ol)"},{value:"diatom-research",label:"Diatom Research"},{value:"die-bachelorarbeit-samac-et-al-in-text",label:"Die Bachelorarbeit (Samac et al.) (in-text, Deutsch)"},{value:"die-bachelorarbeit-samac-et-al-note",label:"Die Bachelorarbeit (Samac et al.) (note, Deutsch)"},{value:"digital-humanities-im-deutschsprachigen-raum",label:"Digital Humanities im deutschsprachigen Raum (Deutsch)"},{value:"digital-scholarship-in-the-humanities",label:"Digital Scholarship in the Humanities"},{value:"din-1505-2-alphanumeric",label:"DIN 1505-2 (alphanumeric, Deutsch) - standard superseded by ISO-690"},{value:"din-1505-2-numeric-alphabetical",label:"DIN 1505-2 (numeric, sorted alphabetically, Deutsch) - standard superseded by ISO-690"},{value:"din-1505-2-numeric",label:"DIN 1505-2 (numeric, Deutsch) - standard superseded by ISO-690"},{value:"din-1505-2",label:"DIN 1505-2 (author-date, Deutsch) - standard superseded by ISO-690"},{value:"diplo",label:"Diplo"},{value:"disability-and-rehabilitation",label:"Disability and Rehabilitation"},{value:"discovery-medicine",label:"Discovery Medicine"},{value:"dna-research",label:"DNA Research"},{value:"documents-d-archeologie-francaise",label:"Documents d'arch\xE9ologie fran\xE7aise (Fran\xE7ais)"},{value:"donau-universitat-krems-department-fur-e-governance-in-wirthschaft-und-verwaltung",label:"Donau-Universit\xE4t Krems - Department f\xFCr E-Governance in Wirtschaft und Verwaltung (Deutsch - \xD6sterreich)"},{value:"drug-development-research",label:"Drug Development Research"},{value:"drug-testing-and-analysis",label:"Drug Testing and Analysis"},{value:"drugs-of-today",label:"Drugs of Today"},{value:"durban-university-of-technology-harvard",label:"Durban University of Technology - Harvard"},{value:"e3s-web-of-conferences",label:"E3S Web of Conferences"},{value:"ear-and-hearing",label:"Ear and Hearing"},{value:"early-christianity",label:"Early Christianity"},{value:"early-medieval-europe",label:"Early Medieval Europe"},{value:"early-music-history",label:"Early Music History"},{value:"earth-surface-processes-and-landforms",label:"Earth Surface Processes and Landforms"},{value:"earthquake-engineering-and-structural-dynamics",label:"Earthquake Engineering & Structural Dynamics"},{value:"earthquake-spectra",label:"Earthquake Spectra"},{value:"ecclesial-practices",label:"Ecclesial Practices"},{value:"ecole-de-technologie-superieure-apa",label:"\xC9cole de technologie sup\xE9rieure - APA (Fran\xE7ais - Canada)"},{value:"ecole-pratique-des-hautes-etudes-sciences-historiques-et-philologiques",label:"\xC9cole Pratique des Hautes \xC9tudes - Sciences historiques et philologiques (Fran\xE7ais)"},{value:"ecological-entomology",label:"Ecological Entomology"},{value:"ecological-restoration",label:"Ecological Restoration"},{value:"ecology-and-society",label:"Ecology and Society"},{value:"ecology-letters",label:"Ecology Letters"},{value:"ecology-of-freshwater-fish",label:"Ecology of Freshwater Fish"},{value:"ecology",label:"Ecology"},{value:"econometrica",label:"Econometrica"},{value:"economia-y-politica",label:"Econom\xEDa y Pol\xEDtica (Espa\xF1ol - Chile)"},{value:"economic-commission-for-latin-america-and-the-caribbean",label:"Economic Commission for Latin America and the Caribbean"},{value:"economic-geology",label:"Economic Geology"},{value:"economie-et-statistique",label:"\xC9conomie et Statistique (Fran\xE7ais)"},{value:"ecoscience",label:"\xC9coscience"},{value:"ecosistemas",label:"Ecosistemas (Espa\xF1ol)"},{value:"ecosystems",label:"Ecosystems"},{value:"edward-elgar-business-and-social-sciences",label:"Edward Elgar Publishing - Business and Social Sciences"},{value:"effective-altruism-wiki",label:"Effective Altruism Wiki"},{value:"egretta",label:"Egretta (Deutsch - \xD6sterreich)"},{value:"einaudi",label:"Einaudi (Italiano)"},{value:"eksploatacja-i-niezawodnosc",label:"Eksploatacja i Niezawodnosc - Maintenance and Reliability"},{value:"el-profesional-de-la-informacion",label:"Profesional de la informaci\xF3n (Espa\xF1ol)"},{value:"electrophoresis",label:"Electrophoresis"},{value:"elementa",label:"Elementa"},{value:"elife",label:"eLife"},{value:"elsevier-harvard-without-titles",label:"Elsevier - Harvard (without titles)"},{value:"elsevier-harvard",label:"Elsevier - Harvard (with titles)"},{value:"elsevier-harvard2",label:"Elsevier - Harvard 2"},{value:"elsevier-vancouver-author-date",label:"Elsevier - Vancouver (author-date)"},{value:"elsevier-vancouver",label:"Elsevier - Vancouver"},{value:"elsevier-with-titles-alphabetical",label:"Elsevier (numeric, with titles, sorted alphabetically)"},{value:"elsevier-with-titles",label:"Elsevier (numeric, with titles)"},{value:"elsevier-without-titles",label:"Elsevier (numeric, without titles)"},{value:"embnet-journal",label:"EMBnet.journal"},{value:"embo-press",label:"EMBO Press"},{value:"emerald-harvard",label:"Emerald - Harvard"},{value:"emu-austral-ornithology",label:"Emu - Austral Ornithology"},{value:"endocrine-connections",label:"Endocrine Connections"},{value:"endocrine-press",label:"Endocrine Press"},{value:"endoscopia",label:"Endoscopia (Espa\xF1ol)"},{value:"eneuro",label:"eNeuro"},{value:"enfermeria-clinica",label:"Enfermer\xEDa Cl\xEDnica (Espa\xF1ol)"},{value:"enfermeria-intensiva",label:"Enfermer\xEDa Intensiva (Espa\xF1ol)"},{value:"engineered-regeneration",label:"Engineered Regeneration"},{value:"engineering-in-life-sciences",label:"Engineering in Life Sciences"},{value:"engineering-technology-and-applied-science-research",label:"Engineering, Technology & Applied Science Research"},{value:"ens-de-lyon-centre-d-ingenierie-documentaire",label:"ENS de Lyon - Centre d'ing\xE9nierie documentaire (Fran\xE7ais)"},{value:"entecho",label:"ENTECHO (\u010Ce\u0161tina)"},{value:"entomologia-experimentalis-et-applicata",label:"Entomologia Experimentalis et Applicata"},{value:"entomological-society-of-america",label:"Entomological Society of America"},{value:"environment-and-planning",label:"Environment and Planning"},{value:"environment-and-urbanization",label:"Environment and Urbanization"},{value:"environmental-and-engineering-geoscience",label:"Environmental & Engineering Geoscience"},{value:"environmental-chemistry",label:"Environmental Chemistry"},{value:"environmental-conservation",label:"Environmental Conservation"},{value:"environmental-health-perspectives",label:"Environmental Health Perspectives"},{value:"environmental-microbiology",label:"Environmental Microbiology"},{value:"environmental-values",label:"Environmental Values"},{value:"environnement-risques-et-sante",label:"Environnement, Risques & Sant\xE9"},{value:"ephemerides-theologicae-lovanienses",label:"Ephemerides Theologicae Lovanienses"},{value:"epidemiologie-et-sante-animale",label:"\xC9pid\xE9miologie et Sant\xE9 Animale"},{value:"epidemiology-and-infection",label:"Epidemiology & Infection"},{value:"epilepsia",label:"Epilepsia"},{value:"equine-veterinary-education",label:"Equine Veterinary Education"},{value:"equine-veterinary-journal",label:"Equine Veterinary Journal"},{value:"ergo",label:"Ergo"},{value:"ergoscience",label:"ergoscience"},{value:"errata",label:"Errata: Publica\xE7\xE3o sobre processos editoriais (Portugu\xEAs - Brasil)"},{value:"escuela-nacional-de-antropologia-e-historia-author-date",label:"Escuela Nacional de Antropolog\xEDa e Historia (autor-fecha, Espa\xF1ol - M\xE9xico)"},{value:"escuela-nacional-de-antropologia-e-historia-full-note",label:"Escuela Nacional de Antropolog\xEDa e Historia (nota completa, Espa\xF1ol - M\xE9xico)"},{value:"escuela-nacional-de-antropologia-e-historia-short-note",label:"Escuela Nacional de Antropolog\xEDa e Historia (nota corta, Espa\xF1ol - M\xE9xico)"},{value:"estuaries-and-coasts",label:"Estuaries and Coasts"},{value:"estudios-de-cultura-maya",label:"Estudios de Cultura Maya (Espa\xF1ol - M\xE9xico)"},{value:"estudios-de-fonetica-experimental",label:"Estudios de Fon\xE9tica Experimental"},{value:"estudios-hispanicos",label:"Estudios Hisp\xE1nicos (Espa\xF1ol)"},{value:"ethics-book-reviews",label:"Ethics (for book reviews)"},{value:"ethnobiology-and-conservation",label:"Ethnobiology and Conservation"},{value:"ethnobiology-letters",label:"Ethnobiology Letters"},{value:"ethnographiques-org",label:"ethnographiques.org (Fran\xE7ais)"},{value:"ethnologie-francaise",label:"Ethnologie fran\xE7aise (Fran\xE7ais)"},{value:"ethnomusicology",label:"Ethnomusicology"},{value:"etri-journal",label:"ETRI Journal"},{value:"ets-ecole-de-technologie-superieure",label:"\xC9TS - \xC9cole de technologie sup\xE9rieure (Fran\xE7ais - Canada)"},{value:"eurasian-journal-of-medical-investigation",label:"Eurasian Journal of Medical Investigation"},{value:"eurasian-journal-of-medicine-and-oncology",label:"Eurasian Journal of Medicine and Oncology"},{value:"eurointervention",label:"EuroIntervention"},{value:"europace",label:"Europace"},{value:"european-cells-and-materials",label:"European Cells & Materials"},{value:"european-journal-for-philosophy-of-religion",label:"European Journal for Philosophy of Religion"},{value:"european-journal-of-anaesthesiology",label:"European Journal of Anaesthesiology"},{value:"european-journal-of-clinical-microbiology-and-infectious-diseases",label:"European Journal of Clinical Microbiology & Infectious Diseases"},{value:"european-journal-of-emergency-medicine",label:"European Journal of Emergency Medicine"},{value:"european-journal-of-endocrinology",label:"European Journal of Endocrinology"},{value:"european-journal-of-entomology",label:"European Journal of Entomology"},{value:"european-journal-of-human-genetics",label:"European Journal of Human Genetics"},{value:"european-journal-of-immunology",label:"European Journal of Immunology"},{value:"european-journal-of-information-systems",label:"European Journal of Information Systems"},{value:"european-journal-of-international-law",label:"European Journal of International Law"},{value:"european-journal-of-microbiology-and-immunology",label:"European Journal of Microbiology & Immunology"},{value:"european-journal-of-neuroscience",label:"European Journal of Neuroscience"},{value:"european-journal-of-ophthalmology",label:"European Journal of Ophthalmology"},{value:"european-journal-of-paediatric-neurology",label:"European Journal of Paediatric Neurology"},{value:"european-journal-of-pain",label:"European Journal of Pain"},{value:"european-journal-of-political-research",label:"European Journal of Political Research"},{value:"european-journal-of-public-health",label:"European Journal of Public Health"},{value:"european-journal-of-soil-science",label:"European Journal of Soil Science"},{value:"european-journal-of-taxonomy",label:"European Journal of Taxonomy"},{value:"european-journal-of-theology",label:"European Journal of Theology"},{value:"european-journal-of-ultrasound",label:"European Journal of Ultrasound (Ultraschall in der Medizin)"},{value:"european-journal-of-vascular-and-endovascular-surgery",label:"European Journal of Vascular and Endovascular Surgery"},{value:"european-respiratory-journal",label:"European Respiratory Journal"},{value:"european-retail-research",label:"European Retail Research"},{value:"european-review-of-agricultural-economics",label:"European Review of Agricultural Economics"},{value:"european-society-of-cardiology",label:"European Society of Cardiology"},{value:"european-union-interinstitutional-style-guide-author-date",label:"European Union - Interinstitutional Style Guide (author-date)"},{value:"european-union-interinstitutional-style-guide",label:"European Union - Interinstitutional Style Guide (note)"},{value:"eva-berlin-konferenz",label:"EVA Berlin Konferenz (Deutsch)"},{value:"evidence-based-complementary-and-alternative-medicine",label:"Evidence-Based Complementary and Alternative Medicine"},{value:"evolution-and-development",label:"Evolution & Development"},{value:"evolution-letters",label:"Evolution Letters"},{value:"evolution",label:"Evolution"},{value:"evolutionary-anthropology",label:"Evolutionary Anthropology"},{value:"evolutionary-ecology-research",label:"Evolutionary Ecology Research"},{value:"excli-journal",label:"EXCLI Journal"},{value:"exercer",label:"exercer (Fran\xE7ais)"},{value:"experimental-biology-and-medicine",label:"Experimental Biology and Medicine"},{value:"experimental-biomedical-research",label:"Experimental Biomedical Research"},{value:"experimental-dermatology",label:"Experimental Dermatology"},{value:"expert-reviews-in-molecular-medicine",label:"Expert Reviews in Molecular Medicine"},{value:"express-polymer-letters",label:"eXPRESS Polymer Letters"},{value:"extracellular-vesicles-and-circulating-nucleic-acids",label:"Extracellular Vesicles and Circulating Nucleic Acids"},{value:"eye",label:"Eye"},{value:"fachhochschule-kiel-fachbereich-medien",label:"Fachhochschule Kiel - Fachbereich Medien (Deutsch)"},{value:"fachhochschule-sudwestfalen",label:"Fachhochschule S\xFCdwestfalen (Deutsch)"},{value:"fachhochschule-vorarlberg-author-date",label:"Fachhochschule Vorarlberg (author-date)"},{value:"fachhochschule-vorarlberg-note",label:"Fachhochschule Vorarlberg (note)"},{value:"facial-plastic-surgery-clinics-of-north-america",label:"Facial Plastic Surgery Clinics of North America"},{value:"facolta-teologica-dell-italia-settentrionale-milano",label:"Facolt\xE0 Teologica dell'Italia Settentrionale - Milano (titoli di riviste non abbreviati, Italiano)"},{value:"family-business-review",label:"Family Business Review"},{value:"farmeconomia",label:"Farmeconomia. Health Economics and Therapeutic Pathways"},{value:"fatigue-and-fracture-of-engineering-materials-and-structures",label:"Fatigue & Fracture of Engineering Materials & Structures"},{value:"feminist-economics",label:"Feminist Economics"},{value:"feminist-theory",label:"Feminist Theory"},{value:"ferdinand-porsche-fern-fachhochschule",label:"Ferdinand Porsche Fernfachhochschule (Deutsch - \xD6sterreich)"},{value:"fertility-and-sterility",label:"Fertility and Sterility"},{value:"finance-and-society",label:"Finance and Society"},{value:"finanzarchiv",label:"FinanzArchiv - Public Finance Analysis"},{value:"fine-focus",label:"Fine Focus"},{value:"first-break",label:"First Break"},{value:"first-monday",label:"First Monday"},{value:"fishery-bulletin",label:"Fishery Bulletin"},{value:"flavour-and-fragrance-journal",label:"Flavour and Fragrance Journal"},{value:"florida-entomologist",label:"Florida Entomologist"},{value:"focaal-journal-of-global-and-historical-anthropology",label:"Focaal\u2014Journal of Global and Historical Anthropology"},{value:"foerster-geisteswissenschaft",label:"Sascha Foerster - Geisteswissenschaft (Deutsch)"},{value:"fold-and-r",label:"FOLD&R (Fasti On Line Documents & Research)"},{value:"folia-biologica",label:"Folia Biologica"},{value:"folia-morphologia",label:"Folia Morphologia"},{value:"food-and-agriculture-organization-of-the-united-nations",label:"Food and Agriculture Organization of the United Nations"},{value:"forensic-anthropology",label:"Forensic Anthropology"},{value:"forensic-science-review",label:"Forensic Science Review"},{value:"forest-science",label:"Forest Science"},{value:"forschungsjournal-soziale-bewegungen-fjsb",label:"Forschungsjournal Soziale Bewegungen FJSB(German)"},{value:"forum-qualitative-social-research",label:"Forum: Qualitative Social Research (English)"},{value:"forum-qualitative-sozialforschung",label:"Forum: Qualitative Sozialforschung (Deutsch)"},{value:"frattura-ed-integrita-strutturale-fracture-and-structural-integrity",label:"Frattura ed Integrit\xE0 Strutturale - Fracture and Structural Integrity"},{value:"free-radical-research",label:"Free Radical Research"},{value:"freie-hochschule-stuttgart",label:"Freie Hochschule Stuttgart (Deutsch)"},{value:"freie-universitat-berlin-geographische-wissenschaften",label:"Freie Universit\xE4t Berlin - Geographische Wissenschaften (Deutsch)"},{value:"french-politics",label:"French Politics"},{value:"french1",label:"France (tous les auteurs, num\xE9rotation, Fran\xE7ais)"},{value:"french2",label:"France (auteurs et al., num\xE9rotation, Fran\xE7ais)"},{value:"french3",label:"France (tous les auteurs, auteur-date, Fran\xE7ais)"},{value:"french4",label:"France (auteurs et al., auteur-date, Fran\xE7ais)"},{value:"freshwater-biology",label:"Freshwater Biology"},{value:"freshwater-crayfish",label:"Freshwater Crayfish"},{value:"freshwater-science",label:"Freshwater Science"},{value:"friedrich-schiller-universitat-jena-medizinische-fakultat",label:"Friedrich-Schiller-Universit\xE4t Jena - Medizinische Fakult\xE4t (Deutsch)"},{value:"frontiers-in-bioscience",label:"Frontiers in Bioscience"},{value:"frontiers-in-ecology-and-the-environment",label:"Frontiers in Ecology and the Environment"},{value:"frontiers-in-optics",label:"Frontiers in Optics"},{value:"frontiers-in-physics",label:"Frontiers in Physics"},{value:"frontiers-medical-journals",label:"Frontiers medical journals"},{value:"frontiers-of-biogeography",label:"Frontiers of Biogeography"},{value:"frontiers",label:"Frontiers journals"},{value:"fundamental-and-applied-limnology",label:"Fundamental and Applied Limnology"},{value:"future-medicine",label:"Future Medicine journals"},{value:"future-science-group",label:"Future Science Group"},{value:"g-giappichelli-editore",label:"G. Giappichelli Editore (Italiano)"},{value:"g3",label:"G3: Genes, Genomes, Genetics"},{value:"gaceta-sanitaria",label:"Gaceta Sanitaria"},{value:"gaia",label:"GAIA"},{value:"galatasaray-universitesi-sosyal-bilimler-enstitusu",label:"Galatasaray \xDCniversitesi Sosyal Bilimler Enstit\xFCs\xFC"},{value:"gallia-prehistoire",label:"Gallia Pr\xE9histoire (Fran\xE7ais)"},{value:"gallia",label:"Gallia (Fran\xE7ais)"},{value:"gastroenterology",label:"Gastroenterology"},{value:"gastrointestinal-endoscopy-clinics-of-north-america",label:"Gastrointestinal Endoscopy Clinics of North America"},{value:"gastrointestinal-intervention",label:"Gastrointestinal Intervention"},{value:"gazeta-medica",label:"Gazeta M\xE9dica"},{value:"geistes-und-kulturwissenschaften-heilmann",label:"Geistes- und Kulturwissenschaften (Heilmann) (Deutsch)"},{value:"generic-style-rules-for-linguistics",label:"Generic Style Rules for Linguistics"},{value:"genes-brain-and-behavior",label:"Genes, Brain and Behavior"},{value:"genes-to-cells",label:"Genes to Cells"},{value:"geneses",label:"Gen\xE8ses: Sciences sociales et histoire (Fran\xE7ais)"},{value:"genetics-and-molecular-biology",label:"Genetics and Molecular Biology"},{value:"genetics",label:"Genetics"},{value:"genome-biology-and-evolution",label:"Genome Biology and Evolution"},{value:"genomics-and-informatics",label:"Genomics & Informatics"},{value:"geoarchaeology",label:"Geoarchaeology"},{value:"geobiology",label:"Geobiology"},{value:"geochemical-perspectives-letters",label:"Geochemical Perspectives Letters"},{value:"geochimica-et-cosmochimica-acta",label:"Geochimica et Cosmochimica Acta"},{value:"geochronometria",label:"Geochronometria"},{value:"geografia-fisica-e-dinamica-quaternaria",label:"Geografia Fisica e Dinamica Quaternaria"},{value:"geografie-sbornik-cgs",label:"Geografie Sborn\xEDk \u010CGS"},{value:"geographie-et-cultures",label:"G\xE9ographie et cultures (Fran\xE7ais)"},{value:"geographische-zeitschrift",label:"Geographische Zeitschrift"},{value:"geological-magazine",label:"Geological Magazine"},{value:"geophysical-journal-international",label:"Geophysical Journal International"},{value:"geophysics",label:"Geophysics"},{value:"geopolitics",label:"Geopolitics"},{value:"georg-august-universitat-gottingen-institut-fur-ethnologie-und-ethnologische-sammlung",label:"Georg-August-Universit\xE4t G\xF6ttingen - Institut f\xFCr Ethnologie und Ethnologische Sammlung (Deutsch)"},{value:"geriatrics-and-gerontology-international",label:"Geriatrics & Gerontology International"},{value:"geriatrie-et-psychologie-neuropsychiatrie-du-vieillissement",label:"G\xE9riatrie et Psychologie Neuropsychiatrie du Vieillissement"},{value:"german-council-of-economic-experts",label:"German Council of Economic Experts"},{value:"german-journal-of-agricultural-economics",label:"German Journal of Agricultural Economics"},{value:"german-yearbook-of-international-law",label:"German Yearbook of International Law"},{value:"geschichte-und-gesellschaft",label:"Geschichte und Gesellschaft"},{value:"gesellschaft-fur-popularmusikforschung",label:"Gesellschaft fur Popularmusikforschung (Deutsch)"},{value:"gewerblicher-rechtsschutz-und-urheberrecht",label:"Gewerblicher Rechtsschutz und Urheberrecht (Deutsch)"},{value:"gigascience",label:"GigaScience"},{value:"global-ecology-and-biogeography",label:"Global Ecology and Biogeography"},{value:"glossa",label:"Glossa"},{value:"gost-r-7-0-5-2008-numeric-alphabetical",label:"Russian GOST R 7.0.5-2008 (numeric, sorted alphabetically, \u0420\u0443\u0301\u0441\u0441\u043A\u0438\u0439)"},{value:"gost-r-7-0-5-2008-numeric",label:"Russian GOST R 7.0.5-2008 (numeric)"},{value:"gost-r-7-0-5-2008",label:"Russian GOST R 7.0.5-2008 (\u0420\u0443\u0301\u0441\u0441\u043A\u0438\u0439)"},{value:"government-and-opposition",label:"Government and Opposition"},{value:"grasas-y-aceites",label:"Grasas y Aceites"},{value:"griffith-college-harvard",label:"Griffith College - Harvard"},{value:"groundwater",label:"Groundwater"},{value:"groupe-danthropologie-et-darcheologie-funeraire",label:"Groupe d'anthropologie et d'arch\xE9ologie fun\xE9raire (Fran\xE7ais)"},{value:"guide-des-citations-references-et-abreviations-juridiques",label:"Guide des citations, r\xE9f\xE9rences et abr\xE9viations juridiques 6e \xE9dition (Fran\xE7ais)"},{value:"guide-pour-la-redaction-et-la-presentation-des-theses-a-lusage-des-doctorants",label:"Guide pour la r\xE9daction et la pr\xE9sentation des th\xE8ses \xE0 l'usage des doctorants (Fran\xE7ais)"},{value:"haaga-helia-university-of-applied-sciences-harvard",label:"Haaga-Helia ammattikorkeakoulu - Harvard"},{value:"haematologica",label:"Haematologica"},{value:"haemophilia",label:"Haemophilia"},{value:"hainan-medical-university-journal-publisher",label:"Hainan Medical University Journal Publisher"},{value:"hamburg-school-of-food-science",label:"Hamburg School of Food Science (diploma, Deutsch)"},{value:"hand",label:"HAND"},{value:"handbook-of-clinical-neurology",label:"Handbook of Clinical Neurology"},{value:"harvard-anglia-ruskin-university",label:"Anglia Ruskin University - Harvard"},{value:"harvard-bournemouth-university",label:"Bournemouth University - Harvard"},{value:"harvard-cape-peninsula-university-of-technology",label:"Cape Peninsula University of Technology - Harvard"},{value:"harvard-cardiff-university-old",label:"Cardiff University - (old) Harvard"},{value:"harvard-cite-them-right-10th-edition",label:"Cite Them Right 10th edition - Harvard"},{value:"harvard-cite-them-right-no-et-al",label:'Cite Them Right 11th edition - Harvard (no "et al.")'},{value:"harvard-cite-them-right",label:"Cite Them Right 11th edition - Harvard"},{value:"harvard-coventry-university",label:"Coventry University - Harvard"},{value:"harvard-cranfield-university",label:"Cranfield University - Harvard"},{value:"harvard-deakin-university",label:"Deakin University - Harvard"},{value:"harvard-dundalk-institute-of-technology",label:"Dundalk Institute of Technology - Harvard"},{value:"harvard-durham-university-business-school",label:"Durham University Business School - Harvard"},{value:"harvard-edge-hill-university",label:"Edge Hill University - Harvard"},{value:"harvard-european-archaeology",label:"European Archaeology - Harvard"},{value:"harvard-fachhochschule-salzburg",label:"Fachhochschule Salzburg - Harvard"},{value:"harvard-falmouth-university",label:"Falmouth University - Harvard"},{value:"harvard-gesellschaft-fur-bildung-und-forschung-in-europa",label:"Gesellschaft f\xFCr Bildung und Forschung in Europa - Harvard (Deutsch)"},{value:"harvard-imperial-college-london",label:"Imperial College London - Harvard"},{value:"harvard-institut-fur-praxisforschung-de",label:"Institut f\xFCr Praxisforschung - Harvard (Bahr & Frackmann) (Deutsch)"},{value:"harvard-kings-college-london",label:"King's College London - Harvard"},{value:"harvard-leeds-beckett-university",label:"Leeds Beckett University - Harvard"},{value:"harvard-leeds-metropolitan-university",label:"Leeds Metropolitan University - Harvard"},{value:"harvard-limerick",label:"University of Limerick (Cite it Right) - Harvard"},{value:"harvard-london-south-bank-university",label:"London South Bank University - Harvard"},{value:"harvard-manchester-business-school",label:"Manchester Business School - Harvard"},{value:"harvard-manchester-metropolitan-university",label:"Manchester Metropolitan University - Harvard"},{value:"harvard-melbourne-polytechnic",label:"Melbourne Polytechnic - Harvard"},{value:"harvard-newcastle-university",label:"Newcastle University - Harvard"},{value:"harvard-north-west-university",label:"North-West University - Harvard"},{value:"harvard-oxford-brookes-university-faculty-of-health-and-life-sciences",label:"Oxford Brookes University - Faculty of Health and Life Sciences - Harvard"},{value:"harvard-pontificia-universidad-catolica-del-ecuador",label:"Pontificia Universidad Cat\xF3lica del Ecuador (Espa\xF1ol) - Harvard"},{value:"harvard-robert-gordon-university",label:"Robert Gordon University - Harvard"},{value:"harvard-staffordshire-university",label:"Staffordshire University - Harvard"},{value:"harvard-stellenbosch-university",label:"Stellenbosch University - Harvard"},{value:"harvard-swinburne-university-of-technology",label:"Swinburne University of Technology - Harvard"},{value:"harvard-the-university-of-melbourne",label:"The University of Melbourne - Harvard"},{value:"harvard-the-university-of-northampton",label:"The University of Northampton - Harvard"},{value:"harvard-the-university-of-sheffield-school-of-east-asian-studies",label:"The University of Sheffield - School of East Asian Studies - Harvard"},{value:"harvard-the-university-of-sheffield-town-and-regional-planning",label:"The University of Sheffield - Town and Regional Planning - Harvard"},{value:"harvard-theologisches-seminar-adelshofen",label:"Theologisches Seminar Adelshofen - Harvard (Deutsch)"},{value:"harvard-universiti-teknologi-malaysia",label:"Universiti Teknologi Malaysia - Harvard"},{value:"harvard-universiti-tunku-abdul-rahman",label:"Universiti Tunku Abdul Rahman - Harvard"},{value:"harvard-university-for-the-creative-arts",label:"University for the Creative Arts - Harvard"},{value:"harvard-university-of-abertay-dundee",label:"University of Abertay Dundee - Harvard"},{value:"harvard-university-of-bath",label:"University of Bath - Harvard"},{value:"harvard-university-of-birmingham",label:"University of Birmingham - Harvard"},{value:"harvard-university-of-brighton-school-of-environment-and-technology",label:"University of Brighton School of Environment & Technology - Harvard"},{value:"harvard-university-of-cape-town",label:"University of Cape Town - Harvard"},{value:"harvard-university-of-exeter-geography",label:"University of Exeter - Geography - Harvard"},{value:"harvard-university-of-greenwich",label:"University of Greenwich - Harvard"},{value:"harvard-university-of-kent",label:"University of Kent - Harvard"},{value:"harvard-university-of-leeds",label:"University of Leeds - Harvard"},{value:"harvard-university-of-technology-sydney",label:"University of Technology Sydney - Harvard"},{value:"harvard-university-of-the-west-of-england",label:"University of the West of England (Bristol) - Harvard"},{value:"harvard-university-of-the-west-of-scotland",label:"University of the West of Scotland - Harvard"},{value:"harvard-university-of-westminster",label:"University of Westminster - Harvard"},{value:"harvard-university-of-wolverhampton",label:"University of Wolverhampton - Harvard"},{value:"harvard-university-of-worcester",label:"University of Worcester - Harvard"},{value:"harvard-york-st-john-university",label:"York St John University - Harvard (pre September 2019 entry)"},{value:"haute-ecole-de-gestion-de-geneve-iso-690",label:"Haute \xE9cole de gestion de Gen\xE8ve - ISO 690"},{value:"haute-ecole-pedagogique-fribourg",label:"Haute Ecole p\xE9dagogique Fribourg (Fran\xE7ais)"},{value:"hawaii-international-conference-on-system-sciences-proceedings",label:"Hawaii International Conference on System Sciences Proceedings"},{value:"health-and-human-rights-journal",label:"Health and Human Rights Journal"},{value:"health-and-social-care-in-the-community",label:"Health & Social Care in the Community"},{value:"health-economics-policy-and-law",label:"Health Economics, Policy and Law"},{value:"health-economics",label:"Health Economics"},{value:"health-education-england-harvard",label:"Health Education England - Harvard"},{value:"health-education-research",label:"Health Education Research"},{value:"health-policy-and-planning",label:"Health Policy and Planning"},{value:"health-reform-observer-observatoire-des-reformes-de-sante",label:"Health Reform Observer - Observatoire des R\xE9formes de Sant\xE9"},{value:"health-sports-and-rehabilitation-medicine",label:"Health, Sports & Rehabilitation Medicine"},{value:"heart-failure-clinics",label:"Heart Failure Clinics"},{value:"heart-rhythm",label:"Heart Rhythm"},{value:"heidelberg-university-faculty-of-medicine",label:"Heidelberg University - Faculty of Medicine (Universit\xE4t Heidelberg - Medizinische Fakult\xE4t Heidelberg)"},{value:"heiliger-dienst",label:"Heiliger Dienst (Deutsch)"},{value:"helvetica-chimica-acta",label:"Helvetica Chimica Acta"},{value:"hematology-oncology-clinics-of-north-america",label:"Hematology/Oncology Clinics of North America"},{value:"hemijska-industrija",label:"Hemijska industrija"},{value:"henoch",label:"Henoch"},{value:"hepatology",label:"Hepatology"},{value:"heredity",label:"Heredity"},{value:"herpetologica",label:"Herpetologica"},{value:"hiob-ludolf-centre-for-ethiopian-studies-long-names",label:"Hiob Ludolf Centre for Ethiopian Studies (long names)"},{value:"hiob-ludolf-centre-for-ethiopian-studies-with-url-doi",label:"Hiob Ludolf Centre for Ethiopian Studies (with URL/DOI)"},{value:"hiob-ludolf-centre-for-ethiopian-studies",label:"Hiob Ludolf Centre for Ethiopian Studies"},{value:"hipertension-y-riesgo-vascular",label:"Hipertensi\xF3n y Riesgo Vascular (Espa\xF1ol)"},{value:"histoire-at-politique",label:"Histoire@Politique. Politique, culture, soci\xE9t\xE9 (Fran\xE7ais)"},{value:"histoire-et-mesure",label:"Histoire & Mesure (Fran\xE7ais)"},{value:"histopathology",label:"Histopathology"},{value:"historia-scribere",label:"historia-scribere (Deutsch)"},{value:"historical-materialism",label:"Historical Materialism"},{value:"historical-social-research",label:"Historical Social Research"},{value:"historio-plus",label:"historioPLUS (Deutsch - \xD6sterreich)"},{value:"history-and-theory",label:"History and Theory"},{value:"history-australia",label:"History Australia"},{value:"history-of-the-human-sciences",label:"History of the Human Sciences"},{value:"hochschule-bonn-rhein-sieg",label:"Hochschule Bonn-Rhein-Sieg (Harvard, Deutsch)"},{value:"hochschule-fur-soziale-arbeit-fhnw",label:"Hochschule f\xFCr Soziale Arbeit FHNW (Deutsch - Schweiz)"},{value:"hochschule-fur-wirtschaft-und-recht-berlin",label:"Hochschule f\xFCr Wirtschaft und Recht Berlin (Deutsch)"},{value:"hochschule-hannover-soziale-arbeit",label:"Hochschule Hannover - Soziale Arbeit (Deutsch)"},{value:"hochschule-munchen-fakultat-fur-angewandte-sozialwissenschaften",label:"Hochschule M\xFCnchen - Fakult\xE4t f\xFCr Angewandte Sozialwissenschaften (Deutsch)"},{value:"hochschule-osnabruck-fakultat-agrarwissenschaften-und-landschaftsarchitektur",label:"Hochschule Osnabr\xFCck - Fakult\xE4t Agrarwissenschaften und Landschaftsarchitektur (Deutsch)"},{value:"hochschule-pforzheim-fakultat-fur-wirtschaft-und-recht",label:"Hochschule Pforzheim - Fakult\xE4t f\xFCr Wirtschaft und Recht (Deutsch)"},{value:"hong-kong-journal-of-radiology",label:"Hong Kong Journal of Radiology"},{value:"hospital-a-domicilio",label:"Hospital a Domicilio"},{value:"housing-studies",label:"Housing Studies"},{value:"hpb",label:"HPB"},{value:"human-brain-mapping",label:"Human Brain Mapping"},{value:"human-ecology",label:"Human Ecology"},{value:"human-molecular-genetics",label:"Human Molecular Genetics"},{value:"human-mutation",label:"Human Mutation"},{value:"human-reproduction-update",label:"Human Reproduction Update"},{value:"human-reproduction",label:"Human Reproduction"},{value:"human-resource-management-journal",label:"Human Resource Management Journal"},{value:"human-rights-law-review",label:"Human Rights Law Review"},{value:"human-wildlife-interactions",label:"Human-Wildlife Interactions"},{value:"humanistica-lovaniensia-journal-of-neo-latin-studies",label:"Humanistica Lovaniensia. Journal of Neo-Latin Studies"},{value:"humboldt-state-university-environmental-resources-engineering",label:"Humboldt State University - Environmental Resources Engineering"},{value:"hydrobiologia",label:"Hydrobiologia"},{value:"hydrological-processes",label:"Hydrological Processes"},{value:"hydrological-sciences-journal",label:"Hydrological Sciences Journal"},{value:"hypertension-research",label:"Hypertension Research"},{value:"hypotheses-in-the-life-sciences",label:"Hypotheses in the Life Sciences"},{value:"hystrix-the-italian-journal-of-mammalogy",label:"Hystrix, the Italian Journal of Mammalogy"},{value:"iawa-journal",label:"IAWA Journal"},{value:"ib-tauris-note",label:"I.B. Tauris (note)"},{value:"ibis",label:"Ibis"},{value:"ices-journal-of-marine-science",label:"ICES Journal of Marine Science"},{value:"idojaras-quarterly-journal-of-the-hungarian-meteorological-service",label:"Id\u0151j\xE1r\xE1s - Quarterly Journal of the Hungarian Meteorological Service"},{value:"ie-comunicaciones",label:"IE Comunicaciones"},{value:"ieee-transactions-on-medical-imaging",label:"IEEE Transactions on Medical Imaging"},{value:"ieee-with-url",label:"IEEE (with URL)"},{value:"ieee",label:"IEEE"},{value:"iforest",label:"iForest"},{value:"igaku-toshokan",label:"Igaku Toshokan (\u65E5\u672C\u8A9E)"},{value:"iica-catie",label:"IICA-CATIE (Espa\xF1ol)"},{value:"ilahiyat-studies",label:"Ilahiyat Studies (full note)"},{value:"im-gesprach",label:"Im Gespr\xE4ch - Hefte der Martin Buber-Gesellschaft (Deutsch)"},{value:"incontext-studies-in-translation-and-interculturalism",label:"INContext: Studies in Translation and Interculturalism"},{value:"indian-dermatology-online-journal",label:"Indian Dermatology Online Journal"},{value:"indian-journal-of-medical-research",label:"Indian Journal of Medical Research"},{value:"indian-journal-of-orthopaedics",label:"Indian Journal of Orthopaedics"},{value:"indian-journal-of-physics",label:"Indian Journal of Physics"},{value:"indian-journal-of-traditional-knowledge",label:"Indian Journal of Traditional Knowledge"},{value:"indiana",label:"INDIANA"},{value:"indoor-air",label:"Indoor Air"},{value:"industrial-relations",label:"Industrial Relations"},{value:"infectio",label:"Infectio (Espa\xF1ol)"},{value:"infectious-disease-clinics-of-north-america",label:"Infectious Disease Clinics of North America"},{value:"inflammatory-bowel-diseases",label:"Inflammatory Bowel Diseases"},{value:"influenza-and-other-respiratory-viruses",label:"Influenza and Other Respiratory Viruses"},{value:"infoclio-de-kurzbelege",label:"infoclio.ch (Kurzbelege, Deutsch - Schweiz)"},{value:"infoclio-de",label:"infoclio.ch (Deutsch - Schweiz)"},{value:"infoclio-fr-nocaps",label:"infoclio.ch (sans majuscules, Fran\xE7ais)"},{value:"infoclio-fr-smallcaps",label:"infoclio.ch (petites majuscules, Fran\xE7ais)"},{value:"infomin",label:"Infomin"},{value:"informal-logic",label:"Informal Logic"},{value:"ingenieria-agricola",label:"Ingenier\xEDa Agr\xEDcola (Espa\xF1ol)"},{value:"innovations-therapeutiques-en-oncologie",label:"Innovations & Th\xE9rapeutiques en Oncologie"},{value:"instap-academic-press",label:"INSTAP Academic Press"},{value:"institut-francais-darcheologie-orientale-arab-studies",label:"Institut fran\xE7ais d'arch\xE9ologie orientale - Arab Studies (English)"},{value:"institut-francais-darcheologie-orientale-en",label:"Institut fran\xE7ais d'arch\xE9ologie orientale - Egyptology (English)"},{value:"institut-francais-darcheologie-orientale-etudes-arabes",label:"Institut fran\xE7ais d'arch\xE9ologie orientale - \xE9tudes arabes (Fran\xE7ais)"},{value:"institut-francais-darcheologie-orientale",label:"Institut fran\xE7ais d'arch\xE9ologie orientale - arch\xE9ologie et \xE9gyptologie (Fran\xE7ais)"},{value:"institut-national-de-la-recherche-scientifique-sciences-sociales",label:"Institut national de la recherche scientifique - Sciences sociales (author-date, Fran\xE7ais)"},{value:"institut-national-de-recherches-archeologiques-preventives",label:"Institut national de recherches arch\xE9ologiques pr\xE9ventives (Fran\xE7ais)"},{value:"institut-national-de-sante-publique-du-quebec-napp",label:"Institut national de sant\xE9 publique du Qu\xE9bec - NAPP (Fran\xE7ais - Canada)"},{value:"institut-national-de-sante-publique-du-quebec-topo",label:"Institut national de sant\xE9 publique du Qu\xE9bec - TOPO (Fran\xE7ais - Canada)"},{value:"institut-pertanian-bogor",label:"Institut Pertanian Bogor: Pedoman Penulisan Karya Ilmiah Edisi ke-3 (Bahasa Indonesia)"},{value:"institut-teknologi-bandung-sekolah-pascasarjana",label:"Institut Teknologi Bandung - Sekolah Pascasarjana"},{value:"institute-for-operations-research-and-the-management-sciences",label:"Institute for Operations Research and the Management Sciences"},{value:"institute-of-mathematical-statistics",label:"Institute of Mathematical Statistics journals"},{value:"institute-of-mathematics-and-its-applications",label:"Institute of Mathematics and its Applications"},{value:"institute-of-physics-harvard",label:"Institute of Physics - Harvard"},{value:"institute-of-physics-numeric",label:"Institute of Physics (numeric)"},{value:"instituto-brasileiro-de-informacao-em-ciencia-e-tecnologia-abnt-initials",label:"Instituto Brasileiro de Informa\xE7\xE3o em Ci\xEAncia e Tecnologia - ABNT (autoria abreviada)"},{value:"instituto-brasileiro-de-informacao-em-ciencia-e-tecnologia-abnt",label:"Instituto Brasileiro de Informa\xE7\xE3o em Ci\xEAncia e Tecnologia - ABNT (autoria completa)"},{value:"instituto-de-investigaciones-sobre-la-universidad-y-la-educacion-moderno",label:"Instituto de Investigaciones sobre la Universidad y la Educaci\xF3n - Moderno (autor-fecha, Espa\xF1ol)"},{value:"instituto-de-pesquisas-energeticas-e-nucleares",label:"Instituto de Pesquisas Energ\xE9ticas e Nucleares (Portugu\xEAs - Brasil)"},{value:"instituto-de-pesquisas-tecnologicas",label:"Instituto de Pesquisas Tecnol\xF3gicas (Portugu\xEAs - Brasil)"},{value:"instituto-superior-de-teologia-de-las-islas-canarias",label:"Instituto Superior de Teolog\xEDa de las Islas Canarias (Espa\xF1ol)"},{value:"integrated-science-publishing-journals",label:"Integrated Science Publishing journals"},{value:"integrative-and-comparative-biology",label:"Integrative & Comparative Biology"},{value:"inter-research-science-center",label:"Inter-Research Science Center"},{value:"inter-ro",label:"INTER: Romanian Review for Theological and Religious Studies"},{value:"interaction-design-and-architectures",label:"Interaction Design & Architecture(s)"},{value:"interactive-cardiovascular-and-thoracic-surgery",label:"Interactive CardioVascular and Thoracic Surgery"},{value:"interdisziplinare-anthropologie",label:"Interdisziplin\xE4re Anthropologie (Deutsch)"},{value:"interdisziplinare-zeitschrift-fur-technologie-und-lernen",label:"Interdisziplin\xE4re Zeitschrift f\xFCr Technologie und Lernen (Deutsch)"},{value:"interkulturelle-germanistik-gottingen",label:"Interkulturelle Germanistik G\xF6ttingen (Deutsch)"},{value:"international-atomic-energy-agency",label:"International Atomic Energy Agency"},{value:"international-biodeterioration-and-biodegradation",label:"International Biodeterioration & Biodegradation"},{value:"international-brazilian-journal-of-urology",label:"International Brazilian Journal Of Urology"},{value:"international-conference-on-information-systems-development",label:"International Conference on Information Systems Development"},{value:"international-development-policy",label:"International Development Policy"},{value:"international-energy-agency-organisation-for-economic-co-operation-and-development",label:"International Energy Agency - Organisation for Economic Co-operation and Development"},{value:"international-islamic-university-malaysia-ahmad-ibrahim-kulliyyah-of-laws",label:"International Islamic University Malaysia - Ahmad Ibrahim Kulliyyah of Laws"},{value:"international-journal-for-numerical-methods-in-biomedical-engineering",label:"International Journal for Numerical Methods in Biomedical Engineering"},{value:"international-journal-of-audiology",label:"International Journal of Audiology"},{value:"international-journal-of-automotive-technology",label:"International Journal of Automotive Technology"},{value:"international-journal-of-cancer",label:"International Journal of Cancer"},{value:"international-journal-of-circuit-theory-and-applications",label:"International Journal of Circuit Theory and Applications"},{value:"international-journal-of-climatology",label:"International Journal of Climatology"},{value:"international-journal-of-clinical-research",label:"International Journal of Clinical Research"},{value:"international-journal-of-cosmetic-science",label:"International Journal of Cosmetic Science"},{value:"international-journal-of-electrochemical-science",label:"International Journal of Electrochemical Science"},{value:"international-journal-of-electronic-commerce",label:"International Journal of Electronic Commerce"},{value:"international-journal-of-epidemiology",label:"International Journal of Epidemiology"},{value:"international-journal-of-exercise-science",label:"International Journal of Exercise Science"},{value:"international-journal-of-food-science-and-technology",label:"International Journal of Food Science & Technology"},{value:"international-journal-of-geriatric-psychiatry",label:"International Journal of Geriatric Psychiatry"},{value:"international-journal-of-humanoid-robotics",label:"International Journal of Humanoid Robotics"},{value:"international-journal-of-language-and-communication-disorders",label:"International Journal of Language & Communication Disorders"},{value:"international-journal-of-learner-corpus-research",label:"International Journal of Learner Corpus Research"},{value:"international-journal-of-lexicography",label:"International Journal of Lexicography"},{value:"international-journal-of-management-reviews",label:"International Journal of Management Reviews"},{value:"international-journal-of-nuclear-security",label:"International Journal of Nuclear Security"},{value:"international-journal-of-obstetric-anesthesia",label:"International Journal of Obstetric Anesthesia"},{value:"international-journal-of-occupational-medicine-and-environmental-health",label:"International Journal of Occupational Medicine and Environmental Health"},{value:"international-journal-of-oral-and-maxillofacial-surgery",label:"International Journal of Oral and Maxillofacial Surgery"},{value:"international-journal-of-osteoarchaeology",label:"International Journal of Osteoarchaeology"},{value:"international-journal-of-plant-sciences",label:"International Journal of Plant Sciences"},{value:"international-journal-of-polymer-analysis-and-characterization",label:"International Journal of Polymer Analysis and Characterization"},{value:"international-journal-of-polymeric-materials-and-polymeric-biomaterials",label:"International Journal of Polymeric Materials and Polymeric Biomaterials"},{value:"international-journal-of-population-data-science",label:"International Journal of Population Data Science"},{value:"international-journal-of-quantum-chemistry",label:"International Journal of Quantum Chemistry"},{value:"international-journal-of-radiation-oncology-biology-physics",label:"International Journal of Radiation Oncology, Biology, Physics"},{value:"international-journal-of-research-in-exercise-physiology",label:"International Journal of Research in Exercise Physiology"},{value:"international-journal-of-simulation-modelling",label:"International Journal of Simulation Modelling"},{value:"international-journal-of-spatial-data-infrastructures-research",label:"International Journal of Spatial Data Infrastructures Research"},{value:"international-journal-of-sports-medicine",label:"International Journal of Sport Medicine"},{value:"international-journal-of-urban-and-regional-research",label:"International Journal of Urban and Regional Research"},{value:"international-journal-of-wildland-fire",label:"International Journal of Wildland Fire"},{value:"international-microbiology",label:"International Microbiology"},{value:"international-organization",label:"International Organization"},{value:"international-pig-veterinary-society-congress-proceedings",label:"International Pig Veterinary Society Congress Proceedings"},{value:"international-review-of-the-red-cross",label:"International Review of the Red Cross"},{value:"international-security",label:"International Security"},{value:"international-studies-association",label:"International Studies Association"},{value:"international-union-of-crystallography",label:"International Union of Crystallography journals"},{value:"international-union-of-forest-research-organizations-headquarters",label:"International Union of Forest Research Organizations - Headquarters"},{value:"inventaire-general-du-patrimoine-culturel-iso-690-full-note-with-ibid",label:"Inventaire g\xE9n\xE9ral du patrimoine culturel - ISO-690 (full note, with Ibid., Fran\xE7ais)"},{value:"inventaire-general-du-patrimoine-culturel-iso-690-full-note",label:"Inventaire g\xE9n\xE9ral du patrimoine culturel - ISO-690 (full note, Fran\xE7ais)"},{value:"inventaire-general-du-patrimoine-culturel-iso-690-note",label:"Inventaire g\xE9n\xE9ral du patrimoine culturel - ISO-690 (note, Fran\xE7ais)"},{value:"invertebrate-biology",label:"Invertebrate Biology"},{value:"investigative-radiology",label:"Investigative Radiology"},{value:"invisu",label:"InVisu"},{value:"ios-press-books",label:"IOS Press (books)"},{value:"ipag-business-school-apa",label:"IPAG Business School - APA"},{value:"iran-manual-of-style",label:"Iran Manual of Style - \u0634\u06CC\u0648\u0647\u200C\u0646\u0627\u0645\u0647 \u0627\u06CC\u0631\u0627\u0646 (\u0641\u0627\u0631\u0633\u06CC)"},{value:"iranian-journal-of-basic-medical-sciences",label:"Iranian Journal of Basic Medical Sciences"},{value:"iranian-journal-of-pharmaceutical-research",label:"Iranian Journal of Pharmaceutical Research"},{value:"irish-historical-studies",label:"Irish Historical Studies"},{value:"isabella-stewart-gardner-museum",label:"Isabella Stewart Gardner Museum"},{value:"isnad-dipnotlu",label:"\u0130SNAD At\u0131f Sistemi 2. Edisyon (dipnotlu)"},{value:"isnad-metinici",label:"\u0130SNAD At\u0131f Sistemi 2. Edisyon (metini\xE7i)"},{value:"isnad",label:"\u0130SNAD At\u0131f Sistemi 1. Edisyon (dipnotlu)"},{value:"iso690-author-date-cs",label:"ISO-690 (author-date, \u010Ce\u0161tina)"},{value:"iso690-author-date-de",label:"ISO-690 (author-date, Deutsch)"},{value:"iso690-author-date-en",label:"ISO-690 (author-date, English)"},{value:"iso690-author-date-es",label:"ISO-690 (author-date, Espa\xF1ol)"},{value:"iso690-author-date-fr-no-abstract",label:"ISO-690 (author-date, no abstract, Fran\xE7ais)"},{value:"iso690-author-date-fr",label:"ISO-690 (author-date, Fran\xE7ais)"},{value:"iso690-author-date-pt-br",label:"ISO-690 (author-date, Portugu\xEAs - Brasil)"},{value:"iso690-author-date-sk",label:"ISO-690 (author-date, Sloven\u010Dina)"},{value:"iso690-full-note-cs",label:"ISO-690 (full note, \u010Ce\u0161tina)"},{value:"iso690-full-note-sk",label:"ISO-690 (full note, Sloven\u010Dina)"},{value:"iso690-full-note-with-ibid-ro",label:"ISO-690 (full note, with Ibid., Rom\xE2n\u0103)"},{value:"iso690-note-cs",label:"ISO-690 (note, without bibliography, \u010Ce\u0161tina)"},{value:"iso690-note-fr",label:"ISO-690 (note, no abstract, Fran\xE7ais)"},{value:"iso690-numeric-brackets-cs",label:"ISO-690 (numeric, brackets, \u010Ce\u0161tina)"},{value:"iso690-numeric-cs",label:"ISO-690 (numeric, parentheses, \u010Ce\u0161tina)"},{value:"iso690-numeric-en",label:"ISO-690 (numeric, English)"},{value:"iso690-numeric-fr",label:"ISO-690 (numeric, Fran\xE7ais)"},{value:"iso690-numeric-lt",label:"ISO-690 (numeric, Lietuvi\u0173 kalba)"},{value:"iso690-numeric-sk",label:"ISO-690 (numeric, Sloven\u010Dina)"},{value:"israel-medical-association-journal",label:"Israel Medical Association Journal"},{value:"istanbul-medical-journal",label:"\u0130stanbul Medical Journal"},{value:"istanbul-universitesi-sosyal-bilimler-enstitusu",label:"\u0130stanbul \xDCniversitesi Sosyal Bilimler Enstit\xFCs\xFC (T\xFCrk\xE7e)"},{value:"italian-journal-of-agronomy",label:"Italian Journal of Agronomy"},{value:"italus-hortus",label:"Italus Hortus"},{value:"ithaque",label:"Ithaque (Fran\xE7ais - Canada)"},{value:"iubmb-life",label:"IUBMB Life"},{value:"ius-ecclesiae",label:"Ius Ecclesiae"},{value:"izmir-katip-celebi-universitesi-sosyal-bilimler-enstitusu",label:"\u0130zmir Katip \xC7elebi \xDCniversitesi - Sosyal Bilimler Enstit\xFCs\xFC (T\xFCrk\xE7e)"},{value:"jacc-cardiovascular-imaging",label:"JACC: Cardiovascular Imaging"},{value:"jacc-cardiovascular-interventions",label:"JACC: Cardiovascular Interventions"},{value:"jahrbuch-der-osterreichischen-byzantinischen-gesellschaft",label:"Jahrbuch der \xD6sterreichischen Byzantinischen Gesellschaft"},{value:"jahrbuch-fur-evangelikale-theologie",label:"Jahrbuch f\xFCr evangelikale Theologie (Deutsch)"},{value:"japanese-journal-of-applied-physics",label:"Japanese Journal of Applied Physics"},{value:"javnost-the-public",label:"Javnost - The Public"},{value:"jci-insight",label:"JCI Insight"},{value:"jcom-journal-of-science-communication",label:"JCOM: Journal of Science Communication"},{value:"john-benjamins-publishing-company-iconicity-in-language-and-literature",label:"John Benjamins Publishing Company - Iconicity in Language and Literature"},{value:"john-benjamins-publishing-company-linguistik-aktuell-linguistics-today",label:"John Benjamins Publishing Company - Linguistik Aktuell/Linguistics Today"},{value:"johnson-matthey-technology-review",label:"Johnson Matthey Technology Review"},{value:"journal-and-proceedings-of-the-royal-society-of-new-south-wales",label:"Journal and Proceedings of the Royal Society of New South Wales"},{value:"journal-de-la-societe-des-americanistes",label:"Journal de la Soci\xE9t\xE9 des am\xE9ricanistes"},{value:"journal-de-la-societe-des-oceanistes",label:"Journal de la Soci\xE9t\xE9 des Oc\xE9anistes"},{value:"journal-for-the-history-of-astronomy",label:"Journal for the History of Astronomy"},{value:"journal-for-the-study-of-the-new-testament",label:"Journal for the Study of the New Testament"},{value:"journal-for-veterinary-medicine-biotechnology-and-biosafety",label:"Journal for Veterinary Medicine, Biotechnology and Biosafety"},{value:"journal-fur-kulturpflanzen-journal-of-cultivated-plants",label:"Journal f\xFCr Kulturpflanzen - Journal of Cultivated Plants"},{value:"journal-fur-kunstgeschichte",label:"Journal f\xFCr Kunstgeschichte"},{value:"journal-of-accounting-research",label:"Journal of Accounting Research"},{value:"journal-of-acoustics",label:"Journal of Acoustics"},{value:"journal-of-adolescent-health",label:"Journal of Adolescent Health"},{value:"journal-of-advertising-research",label:"Journal of Advertising Research"},{value:"journal-of-agricultural-and-applied-economics",label:"Journal of Agricultural and Applied Economics"},{value:"journal-of-agricultural-and-resource-economics",label:"Journal of Agricultural and Resource Economics"},{value:"journal-of-alzheimers-disease",label:"Journal of Alzheimer's Disease"},{value:"journal-of-analytical-toxicology",label:"Journal of Analytical Toxicology"},{value:"journal-of-animal-physiology-and-animal-nutrition",label:"Journal of Animal Physiology and Animal Nutrition"},{value:"journal-of-animal-science",label:"Journal of Animal Science"},{value:"journal-of-antimicrobial-chemotherapy",label:"Journal of Antimicrobial Chemotherapy"},{value:"journal-of-aoac-international",label:"Journal of AOAC International"},{value:"journal-of-applied-animal-science",label:"Journal of Applied Animal Science"},{value:"journal-of-applied-clinical-medical-physics",label:"Journal of Applied Clinical Medical Physics"},{value:"journal-of-applied-entomology",label:"Journal of Applied Entomology"},{value:"journal-of-applied-pharmaceutical-research",label:"Journal of Applied Pharmaceutical Research"},{value:"journal-of-applied-philosophy",label:"Journal of Applied Philosophy"},{value:"journal-of-applied-polymer-science",label:"Journal of Applied Polymer Science"},{value:"journal-of-archaeological-research",label:"Journal of Archaeological Research"},{value:"journal-of-atrial-fibrillation",label:"Journal of Atrial Fibrillation"},{value:"journal-of-australian-strength-and-conditioning",label:"Journal of Australian Strength & Conditioning"},{value:"journal-of-avian-biology",label:"Journal of Avian Biology"},{value:"journal-of-basic-microbiology",label:"Journal of Basic Microbiology"},{value:"journal-of-biological-chemistry",label:"The Journal of Biological Chemistry"},{value:"journal-of-biological-regulators-and-homeostatic-agents",label:"Journal of Biological Regulators & Homeostatic Agents"},{value:"journal-of-biomedical-materials-research-part-a",label:"Journal of Biomedical Materials Research Part A"},{value:"journal-of-biosciences",label:"Journal of Biosciences"},{value:"journal-of-bone-and-mineral-research",label:"Journal of Bone and Mineral Research"},{value:"journal-of-brachial-plexus-and-peripheral-nerve-injury",label:"Journal of Brachial Plexus and Peripheral Nerve Injury"},{value:"journal-of-breast-cancer",label:"Journal of Breast Cancer"},{value:"journal-of-burn-care-and-research",label:"Journal of Burn Care & Research"},{value:"journal-of-business-logistics",label:"Journal of Business Logistics"},{value:"journal-of-cachexia-sarcopenia-and-muscle",label:"Journal of Cachexia, Sarcopenia and Muscle"},{value:"journal-of-cardiothoracic-and-vascular-anesthesia",label:"Journal of Cardiothoracic and Vascular Anesthesia"},{value:"journal-of-cellular-and-molecular-medicine",label:"Journal of Cellular and Molecular Medicine"},{value:"journal-of-cellular-biochemistry",label:"Journal of Cellular Biochemistry"},{value:"journal-of-chemistry-and-chemical-engineering",label:"Journal of Chemistry and Chemical Engineering"},{value:"journal-of-chemometrics",label:"Journal of Chemometrics"},{value:"journal-of-clinical-and-translational-science",label:"Journal of Clinical and Translational Science"},{value:"journal-of-clinical-neurology",label:"Journal of Clinical Neurology"},{value:"journal-of-clinical-neurophysiology",label:"Journal of Clinical Neurophysiology"},{value:"journal-of-clinical-oncology",label:"Journal of Clinical Oncology"},{value:"journal-of-clinical-rheumatology",label:"Journal of Clinical Rheumatology"},{value:"journal-of-clinical-sleep-medicine",label:"Journal of Clinical Sleep Medicine"},{value:"journal-of-combinatorics",label:"Journal of Combinatorics"},{value:"journal-of-common-market-studies",label:"Journal of Common Market Studies"},{value:"journal-of-comparative-pathology",label:"Journal of Comparative Pathology"},{value:"journal-of-computational-chemistry",label:"Journal of Computational Chemistry"},{value:"journal-of-computer-applications-in-archaeology",label:"Journal of Computer Applications in Archaeology"},{value:"journal-of-computer-assisted-tomography",label:"Journal of Computer Assisted Tomography"},{value:"journal-of-computer-information-systems",label:"Journal of Computer Information Systems"},{value:"journal-of-consumer-research",label:"Journal of Consumer Research"},{value:"journal-of-contemporary-medicine",label:"Journal of Contemporary Medicine"},{value:"journal-of-contemporary-water-research-and-education",label:"Journal of Contemporary Water Research and Education"},{value:"journal-of-crohns-and-colitis-supplements",label:"Journal of Crohn's and Colitis Supplements"},{value:"journal-of-crohns-and-colitis",label:"Journal of Crohn's and Colitis"},{value:"journal-of-dairy-science",label:"Journal of Dairy Science"},{value:"journal-of-dental-research",label:"Journal of Dental Research"},{value:"journal-of-early-christian-studies",label:"Journal of Early Christian Studies"},{value:"journal-of-economic-impact",label:"Journal of Economic Impact"},{value:"journal-of-egyptian-history",label:"Journal of Egyptian History"},{value:"journal-of-elections-public-opinion-and-parties",label:"Journal of Elections, Public Opinion & Parties"},{value:"journal-of-endodontics",label:"Journal of Endodontics"},{value:"journal-of-environmental-science-and-health-part-b",label:"Journal of Environmental Science and Health, Part B"},{value:"journal-of-ethnobiology",label:"Journal of Ethnobiology"},{value:"journal-of-european-public-policy",label:"Journal of European Public Policy"},{value:"journal-of-evolution-and-health",label:"Journal of Evolution and Health"},{value:"journal-of-evolutionary-biology",label:"Journal of Evolutionary Biology"},{value:"journal-of-experimental-botany",label:"Journal of Experimental Botany"},{value:"journal-of-field-ornithology",label:"Journal of Field Ornithology"},{value:"journal-of-finance",label:"Journal of Finance"},{value:"journal-of-financial-and-quantitative-analysis",label:"Journal of Financial and Quantitative Analysis"},{value:"journal-of-fish-biology",label:"Journal of Fish Biology"},{value:"journal-of-food-protection",label:"Journal of Food Protection"},{value:"journal-of-foraminiferal-research",label:"Journal of Foraminiferal Research"},{value:"journal-of-forensic-sciences",label:"Journal of Forensic Sciences"},{value:"journal-of-frailty-and-aging",label:"Journal of Frailty & Aging"},{value:"journal-of-geriatric-psychiatry-and-neurology",label:"Journal of Geriatric Psychiatry and Neurology"},{value:"journal-of-glaciology",label:"Journal of Glaciology"},{value:"journal-of-global-health",label:"Journal of Global Health"},{value:"journal-of-health-care-for-the-poor-and-underserved",label:"Journal of Health Care for the Poor and Underserved"},{value:"journal-of-hearing-science",label:"Journal of Hearing Science"},{value:"journal-of-historical-linguistics",label:"Journal of Historical Linguistics"},{value:"journal-of-human-evolution",label:"Journal of Human Evolution"},{value:"journal-of-human-rights",label:"Journal of Human Rights"},{value:"journal-of-hypertension",label:"Journal of Hypertension"},{value:"journal-of-industrial-and-engineering-chemistry",label:"Journal of Industrial and Engineering Chemistry"},{value:"journal-of-industrial-ecology",label:"Journal of Industrial Ecology"},{value:"journal-of-infection",label:"Journal of Infection"},{value:"journal-of-infectious-diseases",label:"Journal of Infectious Diseases"},{value:"journal-of-information-technology",label:"Journal of Information Technology"},{value:"journal-of-institutional-and-theoretical-economics",label:"Journal of Institutional and Theoretical Economics"},{value:"journal-of-instrumentation",label:"Journal of Instrumentation"},{value:"journal-of-integrated-omics",label:"Journal of Integrated OMICS"},{value:"journal-of-interactive-marketing",label:"Journal of Interactive Marketing"},{value:"journal-of-intercultural-studies",label:"Journal of Intercultural Studies"},{value:"journal-of-internal-medicine",label:"Journal of Internal Medicine"},{value:"journal-of-international-business-studies",label:"Journal of International Business Studies"},{value:"journal-of-international-economic-law",label:"Journal of International Economic Law"},{value:"journal-of-international-peacekeeping",label:"Journal of International Peacekeeping"},{value:"journal-of-international-relations-and-development",label:"Journal of International Relations and Development"},{value:"journal-of-investigative-dermatology",label:"Journal of Investigative Dermatology"},{value:"journal-of-jewish-studies",label:"Journal of Jewish Studies"},{value:"journal-of-korean-neurosurgical-society",label:"Journal of Korean Neurosurgical Society"},{value:"journal-of-leukocyte-biology",label:"Journal of Leukocyte Biology"},{value:"journal-of-limnology",label:"Journal of Limnology"},{value:"journal-of-linguistics",label:"Journal of Linguistics"},{value:"journal-of-lipid-research",label:"Journal of Lipid Research"},{value:"journal-of-magnetic-resonance-imaging",label:"Journal Of Magnetic Resonance Imaging"},{value:"journal-of-mammalogy",label:"Journal of Mammalogy"},{value:"journal-of-management-information-systems",label:"Journal of Management Information Systems"},{value:"journal-of-management-studies",label:"Journal of Management Studies"},{value:"journal-of-management",label:"Journal of Management"},{value:"journal-of-materials-research",label:"Journal of Materials Research"},{value:"journal-of-mechanical-science-and-technology",label:"Journal of Mechanical Science and Technology"},{value:"journal-of-medical-genetics",label:"Journal of Medical Genetics"},{value:"journal-of-medical-internet-research",label:"Journal of Medical Internet Research"},{value:"journal-of-microbiology-and-biotechnology",label:"Journal of Microbiology and Biotechnology"},{value:"journal-of-microbiology",label:"Journal of Microbiology"},{value:"journal-of-minimally-invasive-gynecology",label:"Journal of Minimally Invasive Gynecology"},{value:"journal-of-molecular-cell-biology",label:"Journal of Molecular Cell Biology"},{value:"journal-of-molecular-endocrinology",label:"Journal of Molecular Endocrinology"},{value:"journal-of-molecular-recognition",label:"Journal of Molecular Recognition"},{value:"journal-of-molecular-signaling",label:"Journal of Molecular Signaling"},{value:"journal-of-move-and-therapeutic-science",label:"Journal of Move and Therapeutic Science"},{value:"journal-of-musculoskeletal-research",label:"Journal of Musculoskeletal Research"},{value:"journal-of-music-technology-and-education",label:"Journal of Music Technology and Education"},{value:"journal-of-nanoscience-and-nanotechnology",label:"Journal of Nanoscience and Nanotechnology"},{value:"journal-of-natural-history",label:"Journal of Natural History"},{value:"journal-of-neolithic-archaeology",label:"Journal of Neolithic Archaeology"},{value:"journal-of-neurochemistry",label:"Journal of Neurochemistry"},{value:"journal-of-neuroendocrinology",label:"Journal of Neuroendocrinology"},{value:"journal-of-neurological-disorders",label:"Journal of Neurological Disorders"},{value:"journal-of-neurophysiology",label:"Journal of Neurophysiology"},{value:"journal-of-neuroscience-and-neuroengineering",label:"Journal of Neuroscience and Neuroengineering"},{value:"journal-of-new-zealand-grasslands",label:"Journal of New Zealand Grasslands"},{value:"journal-of-nutrition",label:"Journal of Nutrition"},{value:"journal-of-oil-palm-research",label:"Journal of Oil Palm Research"},{value:"journal-of-open-research-software",label:"Journal of Open Research Software"},{value:"journal-of-oral-and-maxillofacial-surgery",label:"Journal of Oral and Maxillofacial Surgery"},{value:"journal-of-orthopaedic-research",label:"Journal of Orthopaedic Research"},{value:"journal-of-orthopaedic-trauma",label:"Journal of Orthopaedic Trauma"},{value:"journal-of-orthopaedics-trauma-and-rehabilitation",label:"Journal of Orthopaedics, Trauma and Rehabilitation"},{value:"journal-of-paleontology",label:"Journal of Paleontology"},{value:"journal-of-peace-research",label:"Journal of Peace Research"},{value:"journal-of-pediatric-gastroenterology-and-nutrition",label:"Journal of Pediatric Gastroenterology and Nutrition"},{value:"journal-of-peptide-science",label:"Journal of Peptide Science"},{value:"journal-of-perinatal-medicine",label:"Journal of Perinatal Medicine"},{value:"journal-of-periodontal-research",label:"Journal of Periodontal Research"},{value:"journal-of-petrology",label:"Journal of Petrology"},{value:"journal-of-pharmacy-and-pharmacology",label:"Journal of Pharmacy and Pharmacology"},{value:"journal-of-phycology",label:"Journal of Phycology"},{value:"journal-of-physical-therapy-science",label:"Journal of Physical Therapy Science"},{value:"journal-of-plankton-research",label:"Journal of Plankton Research"},{value:"journal-of-plant-ecology",label:"Journal of Plant Ecology"},{value:"journal-of-plant-nutrition-and-soil-science",label:"Journal of Plant Nutrition and Soil Science"},{value:"journal-of-plant-protection-research",label:"Journal of Plant Protection Research"},{value:"journal-of-political-ideologies",label:"Journal of Political Ideologies"},{value:"journal-of-political-philosophy",label:"Journal of Political Philosophy"},{value:"journal-of-pollination-ecology",label:"Journal of Pollination Ecology"},{value:"journal-of-polymer-science-part-a-polymer-chemistry",label:"Journal of Polymer Science Part A: Polymer Chemistry"},{value:"journal-of-porphyrins-and-phthalocyanines",label:"Journal of Porphyrins and Phthalocyanines"},{value:"journal-of-product-innovation-management",label:"Journal of Product Innovation Management"},{value:"journal-of-psychiatric-and-mental-health-nursing",label:"Journal of Psychiatric and Mental Health Nursing"},{value:"journal-of-psychiatry-and-neuroscience",label:"Journal of Psychiatry & Neuroscience"},{value:"journal-of-raman-spectroscopy",label:"Journal of Raman Spectroscopy"},{value:"journal-of-reconstructive-microsurgery",label:"Journal of Reconstructive Microsurgery"},{value:"journal-of-refugee-studies",label:"Journal of Refugee Studies"},{value:"journal-of-retailing",label:"Journal of Retailing"},{value:"journal-of-rheumatology",label:"Journal of Rheumatology"},{value:"journal-of-roman-archaeology-a",label:"Journal of Roman Archaeology (A)"},{value:"journal-of-roman-archaeology-b",label:"Journal of Roman Archaeology (B)"},{value:"journal-of-science-and-medicine-in-sport",label:"Journal of Science and Medicine in Sport"},{value:"journal-of-separation-science",label:"Journal of Separation Science"},{value:"journal-of-shoulder-and-elbow-surgery",label:"Journal of Shoulder and Elbow Surgery"},{value:"journal-of-simulation",label:"Journal of Simulation"},{value:"journal-of-sleep-research",label:"Journal of Sleep Research"},{value:"journal-of-small-animal-practice",label:"Journal of Small Animal Practice"},{value:"journal-of-small-business-management",label:"Journal of Small Business Management"},{value:"journal-of-social-archaeology",label:"Journal of Social Archaeology"},{value:"journal-of-social-philosophy",label:"Journal of Social Philosophy"},{value:"journal-of-soil-and-water-conservation",label:"Journal of Soil and Water Conservation"},{value:"journal-of-soil-science-and-plant-nutrition",label:"Journal of Soil Science and Plant Nutrition"},{value:"journal-of-sport-and-health-science",label:"Journal of Sport and Health Science"},{value:"journal-of-sports-science-and-medicine",label:"Journal of Sports Science & Medicine"},{value:"journal-of-strength-and-conditioning-research",label:"Journal of Strength and Conditioning Research"},{value:"journal-of-stroke",label:"Journal of Stroke"},{value:"journal-of-structural-geology",label:"Journal of Structural Geology"},{value:"journal-of-studies-on-alcohol-and-drugs",label:"Journal of Studies on Alcohol and Drugs"},{value:"journal-of-surgery-and-medicine",label:"Journal of Surgery and Medicine"},{value:"journal-of-surgical-oncology",label:"Journal of Surgical Oncology"},{value:"journal-of-systematic-palaeontology",label:"Journal of Systematic Palaeontology"},{value:"journal-of-the-air-and-waste-management-association",label:"Journal of the Air & Waste Management Association"},{value:"journal-of-the-american-academy-of-audiology",label:"Journal of the American Academy of Audiology"},{value:"journal-of-the-american-academy-of-orthopaedic-surgeons",label:"Journal of the American Academy of Orthopaedic Surgeons"},{value:"journal-of-the-american-animal-hospital-association",label:"Journal of the American Animal Hospital Association"},{value:"journal-of-the-american-association-of-laboratory-animal-science",label:"Journal of the American Association of Laboratory Animal Science"},{value:"journal-of-the-american-ceramic-society",label:"Journal of the American Ceramic Society"},{value:"journal-of-the-american-college-of-cardiology",label:"Journal of the American College of Cardiology"},{value:"journal-of-the-american-college-of-surgeons",label:"Journal of the American College of Surgeons"},{value:"journal-of-the-american-heart-association",label:"Journal of the American Heart Association"},{value:"journal-of-the-american-society-of-brewing-chemists",label:"Journal of the American Society of Brewing Chemists"},{value:"journal-of-the-american-society-of-nephrology",label:"Journal of the American Society of Nephrology"},{value:"journal-of-the-american-water-resources-association",label:"Journal of the American Water Resources Association"},{value:"journal-of-the-association-for-information-systems",label:"Journal of the Association for Information Systems"},{value:"journal-of-the-association-of-environmental-and-resource-economists",label:"Journal of the Association of Environmental and Resource Economists"},{value:"journal-of-the-botanical-research-institute-of-texas",label:"Journal of the Botanical Research Institute of Texas"},{value:"journal-of-the-brazilian-chemical-society",label:"Journal of the Brazilian Chemical Society"},{value:"journal-of-the-electrochemical-society",label:"Journal of The Electrochemical Society"},{value:"journal-of-the-european-academy-of-dermatology-and-venereology",label:"Journal of the European Academy of Dermatology and Venereology"},{value:"journal-of-the-history-of-collections",label:"Journal of the History of Collections"},{value:"journal-of-the-indian-law-institute",label:"Journal of the Indian Law Institute"},{value:"journal-of-the-korean-society-of-civil-engineers",label:"Journal of the Korean Society of Civil Engineers"},{value:"journal-of-the-marine-biological-association-of-the-united-kingdom",label:"Journal of the Marine Biological Association of the United Kingdom"},{value:"journal-of-the-royal-anthropological-institute",label:"Journal of the Royal Anthropological Institute"},{value:"journal-of-the-royal-society-of-western-australia",label:"Journal of the Royal Society of Western Australia"},{value:"journal-of-the-royal-statistical-society",label:"Journal of the Royal Statistical Society"},{value:"journal-of-the-science-of-food-and-agriculture",label:"Journal of the Science of Food and Agriculture"},{value:"journal-of-the-serbian-chemical-society",label:"Journal of the Serbian Chemical Society"},{value:"journal-of-the-warburg-and-courtauld-institutes",label:"Journal of the Warburg and Courtauld Institutes"},{value:"journal-of-thermal-spray-technology",label:"Journal of Thermal Spray Technology"},{value:"journal-of-threatened-taxa",label:"Journal of Threatened Taxa"},{value:"journal-of-thrombosis-and-haemostasis",label:"Journal of Thrombosis and Haemostasis"},{value:"journal-of-tropical-ecology",label:"Journal of Tropical Ecology"},{value:"journal-of-tropical-life-science",label:"Journal of Tropical Life Science"},{value:"journal-of-universal-computer-science",label:"Journal of Universal Computer Science"},{value:"journal-of-urban-and-environmental-engineering",label:"Journal of Urban and Environmental Engineering"},{value:"journal-of-urban-technology",label:"Journal of Urban Technology"},{value:"journal-of-value-inquiry",label:"The Journal of Value Inquiry"},{value:"journal-of-vegetation-science",label:"Journal of Vegetation Science"},{value:"journal-of-vertebrate-biology",label:"Journal of Vertebrate Biology"},{value:"journal-of-vertebrate-paleontology",label:"Journal of Vertebrate Paleontology"},{value:"journal-of-vestibular-research",label:"Journal of Vestibular Research"},{value:"journal-of-veterinary-diagnostic-investigation",label:"Journal of Veterinary Diagnostic Investigation"},{value:"journal-of-visualized-experiments",label:"Journal of Visualized Experiments"},{value:"journal-of-water-sanitation-and-hygiene-for-development",label:"Journal of Water Sanitation and Hygiene for Development"},{value:"journal-of-wildlife-diseases",label:"Journal of Wildlife Diseases"},{value:"journal-of-zoo-and-wildlife-medicine",label:"Journal of Zoo and Wildlife Medicine"},{value:"journal-of-zoo-biology",label:"Journal of Zoo Biology"},{value:"journal-of-zoology",label:"Journal of Zoology"},{value:"journal-on-efficiency-and-responsibility-in-education-and-science",label:"Journal on Efficiency and Responsibility in Education and Science"},{value:"journalistica",label:"Journalistica (Dansk)"},{value:"jurisprudence",label:"Jurisprudence (\u010Ce\u0161tina)"},{value:"juristische-schulung",label:"Juristische Schulung (Deutsch)"},{value:"juristische-zitierweise-offentliches-recht",label:"Juristische Zitierweise - \xD6ffentliches Recht (Deutsch)"},{value:"juristische-zitierweise-schweizer",label:"Juristische Zitierweise Schweizer (Ryser B\xFCschi et al.) (Deutsch - Schweiz)"},{value:"juristische-zitierweise",label:"Juristische Zitierweise (St\xFCber) (Deutsch)"},{value:"jurnal-ilmu-dan-teknologi-hasil-ternak",label:"Jurnal Ilmu dan Teknologi Hasil Ternak"},{value:"jurnal-pangan-dan-agroindustri",label:"Jurnal Pangan dan Agroindustri (Bahasa Indonesia)"},{value:"jurnal-sains-farmasi-dan-klinis",label:"Jurnal Sains Farmasi & Klinis"},{value:"jyvaskylan-yliopisto-kemian-laitos",label:"Jyv\xE4skyl\xE4n yliopisto - Kemian laitos (Suomi)"},{value:"karabuk-university-graduate-school-of-natural-and-applied-sciences",label:"Karabuk University - Graduate School of Natural and Applied Sciences"},{value:"karger-journals-author-date",label:"Karger journals (author-date)"},{value:"karger-journals",label:"Karger journals"},{value:"karlstad-universitet-harvard",label:"Karlstad Universitet - Harvard (Svenska)"},{value:"karstenia",label:"Karstenia"},{value:"keel-ja-kirjandus",label:"Keel ja Kirjandus (Eesti keel)"},{value:"kidney-research-and-clinical-practice",label:"Kidney Research and Clinical Practice"},{value:"kindheit-und-entwicklung",label:"Kindheit und Entwicklung"},{value:"kit-karlsruher-institut-fur-technologie-germanistik-ndl-neuere-deutsche-literaturwissenschaft",label:"KIT Karlsruher Institut f\xFCr Technologie Germanistik NDL Neuere Deutsche Literaturwissenschaft (German)"},{value:"klinische-padiatrie",label:"Klinische P\xE4diatrie"},{value:"knee-surgery-and-related-research",label:"Knee Surgery & Related Research"},{value:"knee-surgery-sports-traumatology-arthroscopy",label:"Knee Surgery, Sports Traumatology, Arthroscopy"},{value:"knowledge-and-management-of-aquatic-ecosystems",label:"Knowledge & Management of Aquatic Ecosystems"},{value:"kolner-zeitschrift-fur-soziologie-und-sozialpsychologie",label:"K\xF6lner Zeitschrift f\xFCr Soziologie und Sozialpsychologie (Deutsch)"},{value:"kommunikation-und-recht",label:"Kommunikation und Recht (Deutsch)"},{value:"kona-powder-and-particle-journal",label:"KONA Powder and Particle Journal"},{value:"korean-journal-of-anesthesiology",label:"Korean Journal of Anesthesiology"},{value:"korean-journal-of-radiology",label:"Korean Journal of Radiology"},{value:"kritische-ausgabe",label:"Kritische Ausgabe (Deutsch)"},{value:"ksce-journal-of-civil-engineering",label:"KSCE Journal of Civil Engineering"},{value:"kth-royal-institute-of-technology-school-of-computer-science-and-communication-sv",label:"KTH Royal Institute of Technology - School of Computer Science and Communication (Svenska)"},{value:"kth-royal-institute-of-technology-school-of-computer-science-and-communication",label:"KTH Royal Institute of Technology - School of Computer Science and Communication"},{value:"kunstakademie-munster",label:"Kunstakademie M\xFCnster (Deutsch)"},{value:"l-homme",label:"L'homme \u2013 Revue fran\xE7aise d'anthropologie"},{value:"la-revue-des-sciences-de-gestion",label:"La Revue des Sciences de Gestion (Fran\xE7ais)"},{value:"la-trobe-university-apa",label:"La Trobe University - APA 6th edition"},{value:"la-trobe-university-harvard",label:"La Trobe University - Harvard"},{value:"laboratory-animal-science-professional",label:"Laboratory Animal Science Professional"},{value:"lancaster-university-harvard",label:"Lancaster University - Harvard"},{value:"land-degradation-and-development",label:"Land Degradation & Development"},{value:"landes-bioscience-journals",label:"Landes Bioscience Journals"},{value:"language-in-society",label:"Language in Society"},{value:"language",label:"Language"},{value:"lannee-sociologique",label:"L\u2019Ann\xE9e sociologique (Fran\xE7ais)"},{value:"laser-and-photonics-reviews",label:"Laser & Photonics Reviews"},{value:"latin-american-perspectives",label:"Latin American Perspectives"},{value:"latin-american-research-review",label:"Latin American Research Review"},{value:"lauterbornia",label:"Lauterbornia - Internationale Zeitschrift f\xFCr Faunistik und Floristik des S\xFC\xDFwassers (Deutsch)"},{value:"law-and-society-review",label:"Law & Society Review"},{value:"law-citation-manual",label:"Law Citation Manual (\u4E2D\u6CD5\u5B66\u6CE8\u5F15\u624B\u518C, \u4E2D\u6587)"},{value:"law-technology-and-humans",label:"Law, Technology and Humans"},{value:"lcgc",label:"LCGC"},{value:"le-mouvement-social",label:"Le Mouvement Social (Fran\xE7ais)"},{value:"le-tapuscrit-author-date",label:"Le tapuscrit (\xC9cole des hautes \xE9tudes en sciences sociales) (author-date, Fran\xE7ais)"},{value:"le-tapuscrit-note",label:"Le tapuscrit (\xC9cole des hautes \xE9tudes en sciences sociales) (note, Fran\xE7ais)"},{value:"leiden-journal-of-international-law",label:"Leiden Journal of International Law"},{value:"leidraad-voor-juridische-auteurs",label:"Leidraad voor juridische auteurs 2019 (Nederlands)"},{value:"leonardo",label:"Leonardo"},{value:"les-cahiers-du-journalisme",label:"Les Cahiers du journalisme (Fran\xE7ais)"},{value:"les-journees-de-la-recherche-avicole",label:"Les Journ\xE9es de la Recherche Avicole (Fran\xE7ais)"},{value:"les-journees-de-la-recherche-porcine",label:"Les Journ\xE9es de la Recherche Porcine (Fran\xE7ais)"},{value:"les-nouvelles-de-l-archeologie",label:"Les nouvelles de l'arch\xE9ologie (Fran\xE7ais)"},{value:"lethaia",label:"Lethaia"},{value:"letters-in-applied-microbiology",label:"Letters in Applied Microbiology"},{value:"lettres-et-sciences-humaines-fr",label:"Lettres et Sciences Humaines (biblio et notes, Fran\xE7ais)"},{value:"leviathan",label:"Leviathan (Deutsch)"},{value:"lien-social-et-politiques",label:"Lien social et Politiques (Fran\xE7ais)"},{value:"limnetica",label:"Limnetica"},{value:"limnology-and-oceanography",label:"Limnology and Oceanography"},{value:"liver-international",label:"Liver International"},{value:"liverpool-john-moores-university-harvard",label:"Liverpool John Moores University - Harvard"},{value:"lluelles-no-ibid",label:"Guide des r\xE9f\xE9rences pour la r\xE9daction juridique 7e \xE9dition (Notes compl\xE8tes) (Guide Lluelles, no Ibid., Fran\xE7ais - Canada)"},{value:"lluelles",label:"Guide des r\xE9f\xE9rences pour la r\xE9daction juridique 7e \xE9dition (Guide Lluelles, Fran\xE7ais - Canada)"},{value:"london-metropolitan-university-harvard",label:"London Metropolitan University - Harvard"},{value:"london-review-of-international-law",label:"London Review of International Law"},{value:"london-south-bank-university-numeric",label:"London South Bank University (numeric)"},{value:"lund-university-school-of-economics-and-management",label:"Lund University School of Economics and Management"},{value:"macromolecular-reaction-engineering",label:"Macromolecular Reaction Engineering"},{value:"magnetic-resonance-in-medical-sciences",label:"Magnetic Resonance in Medical Sciences"},{value:"magnetic-resonance-in-medicine",label:"Magnetic Resonance in Medicine"},{value:"magnetic-resonance-materials-in-physics-biology-and-medicine",label:"Magnetic Resonance Materials in Physics, Biology and Medicine"},{value:"maison-de-l-orient-et-de-la-mediterranee-en",label:"Maison de l'Orient et de la M\xE9diterran\xE9e (English)"},{value:"maison-de-l-orient-et-de-la-mediterranee",label:"Maison de l'Orient et de la M\xE9diterran\xE9e (Fran\xE7ais)"},{value:"malaysian-orthopaedic-journal",label:"Malaysian Orthopaedic Journal"},{value:"mammal-review",label:"Mammal Review"},{value:"mammalia",label:"Mammalia"},{value:"mammalogy-notes",label:"Mammalogy Notes"},{value:"management-et-avenir",label:"Management & Avenir (Fran\xE7ais)"},{value:"management-international",label:"Management international"},{value:"management-of-biological-invasions",label:"Management of Biological Invasions"},{value:"manchester-university-press-author-date",label:"Manchester University Press monographs (author-date)"},{value:"manchester-university-press",label:"Manchester University Press monographs (note)"},{value:"marine-biology",label:"Marine Biology"},{value:"marine-mammal-science",label:"Marine Mammal Science"},{value:"marine-ornithology",label:"Marine Ornithology"},{value:"marine-turtle-newsletter",label:"Marine Turtle Newsletter"},{value:"marmara-universitesi-turkiyat-arastirmalari-enstitusu",label:"Marmara \xDCniversitesi - T\xFCrkiyat Ara\u015Ft\u0131rmalar\u0131 Enstit\xFCs\xFC (T\xFCrk\xE7e)"},{value:"mary-ann-liebert-harvard",label:"Mary Ann Liebert - Harvard"},{value:"mary-ann-liebert-vancouver",label:"Mary Ann Liebert - Vancouver"},{value:"masarykova-univerzita-pravnicka-fakulta",label:"Masarykova univerzita - Pr\xE1vnick\xE1 fakulta"},{value:"mastozoologia-neotropical",label:"Mastozoologia Neotropical"},{value:"materials-express",label:"Materials Express"},{value:"mathematical-geosciences",label:"Mathematical Geosciences"},{value:"mathematics-and-computers-in-simulation",label:"Mathematics and Computers in Simulation"},{value:"mcdonald-institute-monographs",label:"McDonald Institute Monographs"},{value:"mcgill-en",label:"Canadian Guide to Uniform Legal Citation 9th edition (McGill Guide)"},{value:"mcgill-fr",label:"Manuel canadien de la r\xE9f\xE9rence juridique 9e \xE9dition (Guide McGill, Fran\xE7ais - Canada)"},{value:"medecine-intensive-reanimation",label:"M\xE9decine Intensive R\xE9animation"},{value:"medecine-sciences",label:"m\xE9decine/sciences"},{value:"media-culture-and-society",label:"Media, Culture & Society"},{value:"mediaeval-studies",label:"Mediaeval Studies"},{value:"medical-dosimetry",label:"Medical Dosimetry"},{value:"medical-history",label:"Medical History"},{value:"medicina-clinica",label:"Medicina Cl\xEDnica (Espa\xF1ol)"},{value:"medicina-delle-dipendenze-italian-journal-of-the-addictions",label:"Medicina delle Dipendenze - Italian Journal of the Addictions (Italiano)"},{value:"medicinal-research-reviews",label:"Medicinal Research Reviews"},{value:"medicine-and-science-in-sports-and-exercise",label:"Medicine & Science in Sports & Exercise"},{value:"medicine-publishing",label:"Medicine Publishing"},{value:"medicinski-razgledi",label:"Medicinski razgledi"},{value:"medicinskiy-akademicheskiy-zhurnal",label:"Medicinskiy Akademicheskiy Zhurnal"},{value:"mediterranean-journal-of-chemistry",label:"Mediterranean Journal of Chemistry"},{value:"mediterranean-journal-of-infection-microbes-and-antimicrobials",label:"Mediterranean Journal of Infection, Microbes and Antimicrobials"},{value:"mediterranean-politics",label:"Mediterranean Politics"},{value:"melbourne-school-of-theology",label:"Melbourne School of Theology"},{value:"memorias-do-instituto-oswaldo-cruz",label:"Mem\xF3rias do Instituto Oswaldo Cruz"},{value:"mercator-institut-fur-sprachforderung-und-deutsch-als-zweitsprache",label:"Mercator-Institut f\xFCr Sprachf\xF6rderung und Deutsch als Zweitsprache (Deutsch)"},{value:"mercatus-center",label:"Mercatus Center"},{value:"metallurgical-and-materials-transactions-a",label:"Metallurgical and Materials Transactions A"},{value:"metallurgical-and-materials-transactions",label:"Metallurgical and Materials Transactions"},{value:"meteoritics-and-planetary-science",label:"Meteoritics & Planetary Science"},{value:"meteorological-applications",label:"Meteorological Applications"},{value:"method-and-theory-in-the-study-of-religion",label:"Method & Theory in the Study of Religion"},{value:"methods-of-information-in-medicine",label:"Methods of Information in Medicine"},{value:"metropol-verlag",label:"Metropol Verlag (Deutsch)"},{value:"metropolia-university-of-applied-sciences-harvard",label:"Metropolia Ammattikorkeakoulu - Harvard (Suomi)"},{value:"metropolitiques",label:"M\xE9tropolitiques (Fran\xE7ais)"},{value:"microbial-cell",label:"Microbial Cell"},{value:"microbiology-society",label:"Microbiology Society"},{value:"microcirculation",label:"Microcirculation"},{value:"microscopy-and-microanalysis",label:"Microscopy and Microanalysis"},{value:"middle-east-critique",label:"Middle East Critique"},{value:"midwestern-baptist-theological-seminary",label:"Midwestern Baptist Theological Seminary"},{value:"mimbar-hukum",label:"Mimbar Hukum"},{value:"mimesis-edizioni",label:"Mimesis Edizioni (Italiano)"},{value:"mind-and-language",label:"Mind & Language"},{value:"mineralogical-magazine",label:"Mineralogical Magazine"},{value:"mis-quarterly",label:"MIS Quarterly"},{value:"modern-chinese-literature-and-culture",label:"Modern Chinese Literature and Culture"},{value:"modern-humanities-research-association-author-date",label:"Modern Humanities Research Association 3rd edition (author-date)"},{value:"modern-humanities-research-association",label:"Modern Humanities Research Association 3rd edition (note with bibliography)"},{value:"modern-language-association-6th-edition-note",label:"Modern Language Association 6th edition (note)"},{value:"modern-language-association-7th-edition-underline",label:"Modern Language Association 7th edition (underline)"},{value:"modern-language-association-7th-edition-with-url",label:"Modern Language Association 7th edition (with URL)"},{value:"modern-language-association-7th-edition",label:"Modern Language Association 7th edition"},{value:"modern-language-association-8th-edition",label:"Modern Language Association 8th edition"},{value:"modern-language-association",label:"Modern Language Association 9th edition"},{value:"modern-pathology",label:"Modern Pathology"},{value:"modern-phytomorphology",label:"Modern Phytomorphology"},{value:"mohr-siebeck-recht",label:"Mohr Siebeck - Recht (Deutsch - \xD6sterreich)"},{value:"molecular-and-cellular-proteomics",label:"Molecular & Cellular Proteomics"},{value:"molecular-biology-and-evolution",label:"Molecular Biology and Evolution"},{value:"molecular-biology-of-the-cell",label:"Molecular Biology of the Cell"},{value:"molecular-biology",label:"Molecular Biology"},{value:"molecular-metabolism",label:"Molecular Metabolism"},{value:"molecular-microbiology",label:"Molecular Microbiology"},{value:"molecular-nutrition-and-food-research",label:"Molecular Nutrition & Food Research"},{value:"molecular-oncology",label:"Molecular Oncology"},{value:"molecular-plant-microbe-interactions",label:"Molecular Plant-Microbe Interactions"},{value:"molecular-plant-pathology",label:"Molecular Plant Pathology"},{value:"molecular-plant",label:"Molecular Plant"},{value:"molecular-psychiatry-letters",label:"Molecular Psychiatry (letters to the editor)"},{value:"molecular-psychiatry",label:"Molecular Psychiatry"},{value:"monash-university-csiro",label:"Monash University - CSIRO"},{value:"monash-university-harvard",label:"Monash University - Harvard"},{value:"mondes-en-developpement",label:"Mondes en d\xE9veloppement (Fran\xE7ais)"},{value:"monographs-of-the-palaeontographical-society",label:"Monographs of the Palaeontographical Society"},{value:"moore-theological-college",label:"Moore Theological College"},{value:"moorlands-college",label:"Moorlands College"},{value:"mrs-bulletin",label:"MRS Bulletin"},{value:"multidisciplinary-digital-publishing-institute",label:"Multidisciplinary Digital Publishing Institute"},{value:"multilingual-matters",label:"Multilingual Matters"},{value:"multimed",label:"Multimed (Espa\xF1ol)"},{value:"multiple-sclerosis-journal",label:"Multiple Sclerosis Journal"},{value:"muscle-and-nerve",label:"Muscle & Nerve"},{value:"museum-national-dhistoire-naturelle",label:"Mus\xE9um national d'Histoire naturelle"},{value:"music-theory-spectrum",label:"Music Theory Spectrum"},{value:"mutagenesis",label:"Mutagenesis"},{value:"mycobiology",label:"Mycobiology"},{value:"mycologia",label:"Mycologia"},{value:"myrmecological-news",label:"Myrmecological News"},{value:"nano-biomedicine-and-engineering",label:"Nano Biomedicine and Engineering"},{value:"natbib-plainnat-author-date",label:"natbib - plainnat (author-date)"},{value:"national-archives-of-australia",label:"National Archives of Australia"},{value:"national-institute-of-health-research",label:"National Institute of Health Research"},{value:"national-institute-of-organisation-dynamics-australia-harvard",label:"National Institute of Organisation Dynamics Australia - Harvard"},{value:"national-institute-of-technology-karnataka",label:"National Institute of Technology Karnataka"},{value:"national-institute-of-technology-tiruchirappalli",label:"National Institute of Technology, Tiruchirappalli"},{value:"national-library-of-medicine-grant-proposals",label:"National Library of Medicine (grant proposals with PMCID/PMID)"},{value:"national-marine-fisheries-service-national-environmental-policy-act",label:"National Marine Fisheries Service - National Environmental Policy Act"},{value:"national-natural-science-foundation-of-china",label:"National Natural Science Foundation of China (\u4E2D\u6587)"},{value:"national-science-foundation-grant-proposals",label:"National Science Foundation (grant proposals)"},{value:"national-university-of-singapore-department-of-geography-harvard",label:"National University of Singapore - Department of Geography - Harvard"},{value:"nations-and-nationalism",label:"Nations and Nationalism"},{value:"natur-und-landschaft",label:"Natur und Landschaft (Deutsch)"},{value:"natura-croatica",label:"Natura Croatica"},{value:"nature-neuroscience-brief-communications",label:"Nature Neuroscience (brief communications)"},{value:"nature-no-et-al",label:'Nature (no "et al.")'},{value:"nature-no-superscript",label:"Nature (no superscript)"},{value:"nature-publishing-group-vancouver",label:"Nature Publishing Group - Vancouver"},{value:"nature",label:"Nature"},{value:"natures-sciences-societes",label:"Natures Sciences Soci\xE9t\xE9s"},{value:"nauplius",label:"Nauplius"},{value:"navigation",label:"Navigation"},{value:"nccr-mediality",label:"NCCR Mediality. Medienwandel - Medienwechsel - Medienwissen (Deutsch)"},{value:"necmettin-erbakan-universitesi-fen-ve-muhendislik-bilimleri-dergisi",label:"Necmettin Erbakan \xDCniversitesi Fen ve M\xFChendislik Bilimleri Dergisi (T\xFCrk\xE7e)"},{value:"nehet",label:"NeHeT (Fran\xE7ais)"},{value:"nejm-catalyst-innovations-in-care-delivery",label:"NEJM Catalyst Innovations in Care Delivery"},{value:"nephrology-dialysis-transplantation",label:"Nephrology Dialysis Transplantation"},{value:"netherlands-journal-of-geosciences-geologie-en-mijnbouw",label:"Netherlands Journal of Geosciences - Geologie en Mijnbouw"},{value:"neue-juristische-wochenschrift",label:"Neue Juristische Wochenschrift (Deutsch)"},{value:"neue-kriminalpolitik",label:"Neue Kriminalpolitik (Deutsch)"},{value:"neural-plasticity",label:"Neural Plasticity"},{value:"neuroendocrinology-letters",label:"Neuroendocrinology Letters"},{value:"neuroimaging-clinics-of-north-america",label:"Neuroimaging Clinics of North America"},{value:"neurologia-argentina",label:"Neurolog\xEDa Argentina (Espa\xF1ol)"},{value:"neurologia",label:"Neurolog\xEDa (Espa\xF1ol)"},{value:"neurology-india",label:"Neurology India"},{value:"neurology",label:"Neurology"},{value:"neuropsychopharmacology",label:"Neuropsychopharmacology"},{value:"neurorehabilitation-and-neural-repair",label:"Neurorehabilitation and Neural Repair"},{value:"neuroreport",label:"NeuroReport"},{value:"neurospine",label:"Neurospine"},{value:"neurosurgery-clinics-of-north-america",label:"Neurosurgery Clinics of North America"},{value:"new-harts-rules-the-oxford-style-guide",label:"New Hart's Rules: The Oxford Style Guide"},{value:"new-phytologist",label:"New Phytologist"},{value:"new-solutions",label:"New Solutions"},{value:"new-testament-studies",label:"New Testament Studies"},{value:"new-zealand-dental-journal",label:"New Zealand Dental Journal"},{value:"new-zealand-journal-of-forestry-science",label:"New Zealand Journal of Forestry Science"},{value:"new-zealand-journal-of-history",label:"New Zealand Journal of History"},{value:"new-zealand-plant-protection",label:"New Zealand Plant Protection"},{value:"new-zealand-veterinary-journal",label:"New Zealand Veterinary Journal"},{value:"nist-technical-publication-journal-of-research-of-nist",label:"NIST Technical Publications - Journal of Research of NIST"},{value:"nordic-pulp-and-paper-research-journal",label:"Nordic Pulp & Paper Research Journal"},{value:"norma-portuguesa-405",label:"Norma Portuguesa 405 (Portugu\xEAs)"},{value:"norois",label:"Norois (Fran\xE7ais)"},{value:"norsk-apa-manual-note",label:"Norsk APA-manual - APA 7th edition (note)"},{value:"norsk-apa-manual",label:"Norsk APA-manual - APA 7th edition (author-date)"},{value:"norsk-henvisningsstandard-for-rettsvitenskapelige-tekster",label:"Norsk henvisningsstandard for rettsvitenskapelige tekster (Norsk - Bokm\xE5l)"},{value:"northeastern-naturalist",label:"Northeastern Naturalist"},{value:"nottingham-trent-university-library-harvard",label:"Nottingham Trent University Library - Harvard"},{value:"nouvelles-perspectives-en-sciences-sociales",label:"Nouvelles perspectives en sciences sociales (Fran\xE7ais - Canada)"},{value:"novasinergia",label:"Novasinergia"},{value:"nowa-audiofonologia",label:"Nowa Audiofonologia (Polski)"},{value:"nuclear-receptor-signaling",label:"Nuclear Receptor Signaling"},{value:"nucleic-acids-research-web-server-issue",label:"Nucleic Acids Research - Web Server Issue"},{value:"nucleic-acids-research",label:"Nucleic Acids Research"},{value:"nutrition-research-reviews",label:"Nutrition Research Reviews"},{value:"obafemi-awolowo-university-faculty-of-technology",label:"Obafemi Awolowo University - Faculty of Technology"},{value:"obesity",label:"Obesity"},{value:"obstetrics-and-gynecology-science",label:"Obstetrics & Gynecology Science"},{value:"occupational-medicine",label:"Occupational Medicine"},{value:"ocean-and-coastal-research",label:"Ocean and Coastal Research"},{value:"oceanography",label:"Oceanography"},{value:"oecologia-australis",label:"Oecologia Australis"},{value:"offa",label:"Offa - Berichte und Mitteilungen zur Urgeschichte, Fr\xFChgeschichte und Mittelalterarch\xE4ologie"},{value:"oikos",label:"Oikos"},{value:"oil-shale",label:"Oil Shale"},{value:"oncoimmunology",label:"OncoImmunology"},{value:"oncotarget",label:"Oncotarget"},{value:"open-gender-journal",label:"Open Gender Journal"},{value:"open-window",label:"Open Window - Harvard"},{value:"operative-dentistry",label:"Operative Dentistry"},{value:"ophthalmic-genetics",label:"Ophthalmic Genetics"},{value:"ophthalmology-retina",label:"Ophthalmology Retina"},{value:"ophthalmology",label:"Ophthalmology"},{value:"optics-express",label:"Optics Express"},{value:"optics-letters",label:"Optics Letters"},{value:"opto-electronic-advances",label:"Opto-Electronic Advances"},{value:"optometry-and-vision-science",label:"Optometry & Vision Science"},{value:"opuscula",label:"Opuscula"},{value:"oral-diseases",label:"Oral Diseases"},{value:"organic-geochemistry",label:"Organic Geochemistry"},{value:"organised-sound",label:"Organised Sound"},{value:"organization-studies",label:"Organization Studies"},{value:"organization",label:"Organization"},{value:"organon",label:"Organon"},{value:"ornitologia-neotropical",label:"Ornitolog\xEDa Neotropical"},{value:"orthopedic-clinics-of-north-america",label:"Orthopedic Clinics of North America"},{value:"oryx",label:"Oryx"},{value:"oscola-no-ibid",label:"OSCOLA (Oxford University Standard for Citation of Legal Authorities) (no Ibid.)"},{value:"oscola",label:"OSCOLA (Oxford University Standard for Citation of Legal Authorities)"},{value:"osterreichische-zeitschrift-fur-politikwissenschaft",label:"\xD6sterreichische Zeitschrift f\xFCr Politikwissenschaft (Deutsch - \xD6sterreich)"},{value:"otto-von-guricke-universitat-magdeburg-medizinische-fakultat-numeric",label:"Otto-von-Guericke-Universit\xE4t Magdeburg - Medizinische Fakult\xE4t (numeric)"},{value:"owbarth-verlag",label:"O.W. Barth Verlag (Deutsch)"},{value:"oxford-art-journal",label:"Oxford Art Journal"},{value:"oxford-centre-for-mission-studies-harvard",label:"Oxford Centre for Mission Studies - Harvard"},{value:"oxford-studies-in-ancient-philosophy",label:"Oxford Studies in Ancient Philosophy"},{value:"oxford-studies-on-the-roman-economy",label:"Oxford Studies on the Roman Economy"},{value:"oxford-the-university-of-new-south-wales",label:"The University of New South Wales - Oxford"},{value:"oxford-university-press-humsoc",label:"Oxford University Press HUMSOC"},{value:"oxford-university-press-note",label:"Oxford University Press (note)"},{value:"oxford-university-press-scimed-author-date",label:"Oxford University Press SciMed (author-date)"},{value:"oxford-university-press-scimed-numeric",label:"Oxford University Press SciMed (numeric)"},{value:"oxidation-of-metals",label:"Oxidation of Metals"},{value:"pacific-conservation-biology",label:"Pacific Conservation Biology"},{value:"pacific-science",label:"Pacific Science"},{value:"padagogische-hochschule-bern-institut-vorschulstufe-und-primarstufe",label:"P\xE4dagogische Hochschule Bern - Institut Vorschulstufe und Primarstufe"},{value:"padagogische-hochschule-fachhochschule-nordwestschweiz",label:"P\xE4dagogische Hochschule Fachhochschule Nordwestschweiz (Deutsch - Schweiz)"},{value:"padagogische-hochschule-heidelberg",label:"P\xE4dagogische Hochschule Heidelberg (Deutsch)"},{value:"padagogische-hochschule-vorarlberg",label:"P\xE4dagogische Hochschule Vorarlberg (Deutsch)"},{value:"paediatric-and-perinatal-epidemiology",label:"Paediatric and Perinatal Epidemiology"},{value:"pain-medicine",label:"Pain Medicine"},{value:"pain",label:"PAIN"},{value:"pakistan-journal-of-agricultural-sciences",label:"Pakistan Journal of Agricultural Sciences"},{value:"pakistani-veterinary-journal",label:"Pakistan Veterinary Journal"},{value:"palaeodiversity",label:"Palaeodiversity"},{value:"palaeontographica-abteilung-b-palaeobotany-palaeophytology",label:"Palaeontographica Abteilung B: Palaeobotany - Palaeophytology"},{value:"palaeontologia-electronica",label:"Palaeontologia Electronica"},{value:"palaeontology",label:"Palaeontology"},{value:"palaeovertebrata",label:"Palaeovertebrata"},{value:"palaios",label:"Palaios"},{value:"paleobiology",label:"Paleobiology"},{value:"parasite",label:"Parasite"},{value:"parasitology",label:"Parasitology"},{value:"past-and-present",label:"Past & Present"},{value:"pediatric-allergy-and-immunology",label:"Pediatric Allergy and Immunology"},{value:"pediatric-anesthesia",label:"Pediatric Anesthesia"},{value:"pediatric-blood-and-cancer",label:"Pediatric Blood & Cancer"},{value:"pediatric-infectious-disease-journal",label:"Pediatric Infectious Disease Journal"},{value:"pediatric-physical-therapy",label:"Pediatric Physical Therapy"},{value:"pediatric-practice-and-research",label:"Pediatric Practice and Research"},{value:"pediatric-pulmonology",label:"Pediatric Pulmonology"},{value:"pediatric-research",label:"Pediatric Research"},{value:"pediatric-urology-case-reports",label:"Pediatric Urology Case Reports"},{value:"pedosphere",label:"Pedosphere"},{value:"peerj",label:"PeerJ"},{value:"pensoft-journals",label:"Pensoft Journals"},{value:"periodicum-biologorum",label:"Periodicum Biologorum"},{value:"periodontology-2000",label:"Periodontology 2000"},{value:"permafrost-and-periglacial-processes",label:"Permafrost and Periglacial Processes"},{value:"perspectives-on-sexual-and-reproductive-health",label:"Perspectives on Sexual and Reproductive Health"},{value:"pesquisa-agropecuaria-brasileira",label:"Pesquisa Agropecu\xE1ria Brasileira (Portugu\xEAs - Brasil)"},{value:"pest-management-science",label:"Pest Management Science"},{value:"petit-chicago-author-date",label:"Petit Chicago (author-date, Fran\xE7ais - Canada)"},{value:"pharmacoepidemiology-and-drug-safety",label:"Pharmacoepidemiology and Drug Safety"},{value:"philippika",label:"Philippika (Deutsch)"},{value:"philipps-universitat-marburg-note",label:"Philipps-Universit\xE4t Marburg - Erziehungswissenschaften (note, Deutsch)"},{value:"philosophia-scientiae",label:"Philosophia Scienti\xE6"},{value:"philosophiques",label:"Philosophiques (Fran\xE7ais)"},{value:"philosophy-and-public-affairs",label:"Philosophy & Public Affairs"},{value:"photochemistry-and-photobiology",label:"Photochemistry and Photobiology"},{value:"photosynthetica",label:"Photosynthetica"},{value:"phycological-research",label:"Phycological Research"},{value:"phyllomedusa",label:"Phyllomedusa"},{value:"physiologia-plantarum",label:"Physiologia Plantarum"},{value:"physiological-and-biochemical-zoology",label:"Physiological and Biochemical Zoology"},{value:"physiotherapy-theory-and-practice",label:"Physiotherapy Theory and Practice"},{value:"phytopathologia-mediterranea",label:"Phytopathologia Mediterranea"},{value:"phytotaxa",label:"Phytotaxa"},{value:"pisa-university-press",label:"Pisa University Press"},{value:"planning-practice-and-research",label:"Planning Practice & Research"},{value:"plant-and-cell-physiology",label:"Plant & Cell Physiology"},{value:"plant-biology",label:"Plant Biology"},{value:"plant-biotechnology-journal",label:"Plant Biotechnology Journal"},{value:"plant-cell-and-environment",label:"Plant, Cell & Environment"},{value:"plant-genetic-resources-characterization-and-utilization",label:"Plant Genetic Resources - Characterization and Utilization"},{value:"plant-pathology",label:"Plant Pathology"},{value:"plant-physiology",label:"Plant Physiology"},{value:"plant-species-biology",label:"Plant Species Biology"},{value:"plos",label:"Public Library of Science"},{value:"pnas",label:"Proceedings of the National Academy of Sciences of the United States of America"},{value:"podzemna-voda",label:"Podzemn\xE1 voda (Sloven\u010Dina)"},{value:"polar-research",label:"Polar Research"},{value:"polish-legal",label:"Polish Legal (Polski)"},{value:"politeknik-negeri-manado-jurnal-p3m",label:"Politeknik Negeri Manado - Jurnal Pusat Penelitian dan Pengabdian Kepada Masyarakat (Bahasa Indonesia)"},{value:"political-studies",label:"Political Studies"},{value:"politische-vierteljahresschrift",label:"Politische Vierteljahresschrift (Deutsch)"},{value:"politix",label:"Politix (Fran\xE7ais)"},{value:"polymer-reviews",label:"Polymer Reviews"},{value:"pontifical-athenaeum-regina-apostolorum",label:"Pontifical Athenaeum Regina Apostolorum"},{value:"pontifical-biblical-institute",label:"Pontifical Biblical Institute"},{value:"pontifical-gregorian-university",label:"Pontifical Gregorian University (Italiano)"},{value:"population-space-and-place",label:"Population, Space and Place"},{value:"population",label:"Population (Fran\xE7ais)"},{value:"postepy-higieny-i-medycyny-doswiadczalnej",label:"Post\u0119py Higieny i Medycyny Do\u015Bwiadczalnej (Polski)"},{value:"poultry-science",label:"Poultry Science"},{value:"pour-reussir-note",label:"Pour r\xE9ussir (note, Fran\xE7ais - Canada)"},{value:"pravnik",label:"Pr\xE1vn\xEDk (\u010Ce\u0161tina)"},{value:"praxis",label:"Praxis (Deutsch - Schweiz)"},{value:"prehistoires-mediterraneennes",label:"Pr\xE9histoires m\xE9diterran\xE9ennes"},{value:"prehospital-emergency-care",label:"Prehospital Emergency Care"},{value:"preslia",label:"Preslia - The Journal of the Czech Botanical Society"},{value:"presses-universitaires-de-paris-nanterre",label:"Presses universitaires de Paris Nanterre (note, Fran\xE7ais)"},{value:"presses-universitaires-de-rennes-archeologie-et-culture",label:"Presses Universitaires de Rennes - Arch\xE9ologie et Culture (Fran\xE7ais)"},{value:"presses-universitaires-de-rennes",label:"Presses Universitaires de Rennes (Fran\xE7ais)"},{value:"presses-universitaires-de-strasbourg-note",label:"Presses universitaires de Strasbourg (note, Fran\xE7ais)"},{value:"primary-care-clinics-in-office-practice",label:"Primary Care: Clinics in Office Practice"},{value:"proceedings-of-the-joint-international-grassland-and-international-rangeland-congress-2021",label:"Proceedings of the Joint International Grassland & International Rangeland Congress 2021"},{value:"proceedings-of-the-royal-society-b",label:"Proceedings of the Royal Society B"},{value:"processing-and-application-of-ceramics",label:"Processing and Application of Ceramics"},{value:"production-and-operations-management",label:"Production and Operations Management"},{value:"proinflow",label:"ProInflow (note, \u010Ce\u0161tina)"},{value:"protein-engineering-design-and-selection",label:"Protein Engineering Design and Selection"},{value:"protein-science",label:"Protein Science"},{value:"proteomics",label:"PROTEOMICS"},{value:"psychiatric-clinics-of-north-america",label:"Psychiatric Clinics of North America"},{value:"psychiatric-services",label:"Psychiatric Services"},{value:"psychiatry-and-clinical-neurosciences",label:"Psychiatry and Clinical Neurosciences"},{value:"psychological-medicine",label:"Psychological Medicine"},{value:"psychosomatic-medicine",label:"Psychosomatic Medicine"},{value:"psychosomatics",label:"Psychosomatics"},{value:"public-health-nutrition",label:"Public Health Nutrition"},{value:"pure-and-applied-geophysics",label:"Pure and Applied Geophysics"},{value:"qeios",label:"Qeios"},{value:"quaderni-degli-avogadro-colloquia",label:"Quaderni degli Avogadro Colloquia"},{value:"quaderni-materialisti",label:"Quaderni Materialisti (Italiano)"},{value:"quaderni",label:"Quaderni (Italiano)"},{value:"quaternaire",label:"Quaternaire (Fran\xE7ais)"},{value:"quaternary-international",label:"Quaternary International"},{value:"queen-margaret-university-harvard",label:"Queen Margaret University - Harvard"},{value:"r-and-d-management",label:"R&D Management"},{value:"radiation-protection-dosimetry",label:"Radiation Protection Dosimetry"},{value:"radiochimica-acta",label:"Radiochimica Acta"},{value:"radiographics",label:"RadioGraphics"},{value:"radiography",label:"Radiography"},{value:"radiologic-clinics-of-north-america",label:"Radiologic Clinics of North America"},{value:"radiology",label:"Radiology"},{value:"radiopaedia",label:"Radiopaedia.org"},{value:"raffles-bulletin-of-zoology",label:"Raffles Bulletin of Zoology"},{value:"rassegna-degli-archivi-di-stato",label:"Rassegna degli Archivi di Stato (citazioni estese, italiano)"},{value:"recent-patents-on-drug-delivery-and-formulation",label:"Recent Patents on Drug Delivery & Formulation"},{value:"recherches-en-sciences-de-gestion",label:"Recherches en Sciences de Gestion (Fran\xE7ais)"},{value:"refugee-survey-quarterly",label:"Refugee Survey Quarterly"},{value:"register-studies",label:"Register Studies"},{value:"religion-in-the-roman-empire",label:"Religion in the Roman Empire"},{value:"renewable-agriculture-and-food-systems",label:"Renewable Agriculture and Food Systems"},{value:"reports-of-practical-oncology-and-radiotherapy",label:"Reports of Practical Oncology and Radiotherapy"},{value:"representation",label:"Representation"},{value:"reproduction-fertility-and-development",label:"Reproduction, Fertility and Development"},{value:"reproduction",label:"Reproduction"},{value:"research-and-education-promotion-association",label:"Research and Education Promotion Association"},{value:"research-in-plant-disease",label:"Research in Plant Disease"},{value:"research-institute-for-nature-and-forest",label:"Research Institute for Nature and Forest (Instituut voor Natuur- en Bosonderzoek)"},{value:"research-on-biomedical-engineering",label:"Research on Biomedical Engineering"},{value:"respiratory-care-journal",label:"Respiratory Care Journal"},{value:"restoration-ecology",label:"Restoration Ecology"},{value:"rever-revista-de-estudos-da-religiao",label:"REVER - Revista de Estudos da Religi\xE3o"},{value:"review-of-international-studies",label:"Review of International Studies"},{value:"review-of-political-economy",label:"Review of Political Economy"},{value:"reviews-of-modern-physics-with-titles",label:"Reviews of Modern Physics (with titles)"},{value:"revista-argentina-de-antropologia-biologica",label:"Revista Argentina de Antropologia Biologica (Espa\xF1ol)"},{value:"revista-biblica",label:"Revista B\xEDblica (Espa\xF1ol)"},{value:"revista-brasileira-de-ciencia-do-solo",label:"Revista Brasileira de Ci\xEAncia do Solo"},{value:"revista-chilena-de-derecho-y-tecnologia",label:"Revista Chilena de Derecho y Tecnolog\xEDa (Espa\xF1ol - Chile)"},{value:"revista-ciencias-tecnicas-agropecuarias",label:"Revista Ciencias T\xE9cnicas Agropecuarias (Espa\xF1ol)"},{value:"revista-cubana-de-meteorologia",label:"Revista Cubana de Meteorologia"},{value:"revista-da-sociedade-brasileira-de-medicina-tropical",label:"Revista da Sociedade Brasileira de Medicina Tropical"},{value:"revista-de-biologia-marina-y-oceanografia",label:"Revista de Biolog\xEDa Marina y Oceanograf\xEDa"},{value:"revista-de-biologia-tropical",label:"Revista de Biolog\xEDa Tropical (International Journal of Tropical Biology and Conservation)"},{value:"revista-de-filologia-espanola",label:"Revista de Filolog\xEDa Espa\xF1ola (Espa\xF1ol)"},{value:"revista-do-instituto-de-medicina-tropical-de-sao-paulo",label:"Revista do Instituto de Medicina Tropical de S\xE3o Paulo"},{value:"revista-espanola-de-nutricion-humana-y-dietetica",label:"Revista Espanola de Nutricion Humana y Dietetica (Espa\xF1ol)"},{value:"revista-fave-seccion-ciencias-agrarias",label:"Revista FAVE - Secci\xF3n Ciencias Agrarias (Espa\xF1ol)"},{value:"revista-ladinia",label:"Revista Ladinia"},{value:"revista-latinoamericana-de-metalurgia-y-materiales",label:"Revista Latinoamericana de Metalurgia y Materiales"},{value:"revista-latinoamericana-de-recursos-naturales",label:"Revista Latinoamericana de Recursos Naturales"},{value:"revista-materia",label:"Revista Mat\xE9ria"},{value:"revista-noesis",label:"Revista N\xF3esis"},{value:"revista-peruana-de-medicina-experimental-y-salud-publica",label:"Revista Peruana de Medicina Experimental y Salud P\xFAblica (Espa\xF1ol)"},{value:"revista-portuguesa-de-arqueologia",label:"Revista Portuguesa de Arqueologia"},{value:"revista-virtual-de-quimica",label:"Revista Virtual de Qu\xEDmica (Portugu\xEAs - Brasil)"},{value:"revue-archeologique-de-lest",label:"Revue arch\xE9ologique de l\u2019Est (Fran\xE7ais)"},{value:"revue-archeologique-de-narbonnaise",label:"Revue arch\xE9ologique de Narbonnaise (French)"},{value:"revue-archeologique-du-centre-de-la-france",label:"Revue arch\xE9ologique du Centre de la France (Fran\xE7ais)"},{value:"revue-archeologique",label:"Revue Arch\xE9ologique (Fran\xE7ais)"},{value:"revue-d-elevage-et-de-medecine-veterinaire-des-pays-tropicaux",label:"Revue d'\xE9levage et de m\xE9decine v\xE9t\xE9rinaire des pays tropicaux (Fran\xE7ais)"},{value:"revue-de-medecine-veterinaire",label:"Revue de M\xE9decine V\xE9t\xE9rinaire (Fran\xE7ais)"},{value:"revue-de-qumran",label:"Revue de Qumr\xE2n"},{value:"revue-des-etudes-byzantines",label:"Revue des \xC9tudes Byzantines"},{value:"revue-des-nouvelles-technologies-de-l-information",label:"Revue des Nouvelles Technologies de l'Information (Fran\xE7ais)"},{value:"revue-dhistoire-des-sciences-humaines",label:"Revue d'histoire des sciences humaines (Fran\xE7ais)"},{value:"revue-dhistoire-moderne-et-contemporaine",label:"Revue d'histoire moderne et contemporaine (Fran\xE7ais)"},{value:"revue-europeenne-des-migrations-internationales",label:"Revue Europe\u0301enne des Migrations Internationales"},{value:"revue-forestiere-francaise",label:"Revue foresti\xE8re fran\xE7aise (Fran\xE7ais)"},{value:"revue-francaise-d-administration-publique",label:"Revue fran\xE7aise d'administration publique (Fran\xE7ais)"},{value:"revue-francaise-de-gestion",label:"Revue fran\xE7aise de gestion (Fran\xE7ais)"},{value:"revue-francaise-de-sociologie",label:"Revue fran\xE7aise de sociologie (Fran\xE7ais)"},{value:"rhinology",label:"Rhinology"},{value:"rhodora",label:"Rhodora"},{value:"risk-analysis",label:"Risk Analysis"},{value:"ritid",label:"Riti\xF0: t\xEDmarit Hugv\xEDsindastofnunar (\xCDslenska)"},{value:"rivista-italiana-di-paleontologia-e-stratigrafia",label:"Rivista Italiana di Paleontologia e Stratigrafia"},{value:"rmit-university-harvard",label:"RMIT University - Harvard"},{value:"rofo",label:"R\xF6Fo: Fortschritte auf dem Gebiet der R\xF6ntgenstrahlen und bildgebenden Verfahren"},{value:"romanian-humanities",label:"Romanian Humanities (Rom\xE2n\u0103)"},{value:"rose-school",label:"ROSE School"},{value:"rossiiskii-fiziologicheskii-zhurnal-imeni-i-m-sechenova",label:"\u0420\u043E\u0441\u0441\u0438\u0439\u0441\u043A\u0438\u0439 \u0444\u0438\u0437\u0438\u043E\u043B\u043E\u0433\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0436\u0443\u0440\u043D\u0430\u043B \u0438\u043C. \u0418.\u041C. \u0421\u0435\u0447\u0435\u043D\u043E\u0432\u0430 (\u0420\u0443\u0301\u0441\u0441\u043A\u0438\u0439)"},{value:"royal-college-of-nursing-harvard",label:"Royal College of Nursing - Harvard"},{value:"royal-society-of-chemistry-with-titles",label:"Royal Society of Chemistry (with titles)"},{value:"royal-society-of-chemistry",label:"Royal Society of Chemistry"},{value:"rtf-scan",label:"RTF Scan"},{value:"ruhr-universitat-bochum-lehrstuhl-fur-industrial-sales-and-service-engineering",label:"Ruhr-Universit\xE4t Bochum - Lehrstuhl f\xFCr Industrial Sales and Service Engineering"},{value:"ruhr-universitat-bochum-medizinische-fakultat-numeric",label:"Ruhr-Universit\xE4t Bochum - Medizinische Fakult\xE4t (numerisch, Deutsch)"},{value:"sage-harvard",label:"SAGE - Harvard"},{value:"sage-vancouver-brackets",label:"SAGE - Vancouver (brackets)"},{value:"sage-vancouver",label:"SAGE - Vancouver"},{value:"saglik-bilimleri-universitesi",label:"Sa\u011Fl\u0131k Bilimleri \xDCniversitesi"},{value:"saint-paul-university-faculty-of-canon-law",label:"Saint Paul University - Faculty of Canon Law"},{value:"san-francisco-estuary-and-watershed-science",label:"San Francisco Estuary & Watershed Science"},{value:"sanamed",label:"Sanamed"},{value:"scandinavian-journal-of-infectious-diseases",label:"Scandinavian Journal of Infectious Diseases"},{value:"scandinavian-journal-of-information-systems",label:"Scandinavian Journal of Information Systems"},{value:"scandinavian-journal-of-medicine-and-science-in-sports",label:"Scandinavian Journal of Medicine & Science in Sports"},{value:"scandinavian-journal-of-rheumatology",label:"Scandinavian Journal of Rheumatology"},{value:"scandinavian-journal-of-work-environment-and-health",label:"Scandinavian Journal of Work, Environment & Health"},{value:"scandinavian-political-studies",label:"Scandinavian Political Studies"},{value:"science-and-technology-for-the-built-environment",label:"Science and Technology for the Built Environment"},{value:"science-china-chemistry",label:"Science China Chemistry"},{value:"science-china-earth-sciences",label:"SCIENCE CHINA Earth Sciences"},{value:"science-china-life-sciences",label:"SCIENCE CHINA Life Sciences"},{value:"science-china-materials",label:"SCIENCE CHINA Materials"},{value:"science-translational-medicine",label:"Science Translational Medicine"},{value:"science-without-titles",label:"Science (without titles)"},{value:"science",label:"Science"},{value:"scienceasia",label:"ScienceAsia"},{value:"sciences-po-ecole-doctorale-author-date",label:"Sciences Po - Ecole doctorale (author-date, Fran\xE7ais)"},{value:"sciences-po-ecole-doctorale-note-french",label:"Sciences Po - \xC9cole doctorale (note, Fran\xE7ais)"},{value:"scientia-agriculturae-bohemica",label:"Scientia Agriculturae Bohemica"},{value:"scientia-iranica",label:"Scientia Iranica"},{value:"scientific-review-engineering-and-environmental-sciences",label:"Scientific Review Engineering and Environmental Sciences (Przegl\u0105d Naukowy In\u017Cynieria i Kszta\u0142towanie \u015Arodowiska)"},{value:"scrinium",label:"Scrinium"},{value:"sedimentology",label:"Sedimentology"},{value:"seed-science-and-technology",label:"Seed Science and Technology"},{value:"seed-science-research",label:"Seed Science Research"},{value:"seismological-research-letters",label:"Seismological Research Letters"},{value:"sekolah-tinggi-meteorologi-klimatologi-dan-geofisika",label:"Sekolah Tinggi Meteorologi Klimatologi dan Geofisika (Bahasa Indonesia)"},{value:"seminaire-saint-sulpice-ecole-theologie",label:"S\xE9minaire Saint-Sulpice - Ecole Th\xE9ologie (Fran\xE7ais)"},{value:"seminars-in-pediatric-neurology",label:"Seminars in Pediatric Neurology"},{value:"serbian-archives-of-medicine",label:"Vancouver - Serbian Archives of Medicine"},{value:"serdica-journal-of-computing",label:"Serdica Journal of Computing"},{value:"service-medical-de-l-assurance-maladie",label:"Service M\xE9dical de l'Assurance Maladie (Fran\xE7ais)"},{value:"sexual-development",label:"Sexual Development"},{value:"sexual-health",label:"Sexual Health"},{value:"sheffield-hallam-university-history",label:"Sheffield Hallam University - History"},{value:"shock",label:"Shock"},{value:"sinergie-italian-journal-of-management",label:"Sinergie Italian Journal of Management"},{value:"sist02",label:"SIST02 (\u65E5\u672C\u8A9E)"},{value:"skene-journal-of-theatre-and-drama-studies",label:"Sken\xE8. Journal of Theatre and Drama Studies"},{value:"small",label:"Small"},{value:"smithsonian-institution-scholarly-press-author-date",label:"Smithsonian Institution Scholarly Press (author-date)"},{value:"smithsonian-institution-scholarly-press-botany",label:"Smithsonian Institution Scholarly Press - Botany (author-date)"},{value:"smithsonian-institution-scholarly-press-note",label:"Smithsonian Institution Scholarly Press (note)"},{value:"smyrna-tip-dergisi",label:"Smyrna T\u0131p Dergisi (T\xFCrk\xE7e)"},{value:"social-anthropology",label:"Social Anthropology/Anthropologie Sociale"},{value:"social-cognitive-and-affective-neuroscience",label:"Social Cognitive and Affective Neuroscience"},{value:"sociedade-brasileira-de-computacao",label:"Sociedade Brasileira de Computa\xE7\xE3o"},{value:"societe-archeologique-de-bordeaux",label:"Soci\xE9t\xE9 Arch\xE9ologique de Bordeaux (Fran\xE7ais)"},{value:"societe-francaise-detude-de-la-ceramique-antique-en-gaule",label:"Soci\xE9t\xE9 Fran\xE7aise d\u2019\xC9tude de la C\xE9ramique Antique en Gaule (Fran\xE7ais)"},{value:"societe-nationale-des-groupements-techniques-veterinaires",label:"Soci\xE9t\xE9 Nationale des Groupements Techniques V\xE9t\xE9rinaires (Fran\xE7ais)"},{value:"societes-contemporaines",label:"Soci\xE9t\xE9s Contemporaines"},{value:"society-for-american-archaeology",label:"Society for American Archaeology"},{value:"society-for-historical-archaeology",label:"Society for Historical Archaeology"},{value:"society-for-laboratory-automation-and-screening",label:"Society for Laboratory Automation and Screening"},{value:"society-of-automotive-engineers-technical-papers-numeric",label:"Society of Automotive Engineers Technical Papers (numeric)"},{value:"society-of-biblical-literature-1st-edition-fullnote-bibliography",label:"Society of Biblical Literature 1st edition (full note)"},{value:"society-of-biblical-literature-author-date",label:"Society of Biblical Literature 2nd edition (author-date)"},{value:"society-of-biblical-literature-fullnote-bibliography",label:"Society of Biblical Literature 2nd edition (full note)"},{value:"socio-economic-review",label:"Socio-Economic Review"},{value:"sociology-of-health-and-illness",label:"Sociology of Health & Illness"},{value:"sodertorns-hogskola-harvard-ibid",label:"S\xF6dert\xF6rns h\xF6gskola - Harvard (with Ibid.)"},{value:"sodertorns-hogskola-harvard",label:"S\xF6dert\xF6rns h\xF6gskola - Harvard"},{value:"sodertorns-hogskola-oxford",label:"S\xF6dert\xF6rns h\xF6gskola - Oxford"},{value:"soil-biology-and-biochemistry",label:"Soil Biology and Biochemistry"},{value:"soil-science-and-plant-nutrition",label:"Soil Science and Plant Nutrition"},{value:"solent-university-harvard",label:"Solent University - Harvard"},{value:"solutions",label:"Solutions"},{value:"sorbonne-student-law-review",label:"Sorbonne Student Law Review - Revue juridique des \xE9tudiants de la Sorbonne"},{value:"south-african-actuarial-journal",label:"South African Actuarial Journal"},{value:"south-african-journal-of-animal-science",label:"South African Journal of Animal Science"},{value:"south-african-journal-of-enology-and-viticulture",label:"South African Journal of Enology and Viticulture"},{value:"south-african-journal-of-geology",label:"South African Journal of Geology"},{value:"south-african-medical-journal",label:"South African Medical Journal"},{value:"south-african-theological-seminary",label:"South African Theological Seminary"},{value:"southeastern-geographer",label:"Southeastern Geographer"},{value:"southern-african-journal-of-critical-care",label:"Southern African Journal of Critical Care"},{value:"soziale-welt",label:"Soziale Welt (Deutsch)"},{value:"sozialpadagogisches-institut-berlin-walter-may",label:"Sozialp\xE4dagogisches Institut Berlin - Walter May (Deutsch)"},{value:"sozialwissenschaften-heilmann",label:"Sozialwissenschaften (Heilmann) (Deutsch)"},{value:"soziologie",label:"Soziologie (Deutsch)"},{value:"soziologiemagazin",label:"Soziologiemagazin (Deutsch)"},{value:"spandidos-publications",label:"Spandidos Publications"},{value:"spanish-legal",label:"Spanish Legal (Espa\xF1ol)"},{value:"spectroscopy-letters",label:"Spectroscopy Letters"},{value:"speculum",label:"Speculum"},{value:"spie-bios",label:"SPIE BiOS"},{value:"spie-journals",label:"SPIE journals"},{value:"spie-proceedings",label:"SPIE Conference Proceedings"},{value:"spine",label:"Spine"},{value:"spip-cite",label:"SPIP - Cite plugin"},{value:"sports-health",label:"Sports Health"},{value:"springer-basic-author-date-no-et-al-with-issue",label:'Springer - Basic (author-date, no "et al.", with issue numbers)'},{value:"springer-basic-author-date-no-et-al",label:'Springer - Basic (author-date, no "et al.")'},{value:"springer-basic-author-date",label:"Springer - Basic (author-date)"},{value:"springer-basic-brackets-no-et-al-alphabetical",label:'Springer - Basic (numeric, brackets, no "et al.", alphabetical)'},{value:"springer-basic-brackets-no-et-al",label:'Springer - Basic (numeric, brackets, no "et al.")'},{value:"springer-basic-brackets",label:"Springer - Basic (numeric, brackets)"},{value:"springer-basic-note",label:"Springer - Basic (note)"},{value:"springer-fachzeitschriften-medizin-psychologie",label:"Springer - Fachzeitschriften Medizin Psychologie (Deutsch)"},{value:"springer-humanities-author-date",label:"Springer - Humanities (author-date)"},{value:"springer-humanities-brackets",label:"Springer - Humanities (numeric, brackets)"},{value:"springer-imis-series-migrationsgesellschaften",label:"Springer - IMIS Series Migrationsgesellschaften"},{value:"springer-lecture-notes-in-computer-science-alphabetical",label:"Springer - Lecture Notes in Computer Science (sorted alphabetically)"},{value:"springer-lecture-notes-in-computer-science",label:"Springer - Lecture Notes in Computer Science"},{value:"springer-mathphys-author-date",label:"Springer - MathPhys (author-date)"},{value:"springer-mathphys-brackets",label:"Springer - MathPhys (numeric, brackets)"},{value:"springer-physics-author-date",label:"Springer - Physics (author-date)"},{value:"springer-physics-brackets",label:"Springer - Physics (numeric, brackets)"},{value:"springer-socpsych-author-date",label:"Springer - SocPsych (author-date)"},{value:"springer-socpsych-brackets",label:"Springer - SocPsych (numeric, brackets)"},{value:"springer-vancouver-author-date",label:"Springer - Vancouver (author-date)"},{value:"springer-vancouver-brackets",label:"Springer - Vancouver (brackets)"},{value:"springer-vancouver",label:"Springer - Vancouver"},{value:"springer-vs-author-date",label:"Springer VS (author-date, Deutsch)"},{value:"springerprotocols",label:"SpringerProtocols"},{value:"st-patricks-college",label:"St Patrick's College"},{value:"statistika-statistics-and-economy-journal",label:"Statistika: Statistics and Economy Journal"},{value:"stavebni-obzor",label:"Stavebn\xED obzor (\u010Ce\u0161tina)"},{value:"steel-research-international",label:"Steel Research International"},{value:"steinbeis-hochschule-school-of-management-and-innovation",label:"Steinbeis-Hochschule - School of Management & Innovation (Deutsch)"},{value:"stellenbosch-law-review",label:"Stellenbosch Law Review"},{value:"stem-cells",label:"Stem Cells"},{value:"strategic-design-research-journal",label:"Strategic Design Research Journal"},{value:"strategic-entrepreneurship-journal",label:"Strategic Entrepreneurship Journal"},{value:"strategic-management-journal",label:"Strategic Management Journal"},{value:"stroke",label:"Stroke"},{value:"structural-control-and-health-monitoring",label:"Structural Control and Health Monitoring"},{value:"studi-e-materiali-di-storia-delle-religioni",label:"Studi e materiali di storia delle religioni (Italiano)"},{value:"studi-slavistici-rivista-dellassociazione-italiana-degli-slavisti",label:"Studi Slavistici Rivista dell\u2019Associazione Italiana degli Slavisti"},{value:"studia-bas",label:"Studia BAS (Polski)"},{value:"studies-in-the-history-of-gardens-and-designed-landscapes",label:"Studies in the History of Gardens & Designed Landscapes"},{value:"studii-teologice",label:"Studii Teologice"},{value:"stuttgart-media-university",label:"Hochschule der Medien Stuttgart (Deutsch)"},{value:"style-manual-australian-government-note",label:"Style Manual - Australian Government (note)"},{value:"style-manual-australian-government",label:"Style Manual - Australian Government (author-date)"},{value:"style-manual-for-authors-editors-and-printers-6th-edition-snooks-co",label:"Style manual for authors, editors and printers 6th edition (Snooks & Co.) (author-date)"},{value:"suburban-zeitschrift-fur-kritische-stadtforschung",label:"sub\\urban - Zeitschrift f\xFCr kritische Stadtforschung (Deutsch)"},{value:"sunway-college-johor-bahru",label:"Sunway College Johor Bahru - Harvard"},{value:"surgical-clinics-of-north-america",label:"Surgical Clinics of North America"},{value:"surgical-neurology-international",label:"Surgical Neurology International"},{value:"surgical-pathology-clinics",label:"Surgical Pathology Clinics"},{value:"svensk-exegetisk-arsbok",label:"Svensk exegetisk \xE5rsbok (full note)"},{value:"swedish-legal",label:"Swedish Legal (Svenska)"},{value:"swiss-political-science-review",label:"Swiss Political Science Review"},{value:"sylwan",label:"Sylwan (Polski)"},{value:"synthesis",label:"Synthesis"},{value:"system-dynamics-review",label:"System Dynamics Review"},{value:"systematic-and-applied-microbiology",label:"Systematic and Applied Microbiology"},{value:"systematic-biology",label:"Systematic Biology"},{value:"szociologiai-szemle",label:"Szociol\xF3giai Szemle (Magyar)"},{value:"tabula",label:"T\xE1bula (Espa\xF1ol)"},{value:"tagungsberichte-der-historischen-kommission-fur-ost-und-westpreussische-landesforschung",label:"Tagungsberichte der Historischen Kommission f\xFCr ost- und westpreu\xDFische Landesforschung (Deutsch)"},{value:"tatup-zeitschrift-fur-technikfolgenabschatzung-in-theorie-und-praxis",label:"TATuP - Zeitschrift f\xFCr Technikfolgenabsch\xE4tzung in Theorie und Praxis"},{value:"taxon",label:"Taxon"},{value:"taylor-and-francis-acs",label:"Taylor & Francis - American Chemical Society"},{value:"taylor-and-francis-chicago-author-date",label:"Taylor & Francis - Chicago Manual of Style (author-date)"},{value:"taylor-and-francis-chicago-f",label:"Taylor & Francis - Chicago F"},{value:"taylor-and-francis-council-of-science-editors-author-date",label:"Taylor & Francis - Council of Science Editors (author-date)"},{value:"taylor-and-francis-council-of-science-editors-numeric",label:"Taylor & Francis - Council of Science Editors (numeric)"},{value:"taylor-and-francis-harvard-x",label:"Taylor & Francis - Harvard X"},{value:"taylor-and-francis-national-library-of-medicine",label:"Taylor & Francis - National Library of Medicine"},{value:"taylor-and-francis-numeric-q",label:"Taylor & Francis - Numeric Q"},{value:"taylor-and-francis-vancouver-national-library-of-medicine",label:"Taylor & Francis - Vancouver/National Library of Medicine"},{value:"techniques-et-culture",label:"Techniques&Culture (Fran\xE7ais)"},{value:"technische-universitat-dortmund-ag-virtual-machining",label:"Technische Universit\xE4t Dortmund - AG Virtual Machining (Deutsch)"},{value:"technische-universitat-dresden-betriebswirtschaftslehre-logistik-author-date",label:"Technische Universit\xE4t Dresden - Betriebswirtschaftslehre/Logistik (author-date)"},{value:"technische-universitat-dresden-betriebswirtschaftslehre-marketing",label:"Technische Universit\xE4t Dresden - Betriebswirtschaftslehre/Marketing (author-date)"},{value:"technische-universitat-dresden-betriebswirtschaftslehre-rechnungswesen-controlling",label:"Technische Universit\xE4t Dresden - Betriebswirtschaftslehre/Rechnungswesen/Controlling (Deutsch)"},{value:"technische-universitat-dresden-erziehungswissenschaften-author-date",label:"Technische Universit\xE4t Dresden - Erziehungswissenschaften (author-date)"},{value:"technische-universitat-dresden-finanzwirtschaft-und-finanzdienstleistungen-author-date-with-short-titles",label:"Technische Universit\xE4t Dresden - Finanzwirtschaft und Finanzdienstleistungen (author-date, with short titles)"},{value:"technische-universitat-dresden-finanzwirtschaft-und-finanzdienstleistungen-author-date",label:"Technische Universit\xE4t Dresden - Finanzwirtschaft und Finanzdienstleistungen (author-date)"},{value:"technische-universitat-dresden-finanzwirtschaft-und-finanzdienstleistungen-note",label:"Technische Universit\xE4t Dresden - Finanzwirtschaft und Finanzdienstleistungen (note)"},{value:"technische-universitat-dresden-forstwissenschaft",label:"Technische Universit\xE4t Dresden - Forstwissenschaft (author-date, Deutsch)"},{value:"technische-universitat-dresden-historische-musikwissenschaft-note",label:"Technische Universit\xE4t Dresden - Historische Musikwissenschaft (note, Deutsch)"},{value:"technische-universitat-dresden-kunstgeschichte-note",label:"Technische Universit\xE4t Dresden - Kunstgeschichte (note, Deutsch)"},{value:"technische-universitat-dresden-linguistik",label:"Technische Universit\xE4t Dresden - Linguistik (Deutsch)"},{value:"technische-universitat-dresden-medienwissenschaft-und-neuere-deutsche-literatur-note",label:"Technische Universit\xE4t Dresden - Medienwissenschaft und Neuere Deutsche Literatur (note, Deutsch)"},{value:"technische-universitat-dresden-medizin",label:"Technische Universit\xE4t Dresden - Medizin"},{value:"technische-universitat-dresden-wirtschaftswissenschaften",label:"Technische Universit\xE4t Dresden - Wirtschaftswissenschaften (Deutsch)"},{value:"technische-universitat-munchen-controlling",label:"Technische Universit\xE4t M\xFCnchen - Controlling (Deutsch)"},{value:"technische-universitat-munchen-unternehmensfuhrung",label:"Technische Universit\xE4t M\xFCnchen - Unternehmensf\xFChrung (Deutsch)"},{value:"technische-universitat-wien",label:"Technische Universit\xE4t Wien (dissertation) (Deutsch)"},{value:"teologia-catalunya",label:"Teologia Catalunya"},{value:"termedia-neuropsychiatria-i-neuropsychologia-neuropsychiatry-and-neuropsychology",label:"Termedia Neuropsychiatria i Neuropsychologia/Neuropsychiatry and Neuropsychology"},{value:"terra-nova",label:"Terra Nova"},{value:"tetrahedron-letters",label:"Tetrahedron Letters"},{value:"textual-cultures",label:"Textual Cultures"},{value:"textual-practice",label:"Textual Practice"},{value:"tgm-wien-diplom",label:"TGM Wien Diplomarbeit (Deutsch)"},{value:"tgm-wien-diplomarbeit-onorm",label:"TGM Wien Diplomarbeit \xD6NORM (Deutsch - \xD6sterreich)"},{value:"the-accounting-review",label:"The Accounting Review"},{value:"the-american-journal-of-bioethics",label:"The American Journal of Bioethics"},{value:"the-american-journal-of-cardiology",label:"The American Journal of Cardiology"},{value:"the-american-journal-of-dermatopathology",label:"The American Journal of Dermatopathology"},{value:"the-american-journal-of-gastroenterology",label:"The American Journal of Gastroenterology"},{value:"the-american-journal-of-geriatric-psychiatry",label:"The American Journal of Geriatric Psychiatry"},{value:"the-american-journal-of-human-genetics",label:"The American Journal of Human Genetics"},{value:"the-american-journal-of-pathology",label:"The American Journal of Pathology"},{value:"the-american-journal-of-psychiatry",label:"The American Journal of Psychiatry"},{value:"the-american-journal-of-tropical-medicine-and-hygiene",label:"The American Journal of Tropical Medicine and Hygiene"},{value:"the-american-midland-naturalist",label:"The American Midland Naturalist"},{value:"the-american-naturalist",label:"The American Naturalist"},{value:"the-angle-orthodontist",label:"The Angle Orthodontist"},{value:"the-astrophysical-journal",label:"The Astrophysical Journal"},{value:"the-auk",label:"The Auk"},{value:"the-australian-journal-of-agricultural-and-resource-economics",label:"The Australian Journal of Agricultural and Resource Economics"},{value:"the-biological-bulletin",label:"The Biological Bulletin"},{value:"the-bone-and-joint-journal",label:"The Bone & Joint Journal"},{value:"the-botanical-review",label:"The Botanical Review"},{value:"the-bovine-practitioner",label:"The Bovine Practitioner"},{value:"the-british-journal-for-the-philosophy-of-science",label:"The British Journal for the Philosophy of Science"},{value:"the-british-journal-of-cardiology",label:"The British Journal of Cardiology"},{value:"the-british-journal-of-criminology",label:"The British Journal of Criminology"},{value:"the-british-journal-of-psychiatry",label:"The British Journal of Psychiatry"},{value:"the-british-journal-of-sociology",label:"The British Journal of Sociology"},{value:"the-canadian-geographer",label:"The Canadian Geographer (Le G\xE9ographe canadien)"},{value:"the-canadian-journal-of-chemical-engineering",label:"The Canadian Journal of Chemical Engineering"},{value:"the-canadian-journal-of-psychiatry",label:"The Canadian Journal of Psychiatry"},{value:"the-cancer-journal",label:"The Cancer Journal"},{value:"the-chemical-society-of-japan",label:"The Chemical Society of Japan"},{value:"the-chinese-journal-of-international-politics",label:"The Chinese Journal of International Politics"},{value:"the-company-of-biologists",label:"The Company of Biologists"},{value:"the-design-journal",label:"The Design Journal"},{value:"the-economic-history-review",label:"The Economic History Review"},{value:"the-european-research-journal",label:"The European Research Journal"},{value:"the-faseb-journal",label:"The FASEB Journal"},{value:"the-febs-journal",label:"The FEBS Journal"},{value:"the-geological-society-of-america",label:"The Geological Society of America"},{value:"the-geological-society-of-london",label:"The Geological Society of London"},{value:"the-hastings-center-report",label:"The Hastings Center Report"},{value:"the-historical-journal",label:"The Historical Journal"},{value:"the-holocene",label:"The Holocene"},{value:"the-horticulture-journal",label:"The Horticulture Journal"},{value:"the-institute-of-electronics-information-and-communication-engineers",label:"The Institute of Electronics, Information and Communication Engineers (\u96FB\u5B50\u60C5\u5831\u901A\u4FE1\u5B66\u4F1A)"},{value:"the-institution-of-engineering-and-technology",label:"The Institution of Engineering and Technology"},{value:"the-international-journal-of-developmental-biology",label:"The International Journal of Developmental Biology"},{value:"the-international-journal-of-psychoanalysis",label:"The International Journal of Psychoanalysis"},{value:"the-international-journal-of-tuberculosis-and-lung-disease",label:"The International Journal of Tuberculosis and Lung Disease"},{value:"the-isme-journal",label:"The ISME Journal"},{value:"the-journal-of-adhesive-dentistry",label:"The Journal of Adhesive Dentistry"},{value:"the-journal-of-agricultural-science",label:"The Journal of Agricultural Science"},{value:"the-journal-of-clinical-ethics",label:"The Journal of Clinical Ethics"},{value:"the-journal-of-clinical-investigation",label:"The Journal of Clinical Investigation"},{value:"the-journal-of-comparative-law",label:"The Journal of Comparative Law"},{value:"the-journal-of-comparative-neurology",label:"The Journal of Comparative Neurology"},{value:"the-journal-of-egyptian-archaeology",label:"The Journal of Egyptian Archaeology"},{value:"the-journal-of-eukaryotic-microbiology",label:"The Journal of Eukaryotic Microbiology"},{value:"the-journal-of-foot-and-ankle-surgery",label:"The Journal of Foot & Ankle Surgery"},{value:"the-journal-of-hand-surgery-asian-pacific-volume",label:"The Journal of Hand Surgery Asian-Pacific Volume"},{value:"the-journal-of-hand-surgery-european-volume",label:"The Journal of Hand Surgery (European Volume)"},{value:"the-journal-of-hellenic-studies",label:"The Journal of Hellenic Studies"},{value:"the-journal-of-immunology",label:"The Journal of Immunology"},{value:"the-journal-of-infection-in-developing-countries",label:"The Journal of Infection in Developing Countries"},{value:"the-journal-of-juristic-papyrology",label:"The Journal of Juristic Papyrology"},{value:"the-journal-of-laryngology-and-otology",label:"The Journal of Laryngology & Otology"},{value:"the-journal-of-modern-history",label:"The Journal of Modern History"},{value:"the-journal-of-molecular-diagnostics",label:"The Journal of Molecular Diagnostics"},{value:"the-journal-of-nervous-and-mental-disease",label:"The Journal of Nervous and Mental Disease"},{value:"the-journal-of-neuropsychiatry-and-clinical-neurosciences",label:"The Journal of Neuropsychiatry and Clinical Neurosciences"},{value:"the-journal-of-neuroscience",label:"The Journal of Neuroscience"},{value:"the-journal-of-nuclear-medicine",label:"The Journal of Nuclear Medicine"},{value:"the-journal-of-nutrition-health-and-aging",label:"The Journal of Nutrition, Health & Aging"},{value:"the-journal-of-pain",label:"The Journal of Pain"},{value:"the-journal-of-parasitology",label:"The Journal of Parasitology"},{value:"the-journal-of-pathology",label:"The Journal of Pathology"},{value:"the-journal-of-peasant-studies",label:"The Journal of Peasant Studies"},{value:"the-journal-of-physiology",label:"The Journal of Physiology"},{value:"the-journal-of-pure-and-applied-chemistry-research",label:"The Journal of Pure and Applied Chemistry Research"},{value:"the-journal-of-roman-studies",label:"The Journal of Roman Studies"},{value:"the-journal-of-the-acoustical-society-of-america-numeric",label:"The Journal of the Acoustical Society of America (numeric)"},{value:"the-journal-of-the-acoustical-society-of-america",label:"The Journal of the Acoustical Society of America (author-date)"},{value:"the-journal-of-the-torrey-botanical-society",label:"The Journal of the Torrey Botanical Society"},{value:"the-journal-of-transport-history",label:"The Journal of Transport History"},{value:"the-journal-of-trauma-and-acute-care-surgery",label:"The Journal of Trauma and Acute Care Surgery"},{value:"the-journal-of-urology",label:"The Journal of Urology"},{value:"the-journal-of-veterinary-medical-science",label:"The Journal of Veterinary Medical Science"},{value:"the-journal-of-wildlife-management",label:"The Journal of Wildlife Management"},{value:"the-journals-of-gerontology-series-a",label:"The Journals of Gerontology, Series A: Biological Sciences and Medical Sciences"},{value:"the-korean-journal-of-gastroenterology",label:"The Korean Journal of Gastroenterology"},{value:"the-korean-journal-of-internal-medicine",label:"The Korean Journal of Internal Medicine"},{value:"the-korean-journal-of-mycology",label:"The Korean Journal of Mycology"},{value:"the-lancet",label:"The Lancet"},{value:"the-lichenologist",label:"The Lichenologist"},{value:"the-national-medical-journal-of-india",label:"The National Medical Journal of India"},{value:"the-neuroscientist",label:"The Neuroscientist"},{value:"the-new-england-journal-of-medicine",label:"The New England Journal of Medicine"},{value:"the-oncologist",label:"The Oncologist"},{value:"the-open-university-a251",label:"The Open University - A251 - Arts Course"},{value:"the-open-university-harvard",label:"The Open University - Harvard"},{value:"the-open-university-m801",label:"The Open University - M801 - Research Project and Dissertation"},{value:"the-open-university-numeric-superscript",label:"The Open University (numeric, superscript)"},{value:"the-open-university-numeric",label:"The Open University (numeric)"},{value:"the-open-university-s390",label:"The Open University - S390"},{value:"the-optical-society",label:"The Optical Society"},{value:"the-pan-african-medical-journal",label:"The Pan African Medical Journal"},{value:"the-plant-cell",label:"The Plant Cell"},{value:"the-plant-genome",label:"The Plant Genome"},{value:"the-plant-journal",label:"The Plant Journal"},{value:"the-quarterly-journal-of-economics",label:"The Quarterly Journal of Economics"},{value:"the-review-of-financial-studies",label:"The Review of Financial Studies"},{value:"the-rockefeller-university-press",label:"The Rockefeller University Press"},{value:"the-saudi-journal-for-dental-research",label:"The Saudi Journal for Dental Research"},{value:"the-scandinavian-journal-of-clinical-and-laboratory-investigation",label:"The Scandinavian Journal of Clinical & Laboratory Investigation"},{value:"the-university-of-tokyo-law-review",label:"\u6771\u4EAC\u5927\u5B66\u6CD5\u79D1\u5927\u5B66\u9662\u30ED\u30FC\u30EC\u30D3\u30E5\u30FC (The University of Tokyo Law Review) (\u65E5\u672C\u8A9E)"},{value:"the-university-of-western-australia-harvard",label:"The University of Western Australia - Harvard"},{value:"the-university-of-winchester-harvard",label:"The University of Winchester - Harvard"},{value:"the-world-journal-of-biological-psychiatry",label:"The World Journal of Biological Psychiatry"},{value:"theologie-und-philosophie",label:"Theologie und Philosophie (Deutsch)"},{value:"theory-culture-and-society",label:"Theory, Culture & Society"},{value:"theranostics",label:"Theranostics"},{value:"thieme-german",label:"Thieme-German (Deutsch)"},{value:"thomson-reuters-legal-tax-and-accounting-australia",label:"Thomson Reuters - Legal, Tax & Accounting Australia"},{value:"thrombosis-and-haemostasis",label:"Thrombosis and Haemostasis"},{value:"tijdschrift-voor-economische-en-sociale-geografie",label:"Tijdschrift voor economische en sociale geografie"},{value:"tijdschrift-voor-geneeskunde",label:"Tijdschrift voor Geneeskunde en Gezondheidszorg (Nederlands)"},{value:"topoi-orient-occident-auteur-date",label:"Topoi Orient-Occident (auteur-date, Fran\xE7ais)"},{value:"topoi-orient-occident-classique",label:"Topoi Orient-Occident (classique, Fran\xE7ais)"},{value:"toxicological-sciences",label:"Toxicological Sciences"},{value:"trabajos-de-prehistoria",label:"Trabajos de Prehistoria (Espa\xF1ol)"},{value:"traces",label:"Trac\xE9s: Revue de Sciences Humaines (Fran\xE7ais)"},{value:"traffic-injury-prevention",label:"Traffic Injury Prevention"},{value:"traffic",label:"Traffic"},{value:"transactions-of-the-american-philological-association",label:"Transactions of the American Philological Association"},{value:"transactions-of-the-materials-research-society-of-japan",label:"Transactions of the Materials Research Society of Japan"},{value:"transboundary-and-emerging-diseases",label:"Transboundary and Emerging Diseases"},{value:"transnational-environmental-law",label:"Transnational Environmental Law"},{value:"transplantation",label:"Transplantation"},{value:"transport",label:"Transport"},{value:"transportation-research-record",label:"Transportation Research Record: Journal of the Transportation Research Board"},{value:"transposition",label:"Transposition. Musique et sciences sociales"},{value:"transversalites",label:"Transversalit\xE9s (Fran\xE7ais)"},{value:"tree-physiology",label:"Tree Physiology"},{value:"trends-in-glycoscience-and-glycotechnology",label:"Trends in Glycoscience and Glycotechnology"},{value:"trends-journals",label:"Trends journals"},{value:"triangle",label:"Triangle (Fran\xE7ais)"},{value:"trinity-college-dublin-zoology-botany-environmental-sciences-harvard",label:"Trinity College Dublin - Zoology Botany Environmental Sciences - Harvard"},{value:"tropical-animal-health-and-production",label:"Tropical Animal Health and Production"},{value:"tsaqafah",label:"Tsaqafah"},{value:"turabian-author-date",label:"Turabian 9th edition (author-date)"},{value:"turabian-fullnote-bibliography-no-ibid",label:"Turabian 8th edition (full note, no ibid)"},{value:"turabian-fullnote-bibliography",label:"Turabian 8th edition (full note)"},{value:"turkiye-bilimsel-ve-teknolojik-arastirma-kurumu",label:"T\xDCB\u0130TAK (T\xFCrkiye Bilimsel ve Teknolojik Ara\u015Ft\u0131rma Kurumu) (T\xFCrk\xE7e)"},{value:"twentieth-century-music",label:"Twentieth-Century Music"},{value:"tyndale-bulletin",label:"Tyndale Bulletin"},{value:"u-schylku-starozytnosci",label:"U Schy\u0142ku Staro\u017Cytno\u015Bci (Polski)"},{value:"ucl-institute-of-education-harvard",label:"UCL Institute of Education - Harvard"},{value:"ucl-university-college-apa",label:"UCL University College - APA (Dansk)"},{value:"ucl-university-college-harvard",label:"UCL University College - Harvard (Dansk)"},{value:"ucl-university-college-vancouver",label:"UCL University College - Vancouver (English)"},{value:"uclouvain-centre-charles-de-visscher-pour-le-droit-international-et-europeen",label:"UCLouvain - Centre Charles De Visscher pour le droit international et europ\xE9en (French)"},{value:"ugeskrift-for-laeger",label:"Ugeskrift for L\xE6ger (Dansk)"},{value:"ultrasound-in-medicine-and-biology",label:"Ultrasound in Medicine and Biology"},{value:"ulua-revista-de-historia-sociedad-y-cultura",label:"Ul\xFAa. Revista de Historia, Sociedad y Cultura"},{value:"uludag-universitesi-sosyal-bilimler-enstitusu-author-date",label:"Uluda\u011F \xDCniversitesi - Sosyal Bilimler Enstit\xFCs\xFC (author-date, T\xFCrk\xE7e)"},{value:"uludag-universitesi-sosyal-bilimler-enstitusu-full-note-with-ibid",label:"Uluda\u011F \xDCniversitesi - Sosyal Bilimler Enstit\xFCs\xFC (full note, with Ibid., T\xFCrk\xE7e)"},{value:"uludag-universitesi-sosyal-bilimler-enstitusu-full-note",label:"Uluda\u011F \xDCniversitesi - Sosyal Bilimler Enstit\xFCs\xFC (full note, T\xFCrk\xE7e)"},{value:"uludag-universitesi-sosyal-bilimler-enstitusu-ilahiyat-fakultesi-full-note-with-ibid",label:"Uluda\u011F \xDCniversitesi - Sosyal Bilimler Enstit\xFCs\xFC - \u0130lahiyat Fak\xFCltesi (full note, with Ibid., T\xFCrk\xE7e)"},{value:"uludag-universitesi-sosyal-bilimler-enstitusu-ilahiyat-fakultesi-full-note",label:"Uluda\u011F \xDCniversitesi - Sosyal Bilimler Enstit\xFCs\xFC - \u0130lahiyat Fak\xFCltesi (full note, T\xFCrk\xE7e)"},{value:"unesco-international-institute-for-educational-planning",label:"UNESCO International Institute for Educational Planning"},{value:"unified-style-sheet-for-linguistics-de-gruyter-literature",label:"Unified Stylesheet for Linguistics (de Gruyter Literature)"},{value:"unified-style-sheet-for-linguistics",label:"Unified style sheet for linguistics"},{value:"united-nations-conference-on-trade-and-development",label:"United Nations Conference on Trade and Development"},{value:"united-nations-development-programme-icca-legal-review",label:"United Nations Development Programme ICCA Legal Review"},{value:"united-nations-framework-convention-on-climate-change",label:"United Nations Framework Convention on Climate Change"},{value:"united-states-international-trade-commission",label:"United States International Trade Commission"},{value:"universidad-autonoma-cidudad-juarez-estilo-latino-humanistico",label:"Universidad Aut\xF3noma de Ciudad Ju\xE1rez - Estilo Latino Human\xEDstico"},{value:"universidad-de-leon-harvard",label:"Universidad de Le\xF3n (Espa\xF1a) - Harvard"},{value:"universidad-evangelica-del-paraguay",label:"Universidad Evang\xE9lica del Paraguay (Espa\xF1ol)"},{value:"universidade-de-sao-paulo-escola-de-comunicacoes-e-artes-abnt",label:"Universidade de S\xE3o Paulo - Escola de Comunica\xE7\xF5es e Artes - ABNT (Portugu\xEAs - Brasil)"},{value:"universidade-de-sao-paulo-instituto-de-matematica-e-estatistica",label:"Universidade de S\xE3o Paulo - Instituto de Matem\xE1tica e Estat\xEDstica"},{value:"universidade-do-estado-do-rio-de-janeiro-abnt",label:"Universidade do Estado do Rio de Janeiro - ABNT (Portugu\xEAs - Brasil)"},{value:"universidade-do-porto-faculdade-de-engenharia-chicago-pt",label:"Universidade do Porto - Faculdade de Engenharia - Chicago Manual of Style 17th (author-date) (Portugu\xEAs - Portugal)"},{value:"universidade-do-porto-faculdade-de-engenharia-chicago",label:"Universidade do Porto - Faculdade de Engenharia - Chicago Manual of Style 17th (author-date)"},{value:"universidade-do-porto-faculdade-de-psicologia-e-de-ciencias-da-educacao",label:"Universidade do Porto - Faculdade de Psicologia e de Ci\xEAncias da Educa\xE7\xE3o - APA"},{value:"universidade-estadual-de-alagoas-abnt",label:"Universidade Estadual de Alagoas - ABNT (Portugu\xEAs - Brasil)"},{value:"universidade-estadual-do-oeste-do-parana-programa-institucional-de-bolsas-de-iniciacao-cientifica",label:"Universidade Estadual do Oeste do Paran\xE1 - Programa Institucional de Bolsas de Inicia\xE7\xE3o Cient\xEDfica (Portugu\xEAs - Brasil)"},{value:"universidade-estadual-paulista-campus-de-dracena-abnt",label:"Universidade Estadual Paulista - Campus de Dracena - ABNT (autoria abreviada) (Portugu\xEAs - Brasil)"},{value:"universidade-estadual-paulista-faculdade-de-engenharia-de-guaratingueta-abnt",label:"Universidade Estadual Paulista - Faculdade de Engenharia de Guaratingueta - ABNT (Portugu\xEAs - Brasil)"},{value:"universidade-federal-de-juiz-de-fora",label:"Universidade Federal de Juiz de Fora (Portugu\xEAs - Brasil)"},{value:"universidade-federal-de-pernambuco-abnt",label:"Universidade Federal de Pernambuco - ABNT (Portugu\xEAs - Brasil)"},{value:"universidade-federal-de-sergipe-departamento-de-engenharia-de-producao-abnt",label:"Universidade Federal de Sergipe - Departamento de Engenharia de Produ\xE7\xE3o - ABNT (Portugu\xEAs - Brasil)"},{value:"universidade-federal-do-espirito-santo-abnt-initials",label:"Universidade Federal do Esp\xEDrito Santo - ABNT (autoria abreviada) (Portugu\xEAs - Brasil)"},{value:"universidade-federal-do-espirito-santo-abnt",label:"Universidade Federal do Esp\xEDrito Santo - ABNT (autoria completa) (Portugu\xEAs - Brasil)"},{value:"universidade-federal-do-rio-de-janeiro-instituto-alberto-luiz-coimbra-de-pos-graduacao-e-pesquisa-de-engenharia-abnt",label:"Universidade Federal do Rio de Janeiro - Instituto Alberto Luiz Coimbra de P\xF3s-Gradua\xE7\xE3o e Pesquisa de Engenharia - ABNT (Portugu\xEAs - Brasil)"},{value:"universita-cattolica-del-sacro-cuore",label:"Universit\xE0 Cattolica del Sacro Cuore (note, Italiano)"},{value:"universita-di-bologna-lettere",label:"University of Bologna - Liberal Arts College (Universit\xE0 di Bologna - Facolt\xE0 di Lettere e Filosofia) (Italiano)"},{value:"universita-pontificia-salesiana-it",label:"Universit\xE0 Pontificia Salesiana (Italiano)"},{value:"universita-pontificia-salesiana",label:"Universit\xE0 Pontificia Salesiana"},{value:"universitas-gadjah-mada-departemen-sejarah",label:"Universitas Gadjah Mada - Departemen Sejarah (Bahasa Indonesia)"},{value:"universitas-negeri-semarang-fakultas-matematika-dan-ilmu-pengetahuan-alam",label:"Universitas Negeri Semarang - Fakultas Matematika dan Ilmu Pengetahuan Alam (Bahasa Indonesia)"},{value:"universitas-negeri-yogyakarta-program-pascasarjana",label:"Universitas Negeri Yogyakarta - Program Pascasarjana (Bahasa Indonesia)"},{value:"universitat-basel-deutsche-sprachwissenschaft",label:"Universit\xE4t Basel - Deutsche Sprachwissenschaft"},{value:"universitat-basel-iberoromanistik",label:"Universit\xE4t Basel - Iberoromanistik (Espa\xF1ol)"},{value:"universitat-bern-institut-fur-musikwissenschaft-note",label:"Universit\xE4t Bern - Institut f\xFCr Musikwissenschaft (note, Deutsch)"},{value:"universitat-bern-institut-fur-sozialanthropologie",label:"Universit\xE4t Bern - Institut f\xFCr Sozialanthropologie (Deutsch - Schweiz)"},{value:"universitat-bremen-institut-fur-politikwissenschaft",label:"Universit\xE4t Bremen - Institut f\xFCr Politikwissenschaft (Deutsch)"},{value:"universitat-bremen-lehrstuhl-fur-innovatives-markenmanagement",label:"Universit\xE4t Bremen - Lehrstuhl f\xFCr innovatives Markenmanagement (Deutsch)"},{value:"universitat-freiburg-geschichte",label:"Albert-Ludwigs-Universit\xE4t Freiburg - Geschichte (Deutsch)"},{value:"universitat-heidelberg-historisches-seminar",label:"Universit\xE4t Heidelberg - Historisches Seminar (Deutsch)"},{value:"universitat-heidelberg-medizinische-fakultat-mannheim-numeric",label:"Universit\xE4t Heidelberg - Medizinische Fakult\xE4t Mannheim (numerisch, Deutsch)"},{value:"universitat-mainz-geographisches-institut",label:"Universit\xE4t Mainz - Geographisches Institut (Deutsch)"},{value:"universitat-mannheim-germanistische-linguistik",label:"Universit\xE4t Mannheim - Germanistische Linguistik (Deutsch)"},{value:"universitat-stuttgart-planung-und-partizipation",label:"Universit\xE4t Stuttgart - Planung und Partizipation (Deutsch)"},{value:"universitat-wien-institut-fur-geschichte",label:"Universit\xE4t Wien - Institut f\xFCr Geschichte"},{value:"universitat-zu-koln-seminar-fur-abwl-und-finanzierungslehre",label:"Universit\xE4t zu K\xF6ln - Seminar f\xFCr ABWL und Finanzierungslehre (Deutsch)"},{value:"universitatsmedizin-gottingen",label:"Universit\xE4tsmedizin G\xF6ttingen (Deutsch)"},{value:"universite-catholique-de-louvain-histoire",label:"Universit\xE9 Catholique de Louvain - Histoire (Fran\xE7ais)"},{value:"universite-cheikh-anta-diop-faculte-de-medecine-de-pharmacie-et-dodontologie",label:"Universit\xE9 Cheikh Anta Diop - Facult\xE9 de M\xE9decine de Pharmacie et d'Odontologie (Fran\xE7ais)"},{value:"universite-de-bordeaux-ecole-doctorale-de-droit",label:"Universit\xE9 de Bordeaux - \xC9cole doctorale de droit (Fran\xE7ais)"},{value:"universite-de-geneve-departement-de-langue-et-de-litterature-francaises-modernes",label:"Universit\xE9 de Gen\xE8ve - D\xE9partement de langue et de litt\xE9rature fran\xE7aises modernes (Fran\xE7ais)"},{value:"universite-de-lausanne-histoire",label:"Universit\xE9 de Lausanne - Histoire (Fran\xE7ais)"},{value:"universite-de-liege-droit-par-categorie",label:"Universit\xE9 de Li\xE8ge - Droit (classement par cat\xE9gorie, Fran\xE7ais)"},{value:"universite-de-liege-droit",label:"Universit\xE9 de Li\xE8ge - Droit (Fran\xE7ais)"},{value:"universite-de-liege-histoire",label:"Universit\xE9 de Li\xE8ge - Histoire (Fran\xE7ais)"},{value:"universite-de-montreal-apa",label:"Universit\xE9 de Montr\xE9al - APA (Fran\xE7ais - Canada)"},{value:"universite-de-montreal-faculte-de-musique",label:"Universit\xE9 de Montr\xE9al - Facult\xE9 de musique (Fran\xE7ais - Canada)"},{value:"universite-de-picardie-jules-verne-ufr-de-medecine",label:"Universit\xE9 de Picardie Jules Verne (Amiens) - Th\xE8se de UFR de M\xE9decine"},{value:"universite-de-sherbrooke-departement-de-geomatique",label:"Universit\xE9 de Sherbrooke - D\xE9partement de g\xE9omatique (Fran\xE7ais - Canada)"},{value:"universite-de-sherbrooke-faculte-d-education",label:"Universit\xE9 de Sherbrooke - Facult\xE9 d'\xE9ducation (Fran\xE7ais - Canada)"},{value:"universite-de-sherbrooke-histoire",label:"Universit\xE9 de Sherbrooke - Histoire (Fran\xE7ais - Canada)"},{value:"universite-du-quebec-a-montreal-departement-dhistoire",label:"Universit\xE9 du Qu\xE9bec \xE0 Montr\xE9al - D\xE9partement d\u2019histoire (Fran\xE7ais - Canada)"},{value:"universite-du-quebec-a-montreal-etudes-litteraires-et-semiologie",label:"Universit\xE9 du Qu\xE9bec \xE0 Montr\xE9al - \xC9tudes litt\xE9raires et s\xE9miologie (Fran\xE7ais - Canada)"},{value:"universite-du-quebec-a-montreal",label:"Universit\xE9 du Qu\xE9bec \xE0 Montr\xE9al - APA (Fran\xE7ais - Canada)"},{value:"universite-laval-departement-des-sciences-historiques",label:"Universit\xE9 Laval - D\xE9partement des sciences historiques (Fran\xE7ais - Canada)"},{value:"universite-laval-departement-dinformation-et-de-communication",label:"Universit\xE9 Laval - D\xE9partement d'information et de communication (Fran\xE7ais - Canada)"},{value:"universite-laval-faculte-de-theologie-et-de-sciences-religieuses",label:"Universit\xE9 Laval - Facult\xE9 de th\xE9ologie et de sciences religieuses (Fran\xE7ais - Canada)"},{value:"universite-libre-de-bruxelles-histoire",label:"Universit\xE9 libre de Bruxelles - Histoire (Fran\xE7ais)"},{value:"universite-nangui-abrogoua-sciences-de-la-nature-apa",label:"Universit\xE9 Nangui Abrogoua - Sciences de la Nature - APA (Fran\xE7ais)"},{value:"universiteit-utrecht-onderzoeksgids-geschiedenis",label:"Universiteit Utrecht - Onderzoeksgids Geschiedenis (Nederlands)"},{value:"universitetet-i-oslo-rettsvitenskap",label:"Universitetet i Oslo - Rettsvitenskap (Norsk - Bokm\xE5l)"},{value:"universiti-kebangsaan-malaysia",label:"Universiti Kebangsaan Malaysia (Malay)"},{value:"university-college-dublin-school-of-history-and-archives",label:"University College Dublin - School of History & Archives"},{value:"university-college-lillebaelt-apa",label:"University College Lilleb\xE6lt - APA (Dansk)"},{value:"university-for-the-creative-arts-figures",label:"University for the Creative Arts (figures and illustrations)"},{value:"university-of-aberdeen-school-of-education-harvard",label:"University of Aberdeen - School of Education - Harvard"},{value:"university-of-aleppo-faculty-of-medicine",label:"University of Aleppo - Faculty of Medicine"},{value:"university-of-auckland-history",label:"University of Auckland - History"},{value:"university-of-bradford-harvard",label:"University of Bradford - Harvard"},{value:"university-of-cambridge-faculty-of-history",label:"University of Cambridge - Faculty of History"},{value:"university-of-gothenburg-apa-7th-edition-swedish-legislations",label:"University of Gothenburg - APA 7th edition (Swedish legislations)"},{value:"university-of-gothenburg-apa-swedish-legislations",label:"University of Gothenburg - APA 6th edition (Swedish legislations)"},{value:"university-of-helsinki-faculty-of-theology",label:"Helsingin yliopisto - Teologinen tiedekunta (Suomi)"},{value:"university-of-lincoln-harvard",label:"University of Lincoln - Harvard"},{value:"university-of-new-england-australia-note",label:"University of New England, Australia (note)"},{value:"university-of-roehampton-harvard",label:"University of Roehampton - Harvard"},{value:"university-of-south-africa-harvard",label:"University of South Africa - Harvard"},{value:"university-of-south-australia-2017-harvard",label:"University of South Australia 2017 - Harvard"},{value:"university-of-south-australia-harvard-2011",label:"University of South Australia 2011 - Harvard"},{value:"university-of-south-australia-harvard-2013",label:"University of South Australia 2013 - Harvard"},{value:"university-of-south-wales-harvard",label:"University of South Wales - Harvard"},{value:"university-of-tasmania-simplified-author-date",label:"University of Tasmania - Simplified Author-date"},{value:"university-of-york-apa",label:"University of York - APA 6th edition"},{value:"university-of-york-chicago",label:"University of York - Chicago Manual of Style 16th edition"},{value:"university-of-york-harvard-archaeology",label:"University of York - Harvard - Archaeology"},{value:"university-of-york-harvard-environment",label:"University of York - Harvard - Environment"},{value:"university-of-york-harvard",label:"University of York - Harvard"},{value:"university-of-york-ieee",label:"University of York - IEEE"},{value:"university-of-york-mhra",label:"University of York - Modern Humanities Research Association 3rd edition"},{value:"university-of-york-mla",label:"University of York - Modern Language Association 8th edition"},{value:"university-of-york-oscola",label:"University of York - OSCOLA"},{value:"university-of-york-vancouver",label:"University of York - Vancouver"},{value:"university-of-zabol-fa",label:"University of Zabol (\u0641\u0627\u0631\u0633\u06CC)"},{value:"university-of-zabol",label:"University of Zabol (English)"},{value:"univerza-na-primorskem-fakulteta-za-vede-o-zdravju-apa",label:"Univerza na Primorskem - Fakulteta za vede o zdravju - APA (Sloven\u0161\u010Dina)"},{value:"uniwersytet-im-adama-mickiewicza-w-poznaniu-wydzial-anglistyki",label:"Uniwersytet im. Adama Mickiewicza w Poznaniu - Wydzia\u0142 Anglistyki (English)"},{value:"uniwersytet-kardynala-stefana-wyszynskiego-w-warszawie-autor-rok",label:"Uniwersytet Kardyna\u0142a Stefana Wyszy\u0144skiego w Warszawie (autor-rok, Polski)"},{value:"uniwersytet-kardynala-stefana-wyszynskiego-w-warszawie-przypis",label:"Uniwersytet Kardyna\u0142a Stefana Wyszy\u0144skiego w Warszawie (przypis, Polski)"},{value:"uppsala-universitet-historia",label:"Uppsala universitet - Historia"},{value:"uppsala-universitet-institutionen-for-biologisk-grundutbildning",label:"Uppsala universitet, Institutionen f\xF6r biologisk grundutbildning"},{value:"urad-rs-za-makroekonomske-analize-in-razvoj",label:"Urad RS za makroekonomske analize in razvoj (Sloven\u0161\u010Dina)"},{value:"urban-geography",label:"Urban Geography"},{value:"urban-habitats",label:"Urban Habitats"},{value:"urban-studies",label:"Urban Studies"},{value:"urbani-izziv-en",label:"Urbani izziv (Urban Challenge) (English)"},{value:"urbani-izziv",label:"Urbani izziv (Urban Challenge) (Sloven\u0161\u010Dina)"},{value:"urological-science",label:"Urological Science"},{value:"us-geological-survey",label:"U.S. Geological Survey"},{value:"usda-forest-service-pacific-northwest-research-station",label:"USDA Forest Service - Pacific Northwest Research Station"},{value:"user-modeling-and-user-adapted-interaction",label:"User Modeling and User-Adapted Interaction"},{value:"uspekhi-gerontologii",label:"\u0423\u0441\u043F\u0435\u0445\u0438 \u0433\u0435\u0440\u043E\u043D\u0442\u043E\u043B\u043E\u0433\u0438\u0438 (\u0420\u0443\u0301\u0441\u0441\u043A\u0438\u0439)"},{value:"utah-geological-survey",label:"Utah Geological Survey"},{value:"vancouver-author-date",label:"Vancouver (author-date)"},{value:"vancouver-brackets-no-et-al",label:'Vancouver (brackets, no "et al.")'},{value:"vancouver-brackets-only-year-no-issue",label:"Vancouver (brackets, only year in date, no issue numbers)"},{value:"vancouver-brackets",label:"Vancouver (brackets)"},{value:"vancouver-fr-ca",label:"Vancouver (Fran\xE7ais - Canada)"},{value:"vancouver-imperial-college-london",label:"Imperial College London - Vancouver"},{value:"vancouver-superscript-brackets-only-year",label:"Vancouver (superscript, brackets, only year in date)"},{value:"vancouver-superscript-only-year",label:"Vancouver (superscript, only year in date, no issue numbers)"},{value:"vancouver-superscript",label:"Vancouver (superscript)"},{value:"vancouver",label:"Vancouver"},{value:"veterinaria-italiana",label:"Veterinaria Italiana"},{value:"veterinary-medicine-austria",label:"Veterinary Medicine Austria (Wiener Tier\xE4rztliche Monatsschrift)"},{value:"veterinary-microbiology",label:"Veterinary Microbiology"},{value:"veterinary-pathology",label:"Veterinary Pathology"},{value:"veterinary-radiology-and-ultrasound",label:"Veterinary Radiology & Ultrasound"},{value:"veterinary-record",label:"Veterinary Record"},{value:"victoria-university-harvard",label:"Victoria University - Harvard"},{value:"vienna-legal",label:"Vienna Legal"},{value:"vietnam-ministry-of-education-and-training-en",label:"Vietnam Ministry of Education and Training (English)"},{value:"vietnam-ministry-of-education-and-training-vi",label:"Vietnam Ministry of Education and Training (Ti\u1EBFng Vi\u1EC7t)"},{value:"vigiliae-christianae",label:"Vigiliae Christianae"},{value:"vilnius-gediminas-technical-university",label:"Vilnius Gediminas Technical University (Lietuvi\u0173 kalba)"},{value:"vingtieme-siecle",label:"Vingti\xE8me Si\xE8cle. Revue d'histoire (Fran\xE7ais)"},{value:"vita-latina-auteurs-anciens",label:"Vita Latina (auteurs anciens, Fran\xE7ais)"},{value:"vita-latina",label:"Vita Latina (Fran\xE7ais)"},{value:"vodohospodarske-technicko-ekonomicke-informace-en",label:"Vodohospod\xE1\u0159sk\xE9 technicko-ekonomick\xE9 informace (English)"},{value:"vodohospodarske-technicko-ekonomicke-informace",label:"Vodohospod\xE1\u0159sk\xE9 technicko-ekonomick\xE9 informace (\u010Ce\u0161tina)"},{value:"wader-study",label:"Wader Study"},{value:"water-alternatives",label:"Water Alternatives"},{value:"water-environment-research",label:"Water Environment Research"},{value:"water-sa",label:"Water SA"},{value:"water-science-and-technology",label:"Water Science & Technology"},{value:"waterbirds",label:"Waterbirds"},{value:"weed-research",label:"Weed Research"},{value:"weed-science-society-of-america",label:"Weed Science Society of America"},{value:"west-european-politics",label:"West European Politics"},{value:"western-journal-of-emergency-medicine",label:"Western Journal of Emergency Medicine"},{value:"westfalische-wilhelms-universitat-munster-medizinische-fakultat",label:"Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster - Medizinische Fakult\xE4t (Deutsch)"},{value:"wetlands",label:"Wetlands"},{value:"wheaton-college-phd-in-biblical-and-theological-studies",label:"Wheaton College - Ph.D. in Biblical and Theological Studies"},{value:"who-europe-harvard",label:"WHO Regional Office for Europe - Harvard"},{value:"who-europe-numeric",label:"WHO Regional Office for Europe (numeric)"},{value:"wiesbaden-business-school",label:"Wiesbaden Business School"},{value:"wikipedia-templates",label:"Wikipedia Templates"},{value:"wiley-vch-books",label:"Wiley-VCH books"},{value:"wireless-communications-and-mobile-computing",label:"Wireless Communications and Mobile Computing"},{value:"wirtschaftsuniversitat-wien-abteilung-fur-bildungswissenschaft",label:"Wirtschaftsuniversit\xE4t Wien - Abteilung f\xFCr Bildungswissenschaft (Deutsch - \xD6sterreich)"},{value:"wirtschaftsuniversitat-wien-author-date",label:"Wirtschaftsuniversit\xE4t Wien (author-date)"},{value:"wirtschaftsuniversitat-wien-handel-und-marketing",label:"Wirtschaftsuniversit\xE4t Wien - Handel und Marketing (Deutsch - \xD6sterreich)"},{value:"wirtschaftsuniversitat-wien-health-care-management",label:"Wirtschaftsuniversit\xE4t Wien - Health Care Management"},{value:"wirtschaftsuniversitat-wien-institut-fur-bwl-des-aussenhandels",label:"Wirtschaftsuniversit\xE4t Wien - Institut f\xFCr BWL des Au\xDFenhandels (Deutsch - \xD6sterreich)"},{value:"wirtschaftsuniversitat-wien-institut-fur-transportwirtschaft-und-logistik",label:"Wirtschaftsuniversit\xE4t Wien - Institut f\xFCr Transportwirtschaft und Logistik (Deutsch - \xD6sterreich)"},{value:"wirtschaftsuniversitat-wien-unternehmensrechnung-und-controlling",label:"Wirtschaftsuniversit\xE4t Wien - Unternehmensrechnung und Controlling"},{value:"wirtschaftsuniversitat-wien-wirtschaftspadagogik",label:"Wirtschaftsuniversit\xE4t Wien - Wirtschaftsp\xE4dagogik (Deutsch - \xD6sterreich)"},{value:"wissenschaftlicher-industrielogistik-dialog",label:"Wissenschaftlicher Industrielogistik-Dialog (Deutsch - \xD6sterreich)"},{value:"wolters-kluwerbrede-schrijfwijzer-author-date",label:"Wolters Kluwerbrede Schrijfwijzer (author-date, Nederlands)"},{value:"world-applied-sciences-journal",label:"World Applied Sciences Journal"},{value:"world-congress-on-engineering-asset-management",label:"World Congress on Engineering Asset Management 2010"},{value:"world-mycotoxin-journal",label:"World Mycotoxin Journal"},{value:"world-organisation-for-animal-health-scientific-and-technical-review",label:"World Organisation for Animal Health - Scientific and Technical Review"},{value:"world-politcs",label:"World Politics"},{value:"worlds-poultry-science-journal",label:"World's Poultry Science Journal"},{value:"worlds-veterinary-journal",label:"World's Veterinary Journal"},{value:"xenotransplantation",label:"Xenotransplantation"},{value:"yeast",label:"Yeast"},{value:"yozgat-bozok-universitesi-fen-bilimleri-enstitusu",label:"Yozgat Bozok \xDCniversitesi - Fen Bilimleri Enstit\xFCs\xFC (T\xFCrk\xE7e)"},{value:"zastosowania-komputerow-w-elektrotechnice",label:"Zastosowania Komputer\xF3w w Elektrotechnice"},{value:"zdfm-zeitschrift-fur-diversitatsforschung-und-management",label:"ZDfm \u2013 Zeitschrift f\xFCr Diversit\xE4tsforschung und -management (Deutsch - \xD6sterreich)"},{value:"zdravniski-vestnik",label:"Zdravni\u0161ki Vestnik (Slovenian Medical Journal)"},{value:"zeitgeschichte",label:"Zeitgeschichte (Deutsch)"},{value:"zeithistorische-forschungen",label:"Zeithistorische Forschungen/Studies in Contemporary History"},{value:"zeitschrift-fur-allgemeinmedizin",label:"Zeitschrift f\xFCr Allgemeinmedizin"},{value:"zeitschrift-fur-antikes-christentum",label:"Zeitschrift f\xFCr Antikes Christentum (Journal of Ancient Christianity) (English)"},{value:"zeitschrift-fur-deutsche-philologie",label:"Zeitschrift f\xFCr deutsche Philologie (Deutsch)"},{value:"zeitschrift-fur-die-geschichte-des-oberrheins",label:"Zeitschrift f\xFCr die Geschichte des Oberrheins (Deutsch)"},{value:"zeitschrift-fur-digitale-geisteswissenschaften",label:"Zeitschrift f\xFCr digitale Geisteswissenschaften (Deutsch)"},{value:"zeitschrift-fur-fantastikforschung",label:"Zeitschrift f\xFCr Fantastikforschung (Deutsch)"},{value:"zeitschrift-fur-geschichtsdidaktik",label:"Zeitschrift f\xFCr Geschichtsdidaktik (Deutsch)"},{value:"zeitschrift-fur-internationale-beziehungen",label:"Zeitschrift f\xFCr Internationale Beziehungen (Deutsch)"},{value:"zeitschrift-fur-kunstgeschichte",label:"Zeitschrift f\xFCr Kunstgeschichte"},{value:"zeitschrift-fur-medien-und-kulturforschung",label:"Zeitschrift f\xFCr Medien- und Kulturforschung (Deutsch)"},{value:"zeitschrift-fur-medienwissenschaft",label:"Zeitschrift f\xFCr Medienwissenschaft (Deutsch)"},{value:"zeitschrift-fur-ostmitteleuropa-forschung",label:"Zeitschrift f\xFCr Ostmitteleuropa-Forschung (Deutsch)"},{value:"zeitschrift-fur-padagogik",label:"Zeitschrift f\xFCr P\xE4dagogik (Deutsch)"},{value:"zeitschrift-fur-papyrologie-und-epigraphik",label:"Zeitschrift f\xFCr Papyrologie und Epigraphik"},{value:"zeitschrift-fur-parlamentsfragen",label:"Zeitschrift f\xFCr Parlamentsfragen (Deutsch)"},{value:"zeitschrift-fur-politik",label:"Zeitschrift f\xFCr Politik (German)"},{value:"zeitschrift-fur-qualitative-forschung",label:"Zeitschrift f\xFCr Qualitative Forschung (Deutsch)"},{value:"zeitschrift-fur-religionswissenschaft-author-date",label:"Zeitschrift f\xFCr Religionswissenschaft (author-date)"},{value:"zeitschrift-fur-religionswissenschaft-note",label:"Zeitschrift f\xFCr Religionswissenschaft (note)"},{value:"zeitschrift-fur-soziologie",label:"Zeitschrift f\xFCr Soziologie (Deutsch)"},{value:"zeitschrift-fur-theologie-und-kirche",label:"Zeitschrift f\xFCr Theologie und Kirche (Deutsch)"},{value:"zeitschrift-fur-theologie-und-philosophie",label:"Zeitschrift f\xFCr Theologie und Philosophie"},{value:"zeitschrift-fur-zahnarztliche-implantologie",label:"Zeitschrift f\xFCr Zahn\xE4rztliche Implantologie (Deutsch)"},{value:"zeszyty-prawnicze-bas",label:"Zeszyty Prawnicze BAS (Polski)"},{value:"zilsel",label:"Zilsel (Fran\xE7ais)"},{value:"zitierguide-leitfaden-zum-fachgerechten-zitieren-in-rechtswissenschaftlichen-arbeiten",label:"ZitierGuide: Leitfaden zum fachgerechten Zitieren in rechtswissenschaftlichen Arbeiten (Roger M\xFCller) (Deutsch - Schweiz)"},{value:"zoological-journal-of-the-linnean-society",label:"Zoological Journal of the Linnean Society"},{value:"zootaxa",label:"Zootaxa"},{value:"zwitscher-maschine",label:"Zwitscher-Maschine"},{value:"jm-azr-erstzitat-kurz-mit-verzeichnissen",label:"JM AZR (Erstzitat kurz mit Verzeichnissen)"},{value:"jm-azr",label:"JM AZR"},{value:"jm-chicago-fullnote-bibliography-nagoya",label:"JM Chicago Manual of Style 16th edition (full note) [Nagoya]"},{value:"jm-chicago-fullnote-bibliography-polyglot",label:"JM Chicago Manual of Style 16th edition (full note, polyglot)"},{value:"jm-chicago-fullnote-bibliography",label:"JM Chicago Manual of Style 16th edition (full note)"},{value:"jm-chinese-gb7714-2005-numeric",label:"JM Chinese Std GB/T 7714-2005 (numeric, Chinese)"},{value:"jm-diritto-pubblico-comparato-ed-europeo",label:"JM Diritto pubblico comparato ed europeo"},{value:"harvard-australian-national-university",label:"JM Harvard - Australian National University"},{value:"jm-ibfd-with-page-label",label:"JM IBFD Standard Citations and References (with page label)"},{value:"jm-ibfd",label:"JM IBFD Standard Citations and References"},{value:"jm-indigobook-law-review",label:"JM Indigo Book Law Review"},{value:"jm-indigobook",label:"JM Indigo Book"},{value:"japan-sociological-society",label:"\u65E5\u672C\u793E\u4F1A\u5B66\u4F1A (author-date, Japanese)"},{value:"jm-leg-cit-literaturverzeichnis",label:"JM leg cit mit Literaturverzeichnis"},{value:"jm-leg-cit-ohne-verzeichnisse",label:"JM leg cit ohne Verzeichnisse"},{value:"jm-leg-cit-rechtsquellenverzeichnis-literaturverzeichnis",label:"JM leg cit mit Rechtsquellenverzeichnis und Literaturverzeichnis"},{value:"jm-mgcill-v9",label:"JM - Canadian Guide to Uniform Legal Citation (9th edition) / Manuel canadien de la r\xE9f\xE9rence juridique (9\u1D49 \xE9dition)"},{value:"jm-new-zealand-law",label:"JM New Zealand Law Style"},{value:"jm-oscola",label:"JM OSCOLA - Oxford Standard for Citation of Legal Authorities"},{value:"jm-taylor-and-francis-chicago-author-date",label:"JM Taylor & Francis - Chicago Manual of Style (author-date)"},{value:"jm-turabian-fullnote-bibliography-eu-multi",label:"JM Turabian 8th edition (full note, EU multilingual)"},{value:"jm-turabian-fullnote-bibliography-nl-multi",label:"JM Turabian 8th edition (full note, Dutch multilingual)"},{value:"jm-vis-moot-1",label:"JM Vis Moot variant 1"},{value:"jm-wirtschaftsuniversitat-wien-steuerrecht",label:"JM Wirtschaftsuniversit\xE4t Wien \u2013 Steuerrecht"},{value:"juris-eu.int",label:"Verwijzingen en Afkortingen (Belgium)"}],j_=new qt(qr,{keys:["label"],minMatchCharLength:3});var Xr={input:e=>({...e,color:"var(--text-normal)"}),singleValue:e=>({...e,color:"var(--text-normal)"}),menu:e=>({...e,backgroundColor:"var(--background-modifier-form-field)",color:"var(--text-normal)"}),option:(e,{isFocused:t,isSelected:a})=>({...e,backgroundColor:t?"var(--interactive-accent)":a?"var(--background-modifier-hover)":void 0,color:t?"var(--text-on-accent)":"var(--text-normal)"}),control:(e,t)=>({...e,backgroundColor:"var(--background-modifier-form-field)",color:"var(--text-normal)",borderColor:t.isFocused?"var(--interactive-accent)":"var(--background-modifier-border)",boxShadow:t.isFocused?"0 0 0 1px var(--interactive-accent)":"none",":hover":{borderColor:t.isFocused?"var(--interactive-accent)":"var(--background-modifier-border)"}})};function cD(e){return j_.search(e).map(t=>t.item)}var L_=0;function Pc(e,t){e===""?t([]):(clearTimeout(L_),L_=activeWindow.setTimeout(()=>{t([{value:e,label:e},...cD(e)])},150))}function Oc(){return I.createElement("span",null,"Type to search CSL styles")}function D_(){return I.createElement("span",null,"Type to search")}function z_(){let e=app.vault.getMarkdownFiles();return new qt(e,{keys:["basename"],minMatchCharLength:2})}var M_=0,G_=e=>(t,a)=>{t===""?a([]):(clearTimeout(M_),M_=activeWindow.setTimeout(()=>{a(e.search(t).map(n=>({value:n.item.path,label:n.item.path})))},150))};function H_({format:e,index:t,updateFormat:a,removeFormat:n}){let i=I.useMemo(()=>{if(!e.cslStyle)return;let p=qr.find(b=>b.value===e.cslStyle);return p||{label:e.cslStyle,value:e.cslStyle}},[e.cslStyle]),r=I.useCallback(p=>{a(t,{...e,name:p.target.value})},[a,t,e]),o=I.useCallback(p=>{let b=p.target.value,d={...e,format:b};b==="latex"?d.command="cite":b==="biblatex"?d.command="autocite":d.command&&delete d.command,d.format!=="template"&&d.template&&delete d.template,d.format!=="pandoc"&&d.brackets&&delete d.brackets,a(t,d)},[a,t,e]),s=I.useCallback(p=>{a(t,{...e,template:p.target.value})},[a,t,e]),l=I.useCallback(p=>{a(t,{...e,cslStyle:p==null?void 0:p.value})},[a,t,e]),u=I.useCallback(p=>{a(t,{...e,command:p.target.value})},[a,t,e]),c=I.useCallback(()=>{a(t,{...e,brackets:!e.brackets})},[a,t,e]),f=I.useCallback(()=>{n(t)},[n,t]);return I.createElement("div",{className:"zt-format"},I.createElement("div",{className:"zt-format__form"},I.createElement("div",{className:"zt-format__label"},"Name"),I.createElement("div",{className:"zt-format__input-wrapper"},I.createElement("input",{onChange:r,type:"text",value:e.name}),I.createElement("div",{className:"zt-format__delete"},I.createElement("button",{className:"zt-format__delete-btn",onClick:f},I.createElement(ca,{name:"trash"}))))),I.createElement("div",{className:"zt-format__form"},I.createElement("div",{className:"zt-format__label"},"Output Format"),I.createElement("div",{className:"zt-format__input-wrapper"},I.createElement("select",{className:"dropdown",defaultValue:e.format,onChange:o},I.createElement("option",{value:"latex"},"LaTeX"),I.createElement("option",{value:"biblatex"},"BibLaTeX"),I.createElement("option",{value:"pandoc"},"Pandoc"),I.createElement("option",{value:"formatted-citation"},"Formatted Citation"),I.createElement("option",{value:"formatted-bibliography"},"Formatted Bibliography"),I.createElement("option",{value:"template"},"Template")))),e.format==="template"&&I.createElement("div",{className:"zt-format__form"},I.createElement("div",{className:"zt-format__label"},"Template"),I.createElement("div",{className:"zt-format__input-wrapper"},I.createElement("textarea",{rows:4,onChange:s,value:e.template})),I.createElement("div",{className:"zt-format__input-note"},"Citation templates have access to a subset of the Zotero item's data. The item's first attachement is available under the"," ",I.createElement("pre",null,"attachment")," key. Annotations are not provided. Open the data explorer from the command pallet to see available template data. Templates are written using"," ",I.createElement("a",{href:"https://mozilla.github.io/nunjucks/templating.html#variables",target:"_blank",rel:"noreferrer"},"Nunjucks"),"."," ",I.createElement("a",{href:"https://github.com/mgmeyers/obsidian-zotero-integration/blob/main/docs/Templating.md",target:"_blank",rel:"noreferrer"},"See the templating documentation here"),".")),["formatted-citation","formatted-bibliography","template"].contains(e.format)&&I.createElement("div",{className:"zt-format__form"},I.createElement("div",{className:"zt-format__label"},e.format==="template"?"Bibliography Style":"Citation Style"),I.createElement("div",{className:"zt-format__input-wrapper"},I.createElement(Jr,{noOptionsMessage:Oc,placeholder:"Search...",cacheOptions:!0,defaultValue:i,className:"zt-multiselect",loadOptions:Pc,isClearable:!0,onChange:l,styles:Xr})),I.createElement("div",{className:"zt-format__input-note"},"Note, the chosen style must be installed in Zotero. See"," ",I.createElement("a",{target:"_blank",href:"https://www.zotero.org/support/styles",rel:"noreferrer"},"Zotero: Citation Styles"))),["latex","biblatex"].contains(e.format)&&I.createElement("div",{className:"zt-format__form"},I.createElement("div",{className:"zt-format__label"},"Citation Command"),I.createElement("div",{className:"zt-format__input-wrapper"},I.createElement("input",{type:"text",value:e.command,onChange:u}))),e.format==="pandoc"&&I.createElement("div",{className:"zt-format__form"},I.createElement("div",{className:"zt-format__label"},"Include Brackets"),I.createElement("div",{className:"zt-format__input-wrapper"},I.createElement("div",{onClick:c,className:`checkbox-container${e.brackets?" is-enabled":""}`}))))}function W_({format:e,index:t,updateFormat:a,removeFormat:n}){let i=I.useMemo(()=>{let f=z_();return G_(f)},[]),r=I.useMemo(()=>{if(!e.templatePath)return;let f=app.vault.getMarkdownFiles().find(p=>p.path===e.templatePath);return f?{value:f.path,label:f.path}:void 0},[e.templatePath]),o=I.useMemo(()=>{if(!e.cslStyle)return;let f=qr.find(p=>p.value===e.cslStyle);return f||{label:e.cslStyle,value:e.cslStyle}},[e.cslStyle]),s=I.useCallback(f=>{let p=f.target.dataset.key;a(t,{...e,[p]:f.target.value})},[a,t,e]),l=I.useCallback(f=>{a(t,{...e,cslStyle:f==null?void 0:f.value})},[a,t,e]),u=I.useCallback(f=>{a(t,{...e,templatePath:f==null?void 0:f.value})},[a,t,e]),c=I.useCallback(()=>{n(t)},[n,t]);return I.createElement("div",{className:"zt-format"},I.createElement("div",{className:"zt-format__form"},I.createElement("div",{className:"zt-format__label"},"Name"),I.createElement("div",{className:"zt-format__input-wrapper"},I.createElement("input",{onChange:s,type:"text","data-key":"name",value:e.name}),I.createElement("div",{className:"zt-format__delete"},I.createElement("button",{className:"zt-format__delete-btn",onClick:c},I.createElement(ca,{name:"trash"}))))),I.createElement("div",{className:"zt-format__form"},I.createElement("div",{className:"zt-format__label"},"Output Path"),I.createElement("div",{className:"zt-format__input-wrapper"},I.createElement("input",{onChange:s,type:"text","data-key":"outputPathTemplate",value:e.outputPathTemplate})),I.createElement("div",{className:"zt-format__input-note"},"The file path of the exported markdown. Supports templating, eg"," ",I.createElement("pre",null,"My Folder/","{{citekey}}",".md"),". Templates have access to data from the Zotero item and its first attachment.")),I.createElement("div",{className:"zt-format__form"},I.createElement("div",{className:"zt-format__label"},"Image Output Path"),I.createElement("div",{className:"zt-format__input-wrapper"},I.createElement("input",{onChange:s,type:"text","data-key":"imageOutputPathTemplate",value:e.imageOutputPathTemplate})),I.createElement("div",{className:"zt-format__input-note"},"The folder in which images should be saved. Supports templating, eg"," ",I.createElement("pre",null,"Assets/","{{citekey}}","/"),". Templates have access to data from the Zotero item and its first attachment.")),I.createElement("div",{className:"zt-format__form"},I.createElement("div",{className:"zt-format__label"},"Image Base Name"),I.createElement("div",{className:"zt-format__input-wrapper"},I.createElement("input",{onChange:s,type:"text","data-key":"imageBaseNameTemplate",value:e.imageBaseNameTemplate})),I.createElement("div",{className:"zt-format__input-note"},"The base file name of exported images. Eg. ",I.createElement("pre",null,"image")," will result in ",I.createElement("pre",null,"image-1-x123-y456.jpg")," where ",I.createElement("pre",null,"1")," is the page number and ",I.createElement("pre",null,"x123")," and ",I.createElement("pre",null,"y456")," are the x and y coordinates of rectangle annotation on the page. Supports templating. Templates have access to data from the Zotero item and its first attachment.")),I.createElement("div",{className:"zt-format__form"},I.createElement("div",{className:"zt-format__label"},"Template File"),I.createElement("div",{className:"zt-format__input-wrapper"},I.createElement(Jr,{noOptionsMessage:D_,placeholder:"Search...",cacheOptions:!0,defaultValue:r,className:"zt-multiselect",loadOptions:i,isClearable:!0,onChange:u,styles:Xr})),I.createElement("div",{className:"zt-format__input-note"},"Open the data explorer from the command pallet to see available template data. Templates are written using"," ",I.createElement("a",{href:"https://mozilla.github.io/nunjucks/templating.html#variables",target:"_blank",rel:"noreferrer"},"Nunjucks"),"."," ",I.createElement("a",{href:"https://github.com/mgmeyers/obsidian-zotero-integration/blob/main/docs/Templating.md",target:"_blank",rel:"noreferrer"},"See the templating documentation here"),".")),e.headerTemplatePath&&I.createElement("div",{className:"zt-format__form is-deprecated"},I.createElement("div",{className:"zt-format__label"},"Header Template File (deprecated)"),I.createElement("div",{className:"zt-format__input-wrapper"},I.createElement("input",{type:"text",disabled:!0,value:e.headerTemplatePath}),I.createElement("button",{className:"mod-warning",onClick:()=>{a(t,{...e,headerTemplatePath:void 0})}},"Remove Template")),I.createElement("div",{className:"zt-format__input-note"},"Deprecated: Separate template files are no longer needed."," ",I.createElement("a",{href:"https://github.com/mgmeyers/obsidian-zotero-integration/blob/main/docs/Templating.md",target:"_blank",rel:"noreferrer"},"See the templating documentation here"),".")),e.annotationTemplatePath&&I.createElement("div",{className:"zt-format__form is-deprecated"},I.createElement("div",{className:"zt-format__label"},"Annotation Template File (deprecated)"),I.createElement("div",{className:"zt-format__input-wrapper"},I.createElement("input",{type:"text",disabled:!0,value:e.annotationTemplatePath}),I.createElement("button",{className:"mod-warning",onClick:()=>{a(t,{...e,annotationTemplatePath:void 0})}},"Remove Template")),I.createElement("div",{className:"zt-format__input-note"},"Deprecated: Separate template files are no longer needed."," ",I.createElement("a",{href:"https://github.com/mgmeyers/obsidian-zotero-integration/blob/main/docs/Templating.md",target:"_blank",rel:"noreferrer"},"See the templating documentation here"),".")),e.footerTemplatePath&&I.createElement("div",{className:"zt-format__form is-deprecated"},I.createElement("div",{className:"zt-format__label"},"Footer Template File (deprecated)"),I.createElement("div",{className:"zt-format__input-wrapper"},I.createElement("input",{type:"text",disabled:!0,value:e.footerTemplatePath}),I.createElement("button",{className:"mod-warning",onClick:()=>{a(t,{...e,footerTemplatePath:void 0})}},"Remove Template")),I.createElement("div",{className:"zt-format__input-note"},"Deprecated: Separate template files are no longer needed."," ",I.createElement("a",{href:"https://github.com/mgmeyers/obsidian-zotero-integration/blob/main/docs/Templating.md",target:"_blank",rel:"noreferrer"},"See the templating documentation here"),".")),I.createElement("div",{className:"zt-format__form"},I.createElement("div",{className:"zt-format__label"},"Bilbiography Style"),I.createElement("div",{className:"zt-format__input-wrapper"},I.createElement(Jr,{noOptionsMessage:Oc,placeholder:"Search...",cacheOptions:!0,defaultValue:o,className:"zt-multiselect",loadOptions:Pc,isClearable:!0,onChange:l,styles:Xr})),I.createElement("div",{className:"zt-format__input-note"},"Note, the chosen style must be installed in Zotero. See"," ",I.createElement("a",{target:"_blank",href:"https://www.zotero.org/support/styles",rel:"noreferrer"},"Zotero: Citation Styles"))))}function uD({settings:e,addCiteFormat:t,updateCiteFormat:a,removeCiteFormat:n,addExportFormat:i,updateExportFormat:r,removeExportFormat:o,updateSetting:s}){let[l,u]=I.useState(e.citeFormats),[c,f]=I.useState(e.exportFormats),[p,b]=I.useState(!!e.openNoteAfterImport),[d,m]=I.useState(e.pdfExportImageOCR),[h,v]=I.useState(!!e.shouldConcat),x=I.useCallback((0,Ja.debounce)((F,B)=>{u(a(F,B))},200,!0),[a]),E=I.useCallback(()=>{u(t({name:`Format #${l.length+1}`,format:"formatted-citation"}))},[t,l]),g=I.useCallback(F=>{u(n(F))},[n]),w=I.useCallback((0,Ja.debounce)((F,B)=>{f(r(F,B))},200,!0),[r]),C=I.useCallback(()=>{f(i({name:`Import #${c.length+1}`,outputPathTemplate:"{{citekey}}.md",imageOutputPathTemplate:"{{citekey}}/",imageBaseNameTemplate:"image"}))},[i,l]),y=I.useCallback(F=>{f(o(F))},[o]),S=I.useRef(null),A=I.useRef(null),[_,P]=I.useState(e.database==="Custom");return I.createElement("div",null,I.createElement(He,{name:"General Settings",isHeading:!0}),I.createElement(qA,{settings:e,updateSetting:s}),I.createElement(He,{name:"Database",description:"Supports Zotero and Juris-M. Alternatively a custom port number can be specified."},I.createElement("select",{className:"dropdown",defaultValue:e.database,onChange:F=>{let B=F.target.value;s("database",B),P(B==="Custom")}},I.createElement("option",{value:"Zotero"},"Zotero"),I.createElement("option",{value:"Juris-M"},"Juris-M"),I.createElement("option",{value:"Custom"},"Custom"))),_?I.createElement(He,{name:"Port number",description:"If a custom port number has been set in Zotero, enter it here."},I.createElement("input",{onChange:F=>s("port",F.target.value),type:"number",placeholder:"Example: 23119",defaultValue:e.port})):null,I.createElement(He,{name:"Note Import Location",description:"Notes imported from Zotero will be added to this folder in your vault"},I.createElement("input",{onChange:F=>s("noteImportFolder",F.target.value),type:"text",spellCheck:!1,placeholder:"Example: folder 1/folder 2",defaultValue:e.noteImportFolder})),I.createElement(He,{name:"Open the created or updated note(s) after import",description:"The created or updated markdown files resulting from the import will be automatically opened."},I.createElement("div",{onClick:()=>{b(F=>(s("openNoteAfterImport",!F),!F))},className:`checkbox-container${p?" is-enabled":""}`})),I.createElement(He,{name:"Which notes to open after import",description:"Open either the first note imported, the last note imported, or all notes in new tabs."},I.createElement("select",{className:"dropdown",defaultValue:e.whichNotesToOpenAfterImport,disabled:!e.openNoteAfterImport,onChange:F=>s("whichNotesToOpenAfterImport",F.target.value)},I.createElement("option",{value:"first-imported-note"},"First imported note"),I.createElement("option",{value:"last-imported-note"},"Last imported note"),I.createElement("option",{value:"all-imported-notes"},"All imported notes"))),I.createElement(He,{name:"Enable Annotation Concatenation",description:"Annotations extracted from PDFs that begin with '+' will be appended to the previous annotation. Note: Annotation ordering is not always consistent and you may not always acheive the desire concatenation result"},I.createElement("div",{onClick:()=>{v(F=>(s("shouldConcat",!F),!F))},className:`checkbox-container${h?" is-enabled":""}`})),I.createElement(He,{name:"Citation Formats",isHeading:!0}),I.createElement(He,null,I.createElement("button",{onClick:E,className:"mod-cta"},"Add Citation Format")),l.map((F,B)=>I.createElement(H_,{key:B,format:F,index:B,updateFormat:x,removeFormat:g})),I.createElement(He,{name:"Import Formats",isHeading:!0}),I.createElement(He,null,I.createElement("button",{onClick:C,className:"mod-cta"},"Add Import Format")),c.map((F,B)=>I.createElement(W_,{key:c.length-B,format:F,index:B,updateFormat:w,removeFormat:y})),I.createElement(He,{name:"Import Image Settings",description:"Rectangle annotations will be extracted from PDFs as images.",isHeading:!0}),I.createElement(He,{name:"Image Format"},I.createElement("select",{className:"dropdown",defaultValue:e.pdfExportImageFormat,onChange:F=>s("pdfExportImageFormat",F.target.value)},I.createElement("option",{value:"jpg"},"jpg"),I.createElement("option",{value:"png"},"png"))),I.createElement(He,{name:"Image Quality (jpg only)"},I.createElement("input",{min:"0",max:"100",onChange:F=>s("pdfExportImageQuality",Number(F.target.value)),type:"number",defaultValue:e.pdfExportImageQuality.toString()})),I.createElement(He,{name:"Image DPI"},I.createElement("input",{min:"0",onChange:F=>s("pdfExportImageDPI",Number(F.target.value)),type:"number",defaultValue:e.pdfExportImageDPI.toString()})),I.createElement(He,{name:"Image OCR",description:I.createElement("div",null,"Attempt to extract text from images created by rectangle annotations. This requires that"," ",I.createElement("a",{href:"https://tesseract-ocr.github.io/tessdoc/",target:"_blank",rel:"noreferrer"},"tesseract")," ","be installed on your system. Tesseract can be installed from",I.createElement("a",{href:"https://brew.sh/",target:"_blank",rel:"noreferrer"},"homebrew on mac"),", various linux package managers, and from"," ",I.createElement("a",{href:"https://github.com/UB-Mannheim/tesseract/wiki",target:"_blank",rel:"noreferrer"},"here on windows"),".")},I.createElement("div",{onClick:()=>m(F=>(s("pdfExportImageOCR",!F),!F)),className:`checkbox-container${d?" is-enabled":""}`})),I.createElement(He,{name:"Tesseract path",description:I.createElement("div",null,"Required: An absolute path to the tesseract executable. This can be found on mac and linux with the terminal command"," ",I.createElement("pre",null,"which tesseract"))},I.createElement("input",{ref:S,onChange:F=>s("pdfExportImageTesseractPath",F.target.value),type:"text",defaultValue:e.pdfExportImageTesseractPath}),I.createElement("div",{className:"clickable-icon setting-editor-extra-setting-button","aria-label":"Attempt to find tesseract automatically",onClick:async()=>{try{let F=await(0,V_.default)("tesseract");F?(S.current.value=F,s("pdfExportImageTesseractPath",F)):new Ja.Notice("Unable to find tesseract on your system. If it is installed, please manually enter a path.")}catch(F){new Ja.Notice("Unable to find tesseract on your system. If it is installed, please manually enter a path."),console.error(F)}}},I.createElement(ca,{name:"magnifying-glass"}))),I.createElement(He,{name:"Image OCR Language",description:I.createElement("div",null,"Optional: defaults to english. Multiple languages can be specified like so: ",I.createElement("pre",null,"eng+deu"),". Each language must be installed on your system."," ",I.createElement("a",{href:"https://github.com/tesseract-ocr/tessdata",target:"_blank",rel:"noreferrer"},"Languages can be downloaded here"),". (See"," ",I.createElement("a",{href:"https://tesseract-ocr.github.io/tessdoc/Data-Files-in-different-versions.html",target:"_blank",rel:"noreferrer"},"here for a description of the language codes"),")")},I.createElement("input",{onChange:F=>s("pdfExportImageOCRLang",F.target.value),type:"text",defaultValue:e.pdfExportImageOCRLang})),I.createElement(He,{name:"Tesseract data directory",description:"Optional: supply an absolute path to the directory where tesseract's language files reside. This folder should include *.traineddata files for your selected languages."},I.createElement("input",{ref:A,onChange:F=>s("pdfExportImageTessDataDir",F.target.value),type:"text",defaultValue:e.pdfExportImageTessDataDir}),I.createElement("div",{className:"clickable-icon setting-editor-extra-setting-button","aria-label":"Select the tesseract data directory",onClick:()=>{let F=require("electron").remote.dialog.showOpenDialogSync({properties:["openDirectory"]});F&&F.length&&(A.current.value=F[0],s("pdfExportImageTessDataDir",F[0]))}},I.createElement(ca,{name:"lucide-folder-open"}))))}var Rc=class extends Ja.PluginSettingTab{constructor(a,n){super(a,n);this.addCiteFormat=a=>(this.plugin.addFormatCommand(a),this.plugin.settings.citeFormats.unshift(a),this.debouncedSave(),this.plugin.settings.citeFormats.slice());this.updateCiteFormat=(a,n)=>(this.plugin.removeFormatCommand(this.plugin.settings.citeFormats[a]),this.plugin.addFormatCommand(n),this.plugin.settings.citeFormats[a]=n,this.debouncedSave(),this.plugin.settings.citeFormats.slice());this.removeCiteFormat=a=>(this.plugin.removeFormatCommand(this.plugin.settings.citeFormats[a]),this.plugin.settings.citeFormats.splice(a,1),this.debouncedSave(),this.plugin.settings.citeFormats.slice());this.addExportFormat=a=>(this.plugin.addExportCommand(a),this.plugin.settings.exportFormats.unshift(a),this.debouncedSave(),this.plugin.settings.exportFormats.slice());this.updateExportFormat=(a,n)=>(this.plugin.removeExportCommand(this.plugin.settings.exportFormats[a]),this.plugin.addExportCommand(n),this.plugin.settings.exportFormats[a]=n,this.debouncedSave(),this.plugin.settings.exportFormats.slice());this.removeExportFormat=a=>(this.plugin.removeExportCommand(this.plugin.settings.exportFormats[a]),this.plugin.settings.exportFormats.splice(a,1),this.debouncedSave(),this.plugin.settings.exportFormats.slice());this.updateSetting=(a,n)=>{this.plugin.settings[a]=n,this.debouncedSave()};this.plugin=n}display(){I.render(I.createElement(uD,{settings:this.plugin.settings,addCiteFormat:this.addCiteFormat,updateCiteFormat:this.updateCiteFormat,removeCiteFormat:this.removeCiteFormat,addExportFormat:this.addExportFormat,updateExportFormat:this.updateExportFormat,removeExportFormat:this.removeExportFormat,updateSetting:this.updateSetting}),this.containerEl)}debouncedSave(){clearTimeout(this.dbTimer),this.dbTimer=activeWindow.setTimeout(()=>{this.plugin.saveSettings()},150)}hide(){super.hide(),I.unmountComponentAtNode(this.containerEl)}};var U_="obsidian-zotero-desktop-connector:",J_="zdc-",Z_="zdc-exp-",pD={database:"Zotero",noteImportFolder:"",pdfExportImageDPI:120,pdfExportImageFormat:"jpg",pdfExportImageQuality:90,citeFormats:[],exportFormats:[],citeSuggestTemplate:"[[{{citekey}}]]",openNoteAfterImport:!1,whichNotesToOpenAfterImport:"first-imported-note"};async function dD(){if(process.platform!=="win32")try{let e=await dv();process.env.PATH=e||["./node_modules/.bin","/.nodebrew/current/bin","/usr/local/bin",process.env.PATH].join(":")}catch(e){console.error(e)}}var Bc=class extends En.Plugin{async onload(){await this.loadSettings(),this.emitter=new En.Events,this.updatePDFUtility(),this.addSettingTab(new Rc(this.app,this)),this.registerView(Un,a=>new Os(this,a)),this.settings.citeFormats.forEach(a=>{this.addFormatCommand(a)}),this.settings.exportFormats.forEach(a=>{this.addExportCommand(a)}),this.addCommand({id:"zdc-insert-notes",name:"Insert notes into current document",editorCallback:a=>{var i;let n={database:this.settings.database,port:this.settings.port};xp(n,(i=this.app.workspace.getActiveFile())==null?void 0:i.parent.path).then(r=>{r&&Wx(a,r)})}}),this.addCommand({id:"zdc-import-notes",name:"Import notes",callback:()=>{let a={database:this.settings.database,port:this.settings.port};xp(a,this.settings.noteImportFolder).then(n=>n?Vx(this.settings.noteImportFolder,n):[]).then(n=>this.openNotes(n))}}),this.addCommand({id:"show-zotero-debug-view",name:"Data explorer",callback:()=>{this.activateDataExplorer()}}),this.registerEvent(this.app.vault.on("modify",a=>{a instanceof En.TFile&&this.emitter.trigger("fileUpdated",a)})),app.workspace.trigger("parse-style-settings"),dD()}onunload(){this.settings.citeFormats.forEach(a=>{this.removeFormatCommand(a)}),this.settings.exportFormats.forEach(a=>{this.removeExportCommand(a)}),this.app.workspace.detachLeavesOfType(Un)}addFormatCommand(a){this.addCommand({id:`${J_}${a.name}`,name:a.name,editorCallback:n=>{let i={database:this.settings.database,port:this.settings.port};a.format==="template"&&a.template.trim()?Yx({database:i,format:a}).then(r=>{typeof r=="string"&&n.replaceSelection(r)}):Mx(a,i).then(r=>{typeof r=="string"&&n.replaceSelection(r)})}})}removeFormatCommand(a){this.app.commands.removeCommand(`${U_}${J_}${a.name}`)}addExportCommand(a){this.addCommand({id:`${Z_}${a.name}`,name:a.name,callback:async()=>{let n={database:this.settings.database,port:this.settings.port};this.openNotes(await Ep({settings:this.settings,database:n,exportFormat:a}))}})}removeExportCommand(a){this.app.commands.removeCommand(`${U_}${Z_}${a.name}`)}async runImport(a,n,i=1){let r=this.settings.exportFormats.find(s=>s.name===a);if(!r)throw new Error(`Error: Import format "${a}" not found`);let o={database:this.settings.database,port:this.settings.port};n.startsWith("@")&&(n=n.substring(1)),await Ep({settings:this.settings,database:o,exportFormat:r},[{key:n,library:i}])}async openNotes(a){let n=[];if(this.settings.openNoteAfterImport)switch(this.settings.whichNotesToOpenAfterImport){case"first-imported-note":{n.push(a[0]);break}case"last-imported-note":{n.push(a[a.length-1]);break}case"all-imported-notes":{n.push(...a);break}}await new Promise(r=>setTimeout(r,1e3));let i=this.app.workspace.getLeavesOfType("markdown");for(let r of n){let o=this.app.vault.getAbstractFileByPath(r),s=i.find(l=>l.view.file===o);s?app.workspace.revealLeaf(s):o instanceof En.TFile&&await this.app.workspace.getLeaf(!0).openFile(o)}}async loadSettings(){let a=await this.loadData();this.settings={...pD,...a}}async saveSettings(){this.emitter.trigger("settingsUpdated"),await this.saveData(this.settings)}deactivateDataExplorer(){this.app.workspace.detachLeavesOfType(Un)}async activateDataExplorer(){this.deactivateDataExplorer(),await this.app.workspace.createLeafBySplit(this.app.workspace.activeLeaf,"vertical").setViewState({type:Un})}async updatePDFUtility(){let{exeOverridePath:a,_exeInternalVersion:n,exeVersion:i}=this.settings;if(!(a||!i)&&(i!==Va||!n||n!==Cf)){let r=new nt(app,"Updating Obsidian Zotero Integration PDF Utility...");r.open();try{await Af()&&(this.settings.exeVersion=Va,this.settings._exeInternalVersion=Cf,this.saveSettings())}catch(o){}r.close()}}}; +/*! Bundled license information: + +nunjucks/browser/nunjucks.js: + (*! Browser bundle of nunjucks 3.2.4 *) + +safe-buffer/index.js: + (*! safe-buffer. MIT License. Feross Aboukhadijeh *) + +content-disposition/index.js: + (*! + * content-disposition + * Copyright(c) 2014-2017 Douglas Christopher Wilson + * MIT Licensed + *) + +object-assign/index.js: + (* + object-assign + (c) Sindre Sorhus + @license MIT + *) + +is-natural-number/index.js: + (*! + * is-natural-number.js | MIT (c) Shinnosuke Watanabe + * https://github.com/shinnn/is-natural-number.js + *) + +strip-dirs/index.js: + (*! + * strip-dirs | MIT (c) Shinnosuke Watanabe + * https://github.com/shinnn/node-strip-dirs + *) + +has-symbol-support-x/index.js: + (** + * @file Tests if ES6 Symbol is supported. + * @version 1.4.2 + * @author Xotic750 + * @copyright Xotic750 + * @license {@link MIT} + * @module has-symbol-support-x + *) + +has-to-string-tag-x/index.js: + (** + * @file Tests if ES6 @@toStringTag is supported. + * @see {@link http://www.ecma-international.org/ecma-262/6.0/#sec-@@tostringtag|26.3.1 @@toStringTag} + * @version 1.4.1 + * @author Xotic750 + * @copyright Xotic750 + * @license {@link MIT} + * @module has-to-string-tag-x + *) + +mime-db/index.js: + (*! + * mime-db + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015-2022 Douglas Christopher Wilson + * MIT Licensed + *) + +react-is/cjs/react-is.production.min.js: + (** @license React v16.13.1 + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) +*/ diff --git a/.obsidian/plugins/obsidian-zotero-desktop-connector/manifest.json b/.obsidian/plugins/obsidian-zotero-desktop-connector/manifest.json new file mode 100644 index 00000000..c513dbc8 --- /dev/null +++ b/.obsidian/plugins/obsidian-zotero-desktop-connector/manifest.json @@ -0,0 +1,10 @@ +{ + "id": "obsidian-zotero-desktop-connector", + "name": "Zotero Integration", + "version": "3.1.7", + "minAppVersion": "1.1.1", + "description": "Insert and import citations, bibliographies, notes, and PDF annotations from Zotero.", + "author": "mgmeyers", + "authorUrl": "https://github.com/mgmeyers/obsidian-zotero-integration", + "isDesktopOnly": true +} diff --git a/.obsidian/plugins/obsidian-zotero-desktop-connector/styles.css b/.obsidian/plugins/obsidian-zotero-desktop-connector/styles.css new file mode 100644 index 00000000..3327a35c --- /dev/null +++ b/.obsidian/plugins/obsidian-zotero-desktop-connector/styles.css @@ -0,0 +1,238 @@ +.zt-format { + border: 1px solid var(--background-modifier-border); + padding: 1rem; + background-color: var(--background-primary); + border-radius: 10px; + margin-bottom: 10px; +} + +.zt-format__form { + display: flex; + flex-direction: column; + align-items: stretch; + margin-bottom: 1rem; + max-width: 600px; +} + +.zt-format__form:last-child { + margin-bottom: 0; +} + +.zt-format__label { + font-size: 0.9em; + font-weight: 600; + margin-bottom: 5px; +} + +.is-deprecated .zt-format__label { + color: var(--text-error); +} + +.zt-format__input-wrapper { + display: flex; + align-items: center; +} + +.zt-format__input-wrapper textarea { + resize: vertical; +} + +.zt-format__input-wrapper > *:not(.checkbox-container) { + width: 100% !important; +} + +.is-deprecated .zt-format__input-wrapper button { + width: auto !important; + flex-grow: 0; + flex-shrink: 0; + margin-left: 5px; +} + +.zt-format__delete-btn { + display: flex; + align-items: center; + justify-content: center; + line-height: 1; + padding: 7px 9px; + margin-left: 10px; + flex-shrink: 0; + flex-grow: 0; +} + +.zt-json-viewer { + font-size: 13px; +} + +.zt-json-viewer .react-json-view { + padding: 1em; + border-radius: 10px; + margin-top: 1em; + overflow: auto; + font-family: var(--font-monospace) !important; +} + +.zt-json-viewer__btns { + display: flex; + align-items: center; + justify-content: flex-start; +} + +.zt-json-viewer__btns label { + display: block; + font-weight: bold; + padding-top: 1em; +} + +.zt-json-viewer__btns select { + font-size: 1em; +} + +.zt-json-viewer__btns button { + font-size: 1em; + margin-right: 5px; +} + +.zt-json-viewer__preview, +.zt-json-viewer__data { + border: 1px solid var(--background-modifier-border); + border-radius: 10px; + padding: 1em; + margin-top: 1em; +} + +.zt-json-viewer__preview.error { + background-color: #ff000011; + font-family: var(--font-monospace); +} + +.zt-json-viewer__preview pre { + overflow: auto; + white-space: pre-wrap; + margin: 0; +} + +.zt-json-viewer__preview pre, +.zt-json-viewer__preview code { + font-family: inherit; +} + +.zt-json-viewer__preview:not(.error) pre { + font-family: var(--font-text, --font-default, --default-font); + max-height: 70vh; + min-height: 400px; +} + +.zt-multiselect { + width: 300px; + text-align: left; +} + +.zt-multiselect input { + outline: none !important; + box-shadow: none !important; +} + +.zt-format__input-note { + font-style: italic; + font-size: 0.9em; + padding-top: 10px; + margin-bottom: 10px; +} + +.zt-setting-item pre, +.zt-format__input-note pre { + display: inline-block; + margin: 0; + padding: 0 6px; + background-color: var(--background-secondary-alt); + border-radius: 4px; +} + +.zt-asset-success { + text-align: left; + display: flex; +} + +.zt-asset-success__icon { + color: var(--interactive-success); + font-size: 24px; + margin-right: 5px; +} + +.zt-asset-success__icon svg { + width: 1em !important; + height: 1em !important; +} + +.zt-asset-success__message { + font-size: 0.9em; +} + +.zt-suggest-title { + font-size: var(--font-ui-small); + color: var(--text-muted); + display: block; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + padding-top: var(--size-4-1); +} + +.zt-suggest-loading-wrapper { + display: flex; + position: relative; + align-items: center; + justify-content: center; + padding: var(--size-4-2) 0; +} + +.zt-suggest-loading, +.zt-suggest-loading:before, +.zt-suggest-loading:after { + border-radius: 999px; + width: 1em; + height: 1em; + animation-fill-mode: both; + animation: bblFadInOut 1.6s infinite ease-in-out; +} + +.zt-suggest-loading { + display: block; + color: var(--text-muted); + font-size: 7px; + position: relative; + animation-delay: -0.16s; + top: -1em; +} +.zt-suggest-loading:before, +.zt-suggest-loading:after { + content: ''; + position: absolute; +} +.zt-suggest-loading:before { + left: -2em; + animation-delay: -0.32s; +} +.zt-suggest-loading:after { + left: 2em; +} + +.zt-color-chip { + display: inline-block; + width: 1em; + height: 1em; + border: 1px solid var(--background-modifier-border); + border-radius: var(--radius-s); + margin-right: var(--size-4-1); +} + +@keyframes bblFadInOut { + 0%, + 80%, + 100% { + box-shadow: 0 1em 0 -1.3em; + } + 40% { + box-shadow: 0 1em 0 0; + } +} diff --git a/.obsidian/plugins/rss-reader/data.json b/.obsidian/plugins/rss-reader/data.json index 869a17bf..a74278d7 100644 --- a/.obsidian/plugins/rss-reader/data.json +++ b/.obsidian/plugins/rss-reader/data.json @@ -68,7 +68,7 @@ { "title": "The Story Continues: Announcing Version 14 of Wolfram Language and Mathematica", "description": "\"\"Version 14.0 of Wolfram Language and Mathematica is available immediately both on the desktop and in the cloud. See also more detailed information on Version 13.1, Version 13.2 and Version 13.3. Building Something Greater and Greater… for 35 Years and Counting Today we celebrate a new waypoint on our journey of nearly four decades with […]", - "content": "\"\"

    Version 14.0 of Wolfram Language and Mathematica is available immediately both on the desktop and in the cloud. See also more detailed information on Version 13.1, Version 13.2 and Version 13.3.

    \n

    Building Something Greater and Greater… for 35 Years and Counting

    \n

    Today we celebrate a new waypoint on our journey of nearly four decades with the release of Version 14.0 of Wolfram Language and Mathematica. Over the two years since we released Version 13.0 we’ve been steadily delivering the fruits of our research and development in .1 releases every six months. Today we’re aggregating these—and more—into Version 14.0.

    \n

    It’s been more than 35 years now since we released Version 1.0. And all those years we’ve been continuing to build a taller and taller tower of capabilities, progressively expanding the scope of our vision and the breadth of our computational coverage of the world:

    \n

    Number of built-in fuctions

    \n

    Version 1.0 had 554 built-in functions; in Version 14.0 there are 6602. And behind each of those functions is a story. Sometimes it’s a story of creating a superalgorithm that encapsulates decades of algorithmic development. Sometimes it’s a story of painstakingly curating data that’s never been assembled before. Sometimes it’s a story of drilling down to the essence of something to invent new approaches and new functions that can capture it.

    \n

    And from all these pieces we’ve been steadily building the coherent whole that is today’s Wolfram Language. In the arc of intellectual history it defines a broad, new, computational paradigm for formalizing the world. And at a practical level it provides a superpower for implementing computational thinking—and enabling “computational X” for all fields X.

    \n

    To us it’s profoundly satisfying to see what has been done over the past three decades with everything we’ve built so far. So many discoveries, so many inventions, so much achieved, so much learned. And seeing this helps drive forward our efforts to tackle still more, and to continue to push every boundary we can with our R&D, and to deliver the results in new versions of our system.

    \n

    Our R&D portfolio is broad. From projects that get completed within months of their conception, to projects that rely on years (and sometimes even decades) of systematic development. And key to everything we do is leveraging what we have already done—often taking what in earlier years was a pinnacle of technical achievement, and now using it as a routine building block to reach a level that could barely even be imagined before. And beyond practical technology, we’re also continually going further and further in leveraging what’s now the vast conceptual framework that we’ve been building all these years—and progressively encapsulating it in the design of the Wolfram Language.

    \n

    We’ve worked hard all these years not only to create ideas and technology, but also to craft a practical and sustainable ecosystem in which we can systematically do this now and into the long-term future. And we continue to innovate in these areas, broadening the delivery of what we’ve built in new and different ways, and through new and different channels. And in the past five years we’ve also been able to open up our core design process to the world—regularly livestreaming what we’re doing in a uniquely open way.

    \n

    And indeed over the past several years the seeds of essentially everything we’re delivering today in Version 14.0 has been openly shared with the world, and represents an achievement not only for our internal teams but also for the many people who have participated in and commented on our livestreams.

    \n

    Part of what Version 14.0 is about is continuing to expand the domain of our computational language, and our computational formalization of the world. But Version 14.0 is also about streamlining and polishing the functionality we’ve already defined. Throughout the system there are things we’ve made more efficient, more robust and more convenient. And, yes, in complex software, bugs of many kinds are a theoretical and practical inevitability. And in Version 14.0 we’ve fixed nearly 10,000 bugs, the majority found by our increasingly sophisticated internal software testing methods.

    \n

    Now We Need to Tell the World

    \n

    Even after all the work we’ve put into the Wolfram Language over the past several decades, there’s still yet another challenge: how to let people know just what the Wolfram Language can do. Back when we released Version 1.0 I was able to write a book of manageable size that could pretty much explain the whole system. But for Version 14.0—with all the functionality it contains—one would need a book with perhaps 200,000 pages.

    \n

    And at this point nobody (even me!) immediately knows everything the Wolfram Language does. Of course one of our great achievements has been to maintain across all that functionality a tightly coherent and consistent design that results in there ultimately being only a small set of fundamental principles to learn. But at the vast scale of the Wolfram Language as it exists today, knowing what’s possible—and what can now be formulated in computational terms—is inevitably very challenging. And all too often when I show people what’s possible, I’ll get the response “I had no idea the Wolfram Language could do that!”

    \n

    So in the past few years we’ve put increasing emphasis into building large-scale mechanisms to explain the Wolfram Language to people. It begins at a very fine-grained level, with “just-in-time information” provided, for example, through suggestions made when you type. Then for each function (or other construct in the language) there are pages that explain the function, with extensive examples. And now, increasingly, we’re adding “just-in-time learning material” that leverages the concreteness of the functions to provide self-contained explanations of the broader context of what they do.

    \n

    By the way, in modern times we need to explain the Wolfram Language not just to humans, but also to AIs—and our very extensive documentation and examples have proved extremely valuable in training LLMs to use the Wolfram Language. And for AIs we’re providing a variety of tools—like immediate computable access to documentation, and computable error handling. And with our Chat Notebook technology there’s also a new “on ramp” for creating Wolfram Language code from linguistic (or visual, etc.) input.

    \n

    But what about the bigger picture of the Wolfram Language? For both people and AIs it’s important to be able to explain things at a higher level, and we’ve been doing more and more in this direction. For more than 30 years we’ve had “guide pages” that summarize specific functionality in particular areas. Now we’re adding “core area pages” that give a broader picture of large areas of functionality—each one in effect covering what might otherwise be a whole product on its own, if it wasn’t just an integrated part of the Wolfram Language:

    \n

    Core area pages

    \n

    But we’re going even much further, building whole courses and books that provide modern hands-on Wolfram-Language-enabled introductions to a broad range of areas. We’ve now covered the material of many standard college courses (and quite a lot besides), in a new and very effective “computational” way, that allows immediate, practical engagement with concepts:

    \n

    Wolfram U courses

    \n

    All these courses involve not only lectures and notebooks but also auto-graded exercises, as well as official certifications. And we have a regular calendar of everyone-gets-together-at-the-same-time instructor-led peer Study Groups about these courses. And, yes, our Wolfram U operation is now emerging as a significant educational entity, with many thousands of students at any given time.

    \n

    In addition to whole courses, we have “miniseries” of lectures about specific topics:

    \n

    Miniseries video lectures

    \n

    And we also have courses—and books—about the Wolfram Language itself, like my Elementary Introduction to the Wolfram Language, which came out in a third edition this year (and has an associated course, online version, etc.):

    \n

    Elementary Introduction to the Wolfram Language

    \n

    In a somewhat different direction, we’ve expanded our Wolfram Summer School to add a Wolfram Winter School, and we’ve greatly expanded our our Wolfram High School
    \nSummer Research Program
    , adding year-round programs, middle-school programs, etc.—including the new “Computational Adventures” weekly activity program.

    \n

    And then there’s livestreaming. We’ve been doing weekly “R&D livestreams” with our development team (and sometimes also external guests). And I myself have also been doing a lot of livestreaming (232 hours of it in 2023 alone)—some of it design reviews of Wolfram Language functionality, and some of it answering questions, technical and other.

    \n

    The list of ways we’re getting the word out about the Wolfram Language goes on. There’s Wolfram Community, that’s full of interesting contributions, and has ever-increasing readership. There are sites like Wolfram Challenges. There are our Wolfram Technology Conferences. And lots more.

    \n

    We’ve put immense effort into building the whole Wolfram technology stack over the past four decades. And even as we continue to aggressively build it, we’re putting more and more effort into telling the world about just what’s in it, and helping people (and AIs) to make the most effective use of it. But in a sense, everything we’re doing is just a seed for what the wider community of Wolfram Language users are doing, and can do. Spreading the power of the Wolfram Language to more and more people and areas.

    \n

    The LLMs Have Landed

    \n

    The machine learning superfunctions Classify and Predict first appeared in Wolfram Language in 2014 (Version 10). By the next year there were starting to be functions like ImageIdentify and LanguageIdentify, and within a couple of years we’d introduced our whole neural net framework and Neural Net Repository. Included in that were a variety of neural nets for language modeling, that allowed us to build out functions like SpeechRecognize and an experimental version of FindTextualAnswer. But—like everyone else—we were taken by surprise at the end of 2022 by ChatGPT and its remarkable capabilities.

    \n

    Very quickly we realized that a major new use case—and market—had arrived for Wolfram|Alpha and Wolfram Language. For now it was not only humans who’d need the tools we’d built; it was also AIs. By March 2023 we’d worked with OpenAI to use our Wolfram Cloud technology to deliver a plugin to ChatGPT that allows it to call Wolfram|Alpha and Wolfram Language. LLMs like ChatGPT provide remarkable new capabilities in reproducing human language, basic human thinking and general commonsense knowledge. But—like unaided humans—they’re not set up to deal with detailed computation or precise knowledge. For that, like humans, they have to use formalism and tools. And the remarkable thing is that the formalism and tools we’ve built in Wolfram Language (and Wolfram|Alpha) are basically a broad, perfect fit for what they need.

    \n

    We created the Wolfram Language to provide a bridge from what humans think about to what computation can express and implement. And now that’s what the AIs can use as well. The Wolfram Language provides a medium not only for humans to “think computationally” but also for AIs to do so. And we’ve been steadily doing the engineering to let AIs call on Wolfram Language as easily as possible.

    \n

    But in addition to LLMs using Wolfram Language, there’s also now the possibility of Wolfram Language using LLMs. And already in June 2023 (Version 13.3) we released a major collection of LLM-based capabilities in Wolfram Language. One category is LLM functions, that effectively use LLMs as “internal algorithms” for operations in Wolfram Language:

    \n
    \n
    \n

    \n

    In typical Wolfram Language fashion, we have a symbolic representation for LLMs: LLMConfiguration[] represents an LLM with its various parameters, promptings, etc. And in the past few months we’ve been steadily adding connections to the full range of popular LLMs, making Wolfram Language a unique hub not only for LLM usage, but also for studying the performance—and science—of LLMs.

    \n

    You can define your own LLM functions in Wolfram Language. But there’s also the Wolfram Prompt Repository that plays a similar role for LLM functions as the Wolfram Function Repository does for ordinary Wolfram Language functions. There’s a public Prompt Repository that so far has several hundred curated prompts. But it’s also possible for anyone to post their prompts in the Wolfram Cloud and make them publicly (or privately) accessible. The prompts can define personas (“talk like a [stereotypical] pirate”). They can define AI-oriented functions (“write it with emoji”). And they can define modifiers that affect the form of output (“haiku style”).

    \n

    Wolfram Prompt Repository

    \n

    In addition to calling LLMs “programmatically” within Wolfram Language, there’s the new concept (first introduced in Version 13.3) of “Chat Notebooks”. Chat Notebooks represent a new kind of user interface, that combines the graphical, computational and document features of traditional Wolfram Notebooks with the new linguistic interface capabilities brought to us by LLMs.

    \n

    The basic idea of a Chat Notebook—as introduced in Version 13.3, and now extended in Version 14.0—is that you can have “chat cells” (requested by typing ) whose content gets sent not to the Wolfram kernel, but instead to an LLM:

    \n

    Write a haiku about a crocodile on the moon

    \n

    You can use “function prompts”—say from the Wolfram Prompt Repository—directly in a Chat Notebook:

    \n

    A cat ate my lunch

    \n

    And as of Version 14.0 you can also knit Wolfram Language computations directly into your “conversation” with the LLM:

    \n

    Make a haiku from RandomWord

    \n

    (You type \\ to insert Wolfram Language, very much like the way you can use <**> to insert Wolfram Language into external evaluation cells.)

    \n

    One thing about Chat Notebooks is that—as their name suggests—they really are centered around “chatting”, and around having a sequential interaction with an LLM. In an ordinary notebook, it doesn’t matter where in the notebook each Wolfram Language evaluation is requested; all that’s relevant is the order in which the Wolfram kernel does the evaluations. But in a Chat Notebook the “LLM evaluations” are always part of a “chat” that’s explicitly laid out in the notebook.

    \n

    A key part of Chat Notebooks is the concept of a chat block: type ~ and you get a separator in the notebook that “starts a new chat”:

    \n

    My name is Stephen

    \n

    Chat Notebooks—with all their typical Wolfram Notebook editing, structuring, automation, etc. capabilities—are very powerful just as “LLM interfaces”. But there’s another dimension as well, enabled by LLMs being able to call Wolfram Language as a tool.

    \n

    At one level, Chat Notebooks provide an “on ramp” for using Wolfram Language. Wolfram|Alpha—and even more so, Wolfram|Alpha Notebook Edition—let you ask questions in natural language, then have the questions translated into Wolfram Language, and answers computed. But in Chat Notebooks you can go beyond asking specific questions. Instead, through the LLM, you can just “start chatting” about what you want to do, then have Wolfram Language code generated, and executed:

    \n

    How do you make a rosette with 5 lobes?

    \n

    The workflow is typically as follows. First, you have to conceptualize in computational terms what you want. (And, yes, that step requires computational thinking—which is a very important skill that too few people have so far learned.) Then you tell the LLM what you want, and it’ll try to write Wolfram Language code to achieve it. It’ll typically run the code for you (but you can also always do it yourself)—and you can see whether you got what you wanted. But what’s crucial is that Wolfram Language is intended to be read not only by computers but also by humans. And particularly since LLMs actually usually seem to manage to write pretty good Wolfram Language code, you can expect to read what they wrote, and see if it’s what you wanted. If it is, you can take that code, and use it as a “solid building block” for whatever larger system you might be trying to set up. Otherwise, you can either fix it yourself, or try chatting with the LLM to get it to do it.

    \n

    One of the things we see in the example above is the LLM—within the Chat Notebook—making a “tool call”, here to a Wolfram Language evaluator. In the Wolfram Language there’s now a whole mechanism for defining tools for LLMs—with each tool being represented by an LLMTool symbolic object. In Version 14.0 there’s an experimental version of the new Wolfram LLM Tool Repository with some predefined tools:

    \n

    Wolfram LLM Tool Repository

    \n

    In a default Chat Notebook, the LLM has access to some default tools, which include not only the Wolfram Language evaluator, but also things like Wolfram documentation search and Wolfram|Alpha query. And it’s common to see the LLM go back and forth trying to write “code that works”, and for example sometimes having to “resort” (much like humans do) to reading the documentation.

    \n

    Something that’s new in Version 14.0 is experimental access to multimodal LLMs that can take images as well as text as input. And when this capability is enabled, it allows the LLM to “look at pictures from the code it generated”, see if they’re what was asked for, and potentially correct itself:

    \n

    Create graphics with a randomly colored disc

    \n

    The deep integration of images into Wolfram Language—and Wolfram Notebooks—yields all sorts of possibilities for multimodal LLMs. Here we’re giving a plot as an image and asking the LLM how to reproduce it:

    \n

    Create a similar plot

    \n

    Another direction for multimodal LLMs is to take data (in the hundreds of formats accepted by Wolfram Language) and use the LLM to guide its visualization and analysis in the Wolfram Language. Here’s an example that starts from a file data.csv in the current directory on your computer:

    \n

    Look at the file data.csv

    \n

    One thing that’s very nice about using Wolfram Language directly is that everything you do (well, unless you use RandomInteger, etc.) is completely reproducible; do the same computation twice and you’ll get the same result. That’s not true with LLMs (at least right now). And so when one uses LLMs it feels like something more ephemeral and fleeting than using Wolfram Language. One has to grab any good results one gets—because one might never be able to reproduce them. Yes, it’s very helpful that one can store everything in a Chat Notebook, even if one can’t rerun it and get the same results. But the more “permanent” use of LLM results tends to be “offline”. Use an LLM “up front” to figure something out, then just use the result it gave.

    \n

    One unexpected application of LLMs for us has been in suggesting names of functions. With the LLM’s “experience” of what people talk about, it’s in a good position to suggest functions that people might find useful. And, yes, when it writes code it has a habit of hallucinating such functions. But in Version 14.0 we’ve actually added one function—DigitSum—that was suggested to us by LLMs. And in a similar vein, we can expect LLMs to be useful in making connections to external databases, functions, etc. The LLM “reads the documentation”, and tries to write Wolfram Language “glue” code—which then can be reviewed, checked, etc., and if it’s right, can be used henceforth.

    \n

    Then there’s data curation, which is a field that—through Wolfram|Alpha and many of our other efforts—we’ve become extremely expert at over the past couple of decades. How much can LLMs help with that? They certainly don’t “solve the whole problem”, but integrating them with the tools we already have has allowed us over the past year to speed up some of our data curation pipelines by factors of two or more.

    \n

    If we look at the whole stack of technology and content that’s in the modern Wolfram Language, the overwhelming majority of it isn’t helped by LLMs, and isn’t likely to be. But there are many—sometimes unexpected—corners where LLMs can dramatically improve heuristics or otherwise solve problems. And in Version 14.0 there are starting to be a wide variety of “LLM inside” functions.

    \n

    An example is TextSummarize, which is a function we’ve considered adding for many versions—but now, thanks to LLMs, can finally implement to a useful level:

    \n
    \n
    \n

    \n

    The main LLMs that we’re using right now are based on external services. But we’re building capabilities to allow us to run LLMs in local Wolfram Language installations as soon as that’s technically feasible. And one capability that’s actually part of our mainline machine learning effort is NetExternalObject—a way of representing symbolically an externally defined neural net that can be run inside Wolfram Language. NetExternalObject allows you, for example, to take any network in ONNX form and effectively treat it as a component in a Wolfram Language neural net. Here’s a network for image depth estimation—that we’re here importing from an external repository (though in this case there’s actually a similar network already in the Wolfram Neural Net Repository):

    \n
    \n
    \n

    \n

    Now we can apply this imported network to an image that’s been encoded with our built-in image encoder—then we’re taking the result and visualizing it:

    \n
    \n
    \n

    \n

    It’s often very convenient to be able to run networks locally, but it can sometimes take quite high-end hardware to do so. For example, there’s now a function in the Wolfram Function Repository that does image synthesis entirely locally—but to run it, you do need a GPU with at least 8 GB of VRAM:

    \n
    \n
    \n

    \n

    By the way, based on LLM principles (and ideas like transformers) there’ve been other related advances in machine learning that have been strengthening a whole range of Wolfram Language areas—with one example being image segmentation, where ImageSegmentationComponents now provides robust “content-sensitive” segmentation:

    \n
    \n
    \n

    \n

    Still Going Strong on Calculus

    \n

    When Mathematica 1.0 was released in 1988, it was a “wow” that, yes, now one could routinely do integrals symbolically by computer. And it wasn’t long before we got to the point—first with indefinite integrals, and later with definite integrals—where what’s now the Wolfram Language could do integrals better than any human. So did that mean we were “finished” with calculus? Well, no. First there were differential equations, and partial differential equations. And it took a decade to get symbolic ODEs to a beyond-human level. And with symbolic PDEs it took until just a few years ago. Somewhere along the way we built out discrete calculus, asymptotic expansions and integral transforms. And we also implemented lots of specific features needed for applications like statistics, probability, signal processing and control theory. But even now there are still frontiers.

    \n

    And in Version 14 there are significant advances around calculus. One category concerns the structure of answers. Yes, one can have a formula that correctly represents the solution to a differential equation. But is it in the best, simplest or most useful form? Well, in Version 14 we’ve worked hard to make sure it is—often dramatically reducing the size of expressions that get generated.

    \n

    Another advance has to do with expanding the range of “pre-packaged” calculus operations. We’ve been able to do derivatives ever since Version 1.0. But in Version 14 we’ve added implicit differentiation. And, yes, one can give a basic definition for this easily enough using ordinary differentiation and equation solving. But by adding an explicit ImplicitD we’re packaging all that up—and handling the tricky corner cases—so that it becomes routine to use implicit differentiation wherever you want:

    \n
    \n
    \n

    \n

    Another category of pre-packaged calculus operations new in Version 14 are ones for vector-based integration. These were always possible to do in a “do-it-yourself” mode. But in Version 14 they are now streamlined built-in functions—that, by the way, also cover corner cases, etc. And what made them possible is actually a development in another area: our decade-long project to add geometric computation to Wolfram Language—which gave us a natural way to describe geometric constructs such as curves and surfaces:

    \n
    \n
    \n

    \n
    \n
    \n

    \n

    Related functionality new in Version 14 is ContourIntegrate:

    \n
    \n
    \n

    \n

    Functions like ContourIntegrate just “get the answer”. But if one’s learning or exploring calculus it’s often also useful to be able to do things in a more step-by-step way. In Version 14 you can start with an inactive integral

    \n
    \n
    \n

    \n

    and explicitly do operations like changing variables:

    \n
    \n
    \n

    \n

    Sometimes actual answers get expressed in inactive form, particularly as infinite sums:

    \n
    \n
    \n

    \n

    And now in Version 14 the function TruncateSum lets you take such a sum and generate a truncated “approximation”:

    \n
    \n
    \n

    \n

    Functions like D and Integrate—as well as LineIntegrate and SurfaceIntegrate—are, in a sense, “classic calculus”, taught and used for more than three centuries. But in Version 14 we also support what we can think of as “emerging” calculus operations, like fractional differentiation:

    \n
    \n
    \n

    \n

    Core Language

    \n

    What are the primitives from which we can best build our conception of computation? That’s at some level the question I’ve been asking for more than four decades, and what’s determined the functions and structures at the core of the Wolfram Language.

    \n

    And as the years go by, and we see more and more of what’s possible, we recognize and invent new primitives that will be useful. And, yes, the world—and the ways people interact with computers—change too, opening up new possibilities and bringing new understanding of things. Oh, and this year there are LLMs which can “get the intellectual sense of the world” and suggest new functions that can fit into the framework we’ve created with the Wolfram Language. (And, by the way, there’ve also been lots of great suggestions made by the audiences of our design review livestreams.)

    \n

    One new construct added in Version 13.1—and that I personally have found very useful—is Threaded. When a function is listable—as Plus is—the top levels of lists get combined:

    \n
    \n
    \n

    \n

    But sometimes you want one list to be “threaded into” the other at the lowest level, not the highest. And now there’s a way to specify that, using Threaded:

    \n
    \n
    \n

    \n

    In a sense, Threaded is part of a new wave of symbolic constructs that have “ambient effects” on lists. One very simple example (introduced in 2015) is Nothing:

    \n
    \n
    \n

    \n

    Another, introduced in 2020, is Splice:

    \n
    \n
    \n

    \n

    An old chestnut of Wolfram Language design concerns the way infinite evaluation loops are handled. And in Version 13.2 we introduced the symbolic construct TerminatedEvaluation to provide better definition of how out-of-control evaluations have been terminated:

    \n
    \n
    \n

    \n

    In a curious connection, in the computational representation of physics in our recent Physics Project, the direct analog of nonterminating evaluations are what make possible the seemingly unending universe in which we live.

    \n

    But what is actually going on “inside an evaluation”, terminating or not? I’ve always wanted a good representation of this. And in fact back in Version 2.0 we introduced Trace for this purpose:

    \n
    \n
    \n

    \n

    But just how much detail of what the evaluator does should one show? Back in Version 2.0 we introduced the option TraceOriginal that traces every path followed by the evaluator:

    \n
    \n
    \n

    \n

    But often this is way too much. And in Version 14.0 we’ve introduced the new setting TraceOriginalAutomatic, which doesn’t include in its output evaluations that don’t do anything:

    \n
    \n
    \n

    \n

    This may seem pedantic, but when one has an expression of any substantial size, it’s a crucial piece of pruning. So, for example, here’s a graphical representation of a simple arithmetic evaluation, with TraceOriginalTrue:

    \n
    \n
    \n

    \n

    And here’s the corresponding “pruned” version, with TraceOriginalAutomatic:

    \n
    \n
    \n

    \n

    (And, yes, the structures of these graphs are closely related to things like the causal graphs we construct in our Physics Project.)

    \n

    In the effort to add computational primitives to the Wolfram Language, two new entrants in Version 14.0 are Comap and ComapApply. The function Map takes a function f and “maps it” over a list:

    \n
    \n
    \n

    \n

    Comap does the “mathematically co-” version of this, taking a list of functions and “comapping” them onto a single argument:

    \n
    \n
    \n

    \n

    Why is this useful? As an example, one might want to apply three different statistical functions to a single list. And now it’s easy to do that, using Comap:

    \n
    \n
    \n

    \n

    By the way, as with Map, there’s also an operator form for Comap:

    \n
    \n
    \n

    \n

    Comap works well when the functions it’s dealing with take just one argument. If one has functions that take multiple arguments, ComapApply is what one typically wants:

    \n
    \n
    \n

    \n

    Talking of “co-like” functions, a new function added in Version 13.2 is PositionSmallest. Min gives the smallest element in a list; PositionSmallest instead says where the smallest elements are:

    \n
    \n
    \n

    \n

    One of the important objectives in the Wolfram Language is to have as much as possible “just work”. When we released Version 1.0 strings could be assumed just to contain ordinary ASCII characters, or perhaps to have an external character encoding defined. And, yes, it could be messy not to know “within the string itself” what characters were supposed to be there. And by the time of Version 3.0 in 1996 we’d become contributors to, and early adopters of, Unicode, which provided a standard encoding for “16-bits’-worth” of characters. And for many years this served us well. But in time—and particularly with the growth of emoji—16 bits wasn’t enough to encode all the characters people wanted to use. So a few years ago we began rolling out support for 32-bit Unicode, and in Version 13.1 we integrated it into notebooks—in effect making strings something much richer than before:

    \n
    \n
    \n

    \n

    And, yes, you can use Unicode everywhere now:

    \n
    \n
    \n

    \n

    Video as a Fundamental Object

    \n

    Back when Version 1.0 was released, a megabyte was a lot of memory. But 35 years later we routinely deal with gigabytes. And one of the things that makes practical is computation with video. We first introduced Video experimentally in Version 12.1 in 2020. And over the past three years we’ve been systematically broadening and strengthening our ability to deal with video in Wolfram Language. Probably the single most important advance is that things around video now—as much as possible—“just work”, without “creaking” under the strain of handling such large amounts of data.

    \n

    We can directly capture video into notebooks, and we can robustly play video anywhere within a notebook. We’ve also added options for where to store the video so that it’s conveniently accessible to you and anyone else you want to give access to it.

    \n

    There’s lots of complexity in the encoding of video—and we now robustly and transparently support more than 500 codecs. We also do lots of convenient things automatically, like rotating portrait-mode videos—and being able to apply image processing operations like ImageCrop across whole videos. In every version, we’ve been further optimizing the speed of some video operation or another.

    \n

    But a particularly big focus has been on video generators: programmatic ways to produce videos and animations. One basic example is AnimationVideo, which produces the same kind of output as Animate, but as a Video object that can either be displayed directly in a notebook, or exported in MP4 or some other format:

    \n

    AnimationVideo

    \n

    AnimationVideo is based on computing each frame in a video by evaluating an expression. Another class of video generators take an existing visual construct, and simply “tour” it. TourVideo “tours” images, graphics and geo graphics; Tour3DVideo (new in Version 14.0) tours 3D geometry:

    \n
    \n
    \n

    \n

    A very powerful capability in Wolfram Language is being able to apply arbitrary functions to videos. One example of how this can be done is VideoFrameMap, which maps a function across frames of a video, and which was made efficient in Version 13.2:

    \n
    \n
    \n

    \n

    And although Wolfram Language isn’t intended as an interactive video editing system, we’ve made sure that it’s possible to do streamlined programmatic video editing in the language, and for example in Version 14.0 we’ve added things like transition effects in VideoJoin and timed overlays in OverlayVideo.

    \n

    So Much Got Faster, Stronger, Sleeker

    \n

    With every new version of Wolfram Language we add new capabilities to extend yet further the domain of the language. But we also put a lot of effort into something less immediately visible: making existing capabilities faster, stronger and sleeker.

    \n

    And in Version 14 two areas where we can see some examples of all these are dates and quantities. We introduced the notion of symbolic dates (DateObject, etc.) nearly a decade ago. And over the years since then we’ve built many things on this structure. And in the process of doing this it’s become clear that there are certain flows and paths that are particularly common and convenient. At the beginning what mattered most was just to make sure that the relevant functionality existed. But over time we’ve been able to see what should be streamlined and optimized, and we’ve steadily been doing that.

    \n

    In addition, as we’ve worked towards new and different applications, we’ve seen “corners” that need to be filled in. So, for example, astronomy is an area we’ve significantly developed in Version 14, and supporting astronomy has required adding several new “high-precision” time capabilities, such as the TimeSystem option, as well as new astronomy-oriented calendar systems. Another example concerns date arithmetic. What should happen if you want to add a month to January 30? Where should you land? Different kinds of business applications and contracts make different assumptions—and so we added a Method option to functions like DatePlus to handle this. Meanwhile, having realized that date arithmetic is involved in the “inner loop” of certain computations, we optimized it—achieving a more than 100x speedup in Version 14.0.

    \n

    Wolfram|Alpha has been able to deal with units ever since it was first launched in 2009—now more than 10,000 of them. And in 2012 we introduced Quantity to represent quantities with units in the Wolfram Language. And over the past decade we’ve been steadily smoothing out a whole series of complicated gotchas and issues with units. For example, what does 100°C + 20°C mean? Well, the 20°C isn’t really the same kind of thing as the 100°C. And now in Wolfram Language we have a systematic way to handle this, by distinguishing temperature and temperature difference units—so that we now write 100°C + .

    \n

    At first our priority with Quantity was to get it working as broadly as possible, and to integrate it as widely as possible into computations, visualizations, etc. across the system. But as its capabilities have expanded, so have its uses, repeatedly driving the need to optimize its operation for particular common cases. And indeed between Version 13 and Version 14 we’ve dramatically sped up many things related to Quantity, often by factors of 1000 or more.

    \n

    Talking of speedups, another example—made possible by new algorithms operating on multithreaded CPUs—concerns polynomials. We’ve worked with polynomials in Wolfram Language since Version 1, but in Version 13.2 there was a dramatic speedup of up to 1000x on operations like polynomial factoring.

    \n

    In addition, a new algorithm in Version 14.0 dramatically speeds up numerical solutions to polynomial and transcendental equations—and, together with the new MaxRoots options, allows us, for example, to pick off a few roots from a degree-one-million polynomial

    \n
    \n
    \n

    \n

    or to find roots of a transcendental equation that we could not even attempt before without pre-specifying bounds on their values:

    \n
    \n
    \n

    \n

    Another “old” piece of functionality with recent enhancement concerns mathematical functions. Ever since Version 1.0 we’ve set up mathematical functions so that they can be computed to arbitrary precision:

    \n
    \n
    \n

    \n

    But in recent versions we’ve wanted to be “more precise about precision”, and to be able to rigorously compute just what range of outputs are possible given the range of values provided as input:

    \n
    \n
    \n

    \n

    But every function for which we do this effectively requires a new theorem, and we’ve been steadily increasing the number of functions covered—now more than 130—so that this “just works” when you need to use it in a computation.

    \n

    The Tree Story Continues

    \n

    Trees are useful. We first introduced them as basic objects in the Wolfram Language only in Version 12.3. But now that they’re there, we’re discovering more and more places they can be used. And to support that, we’ve been adding more and more capabilities to them.

    \n

    One area that’s advanced significantly since Version 13 is the rendering of trees. We tightened up the general graphic design, but, more importantly, we introduced many new options for how rendering should be done.

    \n

    For example, here’s a random tree where we’ve specified that for all nodes only 3 children should be explicitly displayed: the others are elided away:

    \n
    \n
    \n

    \n

    Here we’re adding several options to define the rendering of the tree:

    \n
    \n
    \n

    \n

    By default, the branches in trees are labeled with integers, just like parts in an expression. But in Version 13.1 we added support for named branches defined by associations:

    \n
    \n
    \n

    \n

    Our original conception of trees was very centered around having elements one would explicitly address, and that could have “payloads” attached. But what became clear is that there were applications where all that mattered was the structure of the tree, not anything about its elements. So we added UnlabeledTree to create “pure trees”:

    \n
    \n
    \n

    \n

    Trees are useful because many kinds of structures are basically trees. And since Version 13 we’ve added capabilities for converting trees to and from various kinds of structures. For example, here’s a simple Dataset object:

    \n
    \n
    \n

    \n

    You can use ExpressionTree to convert this to a tree:

    \n
    \n
    \n

    \n

    And TreeExpression to convert it back:

    \n
    \n
    \n

    \n

    We’ve also added capabilities for converting to and from JSON and XML, as well as for representing file directory structures as trees:

    \n
    \n
    \n

    \n

    Finite Fields

    \n

    In Version 1.0 we had integers, rational numbers and real numbers. In Version 3.0 we added algebraic numbers (represented implicitly by Root)—and a dozen years later we added algebraic number fields and transcendental roots. For Version 14 we’ve now added another (long-awaited) “number-related” construct: finite fields.

    \n

    Here’s our symbolic representation of the field of integers modulo 7:

    \n
    \n
    \n

    \n

    And now here’s a specific element of that field

    \n
    \n
    \n

    \n

    which we can immediately compute with:

    \n
    \n
    \n

    \n

    But what’s really important about what we’ve done with finite fields is that we’ve fully integrated them into other functions in the system. So, for example, we can factor a polynomial whose coefficients are in a finite field:

    \n
    \n
    \n

    \n

    We can also do things like find solutions to equations over finite fields. So here, for example, is a point on a Fermat curve over the finite field GF(173):

    \n
    \n
    \n

    \n

    And here is a power of a matrix with elements over the same finite field:

    \n
    \n
    \n

    \n

    Going Off Planet: The Astro Story

    \n

    A major new capability added since Version 13 is astro computation. It begins with being able to compute to high precision the positions of things like planets. Even knowing what one means by “position” is complicated, though—with lots of different coordinate systems to deal with. By default AstroPosition gives the position in the sky at the current time from your Here location:

    \n
    \n
    \n

    \n

    But one can instead ask about a different coordinate system, like global galactic coordinates:

    \n
    \n
    \n

    \n

    And now here’s a plot of the distance between Saturn and Jupiter over a 50-year period:

    \n
    \n
    \n

    \n

    In direct analogy to GeoGraphics, we’ve added AstroGraphics, here showing a patch of sky around the current position of Saturn:

    \n
    \n
    \n

    \n

    And this now shows the sequence of positions for Saturn over the course of a couple of years—yes, including retrograde motion:

    \n
    \n
    \n

    \n

    There are many styling options for AstroGraphics. Here we’re adding a background of the “galactic sky”:

    \n
    \n
    \n

    \n

    And here we’re including renderings for constellations (and, yes, we had an artist draw them):

    \n
    \n
    \n

    \n

    Something specifically new in Version 14.0 has to do with extended handling of solar eclipses. We always try to deliver new functionality as fast as we can. But in this case there was a very specific deadline: the total solar eclipse visible from the US on April 8, 2024. We’ve had the ability to do global computations about solar eclipses for some time (actually since soon before the 2017 eclipse). But now we can also do detailed local computations right in the Wolfram Language.

    \n

    So, for example, here’s a somewhat detailed overall map of the April 8, 2024 eclipse:

    \n
    \n
    \n

    \n

    Now here’s a plot of the magnitude of the eclipse over a few hours, complete with a little “rampart” associated with the period of totality:

    \n
    \n
    \n

    \n

    And here’s a map of the region of totality every minute just after the moment of maximum eclipse:

    \n
    \n
    \n

    \n

    Millions of Species Become Computable

    \n

    We first introduced computable data on biological organisms back when Wolfram|Alpha was released in 2009. But in Version 14—following several years of work—we’ve dramatically broadened and deepened the computable data we have about biological organisms.

    \n

    So for example here’s how we can figure out what species have cheetahs as predators:

    \n
    \n
    \n

    \n

    And here are pictures of these:

    \n
    \n
    \n

    \n

    Here’s a map of countries where cheetahs have been seen (in the wild):

    \n
    \n
    \n

    \n

    We now have data—curated from a great many sources—on more than a million species of animals, as well as most of the plants, fungi, bacteria, viruses and archaea that have been described. And for animals, for example, we have nearly 200 properties that are extensively filled in. Some are taxonomic properties:

    \n
    \n
    \n

    \n

    Some are physical properties:

    \n
    \n
    \n

    \n
    \n
    \n

    \n

    Some are genetic properties:

    \n
    \n
    \n

    \n

    Some are ecological properties (yes, the cheetah is not the apex predator):

    \n
    \n
    \n

    \n

    It’s useful to be able to get properties of individual species, but the real power of our curated computable data shows up when one does larger-scale analyses. Like here’s a plot of the lengths of genomes for organisms with the longest ones across our collection of organisms:

    \n
    \n
    \n

    \n

    Or here’s a histogram of the genome lengths for organisms in the human gut microbiome:

    \n
    \n
    \n

    \n

    And here’s a scatterplot of the lifespans of birds against their weights:

    \n
    \n
    \n

    \n

    Following the idea that cheetahs aren’t apex predators, this is a graph of what’s “above” them in the food chain:

    \n
    \n
    \n

    \n

    Chemical Computation

    \n

    We began the process of introducing chemical computation into the Wolfram Language in Version 12.0, and by Version 13 we had good coverage of atoms, molecules, bonds and functional groups. Now in Version 14 we’ve added coverage of chemical formulas, amounts of chemicals—and chemical reactions.

    \n

    Here’s a chemical formula, that basically just gives a “count of atoms”:

    \n
    \n
    \n

    \n

    Now here are specific molecules with that formula:

    \n
    \n
    \n

    \n

    Let’s pick one of these molecules:

    \n
    \n
    \n

    \n

    Now in Version 14 we have a way to represent a certain quantity of molecules of a given type—here 1 gram of methylcyclopentane:

    \n
    \n
    \n

    \n

    ChemicalConvert can convert to a different specification of quantity, here moles:

    \n
    \n
    \n

    \n

    And here a count of molecules:

    \n
    \n
    \n

    \n

    But now the bigger story is that in Version 14 we can represent not just individual types of molecules, and quantities of molecules, but also chemical reactions. Here we give a “sloppy” unbalanced representation of a reaction, and ReactionBalance gives us the balanced version:

    \n
    \n
    \n

    \n

    And now we can extract the formulas for the reactants:

    \n
    \n
    \n

    \n

    We can also give a chemical reaction in terms of molecules:

    \n
    \n
    \n

    \n

    But with our symbolic representation of molecules and reactions, there’s now a big thing we can do: represent classes of reactions as “pattern reactions”, and work with them using the same kinds of concepts as we use in working with patterns for general expressions. So, for example, here’s a symbolic representation of the hydrohalogenation reaction:

    \n
    \n
    \n

    \n

    Now we can apply this pattern reaction to particular molecules:

    \n
    \n
    \n

    \n

    Here’s a more elaborate example, in this case entered using a SMARTS string:

    \n
    \n
    \n

    \n

    Here we’re applying the reaction just once:

    \n
    \n
    \n

    \n

    And now we’re doing it repeatedly

    \n
    \n
    \n

    \n

    in this case generating longer and longer molecules (which in this case happen to be polypeptides):

    \n
    \n
    \n

    The Knowledgebase Is Always Growing

    \n

    Every minute of every day, new data is being added to the Wolfram Knowledgebase. Much of it is coming automatically from real-time feeds. But we also have a very large-scale ongoing curation effort with humans in the loop. We’ve built sophisticated (Wolfram Language) automation for our data curation pipeline over the years—and this year we’ve been able to increase efficiency in some areas by using LLM technology. But it’s hard to do curation right, and our long-term experience is that to do so ultimately requires human experts being in the loop, which we have.

    \n

    So what’s new since Version 13.0? 291,842 new notable current and historical people; 264,467 music works; 118,538 music albums; 104,024 named stars; and so on. Sometimes the addition of an entity is driven by the new availability of reliable data; often it’s driven by the need to use that entity in some other piece of functionality (e.g. stars to render in AstroGraphics). But more than just adding entities there’s the issue of filling in values of properties of existing entities. And here again we’re always making progress, sometimes integrating newly available large-scale secondary data sources, and sometimes doing direct curation ourselves from primary sources.

    \n

    A recent example where we needed to do direct curation was in data on alcoholic beverages. We have very extensive data on hundreds of thousands of types of foods and drinks. But none of our large-scale sources included data on alcoholic beverages. So that’s an area where we need to go to primary sources (in this case typically the original producers of products) and curate everything for ourselves.

    \n

    So, for example, we can now ask for something like the distribution of flavors of different varieties of vodka (actually, personally, not being a consumer of such things, I had no idea vodka even had flavors…):

    \n
    \n
    \n

    \n

    But beyond filling out entities and properties of existing types, we’ve also steadily been adding new entity types. One recent example is geological formations, 13,706 of them:

    \n
    \n
    \n

    \n

    So now, for example, we can specify where T. rex have been found

    \n
    \n
    \n

    \n

    and we can show those regions on a map:

    \n
    \n
    \n

    \n

    Industrial-Strength Multidomain PDEs

    \n

    PDEs are hard. It’s hard to solve them. And it’s hard to even specify what exactly you want to solve. But we’ve been on a multi-decade mission to “consumerize” PDEs and make them easier to work with. Many things go into this. You need to be able to easily specify elaborate geometries. You need to be able to easily define mathematically complicated boundary conditions. You need to have a streamlined way to set up the complicated equations that come out of underlying physics. Then you have to—as automatically as possible—do the sophisticated numerical analysis to efficiently solve the equations. But that’s not all. You also often need to visualize your solution, compute other things from it, or run optimizations of parameters over it.

    \n

    It’s a deep use of what we’ve built with Wolfram Language—touching many parts of the system. And the result is something unique: a truly streamlined and integrated way to handle PDEs. One’s not dealing with some (usually very expensive) “just for PDEs” package; what we now have is a “consumerized” way to handle PDEs whenever they’re needed—for engineering, science, or whatever. And, yes, being able to connect machine learning, or image computation, or curated data, or data science, or real-time sensor feeds, or parallel computing, or, for that matter, Wolfram Notebooks, to PDEs just makes them so much more valuable.

    \n

    We’ve had “basic, raw NDSolve” since 1991. But what’s taken decades to build is all the structure around that to let one conveniently set up—and efficiently solve—real-world PDEs, and connect them into everything else. It’s taken developing a whole tower of underlying algorithmic capabilities such as our more-flexible-and-integrated-than-ever-before industrial-strength computational geometry and finite element methods. But beyond that it’s taken creating a language for specifying real-world PDEs. And here the symbolic nature of the Wolfram Language—and our whole design framework—has made possible something very unique, that has allowed us to dramatically simplify and consumerize the use of PDEs.

    \n

    It’s all about providing symbolic “construction kits” for PDEs and their boundary conditions. We started this about five years ago, progressively covering more and more application areas. In Version 14 we’ve particularly focused on solid mechanics, fluid mechanics, electromagnetics and (one-particle) quantum mechanics.

    \n

    Here’s an example from solid mechanics. First, we define the variables we’re dealing with (displacement and underlying coordinates):

    \n
    \n
    \n

    \n

    Next, we specify the parameters we want to use to describe the solid material we’re going to work with:

    \n
    \n
    \n

    \n

    Now we can actually set up our PDE—using symbolic PDE specifications like SolidMechanicsPDEComponent—here for the deformation of a solid object pulled on one side:

    \n
    \n
    \n

    \n

    And, yes, “underneath”, these simple symbolic specifications turn into a complicated “raw” PDE:

    \n
    \n
    \n

    \n

    Now we are ready to actually solve our PDE in a particular region, i.e. for an object with a particular shape:

    \n
    \n
    \n

    \n

    And now we can visualize the result, which shows how our object stretches when it’s pulled on:

    \n
    \n
    \n

    \n

    The way we’ve set things up, the material for our object is an idealization of something like rubber. But in the Wolfram Language we now have ways to specify all sorts of detailed properties of materials. So, for example, we can add reinforcement as a unit vector in a particular direction (say in practice with fibers) to our material:

    \n
    \n
    \n

    \n

    Then we can rerun what we did before

    \n
    \n
    \n

    \n
    \n
    \n

    \n

    but now we get a slightly different result:

    \n
    \n
    \n

    \n

    Another major PDE domain that’s new in Version 14.0 is fluid flow. Let’s do a 2D example. Our variables are 2D velocity and pressure:

    \n
    \n
    \n

    \n

    Now we can set up our fluid system in a particular region, with no-slip conditions on all walls except at the top where we assume fluid is flowing from left to right. The only parameter needed is the Reynolds number. And instead of just solving our PDEs for a single Reynolds number, let’s create a parametric solver that can take any specified Reynolds number:

    \n
    \n
    \n

    \n

    Now here’s the result for Reynolds number 100:

    \n
    \n
    \n

    \n

    But with the way we’ve set things up, we can as well generate a whole video as a function of Reynolds number (and, yes, the Parallelize speeds things up by generating different frames in parallel):

    \n
    \n

    \n
    \n

    \n

    Much of our work in PDEs involves catering to the complexities of real-world engineering situations. But in Version 14.0 we’re also adding features to support “pure physics”, and in particular to support quantum mechanics done with the Schrödinger equation. So here, for example, is the 2D 1-particle Schrödinger equation (with ):

    \n
    \n
    \n

    \n

    Here’s the region we’re going to be solving over—showing explicit discretization:

    \n
    \n
    \n

    \n

    Now we can solve the equation, adding in some boundary conditions:

    \n
    \n
    \n

    \n

    And now we get to visualize a Gaussian wave packet scattering around a barrier:

    \n
    \n
    \n

    \n

    Streamlining Systems Engineering Computation

    \n

    Systems engineering is a big field, but it’s one where the structure and capabilities of the Wolfram Language provide unique advantages—that over the past decade have allowed us to build out rather complete industrial-strength support for modeling, analysis and control design for a wide range of types of systems. It’s all an integrated part of the Wolfram Language, accessible through the computational and interface structure of the language. But it’s also integrated with our separate Wolfram System Modeler product, that provides a GUI-based workflow for system modeling and exploration.

    \n

    Shared with System Modeler are large collections of domain-specific modeling libraries. And, for example, since Version 13, we’ve added libraries in areas such as battery engineering, hydraulic engineering and aircraft engineering—as well as educational libraries for mechanical engineering, thermal engineering, digital electronics, and biology. (We’ve also added libraries for areas such as business and public policy simulation.)

    \n

    Domain-specific modeling libraries

    \n

    A typical workflow for systems engineering begins with the setting up of a model. The model can be built from scratch, or assembled from components in model libraries—either visually in Wolfram System Modeler, or programmatically in the Wolfram Language. For example, here’s a model of an electric motor that’s turning a load through a flexible shaft:

    \n
    \n
    \n

    \n

    Once one’s got a model, one can then simulate it. Here’s an example where we’ve set one parameter of our model (the moment of inertia of the load), and we’re computing the values of two others as a function of time:

    \n
    \n
    \n

    \n

    A new capability in Version 14.0 is being able to see the effect of uncertainty in parameters (or initial values, etc.) on the behavior of a system. So here, as an example, we’re saying the value of the parameter is not definite, but is instead distributed according to a normal distribution—then we’re seeing the distribution of output results:

    \n
    \n
    \n

    \n

    The motor with flexible shaft that we’re looking at can be thought of as a “multidomain system”, combining electrical and mechanical components. But the Wolfram Language (and Wolfram System Modeler) can also handle “mixed systems”, combining analog and digital (i.e. continuous and discrete) components. Here’s a fairly sophisticated example from the world of control systems: a helicopter model connected in a closed loop to a digital control system:

    \n

    Helicopter model

    \n

    This whole model system can be represented symbolically just by:

    \n
    \n
    \n

    \n

    And now we compute the input-output response of the model:

    \n
    \n
    \n

    \n

    Here’s specifically the output response:

    \n
    \n
    \n

    \n

    But now we can “drill in” and see specific subsystem responses, here of the zero-order hold device (labeled ZOH above)—complete with its little digital steps:

    \n
    \n
    \n

    \n

    But what if we want to design the control systems ourselves? Well, in Version 14 we can now apply all our Wolfram Language control systems design functionality to arbitrary system models. Here’s an example of a simple model, in this case in chemical engineering (a continuously stirred tank):

    \n
    \n
    \n

    \n

    Now we can take this model and design an LQG controller for it—then assemble a whole closed-loop system for it:

    \n
    \n
    \n

    \n

    Now we can simulate the closed-loop system—and see that the controller succeeds in bringing the final value to 0:

    \n
    \n
    \n

    \n

    Graphics: More Beautiful & Alive

    \n

    Graphics have always been an important part of the story of the Wolfram Language, and for more than three decades we’ve been progressively enhancing and updating their appearance and functionality—sometimes with help from advances in hardware (e.g. GPU) capabilities.

    \n

    Since Version 13 we’ve added a variety of “decorative” (or “annotative”) effects in 2D graphics. One example (useful for putting captions on things) is Haloing:

    \n
    \n
    \n

    \n

    Another example is DropShadowing:

    \n
    \n
    \n

    \n

    All of these are specified symbolically, and can be used throughout the system (e.g. in hover effects, etc). And, yes, there are many detailed parameters you can set:

    \n
    \n
    \n

    \n

    A significant new capability in Version 14.0 is convenient texture mapping. We’ve had low-level polygon-by-polygon textures for a decade and a half. But now in Version 14.0 we’ve made it straightforward to map textures onto whole surfaces. Here’s an example wrapping a texture onto a sphere:

    \n
    \n
    \n

    \n

    And here’s wrapping the same texture onto a more complicated surface:

    \n
    \n
    \n

    \n

    A significant subtlety is that there are many ways to map what amount to “texture coordinate patches” onto surfaces. The documentation illustrates new, named cases:

    \n

    Texture coordinate patches

    \n

    And now here’s what happens with stereographic projection onto a sphere:

    \n
    \n
    \n

    \n

    Here’s an example of “surface texture” for the planet Venus

    \n
    \n
    \n

    \n

    and here it’s been mapped onto a sphere, which can be rotated:

    \n
    \n
    \n

    \n

    Here’s a “flowerified” bunny:

    \n
    \n
    \n

    \n

    Things like texture mapping help make graphics visually compelling. Since Version 13 we’ve also added a variety of “live visualization” capabilities that automatically “bring visualizations to life”. For example, any plot now by default has a “coordinate mouseover”:

    \n
    \n
    \n

    \n

    As usual, there’s lots of ways to control such “highlighting” effects:

    \n
    \n
    \n

    \n
    \n
    \n

    \n

    Euclid Redux: The Advance of Synthetic Geometry

    \n

    One might say it’s been two thousand years in the making. But four years ago (Version 12) we began to introduce a computable version of Euclid-style synthetic geometry.

    \n

    The idea is to specify geometric scenes symbolically by giving a collection of (potentially implicit) constraints:

    \n
    \n
    \n

    \n

    We can then generate a random instance of geometry consistent with the constraints—and in Version 14 we’ve considerably enhanced our ability to make sure that geometry will be “typical” and non-degenerate:

    \n
    \n
    \n

    \n

    But now a new feature of Version 14 is that we can find values of geometric quantities that are determined by the constraints:

    \n
    \n
    \n

    \n

    Here’s a slightly more complicated case:

    \n
    \n
    \n

    \n

    And here we’re now solving for the areas of two triangles in the figure:

    \n
    \n
    \n

    \n

    We’ve always been able to give explicit styles for particular elements of a scene:

    \n
    \n
    \n

    \n

    Now one of the new features in Version 14 is being able to give general “geometric styling rules”, here just assigning random colors to each element:

    \n
    \n
    \n

    \n

    The Ever-Smoother User Interface

    \n

    Our goal with Wolfram Language is to make it as easy as possible to express oneself computationally. And a big part of achieving that is the coherent design of the language itself. But there’s another part as well, which is being able to actually enter Wolfram Language input one wants—say in a notebook—as easily as possible. And with every new version we make enhancements to this.

    \n

    One area that’s been in continuous development is interactive syntax highlighting. We first added syntax highlighting nearly two decades ago—and over time we’ve progressively made it more and more sophisticated, responding both as you type, and as code gets executed. Some highlighting has always had obvious meaning. But particularly highlighting that is dynamic and based on cursor position has sometimes been harder to interpret. And in Version 14—leveraging the brighter color palettes that have become the norm in recent years—we’ve tuned our dynamic highlighting so it’s easier to quickly tell “where you are” within the structure of an expression:

    \n

    Dynamic highlighting

    \n

    On the subject of “knowing what one has”, another enhancement—added in Version 13.2—is differentiated frame coloring for different kinds of visual objects in notebooks. Is that thing one has a graphic? Or an image? Or a graph? Now one can tell from the color of frame when one selects it:

    \n

    Differentiated frame coloring

    \n

    An important aspect of the Wolfram Language is that the names of built-in functions are spelled out enough that it’s easy to tell what they do. But often the names are therefore necessarily quite long, and so it’s important to be able to autocomplete them when one’s typing. In 13.3 we added the notion of “fuzzy autocompletion” that not only “completes to the end” a name one’s typing, but also can fill in intermediate letters, change capitalization, etc. Thus, for example, just typing lll brings up an autocompletion menu that begins with ListLogLogPlot:

    \n

    \n

    A major user interface update that first appeared in Version 13.1—and has been enhanced in subsequent versions—is a default toolbar for every notebook:

    \n

    Default toolbar

    \n

    The toolbar provides immediate access to evaluation controls, cell formatting and various kinds of input (like inline cells, , hyperlinks, drawing canvas, etc.)—as well as to things like Menu options cloud publishing, Menu options documentation search and Menu options “chat” (i.e. LLM) settings.

    \n

    Much of the time, it’s useful to have the toolbar displayed in any notebook you’re working with. But on the left-hand side there’s a little tiny that lets you minimize the toolbar:

    \n

    Minimize toolbar

    \n

    In 14.0 there’s a Preferences setting that makes the toolbar come up minimized in any new notebook you create—and this in effect gives you the best of both worlds: you have immediate access to the toolbar, but your notebooks don’t have anything “extra” that might distract from their content.

    \n

    Another thing that’s advanced since Version 13 is the handling of “summary” forms of output in notebooks. A basic example is what happens if you generate a very large result. By default only a summary of the result is actually displayed. But now there’s a bar at the bottom that gives various options for how to handle the actual output:

    \n
    \n
    \n

    \n

    By default, the output is only stored in your current kernel session. But by pressing the Iconize button you get an iconized form that will appear directly in your notebook (or one that can be copied anywhere) and that “has the whole output inside”. There’s also a Store full expression in notebook button, which will “invisibly” store the output expression “behind” the summary display.

    \n

    If the expression is stored in the notebook, then it’ll be persistent across kernel sessions. Otherwise, well, you won’t be able to get to it in a different kernel session; the only thing you’ll have is the summary display:

    \n

    Summary display

    \n

    It’s a similar story for large “computational objects”. Like here’s a Nearest function with a million data points:

    \n
    \n
    \n

    \n

    By default, the data is just something that exists in your current kernel session. But now there’s a menu that lets you save the data in various persistent locations:

    \n

    Save data menu

    \n

    And There’s the Cloud Too

    \n

    There are many ways to run the Wolfram Language. Even in Version 1.0 we had the notion of remote kernels: the notebook front end running on one machine (in those days essentially always a Mac, or a NeXT), and the kernel running on a different machine (in those days sometimes even connected by phone lines). But a decade ago came a major step forward: the Wolfram Cloud.

    \n

    There are really two distinct ways in which the cloud is used. The first is in delivering a notebook experience similar to our longtime desktop experience, but running purely in a browser. And the second is in delivering APIs and other programmatically accessed capabilities—notably, even at the beginning, a decade ago, through things like APIFunction.

    \n

    The Wolfram Cloud has been the target of intense development now for nearly 15 years. Alongside it have also come Wolfram Application Server and Wolfram Web Engine, which provide more streamlined support specifically for APIs (without things like user management, etc., but with things like clustering).

    \n

    All of these—but particularly the Wolfram Cloud—have become core technology capabilities for us, supporting many of our other activities. So, for example, the Wolfram Function Repository and Wolfram Paclet Repository are both based on the Wolfram Cloud (and in fact this is true of our whole resource system). And when we came to build the Wolfram plugin for ChatGPT earlier this year, using the Wolfram Cloud allowed us to have the plugin deployed within a matter of days.

    \n

    Since Version 13 there have been quite a few very different applications of the Wolfram Cloud. One is for the function ARPublish, which takes 3D geometry and puts it in the Wolfram Cloud with appropriate metadata to allow phones to get augmented-reality versions from a QR code of a cloud URL:

    \n
    \n
    \n

    \n

    Augmented reality triptych

    \n

    On the Cloud Notebook side, there’s been a steady increase in usage, notably of embedded Cloud Notebooks, which have for example become common on Wolfram Community, and are used all over the Wolfram Demonstrations Project. Our goal all along has been to make Cloud Notebooks be as easy to use as simple webpages, but to have the depth of capabilities that we’ve developed in notebooks over the past 35 years. We achieved this some years ago for fairly small notebooks, but in the past couple of years we’ve been going progressively further in handling even multi-hundred-megabyte notebooks. It’s a complicated story of caching, refreshing—and dodging the vicissitudes of web browsers. But at this point the vast majority of notebooks can be seamlessly deployed to the cloud, and will display as immediately as simple webpages.

    \n

    The Great Integration Story for External Code

    \n

    It’s been possible to call external code from Wolfram Language ever since Version 1.0. But in Version 14 there are important advances in the extent and ease with which external code can be integrated. The overall goal is to be able to use all the power and coherence of the Wolfram Language even when some part of a computation is done in external code. And in Version 14 we’ve done a lot to streamline and automate the process by which external code can be integrated into the language.

    \n

    Once something is integrated into the Wolfram Language it just becomes, for example, a function that can be used just like any other Wolfram Language function. But what’s underneath is necessarily quite different for different kinds of external code. There’s one setup for interpreted languages like Python. There’s another for C-like compiled languages and dynamic libraries. (And then there are others for external processes, APIs, and what amount to “importable code specifications”, say for neural networks.)

    \n

    Let’s start with Python. We’ve had ExternalEvaluate for evaluating Python code since 2018. But when you actually come to use Python there are all these dependencies and libraries to deal with. And, yes, that’s one of the places where the incredible advantages of the Wolfram Language and its coherent design are painfully evident. But in Version 14.0 we now have a way to encapsulate all that Python complexity, so that we can deliver Python functionality within Wolfram Language, hiding all the messiness of Python dependencies, and even the versioning of Python itself.

    \n

    As an example, let’s say we want to make a Wolfram Language function Emojize that uses the Python function emojize within the emoji Python library. Here’s how we can do that:

    \n
    \n
    \n

    \n

    And now you can just call Emojize in the Wolfram Language and—under the hood—it’ll run Python code:

    \n
    \n
    \n

    \n

    The way this works is that the first time you call Emojize, a Python environment with all the right features is created, then is cached for subsequent uses. And what’s important is that the Wolfram Language specification of Emojize is completely system independent (or as system independent as it can be, given vicissitudes of Python implementations). So that means that you can, for example, deploy Emojize in the Wolfram Function Repository just like you would deploy something written purely in Wolfram Language.

    \n

    There’s very different engineering involved in calling C-compatible functions in dynamic libraries. But in Version 13.3 we also made this very streamlined using the function ForeignFunctionLoad. There’s all sorts of complexity associated with converting to and from native C data types, managing memory for data structures, etc. But we’ve now got very clean ways to do this in Wolfram Language.

    \n

    As an example, here’s how one sets up a “foreign function” call to a function RAND_bytes in the OpenSSL library:

    \n
    \n
    \n

    \n

    Inside this, we’re using Wolfram Language compiler technology to specify the native C types that will be used in the foreign function. But now we can package this all up into a Wolfram Language function:

    \n
    \n
    \n

    \n

    And we can call this function just like any other Wolfram Language function:

    \n
    \n
    \n

    \n

    Internally, all sorts of complicated things are going on. For example, we’re allocating a raw memory buffer that’s then getting fed to our C function. But when we do that memory allocation we’re creating a symbolic structure that defines it as a “managed object”:

    \n
    \n
    \n

    \n

    And now when this object is no longer being used, the memory associated with it will be automatically freed.

    \n

    And, yes, with both Python and C there’s quite a bit of complexity underneath. But the good news is that in Version 14 we’ve basically been able to automate handling it. And the result is that what gets exposed is pure, simple Wolfram Language.

    \n

    But there’s another big piece to this. Within particular Python or C libraries there are often elaborate definitions of data structures that are specific to that library. And so to use these libraries one has to dive into all the—potentially idiosyncratic—complexities of those definitions. But in the Wolfram Language we have consistent symbolic representations for things, whether they’re images, or dates or types of chemicals. When you first hook up an external library you have to map its data structures to these. But once that’s done, anyone can use what’s been built, and seamlessly integrate with other things they’re doing, perhaps even calling other external code. In effect what’s happening is that one’s leveraging the whole design framework of the Wolfram Language, and applying that even when one’s using underlying implementations that aren’t based on the Wolfram Language.

    \n

    For Serious Developers

    \n

    A single line (or less) of Wolfram Language code can do a lot. But one of the remarkable things about the language is that it’s fundamentally scalable: good both for very short programs and very long programs. And since Version 13 there’ve been several advances in handling very long programs. One of them concerns “code editing”.

    \n

    Standard Wolfram Notebooks work very well for exploratory, expository and many other forms of work. And it’s certainly possible to write large amounts of code in standard notebooks (and, for example, I personally do it). But when one’s doing “software-engineering-style work” it’s both more convenient and more familiar to use what amounts to a pure code editor, largely separate from code execution and exposition. And this is why we have the “package editor”, accessible from File > New > Package/Script. You’re still operating in the notebook environment, with all its sophisticated capabilities. But things have been “skinned” to provide a much more textual “code experience”—both in terms of editing, and in terms of what actually gets saved in .wl files.

    \n

    Here’s typical example of the package editor in action (in this case applied to our GitLink package):

    \n

    Package editor

    \n

    Several things are immediately evident. First, it’s very line oriented. Lines (of code) are numbered, and don’t break except at explicit newlines. There are headings just like in ordinary notebooks, but when the file is saved, they’re stored as comments with a certain stylized structure:

    \n

    Lines of code

    \n

    It’s still perfectly possible to run code in the package editor, but the output won’t get saved in the .wl file:

    \n

    Unsaved output

    \n

    One thing that’s changed since Version 13 is that the toolbar is much enhanced. And for example there’s now “smart search” that is aware of code structure:

    \n

    Smart search

    \n

    You can also ask to go to a line number—and you’ll immediately see whatever lines of code are nearby:

    \n

    Nearby lines of code

    \n

    In addition to code editing, another set of features new since Version 13 of importance to serious developers concern automated testing. The main advance is the introduction of a fully symbolic testing framework, in which individual tests are represented as symbolic objects

    \n
    \n
    \n

    \n

    and can be manipulated in symbolic form, then run using functions like TestEvaluate and TestReport:

    \n
    \n
    \n

    \n

    In Version 14.0 there’s another new testing function—IntermediateTest—that lets you insert what amount to checkpoints inside larger tests:

    \n
    \n
    \n

    \n

    Evaluating this test, we see that the intermediate tests were also run:

    \n
    \n
    \n

    \n

    Wolfram Function Repository: 2900 Functions & Counting

    \n

    The Wolfram Function Repository has been a big success. We introduced it in 2019 as a way to make specific, individual contributed functions available in the Wolfram Language. And now there are more than 2900 such functions in the Repository.

    \n

    The nearly 7000 functions that constitute the Wolfram Language as it is today have been painstakingly developed over the past three and a half decades, always mindful of creating a coherent whole with consistent design principles. And now in a sense the success of the Function Repository is one of the dividends of all that effort. Because it’s the coherence and consistency of the underlying language and its design principles that make it feasible to just add one function at a time, and have it really work. You want to add a function to do some very specific operation that combines images and graphs. Well, there’s a consistent representation of both images and graphs in the Wolfram Language, which you can leverage. And by following the principles of the Wolfram Language—like for the naming of functions—you can create a function that’ll be easy for Wolfram Language users to understand and use.

    \n

    Using the Wolfram Function Repository is a remarkably seamless process. If you know the function’s name, you can just call it using ResourceFunction; the function will be loaded if it’s needed, and then it’ll just run:

    \n
    \n
    \n

    \n

    If there’s an update available for the function, it’ll give you a message, but run the old version anyway. The message has a button that lets you load in the update; then you can rerun your input and use the new version. (If you’re writing code where you want to “burn in” a particular version of a function, you can just use the ResourceVersion option of ResourceFunction.)

    \n

    If you want your code to look more elegant, just evaluate the ResourceFunction object

    \n
    \n
    \n

    \n

    and use the formatted version:

    \n
    \n
    \n

    \n

    And, by the way, pressing the + then gives you more information about the function:

    \n

    Function information

    \n

    An important feature of functions in the Function Repository is that they all have documentation pages—that are organized pretty much like the pages for built-in functions:

    \n

    SolarEclipseIcon function page

    \n

    But how does one create a Function Repository entry? Just go to File > New > Repository Item > Function Repository Item and you’ll get a Definition Notebook:

    \n

    Definition notebook

    \n

    We’ve optimized this to be as easy to fill in as possible, minimizing boilerplate and automatically checking for correctness and consistency whenever possible. And the result is that it’s perfectly realistic to create a simple Function Repository item in under an hour—with the main time spent being in the writing of good expository examples.

    \n

    When you press Submit to Repository your function gets sent to the Wolfram Function Repository review team, whose mandate is to ensure that functions in the repository do what they say they do, work in a way that is consistent with general Wolfram Language design principles, have good names, and are adequately documented. Except for very specialized functions, the goal is to finish reviews within a week (and sometimes considerably sooner)—and to publish functions as soon as they are ready.

    \n

    There’s a digest of new (and updated) functions in the Function Repository that gets sent out every Friday—and makes for interesting reading (you can subscribe here):

    \n

    Wolfram Function Repository email

    \n

    The Wolfram Function Repository is a curated public resource that can be accessed from any Wolfram Language system (and, by the way, the source code for every function is available—just press the Source Notebook button). But there’s another important use case for the infrastructure of the Function Repository: privately deployed “resource functions”.

    \n

    It all works through the Wolfram Cloud. You use the exact same Definition Notebook, but now instead of submitting to the public Wolfram Function Repository, you just deploy your function to the Wolfram Cloud. You can make it private so that only you, or some specific group, can access it. Or you can make it public, so anyone who knows its URL can immediately access and use it in their Wolfram Language system.

    \n

    This turns out to be a tremendously useful mechanism, both for group projects, and for creating published material. In a sense it’s a very lightweight but robust way to distribute code—packaged into functions that can immediately be used. (By the way, to find the functions you’ve published from your Wolfram Cloud account, just go to the DeployedResources folder in the cloud file browser.)

    \n

    (For organizations that want to manage their own function repository, it’s worth mentioning that the whole Wolfram Function Repository mechanism—including the infrastructure for doing reviews, etc.—is also available in a private form through the Wolfram Enterprise Private Cloud.)

    \n

    So what’s in the public Wolfram Function Repository? There are a lot of “specialty functions” intended for specific “niche” purposes—but very useful if they’re what you want:

    \n
    \n
    \n

    \n
    \n
    \n

    \n
    \n
    \n

    \n
    \n
    \n

    \n
    \n
    \n

    \n
    \n
    \n

    \n

    There are functions that add various kinds of visualizations:

    \n
    \n
    \n

    \n
    \n
    \n

    \n
    \n
    \n

    \n
    \n
    \n

    \n
    \n
    \n

    \n
    \n
    \n

    \n
    \n
    \n

    \n

    Some functions set up user interfaces:

    \n
    \n
    \n

    \n

    Some functions link to external services:

    \n
    \n
    \n

    \n
    \n
    \n

    \n
    \n
    \n

    \n
    \n
    \n

    \n

    Some functions provide simple utilities:

    \n
    \n
    \n

    \n
    \n
    \n

    \n
    \n
    \n

    \n
    \n
    \n

    \n

    There are also functions that are being explored for potential inclusion in the core system:

    \n
    \n
    \n

    \n
    \n
    \n

    \n
    \n
    \n

    \n

    There are also lots of “leading-edge” functions, added as part of research or exploratory development. And for example in pieces I write (including this one), I make a point of having all pictures and other output be backed by “click-to-copy” code that reproduces them—and this code quite often contains functions either from the public Wolfram Function Repository or from (publicly accessible) private deployments.

    \n

    The Paclet Repository Arrives

    \n

    Paclets are a technology we’ve used for more than a decade and a half to distribute updated functionality to Wolfram Language systems in the field. In Version 13 we began the process of providing tools for anyone to create paclets. And since Version 13 we’ve introduced the Wolfram Language Paclet Repository as a centralized repository for paclets:

    \n

    Wolfram Paclet Repository

    \n

    What is a paclet? It’s a collection of Wolfram Language functionality—including function definitions, documentation, external libraries, stylesheets, palettes and more—that can be distributed as a unit, and immediately deployed in any Wolfram Language system.

    \n

    The Paclet Repository is a centralized place where anyone can publish paclets for public distribution. So how does this relate to the Wolfram Function Repository? They are interestingly complementary—with different optimization and different setups. The Function Repository is more lightweight, the Paclet Repository more flexible. The Function Repository is for making available individual new functions, that independently fit into the whole existing structure of the Wolfram Language. The Paclet Repository is for making available larger-scale pieces of functionality, that can define a whole framework and environment of their own.

    \n

    The Function Repository is also fully curated, with every function being reviewed by our team before it is posted. The Paclet Repository is an immediate-deployment system, without pre-publication review. In the Function Repository every function is specified just by its name—and our review team is responsible for ensuring that names are well chosen and have no conflicts. In the Paclet Repository, every contributor gets their own namespace, and all their functions and other material live inside that namespace. So, for example, I contributed the function RandomHypergraph to the Function Repository, which can be accessed just as ResourceFunction[\"RandomHypergraph\"]. But if I had put this function in a paclet in the Paclet Repository, it would have to be accessed as something like PacletSymbol[\"StephenWolfram/Hypergraphs\", \"RandomHypergraph\"].

    \n

    PacletSymbol, by the way, is a convenient way of “deep accessing” individual functions inside a paclet. PacletSymbol temporarily installs (and loads) a paclet so that you can access a particular symbol in it. But more often one wants to permanently install a paclet (using PacletInstall), then explicitly load its contents (using Needs) whenever one wants to have its symbols available. (All the various ancillary elements, like documentation, stylesheets, etc. in a paclet get set up when it is installed.)

    \n

    What does a paclet look like in the Paclet Repository? Every paclet has a home page that typically includes an overall summary, a guide to the functions in the paclet, and some overall examples of the paclet:

    \n

    ProteinVisualization page

    \n

    Individual functions typically have their own documentation pages:

    \n

    AmidePlanePlot page

    \n

    Just like in the main Wolfram Language documentation, there can be a whole hierarchy of guide pages, and there can be things like tutorials.

    \n

    Notice that in examples in paclet documentation, one often sees constructs like . These represent symbols in the paclet, presented in forms like PacletSymbol[\"WolframChemistry/ProteinVisualization\", \"AmidePlanePlot\"] that allow these symbols to be accessed in a “standalone” way. If you directly evaluate such a form, by the way, it’ll force (temporary) installation of the paclet, then return the actual, raw symbol that appears in the paclet:

    \n
    \n
    \n

    \n

    So how does one create a paclet suitable for submission to the Paclet Repository? You can do it purely programmatically, or you can start from File > New > Repository Item > Paclet Repository Item, which launches what amounts to a whole paclet creation IDE. The first step is to specify where you want to assemble your paclet. You give some basic information

    \n

    Submit paclet information

    \n

    then a Paclet Resource Definition Notebook is created, from which you can give function definitions, set up documentation pages, specify what you want your paclet’s home page to be like, etc.:

    \n

    Paclet Resource Definition Notebook

    \n

    There are lots of sophisticated tools that let you create full-featured paclets with the same kind of breadth and depth of capabilities that you find in the Wolfram Language itself. For example, Documentation Tools lets you construct full-featured documentation pages (function pages, guide pages, tutorials, …):

    \n

    Documentation Tools

    \n

    Once you’ve assembled a paclet, you can check it, build it, deploy it privately—or submit it to the Paclet Repository. And once you submit it, it will automatically get set up on the Paclet Repository servers, and within just a few minutes the pages you’ve created describing your paclet will show up on the Paclet Repository website.

    \n

    So what’s in the Paclet Repository so far? There’s a lot of good and very serious stuff, contributed both by teams at our company and by members of the broader Wolfram Language community. In fact, many of the 134 paclets now in the Paclet Repository have enough in them that there’s a whole piece like this that one could write about them.

    \n

    One category of things you’ll find in the Paclet Repository are snapshots of our ongoing internal development projects—many of which will eventually become built-in parts of the Wolfram Language. A good example of this is our LLM and Chat Notebook functionality, whose rapid development and deployment over the past year was made possible by the use of the Paclet Repository. Another example, representing ongoing work from our chemistry team (AKA WolframChemistry in the Paclet Repository) is the ChemistryFunctions paclet, which contains functions like:

    \n
    \n
    \n

    \n

    And, yes, this is interactive:

    \n
    \n
    \n

    \n

    Or, also from WolframChemistry:

    \n
    \n
    \n

    \n

    Another “development snapshot” is DiffTools—a paclet for making and viewing diffs between strings, cells, notebooks, etc.:

    \n
    \n
    \n

    \n

    A major paclet is QuantumFramework—which provides the functionality for our Wolfram Quantum Framework

    \n

    Wolfram Quantum Framework

    \n

    and delivers broad support for quantum computing (with at least a few connections to multiway systems and our Physics Project):

    \n
    \n
    \n

    \n
    \n
    \n

    \n

    Talking of our Physics Project, there are over 200 functions supporting it that are in the Wolfram Function Repository. But there are also paclets, like WolframInstitute/Hypergraph:

    \n
    \n
    \n

    \n

    An example of an externally contributed package is Automata—with more than 250 functions for doing computations related to finite automata:

    \n
    \n
    \n

    \n
    \n
    \n

    \n

    Another contributed paclet is FunctionalParsers, which goes from a symbolic parser specification to an actual parser, here being used in a reverse mode to generate random “sentences”:

    \n
    \n
    \n

    \n

    Phi4Tools is a more specialized paclet, for working with Feynman diagrams in field theory:

    \n
    \n
    \n

    \n
    \n
    \n

    \n
    \n
    \n

    \n

    And, as another example, here’s MaXrd, for crystallography and x-ray scattering:

    \n
    \n
    \n

    \n
    \n
    \n

    \n

    As just one more example, there’s the Organizer paclet—a utility paclet for making and manipulating organizer notebooks. But unlike the other paclets we’ve seen here, it doesn’t expose any Wolfram Language functions; instead, when you install it, it puts a palette in your Palettes list:

    \n
    \n
    \n

    \n

    Organizer

    \n

    Coming Attractions

    \n

    As of today, Version 14 is finished, and out in the world. So what’s next? We have lots of projects underway—some already with years of development behind them. Some extend and strengthen what’s already in the Wolfram Language; some take it in new directions.

    \n

    One major focus is broadening and streamlining the deployment of the language: unifying the way it’s delivered and installed on computers, packaging it so it can be efficiently integrated into other standalone applications, etc.

    \n

    Another major focus is expanding the handling of very large amounts of data by the Wolfram Language—and seamlessly integrating out-of-core and lazy processing.

    \n

    Then of course there’s algorithmic development. Some is “classical”, directly building on the towers of functionality we’ve developed over the decades. Some is more “AI based”. We’ve been creating heuristic algorithms and meta-algorithms ever since Version 1.0—increasingly using methods from machine learning. How far will neural net methods go? We don’t know yet. We’re routinely using them in things like algorithm selection. But to what extent can they help in the heart of algorithms?

    \n

    I’m reminded of something we did back in 1987 in developing Version 1.0. There was a long tradition in numerical analysis of painstakingly deriving series approximations for particular cases of mathematical functions. But we wanted to be able to compute hundreds of different functions to arbitrary precision for any complex values of their arguments. So how did we do it? We generalized from series to rational approximations—and then, in a very “machine-learning-esque” way—we spent months of CPU time systematically optimizing these approximations. Well, we’ve been trying to do the same kind of thing again—though now over more ambitious domains—and now using not rational functions but large neural nets as our basis.

    \n

    We’ve also been exploring using neural nets to “control” precise algorithms, in effect making heuristic choices which either guide or can be validated by the precise algorithms. So far, none of what we’ve produced has outperformed our existing methods, but it seems plausible that fairly soon it will.

    \n

    We’re doing a lot with various aspects of metaprogramming. There’s the project of
    \ngetting LLMs to help in the construction of Wolfram Language code—and in giving comments on it, and in analyzing what went wrong if the code didn’t do what one expected. Then there’s code annotation—where LLMs may help in doing things like predicting the most likely type for something. And there’s code compilation. We’ve been working for many years on a full-scale compiler for the Wolfram Language, and in every version what we have becomes progressively more capable. We’ve been doing some level of automatic compilation in particular cases (particularly ones involving numerical computation) for more than 30 years. And eventually full-scale automatic compilation will be possible for everything. But as of now some of the biggest payoffs from our compiler technology have been for our internal development, where we can now get optimal down-to-the-metal performance simply by compiled (albeit carefully written) Wolfram Language code.

    \n

    One of the big lessons of the surprising success of LLMs is that there’s potentially more structure in meaningful human language than we thought. I’ve long been interested in creating what I’ve called a “symbolic discourse language” that gives a computational representation of everyday discourse. The LLMs haven’t explicitly done that. But they encourage the idea that it should be possible, and they also provide practical help in doing it. And whether the goal is to be able to represent narrative text, or contracts, or textual specifications, it’s a matter of extending the computational language we’ve built to encompass more kinds of concepts and structures.

    \n

    There are typically several kinds of drivers for our continued development efforts. Sometimes it’s a question of continuing to build a tower of capabilities in some known direction (like, for example, solving PDEs). Sometimes the tower we’ve built suddenly lets us see new possibilities. Sometimes when we actually use what we’ve built we realize there’s an obvious way to polish or extend it—or to “double down” on something that we can now see is valuable. And then there are cases where things happening in the technology world suddenly open up new possibilities—like LLMs have recently done, and perhaps XR will eventually do. And finally there are cases where new science-related insights suggest new directions.

    \n

    I had assumed that our Physics Project would at best have practical applications only centuries hence. But in fact it’s become clear that the correspondence it’s defined between physics and computation gives us quite immediate new ways to think about aspects of practical computation. And indeed we’re now actively exploring how to use this to define a new level of parallel and distributed computation in the Wolfram Language, as well as to represent symbolically not only the results of computations but also the ongoing process of computation.

    \n

    One might think that after nearly four decades of intense development there wouldn’t be anything left to do in developing the Wolfram Language. But in fact at every level we reach, there’s ever more that becomes possible, and ever more that can we see might be possible. And indeed this moment is a particularly fertile one, with an unprecedentedly broad waterfront of possibilities. Version 14 is an important and satisfying waypoint. But there are wonderful things ahead—as we continue our long-term mission to make the computational paradigm achieve its potential, and to build our computational language to help that happen.

    \n

    \n

    \n\n

    \n", + "content": "\"\"

    Version 14.0 of Wolfram Language and Mathematica is available immediately both on the desktop and in the cloud. See also more detailed information on Version 13.1, Version 13.2 and Version 13.3.

    \n

    Building Something Greater and Greater… for 35 Years and Counting

    \n

    Today we celebrate a new waypoint on our journey of nearly four decades with the release of Version 14.0 of Wolfram Language and Mathematica. Over the two years since we released Version 13.0 we’ve been steadily delivering the fruits of our research and development in .1 releases every six months. Today we’re aggregating these—and more—into Version 14.0.

    \n

    It’s been more than 35 years now since we released Version 1.0. And all those years we’ve been continuing to build a taller and taller tower of capabilities, progressively expanding the scope of our vision and the breadth of our computational coverage of the world:

    \n

    Number of built-in fuctions

    \n

    Version 1.0 had 554 built-in functions; in Version 14.0 there are 6602. And behind each of those functions is a story. Sometimes it’s a story of creating a superalgorithm that encapsulates decades of algorithmic development. Sometimes it’s a story of painstakingly curating data that’s never been assembled before. Sometimes it’s a story of drilling down to the essence of something to invent new approaches and new functions that can capture it.

    \n

    And from all these pieces we’ve been steadily building the coherent whole that is today’s Wolfram Language. In the arc of intellectual history it defines a broad, new, computational paradigm for formalizing the world. And at a practical level it provides a superpower for implementing computational thinking—and enabling “computational X” for all fields X.

    \n

    To us it’s profoundly satisfying to see what has been done over the past three decades with everything we’ve built so far. So many discoveries, so many inventions, so much achieved, so much learned. And seeing this helps drive forward our efforts to tackle still more, and to continue to push every boundary we can with our R&D, and to deliver the results in new versions of our system.

    \n

    Our R&D portfolio is broad. From projects that get completed within months of their conception, to projects that rely on years (and sometimes even decades) of systematic development. And key to everything we do is leveraging what we have already done—often taking what in earlier years was a pinnacle of technical achievement, and now using it as a routine building block to reach a level that could barely even be imagined before. And beyond practical technology, we’re also continually going further and further in leveraging what’s now the vast conceptual framework that we’ve been building all these years—and progressively encapsulating it in the design of the Wolfram Language.

    \n

    We’ve worked hard all these years not only to create ideas and technology, but also to craft a practical and sustainable ecosystem in which we can systematically do this now and into the long-term future. And we continue to innovate in these areas, broadening the delivery of what we’ve built in new and different ways, and through new and different channels. And in the past five years we’ve also been able to open up our core design process to the world—regularly livestreaming what we’re doing in a uniquely open way.

    \n

    And indeed over the past several years the seeds of essentially everything we’re delivering today in Version 14.0 has been openly shared with the world, and represents an achievement not only for our internal teams but also for the many people who have participated in and commented on our livestreams.

    \n

    Part of what Version 14.0 is about is continuing to expand the domain of our computational language, and our computational formalization of the world. But Version 14.0 is also about streamlining and polishing the functionality we’ve already defined. Throughout the system there are things we’ve made more efficient, more robust and more convenient. And, yes, in complex software, bugs of many kinds are a theoretical and practical inevitability. And in Version 14.0 we’ve fixed nearly 10,000 bugs, the majority found by our increasingly sophisticated internal software testing methods.

    \n

    Now We Need to Tell the World

    \n

    Even after all the work we’ve put into the Wolfram Language over the past several decades, there’s still yet another challenge: how to let people know just what the Wolfram Language can do. Back when we released Version 1.0 I was able to write a book of manageable size that could pretty much explain the whole system. But for Version 14.0—with all the functionality it contains—one would need a book with perhaps 200,000 pages.

    \n

    And at this point nobody (even me!) immediately knows everything the Wolfram Language does. Of course one of our great achievements has been to maintain across all that functionality a tightly coherent and consistent design that results in there ultimately being only a small set of fundamental principles to learn. But at the vast scale of the Wolfram Language as it exists today, knowing what’s possible—and what can now be formulated in computational terms—is inevitably very challenging. And all too often when I show people what’s possible, I’ll get the response “I had no idea the Wolfram Language could do that!”

    \n

    So in the past few years we’ve put increasing emphasis into building large-scale mechanisms to explain the Wolfram Language to people. It begins at a very fine-grained level, with “just-in-time information” provided, for example, through suggestions made when you type. Then for each function (or other construct in the language) there are pages that explain the function, with extensive examples. And now, increasingly, we’re adding “just-in-time learning material” that leverages the concreteness of the functions to provide self-contained explanations of the broader context of what they do.

    \n

    By the way, in modern times we need to explain the Wolfram Language not just to humans, but also to AIs—and our very extensive documentation and examples have proved extremely valuable in training LLMs to use the Wolfram Language. And for AIs we’re providing a variety of tools—like immediate computable access to documentation, and computable error handling. And with our Chat Notebook technology there’s also a new “on ramp” for creating Wolfram Language code from linguistic (or visual, etc.) input.

    \n

    But what about the bigger picture of the Wolfram Language? For both people and AIs it’s important to be able to explain things at a higher level, and we’ve been doing more and more in this direction. For more than 30 years we’ve had “guide pages” that summarize specific functionality in particular areas. Now we’re adding “core area pages” that give a broader picture of large areas of functionality—each one in effect covering what might otherwise be a whole product on its own, if it wasn’t just an integrated part of the Wolfram Language:

    \n

    Core area pages

    \n

    But we’re going even much further, building whole courses and books that provide modern hands-on Wolfram-Language-enabled introductions to a broad range of areas. We’ve now covered the material of many standard college courses (and quite a lot besides), in a new and very effective “computational” way, that allows immediate, practical engagement with concepts:

    \n

    Wolfram U courses

    \n

    All these courses involve not only lectures and notebooks but also auto-graded exercises, as well as official certifications. And we have a regular calendar of everyone-gets-together-at-the-same-time instructor-led peer Study Groups about these courses. And, yes, our Wolfram U operation is now emerging as a significant educational entity, with many thousands of students at any given time.

    \n

    In addition to whole courses, we have “miniseries” of lectures about specific topics:

    \n

    Miniseries video lectures

    \n

    And we also have courses—and books—about the Wolfram Language itself, like my Elementary Introduction to the Wolfram Language, which came out in a third edition this year (and has an associated course, online version, etc.):

    \n

    Elementary Introduction to the Wolfram Language

    \n

    In a somewhat different direction, we’ve expanded our Wolfram Summer School to add a Wolfram Winter School, and we’ve greatly expanded our Wolfram High School Summer Research Program, adding year-round programs, middle-school programs, etc.—including the new “Computational Adventures” weekly activity program.

    \n

    And then there’s livestreaming. We’ve been doing weekly “R&D livestreams” with our development team (and sometimes also external guests). And I myself have also been doing a lot of livestreaming (232 hours of it in 2023 alone)—some of it design reviews of Wolfram Language functionality, and some of it answering questions, technical and other.

    \n

    The list of ways we’re getting the word out about the Wolfram Language goes on. There’s Wolfram Community, that’s full of interesting contributions, and has ever-increasing readership. There are sites like Wolfram Challenges. There are our Wolfram Technology Conferences. And lots more.

    \n

    We’ve put immense effort into building the whole Wolfram technology stack over the past four decades. And even as we continue to aggressively build it, we’re putting more and more effort into telling the world about just what’s in it, and helping people (and AIs) to make the most effective use of it. But in a sense, everything we’re doing is just a seed for what the wider community of Wolfram Language users are doing, and can do. Spreading the power of the Wolfram Language to more and more people and areas.

    \n

    The LLMs Have Landed

    \n

    The machine learning superfunctions Classify and Predict first appeared in Wolfram Language in 2014 (Version 10). By the next year there were starting to be functions like ImageIdentify and LanguageIdentify, and within a couple of years we’d introduced our whole neural net framework and Neural Net Repository. Included in that were a variety of neural nets for language modeling, that allowed us to build out functions like SpeechRecognize and an experimental version of FindTextualAnswer. But—like everyone else—we were taken by surprise at the end of 2022 by ChatGPT and its remarkable capabilities.

    \n

    Very quickly we realized that a major new use case—and market—had arrived for Wolfram|Alpha and Wolfram Language. For now it was not only humans who’d need the tools we’d built; it was also AIs. By March 2023 we’d worked with OpenAI to use our Wolfram Cloud technology to deliver a plugin to ChatGPT that allows it to call Wolfram|Alpha and Wolfram Language. LLMs like ChatGPT provide remarkable new capabilities in reproducing human language, basic human thinking and general commonsense knowledge. But—like unaided humans—they’re not set up to deal with detailed computation or precise knowledge. For that, like humans, they have to use formalism and tools. And the remarkable thing is that the formalism and tools we’ve built in Wolfram Language (and Wolfram|Alpha) are basically a broad, perfect fit for what they need.

    \n

    We created the Wolfram Language to provide a bridge from what humans think about to what computation can express and implement. And now that’s what the AIs can use as well. The Wolfram Language provides a medium not only for humans to “think computationally” but also for AIs to do so. And we’ve been steadily doing the engineering to let AIs call on Wolfram Language as easily as possible.

    \n

    But in addition to LLMs using Wolfram Language, there’s also now the possibility of Wolfram Language using LLMs. And already in June 2023 (Version 13.3) we released a major collection of LLM-based capabilities in Wolfram Language. One category is LLM functions, that effectively use LLMs as “internal algorithms” for operations in Wolfram Language:

    \n
    \n
    \n

    \n

    In typical Wolfram Language fashion, we have a symbolic representation for LLMs: LLMConfiguration[] represents an LLM with its various parameters, promptings, etc. And in the past few months we’ve been steadily adding connections to the full range of popular LLMs, making Wolfram Language a unique hub not only for LLM usage, but also for studying the performance—and science—of LLMs.

    \n

    You can define your own LLM functions in Wolfram Language. But there’s also the Wolfram Prompt Repository that plays a similar role for LLM functions as the Wolfram Function Repository does for ordinary Wolfram Language functions. There’s a public Prompt Repository that so far has several hundred curated prompts. But it’s also possible for anyone to post their prompts in the Wolfram Cloud and make them publicly (or privately) accessible. The prompts can define personas (“talk like a [stereotypical] pirate”). They can define AI-oriented functions (“write it with emoji”). And they can define modifiers that affect the form of output (“haiku style”).

    \n

    Wolfram Prompt Repository

    \n

    In addition to calling LLMs “programmatically” within Wolfram Language, there’s the new concept (first introduced in Version 13.3) of “Chat Notebooks”. Chat Notebooks represent a new kind of user interface, that combines the graphical, computational and document features of traditional Wolfram Notebooks with the new linguistic interface capabilities brought to us by LLMs.

    \n

    The basic idea of a Chat Notebook—as introduced in Version 13.3, and now extended in Version 14.0—is that you can have “chat cells” (requested by typing ) whose content gets sent not to the Wolfram kernel, but instead to an LLM:

    \n

    Write a haiku about a crocodile on the moon

    \n

    You can use “function prompts”—say from the Wolfram Prompt Repository—directly in a Chat Notebook:

    \n

    A cat ate my lunch

    \n

    And as of Version 14.0 you can also knit Wolfram Language computations directly into your “conversation” with the LLM:

    \n

    Make a haiku from RandomWord

    \n

    (You type \\ to insert Wolfram Language, very much like the way you can use <**> to insert Wolfram Language into external evaluation cells.)

    \n

    One thing about Chat Notebooks is that—as their name suggests—they really are centered around “chatting”, and around having a sequential interaction with an LLM. In an ordinary notebook, it doesn’t matter where in the notebook each Wolfram Language evaluation is requested; all that’s relevant is the order in which the Wolfram kernel does the evaluations. But in a Chat Notebook the “LLM evaluations” are always part of a “chat” that’s explicitly laid out in the notebook.

    \n

    A key part of Chat Notebooks is the concept of a chat block: type ~ and you get a separator in the notebook that “starts a new chat”:

    \n

    My name is Stephen

    \n

    Chat Notebooks—with all their typical Wolfram Notebook editing, structuring, automation, etc. capabilities—are very powerful just as “LLM interfaces”. But there’s another dimension as well, enabled by LLMs being able to call Wolfram Language as a tool.

    \n

    At one level, Chat Notebooks provide an “on ramp” for using Wolfram Language. Wolfram|Alpha—and even more so, Wolfram|Alpha Notebook Edition—let you ask questions in natural language, then have the questions translated into Wolfram Language, and answers computed. But in Chat Notebooks you can go beyond asking specific questions. Instead, through the LLM, you can just “start chatting” about what you want to do, then have Wolfram Language code generated, and executed:

    \n

    How do you make a rosette with 5 lobes?

    \n

    The workflow is typically as follows. First, you have to conceptualize in computational terms what you want. (And, yes, that step requires computational thinking—which is a very important skill that too few people have so far learned.) Then you tell the LLM what you want, and it’ll try to write Wolfram Language code to achieve it. It’ll typically run the code for you (but you can also always do it yourself)—and you can see whether you got what you wanted. But what’s crucial is that Wolfram Language is intended to be read not only by computers but also by humans. And particularly since LLMs actually usually seem to manage to write pretty good Wolfram Language code, you can expect to read what they wrote, and see if it’s what you wanted. If it is, you can take that code, and use it as a “solid building block” for whatever larger system you might be trying to set up. Otherwise, you can either fix it yourself, or try chatting with the LLM to get it to do it.

    \n

    One of the things we see in the example above is the LLM—within the Chat Notebook—making a “tool call”, here to a Wolfram Language evaluator. In the Wolfram Language there’s now a whole mechanism for defining tools for LLMs—with each tool being represented by an LLMTool symbolic object. In Version 14.0 there’s an experimental version of the new Wolfram LLM Tool Repository with some predefined tools:

    \n

    Wolfram LLM Tool Repository

    \n

    In a default Chat Notebook, the LLM has access to some default tools, which include not only the Wolfram Language evaluator, but also things like Wolfram documentation search and Wolfram|Alpha query. And it’s common to see the LLM go back and forth trying to write “code that works”, and for example sometimes having to “resort” (much like humans do) to reading the documentation.

    \n

    Something that’s new in Version 14.0 is experimental access to multimodal LLMs that can take images as well as text as input. And when this capability is enabled, it allows the LLM to “look at pictures from the code it generated”, see if they’re what was asked for, and potentially correct itself:

    \n

    Create graphics with a randomly colored disc

    \n

    The deep integration of images into Wolfram Language—and Wolfram Notebooks—yields all sorts of possibilities for multimodal LLMs. Here we’re giving a plot as an image and asking the LLM how to reproduce it:

    \n

    Create a similar plot

    \n

    Another direction for multimodal LLMs is to take data (in the hundreds of formats accepted by Wolfram Language) and use the LLM to guide its visualization and analysis in the Wolfram Language. Here’s an example that starts from a file data.csv in the current directory on your computer:

    \n

    Look at the file data.csv

    \n

    One thing that’s very nice about using Wolfram Language directly is that everything you do (well, unless you use RandomInteger, etc.) is completely reproducible; do the same computation twice and you’ll get the same result. That’s not true with LLMs (at least right now). And so when one uses LLMs it feels like something more ephemeral and fleeting than using Wolfram Language. One has to grab any good results one gets—because one might never be able to reproduce them. Yes, it’s very helpful that one can store everything in a Chat Notebook, even if one can’t rerun it and get the same results. But the more “permanent” use of LLM results tends to be “offline”. Use an LLM “up front” to figure something out, then just use the result it gave.

    \n

    One unexpected application of LLMs for us has been in suggesting names of functions. With the LLM’s “experience” of what people talk about, it’s in a good position to suggest functions that people might find useful. And, yes, when it writes code it has a habit of hallucinating such functions. But in Version 14.0 we’ve actually added one function—DigitSum—that was suggested to us by LLMs. And in a similar vein, we can expect LLMs to be useful in making connections to external databases, functions, etc. The LLM “reads the documentation”, and tries to write Wolfram Language “glue” code—which then can be reviewed, checked, etc., and if it’s right, can be used henceforth.

    \n

    Then there’s data curation, which is a field that—through Wolfram|Alpha and many of our other efforts—we’ve become extremely expert at over the past couple of decades. How much can LLMs help with that? They certainly don’t “solve the whole problem”, but integrating them with the tools we already have has allowed us over the past year to speed up some of our data curation pipelines by factors of two or more.

    \n

    If we look at the whole stack of technology and content that’s in the modern Wolfram Language, the overwhelming majority of it isn’t helped by LLMs, and isn’t likely to be. But there are many—sometimes unexpected—corners where LLMs can dramatically improve heuristics or otherwise solve problems. And in Version 14.0 there are starting to be a wide variety of “LLM inside” functions.

    \n

    An example is TextSummarize, which is a function we’ve considered adding for many versions—but now, thanks to LLMs, can finally implement to a useful level:

    \n
    \n
    \n

    \n

    The main LLMs that we’re using right now are based on external services. But we’re building capabilities to allow us to run LLMs in local Wolfram Language installations as soon as that’s technically feasible. And one capability that’s actually part of our mainline machine learning effort is NetExternalObject—a way of representing symbolically an externally defined neural net that can be run inside Wolfram Language. NetExternalObject allows you, for example, to take any network in ONNX form and effectively treat it as a component in a Wolfram Language neural net. Here’s a network for image depth estimation—that we’re here importing from an external repository (though in this case there’s actually a similar network already in the Wolfram Neural Net Repository):

    \n
    \n
    \n

    \n

    Now we can apply this imported network to an image that’s been encoded with our built-in image encoder—then we’re taking the result and visualizing it:

    \n
    \n
    \n

    \n

    It’s often very convenient to be able to run networks locally, but it can sometimes take quite high-end hardware to do so. For example, there’s now a function in the Wolfram Function Repository that does image synthesis entirely locally—but to run it, you do need a GPU with at least 8 GB of VRAM:

    \n
    \n
    \n

    \n

    By the way, based on LLM principles (and ideas like transformers) there’ve been other related advances in machine learning that have been strengthening a whole range of Wolfram Language areas—with one example being image segmentation, where ImageSegmentationComponents now provides robust “content-sensitive” segmentation:

    \n
    \n
    \n

    \n

    Still Going Strong on Calculus

    \n

    When Mathematica 1.0 was released in 1988, it was a “wow” that, yes, now one could routinely do integrals symbolically by computer. And it wasn’t long before we got to the point—first with indefinite integrals, and later with definite integrals—where what’s now the Wolfram Language could do integrals better than any human. So did that mean we were “finished” with calculus? Well, no. First there were differential equations, and partial differential equations. And it took a decade to get symbolic ODEs to a beyond-human level. And with symbolic PDEs it took until just a few years ago. Somewhere along the way we built out discrete calculus, asymptotic expansions and integral transforms. And we also implemented lots of specific features needed for applications like statistics, probability, signal processing and control theory. But even now there are still frontiers.

    \n

    And in Version 14 there are significant advances around calculus. One category concerns the structure of answers. Yes, one can have a formula that correctly represents the solution to a differential equation. But is it in the best, simplest or most useful form? Well, in Version 14 we’ve worked hard to make sure it is—often dramatically reducing the size of expressions that get generated.

    \n

    Another advance has to do with expanding the range of “pre-packaged” calculus operations. We’ve been able to do derivatives ever since Version 1.0. But in Version 14 we’ve added implicit differentiation. And, yes, one can give a basic definition for this easily enough using ordinary differentiation and equation solving. But by adding an explicit ImplicitD we’re packaging all that up—and handling the tricky corner cases—so that it becomes routine to use implicit differentiation wherever you want:

    \n
    \n
    \n

    \n

    Another category of pre-packaged calculus operations new in Version 14 are ones for vector-based integration. These were always possible to do in a “do-it-yourself” mode. But in Version 14 they are now streamlined built-in functions—that, by the way, also cover corner cases, etc. And what made them possible is actually a development in another area: our decade-long project to add geometric computation to Wolfram Language—which gave us a natural way to describe geometric constructs such as curves and surfaces:

    \n
    \n
    \n

    \n
    \n
    \n

    \n

    Related functionality new in Version 14 is ContourIntegrate:

    \n
    \n
    \n

    \n

    Functions like ContourIntegrate just “get the answer”. But if one’s learning or exploring calculus it’s often also useful to be able to do things in a more step-by-step way. In Version 14 you can start with an inactive integral

    \n
    \n
    \n

    \n

    and explicitly do operations like changing variables:

    \n
    \n
    \n

    \n

    Sometimes actual answers get expressed in inactive form, particularly as infinite sums:

    \n
    \n
    \n

    \n

    And now in Version 14 the function TruncateSum lets you take such a sum and generate a truncated “approximation”:

    \n
    \n
    \n

    \n

    Functions like D and Integrate—as well as LineIntegrate and SurfaceIntegrate—are, in a sense, “classic calculus”, taught and used for more than three centuries. But in Version 14 we also support what we can think of as “emerging” calculus operations, like fractional differentiation:

    \n
    \n
    \n

    \n

    Core Language

    \n

    What are the primitives from which we can best build our conception of computation? That’s at some level the question I’ve been asking for more than four decades, and what’s determined the functions and structures at the core of the Wolfram Language.

    \n

    And as the years go by, and we see more and more of what’s possible, we recognize and invent new primitives that will be useful. And, yes, the world—and the ways people interact with computers—change too, opening up new possibilities and bringing new understanding of things. Oh, and this year there are LLMs which can “get the intellectual sense of the world” and suggest new functions that can fit into the framework we’ve created with the Wolfram Language. (And, by the way, there’ve also been lots of great suggestions made by the audiences of our design review livestreams.)

    \n

    One new construct added in Version 13.1—and that I personally have found very useful—is Threaded. When a function is listable—as Plus is—the top levels of lists get combined:

    \n
    \n
    \n

    \n

    But sometimes you want one list to be “threaded into” the other at the lowest level, not the highest. And now there’s a way to specify that, using Threaded:

    \n
    \n
    \n

    \n

    In a sense, Threaded is part of a new wave of symbolic constructs that have “ambient effects” on lists. One very simple example (introduced in 2015) is Nothing:

    \n
    \n
    \n

    \n

    Another, introduced in 2020, is Splice:

    \n
    \n
    \n

    \n

    An old chestnut of Wolfram Language design concerns the way infinite evaluation loops are handled. And in Version 13.2 we introduced the symbolic construct TerminatedEvaluation to provide better definition of how out-of-control evaluations have been terminated:

    \n
    \n
    \n

    \n

    In a curious connection, in the computational representation of physics in our recent Physics Project, the direct analog of nonterminating evaluations are what make possible the seemingly unending universe in which we live.

    \n

    But what is actually going on “inside an evaluation”, terminating or not? I’ve always wanted a good representation of this. And in fact back in Version 2.0 we introduced Trace for this purpose:

    \n
    \n
    \n

    \n

    But just how much detail of what the evaluator does should one show? Back in Version 2.0 we introduced the option TraceOriginal that traces every path followed by the evaluator:

    \n
    \n
    \n

    \n

    But often this is way too much. And in Version 14.0 we’ve introduced the new setting TraceOriginalAutomatic, which doesn’t include in its output evaluations that don’t do anything:

    \n
    \n
    \n

    \n

    This may seem pedantic, but when one has an expression of any substantial size, it’s a crucial piece of pruning. So, for example, here’s a graphical representation of a simple arithmetic evaluation, with TraceOriginalTrue:

    \n
    \n
    \n

    \n

    And here’s the corresponding “pruned” version, with TraceOriginalAutomatic:

    \n
    \n
    \n

    \n

    (And, yes, the structures of these graphs are closely related to things like the causal graphs we construct in our Physics Project.)

    \n

    In the effort to add computational primitives to the Wolfram Language, two new entrants in Version 14.0 are Comap and ComapApply. The function Map takes a function f and “maps it” over a list:

    \n
    \n
    \n

    \n

    Comap does the “mathematically co-” version of this, taking a list of functions and “comapping” them onto a single argument:

    \n
    \n
    \n

    \n

    Why is this useful? As an example, one might want to apply three different statistical functions to a single list. And now it’s easy to do that, using Comap:

    \n
    \n
    \n

    \n

    By the way, as with Map, there’s also an operator form for Comap:

    \n
    \n
    \n

    \n

    Comap works well when the functions it’s dealing with take just one argument. If one has functions that take multiple arguments, ComapApply is what one typically wants:

    \n
    \n
    \n

    \n

    Talking of “co-like” functions, a new function added in Version 13.2 is PositionSmallest. Min gives the smallest element in a list; PositionSmallest instead says where the smallest elements are:

    \n
    \n
    \n

    \n

    One of the important objectives in the Wolfram Language is to have as much as possible “just work”. When we released Version 1.0 strings could be assumed just to contain ordinary ASCII characters, or perhaps to have an external character encoding defined. And, yes, it could be messy not to know “within the string itself” what characters were supposed to be there. And by the time of Version 3.0 in 1996 we’d become contributors to, and early adopters of, Unicode, which provided a standard encoding for “16-bits’-worth” of characters. And for many years this served us well. But in time—and particularly with the growth of emoji—16 bits wasn’t enough to encode all the characters people wanted to use. So a few years ago we began rolling out support for 32-bit Unicode, and in Version 13.1 we integrated it into notebooks—in effect making strings something much richer than before:

    \n
    \n
    \n

    \n

    And, yes, you can use Unicode everywhere now:

    \n
    \n
    \n

    \n

    Video as a Fundamental Object

    \n

    Back when Version 1.0 was released, a megabyte was a lot of memory. But 35 years later we routinely deal with gigabytes. And one of the things that makes practical is computation with video. We first introduced Video experimentally in Version 12.1 in 2020. And over the past three years we’ve been systematically broadening and strengthening our ability to deal with video in Wolfram Language. Probably the single most important advance is that things around video now—as much as possible—“just work”, without “creaking” under the strain of handling such large amounts of data.

    \n

    We can directly capture video into notebooks, and we can robustly play video anywhere within a notebook. We’ve also added options for where to store the video so that it’s conveniently accessible to you and anyone else you want to give access to it.

    \n

    There’s lots of complexity in the encoding of video—and we now robustly and transparently support more than 500 codecs. We also do lots of convenient things automatically, like rotating portrait-mode videos—and being able to apply image processing operations like ImageCrop across whole videos. In every version, we’ve been further optimizing the speed of some video operation or another.

    \n

    But a particularly big focus has been on video generators: programmatic ways to produce videos and animations. One basic example is AnimationVideo, which produces the same kind of output as Animate, but as a Video object that can either be displayed directly in a notebook, or exported in MP4 or some other format:

    \n

    AnimationVideo

    \n

    AnimationVideo is based on computing each frame in a video by evaluating an expression. Another class of video generators take an existing visual construct, and simply “tour” it. TourVideo “tours” images, graphics and geo graphics; Tour3DVideo (new in Version 14.0) tours 3D geometry:

    \n
    \n
    \n

    \n

    A very powerful capability in Wolfram Language is being able to apply arbitrary functions to videos. One example of how this can be done is VideoFrameMap, which maps a function across frames of a video, and which was made efficient in Version 13.2:

    \n
    \n
    \n

    \n

    And although Wolfram Language isn’t intended as an interactive video editing system, we’ve made sure that it’s possible to do streamlined programmatic video editing in the language, and for example in Version 14.0 we’ve added things like transition effects in VideoJoin and timed overlays in OverlayVideo.

    \n

    So Much Got Faster, Stronger, Sleeker

    \n

    With every new version of Wolfram Language we add new capabilities to extend yet further the domain of the language. But we also put a lot of effort into something less immediately visible: making existing capabilities faster, stronger and sleeker.

    \n

    And in Version 14 two areas where we can see some examples of all these are dates and quantities. We introduced the notion of symbolic dates (DateObject, etc.) nearly a decade ago. And over the years since then we’ve built many things on this structure. And in the process of doing this it’s become clear that there are certain flows and paths that are particularly common and convenient. At the beginning what mattered most was just to make sure that the relevant functionality existed. But over time we’ve been able to see what should be streamlined and optimized, and we’ve steadily been doing that.

    \n

    In addition, as we’ve worked towards new and different applications, we’ve seen “corners” that need to be filled in. So, for example, astronomy is an area we’ve significantly developed in Version 14, and supporting astronomy has required adding several new “high-precision” time capabilities, such as the TimeSystem option, as well as new astronomy-oriented calendar systems. Another example concerns date arithmetic. What should happen if you want to add a month to January 30? Where should you land? Different kinds of business applications and contracts make different assumptions—and so we added a Method option to functions like DatePlus to handle this. Meanwhile, having realized that date arithmetic is involved in the “inner loop” of certain computations, we optimized it—achieving a more than 100x speedup in Version 14.0.

    \n

    Wolfram|Alpha has been able to deal with units ever since it was first launched in 2009—now more than 10,000 of them. And in 2012 we introduced Quantity to represent quantities with units in the Wolfram Language. And over the past decade we’ve been steadily smoothing out a whole series of complicated gotchas and issues with units. For example, what does 100°C + 20°C mean? Well, the 20°C isn’t really the same kind of thing as the 100°C. And now in Wolfram Language we have a systematic way to handle this, by distinguishing temperature and temperature difference units—so that we now write 100°C + .

    \n

    At first our priority with Quantity was to get it working as broadly as possible, and to integrate it as widely as possible into computations, visualizations, etc. across the system. But as its capabilities have expanded, so have its uses, repeatedly driving the need to optimize its operation for particular common cases. And indeed between Version 13 and Version 14 we’ve dramatically sped up many things related to Quantity, often by factors of 1000 or more.

    \n

    Talking of speedups, another example—made possible by new algorithms operating on multithreaded CPUs—concerns polynomials. We’ve worked with polynomials in Wolfram Language since Version 1, but in Version 13.2 there was a dramatic speedup of up to 1000x on operations like polynomial factoring.

    \n

    In addition, a new algorithm in Version 14.0 dramatically speeds up numerical solutions to polynomial and transcendental equations—and, together with the new MaxRoots options, allows us, for example, to pick off a few roots from a degree-one-million polynomial

    \n
    \n
    \n

    \n

    or to find roots of a transcendental equation that we could not even attempt before without pre-specifying bounds on their values:

    \n
    \n
    \n

    \n

    Another “old” piece of functionality with recent enhancement concerns mathematical functions. Ever since Version 1.0 we’ve set up mathematical functions so that they can be computed to arbitrary precision:

    \n
    \n
    \n

    \n

    But in recent versions we’ve wanted to be “more precise about precision”, and to be able to rigorously compute just what range of outputs are possible given the range of values provided as input:

    \n
    \n
    \n

    \n

    But every function for which we do this effectively requires a new theorem, and we’ve been steadily increasing the number of functions covered—now more than 130—so that this “just works” when you need to use it in a computation.

    \n

    The Tree Story Continues

    \n

    Trees are useful. We first introduced them as basic objects in the Wolfram Language only in Version 12.3. But now that they’re there, we’re discovering more and more places they can be used. And to support that, we’ve been adding more and more capabilities to them.

    \n

    One area that’s advanced significantly since Version 13 is the rendering of trees. We tightened up the general graphic design, but, more importantly, we introduced many new options for how rendering should be done.

    \n

    For example, here’s a random tree where we’ve specified that for all nodes only 3 children should be explicitly displayed: the others are elided away:

    \n
    \n
    \n

    \n

    Here we’re adding several options to define the rendering of the tree:

    \n
    \n
    \n

    \n

    By default, the branches in trees are labeled with integers, just like parts in an expression. But in Version 13.1 we added support for named branches defined by associations:

    \n
    \n
    \n

    \n

    Our original conception of trees was very centered around having elements one would explicitly address, and that could have “payloads” attached. But what became clear is that there were applications where all that mattered was the structure of the tree, not anything about its elements. So we added UnlabeledTree to create “pure trees”:

    \n
    \n
    \n

    \n

    Trees are useful because many kinds of structures are basically trees. And since Version 13 we’ve added capabilities for converting trees to and from various kinds of structures. For example, here’s a simple Dataset object:

    \n
    \n
    \n

    \n

    You can use ExpressionTree to convert this to a tree:

    \n
    \n
    \n

    \n

    And TreeExpression to convert it back:

    \n
    \n
    \n

    \n

    We’ve also added capabilities for converting to and from JSON and XML, as well as for representing file directory structures as trees:

    \n
    \n
    \n

    \n

    Finite Fields

    \n

    In Version 1.0 we had integers, rational numbers and real numbers. In Version 3.0 we added algebraic numbers (represented implicitly by Root)—and a dozen years later we added algebraic number fields and transcendental roots. For Version 14 we’ve now added another (long-awaited) “number-related” construct: finite fields.

    \n

    Here’s our symbolic representation of the field of integers modulo 7:

    \n
    \n
    \n

    \n

    And now here’s a specific element of that field

    \n
    \n
    \n

    \n

    which we can immediately compute with:

    \n
    \n
    \n

    \n

    But what’s really important about what we’ve done with finite fields is that we’ve fully integrated them into other functions in the system. So, for example, we can factor a polynomial whose coefficients are in a finite field:

    \n
    \n
    \n

    \n

    We can also do things like find solutions to equations over finite fields. So here, for example, is a point on a Fermat curve over the finite field GF(173):

    \n
    \n
    \n

    \n

    And here is a power of a matrix with elements over the same finite field:

    \n
    \n
    \n

    \n

    Going Off Planet: The Astro Story

    \n

    A major new capability added since Version 13 is astro computation. It begins with being able to compute to high precision the positions of things like planets. Even knowing what one means by “position” is complicated, though—with lots of different coordinate systems to deal with. By default AstroPosition gives the position in the sky at the current time from your Here location:

    \n
    \n
    \n

    \n

    But one can instead ask about a different coordinate system, like global galactic coordinates:

    \n
    \n
    \n

    \n

    And now here’s a plot of the distance between Saturn and Jupiter over a 50-year period:

    \n
    \n
    \n

    \n

    In direct analogy to GeoGraphics, we’ve added AstroGraphics, here showing a patch of sky around the current position of Saturn:

    \n
    \n
    \n

    \n

    And this now shows the sequence of positions for Saturn over the course of a couple of years—yes, including retrograde motion:

    \n
    \n
    \n

    \n

    There are many styling options for AstroGraphics. Here we’re adding a background of the “galactic sky”:

    \n
    \n
    \n

    \n

    And here we’re including renderings for constellations (and, yes, we had an artist draw them):

    \n
    \n
    \n

    \n

    Something specifically new in Version 14.0 has to do with extended handling of solar eclipses. We always try to deliver new functionality as fast as we can. But in this case there was a very specific deadline: the total solar eclipse visible from the US on April 8, 2024. We’ve had the ability to do global computations about solar eclipses for some time (actually since soon before the 2017 eclipse). But now we can also do detailed local computations right in the Wolfram Language.

    \n

    So, for example, here’s a somewhat detailed overall map of the April 8, 2024, eclipse:

    \n
    \n
    \n

    \n

    Now here’s a plot of the magnitude of the eclipse over a few hours, complete with a little “rampart” associated with the period of totality:

    \n
    \n
    \n

    \n

    And here’s a map of the region of totality every minute just after the moment of maximum eclipse:

    \n
    \n
    \n

    \n

    Millions of Species Become Computable

    \n

    We first introduced computable data on biological organisms back when Wolfram|Alpha was released in 2009. But in Version 14—following several years of work—we’ve dramatically broadened and deepened the computable data we have about biological organisms.

    \n

    So for example here’s how we can figure out what species have cheetahs as predators:

    \n
    \n
    \n

    \n

    And here are pictures of these:

    \n
    \n
    \n

    \n

    Here’s a map of countries where cheetahs have been seen (in the wild):

    \n
    \n
    \n

    \n

    We now have data—curated from a great many sources—on more than a million species of animals, as well as most of the plants, fungi, bacteria, viruses and archaea that have been described. And for animals, for example, we have nearly 200 properties that are extensively filled in. Some are taxonomic properties:

    \n
    \n
    \n

    \n

    Some are physical properties:

    \n
    \n
    \n

    \n
    \n
    \n

    \n

    Some are genetic properties:

    \n
    \n
    \n

    \n

    Some are ecological properties (yes, the cheetah is not the apex predator):

    \n
    \n
    \n

    \n

    It’s useful to be able to get properties of individual species, but the real power of our curated computable data shows up when one does larger-scale analyses. Like here’s a plot of the lengths of genomes for organisms with the longest ones across our collection of organisms:

    \n
    \n
    \n

    \n

    Or here’s a histogram of the genome lengths for organisms in the human gut microbiome:

    \n
    \n
    \n

    \n

    And here’s a scatterplot of the lifespans of birds against their weights:

    \n
    \n
    \n

    \n

    Following the idea that cheetahs aren’t apex predators, this is a graph of what’s “above” them in the food chain:

    \n
    \n
    \n

    \n

    Chemical Computation

    \n

    We began the process of introducing chemical computation into the Wolfram Language in Version 12.0, and by Version 13 we had good coverage of atoms, molecules, bonds and functional groups. Now in Version 14 we’ve added coverage of chemical formulas, amounts of chemicals—and chemical reactions.

    \n

    Here’s a chemical formula, that basically just gives a “count of atoms”:

    \n
    \n
    \n

    \n

    Now here are specific molecules with that formula:

    \n
    \n
    \n

    \n

    Let’s pick one of these molecules:

    \n
    \n
    \n

    \n

    Now in Version 14 we have a way to represent a certain quantity of molecules of a given type—here 1 gram of methylcyclopentane:

    \n
    \n
    \n

    \n

    ChemicalConvert can convert to a different specification of quantity, here moles:

    \n
    \n
    \n

    \n

    And here a count of molecules:

    \n
    \n
    \n

    \n

    But now the bigger story is that in Version 14 we can represent not just individual types of molecules, and quantities of molecules, but also chemical reactions. Here we give a “sloppy” unbalanced representation of a reaction, and ReactionBalance gives us the balanced version:

    \n
    \n
    \n

    \n

    And now we can extract the formulas for the reactants:

    \n
    \n
    \n

    \n

    We can also give a chemical reaction in terms of molecules:

    \n
    \n
    \n

    \n

    But with our symbolic representation of molecules and reactions, there’s now a big thing we can do: represent classes of reactions as “pattern reactions”, and work with them using the same kinds of concepts as we use in working with patterns for general expressions. So, for example, here’s a symbolic representation of the hydrohalogenation reaction:

    \n
    \n
    \n

    \n

    Now we can apply this pattern reaction to particular molecules:

    \n
    \n
    \n

    \n

    Here’s a more elaborate example, in this case entered using a SMARTS string:

    \n
    \n
    \n

    \n

    Here we’re applying the reaction just once:

    \n
    \n
    \n

    \n

    And now we’re doing it repeatedly

    \n
    \n
    \n

    \n

    in this case generating longer and longer molecules (which in this case happen to be polypeptides):

    \n
    \n
    \n

    The Knowledgebase Is Always Growing

    \n

    Every minute of every day, new data is being added to the Wolfram Knowledgebase. Much of it is coming automatically from real-time feeds. But we also have a very large-scale ongoing curation effort with humans in the loop. We’ve built sophisticated (Wolfram Language) automation for our data curation pipeline over the years—and this year we’ve been able to increase efficiency in some areas by using LLM technology. But it’s hard to do curation right, and our long-term experience is that to do so ultimately requires human experts being in the loop, which we have.

    \n

    So what’s new since Version 13.0? 291,842 new notable current and historical people; 264,467 music works; 118,538 music albums; 104,024 named stars; and so on. Sometimes the addition of an entity is driven by the new availability of reliable data; often it’s driven by the need to use that entity in some other piece of functionality (e.g. stars to render in AstroGraphics). But more than just adding entities there’s the issue of filling in values of properties of existing entities. And here again we’re always making progress, sometimes integrating newly available large-scale secondary data sources, and sometimes doing direct curation ourselves from primary sources.

    \n

    A recent example where we needed to do direct curation was in data on alcoholic beverages. We have very extensive data on hundreds of thousands of types of foods and drinks. But none of our large-scale sources included data on alcoholic beverages. So that’s an area where we need to go to primary sources (in this case typically the original producers of products) and curate everything for ourselves.

    \n

    So, for example, we can now ask for something like the distribution of flavors of different varieties of vodka (actually, personally, not being a consumer of such things, I had no idea vodka even had flavors…):

    \n
    \n
    \n

    \n

    But beyond filling out entities and properties of existing types, we’ve also steadily been adding new entity types. One recent example is geological formations, 13,706 of them:

    \n
    \n
    \n

    \n

    So now, for example, we can specify where T. rex have been found

    \n
    \n
    \n

    \n

    and we can show those regions on a map:

    \n
    \n
    \n

    \n

    Industrial-Strength Multidomain PDEs

    \n

    PDEs are hard. It’s hard to solve them. And it’s hard to even specify what exactly you want to solve. But we’ve been on a multi-decade mission to “consumerize” PDEs and make them easier to work with. Many things go into this. You need to be able to easily specify elaborate geometries. You need to be able to easily define mathematically complicated boundary conditions. You need to have a streamlined way to set up the complicated equations that come out of underlying physics. Then you have to—as automatically as possible—do the sophisticated numerical analysis to efficiently solve the equations. But that’s not all. You also often need to visualize your solution, compute other things from it, or run optimizations of parameters over it.

    \n

    It’s a deep use of what we’ve built with Wolfram Language—touching many parts of the system. And the result is something unique: a truly streamlined and integrated way to handle PDEs. One’s not dealing with some (usually very expensive) “just for PDEs” package; what we now have is a “consumerized” way to handle PDEs whenever they’re needed—for engineering, science, or whatever. And, yes, being able to connect machine learning, or image computation, or curated data, or data science, or real-time sensor feeds, or parallel computing, or, for that matter, Wolfram Notebooks, to PDEs just makes them so much more valuable.

    \n

    We’ve had “basic, raw NDSolve” since 1991. But what’s taken decades to build is all the structure around that to let one conveniently set up—and efficiently solve—real-world PDEs, and connect them into everything else. It’s taken developing a whole tower of underlying algorithmic capabilities such as our more-flexible-and-integrated-than-ever-before industrial-strength computational geometry and finite element methods. But beyond that it’s taken creating a language for specifying real-world PDEs. And here the symbolic nature of the Wolfram Language—and our whole design framework—has made possible something very unique, that has allowed us to dramatically simplify and consumerize the use of PDEs.

    \n

    It’s all about providing symbolic “construction kits” for PDEs and their boundary conditions. We started this about five years ago, progressively covering more and more application areas. In Version 14 we’ve particularly focused on solid mechanics, fluid mechanics, electromagnetics and (one-particle) quantum mechanics.

    \n

    Here’s an example from solid mechanics. First, we define the variables we’re dealing with (displacement and underlying coordinates):

    \n
    \n
    \n

    \n

    Next, we specify the parameters we want to use to describe the solid material we’re going to work with:

    \n
    \n
    \n

    \n

    Now we can actually set up our PDE—using symbolic PDE specifications like SolidMechanicsPDEComponent—here for the deformation of a solid object pulled on one side:

    \n
    \n
    \n

    \n

    And, yes, “underneath”, these simple symbolic specifications turn into a complicated “raw” PDE:

    \n
    \n
    \n

    \n

    Now we are ready to actually solve our PDE in a particular region, i.e. for an object with a particular shape:

    \n
    \n
    \n

    \n

    And now we can visualize the result, which shows how our object stretches when it’s pulled on:

    \n
    \n
    \n

    \n

    The way we’ve set things up, the material for our object is an idealization of something like rubber. But in the Wolfram Language we now have ways to specify all sorts of detailed properties of materials. So, for example, we can add reinforcement as a unit vector in a particular direction (say in practice with fibers) to our material:

    \n
    \n
    \n

    \n

    Then we can rerun what we did before

    \n
    \n
    \n

    \n
    \n
    \n

    \n

    but now we get a slightly different result:

    \n
    \n
    \n

    \n

    Another major PDE domain that’s new in Version 14.0 is fluid flow. Let’s do a 2D example. Our variables are 2D velocity and pressure:

    \n
    \n
    \n

    \n

    Now we can set up our fluid system in a particular region, with no-slip conditions on all walls except at the top where we assume fluid is flowing from left to right. The only parameter needed is the Reynolds number. And instead of just solving our PDEs for a single Reynolds number, let’s create a parametric solver that can take any specified Reynolds number:

    \n
    \n
    \n

    \n

    Now here’s the result for Reynolds number 100:

    \n
    \n
    \n

    \n

    But with the way we’ve set things up, we can as well generate a whole video as a function of Reynolds number (and, yes, the Parallelize speeds things up by generating different frames in parallel):

    \n
    \n

    \n
    \n

    \n

    Much of our work in PDEs involves catering to the complexities of real-world engineering situations. But in Version 14.0 we’re also adding features to support “pure physics”, and in particular to support quantum mechanics done with the Schrödinger equation. So here, for example, is the 2D 1-particle Schrödinger equation (with ):

    \n
    \n
    \n

    \n

    Here’s the region we’re going to be solving over—showing explicit discretization:

    \n
    \n
    \n

    \n

    Now we can solve the equation, adding in some boundary conditions:

    \n
    \n
    \n

    \n

    And now we get to visualize a Gaussian wave packet scattering around a barrier:

    \n
    \n
    \n

    \n

    Streamlining Systems Engineering Computation

    \n

    Systems engineering is a big field, but it’s one where the structure and capabilities of the Wolfram Language provide unique advantages—that over the past decade have allowed us to build out rather complete industrial-strength support for modeling, analysis and control design for a wide range of types of systems. It’s all an integrated part of the Wolfram Language, accessible through the computational and interface structure of the language. But it’s also integrated with our separate Wolfram System Modeler product, that provides a GUI-based workflow for system modeling and exploration.

    \n

    Shared with System Modeler are large collections of domain-specific modeling libraries. And, for example, since Version 13, we’ve added libraries in areas such as battery engineering, hydraulic engineering and aircraft engineering—as well as educational libraries for mechanical engineering, thermal engineering, digital electronics, and biology. (We’ve also added libraries for areas such as business and public policy simulation.)

    \n

    Domain-specific modeling libraries

    \n

    A typical workflow for systems engineering begins with the setting up of a model. The model can be built from scratch, or assembled from components in model libraries—either visually in Wolfram System Modeler, or programmatically in the Wolfram Language. For example, here’s a model of an electric motor that’s turning a load through a flexible shaft:

    \n
    \n
    \n

    \n

    Once one’s got a model, one can then simulate it. Here’s an example where we’ve set one parameter of our model (the moment of inertia of the load), and we’re computing the values of two others as a function of time:

    \n
    \n
    \n

    \n

    A new capability in Version 14.0 is being able to see the effect of uncertainty in parameters (or initial values, etc.) on the behavior of a system. So here, as an example, we’re saying the value of the parameter is not definite, but is instead distributed according to a normal distribution—then we’re seeing the distribution of output results:

    \n
    \n
    \n

    \n

    The motor with flexible shaft that we’re looking at can be thought of as a “multidomain system”, combining electrical and mechanical components. But the Wolfram Language (and Wolfram System Modeler) can also handle “mixed systems”, combining analog and digital (i.e. continuous and discrete) components. Here’s a fairly sophisticated example from the world of control systems: a helicopter model connected in a closed loop to a digital control system:

    \n

    Helicopter model

    \n

    This whole model system can be represented symbolically just by:

    \n
    \n
    \n

    \n

    And now we compute the input-output response of the model:

    \n
    \n
    \n

    \n

    Here’s specifically the output response:

    \n
    \n
    \n

    \n

    But now we can “drill in” and see specific subsystem responses, here of the zero-order hold device (labeled ZOH above)—complete with its little digital steps:

    \n
    \n
    \n

    \n

    But what if we want to design the control systems ourselves? Well, in Version 14 we can now apply all our Wolfram Language control systems design functionality to arbitrary system models. Here’s an example of a simple model, in this case in chemical engineering (a continuously stirred tank):

    \n
    \n
    \n

    \n

    Now we can take this model and design an LQG controller for it—then assemble a whole closed-loop system for it:

    \n
    \n
    \n

    \n

    Now we can simulate the closed-loop system—and see that the controller succeeds in bringing the final value to 0:

    \n
    \n
    \n

    \n

    Graphics: More Beautiful & Alive

    \n

    Graphics have always been an important part of the story of the Wolfram Language, and for more than three decades we’ve been progressively enhancing and updating their appearance and functionality—sometimes with help from advances in hardware (e.g. GPU) capabilities.

    \n

    Since Version 13 we’ve added a variety of “decorative” (or “annotative”) effects in 2D graphics. One example (useful for putting captions on things) is Haloing:

    \n
    \n
    \n

    \n

    Another example is DropShadowing:

    \n
    \n
    \n

    \n

    All of these are specified symbolically, and can be used throughout the system (e.g. in hover effects, etc). And, yes, there are many detailed parameters you can set:

    \n
    \n
    \n

    \n

    A significant new capability in Version 14.0 is convenient texture mapping. We’ve had low-level polygon-by-polygon textures for a decade and a half. But now in Version 14.0 we’ve made it straightforward to map textures onto whole surfaces. Here’s an example wrapping a texture onto a sphere:

    \n
    \n
    \n

    \n

    And here’s wrapping the same texture onto a more complicated surface:

    \n
    \n
    \n

    \n

    A significant subtlety is that there are many ways to map what amount to “texture coordinate patches” onto surfaces. The documentation illustrates new, named cases:

    \n

    Texture coordinate patches

    \n

    And now here’s what happens with stereographic projection onto a sphere:

    \n
    \n
    \n

    \n

    Here’s an example of “surface texture” for the planet Venus

    \n
    \n
    \n

    \n

    and here it’s been mapped onto a sphere, which can be rotated:

    \n
    \n
    \n

    \n

    Here’s a “flowerified” bunny:

    \n
    \n
    \n

    \n

    Things like texture mapping help make graphics visually compelling. Since Version 13 we’ve also added a variety of “live visualization” capabilities that automatically “bring visualizations to life”. For example, any plot now by default has a “coordinate mouseover”:

    \n
    \n
    \n

    \n

    As usual, there’s lots of ways to control such “highlighting” effects:

    \n
    \n
    \n

    \n
    \n
    \n

    \n

    Euclid Redux: The Advance of Synthetic Geometry

    \n

    One might say it’s been two thousand years in the making. But four years ago (Version 12) we began to introduce a computable version of Euclid-style synthetic geometry.

    \n

    The idea is to specify geometric scenes symbolically by giving a collection of (potentially implicit) constraints:

    \n
    \n
    \n

    \n

    We can then generate a random instance of geometry consistent with the constraints—and in Version 14 we’ve considerably enhanced our ability to make sure that geometry will be “typical” and non-degenerate:

    \n
    \n
    \n

    \n

    But now a new feature of Version 14 is that we can find values of geometric quantities that are determined by the constraints:

    \n
    \n
    \n

    \n

    Here’s a slightly more complicated case:

    \n
    \n
    \n

    \n

    And here we’re now solving for the areas of two triangles in the figure:

    \n
    \n
    \n

    \n

    We’ve always been able to give explicit styles for particular elements of a scene:

    \n
    \n
    \n

    \n

    Now one of the new features in Version 14 is being able to give general “geometric styling rules”, here just assigning random colors to each element:

    \n
    \n
    \n

    \n

    The Ever-Smoother User Interface

    \n

    Our goal with Wolfram Language is to make it as easy as possible to express oneself computationally. And a big part of achieving that is the coherent design of the language itself. But there’s another part as well, which is being able to actually enter Wolfram Language input one wants—say in a notebook—as easily as possible. And with every new version we make enhancements to this.

    \n

    One area that’s been in continuous development is interactive syntax highlighting. We first added syntax highlighting nearly two decades ago—and over time we’ve progressively made it more and more sophisticated, responding both as you type, and as code gets executed. Some highlighting has always had obvious meaning. But particularly highlighting that is dynamic and based on cursor position has sometimes been harder to interpret. And in Version 14—leveraging the brighter color palettes that have become the norm in recent years—we’ve tuned our dynamic highlighting so it’s easier to quickly tell “where you are” within the structure of an expression:

    \n

    Dynamic highlighting

    \n

    On the subject of “knowing what one has”, another enhancement—added in Version 13.2—is differentiated frame coloring for different kinds of visual objects in notebooks. Is that thing one has a graphic? Or an image? Or a graph? Now one can tell from the color of frame when one selects it:

    \n

    Differentiated frame coloring

    \n

    An important aspect of the Wolfram Language is that the names of built-in functions are spelled out enough that it’s easy to tell what they do. But often the names are therefore necessarily quite long, and so it’s important to be able to autocomplete them when one’s typing. In 13.3 we added the notion of “fuzzy autocompletion” that not only “completes to the end” a name one’s typing, but also can fill in intermediate letters, change capitalization, etc. Thus, for example, just typing lll brings up an autocompletion menu that begins with ListLogLogPlot:

    \n

    Autocompletion menu

    \n

    A major user interface update that first appeared in Version 13.1—and has been enhanced in subsequent versions—is a default toolbar for every notebook:

    \n

    Default toolbar

    \n

    The toolbar provides immediate access to evaluation controls, cell formatting and various kinds of input (like inline cells, , hyperlinks, drawing canvas, etc.)—as well as to things like Menu options cloud publishing, Menu options documentation search and Menu options “chat” (i.e. LLM) settings.

    \n

    Much of the time, it’s useful to have the toolbar displayed in any notebook you’re working with. But on the left-hand side there’s a little tiny that lets you minimize the toolbar:

    \n

    Minimize toolbar

    \n

    In 14.0 there’s a Preferences setting that makes the toolbar come up minimized in any new notebook you create—and this in effect gives you the best of both worlds: you have immediate access to the toolbar, but your notebooks don’t have anything “extra” that might distract from their content.

    \n

    Another thing that’s advanced since Version 13 is the handling of “summary” forms of output in notebooks. A basic example is what happens if you generate a very large result. By default only a summary of the result is actually displayed. But now there’s a bar at the bottom that gives various options for how to handle the actual output:

    \n
    \n
    \n

    \n

    By default, the output is only stored in your current kernel session. But by pressing the Iconize button you get an iconized form that will appear directly in your notebook (or one that can be copied anywhere) and that “has the whole output inside”. There’s also a Store full expression in notebook button, which will “invisibly” store the output expression “behind” the summary display.

    \n

    If the expression is stored in the notebook, then it’ll be persistent across kernel sessions. Otherwise, well, you won’t be able to get to it in a different kernel session; the only thing you’ll have is the summary display:

    \n

    Summary display

    \n

    It’s a similar story for large “computational objects”. Like here’s a Nearest function with a million data points:

    \n
    \n
    \n

    \n

    By default, the data is just something that exists in your current kernel session. But now there’s a menu that lets you save the data in various persistent locations:

    \n

    Save data menu

    \n

    And There’s the Cloud Too

    \n

    There are many ways to run the Wolfram Language. Even in Version 1.0 we had the notion of remote kernels: the notebook front end running on one machine (in those days essentially always a Mac, or a NeXT), and the kernel running on a different machine (in those days sometimes even connected by phone lines). But a decade ago came a major step forward: the Wolfram Cloud.

    \n

    There are really two distinct ways in which the cloud is used. The first is in delivering a notebook experience similar to our longtime desktop experience, but running purely in a browser. And the second is in delivering APIs and other programmatically accessed capabilities—notably, even at the beginning, a decade ago, through things like APIFunction.

    \n

    The Wolfram Cloud has been the target of intense development now for nearly 15 years. Alongside it have also come Wolfram Application Server and Wolfram Web Engine, which provide more streamlined support specifically for APIs (without things like user management, etc., but with things like clustering).

    \n

    All of these—but particularly the Wolfram Cloud—have become core technology capabilities for us, supporting many of our other activities. So, for example, the Wolfram Function Repository and Wolfram Paclet Repository are both based on the Wolfram Cloud (and in fact this is true of our whole resource system). And when we came to build the Wolfram plugin for ChatGPT earlier this year, using the Wolfram Cloud allowed us to have the plugin deployed within a matter of days.

    \n

    Since Version 13 there have been quite a few very different applications of the Wolfram Cloud. One is for the function ARPublish, which takes 3D geometry and puts it in the Wolfram Cloud with appropriate metadata to allow phones to get augmented-reality versions from a QR code of a cloud URL:

    \n
    \n
    \n

    \n

    Augmented-reality triptych

    \n

    On the Cloud Notebook side, there’s been a steady increase in usage, notably of embedded Cloud Notebooks, which have for example become common on Wolfram Community, and are used all over the Wolfram Demonstrations Project. Our goal all along has been to make Cloud Notebooks be as easy to use as simple webpages, but to have the depth of capabilities that we’ve developed in notebooks over the past 35 years. We achieved this some years ago for fairly small notebooks, but in the past couple of years we’ve been going progressively further in handling even multi-hundred-megabyte notebooks. It’s a complicated story of caching, refreshing—and dodging the vicissitudes of web browsers. But at this point the vast majority of notebooks can be seamlessly deployed to the cloud, and will display as immediately as simple webpages.

    \n

    The Great Integration Story for External Code

    \n

    It’s been possible to call external code from Wolfram Language ever since Version 1.0. But in Version 14 there are important advances in the extent and ease with which external code can be integrated. The overall goal is to be able to use all the power and coherence of the Wolfram Language even when some part of a computation is done in external code. And in Version 14 we’ve done a lot to streamline and automate the process by which external code can be integrated into the language.

    \n

    Once something is integrated into the Wolfram Language it just becomes, for example, a function that can be used just like any other Wolfram Language function. But what’s underneath is necessarily quite different for different kinds of external code. There’s one setup for interpreted languages like Python. There’s another for C-like compiled languages and dynamic libraries. (And then there are others for external processes, APIs, and what amount to “importable code specifications”, say for neural networks.)

    \n

    Let’s start with Python. We’ve had ExternalEvaluate for evaluating Python code since 2018. But when you actually come to use Python there are all these dependencies and libraries to deal with. And, yes, that’s one of the places where the incredible advantages of the Wolfram Language and its coherent design are painfully evident. But in Version 14.0 we now have a way to encapsulate all that Python complexity, so that we can deliver Python functionality within Wolfram Language, hiding all the messiness of Python dependencies, and even the versioning of Python itself.

    \n

    As an example, let’s say we want to make a Wolfram Language function Emojize that uses the Python function emojize within the emoji Python library. Here’s how we can do that:

    \n
    \n
    \n

    \n

    And now you can just call Emojize in the Wolfram Language and—under the hood—it’ll run Python code:

    \n
    \n
    \n

    \n

    The way this works is that the first time you call Emojize, a Python environment with all the right features is created, then is cached for subsequent uses. And what’s important is that the Wolfram Language specification of Emojize is completely system independent (or as system independent as it can be, given vicissitudes of Python implementations). So that means that you can, for example, deploy Emojize in the Wolfram Function Repository just like you would deploy something written purely in Wolfram Language.

    \n

    There’s very different engineering involved in calling C-compatible functions in dynamic libraries. But in Version 13.3 we also made this very streamlined using the function ForeignFunctionLoad. There’s all sorts of complexity associated with converting to and from native C data types, managing memory for data structures, etc. But we’ve now got very clean ways to do this in Wolfram Language.

    \n

    As an example, here’s how one sets up a “foreign function” call to a function RAND_bytes in the OpenSSL library:

    \n
    \n
    \n

    \n

    Inside this, we’re using Wolfram Language compiler technology to specify the native C types that will be used in the foreign function. But now we can package this all up into a Wolfram Language function:

    \n
    \n
    \n

    \n

    And we can call this function just like any other Wolfram Language function:

    \n
    \n
    \n

    \n

    Internally, all sorts of complicated things are going on. For example, we’re allocating a raw memory buffer that’s then getting fed to our C function. But when we do that memory allocation we’re creating a symbolic structure that defines it as a “managed object”:

    \n
    \n
    \n

    \n

    And now when this object is no longer being used, the memory associated with it will be automatically freed.

    \n

    And, yes, with both Python and C there’s quite a bit of complexity underneath. But the good news is that in Version 14 we’ve basically been able to automate handling it. And the result is that what gets exposed is pure, simple Wolfram Language.

    \n

    But there’s another big piece to this. Within particular Python or C libraries there are often elaborate definitions of data structures that are specific to that library. And so to use these libraries one has to dive into all the—potentially idiosyncratic—complexities of those definitions. But in the Wolfram Language we have consistent symbolic representations for things, whether they’re images, or dates or types of chemicals. When you first hook up an external library you have to map its data structures to these. But once that’s done, anyone can use what’s been built, and seamlessly integrate with other things they’re doing, perhaps even calling other external code. In effect what’s happening is that one’s leveraging the whole design framework of the Wolfram Language, and applying that even when one’s using underlying implementations that aren’t based on the Wolfram Language.

    \n

    For Serious Developers

    \n

    A single line (or less) of Wolfram Language code can do a lot. But one of the remarkable things about the language is that it’s fundamentally scalable: good both for very short programs and very long programs. And since Version 13 there’ve been several advances in handling very long programs. One of them concerns “code editing”.

    \n

    Standard Wolfram Notebooks work very well for exploratory, expository and many other forms of work. And it’s certainly possible to write large amounts of code in standard notebooks (and, for example, I personally do it). But when one’s doing “software-engineering-style work” it’s both more convenient and more familiar to use what amounts to a pure code editor, largely separate from code execution and exposition. And this is why we have the “package editor”, accessible from File > New > Package/Script. You’re still operating in the notebook environment, with all its sophisticated capabilities. But things have been “skinned” to provide a much more textual “code experience”—both in terms of editing, and in terms of what actually gets saved in .wl files.

    \n

    Here’s typical example of the package editor in action (in this case applied to our GitLink package):

    \n

    Package editor

    \n

    Several things are immediately evident. First, it’s very line oriented. Lines (of code) are numbered, and don’t break except at explicit newlines. There are headings just like in ordinary notebooks, but when the file is saved, they’re stored as comments with a certain stylized structure:

    \n

    Lines of code

    \n

    It’s still perfectly possible to run code in the package editor, but the output won’t get saved in the .wl file:

    \n

    Unsaved output

    \n

    One thing that’s changed since Version 13 is that the toolbar is much enhanced. And for example there’s now “smart search” that is aware of code structure:

    \n

    Smart search

    \n

    You can also ask to go to a line number—and you’ll immediately see whatever lines of code are nearby:

    \n

    Nearby lines of code

    \n

    In addition to code editing, another set of features new since Version 13 of importance to serious developers concern automated testing. The main advance is the introduction of a fully symbolic testing framework, in which individual tests are represented as symbolic objects

    \n
    \n
    \n

    \n

    and can be manipulated in symbolic form, then run using functions like TestEvaluate and TestReport:

    \n
    \n
    \n

    \n

    In Version 14.0 there’s another new testing function—IntermediateTest—that lets you insert what amount to checkpoints inside larger tests:

    \n
    \n
    \n

    \n

    Evaluating this test, we see that the intermediate tests were also run:

    \n
    \n
    \n

    \n

    Wolfram Function Repository: 2900 Functions & Counting

    \n

    The Wolfram Function Repository has been a big success. We introduced it in 2019 as a way to make specific, individual contributed functions available in the Wolfram Language. And now there are more than 2900 such functions in the Repository.

    \n

    The nearly 7000 functions that constitute the Wolfram Language as it is today have been painstakingly developed over the past three and a half decades, always mindful of creating a coherent whole with consistent design principles. And now in a sense the success of the Function Repository is one of the dividends of all that effort. Because it’s the coherence and consistency of the underlying language and its design principles that make it feasible to just add one function at a time, and have it really work. You want to add a function to do some very specific operation that combines images and graphs. Well, there’s a consistent representation of both images and graphs in the Wolfram Language, which you can leverage. And by following the principles of the Wolfram Language—like for the naming of functions—you can create a function that’ll be easy for Wolfram Language users to understand and use.

    \n

    Using the Wolfram Function Repository is a remarkably seamless process. If you know the function’s name, you can just call it using ResourceFunction; the function will be loaded if it’s needed, and then it’ll just run:

    \n
    \n
    \n

    \n

    If there’s an update available for the function, it’ll give you a message, but run the old version anyway. The message has a button that lets you load in the update; then you can rerun your input and use the new version. (If you’re writing code where you want to “burn in” a particular version of a function, you can just use the ResourceVersion option of ResourceFunction.)

    \n

    If you want your code to look more elegant, just evaluate the ResourceFunction object

    \n
    \n
    \n

    \n

    and use the formatted version:

    \n
    \n
    \n

    \n

    And, by the way, pressing the + then gives you more information about the function:

    \n

    Function information

    \n

    An important feature of functions in the Function Repository is that they all have documentation pages—that are organized pretty much like the pages for built-in functions:

    \n

    SolarEclipseIcon function page

    \n

    But how does one create a Function Repository entry? Just go to File > New > Repository Item > Function Repository Item and you’ll get a Definition Notebook:

    \n

    Definition notebook

    \n

    We’ve optimized this to be as easy to fill in as possible, minimizing boilerplate and automatically checking for correctness and consistency whenever possible. And the result is that it’s perfectly realistic to create a simple Function Repository item in under an hour—with the main time spent being in the writing of good expository examples.

    \n

    When you press Submit to Repository your function gets sent to the Wolfram Function Repository review team, whose mandate is to ensure that functions in the repository do what they say they do, work in a way that is consistent with general Wolfram Language design principles, have good names, and are adequately documented. Except for very specialized functions, the goal is to finish reviews within a week (and sometimes considerably sooner)—and to publish functions as soon as they are ready.

    \n

    There’s a digest of new (and updated) functions in the Function Repository that gets sent out every Friday—and makes for interesting reading (you can subscribe here):

    \n

    Wolfram Function Repository email

    \n

    The Wolfram Function Repository is a curated public resource that can be accessed from any Wolfram Language system (and, by the way, the source code for every function is available—just press the Source Notebook button). But there’s another important use case for the infrastructure of the Function Repository: privately deployed “resource functions”.

    \n

    It all works through the Wolfram Cloud. You use the exact same Definition Notebook, but now instead of submitting to the public Wolfram Function Repository, you just deploy your function to the Wolfram Cloud. You can make it private so that only you, or some specific group, can access it. Or you can make it public, so anyone who knows its URL can immediately access and use it in their Wolfram Language system.

    \n

    This turns out to be a tremendously useful mechanism, both for group projects, and for creating published material. In a sense it’s a very lightweight but robust way to distribute code—packaged into functions that can immediately be used. (By the way, to find the functions you’ve published from your Wolfram Cloud account, just go to the DeployedResources folder in the cloud file browser.)

    \n

    (For organizations that want to manage their own function repository, it’s worth mentioning that the whole Wolfram Function Repository mechanism—including the infrastructure for doing reviews, etc.—is also available in a private form through the Wolfram Enterprise Private Cloud.)

    \n

    So what’s in the public Wolfram Function Repository? There are a lot of “specialty functions” intended for specific “niche” purposes—but very useful if they’re what you want:

    \n
    \n
    \n

    \n
    \n
    \n

    \n
    \n
    \n

    \n
    \n
    \n

    \n
    \n
    \n

    \n
    \n
    \n

    \n

    There are functions that add various kinds of visualizations:

    \n
    \n
    \n

    \n
    \n
    \n

    \n
    \n
    \n

    \n
    \n
    \n

    \n
    \n
    \n

    \n
    \n
    \n

    \n
    \n
    \n

    \n

    Some functions set up user interfaces:

    \n
    \n
    \n

    \n

    Some functions link to external services:

    \n
    \n
    \n

    \n
    \n
    \n

    \n
    \n
    \n

    \n
    \n
    \n

    \n

    Some functions provide simple utilities:

    \n
    \n
    \n

    \n
    \n
    \n

    \n
    \n
    \n

    \n
    \n
    \n

    \n

    There are also functions that are being explored for potential inclusion in the core system:

    \n
    \n
    \n

    \n
    \n
    \n

    \n
    \n
    \n

    \n

    There are also lots of “leading-edge” functions, added as part of research or exploratory development. And for example in pieces I write (including this one), I make a point of having all pictures and other output be backed by “click-to-copy” code that reproduces them—and this code quite often contains functions either from the public Wolfram Function Repository or from (publicly accessible) private deployments.

    \n

    The Paclet Repository Arrives

    \n

    Paclets are a technology we’ve used for more than a decade and a half to distribute updated functionality to Wolfram Language systems in the field. In Version 13 we began the process of providing tools for anyone to create paclets. And since Version 13 we’ve introduced the Wolfram Language Paclet Repository as a centralized repository for paclets:

    \n

    Wolfram Paclet Repository

    \n

    What is a paclet? It’s a collection of Wolfram Language functionality—including function definitions, documentation, external libraries, stylesheets, palettes and more—that can be distributed as a unit, and immediately deployed in any Wolfram Language system.

    \n

    The Paclet Repository is a centralized place where anyone can publish paclets for public distribution. So how does this relate to the Wolfram Function Repository? They are interestingly complementary—with different optimization and different setups. The Function Repository is more lightweight, the Paclet Repository more flexible. The Function Repository is for making available individual new functions, that independently fit into the whole existing structure of the Wolfram Language. The Paclet Repository is for making available larger-scale pieces of functionality, that can define a whole framework and environment of their own.

    \n

    The Function Repository is also fully curated, with every function being reviewed by our team before it is posted. The Paclet Repository is an immediate-deployment system, without pre-publication review. In the Function Repository every function is specified just by its name—and our review team is responsible for ensuring that names are well chosen and have no conflicts. In the Paclet Repository, every contributor gets their own namespace, and all their functions and other material live inside that namespace. So, for example, I contributed the function RandomHypergraph to the Function Repository, which can be accessed just as ResourceFunction[\"RandomHypergraph\"]. But if I had put this function in a paclet in the Paclet Repository, it would have to be accessed as something like PacletSymbol[\"StephenWolfram/Hypergraphs\", \"RandomHypergraph\"].

    \n

    PacletSymbol, by the way, is a convenient way of “deep accessing” individual functions inside a paclet. PacletSymbol temporarily installs (and loads) a paclet so that you can access a particular symbol in it. But more often one wants to permanently install a paclet (using PacletInstall), then explicitly load its contents (using Needs) whenever one wants to have its symbols available. (All the various ancillary elements, like documentation, stylesheets, etc. in a paclet get set up when it is installed.)

    \n

    What does a paclet look like in the Paclet Repository? Every paclet has a home page that typically includes an overall summary, a guide to the functions in the paclet, and some overall examples of the paclet:

    \n

    ProteinVisualization page

    \n

    Individual functions typically have their own documentation pages:

    \n

    AmidePlanePlot page

    \n

    Just like in the main Wolfram Language documentation, there can be a whole hierarchy of guide pages, and there can be things like tutorials.

    \n

    Notice that in examples in paclet documentation, one often sees constructs like . These represent symbols in the paclet, presented in forms like PacletSymbol[\"WolframChemistry/ProteinVisualization\", \"AmidePlanePlot\"] that allow these symbols to be accessed in a “standalone” way. If you directly evaluate such a form, by the way, it’ll force (temporary) installation of the paclet, then return the actual, raw symbol that appears in the paclet:

    \n
    \n
    \n

    \n

    So how does one create a paclet suitable for submission to the Paclet Repository? You can do it purely programmatically, or you can start from File > New > Repository Item > Paclet Repository Item, which launches what amounts to a whole paclet creation IDE. The first step is to specify where you want to assemble your paclet. You give some basic information

    \n

    Submit paclet information

    \n

    then a Paclet Resource Definition Notebook is created, from which you can give function definitions, set up documentation pages, specify what you want your paclet’s home page to be like, etc.:

    \n

    Paclet Resource Definition Notebook

    \n

    There are lots of sophisticated tools that let you create full-featured paclets with the same kind of breadth and depth of capabilities that you find in the Wolfram Language itself. For example, Documentation Tools lets you construct full-featured documentation pages (function pages, guide pages, tutorials, …):

    \n

    Documentation Tools

    \n

    Once you’ve assembled a paclet, you can check it, build it, deploy it privately—or submit it to the Paclet Repository. And once you submit it, it will automatically get set up on the Paclet Repository servers, and within just a few minutes the pages you’ve created describing your paclet will show up on the Paclet Repository website.

    \n

    So what’s in the Paclet Repository so far? There’s a lot of good and very serious stuff, contributed both by teams at our company and by members of the broader Wolfram Language community. In fact, many of the 134 paclets now in the Paclet Repository have enough in them that there’s a whole piece like this that one could write about them.

    \n

    One category of things you’ll find in the Paclet Repository are snapshots of our ongoing internal development projects—many of which will eventually become built-in parts of the Wolfram Language. A good example of this is our LLM and Chat Notebook functionality, whose rapid development and deployment over the past year was made possible by the use of the Paclet Repository. Another example, representing ongoing work from our chemistry team (AKA WolframChemistry in the Paclet Repository) is the ChemistryFunctions paclet, which contains functions like:

    \n
    \n
    \n

    \n

    And, yes, this is interactive:

    \n
    \n
    \n

    \n

    Or, also from WolframChemistry:

    \n
    \n
    \n

    \n

    Another “development snapshot” is DiffTools—a paclet for making and viewing diffs between strings, cells, notebooks, etc.:

    \n
    \n
    \n

    \n

    A major paclet is QuantumFramework—which provides the functionality for our Wolfram Quantum Framework

    \n

    Wolfram Quantum Framework

    \n

    and delivers broad support for quantum computing (with at least a few connections to multiway systems and our Physics Project):

    \n
    \n
    \n

    \n
    \n
    \n

    \n

    Talking of our Physics Project, there are over 200 functions supporting it that are in the Wolfram Function Repository. But there are also paclets, like WolframInstitute/Hypergraph:

    \n
    \n
    \n

    \n

    An example of an externally contributed package is Automata—with more than 250 functions for doing computations related to finite automata:

    \n
    \n
    \n

    \n
    \n
    \n

    \n

    Another contributed paclet is FunctionalParsers, which goes from a symbolic parser specification to an actual parser, here being used in a reverse mode to generate random “sentences”:

    \n
    \n
    \n

    \n

    Phi4Tools is a more specialized paclet, for working with Feynman diagrams in field theory:

    \n
    \n
    \n

    \n
    \n
    \n

    \n
    \n
    \n

    \n

    And, as another example, here’s MaXrd, for crystallography and x-ray scattering:

    \n
    \n
    \n

    \n
    \n
    \n

    \n

    As just one more example, there’s the Organizer paclet—a utility paclet for making and manipulating organizer notebooks. But unlike the other paclets we’ve seen here, it doesn’t expose any Wolfram Language functions; instead, when you install it, it puts a palette in your Palettes list:

    \n
    \n
    \n

    \n

    Organizer

    \n

    Coming Attractions

    \n

    As of today, Version 14 is finished, and out in the world. So what’s next? We have lots of projects underway—some already with years of development behind them. Some extend and strengthen what’s already in the Wolfram Language; some take it in new directions.

    \n

    One major focus is broadening and streamlining the deployment of the language: unifying the way it’s delivered and installed on computers, packaging it so it can be efficiently integrated into other standalone applications, etc.

    \n

    Another major focus is expanding the handling of very large amounts of data by the Wolfram Language—and seamlessly integrating out-of-core and lazy processing.

    \n

    Then of course there’s algorithmic development. Some is “classical”, directly building on the towers of functionality we’ve developed over the decades. Some is more “AI based”. We’ve been creating heuristic algorithms and meta-algorithms ever since Version 1.0—increasingly using methods from machine learning. How far will neural net methods go? We don’t know yet. We’re routinely using them in things like algorithm selection. But to what extent can they help in the heart of algorithms?

    \n

    I’m reminded of something we did back in 1987 in developing Version 1.0. There was a long tradition in numerical analysis of painstakingly deriving series approximations for particular cases of mathematical functions. But we wanted to be able to compute hundreds of different functions to arbitrary precision for any complex values of their arguments. So how did we do it? We generalized from series to rational approximations—and then, in a very “machine-learning-esque” way—we spent months of CPU time systematically optimizing these approximations. Well, we’ve been trying to do the same kind of thing again—though now over more ambitious domains—and now using not rational functions but large neural nets as our basis.

    \n

    We’ve also been exploring using neural nets to “control” precise algorithms, in effect making heuristic choices which either guide or can be validated by the precise algorithms. So far, none of what we’ve produced has outperformed our existing methods, but it seems plausible that fairly soon it will.

    \n

    We’re doing a lot with various aspects of metaprogramming. There’s the project of
    \ngetting LLMs to help in the construction of Wolfram Language code—and in giving comments on it, and in analyzing what went wrong if the code didn’t do what one expected. Then there’s code annotation—where LLMs may help in doing things like predicting the most likely type for something. And there’s code compilation. We’ve been working for many years on a full-scale compiler for the Wolfram Language, and in every version what we have becomes progressively more capable. We’ve been doing some level of automatic compilation in particular cases (particularly ones involving numerical computation) for more than 30 years. And eventually full-scale automatic compilation will be possible for everything. But as of now some of the biggest payoffs from our compiler technology have been for our internal development, where we can now get optimal down-to-the-metal performance simply by compiled (albeit carefully written) Wolfram Language code.

    \n

    One of the big lessons of the surprising success of LLMs is that there’s potentially more structure in meaningful human language than we thought. I’ve long been interested in creating what I’ve called a “symbolic discourse language” that gives a computational representation of everyday discourse. The LLMs haven’t explicitly done that. But they encourage the idea that it should be possible, and they also provide practical help in doing it. And whether the goal is to be able to represent narrative text, or contracts, or textual specifications, it’s a matter of extending the computational language we’ve built to encompass more kinds of concepts and structures.

    \n

    There are typically several kinds of drivers for our continued development efforts. Sometimes it’s a question of continuing to build a tower of capabilities in some known direction (like, for example, solving PDEs). Sometimes the tower we’ve built suddenly lets us see new possibilities. Sometimes when we actually use what we’ve built we realize there’s an obvious way to polish or extend it—or to “double down” on something that we can now see is valuable. And then there are cases where things happening in the technology world suddenly open up new possibilities—like LLMs have recently done, and perhaps XR will eventually do. And finally there are cases where new science-related insights suggest new directions.

    \n

    I had assumed that our Physics Project would at best have practical applications only centuries hence. But in fact it’s become clear that the correspondence it’s defined between physics and computation gives us quite immediate new ways to think about aspects of practical computation. And indeed we’re now actively exploring how to use this to define a new level of parallel and distributed computation in the Wolfram Language, as well as to represent symbolically not only the results of computations but also the ongoing process of computation.

    \n

    One might think that after nearly four decades of intense development there wouldn’t be anything left to do in developing the Wolfram Language. But in fact at every level we reach, there’s ever more that becomes possible, and ever more that can we see might be possible. And indeed this moment is a particularly fertile one, with an unprecedentedly broad waterfront of possibilities. Version 14 is an important and satisfying waypoint. But there are wonderful things ahead—as we continue our long-term mission to make the computational paradigm achieve its potential, and to build our computational language to help that happen.

    \n

    \n

    \n\n

    \n", "category": "Big Picture", "link": "https://writings.stephenwolfram.com/2024/01/the-story-continues-announcing-version-14-of-wolfram-language-and-mathematica/", "creator": "Stephen Wolfram", @@ -330,25 +330,91 @@ "highlights": [] }, { - "title": "Instant Plugins for ChatGPT: Introducing the Wolfram ChatGPT Plugin Kit", - "description": "\"\"This is part of an ongoing series about our LLM-related technology:ChatGPT Gets Its “Wolfram Superpowers”!Instant Plugins for ChatGPT: Introducing the Wolfram ChatGPT Plugin KitThe New World of LLM Functions: Integrating LLM Technology into the Wolfram LanguagePrompts for Work & Play: Launching the Wolfram Prompt RepositoryIntroducing Chat Notebooks: Integrating LLMs into the Notebook Paradigm", - "content": "\"\"\n

    This is part of an ongoing series about our LLM-related technology:ChatGPT Gets Its “Wolfram Superpowers”!Instant Plugins for ChatGPT: Introducing the Wolfram ChatGPT Plugin KitThe New World of LLM Functions: Integrating LLM Technology into the Wolfram LanguagePrompts for Work & Play: Launching the Wolfram Prompt RepositoryIntroducing Chat Notebooks: Integrating LLMs into the Notebook Paradigm

    \n

    \"Instant

    \n

    Build a New Plugin in under a Minute…

    \n

    A few weeks ago, in collaboration with OpenAI, we released the Wolfram plugin for ChatGPT, which lets ChatGPT use Wolfram Language and Wolfram|Alpha as tools, automatically called from within ChatGPT. One can think of this as adding broad “computational superpowers” to ChatGPT, giving access to all the general computational capabilities and computational knowledge in Wolfram Language and Wolfram|Alpha.

    \n

    But what if you want to make your own special plugin, that does specific computations, or has access to data or services that are for example available only on your own computer or computer system? Well, today we’re releasing a first version of a kit for doing that. And building on our whole Wolfram Language tech stack, we’ve managed to make the whole process extremely easy—to the point where it’s now realistic to deploy at least a basic custom ChatGPT plugin in under a minute.

    \n

    There’s some (very straightforward) one-time setup you need—authenticating with OpenAI, and installing the Plugin Kit. But then you’re off and running, and ready to create your first plugin.

    \n
    \n

    To run the examples here for yourself you’ll need:

    \n\n
    \n

    Here’s a very simple example. Let’s say you make up the idea of a “strength” for a word, defining it to be the sum of the “letter numbers” (“a” is 1, “b” is 2, etc.). In Wolfram Language you can compute this as:

    \n
    \n
    \n

    \n

    And for over a decade it’s been standard that you can instantly deploy such a computation as a web API in the Wolfram Cloud—immediately accessible through a web browser, external program, etc.:

    \n
    \n
    \n

    \n

    But today there’s a new form of deployment: as a plugin for ChatGPT. First, you say you need the Plugin Kit:

    \n
    \n
    \n

    \n

    Then you can immediately deploy your plugin. All it takes is:

    \n
    \n
    \n

    \n

    The final step is that you have to tell ChatGPT about your plugin. Within the web interface (as it’s currently configured), select Plugins > Plugin store > Develop your own plugin and insert the URL from the ChatGPTPluginDeployment (which you get by pressing the click-to-copy button ) into the dialog you get:

    \n

    ChatGPT plugin dialog

    \n

    Now everything’s ready. And you can start talking to ChatGPT about “word strengths”, and it’ll call your plugin (which by default is called “WolframCustom”) to compute them:

    \n
    \n
    \n

    \n

    Looking “inside the box” shows the communication ChatGPT had with the plugin:

    \n
    \n
    \n

    \n

    Without the plugin it won’t know what “letter strength” is. But with the plugin, it’ll be able to do all kinds of (rather remarkable) things with it—like this:

    \n
    \n
    \n

    \n

    The embellishment about properties of gnus is charming, but if one opens the boxes one can see how it got its answer—it just started trying different animals (“lion”, “zebra”, “gnu”):

    \n
    \n
    \n

    \n

    Software engineers will immediately notice that the plugin we’ve set up is running against localhost, i.e. it’s executing on your own computer. As we’ll discuss, this is often an incredibly useful thing to be able to do. But you can also use the Plugin Kit to create plugins that execute purely in the Wolfram Cloud (so that, for example, you don’t have to have a Wolfram Engine available on your computer).

    \n

    All you do is use ChatGPTPluginCloudDeploy—then you get a URL in the Wolfram Cloud that you can tell ChatGPT as the location of your plugin:

    \n
    \n
    \n

    \n

    And in fact you can do the whole setup directly in your web browser, without any local Wolfram installation. You just open a notebook in the Wolfram Cloud, and deploy your plugin from there:

    \n

    Wolfram Cloud notebook

    \n

    Let’s do some other examples. For our next example, let’s invent the concept of a “geo influence disk” and then deploy a plugin that renders such a thing (we’ll talk later about some details of what’s being done here):

    \n
    \n
    \n

    \n

    Now we can install this new plugin—and then start asking ChatGPT about “geo influence disks”:

    \n
    \n
    \n

    \n

    ChatGPT successfully calls the plugin, and brings back an image. Somewhat amusingly, it guesses (correctly, as it happens) what a “geo influence disk” is supposed to be. And remember, it can’t see the picture or read the code, so its guess has to be based only on the name of the API function and the question one asks. Of course, it has to effectively understand at least a bit in order to work out how to call the API function—and that x is supposed to be a location, and radius a distance.

    \n

    As another example, let’s make a plugin that sends the user (i.e. the person who deploys the plugin) a text message:

    \n
    \n
    \n

    \n

    Now just say “send me a message”

    \n
    \n
    \n

    \n

    and a text message will arrive—in this case with a little embellishment from ChatGPT:

    \n

    Rhinoceros alert

    \n

    Here’s a plugin that also sends an “alert picture” of an animal that’s mentioned:

    \n
    \n
    \n

    \n

    And, yes, there’s a lot of technology that needs to work to get this to happen:

    \n
    \n
    \n

    \n

    Gnu alert

    \n

    As another example, let’s make a plugin that retrieves personal data of mine—here heart rate data that I’ve been accumulating for several years in a Wolfram databin:

    \n
    \n
    \n

    \n

    Now we can use ChatGPT to ask questions about this data:

    \n
    \n
    \n

    \n

    And with the main Wolfram plugin also installed, we can immediately do actual computations on this data, all through ChatGPT’s “linguistic user interface”:

    \n
    \n
    \n

    \n

    This example uses the Wolfram Data Drop system. But one can do very much the same kind of thing with something like an SQL database. And if one has a plugin set up to access a private database there are truly remarkable things that can be done through ChatGPT with the Wolfram plugin.

    \n

    Plugins That Control Your Own Computer

    \n

    When you use ChatGPT through its standard web interface, ChatGPT is running “in the cloud”—on OpenAI’s servers. But with plugins you can “reach back”—through your web browser—to make things happen on your own, local computer. We’ll talk later about how this works “under the hood”, but suffice it to say now that when you deploy a plugin using ChatGPTPluginDeploy (as opposed to ChatGPTPluginCloudDeploy) the actual Wolfram Language code in the plugin will be run on your local computer. So that means it can get access to local resources on your computer, like your camera, speakers, files, etc.

    \n

    For example, here I’m setting up a plugin to take a picture with my computer’s camera (using the Wolfram Language CurrentImage[ ])—and then blend the picture with whatever color I specify (we’ll talk about the use of CloudExport later):

    \n
    \n
    \n

    \n

    Installing the plugin, I then say to ChatGPT “Just picture me in green!”, and, right then and there, ChatGPT will call the plugin, which gets my computer to take a picture of me—and then blends it with green (complete with my “I wonder if this is going to work” look):

    \n
    \n
    \n

    \n

    OK let’s try a slightly more sophisticated example. Here we’re going to make a plugin to get ChatGPT to put up a notebook on my computer, and start writing content into it. To achieve this, we’re going to define several API endpoints (and we’ll name the whole plugin \"NotebookOperations\"):

    \n
    \n
    \n

    \n

    First, let’s tell ChatGPT to create a new notebook

    \n
    \n
    \n

    \n

    and up pops a new notebook on my screen:

    \n

    My cat notebook

    \n

    If we look at the symbol nb in the Wolfram Language session from which we deployed the plugin, we’ll find out that it was set by the API:

    \n
    \n
    \n

    \n

    Now let’s use some of our other API endpoints to add content to the notebook:

    \n
    \n
    \n

    \n

    Here’s what we get:

    \n

    Cat pictures

    \n

    The text was made up by ChatGPT; the pictures came from doing a web image search. (We could also have used the new ImageSynthesize[ ] function in the Wolfram Language to make de novo cats.)

    \n

    And as a final “bow”, let’s ask ChatGPT to show us an image of the notebook captured from our computer screen with CurrentNotebookImage:

    \n
    \n
    \n

    \n

    We could also add another endpoint to publish the notebook to the cloud using CloudPublish, and maybe to send the URL in an email.

    \n

    We could think of the previous example as accumulating results in a notebook. But we can also just accumulate results in the value of a Wolfram Language symbol. Here we initialize the symbol result to be an empty list. Then we define an API that appends to this list, but we give a prompt that says to only do this appending when we have a single-word result:

    \n
    \n
    \n

    \n

    Let’s set up an “exercise” for ChatGPT:

    \n
    \n
    \n

    \n

    At this point, result is still empty:

    \n
    \n
    \n

    \n

    Now let’s ask our first question:

    \n
    \n
    \n

    \n

    ChatGPT doesn’t happen to directly show us the answer. But it calls our API and appends it to result:

    \n
    \n
    \n

    \n

    Let’s ask another question:

    \n
    \n
    \n

    \n

    Now result contains both answers:

    \n
    \n
    \n

    \n

    And if we put Dynamic[result] in our notebook, we’d see this dynamically change whenever ChatGPT calls the API.

    \n

    In the last example, we modified the value of a symbol from within ChatGPT. And if we felt brave, we could just let ChatGPT evaluate arbitrary code on our computer, for example using an API that calls ToExpression. But, yes, giving ChatGPT the ability to execute arbitrary code of its own making does seem to open us up to a certain “Skynet risk” (and makes us wonder all the more about “AI constitutions” and the like).

    \n

    But much more safely than executing arbitrary code, we can imagine letting ChatGPT effectively “root around” in our filesystem. Let’s set up the following plugin:

    \n
    \n
    \n

    \n

    First we set a directory that we want to operate in:

    \n
    \n
    \n

    \n

    Now let’s ask ChatGPT about the files there:

    \n
    \n
    \n

    \n

    With the Wolfram plugin we can get it to make a pie chart of those file types:

    \n
    \n
    \n

    \n

    Now we ask it to do something very “LLM-ey”, and to summarize the contents of each file (in the API we used Import to import plaintext versions of files):

    \n
    \n
    \n

    \n

    There are all sorts of things one can do. Here’s a plugin to compute ping times from your computer:

    \n
    \n
    \n

    \n
    \n
    \n

    \n

    Or, as another example, you can set up a plugin that will create scheduled tasks to provide email (or text, etc.) reminders at specified times:

    \n
    \n
    \n

    \n

    ChatGPT dutifully queues up the tasks:

    \n
    \n
    \n

    \n

    Then every 10 seconds or so, into my mailbox pops a (perhaps questionable) animal joke:

    \n

    Animal jokes

    \n

    As a final example, let’s consider the local-to-my-computer task of audibly playing a tune. First we’ll need a plugin that can decode notes and play them (the \"ChatGPTPluginDeploy\" is there to tell ChatGPT the plugin did its job—because ChatGPT has no way to know that by itself):

    \n
    \n
    \n

    \n

    Here we give ChatGPT the notes we want—and, yes, this immediately plays the tune on my computer:

    \n

    \n
    \n \n

    \n

    And now—as homage to a famous fictional AI—let’s try to play another tune:

    \n

    \n
    \n \n

    \n

    And, yes, ChatGPT has come up with some notes, and packaged them up for the plugin; then the plugin played them:

    \n

    \n
    \n \n

    \n

    And this works too:

    \n

    \n
    \n \n

    \n

    But… wait a minute! What’s that tune? It seems ChatGPT can’t yet quite make the same (dubious) claim HAL does:

    \n

    “No [HAL] 9000 computer has ever made a mistake or distorted information. We are all, by any practical definition of the words, foolproof and incapable of error.”

    \n

    How It All Works

    \n

    We’ve now seen lots of examples of using the ChatGPT Plugin Kit. But how do they work? What’s under the hood? When you run ChatGPTPluginDeploy you’re basically setting up a Wolfram Language function that can be called from inside ChatGPT when ChatGPT decides it’s needed. And to make this work smoothly turns out to be something that uses a remarkable spectrum of unique capabilities of Wolfram Language—dovetailed with certain “cleverness” in ChatGPT.

    \n

    From a software engineering point of view, a ChatGPT plugin is fundamentally one or more web APIs—together with a “manifest” that tells ChatGPT how to call these APIs. So how does one set up a web API in Wolfram Language? Well, a decade ago we invented a way to make it extremely easy.

    \n

    Like everything in Wolfram Language, a web API is represented by a symbolic expression, in this case of the form APIFunction[…]. What’s inside the APIFunction? There are two pieces. A piece of Wolfram Language code that implements the function one wants, together with a specification for how the strings that will actually be passed to the APIFunction (say from a web API) should be interpreted before feeding them to the Wolfram Language code.

    \n

    Here’s a little piece of Wolfram Language code, in this case for negating a color, then making it lighter:

    \n
    \n
    \n

    \n

    If we wanted to, we could refactor this as a “pure function” applied to two arguments:

    \n
    \n
    \n

    \n

    On its own the pure function is just a symbolic expression that evaluates to itself:

    \n
    \n
    \n

    \n

    If we want to, we can name the arguments of the pure function, then supply them in an association () with their names as keys:

    \n
    \n
    \n

    \n

    But let’s say we want to call our function from a web API. The parameters in the web API are always strings. So how can we convert from a string (like \"lime green\") to a symbolic expression that Wolfram Language can understand? Well, we have to use the natural language understanding capabilities of Wolfram Language.

    \n

    Here’s an example, where we’re saying we want to interpret a string as a color:

    \n
    \n
    \n

    \n

    What really is that color swatch? Like everything else in Wolfram Language, it’s just a symbolic expression:

    \n
    \n
    \n

    \n

    OK, now we’re ready to package this all up into an APIFunction. The first argument says the API we’re representing has two parameters, and describes how we want to interpret these. The second argument gives the actual Wolfram Language function that the API computes. On its own, the APIFunction is just a symbolic expression that evaluates to itself:

    \n
    \n
    \n

    \n

    But if we supply values for the parameters (here using an association) it’ll evaluate:

    \n
    \n
    \n

    \n

    So far all this is just happening inside our Wolfram Language session. But to get an actual web API we just have to “cloud deploy” our APIFunction:

    \n
    \n
    \n

    \n

    Now we can call this web API, say from a web browser:

    \n

    Web API

    \n

    And, yes, that’s the symbolic expression result. If we’d wanted something visual, we could tell the APIFunction to give its results, say as a PNG:

    \n
    \n
    \n

    \n

    And now it’ll show up as an image in a web browser:

    \n

    Purple box in web browser

    \n

    (Note that CloudDeploy deploys a web API that by default has permissions set so that only I can run it. If you use CloudPublish instead, anyone will be able to run it.)

    \n

    OK, so how do we set up our web API so it can be called as a ChatGPT plugin? One immediate issue is that at the simplest level ChatGPT just deals with text, so we’ve somehow got to convert our result to text. So let’s do a little Wolfram Language programming to achieve that. Here’s a list of values and names of common colors from the Wolfram Knowledgebase:

    \n
    \n
    \n

    \n

    Of course, we know about many other collections of named colors too, but let’s not worry about that here:

    \n
    \n
    \n

    \n

    Now we can use Nearest to find which common color is nearest to the color we’ve got:

    \n
    \n
    \n

    \n

    Now let’s put this into an APIFunction (we’ve “iconized” the list of colors here; we could also have defined a separate function for finding nearest colors, which would automatically be brought along by CloudDeploy):

    \n
    \n
    \n

    \n

    Now we’re ready to use ChatGPTPluginDeploy. The way ChatGPT plugins work, we’ve got to give a name to the “endpoint” corresponding to our API. And this name—along with the names we used for the parameters in our API—will be used by ChatGPT to figure out when and how to call our plugin. But in this example, we just want to use some kind of unique name for the endpoint, so we’ll be able to refer to it in our chat without ChatGPT confusing it with something else. So let’s call it ColorMangle. So now let’s do the deployment:

    \n
    \n
    \n

    \n

    Everything we’ve said so far about APIFunction and how it’s called works the same in ChatGPTPluginDeploy and ChatGPTPluginCloudDeploy. But what we’ll say next is different. Because ChatGPTPluginDeploy sets up the API function to execute on your local computer, while ChatGPTPluginCloudDeploy sets it up to run in the Wolfram Cloud (or it could be a Wolfram Enterprise Private Cloud, etc.).

    \n

    There are advantages and disadvantages to both local and cloud deployment. Running locally allows you to get access to local features of your computer, like camera, filesystem, etc. Running in the cloud allows you to let other people also run your plugin (though, currently, unless you register your plugin with OpenAI, only a limited number of people will be able to install your plugin at any one time).

    \n

    But, OK, let’s talk about local plugin deployment. ChatGPTPluginDeploy effectively sets up a minimal web server on your computer (implemented with 10 lines of Wolfram Language code), running on a port that ChatGPTPluginDeploy chooses, and calling the Wolfram Engine with your API function whenever it receives a request to the API’s URL.

    \n

    Here’s the operating system socket that ChatGPTPluginDeploy is using (and, yes, the Wolfram Language represents sockets—like everything else—as symbolic expressions):

    \n
    \n
    \n

    \n

    OK, but how does ChatGPT know about your API? First, you have to tell it the port you’re using, which you do through the ChatGPT UI (Plugins > Plugin store > Develop your own plugin). You can find the port by clicking the icon in the ChatGPTPluginDeployment object, or programmatically with:

    \n
    \n
    \n

    \n

    You enter this URL, then tell ChatGPT to “Find manifest file”:

    \n

    Find manifest file

    \n

    Let’s look at what it found:

    \n

    \n

    It’s a “manifest” that tells it about the plugin you’re installing. We didn’t specify much, so most things here are just defaults. But an important piece of the manifest is the part that gives the URL for API spec: http://localhost:59353/.well-known/openapi.json

    \n

    And going there we find this “OpenAPI spec”:

    \n

    Validated OpenAPI spec

    \n

    Finally, click Install localhost plugin, and the plugin will show up in the list of installed plugins in your ChatGPT session:

    \n
    \n
    \n

    \n

    And when ChatGPT starts with the plugin installed, it includes an extra piece in its “system prompt”, that lets it “learn” how to call the plugin:

    \n

    System prompt

    \n

    So now we’re ready to use the plugin:

    \n
    \n
    \n

    \n

    And, yes, it works. But there’s a bit of magic here. Somehow ChatGPT had to “take apart” what we’d asked, realize that the API endpoint called ColorMangle was relevant, then figure out that its color parameter should be “lime green”, and its level should be “0.5”. Opening the box, we can see what it did:

    \n
    \n
    \n

    \n

    And now we can start using “color mangling” in other places—though ChatGPT hastens to tell us that “color mangling” is a “fictional operation”, perhaps lest it’s accused of disrespecting a country’s flag colors:

    \n
    \n
    \n

    \n

    In the case we’re dealing with here, ChatGPT manages to correctly “wire up” fragments of text to appropriate parameters in our API. And it does that (rather remarkably) just from the scrap of information it gleans from the names we used for the parameters (and the name we gave the endpoint).

    \n

    But sometimes we have to tell it a bit more, and we can do that by specifying a prompt for the plugin inside ChatGPTPluginDeploy:

    \n
    \n
    \n

    \n

    Now we don’t have to just talk about colors:

    \n
    \n
    \n

    \n

    At first, it didn’t successfully “untangle” the “colors of Iceland”, but then it corrected itself, and got the answers. (And, yes, we might have been able to avoid this by writing a better prompt.)

    \n

    And actually, there are multiple levels of prompts you can give. You can include a fairly long prompt for the whole plugin. Then you can give shorter prompts for each individual API endpoint. And finally, you can give prompts to help ChatGPT interpret individual parameters in the API, for example by replacing \"color\" \"Color\" with something like:

    \n
    \n
    \n

    \n

    When you set up a plugin, it can contain many endpoints, that do different things. And—in addition to sharing prompts—one reason this is particularly convenient is that (at least right now, for security reasons) any given subdomain can have only one associated plugin. So if one wants to have a range of functionality, this has to be implemented by having different endpoints.

    \n

    For ChatGPTPluginCloudDeploy the one-plugin-per-subdomain limit currently means that any given user can only deploy one cloud plugin at a time. But for local plugins the rules are a bit different, and ChatGPTPluginDeploy can deploy multiple plugins by just having them run on different ports—and indeed by default ChatGPTPluginDeploy just picks a random unused port every time you call it.

    \n

    But how does a local plugin really work? And how does it “reach back” to your computer? The magic is basically happening in the ChatGPT web front end. The way all plugins work is that when the plugin is going to be called, the token-at-a-time generation process of the LLM stops, and the next action of the “outer loop” is to call the plugin—then add whatever result it gives to the string that will be fed to the LLM at the next step. Well, in the case of a local plugin, the outer loop uses JavaScript in the ChatGPT front end to send a request locally on your computer to the localhost port you specified. (By the way, once ChatGPTPluginDeploy opens a port, it’ll stay open until you explicitly call Close on its socket object.)

    \n

    When one’s using local plugins, they’re running their Wolfram Language code right in the Wolfram Language session from which the plugin was deployed. And this means, for example, that (as we saw in some cases above) values that get set in one plugin call are still there when another call is made.

    \n

    In the cloud it doesn’t immediately work this way, because each API call is effectively independent. But it’s straightforward to save state in cloud objects (say using CloudPut, or with CloudExpression, etc.) so that one can have “persistent memory” across many API calls.

    \n

    The LLM inside ChatGPT is (currently) set up to deal only with text. So what happens with images? Well, plugins can put them into the Wolfram Cloud, then pass their URLs to ChatGPT. And ChatGPT is set up to be able to render directly certain special kinds of things—like images.

    \n

    So—as we saw above—to “output” an image (or several) from a plugin, we can use CloudExport to put each image in a cloud object, say in PNG format. And then ChatGPT, perhaps with some prompting, can show the image inline in its output.

    \n

    There’s some slightly tricky “plumbing” in deploying Wolfram Language plugins in ChatGPT, most of which is handled automatically in ChatGPTPluginDeploy and ChatGPTPluginCloudDeploy. But by building on the fundamental symbolic structure of the Wolfram Language (and its integrated deployment capabilities) it’s remarkably straightforward to create elaborate custom Wolfram Language plugins for ChatGPT, and to contribute to the emerging ecosystem around LLMs and Wolfram Language.

    \n", - "category": "Artificial Intelligence", - "link": "https://writings.stephenwolfram.com/2023/04/instant-plugins-for-chatgpt-introducing-the-wolfram-chatgpt-plugin-kit/", - "creator": "Stephen Wolfram", - "pubDate": "Thu, 27 Apr 2023 20:40:34 +0000", - "enclosure": "https://content.wolfram.com/sites/43/2023/04/hal9000.wav", - "enclosureType": "audio/wav", - "image": "https://content.wolfram.com/sites/43/2023/04/hal9000.wav", + "title": "US Survey Foot", + "description": "\"Subway", + "content": "\"Subway", + "category": "", + "link": "https://xkcd.com/2888/", + "creator": "", + "pubDate": "Wed, 31 Jan 2024 05:00:00 -0000", + "enclosure": "", + "enclosureType": "", + "image": "", "id": "", "language": "en", "folder": "", - "feed": "wolfram", + "feed": "xkcd", "read": false, "favorite": false, "created": false, "tags": [], - "hash": "89dc200fa2e975a5bf556c649003dd88", + "hash": "5bfde739e65d83af37b6dfc4d1be503a", + "highlights": [] + }, + { + "title": "Minnesota", + "description": "\"In", + "content": "\"In", + "category": "", + "link": "https://xkcd.com/2887/", + "creator": "", + "pubDate": "Mon, 29 Jan 2024 05:00:00 -0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "en", + "folder": "", + "feed": "xkcd", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "8914bd0de5efc0050c067768f945eedb", + "highlights": [] + }, + { + "title": "Fast Radio Bursts", + "description": "\"Dr.", + "content": "\"Dr.", + "category": "", + "link": "https://xkcd.com/2886/", + "creator": "", + "pubDate": "Fri, 26 Jan 2024 05:00:00 -0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "en", + "folder": "", + "feed": "xkcd", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "a1bb648e153357e24f27473afeaa2904", + "highlights": [] + }, + { + "title": "Spelling", + "description": "\"Any", + "content": "\"Any", + "category": "", + "link": "https://xkcd.com/2885/", + "creator": "", + "pubDate": "Wed, 24 Jan 2024 05:00:00 -0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "en", + "folder": "", + "feed": "xkcd", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "b49b8946b555d935a1744e1e35019e94", "highlights": [] }, { @@ -540,6 +606,336 @@ "image": null, "description": "xkcd.com: A webcomic of romance and math humor.", "items": [ + { + "title": "Research Account", + "description": "\"Focus", + "content": "\"Focus", + "category": "", + "link": "https://xkcd.com/2894/", + "creator": "", + "pubDate": "Wed, 14 Feb 2024 05:00:00 -0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "en", + "folder": "", + "feed": "xkcd", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "6cd0df057927346502b1afe5bd416c2e", + "highlights": [] + }, + { + "title": "Sphere Tastiness", + "description": "\"Baseballs", + "content": "\"Baseballs", + "category": "", + "link": "https://xkcd.com/2893/", + "creator": "", + "pubDate": "Mon, 12 Feb 2024 05:00:00 -0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "en", + "folder": "", + "feed": "xkcd", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "8485fc9edeb7ed36f0fad43c3577b8cd", + "highlights": [] + }, + { + "title": "Banana Prices", + "description": "\"It's", + "content": "\"It's", + "category": "", + "link": "https://xkcd.com/2892/", + "creator": "", + "pubDate": "Fri, 09 Feb 2024 05:00:00 -0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "en", + "folder": "", + "feed": "xkcd", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "5a7ac9b37983bba2edeec57ffb1fc72c", + "highlights": [] + }, + { + "title": "Log Cabin", + "description": "\"I'm", + "content": "\"I'm", + "category": "", + "link": "https://xkcd.com/2891/", + "creator": "", + "pubDate": "Wed, 07 Feb 2024 05:00:00 -0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "en", + "folder": "", + "feed": "xkcd", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "fe3770509bfd4a79429c2eb65047c6f4", + "highlights": [] + }, + { + "title": "Relationship Advice", + "description": "\"Good", + "content": "\"Good", + "category": "", + "link": "https://xkcd.com/2890/", + "creator": "", + "pubDate": "Mon, 05 Feb 2024 05:00:00 -0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "en", + "folder": "", + "feed": "xkcd", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "c23dd21db2e0f944863837c1088c25cb", + "highlights": [] + }, + { + "title": "Greenhouse Effect", + "description": "\"Once", + "content": "\"Once", + "category": "", + "link": "https://xkcd.com/2889/", + "creator": "", + "pubDate": "Fri, 02 Feb 2024 05:00:00 -0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "en", + "folder": "", + "feed": "xkcd", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "ba6481e8455e0a70f93c50990f71d6a2", + "highlights": [] + }, + { + "title": "OSTE – Le scanner de vulns qui combine Nikto, ZAP, Nuclei, SkipFish, et Wapiti", + "description": "OSTE est un scanner de sécurité open-source qui simplifie les tests dynamiques des applications, combinant plusieurs scanners DAST tels que Nikto Scanner, OWASP ZAP, Nuclei, SkipFish et Wapiti. Il se concentre sur les vulnérabilités d'injection Web et offre une interface conviviale. OSTE fonctionne sur plusieurs plateformes, principalement Kali Linux.", + "content": "

    \"\"

    \n

    Si vous vous intéressez un peu à la sécurité informatique, je vous présente aujourd’hui OSTE qui est ce qu’on pourrait appeler un Metascanner.

    \n\n\n\n
    \r\n

    Alors qu’est-ce qu’un Metascanner ?

    \n\n\n\n

    Eh bien il s’agit d’un scanner de vulnérabilité web qui combine différents outils tels que Nikto, zap de l’OWASP, Nucléi, SkipFish ou encore Wapiti.

    \n\n\n\n

    L’intérêt de cet outil c’est qu’il offre une interface graphique très user friendly qui permet de consulter les rapports de scan, mais également de les lancer. Injections SQL, XSS, XML, HTML ou encore des injections liées à des commandes spécifiques au système d’exploitation visé. Chacun des scanners DAST (Dynamic Application Security Testing) intégrés fournit des listes de vulnérabilités pour vous aider à identifier et corriger les problèmes potentiels.

    \n\n\n
    \n
    \"\"
    \n\n\n

    Pour l’installer, vous aurez besoin de tous les outils que je viens de vous citer, mais si vous utilisez Kali Linux vous n’aurez pas de soucis puisque tout ça est déjà présent dans la distrib. Sinon il faudra les installer manuellement.

    \n\n\n\n
    \r\n

    Ensuite il ne vous restera plus qu’à cloner le dépôt sur votre machine et à lancer la commande

    \n\n\n\n
    python3 metascan.py
    \n\n\n\n

    Vous pourrez alors lancer des scans, charger les résultats, les exporter, les consulter directement depuis l’interface graphique.

    \n\n\n\n

    Vous l’aurez compris, OSTE est un outil fantastique pour simplifier l’évaluation de la cyber sécurité. N’oubliez pas quand même que c’est destiné à usages éducatifs ou dans le cadre de mission d’audits pour lesquelles vous avez été mandaté.

    \n\n\n\n

    Si vous voulez en savoir plus, cliquez ici.

    \n", + "category": "Sécurité", + "link": "https://korben.info/scanner-oste-tests-securite-dynamiques-applications-web.html", + "creator": "Korben", + "pubDate": "Sun, 28 Jan 2024 08:00:00 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "b1c8d0b3098030bb9417cfa55fdeab34", + "highlights": [] + }, + { + "title": "Fast Radio Bursts", + "description": "\"Dr.", + "content": "\"Dr.", + "category": "", + "link": "https://xkcd.com/2886/", + "creator": "", + "pubDate": "Fri, 26 Jan 2024 05:00:00 -0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "en", + "folder": "", + "feed": "xkcd", + "read": true, + "favorite": false, + "created": false, + "tags": [], + "hash": "a1bb648e153357e24f27473afeaa2904", + "highlights": [] + }, + { + "title": "Spelling", + "description": "\"Any", + "content": "\"Any", + "category": "", + "link": "https://xkcd.com/2885/", + "creator": "", + "pubDate": "Wed, 24 Jan 2024 05:00:00 -0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "en", + "folder": "", + "feed": "xkcd", + "read": true, + "favorite": false, + "created": false, + "tags": [], + "hash": "b49b8946b555d935a1744e1e35019e94", + "highlights": [] + }, + { + "title": "Log Alignment", + "description": "\"A", + "content": "\"A", + "category": "", + "link": "https://xkcd.com/2884/", + "creator": "", + "pubDate": "Mon, 22 Jan 2024 05:00:00 -0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "en", + "folder": "", + "feed": "xkcd", + "read": true, + "favorite": false, + "created": false, + "tags": [], + "hash": "7c9d64fa83f8dd23aff0c3665d4dc45b", + "highlights": [] + }, + { + "title": "Astronaut Guests", + "description": "\"They", + "content": "\"They", + "category": "", + "link": "https://xkcd.com/2883/", + "creator": "", + "pubDate": "Fri, 19 Jan 2024 05:00:00 -0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "en", + "folder": "", + "feed": "xkcd", + "read": true, + "favorite": false, + "created": false, + "tags": [], + "hash": "89c29cdb66875c94389b32192aaa1b8a", + "highlights": [] + }, + { + "title": "Net Rotations", + "description": "\"For", + "content": "\"For", + "category": "", + "link": "https://xkcd.com/2882/", + "creator": "", + "pubDate": "Wed, 17 Jan 2024 05:00:00 -0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "en", + "folder": "", + "feed": "xkcd", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "de7a58fbe886625191bb9891b106de3a", + "highlights": [] + }, + { + "title": "Bug Thread", + "description": "\"After", + "content": "\"After", + "category": "", + "link": "https://xkcd.com/2881/", + "creator": "", + "pubDate": "Mon, 15 Jan 2024 05:00:00 -0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "en", + "folder": "", + "feed": "xkcd", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "31465c1cdb150e82ace09e15b9117d70", + "highlights": [] + }, + { + "title": "Sheet Bend", + "description": "\"A", + "content": "\"A", + "category": "", + "link": "https://xkcd.com/2880/", + "creator": "", + "pubDate": "Fri, 12 Jan 2024 05:00:00 -0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "en", + "folder": "", + "feed": "xkcd", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "223f73d12f261e2676b0fbfde18a38c1", + "highlights": [] + }, + { + "title": "Like This One", + "description": "\"A", + "content": "\"A", + "category": "", + "link": "https://xkcd.com/2879/", + "creator": "", + "pubDate": "Wed, 10 Jan 2024 05:00:00 -0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "en", + "folder": "", + "feed": "xkcd", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "427057f67587d6fcaba520293ac0d0c4", + "highlights": [] + }, { "title": "Supernova", "description": "\"They're", @@ -3479,6 +3875,820 @@ "image": "\n\t", "description": "Upgrade your mind", "items": [ + { + "title": "LiteLLM – Pour discuter avec toutes les API LLM en utilisant la syntaxe OpenAI", + "description": "LiteLLM est une bibliothèque Python qui simplifie l'interaction avec diverses API de modèles de langage (LLM) en utilisant le format de l'API OpenAI. Elle permet l'utilisation de fonctions telles que la génération de texte et la traduction. L'installation se fait via `pip install litellm`, et son utilisation nécessite de définir des variables d'environnement et de créer un objet LiteLLM. LiteLLM supporte également un proxy pour rediriger les requêtes vers le modèle souhaité et offre des fonctionnalités supplémentaires comme le streaming, la gestion des exceptions, et le suivi des coûts. Plus d'informations sont disponibles sur la page GitHub de LiteLLM.", + "content": "

    \"\"

    \n

    Si vous codez en Python autour d’API de LLM comme celle d’OpenAI, d’Anthropic ou encore de Huggingface…etc., je vous présente LiteLLM qui risque de vous faire gagner pas mal de temps.

    \n\n\n\n
    \r\n

    Il s’agit d’une lib Python capable d’interagir avec tout un tas d’API en utilisant le format de celle d’OpenAI. Elle fournit une interface simple et uniformisée pour appeler ces modèles , ce qui va vous faciliter leur utilisation pour des choses comme de la génération de texte, de la traduction ou encore du chat…

    \n\n\n\n

    Pour l’installer, rien de plus simple :

    \n\n\n\n
    pip install litellm
    \n\n\n\n

    Ensuite, y’a plus qu’à créer un objet LiteLLM dans votre code, en lui fournissant l’ID et le nom du modèle à utiliser. Par exemple pour vous connecter à OpenAI, le code sera le suivant :

    \n\n\n\n
    from litellm import completion\nimport os\n\n## set ENV variables\nos.environ[\"OPENAI_API_KEY\"] = \"your-api-key\"\n\nresponse = completion(\n  model=\"gpt-3.5-turbo\", \n  messages=[{ \"content\": \"Hello, how are you?\",\"role\": \"user\"}]\n)
    \n\n\n\n

    Pour Claude 2, ça sera ça :

    \n\n\n\n
    from litellm import completion\nimport os\n\n## set ENV variables\nos.environ[\"ANTHROPIC_API_KEY\"] = \"your-api-key\"\n\nresponse = completion(\n  model=\"claude-2\", \n  messages=[{ \"content\": \"Hello, how are you?\",\"role\": \"user\"}]\n)
    \n\n\n\n
    \r\n

    Pour utiliser Ollama, ça donnerait également ça :

    \n\n\n\n
    from litellm import completion\n\nresponse = completion(\n            model=\"ollama/llama2\", \n            messages = [{ \"content\": \"Hello, how are you?\",\"role\": \"user\"}], \n            api_base=\"http://localhost:11434\"\n)
    \n\n\n\n

    Donc pas grand-chose qui change.

    \n\n\n\n

    Vous l’aurez donc compris, LiteLLM permet de pondre un seul et unique code, mais pour discuter avec tous les fournisseurs d’IA du moment (et les logiciels libres existants)

    \n\n\n
    \n
    \"\"
    \n\n\n

    Y’a la possibilité d’avoir du stream sur les réponses (c’est à dire, le texte qui s’affiche au fur et à mesure), de la gestion des exceptions, du log, sans oublier du calcul de coût et l’usage que vous pouvez avoir de ces API afin de ne pas éclater votre compte en banque.

    \n\n\n\n

    LiteLLM intègre également un proxy OpenAI pour rediriger vos requêtes vers le modèle de votre choix. Pour l’installer :

    \n\n\n\n
    pip install 'litellm[proxy]'
    \n\n\n\n

    Lancez ensuite le proxy avec le modèle de votre choix :

    \n\n\n\n
    litellm --model huggingface/bigcode/starcoder
    \n\n\n\n
    \r\n

    Et lui passer vos requêtes dans le code python directement :

    \n\n\n\n
    import openai # openai v1.0.0+\nclient = openai.OpenAI(api_key=\"anything\",base_url=\"http://0.0.0.0:8000\") # set proxy to base_url\n# request sent to model set on litellm proxy, `litellm --model`\nresponse = client.chat.completions.create(model=\"gpt-3.5-turbo\", messages = [\n    {\n        \"role\": \"user\",\n        \"content\": \"this is a test request, write a short poem\"\n    }\n])\n\nprint(response)
    \n\n\n\n

    Si LiteLLM vous intéresse, vous trouverez toutes les infos sur la page Github ainsi que les endpoints ici.

    \n", + "category": "Développement", + "link": "https://korben.info/utiliser-litellm-pour-interagir-avec-api-llm-syntaxe-openai.html", + "creator": "Korben", + "pubDate": "Wed, 14 Feb 2024 08:00:00 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "3cf0c76da3f58794631c12dfc89ec6e1", + "highlights": [] + }, + { + "title": "Born of Bread : jeu de pain, jeu de vilain", + "description": "Nous avons du pain sur la planche ! Encore une fois il s’agit de sauver le monde bien sûr, mais jamais, ô grand jamais, nous n’avions comme protagoniste une miche de pain. Ça, c’est original ! Préparez-vous à vivre une jolie aventure avec Tipain et ses co-pains. 😉 Dans la … Suite", + "content": "

    \"\"

    \n

    Nous avons du pain sur la planche ! Encore une fois il s’agit de sauver le monde bien sûr, mais jamais, ô grand jamais, nous n’avions comme protagoniste une miche de pain. Ça, c’est original ! Préparez-vous à vivre une jolie aventure avec Tipain et ses co-pains. 😉

    \n\n\n\n
    \n\n
    \n\n\n\n
    \r\n

    Dans la lignée des Paper Mario, dont il est directement inspiré, Born of Bread est un mélange de RPG (on recrute une équipe qu’on équipe, qu’on fait évoluer, on a des combats en tour par tour avec des QTE pour optimiser les effets…) et d’exploration/aventure avec des dialogues bien rigolos. Si vous aimez les jeux de mots et le pain, vous allez être servi !

    \n\n\n\n

    Sur le plan artistique, c’est vraiment cool : graphismes léchés, un mélange 2D/3D de toute beauté (même si ça n’a aucun sens d’avoir des personnages plats, contrairement à Paper Mario), de belles animations, de chouettes musiques, des cinématiques bien foutues, on est vite immergé dans cet univers absurde.

    \n\n\n\n
    \"\"
    \n\n\n\n

    Pour les connaisseurs, le gameplay ne propose rien de nouveau (hormis quelques délires à base de « spectateurs » lors de nos bastons) mais c’est une recette (miam) efficace et éprouvée, ça fonctionne vraiment très bien. En dehors de quelques énigmes un peu bizarres, les dialogues et affrontements s’enchaînent de manière fluide, le scénario est bien rythmé, c’est top !

    \n\n\n\n

    J’ai été embêté par quelques bugs et plantages, il faut espérer que les développeurs sortent un patch pour que ce soit parfait. 🤞 L’autre truc « un peu » gênant, c’est que finalement, le jeu reste en-dessous de ses modèles. Pour être honnête, si vous avez une Switch, j’aurais tendance à vous conseiller de choper Super Mario RPG ou d’attendre le remake de Paper Mario : La Porte Millénaire.

    \n\n\n\n
    \"\"
    \n\n\n\n
    \r\n

    Mais si vous n’avez pas de console Nintendo, alors Born of Bread est un très bon paliatif, une aventure qui se mange sans faim ! C’est complètement décalé, fun, frais, d’une durée de vie maîtrisée (environ 15h), une belle découverte ! Je lui donne 🥖🥖🥖🥖🥖🥖🥖/10

    \n\n\n\n

    Acheter sur Steam, Epic Games, Nintendo Switch, Xbox, Playstation

    \n\n\n\n
    \"\"
    \n", + "category": "Infos", + "link": "https://korben.info/test-born-of-bread-avis.html", + "creator": "Remouk", + "pubDate": "Tue, 13 Feb 2024 20:01:46 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "6fd135f4f5cb85d4d415c40fa1c284c6", + "highlights": [] + }, + { + "title": "Hack – La police conçue pour le code source", + "description": "Récemment présentée, la police de caractères \"Luciole\" améliore la lisibilité pour les malvoyants. Découvrez aussi \"Hack\", une police open source créée pour les développeurs, offrant de la clarté pour coder la nuit, supportant toutes langues et glyphes, y compris le cyrillique et le grec. Avec son design et ses caractéristiques typographiques, elle rend la lecture de code plus confortable. Disponible au téléchargement et à l'essai en ligne.", + "content": "

    \"\"

    \n

    Y’a pas si longtemps, je vous ai présenté la police de caractères Luciole qui permet de donner beaucoup de lisibilités aux personnes mal voyantes.

    \n\n\n\n
    \r\n

    Et bien dans le même esprit, je vous fais découvrir aujourd’hui Hack. Cette police de caractère libre au nom dénué d’originalité a été conçue pour soulager les petits neuneuils des développeurs qui aiment coder jusqu’au bout de la nuit. Hack intègre des versions gras, italique, regular…etc. avec un support de toutes les langues et tous les glyphes possibles y compris le cyrillique, le grec…etc.

    \n\n\n
    \n
    \"\"
    \n\n\n

    Son design améliore la lisibilité du code, avec du contraste, une bonne hauteur des lettres, un zéro rempli pour ne pas le confondre avec le 0 majuscule, un bon espacement…etc. Tout est dans la subtilité, ça se touche beaucoup la nouille typographique, mais vous devriez quand même l’essayer, car ça ne peut être que plus confortable que ce bon vieil Arial que vous collez partout.

    \n\n\n
    \n
    \"\"
    \n\n\n

    Vous pouvez la télécharger ici et même la tester dans le playground ici selon votre langage de dev préféré et le style de votre IDE (mode sombre, clair…etc.)

    \n", + "category": "Développeurs", + "link": "https://korben.info/police-de-caractere-hack-optimisee-pour-le-code-source.html", + "creator": "Korben", + "pubDate": "Tue, 13 Feb 2024 08:00:00 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "074fbb2dfc5f9bb7a7eafed2a08c9083", + "highlights": [] + }, + { + "title": "PiPHero – Le Picture in Picture sous macOS", + "description": "La fonctionnalité Picture In Picture (PiP), utilisée pour afficher une vidéo dans un coin de l'écran tout en faisant autre chose, est désormais disponible sur Mac avec PiPHero, un logiciel gratuit qui s'intègre dans la barre de menu et permet de choisir et redimensionner des fenêtres à afficher en PiP.", + "content": "

    \"\"

    \n

    Bon, si vous regardez des vidéos Youtube ou Netflix, notamment sur votre smartphone, vous connaissez sans doute la PiP (Picture In Picture) qui consiste à afficher une petite fenêtre vidéo dans un coin de l’écran pendant que vous faites autre chose sur l’appareil.

    \n\n\n\n
    \r\n

    Et bien nouvelle, vous allez pouvoir faire pareil sur votre Mac grâce à PiPHero, un freeware qui une fois installé, se loge dans la barre de menu, et permet de sélectionner une fenêtre ou un écran à placer dans un coin.

    \n\n\n
    \n
    \"\"
    \n\n\n

    Vous pouvez également choisir sa taille et en mettre plusieurs.

    \n\n\n\n

    Bref, super pratique pour surveiller une page web ou mater une vidéo, sans avoir à garder la fenêtre focus.

    \n\n\n
    \n
    \"\"
    ", + "category": "MacOS", + "link": "https://korben.info/macos-piphero-picture-in-picture-guide.html", + "creator": "Korben", + "pubDate": "Mon, 12 Feb 2024 08:00:00 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "006de1f6a5f6de3f959ab2f7c9c5e5a9", + "highlights": [] + }, + { + "title": "Turbo Art – Jouez avec SDXL Turbo pour de la génération d’image créative et en temps réel", + "description": "Turbo Art est un site de démonstration permettant de créer des images photo-réalistes à partir de textes via le modèle SDXL-Turbo. Il offre la possibilité de personnaliser des photos en temps réel et comprend une fonctionnalité 'Enhance' pour améliorer les images générées.", + "content": "

    \"\"

    \n

    Turbo Art est un site proof of concept qui va vous permettre de jouer avec un modèle de génération d’image nommé SDXL-Turbo.

    \n\n\n\n
    \r\n

    Pour rappel, c’est un modèle text2image, rapide et avancé, capable de générer des images photo-réalistes à partir d’une simple consigne textuelle en une seule évaluation de réseau neuronal. Sa performance exceptionnelle en termes de vitesse et de qualité d’image le rend particulièrement utile pour des tâches qui nécessitent une génération d’image rapide et précise à partir d’un texte. Mais le mieux c’est encore de le tester au travers de Turbo Art.

    \n\n\n
    \n
    \"\"
    \n\n\n

    Sur Turbo Art que vous pouvez également auto-héberger, vous allez pouvoir importer une photo et la retravailler en temps réel à l’aide d’un prompt, mais également de quelques outils pour redessiner par-dessus. J’ai ajouté un petit chapeau bleu à ce toutou en indiquant que je voulais en faire un ourson de dessin animé type Pixar.

    \n\n\n\n

    Et même chose pour mon chat, mais avec un bonnet de Noël.

    \n\n\n
    \n
    \"\"
    \n\n\n

    Rigolo non ? Et surtout ça permet d’apprivoiser en douceur ce genre de techno. Turbo Art offre également une fonctionnalité Enhance qui vous permettra d’améliorer l’image en testant d’autres générations et bien sûr de télécharger le rendu final pour vous en faire un avatar ou une illustration quelconque.

    \n\n\n\n
    \r\n

    À tester ici.

    \n", + "category": "Infos", + "link": "https://korben.info/jouez-avec-sdxl-turbo-generation-image-creative-temps-reel.html", + "creator": "Korben", + "pubDate": "Sun, 11 Feb 2024 08:00:00 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "fcd5efc4bb2ca03b7b297f3dfb101a4c", + "highlights": [] + }, + { + "title": "Canvas Confetti – Mettez de la joie sur votre site web avec cette lib d’explosion de confettis", + "description": "Canvas Confetti est une librairie pour animer des confettis, emojis ou neige sur des sites web. Elle est simple à installer via npm et à intégrer en JavaScript. On peut personnaliser l'animation avec différentes options comme le nombre de particules, la dispersion, la vitesse et les couleurs. Des fonctions supplémentaires permettent de créer des confettis avec des formes SVG ou du texte, et une méthode reset pour effacer les animations. Des exemples sont disponibles sur la page de démo du créateur.", + "content": "

    \"\"

    \n

    Si vous codez vous-même votre site web et que vous avez envie d’ajouter un peu de fiesta, de bonne humeur et de célébration à celui-ci, j’ai la lib qu’il vous faut.

    \n\n\n\n
    \r\n

    Cela s’appelle Canvas Confetti et ça permet d’ajouter en animation de confetti, d’émoji ou de neige à vos pages web.

    \n\n\n\n
    \"\"
    \n\n\n\n

    Pour l’installer, rien de plus simple:

    \n\n\n\n
    npm install canvas-confetti
    \n\n\n\n

    Importez ensuite la bibliothèque Canvas Confetti dans votre fichier JavaScript où vous souhaitez utiliser l’animation du confetti comme ceci :

    \n\n\n\n
    import confetti from 'canvas-confetti';
    \n\n\n\n

    Pour lancer l’animation du confetti, appelez la fonction confetti() sans paramètres ou avec des options personnalisées. Voici un exemple de lancement de l’animation par défaut :

    \n\n\n\n
    confetti();
    \n\n\n\n
    \r\n

    Et voici un exemple de lancement de l’animation avec des options personnalisées :

    \n\n\n\n
    confetti({\n  particleCount: 150, // Nombre de confetti à lancer\n  spread: 180, // Angle maximal de dispersion des confettis\n  startVelocity: 30, // Vitesse initiale des confettis\n  origin: {\n    x: Math.random(), // Position initiale aléatoire des confettis sur l'axe horizontal\n    y: Math.random() - 0.2 // Position initiale légèrement plus élevée sur l'axe vertical\n  },\n  colors: ['#ff0000', '#00ff00', '#0000ff'], // Couleurs des confettis\n  shapes: ['square', 'circle', 'star'], // Formes des confettis\n  scalar: 2 // Taille des confettis\n});
    \n\n\n\n

    Pour réinitialiser l’animation du confetti et effacer tous les confettis en cours d’animation, utilisez la méthode confetti.reset() :

    \n\n\n\n
    confetti.reset();
    \n\n\n\n

    Si vous souhaitez limiter l’espace sur votre page où les confettis apparaissent, vous pouvez utiliser un canvas personnalisé. Pour cela, créez un élément <canvas> dans votre HTML et appelez la fonction confetti.create() en lui passant l’élément <canvas> et des options globales facultatives :

    \n\n\n\n
    const canvas = document.createElement('canvas');\ndocument.body.appendChild(canvas);\n\nconst myConfetti = confetti.create(canvas, { // Options globales facultatives\n  resize: true, // Permet de redimensionner le canvas en fonction de la fenêtre\n  useWorker: true // Utilise un web worker pour le rendu du confetti\n});\n\nmyConfetti({ // Options personnalisées\n  particleCount: 100,\n  spread: 160\n  // Autres options personnalisées\n});
    \n\n\n\n

    Enfin, si vous souhaitez créer des confettis personnalisés à partir d’une forme SVG ou d’un texte, utilisez les méthodes confetti.shapeFromPath et confetti.shapeFromText :

    \n\n\n\n
    const pathShape = confetti.shapeFromPath({ path: 'M0 10 L5 0 L10 10z' }); // Forme SVG\n\nconst textShape = confetti.shapeFromText({ text: '🐈', scalar: 2 }); // Texte personnalisé\n\nconfetti({\n  shapes: [pathShape, textShape],\n  scalar: 2\n});
    \n\n\n\n

    Le mieux reste d’aller faire un tour sur la page de démo qui comporte également des exemples d’intégration.

    \n", + "category": "Infos", + "link": "https://korben.info/ajoutez-canvas-confetti-pour-une-touche-festive-sur-votre-site-web.html", + "creator": "Korben", + "pubDate": "Sat, 10 Feb 2024 08:00:00 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "504760233997de94424652f92cc629fa", + "highlights": [] + }, + { + "title": "Un tutoriel pour mettre en place Syncthing", + "description": "Je présente Syncthing, outil de synchronisation P2P chiffrée pour tous OS, dans une vidéo tutoriel exclusive pour mes soutiens Patreon.", + "content": "

    \"\"

    \n

    Si vous me suivez depuis longtemps, vous connaissez forcément Syncthing puisque j’en ai déjà parlé un bon paquet de fois. Mais ça faisait longtemps et dans le cadre de mon Patreon Privé Premium++ Rotomoulage Sélectif qui permet à l’élite de la crème de la nation d’avoir des contenus originaux merveilleux de moi-même sur des canaux exclusivement exclusifs, j’ai réalisé une vidéo tutoriel sur le sujet.

    \n\n\n\n
    \r\n

    Synchting, c’est le Dropbox du pauvre libriste et ça permet très facilement de mettre en place sur toutes vos machines Linux, Windows, macOS et plus, de la synchronisation chiffrée dans les deux sens ou en sens unique, de vos fichiers. Ça repose sur du protocole P2P, donc c’est super rapide, ça passe partout, même à travers vos firewalls et c’est vraiment un game changer pour ceux qui aiment avoir leurs documents sous la main, peu importe l’appareil qu’ils utilisent ou l’endroit où ils se trouvent.

    \n\n\n\n

    Voilà, j’espère que ça vous plaira. N’oubliez pas de nous rejoindre sur Patreon, et le cas échéant, de vous abonner à ma chaine YouTube.

    \n\n\n\n
    \n\n
    \n", + "category": "Administration Systeme Réseau", + "link": "https://korben.info/mise-en-place-syncthing-tutoriel-guide-complet.html", + "creator": "Korben", + "pubDate": "Fri, 09 Feb 2024 13:32:05 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "cd78dbd4b55aab5d340ae51f1899e0b3", + "highlights": [] + }, + { + "title": "Exolegend #2 – Plongez au coeur de la robotique avec le hackathon d’Exotec", + "description": "L'Exolegend #2, hackathon de programmation robotique initié par Exotec, aura lieu du 16 au 18 février à Lille. Il proposera aux participants des défis de programmation de robots dans diverses épreuves, avec des prix pour les gagnants. Exotec, connu pour son robot Skypod utilisé en logistique, cherche à promouvoir son expertise et recruter des talents. L'événement, complet pour 2024, est ouvert au public pour la finale.", + "content": "

    \"\"

    \n

    — Article en partenariat avec Exotec —

    \n\n\n\n

    Il y a 10 jours, j’ai eu l’immense plaisir d’assister à l’annonce d’Exolegend #2 pour faire un petit reportage et découvrir cet événement unique en son genre. Exolegend, initié par Exotec, est un hackathon de programmation robotique qui se tiendra du 16 au 18 février à Lille, au BTWIN Village.

    \n\n\n\n

    Vous vous en doutez, ce n’est pas un simple événement, mais une expérience immersive où les participants vont devoir relever le défi de programmer des robots qui devront évoluer dans un labyrinthe et combattre leurs pairs.

    \n\n\n\n

    Pour la petite histoire, Exotec est une société qui conçoit des systèmes automatisés pour les usines et les entrepôts. Ils développent notamment le Skypod, un robot qui permet aux entreprises d’automatiser toute la gestion logistique dans leurs entrepôts.

    \n\n\n\n

    Ce robot, déjà adopté par Décathlon, Carrefour, Geodis…etc, est capable de transporter jusqu’à 30kg de marchandises en vue de préparer des commandes, atteignant des vitesses allant jusqu’à 4 mètres par seconde et accédant à n’importe quelle produit référencé en moins de 2 minutes. Il est également très agile et capable de se déplacer en trois dimensions (oui, il grimpe jusqu’à 12 mètres de haut) sans nécessiter la mise en place d’infrastructure complexe.

    \n\n\n\n
    \n\n
    \n\n\n\n

    L’objectif d’Exolegend est de faire connaitre leur savoir faire mais également recruter les ingénieurs les plus talentueux. Le programme de cette édition 2024 est plutôt captivant, vous allez voir. Les participants à ce hackathon n’ont pas besoin d’être déjà experts en robotique et auront à leur disposition un simulateur ainsi que des robots prêts à l’emploi. Et leur défi sera de programmer ces robots en C++ pour relever différentes missions dans les thématiques suivantes :

    \n\n\n\n
      \n
    1. Conquête de territoire : Les participants devront utiliser 2 robots pour recouvrir le maximum de cases de l’arène avec de la peinture jaune ou bleue.
    2. \n\n\n\n
    3. Navigation et stratégie : Dans celle-ci, il s’agit de guider les robots à travers l’arène, en évitant les obstacles et en déployant des tactiques efficaces pour dominer au maximum l’espace.
    4. \n\n\n\n
    5. Défense et attaque : Les équipes devront protéger leurs propres robots tout en attaquant les adversaires, notamment en faisant exploser le ballon accroché sur les robots.
    6. \n\n\n\n
    7. Temps limité et terrain rétrécissant : Les matchs durent 120 secondes, et le labyrinthe rétrécit régulièrement. Le but est de gagner en couvrant le plus grand territoire et en éliminant le plus grand nombre d’ennemis.
    8. \n
    \n\n\n\n

    L’événement rassemblera 50 équipes, guidées par 60 experts d’Exotec, prêtes à concourir dans une arène simulée et quatre arènes réelles. Les meilleurs participants se verront récompensés par des prix attractifs, notamment du coaching et des drones de la marque DJI.

    \n\n\n\n

    Ce hackathon est ouvert à tous, que l’on s’inscrive seul ou en équipe, et il ne requiert pas de frais d’inscription. Les inscriptions sont closes cette année avec plus de 150 participants mais le public est le bienvenu au Btwin Village de Lille le dimanche 18 février de 9h à 16h pour assister aux finales et découvrir le pilotage de robots.

    \n\n\n\n

    Vous trouverez toutes les informations sur Exolegend ici.

    \n\n\n
    \n
    \"\"/
    ", + "category": "Infos", + "link": "https://korben.info/plongez-au-coeur-robotique-hackathon-exotec-exolegend-2.html", + "creator": "Korben", + "pubDate": "Fri, 09 Feb 2024 09:30:00 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "9b10a51c42858185b23639887d742a38", + "highlights": [] + }, + { + "title": "Tailspin – Pour y voir plus clair dans vos logs", + "description": "Si vous gérez un serveur, Tailspin peut vivifier l'affichage des logs sans configuration, en soulignant des éléments clés comme les IP ou les dates. Il est compatible avec diverses commandes Unix et personnalisable via regex. L'installation est simple, avec des commandes adaptées à différentes distributions.", + "content": "

    \"\"

    \n

    Si vous avez votre propre serveur, que ce soit pour du pro ou pour de l’auto-hébergement, vous avez forcément dû un jour de votre vie, jeter un oeil dans les fichiers de logs de celui-ci.

    \n\n\n\n
    \r\n

    C’est pratique des logs, ça permet de savoir ce qui se passe et pourquoi ça ne fonctionne pas toujours comme on l’espère. Sauf que voilà, en SSH, via le terminal, le rendu des logs n’est pas souvent fou-fou.

    \n\n\n\n

    Heureusement, il y a des outils comme Tailspin, qui mettent un peu de vie dans tout ça, pour vous éviter en tant que sysadmin un burnout et un retour immédiat dans le cantal pour élever des myocastors et en faire du pâté.

    \n\n\n
    \n
    \"\"
    \n\n\n

    Tailspin est capable d’afficher n’importe quel format de log sans aucune config particulière, pour faire ressortir les informations importantes telles que les nombres, les dates, les adresses IP, les UUIDs, les URLS et bien d’autres choses. Il peut s’intégrer très facilement avec d’autres commandes puisqu’il fonctionne comme la commande less pour faire des recherches ou du filtrage dans les logs.

    \n\n\n\n

    Bien sûr, si vous voulez rajouter des mises en avant, vous pouvez configurer l’outil pour qu’il puisse appliquer le style de votre choix au pattern regex de votre choix.

    \n\n\n\n
    \r\n

    Pour l’installer, rien de plus simple. Il vous suffit de lancer l’une des commandes suivantes selon votre distrib :

    \n\n\n\n
    # Homebrew\nbrew install tailspin\n\n# Cargo\ncargo install tailspin\n\n# Archlinux\npacman -S tailspin\n\n# Nix\nnix-shell -p tailspin\n\n# NetBSD\npkgin install tailspin\n\n# FreeBSD\npkg install tailspin
    \n\n\n\n

    De quoi y voir plus clair dans votre travail quotidien.

    \n", + "category": "Administration Systeme Réseau", + "link": "https://korben.info/analyse-logs-avec-tailspin-comprendre-donnees.html", + "creator": "Korben", + "pubDate": "Fri, 09 Feb 2024 08:00:00 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "e3679a60af70a7b9a643a71430db2798", + "highlights": [] + }, + { + "title": "Surfshark VPN et Amazon Prime Vidéo", + "description": "Cet article, en partenariat avec Surfshark VPN, explique les avantages d'utiliser un VPN avec Amazon Prime Video pour accéder à du contenu géo-restreint, protéger ses données personnelles et éviter la publicité. Surfshark offre un réseau de serveurs performant, plusieurs fonctionnalités de sécurité et la possibilité de connecter plusieurs appareils. La nouveauté 2024 est l'intégration de la création d'identités alternatives dans tous les abonnements.", + "content": "

    \"Surfshark

    \n

    — Article en partenariat avec Surfshark VPN

    \n\n\n\n

    Il y a déjà quelques années de cela je vous ai présenté comment le combo Surfshark VPN et Netflix fonctionnaient et quelles étaient les possibilités entre les 2 services. Depuis un autre service a pas mal pris d’ampleur dans le même genre, c’est Amazon Prime Video. Je sais que certains d’entre vous l’utilisent et c’est donc l’occasion d’en profiter pour vous faire un petit rappel sur le sujet.

    \n\n\n
    \n
    \"Surfshark
    \n\n\n

    Comme pour son concurrent vous savez sans doute qu’Amazon Prime Video ne propose pas le même contenu selon le pays dans lequel vous résidez. Du coup si vous partez à l’étranger (travail, vacances …), vous n’êtes pas certain de pouvoir y visionner votre série préférée. C’est quand même moins fun d’être les doigts de pieds en éventail sur une plage sans pouvoir matter vos épisodes favoris parce qu’ils ne sont pas dispo en version française sur place. Je n’imagine même pas le sentiment de loose qui pourrait me prendre si je me rendais compte que les épisodes de Stargate en VF ne sont dispo qu’en anglais. De quoi ruiner mes futures vacances sur une île paradisiaque au fond de mon jardin.

    \n\n\n\n

    Mais surtout le VPN est une solution pour éviter qu’Amazon ne puisse pomper toutes vos données personnelles lorsque vous streamez leurs vidéos. En chiffrant vos données (via algorithme AES-256) , Surfshark va les rendre inutilisables par la plateforme ainsi que pour tous les autres sites web que vous visitez. Elle ne recevra plus d’infos sur l’endroit d’ou vous vous connectez vraiment, n’aura plus accès aux cookies de votre navigateur, etc. Et ne pourra plus vous bombarder de publicités (le VPN agit aussi comme un bloqueur pub).

    \n\n\n
    \n
    \"\"/
    \n\n\n

    D’autant plus que l’année dernière Prime Video a annoncé que l’arrivée de la publicité sur son service se ferait courant 2024 (a priori vers le milieu de l’année dans l’hexagone). « À petite dose » selon leurs dires, mais on sait comment ça se finira. Probablement blindé de spots pour la malbouffe et avec un abonnement supplémentaire de quelques euros pour une expérience propre. Surfshark VPN coutera le même prix, avec en plus les bénéfices sur le respect de votre vie privée. Le calcul est vite fait et ce sera toujours quelques euros d’économies (en plus de celles que vous pouvez faire sur vos billets, hôtels, etc.)

    \n\n\n\n

    Et avec son gros parc de serveurs (+ de 3200, répartit dans plus de 100 pays) qui est en train de passer intégralement de 1 à 10 Gb/s, Surfshark est taillé pour du streaming stable et presque sans ralentissements notables. Si vous avez l’esprit d’aventure, vous pouvez aussi le coupler avec les protocoles Wireguard, OpenVPN ou IPsec/IKEv2.

    \n\n\n\n

    Adresse IP fixe ou rotative, bouton kill switch, MultiHop dynamique, mode camouflage, DNS privé, split tunneling, GPS-Spoofing pour Android … Toutes ces fonctionnalités, que j’ai présentées dans mes précédents articles, sont toujours à votre disposition. De même que l’assurance que vos données ne sont pas enregistrées par Surfshark (ce qui a été vérifié par plusieurs audits ces derniers mois : Deloitte, Mobile App Security Assessment …).

    \n\n\n
    \n
    \"Alternative
    \n\n\n

    Au rayon des petites nouveautés de ce début 2024, sachez que Surfshark vient d’intégrer son outil de création d’identités alternatives dans tous ses packs. Donc même le plus petit abonnement vous offre cette fonctionnalité auparavant réservée à l’offre Surfshark One. Un petit bonus en plus !

    \n\n\n\n

    Voilà, vous savez maintenant quel est l’intérêt d’utiliser un VPN avec Amazon Prime Video. Mais cela fonctionne avec n’importe lequel de vos services de streaming préféré, de Disney+ à Hulu en passant par Netflix et Apple TV.

    \n\n\n\n

    D’ailleurs si vous pensez enfin sécuriser un peu mieux votre surf sur le web, n’oubliez pas que le service permet de connecter autant d’appareils que vous le voulez (desktop, mobile, console, routeur, Amazon Fire Stick, etc.) et de les utiliser en simultané. Le prix englobe donc vos machines, mais aussi celles de votre famille & co. Quel que soit l’OS utilisé par chacune d’entre elles. Pour moins de 3€/mois !

    \n\n\n\n

    Découvrir l’offre de Surfshark VPN

    \n", + "category": "VPN", + "link": "https://korben.info/surfshark-vpn-access-amazon-prime-video-anywhere.html", + "creator": "Korben", + "pubDate": "Thu, 08 Feb 2024 08:49:11 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "7f4132625843e8ee36dd1141fdb4fd14", + "highlights": [] + }, + { + "title": "Spotube – Le client Spotify open source sans pub et sans compte payant", + "description": "Spotube est un client musical gratuit utilisant le catalogue Spotify, sans pub ni collecte de données, qui fonctionne sur tous OS. Il permet de parcourir et télécharger des playlists Spotify, afficher les paroles et est en amélioration continue malgré quelques bugs. Disponible pour divers systèmes d'exploitation.", + "content": "

    \"\"

    \n

    Je sais, il existe beaucoup d’alternatives gratuites à Spotify ou Deezer qui font la même chose, mais sans lâcher un kopeck. Je vous avais parlé de Nuclear il y a quelques semaines d’ailleurs, qui était très cool.

    \n\n\n\n
    \r\n

    Et bien aujourd’hui, je vous cause de Spotube qui n’est pas basé sur Electron (!!), utilise l’API de Spotify pour son catalogue de titres et de playlists et qui va récupérer les sons sur YouTube. Un fonctionnement assez classique pour ce genre d’outil, mais surtout un client sans pub, sans collecte de données et bien sûr compatible tous OS.

    \n\n\n
    \n
    \"\"
    \n\n\n

    Avec Spotube, vous pourrez parcourir vos propres playlists Spotify, les morceaux que vous aimez, les genres musicaux, les artistes…etc mais également télécharger localement les morceaux ou encore afficher les paroles des chansons de manière synchronisée avec le son pour vos soirées Karaoké.

    \n\n\n
    \n
    \"\"
    \n\n
    \n
    \"\"
    \n\n\n

    Le projet est sous licence libre et en constante amélioration. Il y a encore des petits bugs parfois, mais c’est parfaitement utilisable pour dandiner vos petits popotins sur les derniers tubes.

    \n\n\n\n

    Dispo sous Windows, macOS, Android, Linux ici.

    \n", + "category": "Musique", + "link": "https://korben.info/spotube-open-source-spotify-client-no-ads-free-account.html", + "creator": "Korben", + "pubDate": "Thu, 08 Feb 2024 08:00:00 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "120b1dcf31adb0762563dd490b75696b", + "highlights": [] + }, + { + "title": "43 secondes pour récupérer la clé Bitlocker d’un PC à l’aide d’un Raspberry Pi Pico", + "description": "Depuis des années, les utilisateurs de Windows peuvent sécuriser leurs données avec Bitlocker grâce à la puce TPM. Le chercheur StackSmashing a trouvé comment extraire la clé de chiffrement de cette puce avec un Raspberry Pi Pico bon marché. Cette technique a été démontrée sur des Lenovo Thinkpad, mais elle pourrait s'adapter à d'autres ordinateurs. Les nouveaux processeurs intégrant le TPM rendent cependant l'attaque plus difficile.", + "content": "

    \"\"

    \n

    Depuis maintenant plusieurs années, les utilisateurs de Windows ont la possibilité de sécuriser leurs données avec Bitlocker, l’outil de chiffrement de Microsoft. C’est hyper simple à mettre en place et les constructeurs l’ont adopté depuis longtemps en intégrant à leurs ordinateurs la fameuse puce TPM (Trusted Platform Module).

    \n\n\n\n
    \r\n

    Ce qui permet à Bitlocker d’y stocker toutes les informations critiques relatives à la configuration de l’ordinateur, mais surtout la Master Key, c’est-à-dire la clé qui permet de déchiffrer tout le contenu.

    \n\n\n\n

    C’est là qu’entre en scène le chercheur en sécurité StackSmashing qui a mis au point un moyen d’extraire physiquement cette clé à l’air d’un Raspberry Pi Pico à moins de 10 balles, d’un peu de soft, et d’un petit PCB maison. Grâce aux pins de son PCB, il peut alors se brancher directement au bus LPC de la puce TPM qui se trouve au dos de la carte mère, ce qui permet d’intercepter les messages transmis (donc la master key) entre la puce TPM et le CPU de l’ordinateur.

    \n\n\n\n

    Comme vous pouvez le voir sur la vidéo, son bricolage est spécifique à certains modèles de laptop Lenovo (Thinkpad), mais ça peut-être facilement adapté (ou alors en soudant des fils) à tout type d’ordinateur comme il le montre à la fin, avec la Surface Pro (et un petit trou dans sa carlingue)

    \n\n\n\n
    \n\n
    \n\n\n\n

    Toutefois, n’allez pas croire que votre ordinateur est forcément sensible à cette attaque surtout s’il est récent puisqu’à présent, les fabricants de processeurs comme Intel ou AMD ont directement intégré le TPM au CPU, donc c’est plus la même partie de plaisir.

    \n\n\n\n
    \r\n

    Source

    \n", + "category": "Sécurité", + "link": "https://korben.info/recuperation-cle-bitlocker-pc-raspberry-pi-pico-43-secondes.html", + "creator": "Korben", + "pubDate": "Wed, 07 Feb 2024 13:49:21 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "c248c215ded264cfdc51f7c740f4d366", + "highlights": [] + }, + { + "title": "Comment bien choisir vos piles ?", + "description": "Geeks et amateurs de tech accumulent souvent des piles de divers formats. Or, il est difficile de choisir les meilleures piles en raison de l'éventail de marques et de prix. Joffrey de \"Le Bricolage c'est Cool\" a testé 18 types de piles et révélé que les marques les plus réputées ne sont pas toujours les plus rentables. Son étude est disponible en vidéo.", + "content": "

    \"\"

    \n

    En tant que geek et amateur de matériel technologique, vous devez surement avoir chez vous un bon petit stock de piles de tous formats pour mettre dans les télécommandes, modules IoT et autres jouets pour les gosses.

    \n\n\n\n
    \r\n

    Sauf que bien choisir ses piles, ce n’est pas facile. Il y a tellement de marques à des prix différents avec des promesses de capacité différente qu’il est impossible pour le consommateur de connaitre le meilleur rapport qualité prix.

    \n\n\n\n

    Mais c’était sans compter sur Joffrey, de la chaine « Le Bricolage c’est Cool » qui a mis au point un protocole de test et réalisé une étude sur 45 références de piles du marché, des piles Amazon, en passant par les piles Action ou E. Leclerc.

    \n\n\n\n

    Et vous allez voir, le résultat est surprenant et ce n’est pas forcement les marques les plus cotées qui sont les plus rentables à acheter en termes de coût par quantité d’énergie délivrée.

    \n\n\n\n
    \n\n
    \n\n\n\n

    A regarder !!

    \n", + "category": "DIY", + "link": "https://korben.info/comment-choisir-piles-adaptees-besoins.html", + "creator": "Korben", + "pubDate": "Wed, 07 Feb 2024 08:00:00 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "4282576b113968a741134bcf13b610c7", + "highlights": [] + }, + { + "title": "Lode Runner – Le retour du jeu mythique !", + "description": "Lancée en 1983, la série de jeux Lode Runner, célèbre sur des plateformes comme l'Apple II et le Commodore 64, offre un gameplay simple mais addictif avec des niveaux faits de briques, d'échelles, et de barres pour collecter de l'or et éviter les ennemis. Aujourd'hui, elle est accessible via un portage HTML5 jouable dans les navigateurs, proposant différents modes de jeu, dont un éditeur de niveau, et le code source est disponible pour adaptation.", + "content": "

    \"\"

    \n

    Débutée en 1983, la série de Lode Runner vous a probablement marqué si vous êtes un ancien qui a notamment tâté du jeu d’arcade ou de l’Apple II, du Commodore 64, ou encore de l’Amstrad. Même les plus jeunes ont pu tester sur la console virtuelle de la Wii.

    \n\n\n
    \n
    \"\"
    \n\n\n
    \r\n

    L’intérêt de ce jeu repose sur son gameplay qui consiste à traverser des niveaux composés de briques qu’on peut casser, d’échelles à grimper et de barres suspendues pour esquiver les ennemis, les tuer et récupérer les lingots d’or.

    \n\n\n\n
    \n\n
    \n\n\n\n

    C’est simple, mais efficace et surtout terriblement addictif puisque vous devez planifier soigneusement vos mouvements et utiliser l’environnement à votre avantage pour éviter d’être capturé.

    \n\n\n\n

    Le truc merveilleux si vous voulez retrouver les sensations de ce jeu, c’est de plonger vers ce portage HTML5 réalisé avec CreateJS. Comme ça vous pouvez jouer directement dans votre navigateur !

    \n\n\n\n

    Le jeu propose 3 modes de jeu (challenge, entrainement et éditeur de niveau) et un mode démo qui rejoue les niveaux passés. Et Lode Runner est jouable dans 5 versions : la classique, la pro, la « revenge », la « fan book » et bien sûr la Championship.

    \n\n\n\n
    \r\n

    Bien sûr le code source est dispo donc vous pouvez le porter sur la machine de votre choix si vous avez envie.

    \n", + "category": "jeu-video", + "link": "https://korben.info/lode-runner-retour-jeu-mythique.html", + "creator": "Korben", + "pubDate": "Tue, 06 Feb 2024 08:00:00 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "2c62f32c9cea4526bfc6ae76c3febec2", + "highlights": [] + }, + { + "title": "OSS Insight – Explorez et comparez les dépôts GitHub en un clin d’oeil", + "description": "OSS Insight est un outil d'analyse des dépôts GitHub offrant des informations complètes et des tendances sur l'open source. Il permet de comparer deux dépôts, obtenir des données avancées, suivre les tendances techniques mensuelles et historiques, et offre un aperçu des classements. Ainsi, OSS Insight aide à prendre des décisions éclairées pour les projets open source.", + "content": "

    \"\"

    \n

    Vous le savez, je suis un grand amateur et un grand défenseur des logiciels libres et Open Source. Et je n’ai pas peur de le dire, GitHub est l’un de mes sites préférés.

    \n\n\n\n
    \r\n

    On y trouve des pépites comme des scripts incroyables, des outils géniaux et j’adore ça ! Mais ce n’est pas forcément toujours simple de suivre tout ce qui se passe dans cet univers.

    \n\n\n\n

    Enfin, ça, c’était avant parce qu’il existe un site génial qui s’appelle OSS Insight et qui offre des informations très détaillées et des tendances sur le monde de l’open source en analysant plus de 5 milliards de lignes d’événements GitHub.

    \n\n\n\n

    Il fournit une nouvelle façon d’explorer les données GitHub en posant simplement des questions en langage naturel, ce qui est extrêmement pratique quand on veut comparer les choses.

    \n\n\n\n
    \n\n
    \n\n\n\n

    Par exemple, OSS Insight vous permet de comparer deux dépôts à partir des mêmes indicateurs, tels que les étoiles, les forks, les issues, les commits, les pull requests, le nombre de contributeurs, les langages de programmation utilisés ou encore les lignes de code modifiées.

    \n\n\n\n
    \r\n

    Imaginez que vous travaillez sur un projet et que vous souhaitez comparer deux bibliothèques open source pour déterminer laquelle est la plus populaire et la mieux maintenue. Et bien il suffit de lui demander.

    \n\n\n
    \n
    \"\"
    \n\n\n

    Mais ça ne s’arrête pas à ça. Voici quelques exemples de questions que les gens posent à l’outil :

    \n\n\n
    \n
    \"\"
    \n\n\n

    En plus de cela, OSS Insight offre des informations sur les tendances techniques mensuelles avec des listes de dépôts à découvrir.

    \n\n\n\n

    Comme ça, vous pouvez suivre de près certains types d’outils populaires, comme les bases de données, les frameworks JavaScript ou encore les outils liés aux LLM. Vous pouvez également obtenir des analyses sur la productivité des développeurs et les statistiques des dépôts.

    \n\n\n
    \n
    \"\"
    \n\n\n

    Pour tester le OSS Insight, il vous suffit de vous rendre sur leur site web et de plonger dans cet océan de données.

    \n", + "category": "Libre", + "link": "https://korben.info/oss-insight-analyse-tendances-github-open-source.html", + "creator": "Korben", + "pubDate": "Mon, 29 Jan 2024 08:00:00 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": true, + "favorite": false, + "created": false, + "tags": [], + "hash": "4d0a945c1b35421b7f6b953c9530df10", + "highlights": [] + }, + { + "title": "Un ordinateur 16-bits dans Excel", + "description": "Le youtubeur Inkbox a créé un ordinateur 16-bits dans Excel sans aide externe, utilisant une architecture avec 23 mnémoniques et 26 opcodes. Le CPU inclut diverses unités et une RAM de 128KB, avec un affichage 128x128 en 16 couleurs. Le projet \"excelCPU\" est disponible sur GitHub et permet la programmation dans Excel-ASM16.", + "content": "

    \"\"

    \n

    Voici un projet vraiment original mené par le youtubeur Inkbox qui a tout simplement conçu un ordinateur entièrement dans Microsoft Excel. Le tout sans recourir à des scripts Visual Basic, des plugins, ou toute autre aide-externe.

    \n\n\n\n
    \r\n

    Ce système 16-bits, fonctionnant sur une simple feuille de calcul, repose sur une architecture composée d’instruction personnalisée, comprenant 23 mnémoniques d’instruction et 26 opcodes.

    \n\n\n\n

    C’est super ingénieux !

    \n\n\n\n
    \n\n
    \n\n\n\n

    Le design principal du CPU se divise en plusieurs unités : une unité de récupération, une unité de contrôle, une unité logique arithmétique, un fichier registre, une unité PC, plusieurs multiplexeurs, une unité de contrôle de la mémoire, une table de RAM de 128KB, et un affichage de 128×128 en 16 couleurs.

    \n\n\n\n

    Ce projet, disponible sur GitHub sous le nom « excelCPU« , inclut plusieurs fichiers principaux comme le CPU lui-même, une ROM, un ensemble d’instructions détaillées, un compilateur pour Excel-ASM16, et un dossier de programmes d’exemple.

    \n\n\n\n
    \r\n

    Cette conception est non seulement un tour de force en matière de programmation, mais elle ouvre également de nouvelles perspectives sur les capacités d’Excel en tant qu’outil de développement. Pour vous dire à quel point c’est balèse, le CPU fonctionne à partir d’un simple signal d’horloge et peut être contrôlé en mode automatique ou manuel, avec diverses options pour réinitialiser la RAM, lire la ROM, et exécuter des programmes. Et bien sûr, les utilisateurs de cet « ordinateur » peuvent également écrire des programmes dans le langage Excel-ASM16 et les compiler sur la feuille de calcul ROM.xlsx.

    \n\n\n\n

    Bref, on n’arrête pas la bidouille de l’extrême !

    \n", + "category": "Infos", + "link": "https://korben.info/creer-un-ordinateur-16-bits-dans-excel.html", + "creator": "Korben", + "pubDate": "Sun, 28 Jan 2024 16:04:19 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": true, + "favorite": false, + "created": false, + "tags": [], + "hash": "58eed1d8d7f1d13dca1daa7933ec7aac", + "highlights": [] + }, + { + "title": "OSTE – Le scanner de vulns qui combine Nikto, ZAP, Nuclei, SkipFish, et Wapiti", + "description": "OSTE est un scanner de sécurité open-source qui simplifie les tests dynamiques des applications, combinant plusieurs scanners DAST tels que Nikto Scanner, OWASP ZAP, Nuclei, SkipFish et Wapiti. Il se concentre sur les vulnérabilités d'injection Web et offre une interface conviviale. OSTE fonctionne sur plusieurs plateformes, principalement Kali Linux.", + "content": "

    \"\"

    \n

    Si vous vous intéressez un peu à la sécurité informatique, je vous présente aujourd’hui OSTE qui est ce qu’on pourrait appeler un Metascanner.

    \n\n\n\n
    \r\n

    Alors qu’est-ce qu’un Metascanner ?

    \n\n\n\n

    Eh bien il s’agit d’un scanner de vulnérabilité web qui combine différents outils tels que Nikto, zap de l’OWASP, Nucléi, SkipFish ou encore Wapiti.

    \n\n\n\n

    L’intérêt de cet outil c’est qu’il offre une interface graphique très user friendly qui permet de consulter les rapports de scan, mais également de les lancer. Injections SQL, XSS, XML, HTML ou encore des injections liées à des commandes spécifiques au système d’exploitation visé. Chacun des scanners DAST (Dynamic Application Security Testing) intégrés fournit des listes de vulnérabilités pour vous aider à identifier et corriger les problèmes potentiels.

    \n\n\n
    \n
    \"\"
    \n\n\n

    Pour l’installer, vous aurez besoin de tous les outils que je viens de vous citer, mais si vous utilisez Kali Linux vous n’aurez pas de soucis puisque tout ça est déjà présent dans la distrib. Sinon il faudra les installer manuellement.

    \n\n\n\n
    \r\n

    Ensuite il ne vous restera plus qu’à cloner le dépôt sur votre machine et à lancer la commande

    \n\n\n\n
    python3 metascan.py
    \n\n\n\n

    Vous pourrez alors lancer des scans, charger les résultats, les exporter, les consulter directement depuis l’interface graphique.

    \n\n\n\n

    Vous l’aurez compris, OSTE est un outil fantastique pour simplifier l’évaluation de la cyber sécurité. N’oubliez pas quand même que c’est destiné à usages éducatifs ou dans le cadre de mission d’audits pour lesquelles vous avez été mandaté.

    \n\n\n\n

    Si vous voulez en savoir plus, cliquez ici.

    \n", + "category": "Sécurité", + "link": "https://korben.info/scanner-oste-tests-securite-dynamiques-applications-web.html", + "creator": "Korben", + "pubDate": "Sun, 28 Jan 2024 08:00:00 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": true, + "favorite": false, + "created": false, + "tags": [], + "hash": "b1c8d0b3098030bb9417cfa55fdeab34", + "highlights": [] + }, + { + "title": "Dusage – Mieux visualiser l’espace disque utilisé", + "description": "Pour vérifier l'espace disque, l'outil en ligne de commande Dusage est présenté comme une alternative plus claire à la commande \"df\". Il fournit des graphiques colorés de l'utilisation des disques et des inodes. Pour l'installer, utilisez \"cargo install dusage\". Il est utile notamment sur Raspberry Pi et pour ceux qui trouvent \"df\" compliqué. Un outil similaire, \"musage\", existe pour la mémoire vive.", + "content": "

    \"\"

    \n

    Comment faites-vous pour savoir s’il reste de la place sur votre disque dur ?

    \n\n\n\n
    \r\n

    Les vrais vont me répondre qu’ils utilisent la commande « df » pour en savoir plus, mais faut se l’avouer, cette commande peut être un peu déroutante pour les noobs et pas très attrayante visuellement.

    \n\n\n\n

    C’est pourquoi aujourd’hui je vous présente l’outil Dusage ! Un outil en ligne de commande conçu pour vous offrir une représentation beaucoup plus claire de l’espace disque utilisé sur votre système.

    \n\n\n\n

    Pour l’installer, il vous suffit d’ouvrir un terminal et d’utiliser la commande suivante :

    \n\n\n\n
    cargo install dusage
    \n\n\n\n

    Ensuite, y’a plus qu’à lancer la commande dusage pour obtenir la liste des systèmes de fichiers avec leur taille totale, l’espace disque utilisé, l’espace disque disponible, le pourcentage d’occupation, le point de montage, ainsi qu’un graphique qui représente l’utilisation des disques et des inodes, avec des couleurs différentes en fonction des points de montage pour faciliter la lecture.

    \n\n\n
    \n
    \"\"
    \n\n\n
    \r\n

    Pour rappel, les inodes sont des structures de données qui contiennent des informations sur les fichiers et les répertoires d’un système de fichiers. L’utilisation des inodes peut être un indicateur utile pour déterminer s’il y a trop de petits fichiers sur votre disque, ce qui peut causer des problèmes de performance.

    \n\n\n\n

    Si vous l’utilisez sur le Raspberry Pi, vous verrez également que le système de fichiers « log2ram » est affiché en dernier pour faciliter le repérage.

    \n\n\n\n

    Bref, si vous détestez df, parce que vous n’y comprenez rien, dusage sera là pour vous faciliter la vie. D’ailleurs, si vous l’appréciez, il y a également un autre projet qui s’appelle musage, qui est à la commande « free », ce que dusage est à la commande df. Pour rappel, « free » permet de voir l’espace disponible en mémoire vive.

    \n\n\n\n

    Amusez-vous bien !

    \n", + "category": "Linux", + "link": "https://korben.info/dusage-analyse-espace-disque-optimisation.html", + "creator": "Korben", + "pubDate": "Sat, 27 Jan 2024 08:00:00 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": true, + "favorite": true, + "created": false, + "tags": [], + "hash": "f9f936254a8e1ae33df6a949b71131e8", + "highlights": [] + }, + { + "title": "ShellGPT – Boostez votre utilisation du terminal grâce", + "description": "Shell GPT est un assistant personnel basé sur l'IA pour générer des commandes shell, du code et de la documentation. Il s'installe facilement via pip et nécessite la clé API OpenAI dans le .zshrc ou .bashrc. Avec différentes commandes, il peut exécuter des requêtes, lancer des commandes directes avec du code, initier des sessions de chat pour des interactions longues, et même intégrer des fonctions au shell. Il dispose aussi d'un mode REPL interactif et permet la personnalisation avec des rôles spécifiques.", + "content": "

    \"\"

    \n

    Je me lasse pas de tous ces petits softs qui utilisent de l’IA et qui simplifient quand même grandement la vie. Hier on a vu un plugin VS Code pour coder plus rapidement. Et aujourd’hui, je vous propose Shell GPT, un assistant personnel qui utilise ChatGPT pour vous aider à générer des commandes shell, des bouts de code et même de la documentation.

    \n\n\n\n
    \r\n

    Pour l’installer, c’est easy :

    \n\n\n\n
    pip install shell-gpt
    \n\n\n\n

    Il faudra quand même faire un export OPENAI_API_KEYcomme d’habitude dans votre .zshrc ou .bashrc pour lui indiquer votre clé API OpenAI. Et redémarrez votre terminal pour que les modifications prennent effet.

    \n\n\n\n
    export OPENAI_API_KEY=\"votre_clé_API_OpenAI\"
    \n\n\n\n

    Une fois installé, ça fait plein de trucs cool. Vous pouvez simplement exécuter la commande sgpt suivie de votre requête pour lui demander tout ce que vous voulez. Par exemple, pour rechercher les couleurs d’un arc-en-ciel, vous pouvez exécuter la commande suivante :

    \n\n\n\n
    sgpt \"quelles sont les couleurs d'un arc-en-ciel ?\"\n
    \n\n\n
    \n
    \"\"
    \n\n\n

    Mais vous pouvez surtout lui demander des commandes que vous ne sauriez pas construire. Par exemple :

    \n\n\n\n
    sgpt \"VOTRE DEMANDE\"
    \n\n\n
    \n
    \"\"
    \n\n\n
    \r\n

    Ou pour avoir une réponse plus directe avec uniquement du code, il suffit d’ajouter le paramètre –code :

    \n\n\n\n
    sgpt --code \"VOTRE DEMANDE\"
    \n\n\n
    \n
    \"\"
    \n\n\n

    Pour ceux qui veulent, vous pouvez même lancer votre demande en mode shell pour pouvoir l’exécuter de suite :

    \n\n\n\n
    sgpt --shell \"VOTRE DEMANDE\"
    \n\n\n\n

    Et pour aller encore plus loin, vous pouvez aussi le lancer en mode « chat ». S’engagera alors une discussion sur le long cours, avec possibilité de créer des fichiers, de les modifier, de lancer des commandes, etc… Remplacez NOM_SESSION par le titre à donner à votre chat, pour pouvoir ensuite y retourner en gardant le contexte.

    \n\n\n\n
    sgpt --chat NOM_SESSION \"VOTRE DEMANDE\"
    \n\n\n
    \n
    \"\"
    \n\n
    \n
    \"\"
    \n\n\n

    ShellGPT offre aussi d’autres fonctionnalités avancées, notamment le REPL mode qui permet d’interagir avec ShellGPT dans un mode interactif pour générer du code et exécuter des commandes (en appuyant sur la touche « e »

    \n\n\n\n
    sgpt --shell --repl NOM_SESSION
    \n\n\n
    \n
    \"\"
    \n\n\n

    Et vous pouvez aussi créer des rôles personnalisés pour personnaliser le comportement de ShellGPT dans des scénarios spécifiques, selon vos envies. Je vous invite à vous plonger dans la doc pour exploiter tout ça. Ça fait beaucoup de choses mais c’est super pratique et ça vous aidera à automatiser pas mal de choses.

    \n\n\n\n

    Enfin, et je terminerai avec ça, il est possible d’installer une intégration dans votre shell.

    \n\n\n\n
    sgpt --install-integration
    \n\n\n\n
    \r\n

    En gros, ça va ajouter quelques lignes dans votre .bashrc ou .zshrc pour simplement en appuyant sur

    \n\n\n\n
    CTRL + l
    \n\n\n\n

    transformer ce que vous avez écrit dedans en commande exécutable.

    \n\n\n\n
    \n\n\n\n

    Voilà, j’ai à peu pres fait le tour de cet outil merveilleux !

    \n\n\n\n

    L’IA c’est cool mais quand c’est bien intégré dans nos outils du quotidien, c’est encore meilleur !

    \n\n\n\n

    ShellGPT est à découvrir ici.

    \n", + "category": "Intelligence artificielle", + "link": "https://korben.info/boostez-utilisation-terminal-avec-shellgpt.html", + "creator": "Korben", + "pubDate": "Fri, 26 Jan 2024 08:00:00 +0000", + "enclosure": "https://korben.info/app/uploads/2023/12/243206128-bead0dab-0dd9-436d-88b7-6abfb2c556c1-2.mp4", + "enclosureType": "video/mp4", + "image": "https://korben.info/app/uploads/2023/12/243206128-bead0dab-0dd9-436d-88b7-6abfb2c556c1-2.mp4", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": true, + "favorite": false, + "created": false, + "tags": [], + "hash": "343d48ad0a9aa6e95408ebab82651ff1", + "highlights": [] + }, + { + "title": "Continue – L’extension Visual Studio Code qui code à votre place", + "description": "Cursor est l'éditeur de code préféré de l'auteur car il intègre l'IA et est basé sur Visual Studio, utile même pour les novices en développement. Il est payant, mais on peut utiliser une clé OpenAI ou un plugin open source \"Continue\" pour un paiement à la consommation dans Visual Studio Code ou JetBrains. Continue permet d'interagir avec l'IA pour comprendre, compléter ou corriger le code en langage naturel, de créer des fichiers, des tests unitaires et de chercher des solutions sur StackOverflow. Il est compatible avec GPT-4 et GPT-3.5-turbo et peut être utilisé avec d'autres LLM via LM Studio ou Ollama. Pour l'activer, on utilise CMD + M ou ALT + M.", + "content": "

    \"\"

    \n

    Cursor est à ce jour l’éditeur de Code que je préfère, car il est basé sur Visual Studio et totalement boosté à l’IA. Cela me permet pour moi qui suis une quiche en dev, de mener à bien mes projets de conquête du monde.

    \n\n\n\n
    \r\n

    Toutefois, c’est payant. Et si vous ne voulez pas lâcher un peu de thunasse, et que vous voulez payer uniquement ce que vous consommez, c’est possible dans Cursor avec une clé OpenAI, mais également en installant ce plugin open source baptisé « Continue » directement dans un bon vieux Visual Studio Code d’origine ou un JetBrains.

    \n\n\n\n

    Concrètement, ce truc vous permet en surlignant un bout de code, de discuter avec l’IA pour mieux le comprendre, le compléter ou le corriger. Vous pouvez même apporter des modifs directement à votre code simplement en demandant ce que vous voulez en langage naturel du genre :

    \n\n\n\n
    /edit réécrire ceci pour retourner une liste aplatie à partir d'une matrice 3x3\n/edit refactoriser cela en une mise en page flex angulaire sur une seule ligne\n/edit définir ici un type pour une liste de listes de dictionnaires
    \n\n\n
    \n
    \"\"
    \n\n\n

    Continue permet aussi de générer des fichiers from scratch, c’est-à-dire de zéro ou de générer des tests unitaires, des commandes Shell ou des recherches sur StackOverflow pour en extraire uniquement le nécessaire.

    \n\n\n
    \n
    \"\"
    \n\n\n

    Continue est compatible avec GPT-4 et GPT-3.5-turbo via l’API OpenAI. Et si vous voulez esquiver OpenAI, vous pouvez toujours la connecter sur un autre LLM en utilisant par exemple LM Studio ou Ollama.

    \n\n\n\n
    \r\n

    Une fois installé, pour l’activer, il suffit de faire un CMD + M (ou ALT + M).

    \n\n\n\n

    Amusez-vous bien et codez-moi des trucs de ouf !

    \n", + "category": "Développement", + "link": "https://korben.info/visual-studio-code-extension-continue-coding-automation.html", + "creator": "Korben", + "pubDate": "Thu, 25 Jan 2024 08:00:00 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": true, + "favorite": false, + "created": false, + "tags": [], + "hash": "00f475aa875781976317bc74408a3cbe", + "highlights": [] + }, + { + "title": "Palworld – Comment héberger votre jeu préféré sans dépenser un centime", + "description": "Palworld, un jeu mêlant des éléments de Pokemon et Fortnite, fait fureur parmi les enfants. Il permet d'exploiter des créatures appelées \"pals\". Pour ceux intéressés, il est possible d'héberger son propre serveur Palworld avec Docker et SteamCMD, en suivant une documentation et un guide d'optimisation disponibles en ligne, pour une intégration simplifiée.", + "content": "

    \"\"

    \n

    Cela n’aura échappé à aucun gamer du monde entier : Palworld est là !

    \n\n\n\n
    \r\n

    Alors, vous le savez, je préfère travailler plutôt que jouer donc je n’ai pas encore eu l’occasion de tester, mais mes enfants sont déjà à fond dessus. Bon, comme vous pouvez le voir, y’a clairement plagiat inspiration de Pokemon, Zelda BOTW, Fortnite et j’en passe.

    \n\n\n\n
    \n\n
    \n\n\n\n

    D’ailleurs, si vous voulez former vos enfants à devenir des petites raclures de bidet parfaitement adapté à la société dans laquelle nous sommes, à savoir de futurs manageurs toxiques, exploiteurs de la nature ou encore criminels, y’a tout ce qu’il faut dans ce jeu puisque l’idée c’est clairement d’exploiter ces animaux (les pals) de toutes les façons possibles comme vous pouvez le voir dans la description Steam.

    \n\n\n
    \n
    \"\"
    \n\n
    \n
    \"\"
    \n\n
    \n
    \"\"
    \n\n
    \n
    \"\"
    \n\n\n

    Alors bien sûr, si je vous parle de Palworld, ce n’est pas pour exciter les défenseurs des animaux et les végans auxquels je m’associe évidemment.

    \n\n\n\n

    Mais c’est plutôt pour vous dire que si vous souhaitez héberger votre propre serveur dédié Palworld sans vous galérer directement avec Steam, il y a une super intégration Docker disponible ici sur Github. Cela utilise toujours Steam, mais de manière « invisible » l’aide de SteamCMD.

    \n\n\n\n
    \r\n

    Ensuite, le mieux c’est d’utiliser Docker Compose avec cette config :

    \n\n\n\n
    version: '3.9'\nservices:\n  palworld-dedicated-server:\n    build: .\n    container_name: palworld-dedicated-server\n    image: jammsen/palworld-dedicated-server:latest\n    restart: always\n    network_mode: bridge\n    ports:\n      - target: 8211 # gamerserver port inside of the container\n        published: 8211 # gamerserver port on your host\n        protocol: udp\n        mode: host\n      - target: 25575 # rcon port inside of the container\n        published: 25575 # rcon port on your host\n        protocol: tcp\n        mode: host\n    environment:\n      - ALWAYS_UPDATE_ON_START=true\n      - MAX_PLAYERS=32\n      - MULTITHREAD_ENABLED=true\n      - COMMUNITY_SERVER=true\n      - RCON_ENABLED=true\n      - RCON_PORT=25575\n      - PUBLIC_IP=10.0.0.5\n      - PUBLIC_PORT=8211\n      - SERVER_NAME=jammsen-docker-generated-###RANDOM###\n      - SERVER_DESCRIPTION=Palworld-Dedicated-Server running in Docker by jammsen\n      - SERVER_PASSWORD=serverPasswordHere\n      - ADMIN_PASSWORD=adminPasswordHere\n    volumes:\n      - ./game:/palworld
    \n\n\n\n

    Créez ensuite des sous-répertoires du jeu sur votre node Docker dans le répertoire de serveur de jeu (exemple: /srv/palworld) et donnez-lui des permissions complètes avec la commande suivante :

    \n\n\n\n
    chmod 777 game
    \n\n\n\n

    Ou faites tout simplement. :

    \n\n\n\n
    chown -R 1000:1000 game/
    \n\n\n\n

    Pensez à bien configurer le port-forwarding ou le NAT pour les ports affichés dans le fichier Docker Compose puis démarrez le serveur avec la commande :

    \n\n\n\n
    docker-compose up -d
    \n\n\n\n

    Après la première exécution, arrêtez le serveur, configurez-le en éditant le fichier suivant puis relancez-le quand vous avez terminé :

    \n\n\n\n
    game/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
    \n\n\n\n

    Voici les variables dispo au niveau de la conf docker :

    \n\n\n
    \n
    \"\"
    \n\n\n
    \r\n

    Vous pouvez également générer un fichier de config très facilement avec des outils comme celui-ci.

    \n\n\n
    \n
    \"\"
    \n\n\n

    En allant sur le Github ou sur le hub Docker, vous aurez toutes les infos avec encore plus de détails.

    \n\n\n\n

    Et bien sûr, toute la documentation pour les administrateurs de serveurs Palworld est disponible ici. Vous y trouverez même un guide d’optimisation.

    \n\n\n\n

    Au boulot maintenant !

    \n", + "category": "Jeu vidéo", + "link": "https://korben.info/palworld-hebergement-gratuit-jeu-guide.html", + "creator": "Korben", + "pubDate": "Wed, 24 Jan 2024 14:29:37 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": true, + "favorite": false, + "created": false, + "tags": [], + "hash": "fab86c64fbb6a1f69aba9da768e60ca7", + "highlights": [] + }, + { + "title": "ShortGPT – Pour automatiser la création de vidéos pour TikTok et Instagram", + "description": "Les plateformes comme TikTok et Instagram regorgent de vidéos avec des \"facts\" qui captivent. ShortGPT, un outil open source, permet de créer ces vidéos en plusieurs langues, en compilant des faits aléatoires ou choisis et des contenus Reddit. Il nécessite des clés API et offre une installation locale ou via Google Colab sans installations.", + "content": "

    \"\"

    \n

    Si vous trainez sur TikTok (pour les jeunes d’esprit) ou encore Instagram (pour les boomers d’esprit), vous êtes sans doute déjà tombé sur des vidéos avec des « facts », c’est à dire des faits historiques, scientifiques ou encore des trucs tirés tout droit de Reddit, qui vous ont captivé avec une petite musique de merde et un gameplay de jeu vidéo quelconque en fond.

    \n\n\n\n
    \r\n

    Ce genre de format est calibré pour endormir ce qui vous reste de matière grise fondue et vous faire rester sur la vidéo. Là où ça devient drôle, c’est que vous allez pouvoir générer ce genre de format vidéo grâce à ShortGPT. Cet outil open source (décliné également en site payant) supporte de nombreuses langues et peu aller chercher automatiquement des « faits » random ou sur le sujet de votre choix, ainsi que des sujets sur Reddit et compiler tout ça dans une vidéo avec une voix OFF.

    \n\n\n
    \n
    \"\"
    \n\n\n

    Vous pouvez lui demander autant de shorts que vous voulez. Il vous faudra juste une clé API OpenAI, Pexels (pour les images) et pour avoir une voix de qualité, vous pouvez aussi ajouter votre clé ElevenLabs (mais pas obligatoire puisque c’est payant).

    \n\n\n\n

    Voici techniquement comment c’est gaulé :

    \n\n\n
    \n
    \"\"
    \n\n\n

    Vous avez deux choix pour installer ShortGPT. Si vous êtes du genre à aimer avoir tout sur votre ordinateur, vous pouvez installer les pré-requis localement en suivant la doc du Github. Cependant, si vous êtes comme moi et que vous préférez ne pas vous embêter avec des installations interminables, vous pouvez utiliser Google Colab. C’est gratuit et sans installation.

    \n\n\n\n
    \n\n
    \n\n\n\n
    \r\n

    Evidemment, y’a assez de contenu merdique sur Internet pour pas en rajouter, mais ça peut-être une bonne base de départ, de reprendre ce code, pour le modifier et en faire un outil de génération de vidéos un peu plus sympa et mieux adapté à votre public.

    \n\n\n\n

    A découvrir ici.

    \n", + "category": "Vidéo", + "link": "https://korben.info/automatiser-creation-videos-tiktok-instagram-shortgpt.html", + "creator": "Korben", + "pubDate": "Wed, 24 Jan 2024 08:00:00 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": true, + "favorite": false, + "created": false, + "tags": [], + "hash": "a6714a431f4de2810ffac37f79acd614", + "highlights": [] + }, + { + "title": "Radion – Pour découvrir vos prochains jeux vidéos", + "description": "Radion est une application gratuite pour iOS/Android, décrite comme une encyclopédie pour les gamers, permettant de suivre l'actualité des jeux vidéo, de gérer sa collection, de suivre ses progrès et de recevoir des recommandations personnalisées. Elle offre également une plateforme sociale pour le partage d'expériences entre joueurs.", + "content": "

    \"\"

    \n

    Dimitri, lecteur de Korben.info depuis pas mal d’années, m’a contacté le mois dernier, pour me parler de Radion, son application iOS / Android gratuite qui permet de suivre l’actualité jeux vidéos, les sorties notamment et de tout savoir sur tous les jeux qui existent, de lire leurs critiques, la durée de jeu estimé, de voir des tas d’images du jeu et j’en passe. Cette application, véritable encyclopédie pour les gamers, regorge d’informations et de fonctionnalités qui va transformer la manière dont vous suivez vos jeux et futurs jeux préférés.

    \n\n\n
    \n
    \"\"
    \n\n\n
    \r\n

    Mais Radion n’est pas juste une vitrine pour les jeux. Elle permet de marquer les jeux que vous possédez et de suivre votre avancement dans ces derniers. Parfait pour garder une trace de vos exploits 🙂

    \n\n\n
    \n
    \"\"
    \n\n\n

    Et surtout, en fonction de ce que vous aimez, des consoles que vous possédez et des jeux que vous attendez, l’IA de Radion peut vous recommander les prochains titres qui seront à coup sûr des hits pour vous dans votre petit cœur.

    \n\n\n\n

    Bref, vous l’aurez compris, Radion est aux jeux vidéos, ce que Trakt.tv est aux séries, pour ceux qui connaissent. Radion est à la fois un journal de bord pour vos aventures ludiques et une plateforme pour découvrir de nouveaux horizons dans le monde des jeux.

    \n\n\n
    \n
    \"\"
    \n\n\n

    Radion sert aussi de plateforme sociale. Le partage de fiches de jeux entre amis n’est pas seulement un moyen de recommandation, c’est un outil pour tisser des liens, pour créer des discussions. En partageant vos expériences de jeu, vos découvertes, et même vos critiques, Radion devient un espace d’échange et de partage pour la communauté des gamers.

    \n\n\n\n
    \r\n

    On verra ensuite comment ça évolue. Perso, je trouve que des conseils pour passer les niveaux, en mode ETAJV à l’ancienne, ce serait bien cool à rajouter. Tout ce que je peux vous dire c’est que le dev travaille sur l’import / synchronisation des jeux avec Steam / Xbox / PlayStation directement dans l’application. Hâte de voir ce que ça va donner.

    \n\n\n\n

    A découvrir ici pour iOS et Android.

    \n", + "category": "Infos", + "link": "https://korben.info/decouverte-jeux-videos-avec-radion.html", + "creator": "Korben", + "pubDate": "Tue, 23 Jan 2024 08:00:00 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": true, + "favorite": false, + "created": false, + "tags": [], + "hash": "131250b6aae198228cd33bba92b98f3d", + "highlights": [] + }, + { + "title": "Surfshark VPN pour les expatriés et les nomades", + "description": "— Article en partenariat avec Surfshark VPN — Parmi les nombreux aspects intéressants d’un VPN, on va souvent citer le fait de pouvoir éviter la censure, ou d’accéder à des services dans un pays qui ne les autorisent pas. Sans aller jusque là, c’est un outil qui sera aussi assez utile … Suite", + "content": "

    \"Surfshark

    \n

    — Article en partenariat avec Surfshark VPN

    \n\n\n\n

    Parmi les nombreux aspects intéressants d’un VPN, on va souvent citer le fait de pouvoir éviter la censure, ou d’accéder à des services dans un pays qui ne les autorisent pas. Sans aller jusque là, c’est un outil qui sera aussi assez utile dans certains cas plus classiques. Comme c’est le cas des expatriés qui vont habiter un autre pays.

    \n\n\n\n

    Et ici je ne parle pas forcément d’aller dans un pays comme Chine & Co, mais simplement d’aller vivre ailleurs. Dans votre lieu d’origine, vous aviez vos petites habitudes, par exemple pour vous connecter à votre banque ou d’autres services ayant des informations sensibles vous concernant (impôts, mutuelle …). Or, une fois expatrié vous allez peut-être commencer par devoir vous connecter à des wifi-publics, des réseaux moins sécurisés, etc. Surfshark VPN va vous aider à sécuriser vos données (via chiffrement AES-256 et IKEv2/IPse) afin que vos connexions, votre nouveau fournisseur d’accès & co ne puissent pas voir à quoi vous vous connecter et ce que vous faites.

    \n\n\n\n

    Un souci récurrent que beaucoup risquent de rencontrer c’est que l’accès à votre compte bancaire à vos données de santé ou divers sites gouvernementaux soit plus difficilement accessible depuis une adresse IP étrangère (voire totalement impossible). En choisissant un serveur situé dans le pays d’origine, le VPN vous aide à éliminer cet obstacle. Et cela peut s’avérer sacrément pratique lorsque vous êtes dans votre nouveau pays et qu’il vous faut demander des documents administratifs à distance.

    \n\n\n
    \n
    \"\"
    \n\n\n

    Il y a donc tout intérêt à opter pour une solution qui possède des serveurs dans un maximum d’endroits du monde. Et qui soient rapides. C’est le cas pour Surfshark puisque ce sont plus de 3200 serveurs, situés dans plus de 100 pays, et dont la plupart ont maintenant des vitesses de 10 Gb/s.

    \n\n\n\n

    Autre aspect positif d’un VPN que j’ai déjà abordé : les gains sur les prix des billets d’avion ou de train. Parce qu’en dehors de ceux qui veulent totalement couper les ponts avec leur vie passée, les expats ont souvent le mal du pays au bout d’un moment. Et pouvoir gratter quelques réductions en comparant les prix depuis plusieurs localisations, c’est toujours ça de gagné.

    \n\n\n
    \n
    \"Surfshark
    \n\n\n

    Quant à vos films et séries hexagonales préférées vous n’aurez pas besoin de les « binger » avant le départ. Vous garderez l’accès à votre cher Netflix France (ou autres services similaires) depuis votre nouvel emplacement. Vous vous expatriez en famille ? Aucun souci non plus puisque Surfshark VPN vous permet toujours de connecter un nombre d’appareils illimités (et en simultané) sur un seul compte. Smartphones, laptop, ordinateur, smartTV et même votre console, ils seront tous couverts. Parmi ses autres fonctionnalités utiles :

    \n\n\n\n
      \n
    • bouton kill switch
    • \n\n\n\n
    • split tunneling
    • \n\n\n\n
    • MultiHop dynamique
    • \n\n\n\n
    • protéger contre le leak DNS
    • \n\n\n\n
    • GPS-Spoofing pour Android
    • \n\n\n\n
    • changement d’IP automatique ou IP dédiée
    • \n\n\n\n
    • \n
    \n\n\n\n

    Bref pour continuer votre vie numérique avec le moins de perturbations possible, le VPN est une solution qui devrait vous aider. Et vous pouvez en bénéficier pour moins de 2.5€/mois TTC (avec l’abonnement 2 ans). Plutôt honnête pour dormir sur vos 2 oreilles durant cette transition personnelle 😉 Et c’est satisfait ou remboursé durant 30 jours. Au niveau des paiements acceptés vous avez à peu près toutes les options : CB, PayPal, Apple/Amazon/Google Pay et même les cryptomonnaies (maintenant qu’elles se portent mieux, c’est un peu plus intéressant).

    \n\n\n\n

    Partez l’esprit tranquille avec Surfshark VPN !

    \n", + "category": "VPN", + "link": "https://korben.info/surfshark-vpn-expatries.html", + "creator": "Korben", + "pubDate": "Mon, 22 Jan 2024 08:19:00 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": true, + "favorite": false, + "created": false, + "tags": [], + "hash": "bf8de152a9c2e7b0b8f662c7ad2a7648", + "highlights": [] + }, + { + "title": "WebDB – Vos bases de données enfin accessibles facilement", + "description": "Alexandre a développé un IDE open source pour les bases de données nommé WebDB, qui facilite l'administration et la gestion des données. Avec une interface intuitive, WebDB permet une découverte aisée des serveurs, une gestion des données simplifiée, et un éditeur de requêtes efficace avec autocomplétion. Il supporte les mises à jour par lots, l'édition de colonnes, les relations SQL, et intègre ChatGPT ainsi que des fonctionnalités d'import/export de données. WebDB est une solution complète, adaptée à tous les niveaux d'expérience.", + "content": "

    \"\"

    \n

    Alexandre, lecteur de Korben.info depuis une bonne dizaine d’années, m’a fait le plaisir de me contacter pour me montrer l’outil qu’il développe depuis maintenant un an. J’ai trouvé ça très cool alors je vais le partager avec vous. Il s’agit d’un IDE totalement open source dédié aux bases de données. Cet outil libre simplifie les interactions que nous avons avec nos bases de données, ce qui rend leur administration et la gestion des données plus intuitives et surtout beaucoup plus facile. Vous allez voir !

    \n\n\n\n
    \r\n

    Tout d’abord, WebDB simplifie la découverte de serveurs et la connexion à ces derniers, grâce à un système de scan intelligent. Il détecte les ports utilisés pour chaque base de données et permet d’ajouter des hôtes spécifiques à analyser. Cela élimine la corvée de récupérer des mots de passe, car WebDB teste automatiquement des identifiants populaires. Pensez quand même à les changer à un moment pour des questions de sécurité 🙂

    \n\n\n\n

    En explorant plus profondément WebDB, on découvre que l’exploration de données est beaucoup plus facile et agréable que dans n’importe quel PhpMyAdmin ou autre. En seulement trois clics, on peut comme ça parcourir, mettre à jour ou supprimer des données. Le filtrage des données SQL et NoSQL se fait directement depuis l’explorateur, avec un design optimisé pour les clés étrangères et les ObjectID relationnels. Et ce n’est pas tout : WebDB permet de mettre à jours vos données par lots en utilisant des fichiers JSON. Pratiquement quand vous avez de la quantité à mettre à jour.

    \n\n\n
    \n
    \"\"
    \n\n\n

    Le cœur de l’IDE WebDB réside dans son éditeur de requêtes. Avec de l’autocomplétion pour SQL et les structures spécifiques au serveur, rédiger des requêtes se fait en un clin d’œil. Les requêtes CRUD (create, read, update, and delete) pré-construites sont sauvegardées automatiquement et peuvent être marquées comme favorites.

    \n\n\n
    \n
    \"\"
    \n\n\n

    La modification de colonnes SQL ou de champs NoSQL est également plus intuitive grâce à WebDB. Le logiciel propose tous les types possibles en fonction de la base de données et facilite la modification des colonnes avec des fonctions de casting intelligentes, applicables tant aux bases de données SQL qu’à NoSQL. Cette fonctionnalité permet une grande flexibilité et s’adapte à divers contextes linguistiques.

    \n\n\n
    \n
    \"\"
    \n\n\n
    \r\n

    Voilà… Sinon, WebDB gère également des éléments complexes comme les procédures SQL, les fonctions, et les types de données spécifiques. Il prend en charge les validateurs MongoDB et les contraintes SQL, offrant une compréhension complète de la base de données.

    \n\n\n\n

    La gestion des relations SQL dans WebDB est également totalement transparente grâce à une vue intuitive. L’outil déduit les relations pour aider à générer des données étrangères et à comprendre la structure de la base de données avec une facilité déconcertante. En plus, le versioning de base de données est une autre caractéristique clé de WebDB. Suivant les modifications et intégrant Git, il permet de revenir facilement à n’importe quelle version antérieure.

    \n\n\n\n

    L’intégration de ChatGPT dans WebDB apporte également un peu de « cerveau » à l’outil. ChatGPT offre des réponses précises en fonction de la structure de la base de données. Cette fusion entre intelligence artificielle et gestion de données ouvre de nouvelles perspectives pour les utilisateurs, surtout pour les débutants.

    \n\n\n
    \n
    \"\"
    \n\n\n

    Le module ERD de WebDB permet également de visualiser la structure et les relations de la base de données de manière moderne et intuitive. L’exportation de ces diagrammes au format PNG ou SVG se fait en un clic, ce qui vous permettra d’illustrer vos préz ou sites web / documentation super facilement.

    \n\n\n
    \n
    \"\"
    \n\n\n

    Enfin, l’importation et l’exportation de données avec WebDB sont simplifiées, que ce soit au format natif ou JSON, garantissant une compatibilité et des performances optimales.

    \n\n\n\n

    Vous l’aurez compris, Alexandre a bien bossé et WebDB se présente vraiment comme une solution complète et avant-gardiste pour la gestion des bases de données, accessible et efficace pour tous, que vous soyez total noob ou super expert en base de données.

    \n\n\n\n
    \r\n

    Je vous invite à tester ça. C’est auto-hébergeable, ça tourne dans Docker, et y’a même une démo en ligne.

    \n", + "category": "Administration Systeme Réseau", + "link": "https://korben.info/webdb-accessibilite-facile-bases-de-donnees.html", + "creator": "Korben", + "pubDate": "Mon, 22 Jan 2024 08:00:00 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": true, + "favorite": false, + "created": false, + "tags": [], + "hash": "e3a84eb17b921880db2d27f33469feb6", + "highlights": [] + }, + { + "title": "Niolesk – Pour créer ou éditer vos diagrammes directement au format texte", + "description": "Les diagrammes dans les documents ne sont pas dessinés mais codés avec des langages comme JSON. Gissehel a créé Niolesk, une interface web qui facilite l'édition et l'affichage de ces diagrammes en s'appuyant sur Kroki. Le site permet d'éditer, importer et partager facilement les résultats.", + "content": "

    \"\"

    \n

    J’sais pas si vous savez, mais ce genre de petits diagrammes qu’on voit parfois dans des documents de recherche, sur les réseaux sociaux ou encore sur les Readme de Github, ne sont pas vraiment « dessinés ».

    \n\n\n\n
    \r\n

    Ils sont codés, ou plutôt décrits avec un langage comme du JSON, du PlantUML, DBML, GraphViz, Pikchr et j’en passe. C’est pourquoi, pour vous faciliter la vie, Gissehel, lecteur de Korben.info, a mis au point ce site nommé Niolesk qui permet d’afficher, et d’éditer ce genre de diagramme.

    \n\n\n
    \n
    \"\"
    \n\n\n

    Il s’agit d’une interface web qui vient se mettre par-dessus Kroki, un outil capable de ce genre de rendu. Sauf que là, avec Niolesk, vous pouvez éditer et importer directement les diagrammes. Ça apporte donc un peu plus de souplesse à Kroki et ses API.

    \n\n\n
    \n
    \"\"
    \n\n\n

    Une fois que vous avez le résultat qui vous convient, vous pourrez alors récupérer le contenu sous la forme d’une URL (image, markdowns…etc.) et ensuite l’utiliser dans vos propres documents.

    \n\n\n\n

    Le mieux c’est encore d’aller l’essayer sur vos propres schémas (ou ceux que ChatGPT vous générera :))

    \n\n\n\n
    \r\n

    Merci Gissehel pour le partage et bravo d’avoir codé ce site !

    \n", + "category": "Service web", + "link": "https://korben.info/creer-editer-diagrammes-format-texte-niolesk.html", + "creator": "Korben", + "pubDate": "Sun, 21 Jan 2024 08:00:00 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": true, + "favorite": true, + "created": false, + "tags": [], + "hash": "38cb2efcb4c743752ab6f2a087dd891c", + "highlights": [] + }, + { + "title": "ProcDump débarque sous Linux !", + "description": "ProcDump, un outil Sysinternals pour surveiller et déboguer les processus Linux, permet de créer des dumps lors de pics d'utilisation CPU, de fuites de mémoire ou d'exceptions. Simple d'utilisation, il suffit d'exécuter une commande avec le PID du processus. Il offre des options pour sauvegarder les dumps, créer des vidages multiples, surveiller l'utilisation du processeur et de la mémoire, avec des seuils personnalisables. ProcDump est désormais disponible pour les distributions Linux comme CentOS, Ubuntu, et Fedora.", + "content": "

    \"\"

    \n

    Les plus barbus d’entre vous qui utilisent encore Linux connaissent bien cet outil de Sysinternals baptisé Procdump. Pour rappel, ProcDump est un outil de surveillance de processus et de débogage conçu pour permettre aux administrateurs système et aux développeurs de capturer des images de processus (des dumps) lorsqu’un processus atteint un certain critère, comme une utilisation élevée du CPU, une fuite de mémoire, ou une exception non gérée. Cela peut être utile pour identifier la cause profonde des pannes.

    \n\n\n\n
    \r\n

    Et bien bonne nouvelle pour les Linuxiens, puisque Sysinternals a également sorti ProcDump pour Linux. Ca fait tout pareil que son grand frère sous Windows et c’est compatible avec des distraits comme CentOS, Ubuntu ou encore Fedora.

    \n\n\n\n

    Utilisation de base

    \n\n\n\n

    Alors, c’est simple comme bonjour. Vous voulez garder un œil sur un processus particulier ? Rien de plus facile avec ProcDump. Tapez cette commande magique :

    \n\n\n\n

    sudo procdump [PID du processus]

    \n\n\n\n
    \r\n

    Par exemple, pour espionner ce qui se passe dans le processus avec le PID 1234, lancez :

    \n\n\n\n

    sudo procdump 1234

    \n\n\n\n

    Et pouf ! Vous avez un joli vidage de mémoire à analyser. Mais attendez, il y a plus ! Vous voulez sauvegarder votre trésor ? Indiquez simplement un nom de fichier ou un répertoire :

    \n\n\n\n

    sudo procdump 1234 mondump.dmp

    \n\n\n\n

    Création de plusieurs vidages

    \n\n\n\n

    On passe à la vitesse supérieure ! Avec l’option -n, vous pouvez créer une série de vidages. Imaginez, vous pourriez avoir non pas un, mais TROIS vidages, en tapant :

    \n\n\n\n
    \r\n

    sudo procdump -n 3 1234

    \n\n\n\n

    Et si vous êtes du genre impatient, réglez l’intervalle entre chaque vidage avec -s :

    \n\n\n\n

    sudo procdump -n 3 -s 5 1234

    \n\n\n\n

    Trois vidages, toutes les 5 secondes. C’est pas génial, ça ?

    \n\n\n\n

    Surveillance de l’utilisation du processeur

    \n\n\n\n

    Et pour les mordus de performances, ProcDump peut aussi surveiller l’utilisation du processeur. Vous voulez un rapport dès que ça dépasse 65 % ? Facile :

    \n\n\n\n
    \r\n

    sudo procdump -c 65 1234

    \n\n\n\n

    Ou pourquoi pas définir une plage ? Entre 10 % et 65 % par exemple :

    \n\n\n\n

    sudo procdump -cl 10 -c 65 1234

    \n\n\n\n

    Surveillance de l’utilisation de la mémoire

    \n\n\n\n

    Enfin, pour les obsédés de la mémoire, il y a l’option -m. Vous serez alerté dès que le processus dépassera les 100 Mo :

    \n\n\n\n

    sudo procdump -m 100 1234

    \n\n\n\n
    \r\n

    Et pour les plus gourmands, spécifiez plusieurs seuils :

    \n\n\n\n

    sudo procdump -m 100,200,300 1234

    \n\n\n\n

    Allez, je ne vais pas vous faire l’article sur toutes les possibilités de cet outil de compét’, mais si vous êtes un Linuxien dans l’âme, c’est du caviar !

    \n\n\n\n

    Pour installer ProcDump sous Linux, je vous renvoie à la documentation ici. Les binaires et le reste des explications est ici.

    \n", + "category": "Linux", + "link": "https://korben.info/procdump-now-available-for-linux.html", + "creator": "Korben", + "pubDate": "Sat, 20 Jan 2024 08:00:00 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": true, + "favorite": false, + "created": false, + "tags": [], + "hash": "371afdffdee957a6b89475f62fa6ceea", + "highlights": [] + }, + { + "title": "PR-Agent – Pour automatiser l’analyse des Pull Requests et bien d’autres choses sur vos projets Github, Gitlab…etc", + "description": "PR-Agent de CodiumAI est un outil open-source aidant les développeurs à examiner efficacement les demandes d'extraction. Compatible avec GitHub, Gitlab et Bitbucket, il offre des fonctionnalités comme l'auto-description, l'auto-revue, la réponse aux questions et les suggestions de code. Facile à utiliser, il automatise le processus d'examen et encourage les contributions communautaires.", + "content": "

    \"\"

    \n

    Si vous contribuez à des projets open source sur Github, Gitlab ou encore Bitbucket et que vous devez vous palucher tous les jours des tonnes d’issues, de questions et des pull requests, voici un outil propulsé avec de l’IA qui devrait bien vous rendre service.

    \n\n\n\n
    \r\n

    Cet outil c’est PR-Agent et c’est développé par CodiumAI. Il s’agit d’un agent IA utilisant GPT-4 capable de vous soulager en générant des descriptions de pull request claires et concises de manière automatique, de faire de la revue automatique de code, ou tout simplement répondre aux questions que les gens posent et reposent sans cesse.

    \n\n\n\n

    PR-Agent est également capable, un peu à la manière d’un Github Copilot, de faire des suggestions pour améliorer le code qui se trouve sur votre dépôt, et bien sûr d’écrire les commits si besoin.

    \n\n\n\n

    Pour cela, une fois que PR-Agent est lancé, il suffit d’employer les commandes suivantes :

    \n\n\n
    \n
    \"\"
    \n\n\n
      \n
    • Description automatique (/describe) : Génère automatiquement une description du PR (Pull Request) – titre, type, résumé, description du code et étiquettes.
    • \n\n\n\n
    • Auto Review (/review) : Feedback ajustable sur le thème principal du PR, son type, les tests pertinents, les problèmes de sécurité, le score, et diverses suggestions pour le contenu du PR.
    • \n
    \n\n\n
    \n
    \"\"
    \n\n\n
      \n
    • Réponse aux questions (/ask …) : Réponse à des questions en texte libre sur le PR.
    • \n\n\n\n
    • Suggestions de code (/improve) : Suggestions de code committable pour améliorer le PR.
    • \n\n\n\n
    • Mise à jour du Changelog (/update_changelog) : Mise à jour automatique du fichier CHANGELOG.md avec les changements du PR.
    • \n\n\n\n
    • Trouver un problème similaire (/similar_issue) : Récupère et présente automatiquement les problèmes similaires.
    • \n\n\n\n
    • Ajouter de la documentation (/add_docs) : Ajoute automatiquement de la documentation aux fonctions/classes non documentées dans le PR.
    • \n\n\n\n
    • Générer des étiquettes personnalisées (/generate_labels) : Suggère automatiquement des étiquettes personnalisées basées sur les changements de code du PR.
    • \n
    \n\n\n\n

    Bref, gros, gros gain de temps. Si vous voulez le tester avant de le déployer sur vos dépôts, c’est possible sur le dépôt public de Codium AI en appelant l’agent comme ceci : @CodiumAI-Agent /COMMAND

    \n\n\n
    \n
    \"\"
    \n\n\n
    \r\n

    À vous de jouer maintenant !

    \n\n\n\n

    PR Agent est disponible ici et ça peut s’installer directement via Docker.

    \n", + "category": "Développement", + "link": "https://korben.info/outil-open-source-pr-agent-codiumai-ameliorer-examen-demandes-extraction.html", + "creator": "Korben", + "pubDate": "Fri, 19 Jan 2024 08:00:00 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": true, + "favorite": false, + "created": false, + "tags": [], + "hash": "49fa5d8c0b91775f2975539cf38ec5a7", + "highlights": [] + }, + { + "title": "Plane – Une bonne alternative à JIRA, Asana ou Linear pour mener vos projets à bien !", + "description": "Plane est un outil open source à autohéberger pour la gestion de projets, actuellement en développement. Il permet de suivre les tâches et sprints, d'intégrer des pièces jointes, et offre des fonctionnalités telles que des workflows personnalisés, des notifications multiplateformes, et une API. Compatible avec GitHub et Jira, il propose aussi de la documentation intégrée, des sprints planifiables, et un système de recherche rapide.", + "content": "

    \"\"

    \n

    Vous êtes vous déjà demandé pourquoi tous vos projets partaient en couille ?

    \n\n\n\n
    \r\n

    C’est probablement parce que vous n’avez pas encore trouvé le bon outil pour les planifier ! C’est pourquoi aujourd’hui, je tiens à vous présenter un projet open source à autohéberger qui s’appelle Plane !

    \n\n\n\n

    Oui, comme l’avion. Bien qu’encore en développement, cet outil, est déjà suffisamment cool pour vous donner envie de l’utiliser afin de suivre vos tâches, vos sprints et autres feuilles de route.

    \n\n\n
    \n
    \"\"
    \n\n\n

    L’interface est plutôt agréable et vous permettra d’afficher les projets, d’y ajouter des pièces jointes, de créer des workflows maison, mais également d’importer toutes les tâches directement depuis d’autres outils comme Github ou Jira. Et bien sûr recevoir des notifs dans Slack, Discord et vos propres outils puisqu’il y a même une API.

    \n\n\n\n

    Vous pouvez également utiliser des cycles pour planifier des sprints, diviser les projets en modules et créer des filtres personnalisés pour trier les informations comme bon vous semble. Plane offre également la possibilité de faire de la documentation directement au fur et à mesure du développement de votre projet et tout s’intègre parfaitement à Github pour conserver à la fois votre code et vos issues synchronisées avec Plane.

    \n\n\n\n
    \r\n

    Vous verrez, Plane est assez plaisant à prendre en main puisqu’il y a même Command K, un genre d’interface rapide à Spotlight pour chercher des tâches, créer de nouvelles actions….etc. sans oublier un petit bloc-notes propulsé à base de ChatGPT pour les grosses feignasses qui n’aiment pas écrire.

    \n\n\n\n

    Si ça vous branche, il n’y a plus qu’à découvrir Plane et kiffer la vie de projets ! Pour apprendre à l’installer avec Docker, c’est par ici.

    \n", + "category": "Service web", + "link": "https://korben.info/alternative-jira-asana-linear-gestion-projet-plane.html", + "creator": "Korben", + "pubDate": "Thu, 18 Jan 2024 08:00:00 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": true, + "favorite": false, + "created": false, + "tags": [], + "hash": "8ab7298303005fa048c8cc744d39feac", + "highlights": [] + }, + { + "title": "SFTPGo – Le serveur SFTP ultime pour vos transferts de fichiers", + "description": "SFTPGo est un serveur SFTP complet et hautement configurable qui facilite le partage et le transfert de fichiers. Il prend en charge plusieurs backends de stockage et fonctionnalités avancées, avec une API REST et une interface WebAdmin UI. Le projet est open source, disponible sur différentes plateformes et s'appuie sur des dons et parrainages. SFTPGo est compatible avec plusieurs systèmes d'exploitation et solutions de stockage, offrant une expérience utilisateur simplifiée et sécurisée.", + "content": "

    \"\"

    \n

    Imaginez que vous deviez partager des fichiers avec vos collaborateurs, travailler sur des projets avec des personnes situées aux quatre coins du monde ou simplement sauvegarder vos photos de vacances, mais que vous ne savez pas par quoi commencer ?

    \n\n\n\n
    \r\n

    Et bien, ne cherchez plus, SFTPGo est là pour vous faciliter la vie.

    \n\n\n\n

    SFTPGo c’est un serveur SFTP open source, complet et hautement configurable qui supporte HTTP/S, FTP/S ou encore WebDAV. Il prend en charge plusieurs backends de stockage : du système de fichiers local avec ou sans chiffrement, du stockage d’objets S3, du Google Cloud Storage, de l’Azure Blob Storage, et bien sûr, SFTP.

    \n\n\n\n

    L’outil est gratuit, mais si vous voulez le soutenir ou profiter d’un support technique, il faudra porter la main à la bourse ^^. C’est donc plus Open Bourse qu’Open Source.

    \n\n\n
    \n
    \"\"
    \n\n\n

    Parmi les fonctionnalités offertes, on trouve la possibilité de créer des dossiers virtuels privés ou partagés, des commandes personnalisables, des comptes virtuels stockés, de l’isolement chroot, des autorisations virtuelles par utilisateur et par répertoire, ainsi qu’une API REST, un gestionnaire d’événements, une interface d’administration…etc.

    \n\n\n\n
    \r\n

    SFTPGo facilite le paramétrage d’une authentification multifacteur personnalisable. Authentification partielle, par utilisateur et avec plusieurs méthodes, incluant l’authentification LDAP/Active Directory et des programmes externes. Il supporte l’administration des utilisateurs, le chiffrement des données, la modification dynamique des utilisateurs, les quotas, la limitation de bande passante et de débit.

    \n\n\n
    \n
    \"\"
    \n\n\n

    Pour sécuriser vos données, SFTPGo propose une limitation du nombre de sessions simultanées avec ou sans filtrage par IP ou dossier. Terminaison automatique des connexions inactives, gestion de liste de blocage, filtrage Geo-IP et il est bien sûr compatible avec Git, SCP, rsync, FTP/S et WebDAV.

    \n\n\n\n

    Pour vous faciliter la vie, SFTPGo propre aussi des analyses de performance, des logs ultra-précis et un support Infrastructure as Code (IaC) via Terraform. Il est compatible avec Linux, macOS, Windows et FreeBSD et nécessite Go ainsi qu’un serveur SQL. Des binaires et une image Docker officielle sont également disponibles.

    \n\n\n\n

    SFTPGo est disponible sur plusieurs plateformes, y compris les dépôt Ubuntu, Void Linux, AWS Marketplace, Azure Marketplace et Elest.io. Il est également disponible pour Windows et macOS via des packages tels que winget, Chocolatey et Homebrew. Et il existe des portages pour FreeBSD et DragonFlyBSD.

    \n\n\n\n

    Voilà, si vous cherchez un serveur SFTP totalement configurable (y’a même un système de plugins) et supportant S3, Google Cloud, Azure et j’en passe, celui-ci est un must-have !

    \n", + "category": "Administration Systeme Réseau", + "link": "https://korben.info/sftpgo-solution-complete-partage-fichiers-securise.html", + "creator": "Korben", + "pubDate": "Wed, 17 Jan 2024 08:00:00 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "c65ce2d02efcc29adb02e694a96822c5", + "highlights": [] + }, + { + "title": "DietPi – Une Debian ultra légère pour Raspberry Pi, Odroid, PINE64…etc optimisée et personnalisable", + "description": "DietPi est un OS léger basé sur Debian, optimisé pour minimiser la consommation de CPU et RAM, idéal pour les appareils tels que Raspberry Pi. Il permet une économie significative des ressources, offre des paramètres personnalisables, des mises à jour automatiques, et est compatible avec divers matériels, y compris des machines virtuelles. DietPi inclut un utilitaire de sauvegarde et convient pour divers projets, allant des serveurs NAS aux expériences IoT.", + "content": "

    \"\"

    \n

    Si vous aimez les ordinateurs un peu légers, type Raspberry Pi, Odroid et j’en passe, alors DietPi est fait pour vous. Il s’agit d’un système d’exploitation basé sur une Debian allégée dans le but de consommer le moins de CPU et de RAM possible.

    \n\n\n\n
    \r\n

    Voici un tableau qui compare DietPi avec Raspberry Pi OS Lite (64 bits). On peut y voir que niveau RAM, on économise 58%, sur le CPU c’est 39% en moyenne et en matière d’espace disque, c’est plus léger de 41%. Évidemment, cela se ressent sur la rapidité du boot, puisque c’est plus rapide à démarrer de 73%.

    \n\n\n
    \n
    \"\"
    \n\n\n

    Avec DietPi, vous bénéficiez de paramètres personnalisables pour configurer votre système selon vos besoins, et vous pouvez facilement gérer les priorités de vos logiciels. De plus, le système prend en charge les mises à jour automatiques et l’automatisation de l’installation grâce à un dietpi.txt dans lequel vous pouvez spécifier votre config (genre les accès wifi, l’activation du serveur ssh…etc).

    \n\n\n\n

    DietPi est également livré avec un utilitaire de Backup ce qui vous permettra très facilement de sauvegarder et de restaurer votre installation.

    \n\n\n\n

    Comme je le disais, DietPi est compatible avec une variété d’ordinateurs, notamment les modèles Raspberry Pi, Odroid, PINE A64 et bien d’autres.

    \n\n\n
    \n
    \"\"
    \n\n\n
    \r\n

    Les machines virtuelles telles que Hyper-V, Virtualbox, Vmware, Parallels, UTM et Proxmox sont également prises en charge par DietPi, ce qui vous permet de l’utiliser lorsque les performances des micro-ordis sont insuffisantes. Ça peut même tourner sur un bon vieux PC x86/64.

    \n\n\n
    \n
    \"\"
    \n\n\n

    Pour en savoir plus sur DietPi et comment l’utiliser, je vous invite à consulter le site officiel ici. Vous y trouverez des informations détaillées sur les différentes fonctionnalités offertes par DietPi, ainsi que des conseils pour bien démarrer avec ce système d’exploitation léger et optimisé.

    \n\n\n\n

    En résumé, DietPi est un choix fantastique pour ceux qui souhaitent tirer le meilleur parti de leur matériel, tout en minimisant la consommation de ressources. Qu’il s’agisse de créer un serveur NAS, d’expérimenter avec des projets IoT ou simplement de vous familiariser avec le monde des SBC (Single Board Computer), DietPi vous permettra de vous lancer rapidement et en toute simplicité.

    \n", + "category": "Raspberry", + "link": "https://korben.info/dietpi-debian-ultra-legere-optimisee-raspberry-pi-odroid-pine64.html", + "creator": "Korben", + "pubDate": "Tue, 16 Jan 2024 08:00:00 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "a0ef013de3e5927da6c9401844252e54", + "highlights": [] + }, + { + "title": "Du transferts de fichiers simplifiés avec Aim !", + "description": "\"Aim\" est un outil en ligne de commande pour télécharger et uploader des fichiers avec support de reprise sur déconnexion ou échec. Installable via \"cargo install aim\", il est disponible pour Linux, macOS et Docker. Il gère les protocoles http, sftp, ftp, ssh et S3, et offre une mise à jour automatique avec \"aim --update\". Aim supporte divers formats de sortie, l'authentification sécurisée et un mode interactif pour naviguer dans les fichiers.", + "content": "

    \"\"

    \n

    Aim est un outil en ligne de commande qui vous permet de télécharger et d’uploader des fichiers tout en prenant en charge la reprise en cas de déconnexion ou d’échec du transfert.

    \n\n\n\n
    \r\n

    Pour l’installer, ouvrez un terminal et entrez la commande suivante :

    \n\n\n\n
    cargo install aim
    \n\n\n\n

    Des binaires pour Linux et macOS sont également disponibles ici. Sinon, y’a toujours Docker pour ceux qui aiment mettre le moindre truc en conteneur. Il peut également se mettre à jour lui-même grâce à cette commande :

    \n\n\n\n
    aim --update
    \n\n\n
    \n
    \"\"
    \n\n\n

    L’outil est capable de télécharger n’importe quoi du moment que c’est diffusé en http, sftp, ftp, ssh et S3. Pour le lancer, il suffit simplement de lui donner l’url du fichier à récupérer :

    \n\n\n\n
    aim https://domain.com/fichier.zip
    \n\n\n\n

    Et pour uploader vers un endpoint c’est :

    \n\n\n\n
    aim fichier.zip https://domain.com/destination
    \n\n\n
    \n
    \"\"
    \n\n\n
    \r\n

    Aim prend en charge plusieurs formats de sortie et vous permet de configurer des indicateurs personnalisés pour les barres de progression. Vous pouvez partager facilement des fichiers entre différentes machines et les télécharger à l’aide d’un simple navigateur.

    \n\n\n\n

    Vous pouvez par exemple partager un répertoire courant comme ceci :

    \n\n\n\n
    aim .
    \n\n\n\n

    Et à partir d’une seconde machine, accéder à ce partage :

    \n\n\n\n
    aim http://ADRESSEIP:8080
    \n\n\n\n

    Ou directement à un fichier précis :

    \n\n\n\n
    aim http://ADRESSEIP:8080/fichier.zip
    \n\n\n\n

    L’une des particularités d’Aim est sa capacité à utiliser différentes méthodes d’authentification, telles que les URL basiques, les fichiers .netrc, les clés SSH et les dossiers AWS. Cela rend l’accès aux fichiers plus sécurisé et fiable, en évitant les problèmes d’authentification courants.

    \n\n\n\n

    Aim propose également un mode interactif avec l’option -i pour naviguer dans les fichiers dispo au bout d’une URL.

    \n\n\n
    \n
    \"\"
    \n\n\n
    \r\n

    Voilà pour la petite présentation d’Aim. De quoi automatiser vos scripts de téléchargement ou d’upload très simplement.

    \n", + "category": "Linux", + "link": "https://korben.info/transfert-fichiers-facile-avec-aim.html", + "creator": "Korben", + "pubDate": "Mon, 15 Jan 2024 08:00:00 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "ac22f30506e83cc057e9bd0fdeb864f5", + "highlights": [] + }, + { + "title": "Testez +400 distros Linux directement en ligne avec Distrosea", + "description": "Chaque année, de nombreuses distributions Linux émergent, rendant le choix difficile. DistroSea facilite ce processus en offrant plus de 400 distributions Linux à essayer en ligne, sans installation. Parmi elles, on retrouve des distributions populaires pour tous les profils, avec internet activé, permettant une expérience utilisateur authentique. Visitez DistroSea.com pour démarrer rapidement et gratuitement.", + "content": "

    \"\"

    \n

    Chaque année, certaines distribs Linux sortent du lot, attirant les curieux en quête d’innovation. Mais il y a un hic, c’est qu’il en existe tellement qu’il est difficile de toutes les essayer pour trouver celle qui vous convient le mieux.

    \n\n\n\n
    \r\n

    Heureusement, j’ai une excellente nouvelle pour vous : DistroSea est là pour résoudre ce problème !

    \n\n\n\n

    Pensez à toutes ces situations, où vous avez voulu essayer une distribution Linux différente, mais la flemme de télécharger l’ISO (d’ailleurs, quelle version prendre ?), et la flemme de préparer une machine ou une VM pour la faire tourner, même en version bootable.

    \n\n\n\n

    C’est fini ça, grâce à DistroSea qui simplifie grandement ce processus en proposant plus de 400 versions de distributions Linux à essayer directement en ligne, sans rien installer sur votre machine !

    \n\n\n
    \n
    \"\"
    \n\n\n

    Parmi les distributions populaires présentes sur la plateforme, on retrouve des classiques tels que Arch Linux, CentOS Stream, Debian, Fedora, Linux Mint, openSUSE, Ubuntu et Zorin OS. Et croyez-moi, il y en a pour tous les goûts et les besoins. Que vous soyez développeur, administrateur système, étudiant, passionné de rétro-gaming ou simplement à la recherche d’un système d’exploitation alternatif, vous trouverez forcément une distribution à votre image.

    \n\n\n
    \n
    \"\"
    \n\n\n
    \r\n

    L’un des grands avantages de DistroSea, c’est qu’Internet est actif sur les distribs. Cela signifie que vous pourrez parcourir le web, tester des applications en ligne et même installer des logiciels directement depuis le navigateur. De quoi vous offrir une expérience utilisateur très proche de celle que vous auriez sur une machine physique.

    \n\n\n\n

    Pour accéder à ce formidable outil, il vous suffit de vous rendre sur DistroSea.com et de vous inscrire gratuitement. Une fois connecté, vous pourrez sélectionner la distribution Linux de votre choix et la lancer directement dans votre navigateur. Aucune installation ni configuration n’est nécessaire, vous pouvez commencer à explorer et à tester les fonctionnalités de la distribution choisie en quelques secondes.

    \n\n\n\n

    Eclatez-vous bien les Linuxiens et n’oubliez pas de prendre une douche après tout ça 😉

    \n", + "category": "Linux", + "link": "https://korben.info/testez-plus-de-400-distributions-linux-en-ligne.html", + "creator": "Korben", + "pubDate": "Sun, 14 Jan 2024 08:00:00 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "dba98b39b27d0a0c5d9c46a6de28492b", + "highlights": [] + }, + { + "title": "Arrêtez de dégouter les gens avec des selfies minables grâce à Microsoft Selfie", + "description": "Microsoft Selfie transforme vos photos en chefs-d'œuvre avec un clic grâce à la technologie de vision par ordinateur. Facile à utiliser et offrant des résultats impressionnants, cette application améliore vos portraits numériques sur iOS, Web et WeChat. Toutefois, la confidentialité et la gestion des données restent incertaines.", + "content": "

    \"\"

    \n

    Vous êtes moche, vous avez la peau grasse, des points noirs et vous vivez dans une cave mal éclairée ? Et bien j’ai enfin l’application qu’il vous faut pour réaliser vos rêves de fame !

    \n\n\n\n
    \r\n

    Cela s’appelle Microsoft Selfie et c’est un logiciel dispo sous iOS ou en version web qui vous permet de vous prendre en photo sous toutes les coutures, tel narcisse qui regarderait ses propres émissions sur C8, tout en ayant une qualité au top !

    \n\n\n\n

    Microsoft Selfie prend en compte votre âge, votre genre, le teint, l’éclairage et d’autres variables pour créer des portraits améliorés en quelques secondes. Comme ça, pas besoin de passer par la case retouche avec des filtres complexes. Vous pouvez enfin devenir influenceur de choc !

    \n\n\n
    \n
    \"\"
    \n\n\n

    Cependant, comme pour toute technologie, il y a quelques inconvénients. L’IA de Microsoft Selfie a parfois du mal avec les visages trop inclinés ou mal positionnés.

    \n\n\n\n

    Malheureusement, Microsoft n’a pas fourni de détails sur la confidentialité et la gestion des données. Il est donc recommandé de faire preuve de prudence et de ne pas utiliser l’application pour des photos sensibles ou privées. On n’essaye pas d’améliorer les photos de son zizi, donc.

    \n\n\n\n
    \r\n

    Bref, Microsoft Selfie est une excellente application pour prendre des selfies et améliorer les portraits numériques. Elle est facile à utiliser, même si vous êtes un(e) boomeur(se).

    \n\n\n\n

    Ça se télécharge ici : Microsoft Selfie.

    \n\n\n\n

    Vous ne serez pas déçu !

    \n", + "category": "iOS", + "link": "https://korben.info/microsoft-selfie-transformez-photos-en-chefs-doeuvre-numeriques.html", + "creator": "Korben", + "pubDate": "Sat, 13 Jan 2024 08:00:00 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "fb0ea5e91f6e0afdb450bbfeaa611c86", + "highlights": [] + }, + { + "title": "5 certifications Kubernetes pour prouver vos compétences en 2024", + "description": "— Article en partenariat avec Ambient IT — Alors ce début d’année ? Vous avez déjà pris vos bonnes résolutions ? Parce que si ce n’est pas le cas, j’en ai une pour vous, et qui sera (peut-être) moins fatigante que le classique « se remettre au sport ». Ou mieux, prenez … Suite", + "content": "

    \"Kubernetes\"

    \n

    — Article en partenariat avec Ambient IT —

    \n\n\n\n

    Alors ce début d’année ? Vous avez déjà pris vos bonnes résolutions ? Parce que si ce n’est pas le cas, j’en ai une pour vous, et qui sera (peut-être) moins fatigante que le classique « se remettre au sport ». Ou mieux, prenez les 2 … oui je sais, je mets beaucoup de confiance en vous, mais j’ai décidé de commencer 2024 en voyant votre bon côté.

    \n\n\n\n

    Et cette résolution, c’est de vous décider à mettre toutes les chances de votre côté si vous cherchez un boulot dans le fabuleux monde du Devops ou que vous souhaitez évoluer dans votre position (demander une augmentation, etc.). En effet, les formations Kubernetes proposées par Ambient IT sont parmi les plus reconnues. Ça va booster votre niveau d’employabilité pour les recruteurs, ou vous permettre de mieux négocier votre salaire … ce n’est jamais inutile ! En plus, vous avez le choix du format entre présentiel et classe virtuelle, vous n’aurez même pas l’excuse du froid ! Autant rentabiliser votre temps à la maison cet hiver 😉

    \n\n\n
    \n
    \"\"/
    \n\n\n

    Ce ne sont pas moins de 5 certifications officielles issues de la Fondation Linux qui sont disponibles : KCNA, KCSA, CKAD, CKA et CKS. Je vous présente ça tout de suite :

    \n\n\n\n

    La formation KCNA (pour Kubernetes and Cloud Native Associate), c’est celle qui vous permettra de maitriser toutes les bases fondamentales de la techno, mais aussi l’écosystème du cloud natif. Vous allez apprendre les architectures, les conteneurs et leurs organisations, les APIs, l’observabilité et l’optimisation des applis cloud native, etc. Si vous commencez votre parcours, c’est par là que vous allez démarrer, car il n’y a besoin d’aucun prérequis. En plus elle est assez rapide à passer (1 journée). 

    \n\n\n\n

    La Kubernetes and Cloud Security Associate (KCSA) de son côté est plus costaude (2 journées) et vous demandera de bien maitriser les bases. Sur 2 jours vous en apprendrez beaucoup plus sur la sécurité de votre environnement Kubernetes et du cloud natif : sécurité des pods, des conteneurs, des clusters et de l’infrastructure, modèles d’attaque (attaque réseau, codes malveillants …), etc. Vous apprendrez aussi à utiliser des choses comme l’outil en ligne de commande KubeCTL, Kubelet ou le mécanisme de sécurité RBAC.

    \n\n\n\n

    Passons à la certification CKAD (sur 2 jours aussi) qui vous permet de devenir développeur d’application Kubernetes certifié. Comme son nom l’indique, elle vous donnera la possibilité de concevoir, configurer et lancer vos applis cloud natives. Mais aussi de les faire évoluer dans le temps. Ce sera donc l’occasion d’approfondir votre connaissance des pods, des services et mise en réseau ou encore du suivi (débug, observabilité, consommation de ressources …).

    \n\n\n\n

    Ensuite nous avons la CKA qui vous amènera à devenir administrateur Kubernetes certifié. Du stockage, au dépannage, en passant par la planification de pods et les charges de travail, vous serez à même de tout gérer. Vous apprendrez aussi à mettre en place et à gérer un cluster avec KubeADM et pas mal d’autres choses.

    \n\n\n\n

    Assez courte (1 jour), mais plutôt dense, la formation CKS (Certified Kubernetes Security Specialist) est, elle aussi, axée sécurité. De la mise en place à la protection d’un cluster, à la sécurisation du système, de la supply chain et des micro-services, en passant par la surveillance et la détection des attaques… vous deviendrez le spécialiste ultime de la sécu. Attention le niveau est relevé, il vous faut déjà posséder la certif CKA pour suivre cette certification et la formation Kubernetes avancée est un plus.

    \n\n\n
    \n
    \"\"
    \n\n\n

    Ces formations durent chacune 1 ou 2 journées, donc c’est assez rapide et vous pouvez les cumuler au fil des semaines/mois. Elles sont proposées à des prix assez variés (de 995€ à 2190€ HT), prix qui comprend l’examen de passage de la formation (valeur 250€ à 395€). Et comme toujours, le bon plan c’est que vous pouvez faire valoir votre crédit CPF (compte personnel de formation) et d’autres aides. Petit point à prendre en compte tout de même, si les formations sont en français, les examens se font, eux, en anglais.

    \n\n\n\n

    Pourquoi passer par Ambient IT pour ces certifications ? Déjà parce qu’ils sont partenaires officiels de la Linux Foundation ET Kubernetes Training Partner. Ensuite parce que les formateurs sont d’un très bon niveau, que vous pouvez suivre tout cela à distance et vous recevrez même des conseils pour être paré à vos examens. De quoi vous mettre dans les meilleures conditions possibles !

    \n\n\n\n

    Promo spéciale Korben

    \n\n\n\n

    Si vous me lisez régulièrement, vous savez que j’essaie toujours de vous dénicher de bons plans. Et c’est encore le cas aujourd’hui ! Sur 2024, si vous vous inscrivez à l’une des 5 formations certifiantes, lors de votre contact téléphonique avec Ambient IT, n’oubliez pas de mentionner que vous venez de la part de tonton Korben, vous aurez droit en cas d’échec au rattrapage (ce qui n’arrivera pas !). Si vous échouez à l’obtention de votre certification, votre rattrapage sera offert. C’est pas la classe ça ? Merci à Ambient IT de supporter notre communauté !

    \n\n\n\n

    Formez-vous aux certifications kubernetes !

    \n", + "category": "Développement", + "link": "https://korben.info/5-certifications-kubernetes.html", + "creator": "Korben", + "pubDate": "Fri, 12 Jan 2024 08:30:00 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "89f192a2c8fde356d19c69dcbefaacd8", + "highlights": [] + }, + { + "title": "Nearby Share – Le Airdrop officiel d’Android", + "description": "Nearby Share, développé par Google, facilite le partage de fichiers sur Android et Windows (64 bits, Windows 10+). Activez Bluetooth, localisation et Nearby Share, puis rapprochez les appareils pour partager facilement fichiers et vidéos sans câbles ni clés USB. La technologie est en constante évolution pour offrir une expérience utilisateur optimale.", + "content": "

    \"\"

    \n

    Afin d’offrir enfin une expérience de qualité à ses utilisateurs, en ce qui concerne le partage de fichiers, Google propose maintenant depuis quelque mois Nearby Share.

    \n\n\n\n
    \r\n

    Pour résumer en 3 mots : « Airdrop pour Android« 

    \n\n\n\n

    Cet outil est disponible sur les appareils Android et, également sur les ordinateurs Windows (64 bits, Windows 10 et supérieur). Pour l’utiliser sur Android, vérifiez simplement que votre version est à jour dans les paramètres de l’appareil. Et hop, vous êtes prêt à partager en toute simplicité !

    \n\n\n
    \n
    \"\"
    \n\n\n

    Avant de pouvoir transférer vos dick pics et autres documents d’importance, n’oubliez pas d’activer le Bluetooth et la géolocalisation. Une fois que c’est fait, y’a plus qu’à rapprocher vos appareils. Pas besoin d’être collés l’un à l’autre, mais tenez-vous à une distance raisonnable, disons 5 mètres max. Vous pourrez ainsi partager vos fichiers avec les appareils « découvrables » autour de vous.

    \n\n\n\n
    \n\n\n\n

    Pour en savoir plus sur Nearby Share, je vous invite à consulter le site officiel ici.

    \n\n\n\n
    \r\n

    Rien à dire de plus, le FUTUR EST EN MARCHE pour les possesseurs d’Android qui vont pouvoir enfin utiliser leur smartphone d’une manière respectable, sans avoir à souiller leur âme à chaque fois qu’ils veulent s’envoyer un fichier à eux-même. ^^

    \n", + "category": "Android", + "link": "https://korben.info/nearby-share-guide-android-windows-file-sharing.html", + "creator": "Korben", + "pubDate": "Fri, 12 Jan 2024 08:00:00 +0000", + "enclosure": "https://korben.info/app/uploads/2023/12/dd51f65710b22bbef891eeffdbd6a8172ddd332a06dae2ca11b2ede2c5c9bc6ddfb9d0a6bc9697ca5d295de24dc21899ddb9682baaa4c1633ec3a390277a2b5d.mp4", + "enclosureType": "video/mp4", + "image": "https://korben.info/app/uploads/2023/12/dd51f65710b22bbef891eeffdbd6a8172ddd332a06dae2ca11b2ede2c5c9bc6ddfb9d0a6bc9697ca5d295de24dc21899ddb9682baaa4c1633ec3a390277a2b5d.mp4", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "ebf0de34d2e96cceaca0d07d957e1efa", + "highlights": [] + }, + { + "title": "Lemmings revient sur Commodore Plus/4 – Nostalgie garantie !", + "description": "Lemmings, un jeu rétro inoubliable, est maintenant disponible pour Commodore Plus/4 grâce aux développeurs TCFS, Csabo et Unreal. La version Plus/4 est même meilleure que celle du C64 et comprend des conseils pour progresser. Pour jouer, téléchargez l'image disque, transférez-la sur une disquette compatible, insérez-la et suivez les instructions à l'écran. Cette version est une belle surprise pour les fans de rétro-gaming et montre le talent de la communauté pour adapter les jeux sur d'anciennes machines.", + "content": "

    \"\"

    \n

    Imaginez que vous soyez fan de rétro-gaming, et que vous ayez grandi avec les classiques de l’Amiga, de l’Atari ST et du PC. Parmi ces classiques se trouve un jeu qui a marqué toute une génération : Lemmings.

    \n\n\n\n
    \r\n

    Vous vous souvenez ?

    \n\n\n\n

    Ce petit jeu de réflexion et de stratégie où vous deviez guider ces adorables créatures stupides à travers divers obstacles pour les mener à la sortie ?

    \n\n\n\n

    Et bien, préparez-vous à sauter de joie, car ce jeu mythique est désormais disponible pour le Commodore Plus/4 !

    \n\n\n\n

    Grâce au travail acharné de TCFS, Csabo et Unreal, il est maintenant possible de jouer à cette version de Lemmings sur votre bon vieux Commodore Plus/4. Cette version du jeu est même meilleure que celle du C64, car elle utilise l’écran au complet.

    \n\n\n\n
    \n\n
    \n\n\n\n
    \r\n

    C’est une réalisation impressionnante qui a suscité des réactions extrêmement positives de la part des fans de rétro-gaming.

    \n\n\n\n

    Dans cette version de Lemmings pour Commodore Plus/4, vous retrouverez toutes les fonctionnalités qui ont fait le succès du jeu original. Les niveaux sont fidèles à ceux que vous avez connus et aimés, et les graphismes sont tout aussi mignons que dans les versions Amiga, Atari ST et PC. Les commandes de jeu sont également très intuitives et faciles à prendre en main, même pour les débutants.

    \n\n\n\n

    Les développeurs ont également inclus des astuces et des conseils pour vous aider à progresser dans le jeu. Ainsi, même si vous êtes un joueur occasionnel ou si vous n’avez jamais touché à un Commodore Plus/4 auparavant, vous pourrez profiter pleinement de cette expérience nostalgique.

    \n\n\n\n

    Alors, comment jouer à Lemmings sur votre Commodore Plus/4 ?

    \n\n\n\n
      \n
    1. Tout d’abord, rendez-vous sur le site Plus4World pour télécharger l’image disque du jeu.
    2. \n\n\n\n
    3. Ensuite, transférez l’image disque sur une disquette compatible avec votre Commodore Plus/4.
    4. \n\n\n\n
    5. Insérez la disquette dans votre Commodore Plus/4 et allumez la machine.
    6. \n
    \n\n\n\n

    Bien, ça peut se faire sur un émulateur voire carrément le tester sur cette version en ligne.

    \n\n\n\n

    Et voilà ! Vous pourrez maintenant profiter de cette incroyable version de Lemmings sur votre Commodore Plus/4 et revivre vos souvenirs d’enfance.

    \n", + "category": "Jeux vidéo", + "link": "https://korben.info/lemmings-retro-gaming-classique-commodore-plus4-version-optimisee.html", + "creator": "Korben", + "pubDate": "Thu, 11 Jan 2024 08:00:00 +0000", + "enclosure": "", + "enclosureType": "", + "image": "", + "id": "", + "language": "fr", + "folder": "", + "feed": "korben.info", + "read": false, + "favorite": false, + "created": false, + "tags": [], + "hash": "04a633235ff0f2954434b839d5dafa74", + "highlights": [] + }, { "title": "WipeOut Phantom Edition – Un classique rétro grandement amélioré sur PC", "description": "WipeOut Phantom Edition est un portage amélioré pour PC du jeu original WipeOut de PlayStation, offrant des graphismes améliorés, une meilleure jouabilité, un support clavier et manette, de nouvelles musiques et effets sonores, des options supplémentaires et une configuration personnalisable. Cette version permet de revivre l'expérience rétro avec une touche moderne.", diff --git a/.obsidian/plugins/various-complements/data.json b/.obsidian/plugins/various-complements/data.json index e262beeb..1b138488 100644 --- a/.obsidian/plugins/various-complements/data.json +++ b/.obsidian/plugins/various-complements/data.json @@ -15,19 +15,49 @@ "disableSuggestionsDuringImeOn": false, "insertAfterCompletion": true, "firstCharactersDisableSuggestions": ":/^", - "useCommonPrefixCompletionOfSuggestion": false, "patternsToSuppressTrigger": [ "^~~~.*", "^```.*" ], + "phrasePatternsToSuppressTrigger": [], + "noAutoFocusUntilCycle": false, "showMatchStrategy": true, "showComplementAutomatically": true, "showIndexingStatus": true, "descriptionOnSuggestion": "Short", - "selectSuggestionKeys": "Tab", - "additionalCycleThroughSuggestionsKeys": "Ctrl/Cmd+N, Ctrl/Cmd+P", - "disableUpDownKeysForCycleThroughSuggestionsKeys": false, - "openSourceFileKey": "Alt+Enter", + "hotkeys": { + "select": [ + { + "modifiers": [], + "key": "Tab", + "hideHotkeyGuide": false + } + ], + "up": [ + { + "modifiers": [], + "key": "ArrowUp" + } + ], + "down": [ + { + "modifiers": [], + "key": "ArrowDown" + } + ], + "select 1st": [], + "select 2nd": [], + "select 3rd": [], + "select 4th": [], + "select 5th": [], + "select 6th": [], + "select 7th": [], + "select 8th": [], + "select 9th": [], + "open": [], + "completion": [], + "insert as text": [] + }, "propagateEsc": true, "enableCurrentFileComplement": false, "currentFileMinNumberOfCharacters": 0, @@ -59,11 +89,17 @@ "frontMatterComplementMatchStrategy": "inherit", "insertCommaAfterFrontMatterCompletion": false, "intelligentSuggestionPrioritization": { + "enabled": true, "historyFilePath": "", "maxDaysToKeepHistory": 30, "maxNumberOfHistoryToKeep": 0 }, "disableOnMobile": false, "showLogAboutPerformanceInConsole": false, - "selectionHistoryTree": {} + "selectionHistoryTree": {}, + "useCommonPrefixCompletionOfSuggestion": false, + "selectSuggestionKeys": "Tab", + "additionalCycleThroughSuggestionsKeys": "Ctrl/Cmd+N, Ctrl/Cmd+P", + "disableUpDownKeysForCycleThroughSuggestionsKeys": false, + "openSourceFileKey": "Alt+Enter" } \ No newline at end of file diff --git a/.obsidian/plugins/various-complements/histories.json b/.obsidian/plugins/various-complements/histories.json index a2f99004..3c13c0b5 100644 --- a/.obsidian/plugins/various-complements/histories.json +++ b/.obsidian/plugins/various-complements/histories.json @@ -1 +1 @@ -{"covariance":{"covariance":{"internalLink":{"count":1,"lastUpdated":1700613439277}}},"utilisateur":{"utilisateur":{"internalLink":{"count":1,"lastUpdated":1700663263833}}},"administration des bases de données":{"administration des bases de données":{"internalLink":{"count":2,"lastUpdated":1701677521978}}},"base de données":{"base de données":{"internalLink":{"count":1,"lastUpdated":1701677477332}}},"SQL":{"SQL":{"internalLink":{"count":1,"lastUpdated":1701677551143}}},"privilèges":{"privilèges":{"internalLink":{"count":1,"lastUpdated":1701677765849}}},"stage de L3":{"stage de L3":{"internalLink":{"count":1,"lastUpdated":1701940029308}}},"ensemble des matrices":{"ensemble des matrices":{"internalLink":{"count":1,"lastUpdated":1701940340870}}},"commande pour empêcher le système de se mettre en veille":{"commande pour empêcher le système de se mettre en veille":{"internalLink":{"count":2,"lastUpdated":1702504473701}}},"réunion de rentrée Blois":{"réunion de rentrée Blois":{"internalLink":{"count":1,"lastUpdated":1702504897638}}},"équation quadratique":{"équation quadratique":{"internalLink":{"count":1,"lastUpdated":1702504938007}}},"Cycle en spirale":{"Cycle en spirale":{"internalLink":{"count":1,"lastUpdated":1703109300187}}},"modèle en cascade":{"modèle en cascade":{"internalLink":{"count":1,"lastUpdated":1703109373343}}},"cycle en V":{"cycle en V":{"internalLink":{"count":1,"lastUpdated":1703109794051}}},"méthodologie agile":{"méthodologie agile":{"internalLink":{"count":1,"lastUpdated":1703110323383}}},"pdfjs annotation-annotate":{"pdfjs annotation-annotate":{"internalLink":{"count":1,"lastUpdated":1703248535224}}}} \ No newline at end of file +{"taxe":{"taxe":{"internalLink":{"count":1,"lastUpdated":1706567256399}}},"architecture de Von Neumann 2022-09-14 10.56.32.excalidraw":{"architecture de Von Neumann 2022-09-14 10.56.32.excalidraw":{"internalLink":{"count":1,"lastUpdated":1706780160993}}},"floydParadigmsProgramming1979":{"floydParadigmsProgramming1979":{"internalLink":{"count":1,"lastUpdated":1706901699416}}},"paradigmes de programmation":{"paradigmes de programmation":{"internalLink":{"count":1,"lastUpdated":1706947852489}}},"plan euclidien":{"plan euclidien":{"internalLink":{"count":1,"lastUpdated":1707904509767}}},"hystérésis":{"hystérésis":{"internalLink":{"count":1,"lastUpdated":1707922969397}}},"hystérésis magnétique":{"hystérésis magnétique":{"internalLink":{"count":2,"lastUpdated":1707955061623}}},"mémoire":{"mémoire":{"internalLink":{"count":1,"lastUpdated":1707950894287}}},"philosophie":{"philosophie":{"internalLink":{"count":1,"lastUpdated":1708300716101}}},"ensemble":{"ensemble":{"internalLink":{"count":1,"lastUpdated":1708302262513}}},"satisfaisable":{"satisfaisable":{"internalLink":{"count":1,"lastUpdated":1708302466732}}},"mémoire à tore de ferrite":{"mémoire à tore de ferrite":{"internalLink":{"count":1,"lastUpdated":1708334338799}}},"paradigme de programmation":{"paradigme de programmation":{"internalLink":{"count":1,"lastUpdated":1708417661947}}},"processus":{"processus":{"internalLink":{"count":1,"lastUpdated":1708418852841}}},"langage formel":{"langage formel":{"internalLink":{"count":1,"lastUpdated":1708518252949}}},"machine de turing":{"machine de turing":{"internalLink":{"count":1,"lastUpdated":1708518269968}}},"réciproque":{"réciproque":{"internalLink":{"count":1,"lastUpdated":1708819687918}}},"matrice hessienne":{"matrice hessienne":{"internalLink":{"count":2,"lastUpdated":1710324879177}}},"fonction de plusieurs variables":{"fonction de plusieurs variables":{"internalLink":{"count":1,"lastUpdated":1709121880741}}},"manim Ellipse":{"manim Ellipse":{"internalLink":{"count":1,"lastUpdated":1709296590359}}},"baptême":{"baptême":{"internalLink":{"count":5,"lastUpdated":1709864270370}}},"gradient":{"gradient":{"internalLink":{"count":1,"lastUpdated":1710325461961}}}} \ No newline at end of file diff --git a/.obsidian/plugins/vertical-tabs-view/main.js b/.obsidian/plugins/vertical-tabs-view/main.js new file mode 100644 index 00000000..661ed3bc --- /dev/null +++ b/.obsidian/plugins/vertical-tabs-view/main.js @@ -0,0 +1,16 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source, please visit the github repository of this plugin +*/ + +var Pt=Object.defineProperty;var ar=Object.getOwnPropertyDescriptor;var or=Object.getOwnPropertyNames;var rr=Object.prototype.hasOwnProperty;var lr=(t,e,a)=>e in t?Pt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[e]=a;var sr=(t,e)=>{for(var a in e)Pt(t,a,{get:e[a],enumerable:!0})},nr=(t,e,a,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of or(e))!rr.call(t,r)&&r!==a&&Pt(t,r,{get:()=>e[r],enumerable:!(o=ar(e,r))||o.enumerable});return t};var ur=t=>nr(Pt({},"__esModule",{value:!0}),t);var $=(t,e,a)=>(lr(t,typeof e!="symbol"?e+"":e,a),a);var Cl={};sr(Cl,{default:()=>da});module.exports=ur(Cl);var tr=require("obsidian");var dr=require("obsidian");var Ya="obsidian-vertical-tabs-view";var Bt=t=>{console.log(`[${Ya}]: ${t}`)};var Y=require("obsidian");var Za={left:"left",right:"right"},pa={TARGET:{directory:"directory",title:"title"},CONDITION:{startsWith:"starts with",endsWith:"ends with",includes:"includes",equals:"equals",regexp:"regexp"}},ma={matchConfig:{target:"title",condition:"startsWith",value:""},priority:1,icon:"file"};var Et=require("obsidian"),Ja=(t,e,a,o,r)=>new Et.Setting(t).setName(e).setDesc(a).addText(l=>l.setValue(o).onChange(r)),ze=(t,e,a,o,r)=>new Et.Setting(t).setName(e).setDesc(a).addToggle(l=>l.setValue(o).onChange(r)),Qa=(t,e,a,o,r,l)=>new Et.Setting(t).setName(e).setDesc(a).addDropdown(s=>{s.addOptions(o).setValue(r).onChange(l)});var eo={defaultPosition:"left",showDirectory:!0,showCloseIcon:!0,showPinnedIcon:!0,showPinIconIfNotPinned:!0,showTabIcon:!0,defaultTabIcon:"file",tabIconRules:[]},Ot=class extends Y.PluginSettingTab{constructor(a,o){super(a,o);this.plugin=o,this.settings=structuredClone(o.settings)}save(){this.plugin.saveSettings(this.settings)}display(){let{containerEl:a}=this;if(a.empty(),Qa(a,"Default position","Default position of vertical tabs view opened",Za,this.settings.defaultPosition,o=>{this.settings.defaultPosition=o,this.save()}),ze(a,"Show directory","",this.settings.showDirectory,o=>{this.settings.showDirectory=o,this.save()}),ze(a,"Show close icon","",this.settings.showCloseIcon,o=>{this.settings.showCloseIcon=o,this.save()}),ze(a,"Show pinned icon","",this.settings.showPinnedIcon,o=>{this.settings.showPinnedIcon=o,this.save()}),ze(a,"Show pin icon if not pinned","",this.settings.showPinIconIfNotPinned,o=>{this.settings.showPinIconIfNotPinned=o,this.save()}),ze(a,"Show tab icon","",this.settings.showTabIcon,o=>{this.settings.showTabIcon=o,this.save(),this.display()}),this.settings.showTabIcon){let{previewIconWrapper:o,previewIcon:r,previewIconText:l}=this.createPreviewIcon(this.settings.defaultTabIcon);Ja(a,"Default tab icon","If you clear this field, icon will be hidden by default.",this.settings.defaultTabIcon,i=>{this.settings.defaultTabIcon=i,this.save(),(0,Y.setIcon)(r,i),r.children.length===0?l.innerText="Not found.":l.innerText="Preview: "}).setDesc("See https://lucide.dev/icons for available icons.").controlEl.prepend(o),new Y.Setting(a).setName("Icon rules for override icon");let n=a.createEl("div");n.className="vertical-tabs-view-settings-tab-icon-rules",this.settings.tabIconRules.length===0&&this.settings.tabIconRules.push(structuredClone(ma)),this.settings.tabIconRules.forEach((i,d)=>{this.addTabIconRule(n,i,d)}),new Y.Setting(n).addButton(i=>{i.setButtonText("Add").onClick(async()=>{this.settings.tabIconRules.push(structuredClone(ma)),this.display()})}).setClass("vertical-tabs-view-settings-tab-icon-rules-add-btn")}}createPreviewIcon(a){let o=document.createElement("div");o.className="vertical-tabs-view-settings-tab-preview-icon-wrapper";let r=document.createElement("div");r.className="vertical-tabs-view-settings-tab-preview-icon-text",r.innerText="Preview: ";let l=document.createElement("div");return(0,Y.setIcon)(l,a),l.children.length===0?r.innerText="Icon not found":r.innerText="Preview: ",o.setChildrenInPlace([r,l]),{previewIconWrapper:o,previewIcon:l,previewIconText:r}}addTabIconRule(a,o,r){let l=a.createEl("div");l.className="vertical-tabs-view-settings-tab-icon-rule-wrapper";let s=l.createEl("div");s.className="vertical-tabs-view-settings-tab-icon-rule-match-config-wrapper",new Y.Setting(s).addDropdown(f=>{f.addOptions(pa.TARGET).setValue(o.matchConfig.target).onChange(async x=>{o.matchConfig.target=x,this.save()})}).setName("Match target"),new Y.Setting(s).addDropdown(f=>{f.addOptions(pa.CONDITION).setValue(o.matchConfig.condition).onChange(async x=>{o.matchConfig.condition=x,this.save()})}).setName("Match condition"),new Y.Setting(s).addText(f=>{f.setValue(o.matchConfig.value).onChange(x=>{o.matchConfig.value=x,this.save()})}).setName("Match value").setDesc("For regexp, write like: /foo/i"),new Y.Setting(s).addSlider(f=>{f.setLimits(1,100,1).setValue(o.priority).onChange(x=>{o.priority=x,this.save()}).setDynamicTooltip()}).setName("Priority").setDesc("If there are multiple configs with the same priority, the one defined first will be prioritized.");let{previewIconWrapper:n,previewIcon:u,previewIconText:i}=this.createPreviewIcon(o.icon);new Y.Setting(s).addText(f=>{f.setValue(o.icon).onChange(x=>{o.icon=x,this.save(),(0,Y.setIcon)(u,x),u.children.length===0?i.innerText="Icon not found":i.innerText="Preview: "})}).setName("Icon").setDesc("See https://lucide.dev/icons for available icons.").controlEl.prepend(n);let c=l.createEl("div");c.className="vertical-tabs-view-settings-tab-icon-rule-remove-btn-wrapper";let h=c.createEl("button");h.setText("Remove"),h.onclick=()=>{this.settings.tabIconRules.splice(r,1),this.save(),this.display()}}};var Qo=require("obsidian");var ha=async(t,e)=>{t.workspace.setActiveLeaf(e,{focus:!0})},to=async(t,e)=>{let a=t.workspace.getLeafById(e);if(a)return await ha(t,a),a};function ce(){}function Z(t,e){for(let a in e)t[a]=e[a];return t}function ga(t){return t()}function Mt(){return Object.create(null)}function te(t){t.forEach(ga)}function dt(t){return typeof t=="function"}function pe(t,e){return t!=t?e==e:t!==e||t&&typeof t=="object"||typeof t=="function"}function ao(t){return Object.keys(t).length===0}function Xe(t,e,a,o){if(t){let r=oo(t,e,a,o);return t[0](r)}}function oo(t,e,a,o){return t[1]&&o?Z(a.ctx.slice(),t[1](o(e))):a.ctx}function je(t,e,a,o){if(t[2]&&o){let r=t[2](o(a));if(e.dirty===void 0)return r;if(typeof r=="object"){let l=[],s=Math.max(e.dirty.length,r.length);for(let n=0;n32){let e=[],a=t.ctx.length/32;for(let o=0;o{this._listeners.delete(e),this._observer.unobserve(e)}}_getObserver(){var e;return(e=this._observer)!=null?e:this._observer=new ResizeObserver(a=>{var o;for(let r of a)Ze.entries.set(r.target,r),(o=this._listeners.get(r.target))==null||o(r)})}};Ze.entries="WeakMap"in La?new WeakMap:void 0;var Rt=!1;function ro(){Rt=!0}function lo(){Rt=!1}function pr(t,e,a,o){for(;t>1);a(r)<=o?t=r+1:e=r}return t}function mr(t){if(t.hydrate_init)return;t.hydrate_init=!0;let e=t.childNodes;if(t.nodeName==="HEAD"){let u=[];for(let i=0;i0&&e[a[r]].claim_order<=i?r+1:pr(1,r,h=>e[a[h]].claim_order,i))-1;o[u]=a[d]+1;let c=d+1;a[c]=u,r=Math.max(c,r)}let l=[],s=[],n=e.length-1;for(let u=a[r]+1;u!=0;u=o[u-1]){for(l.push(e[u-1]);n>=u;n--)s.push(e[n]);n--}for(;n>=0;n--)s.push(e[n]);l.reverse(),s.sort((u,i)=>u.claim_order-i.claim_order);for(let u=0,i=0;u=l[i].claim_order;)i++;let d=it.removeEventListener(e,a,o)}function U(t,e,a){a==null?t.removeAttribute(e):t.getAttribute(e)!==a&&t.setAttribute(e,a)}function mt(t,e){for(let a in e)U(t,a,e[a])}function ht(t){return Array.from(t.childNodes)}function gr(t){t.claim_info===void 0&&(t.claim_info={last_index:0,total_claimed:0})}function xr(t,e,a,o,r=!1){gr(t);let l=(()=>{for(let s=t.claim_info.last_index;s=0;s--){let n=t[s];if(e(n)){let u=a(n);return u===void 0?t.splice(s,1):t[s]=u,r?u===void 0&&t.claim_info.last_index--:t.claim_info.last_index=s,n}}return o()})();return l.claim_order=t.claim_info.total_claimed,t.claim_info.total_claimed+=1,l}function Lr(t,e,a,o){return xr(t,r=>r.nodeName===e,r=>{let l=[];for(let s=0;sr.removeAttribute(s))},()=>o(e))}function Ia(t,e,a){return Lr(t,e,a,Nt)}function Ca(t,e){e=""+e,t.data!==e&&(t.data=e)}function ba(t,e,a){t.classList.toggle(e,!!a)}function uo(t){let e={};return t.childNodes.forEach(a=>{e[a.slot||"default"]=!0}),e}var Fe;function we(t){Fe=t}function fo(){if(!Fe)throw new Error("Function called outside component initialization");return Fe}function Sa(t){fo().$$.on_mount.push(t)}var He=[];var qt=[],et=[],co=[],vr=Promise.resolve(),va=!1;function po(){va||(va=!0,vr.then(Vt))}function gt(t){et.push(t)}var wa=new Set,Qe=0;function Vt(){if(Qe!==0)return;let t=Fe;do{try{for(;Qet.indexOf(o)===-1?e.push(o):a.push(o)),a.forEach(o=>o()),et=e}var $t=new Set,Ne;function xt(){Ne={r:0,c:[],p:Ne}}function Lt(){Ne.r||te(Ne.c),Ne=Ne.p}function A(t,e){t&&t.i&&($t.delete(t),t.i(e))}function H(t,e,a,o){if(t&&t.o){if($t.has(t))return;$t.add(t),Ne.c.push(()=>{$t.delete(t),o&&(a&&t.d(1),o())}),t.o(e)}else o&&o()}function Ae(t){return(t==null?void 0:t.length)!==void 0?t:Array.from(t)}function qe(t,e){let a={},o={},r={$$scope:1},l=t.length;for(;l--;){let s=t[l],n=e[l];if(n){for(let u in s)u in n||(o[u]=1);for(let u in n)r[u]||(a[u]=n[u],r[u]=1);t[l]=n}else for(let u in s)r[u]=1}for(let s in o)s in a||(a[s]=void 0);return a}function Gt(t){return typeof t=="object"&&t!==null?t:{}}var yr=["allowfullscreen","allowpaymentrequest","async","autofocus","autoplay","checked","controls","default","defer","disabled","formnovalidate","hidden","inert","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","selected"],kr=new Set([...yr]);function Pe(t){t&&t.c()}function Wt(t,e){t&&t.l(e)}function ve(t,e,a){let{fragment:o,after_update:r}=t.$$;o&&o.m(e,a),gt(()=>{let l=t.$$.on_mount.map(ga).filter(dt);t.$$.on_destroy?t.$$.on_destroy.push(...l):te(l),t.$$.on_mount=[]}),r.forEach(gt)}function _e(t,e){let a=t.$$;a.fragment!==null&&(mo(a.after_update),te(a.on_destroy),a.fragment&&a.fragment.d(e),a.on_destroy=a.fragment=null,a.ctx=[])}function Tr(t,e){t.$$.dirty[0]===-1&&(He.push(t),po(),t.$$.dirty.fill(0)),t.$$.dirty[e/31|0]|=1<{let x=f.length?f[0]:h;return i.ctx&&r(i.ctx[c],i.ctx[c]=x)&&(!i.skip_bound&&i.bound[c]&&i.bound[c](x),d&&Tr(t,c)),h}):[],i.update(),d=!0,te(i.before_update),i.fragment=o?o(i.ctx):!1,e.target){if(e.hydrate){ro();let c=ht(e.target);i.fragment&&i.fragment.l(c),c.forEach(R)}else i.fragment&&i.fragment.c();e.intro&&A(t.$$.fragment),ve(t,e.target,e.anchor),lo(),Vt()}we(u)}var Fr;typeof HTMLElement=="function"&&(Fr=class extends HTMLElement{constructor(e,a,o){super();$(this,"$$ctor");$(this,"$$s");$(this,"$$c");$(this,"$$cn",!1);$(this,"$$d",{});$(this,"$$r",!1);$(this,"$$p_d",{});$(this,"$$l",{});$(this,"$$l_u",new Map);this.$$ctor=e,this.$$s=a,o&&this.attachShadow({mode:"open"})}addEventListener(e,a,o){if(this.$$l[e]=this.$$l[e]||[],this.$$l[e].push(a),this.$$c){let r=this.$$c.$on(e,a);this.$$l_u.set(a,r)}super.addEventListener(e,a,o)}removeEventListener(e,a,o){if(super.removeEventListener(e,a,o),this.$$c){let r=this.$$l_u.get(a);r&&(r(),this.$$l_u.delete(a))}}async connectedCallback(){if(this.$$cn=!0,!this.$$c){let e=function(l){return()=>{let s;return{c:function(){s=z("slot"),l!=="default"&&U(s,"name",l)},m:function(i,d){ue(i,s,d)},d:function(i){i&&R(s)}}}};if(await Promise.resolve(),!this.$$cn)return;let a={},o=uo(this);for(let l of this.$$s)l in o&&(a[l]=[e(l)]);for(let l of this.attributes){let s=this.$$g_p(l.name);s in this.$$d||(this.$$d[s]=_a(s,l.value,this.$$p_d,"toProp"))}this.$$c=new this.$$ctor({target:this.shadowRoot||this,props:{...this.$$d,$$slots:a,$$scope:{ctx:[]}}});let r=()=>{this.$$r=!0;for(let l in this.$$p_d)if(this.$$d[l]=this.$$c.$$.ctx[this.$$c.$$.props[l]],this.$$p_d[l].reflect){let s=_a(l,this.$$d[l],this.$$p_d,"toAttribute");s==null?this.removeAttribute(this.$$p_d[l].attribute||l):this.setAttribute(this.$$p_d[l].attribute||l,s)}this.$$r=!1};this.$$c.$$.after_update.push(r),r();for(let l in this.$$l)for(let s of this.$$l[l]){let n=this.$$c.$on(l,s);this.$$l_u.set(s,n)}this.$$l={}}}attributeChangedCallback(e,a,o){var r;this.$$r||(e=this.$$g_p(e),this.$$d[e]=_a(e,o,this.$$p_d,"toProp"),(r=this.$$c)==null||r.$set({[e]:this.$$d[e]}))}disconnectedCallback(){this.$$cn=!1,Promise.resolve().then(()=>{this.$$cn||(this.$$c.$destroy(),this.$$c=void 0)})}$$g_p(e){return Object.keys(this.$$p_d).find(a=>this.$$p_d[a].attribute===e||!this.$$p_d[a].attribute&&a.toLowerCase()===e)||e}});function _a(t,e,a,o){var l;let r=(l=a[t])==null?void 0:l.type;if(e=r==="Boolean"&&typeof e!="boolean"?e!=null:e,!o||!a[t])return e;if(o==="toAttribute")switch(r){case"Object":case"Array":return e==null?null:JSON.stringify(e);case"Boolean":return e?"":null;case"Number":return e==null?null:e;default:return e}else switch(r){case"Object":case"Array":return e&&JSON.parse(e);case"Boolean":return e;case"Number":return e!=null?+e:e;default:return e}}var me=class{constructor(){$(this,"$$");$(this,"$$set")}$destroy(){_e(this,1),this.$destroy=ce}$on(e,a){if(!dt(a))return ce;let o=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return o.push(a),()=>{let r=o.indexOf(a);r!==-1&&o.splice(r,1)}}$set(e){this.$$set&&!ao(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}};var ho="4";typeof window!="undefined"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(ho);function It(t,e,a,o){function r(l){return l instanceof a?l:new a(function(s){s(l)})}return new(a||(a=Promise))(function(l,s){function n(d){try{i(o.next(d))}catch(c){s(c)}}function u(d){try{i(o.throw(d))}catch(c){s(c)}}function i(d){d.done?l(d.value):r(d.value).then(n,u)}i((o=o.apply(t,e||[])).next())})}var ge=require("obsidian");function go(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable})),a.push.apply(a,o)}return a}function be(t){for(var e=1;e=0)&&(a[r]=t[r]);return a}function Br(t,e){if(t==null)return{};var a=Pr(t,e),o,r;if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(t,o)&&(a[o]=t[o])}return a}var Er="1.15.0";function ye(t){if(typeof window!="undefined"&&window.navigator)return!!navigator.userAgent.match(t)}var De=ye(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),Dt=ye(/Edge/i),xo=ye(/firefox/i),wt=ye(/safari/i)&&!ye(/chrome/i)&&!ye(/android/i),_o=ye(/iP(ad|od|hone)/i),yo=ye(/chrome/i)&&ye(/android/i),ko={capture:!1,passive:!1};function k(t,e,a){t.addEventListener(e,a,!De&&ko)}function _(t,e,a){t.removeEventListener(e,a,!De&&ko)}function ta(t,e){if(e){if(e[0]===">"&&(e=e.substring(1)),t)try{if(t.matches)return t.matches(e);if(t.msMatchesSelector)return t.msMatchesSelector(e);if(t.webkitMatchesSelector)return t.webkitMatchesSelector(e)}catch(a){return!1}return!1}}function Or(t){return t.host&&t!==document&&t.host.nodeType?t.host:t.parentNode}function Ie(t,e,a,o){if(t){a=a||document;do{if(e!=null&&(e[0]===">"?t.parentNode===a&&ta(t,e):ta(t,e))||o&&t===a)return t;if(t===a)break}while(t=Or(t))}return null}var Lo=/\s+/g;function ae(t,e,a){if(t&&e)if(t.classList)t.classList[a?"add":"remove"](e);else{var o=(" "+t.className+" ").replace(Lo," ").replace(" "+e+" "," ");t.className=(o+(a?" "+e:"")).replace(Lo," ")}}function b(t,e,a){var o=t&&t.style;if(o){if(a===void 0)return document.defaultView&&document.defaultView.getComputedStyle?a=document.defaultView.getComputedStyle(t,""):t.currentStyle&&(a=t.currentStyle),e===void 0?a:a[e];!(e in o)&&e.indexOf("webkit")===-1&&(e="-webkit-"+e),o[e]=a+(typeof a=="string"?"":"px")}}function lt(t,e){var a="";if(typeof t=="string")a=t;else do{var o=b(t,"transform");o&&o!=="none"&&(a=o+" "+a)}while(!e&&(t=t.parentNode));var r=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return r&&new r(a)}function Do(t,e,a){if(t){var o=t.getElementsByTagName(e),r=0,l=o.length;if(a)for(;r=l:s=r<=l,!s)return o;if(o===Ce())break;o=Me(o,!1)}return!1}function st(t,e,a,o){for(var r=0,l=0,s=t.children;l2&&arguments[2]!==void 0?arguments[2]:{},r=o.evt,l=Br(o,$r);Tt.pluginEvent.bind(S)(e,a,be({dragEl:m,parentEl:O,ghostEl:w,rootEl:P,nextEl:Ge,lastDownEl:Zt,cloneEl:E,cloneHidden:Oe,dragStarted:Ct,putSortable:W,activeSortable:S.active,originalEvent:r,oldIndex:rt,oldDraggableIndex:_t,newIndex:oe,newDraggableIndex:Ee,hideGhostForTarget:Oo,unhideGhostForTarget:Mo,cloneNowHidden:function(){Oe=!0},cloneNowShown:function(){Oe=!1},dispatchSortableEvent:function(n){j({sortable:a,name:n,originalEvent:r})}},l))};function j(t){Vr(be({putSortable:W,cloneEl:E,targetEl:m,rootEl:P,oldIndex:rt,oldDraggableIndex:_t,newIndex:oe,newDraggableIndex:Ee},t))}var m,O,w,P,Ge,Zt,E,Oe,rt,oe,_t,Ee,zt,W,ot=!1,aa=!1,oa=[],Ve,he,Da,Ta,bo,So,Ct,at,yt,kt=!1,Xt=!1,Jt,X,Fa=[],Oa=!1,ra=[],sa=typeof document!="undefined",jt=_o,wo=Dt||De?"cssFloat":"float",Gr=sa&&!yo&&!_o&&"draggable"in document.createElement("div"),Po=function(){if(sa){if(De)return!1;var t=document.createElement("x");return t.style.cssText="pointer-events:auto",t.style.pointerEvents==="auto"}}(),Bo=function(e,a){var o=b(e),r=parseInt(o.width)-parseInt(o.paddingLeft)-parseInt(o.paddingRight)-parseInt(o.borderLeftWidth)-parseInt(o.borderRightWidth),l=st(e,0,a),s=st(e,1,a),n=l&&b(l),u=s&&b(s),i=n&&parseInt(n.marginLeft)+parseInt(n.marginRight)+q(l).width,d=u&&parseInt(u.marginLeft)+parseInt(u.marginRight)+q(s).width;if(o.display==="flex")return o.flexDirection==="column"||o.flexDirection==="column-reverse"?"vertical":"horizontal";if(o.display==="grid")return o.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(l&&n.float&&n.float!=="none"){var c=n.float==="left"?"left":"right";return s&&(u.clear==="both"||u.clear===c)?"vertical":"horizontal"}return l&&(n.display==="block"||n.display==="flex"||n.display==="table"||n.display==="grid"||i>=r&&o[wo]==="none"||s&&o[wo]==="none"&&i+d>r)?"vertical":"horizontal"},Wr=function(e,a,o){var r=o?e.left:e.top,l=o?e.right:e.bottom,s=o?e.width:e.height,n=o?a.left:a.top,u=o?a.right:a.bottom,i=o?a.width:a.height;return r===n||l===u||r+s/2===n+i/2},zr=function(e,a){var o;return oa.some(function(r){var l=r[re].options.emptyInsertThreshold;if(!(!l||Ha(r))){var s=q(r),n=e>=s.left-l&&e<=s.right+l,u=a>=s.top-l&&a<=s.bottom+l;if(n&&u)return o=r}}),o},Eo=function(e){function a(l,s){return function(n,u,i,d){var c=n.options.group.name&&u.options.group.name&&n.options.group.name===u.options.group.name;if(l==null&&(s||c))return!0;if(l==null||l===!1)return!1;if(s&&l==="clone")return l;if(typeof l=="function")return a(l(n,u,i,d),s)(n,u,i,d);var h=(s?n:u).options.group.name;return l===!0||typeof l=="string"&&l===h||l.join&&l.indexOf(h)>-1}}var o={},r=e.group;(!r||Yt(r)!="object")&&(r={name:r}),o.name=r.name,o.checkPull=a(r.pull,!0),o.checkPut=a(r.put),o.revertClone=r.revertClone,e.group=o},Oo=function(){!Po&&w&&b(w,"display","none")},Mo=function(){!Po&&w&&b(w,"display","")};sa&&!yo&&document.addEventListener("click",function(t){if(aa)return t.preventDefault(),t.stopPropagation&&t.stopPropagation(),t.stopImmediatePropagation&&t.stopImmediatePropagation(),aa=!1,!1},!0);var $e=function(e){if(m){e=e.touches?e.touches[0]:e;var a=zr(e.clientX,e.clientY);if(a){var o={};for(var r in e)e.hasOwnProperty(r)&&(o[r]=e[r]);o.target=o.rootEl=a,o.preventDefault=void 0,o.stopPropagation=void 0,a[re]._onDragOver(o)}}},Xr=function(e){m&&m.parentNode[re]._isOutsideThisEl(e.target)};function S(t,e){if(!(t&&t.nodeType&&t.nodeType===1))throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(t));this.el=t,this.options=e=ke({},e),t[re]=this;var a={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(t.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return Bo(t,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(s,n){s.setData("Text",n.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:S.supportPointer!==!1&&"PointerEvent"in window&&!wt,emptyInsertThreshold:5};Tt.initializePlugins(this,t,a);for(var o in a)!(o in e)&&(e[o]=a[o]);Eo(e);for(var r in this)r.charAt(0)==="_"&&typeof this[r]=="function"&&(this[r]=this[r].bind(this));this.nativeDraggable=e.forceFallback?!1:Gr,this.nativeDraggable&&(this.options.touchStartThreshold=1),e.supportPointer?k(t,"pointerdown",this._onTapStart):(k(t,"mousedown",this._onTapStart),k(t,"touchstart",this._onTapStart)),this.nativeDraggable&&(k(t,"dragover",this),k(t,"dragenter",this)),oa.push(this.el),e.store&&e.store.get&&this.sort(e.store.get(this)||[]),ke(this,Hr())}S.prototype={constructor:S,_isOutsideThisEl:function(e){!this.el.contains(e)&&e!==this.el&&(at=null)},_getDirection:function(e,a){return typeof this.options.direction=="function"?this.options.direction.call(this,e,a,m):this.options.direction},_onTapStart:function(e){if(e.cancelable){var a=this,o=this.el,r=this.options,l=r.preventOnFilter,s=e.type,n=e.touches&&e.touches[0]||e.pointerType&&e.pointerType==="touch"&&e,u=(n||e).target,i=e.target.shadowRoot&&(e.path&&e.path[0]||e.composedPath&&e.composedPath()[0])||u,d=r.filter;if(tl(o),!m&&!(/mousedown|pointerdown/.test(s)&&e.button!==0||r.disabled)&&!i.isContentEditable&&!(!this.nativeDraggable&&wt&&u&&u.tagName.toUpperCase()==="SELECT")&&(u=Ie(u,r.draggable,o,!1),!(u&&u.animated)&&Zt!==u)){if(rt=ie(u),_t=ie(u,r.draggable),typeof d=="function"){if(d.call(this,e,u,this)){j({sortable:a,rootEl:i,name:"filter",targetEl:u,toEl:o,fromEl:o}),Q("filter",a,{evt:e}),l&&e.cancelable&&e.preventDefault();return}}else if(d&&(d=d.split(",").some(function(c){if(c=Ie(i,c.trim(),o,!1),c)return j({sortable:a,rootEl:c,name:"filter",targetEl:u,fromEl:o,toEl:o}),Q("filter",a,{evt:e}),!0}),d)){l&&e.cancelable&&e.preventDefault();return}r.handle&&!Ie(i,r.handle,o,!1)||this._prepareDragStart(e,n,u)}}},_prepareDragStart:function(e,a,o){var r=this,l=r.el,s=r.options,n=l.ownerDocument,u;if(o&&!m&&o.parentNode===l){var i=q(o);if(P=l,m=o,O=m.parentNode,Ge=m.nextSibling,Zt=o,zt=s.group,S.dragged=m,Ve={target:m,clientX:(a||e).clientX,clientY:(a||e).clientY},bo=Ve.clientX-i.left,So=Ve.clientY-i.top,this._lastX=(a||e).clientX,this._lastY=(a||e).clientY,m.style["will-change"]="all",u=function(){if(Q("delayEnded",r,{evt:e}),S.eventCanceled){r._onDrop();return}r._disableDelayedDragEvents(),!xo&&r.nativeDraggable&&(m.draggable=!0),r._triggerDragStart(e,a),j({sortable:r,name:"choose",originalEvent:e}),ae(m,s.chosenClass,!0)},s.ignore.split(",").forEach(function(d){Do(m,d.trim(),Aa)}),k(n,"dragover",$e),k(n,"mousemove",$e),k(n,"touchmove",$e),k(n,"mouseup",r._onDrop),k(n,"touchend",r._onDrop),k(n,"touchcancel",r._onDrop),xo&&this.nativeDraggable&&(this.options.touchStartThreshold=4,m.draggable=!0),Q("delayStart",this,{evt:e}),s.delay&&(!s.delayOnTouchOnly||a)&&(!this.nativeDraggable||!(Dt||De))){if(S.eventCanceled){this._onDrop();return}k(n,"mouseup",r._disableDelayedDrag),k(n,"touchend",r._disableDelayedDrag),k(n,"touchcancel",r._disableDelayedDrag),k(n,"mousemove",r._delayedDragTouchMoveHandler),k(n,"touchmove",r._delayedDragTouchMoveHandler),s.supportPointer&&k(n,"pointermove",r._delayedDragTouchMoveHandler),r._dragStartTimer=setTimeout(u,s.delay)}else u()}},_delayedDragTouchMoveHandler:function(e){var a=e.touches?e.touches[0]:e;Math.max(Math.abs(a.clientX-this._lastX),Math.abs(a.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){m&&Aa(m),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var e=this.el.ownerDocument;_(e,"mouseup",this._disableDelayedDrag),_(e,"touchend",this._disableDelayedDrag),_(e,"touchcancel",this._disableDelayedDrag),_(e,"mousemove",this._delayedDragTouchMoveHandler),_(e,"touchmove",this._delayedDragTouchMoveHandler),_(e,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(e,a){a=a||e.pointerType=="touch"&&e,!this.nativeDraggable||a?this.options.supportPointer?k(document,"pointermove",this._onTouchMove):a?k(document,"touchmove",this._onTouchMove):k(document,"mousemove",this._onTouchMove):(k(m,"dragend",this),k(P,"dragstart",this._onDragStart));try{document.selection?Qt(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch(o){}},_dragStarted:function(e,a){if(ot=!1,P&&m){Q("dragStarted",this,{evt:a}),this.nativeDraggable&&k(document,"dragover",Xr);var o=this.options;!e&&ae(m,o.dragClass,!1),ae(m,o.ghostClass,!0),S.active=this,e&&this._appendGhost(),j({sortable:this,name:"start",originalEvent:a})}else this._nulling()},_emulateDragOver:function(){if(he){this._lastX=he.clientX,this._lastY=he.clientY,Oo();for(var e=document.elementFromPoint(he.clientX,he.clientY),a=e;e&&e.shadowRoot&&(e=e.shadowRoot.elementFromPoint(he.clientX,he.clientY),e!==a);)a=e;if(m.parentNode[re]._isOutsideThisEl(e),a)do{if(a[re]){var o=void 0;if(o=a[re]._onDragOver({clientX:he.clientX,clientY:he.clientY,target:e,rootEl:a}),o&&!this.options.dragoverBubble)break}e=a}while(a=a.parentNode);Mo()}},_onTouchMove:function(e){if(Ve){var a=this.options,o=a.fallbackTolerance,r=a.fallbackOffset,l=e.touches?e.touches[0]:e,s=w&<(w,!0),n=w&&s&&s.a,u=w&&s&&s.d,i=jt&&X&&Co(X),d=(l.clientX-Ve.clientX+r.x)/(n||1)+(i?i[0]-Fa[0]:0)/(n||1),c=(l.clientY-Ve.clientY+r.y)/(u||1)+(i?i[1]-Fa[1]:0)/(u||1);if(!S.active&&!ot){if(o&&Math.max(Math.abs(l.clientX-this._lastX),Math.abs(l.clientY-this._lastY))=0&&(j({rootEl:O,name:"add",toEl:O,fromEl:P,originalEvent:e}),j({sortable:this,name:"remove",toEl:O,originalEvent:e}),j({rootEl:O,name:"sort",toEl:O,fromEl:P,originalEvent:e}),j({sortable:this,name:"sort",toEl:O,originalEvent:e})),W&&W.save()):oe!==rt&&oe>=0&&(j({sortable:this,name:"update",toEl:O,originalEvent:e}),j({sortable:this,name:"sort",toEl:O,originalEvent:e})),S.active&&((oe==null||oe===-1)&&(oe=rt,Ee=_t),j({sortable:this,name:"end",toEl:O,originalEvent:e}),this.save()))),this._nulling()},_nulling:function(){Q("nulling",this),P=m=O=w=Ge=E=Zt=Oe=Ve=he=Ct=oe=Ee=rt=_t=at=yt=W=zt=S.dragged=S.ghost=S.clone=S.active=null,ra.forEach(function(e){e.checked=!0}),ra.length=Da=Ta=0},handleEvent:function(e){switch(e.type){case"drop":case"dragend":this._onDrop(e);break;case"dragenter":case"dragover":m&&(this._onDragOver(e),jr(e));break;case"selectstart":e.preventDefault();break}},toArray:function(){for(var e=[],a,o=this.el.children,r=0,l=o.length,s=this.options;ro.right+r||t.clientX<=o.right&&t.clientY>o.bottom&&t.clientX>=o.left:t.clientX>o.right&&t.clientY>o.top||t.clientX<=o.right&&t.clientY>o.bottom+r}function Jr(t,e,a,o,r,l,s,n){var u=o?t.clientY:t.clientX,i=o?a.height:a.width,d=o?a.top:a.left,c=o?a.bottom:a.right,h=!1;if(!s){if(n&&Jtd+i*l/2:uc-Jt)return-yt}else if(u>d+i*(1-r)/2&&uc-i*l/2)?u>d+i/2?1:-1:0}function Qr(t){return ie(m){a(7,e=Z(Z({},e),Se(f))),a(6,r=xa(e,o)),"name"in f&&a(0,n=f.name),"color"in f&&a(1,u=f.color),"size"in f&&a(2,i=f.size),"strokeWidth"in f&&a(3,d=f.strokeWidth),"absoluteStrokeWidth"in f&&a(4,c=f.absoluteStrokeWidth),"iconNode"in f&&a(5,h=f.iconNode),"$$scope"in f&&a(8,s=f.$$scope)},e=Se(e),[n,u,i,d,c,h,r,e,s,l]}var Ga=class extends me{constructor(e){super(),Be(this,e,rl,ol,pe,{name:0,color:1,size:2,strokeWidth:3,absoluteStrokeWidth:4,iconNode:5})}},na=Ga;function ll(t){let e,a=t[2].default,o=Xe(a,t,t[3],null);return{c(){o&&o.c()},l(r){o&&o.l(r)},m(r,l){o&&o.m(r,l),e=!0},p(r,l){o&&o.p&&(!e||l&8)&&Ke(o,a,r,r[3],e?je(a,r[3],l,null):Ye(r[3]),null)},i(r){e||(A(o,r),e=!0)},o(r){H(o,r),e=!1},d(r){o&&o.d(r)}}}function sl(t){let e,a,o=[{name:"pin"},t[1],{iconNode:t[0]}],r={$$slots:{default:[ll]},$$scope:{ctx:t}};for(let l=0;l{a(1,e=Z(Z({},e),Se(s))),"$$scope"in s&&a(3,r=s.$$scope)},e=Se(e),[l,e,o,r]}var Wa=class extends me{constructor(e){super(),Be(this,e,nl,sl,pe,{})}},nt=Wa;function ul(t){let e,a=t[2].default,o=Xe(a,t,t[3],null);return{c(){o&&o.c()},l(r){o&&o.l(r)},m(r,l){o&&o.m(r,l),e=!0},p(r,l){o&&o.p&&(!e||l&8)&&Ke(o,a,r,r[3],e?je(a,r[3],l,null):Ye(r[3]),null)},i(r){e||(A(o,r),e=!0)},o(r){H(o,r),e=!1},d(r){o&&o.d(r)}}}function il(t){let e,a,o=[{name:"x"},t[1],{iconNode:t[0]}],r={$$slots:{default:[ul]},$$scope:{ctx:t}};for(let l=0;l{a(1,e=Z(Z({},e),Se(s))),"$$scope"in s&&a(3,r=s.$$scope)},e=Se(e),[l,e,o,r]}var za=class extends me{constructor(e){super(),Be(this,e,dl,il,pe,{})}},Ft=za;var ut=[];function ua(t,e=ce){let a,o=new Set;function r(n){if(pe(t,n)&&(t=n,a)){let u=!ut.length;for(let i of o)i[1](),ut.push(i,t);if(u){for(let i=0;i{o.delete(i),o.size===0&&a&&(a(),a=null)}}return{set:r,update:l,subscribe:s}}var fl=ua(),cl=ua([]),pl=ua(),ee={plugin:fl,leaves:cl,activeLeafId:pl};var qo=(t,e,a,o)=>{let r=s=>{if(o[s])return o[s];let[n,u,i]=s.split("/"),d=new RegExp(u,i);return o[s]=d,d},l=(s,n)=>{if(s.matchConfig.condition==="startsWith"&&n.startsWith(s.matchConfig.value)||s.matchConfig.condition==="endsWith"&&n.endsWith(s.matchConfig.value)||s.matchConfig.condition==="includes"&&n.includes(s.matchConfig.value)||s.matchConfig.condition==="equals"&&n===s.matchConfig.value||s.matchConfig.condition==="regexp"&&r(s.matchConfig.value).test(n))return!0};return t.find(s=>{if(s.matchConfig.target==="directory")return l(s,e);if(s.matchConfig.target==="title")return l(s,a)})};var Vo=(t,e)=>t.vault.getAbstractFileByPath(e),Xa=async(t,e,a)=>{let o=Vo(t,e);if(o)return await t.vault.trash(o,a)},$o=async(t,e)=>{let a=Vo(t,e);if(a)return await t.vault.delete(a)};function ml(t){so(t,"svelte-fthq2i",":root{--ctx-menu-font-size:0.9rem;--ctx-menu-margin:0.25rem 0;--ctx-menu-padding:0;--ctx-menu-item-padding:0 0.5rem;--ctx-menu-divider-margin:0.2rem 0}")}function Go(t,e,a){let o=t.slice();return o[35]=e[a],o}function Wo(t){let e,a,o,r,l;a=new Ft({props:{size:18,strokeWidth:2}});function s(...n){return t[15](t[35],...n)}return{c(){e=z("div"),Pe(a.$$.fragment),U(e,"class","vertical-tabs-view-list-item-close-btn vertical-tabs-view-list-item-icon")},m(n,u){ue(n,e,u),ve(a,e,null),o=!0,r||(l=Ue(e,"click",s),r=!0)},p(n,u){t=n},i(n){o||(A(a.$$.fragment,n),o=!0)},o(n){H(a.$$.fragment,n),o=!1},d(n){n&&R(e),_e(a),r=!1,l()}}}function zo(t){let e;return{c(){e=z("div"),U(e,"class","vertical-tabs-view-list-item-tab-icon vertical-tabs-view-list-item-icon")},m(a,o){ue(a,e,o)},d(a){a&&R(e)}}}function Xo(t){let e,a=t[4](t[35])+"",o;return{c(){e=z("span"),o=ct(a),U(e,"class","vertical-tabs-view-list-item-dirname")},m(r,l){ue(r,e,l),J(e,o)},p(r,l){l[0]&1&&a!==(a=r[4](r[35])+"")&&Ca(o,a)},d(r){r&&R(e)}}}function hl(t){let e,a,o,r,l;a=new nt({props:{size:20}});function s(...n){return t[17](t[35],...n)}return{c(){e=z("div"),Pe(a.$$.fragment),U(e,"class","vertical-tabs-view-list-item-icon vertical-tabs-view-list-item-icon-pinned vertical-tabs-view-list-item-pin-btn vertical-tabs-view-list-item-pin-btn-pin")},m(n,u){ue(n,e,u),ve(a,e,null),o=!0,r||(l=Ue(e,"click",s),r=!0)},p(n,u){t=n},i(n){o||(A(a.$$.fragment,n),o=!0)},o(n){H(a.$$.fragment,n),o=!1},d(n){n&&R(e),_e(a),r=!1,l()}}}function gl(t){let e,a,o,r,l;a=new nt({props:{size:20}});function s(...n){return t[16](t[35],...n)}return{c(){e=z("div"),Pe(a.$$.fragment),U(e,"class","vertical-tabs-view-list-item-icon vertical-tabs-view-list-item-pin-btn vertical-tabs-view-list-item-pin-btn-pin")},m(n,u){ue(n,e,u),ve(a,e,null),o=!0,r||(l=Ue(e,"click",s),r=!0)},p(n,u){t=n},i(n){o||(A(a.$$.fragment,n),o=!0)},o(n){H(a.$$.fragment,n),o=!1},d(n){n&&R(e),_e(a),r=!1,l()}}}function jo(t){let e,a,o,r,l,s,n,u=t[5](t[35])+"",i,d,c,h,f,x,C,y,V,v=t[2].settings.showCloseIcon&&Wo(t),T=t[2].settings.showTabIcon&&zo(t),D=t[2].settings.showDirectory&&Xo(t),le=[gl,hl],M=[];function K(F,B){return F[2].settings.showPinIconIfNotPinned&&!F[35].pinned?0:F[2].settings.showPinnedIcon&&F[35].pinned?1:-1}~(h=K(t,[-1,-1]))&&(f=M[h]=le[h](t));function de(...F){return t[18](t[35],...F)}function G(...F){return t[19](t[35],...F)}return{c(){e=z("li"),a=z("div"),v&&v.c(),o=Je(),T&&T.c(),r=Je(),l=z("div"),D&&D.c(),s=Je(),n=z("span"),i=ct(u),d=Je(),c=z("div"),f&&f.c(),U(n,"class","vertical-tabs-view-list-item-title"),U(l,"class","vertical-tabs-view-list-item-name-container"),U(a,"class","vertical-tabs-view-list-item-left-container"),U(c,"class","vertical-tabs-view-list-item-right-container"),U(e,"data-leaf-id",x=t[35].id),U(e,"class","vertical-tabs-view-list-item"),ba(e,"focused",t[35].id===t[1])},m(F,B){ue(F,e,B),J(e,a),v&&v.m(a,null),J(a,o),T&&T.m(a,null),J(a,r),J(a,l),D&&D.m(l,null),J(l,s),J(l,n),J(n,i),J(e,d),J(e,c),~h&&M[h].m(c,null),C=!0,y||(V=[Ue(e,"mousedown",de),Ue(e,"contextmenu",G)],y=!0)},p(F,B){t=F,t[2].settings.showCloseIcon?v?(v.p(t,B),B[0]&4&&A(v,1)):(v=Wo(t),v.c(),A(v,1),v.m(a,o)):v&&(xt(),H(v,1,1,()=>{v=null}),Lt()),t[2].settings.showTabIcon?T||(T=zo(t),T.c(),T.m(a,r)):T&&(T.d(1),T=null),t[2].settings.showDirectory?D?D.p(t,B):(D=Xo(t),D.c(),D.m(l,s)):D&&(D.d(1),D=null),(!C||B[0]&1)&&u!==(u=t[5](t[35])+"")&&Ca(i,u);let se=h;h=K(t,B),h===se?~h&&M[h].p(t,B):(f&&(xt(),H(M[se],1,1,()=>{M[se]=null}),Lt()),~h?(f=M[h],f?f.p(t,B):(f=M[h]=le[h](t),f.c()),A(f,1),f.m(c,null)):f=null),(!C||B[0]&1&&x!==(x=t[35].id))&&U(e,"data-leaf-id",x),(!C||B[0]&3)&&ba(e,"focused",t[35].id===t[1])},i(F){C||(A(v),A(f),C=!0)},o(F){H(v),H(f),C=!1},d(F){F&&R(e),v&&v.d(),T&&T.d(),D&&D.d(),~h&&M[h].d(),y=!1,te(V)}}}function Ko(t){let e;return{c(){e=z("div"),U(e,"class","vertical-tabs-view-list-mobile-margin-block")},m(a,o){ue(a,e,o)},d(a){a&&R(e)}}}function xl(t){let e,a,o,r=Ae(t[0]),l=[];for(let u=0;uH(l[u],1,1,()=>{l[u]=null}),n=t[0].length>0&&ge.Platform.isMobile&&Ko(t);return{c(){e=z("ul");for(let u=0;u0&&ge.Platform.isMobile?n||(n=Ko(u),n.c(),n.m(e,null)):n&&(n.d(1),n=null)},i(u){if(!o){for(let i=0;i{a(2,l=p)}),ee.leaves.subscribe(p=>{a(0,s=p)}),ee.activeLeafId.subscribe(p=>{a(1,n=p)});let{view:u}=e,{state:i={tabIdToIndex:{},sortedTabIds:[]}}=e,d,{viewContentId:c}=e,{updateView:h}=e,f=[],x=()=>l.settings.tabIconRules.sort((p,g)=>g.priority-p.priority),C={},y=p=>{let g=p.view.file;return g?g.parent.path:""},V=p=>{let g=p.view.file,I=p.view.titleContainerEl.querySelectorAll(`.${p.view.titleEl.className}`),L=Array.from(I).find(ne=>{if(!ne.hasAttribute("hidden"))return ne});return(L==null?void 0:L.getText())||g.name},v=(p,g)=>It(void 0,void 0,void 0,function*(){var I,L;p.stopPropagation(),p.button!==2&&(p.target instanceof SVGElement||(yield ha(l.app,g),a(1,n=g.id),l.app.isMobile&&(!((I=l.app.workspace.leftSplit)===null||I===void 0)&&I.collapsed||l.app.workspace.leftSplit.collapse(),!((L=l.app.workspace.rightSplit)===null||L===void 0)&&L.collapsed||l.app.workspace.rightSplit.collapse())))}),T=(p,g)=>{var I;if(g.detach(),g.id===n)if(g.id===s[0].id&&s[1])a(1,n=s[1].id);else if(g.id===((I=s.at(-1))===null||I===void 0?void 0:I.id)&&s.at(-2))a(1,n=s.at(-2).id);else{let L=i.tabIdToIndex[g.id];s[L-1]&&a(1,n=s[L-1].id)}},D=(p,g)=>{s.forEach(I=>{I.id!==g.id&&I.detach()}),a(1,n=g.id)},le=(p,g)=>{let I=i.tabIdToIndex[g.id],L=i.tabIdToIndex[n];0<=L&&L{ne.detach()})},M=(p,g)=>{let I=i.tabIdToIndex[g.id],L=i.tabIdToIndex[n];I+1<=L&&L<=s.length-1&&a(1,n=s[I].id),s.slice(I+1,s.length).forEach(ne=>{ne.detach()})},K=(p,g)=>{g.setPinned(!0),h.bind(u)()},de=(p,g)=>{g.setPinned(!1),h.bind(u)()},G=(p,g)=>It(void 0,void 0,void 0,function*(){yield $o(l.app,g.view.file.path),h.bind(u)()}),F=(p,g)=>It(void 0,void 0,void 0,function*(){yield Xa(l.app,g.view.file.path,!0),h.bind(u)()}),B=(p,g)=>It(void 0,void 0,void 0,function*(){yield Xa(l.app,g.view.file.path,!1),h.bind(u)()});function se(){var p;let g=document.querySelector(`li[data-leaf-id="${n}"]`);if(!g)return;let I=g.getBoundingClientRect();if(!I)return;let L=(p=g.parentElement)===null||p===void 0?void 0:p.getBoundingClientRect();L&&(I.top>L.top||I.bottom{a(11,i.tabIdToIndex={},i),a(11,i.sortedTabIds=[],i),p.forEach((g,I)=>{a(11,i.tabIdToIndex[g.id]=I,i),i.sortedTabIds.push(g.id)}),localStorage.setItem(r.LIST_STATE,JSON.stringify(i))},xe=()=>{s.forEach(p=>{let g=`li[data-leaf-id="${p.id}"] .${o}`,I=document.querySelector(g);if(!I)return;let L=qo(f,y(p),V(p),C);L?(0,ge.setIcon)(I,L.icon):l.settings.defaultTabIcon?(0,ge.setIcon)(I,l.settings.defaultTabIcon):p.getViewState().type==="markdown"&&(0,ge.setIcon)(I,"")})};Sa(()=>{Uo.create(d,{group:"vertical-tabs-view-list",delay:100,delayOnTouchOnly:!0,touchStartThreshold:3,animation:150,draggable:".vertical-tabs-view-list-item",direction:"vertical",ghostClass:"vertical-tabs-view-list-item-ghost",chosenClass:"vertical-tabs-view-list-item-chosen",forceFallback:!ge.Platform.isDesktop,fallbackOnBody:!ge.Platform.isDesktop,onChange:p=>{let g=document.querySelector(`#${c}`);if(!g)return;let I=g.getBoundingClientRect(),L=p.item.getBoundingClientRect(),ne=L.height*2;L.top{if(p.oldIndex==null||p.newIndex==null)return;let g=Math.min(p.oldIndex,p.newIndex),I=Math.max(p.oldIndex,p.newIndex);for(let L=g;L<=I;L++){let ca=d.children[L].getAttribute("data-leaf-id");ca&&(a(11,i.tabIdToIndex[ca]=L,i),a(11,i.sortedTabIds[L]=ca,i),localStorage.setItem(r.LIST_STATE,JSON.stringify(i)))}}}),xe(),se()});let Te=p=>{let g=new ge.Menu;return g.addItem(I=>I.setTitle("Close").setIcon("x").onClick(L=>{L.preventDefault(),T(L,p)})),g.addItem(I=>I.setTitle("Close others").setIcon("x").onClick(L=>{L.preventDefault(),D(L,p)})),g.addItem(I=>I.setTitle("Close to the top").setIcon("x").onClick(L=>{L.preventDefault(),le(L,p)})),g.addItem(I=>I.setTitle("Close to the bottom").setIcon("x").onClick(L=>{L.preventDefault(),M(L,p)})),g.addSeparator(),p&&!p.pinned&&g.addItem(I=>I.setTitle("Pin").setIcon("pin").onClick(L=>{L.preventDefault(),K(L,p)})),p&&p.pinned&&g.addItem(I=>I.setTitle("Unpin").setIcon("pin-off").onClick(L=>{L.preventDefault(),de(L,p)})),g.addSeparator(),g.addItem(I=>I.setTitle("Trach local").setIcon("trash").onClick(L=>{L.preventDefault(),B(L,p)})),g.addItem(I=>I.setTitle("Trach system").setIcon("trash").onClick(L=>{L.preventDefault(),F(L,p)})),g.addItem(I=>I.setTitle("Delete file").setIcon("trash-2").onClick(L=>{L.preventDefault(),G(L,p)})),g},Le=(p,g)=>T(g,p),We=(p,g)=>K(g,p),Re=(p,g)=>de(g,p),fa=(p,g)=>v(g,p),Ka=(p,g)=>{Te(p).showAtMouseEvent(g)};function At(p){qt[p?"unshift":"push"](()=>{d=p,a(3,d)})}t.$$set=p=>{"view"in p&&a(12,u=p.view),"state"in p&&a(11,i=p.state),"viewContentId"in p&&a(13,c=p.viewContentId),"updateView"in p&&a(14,h=p.updateView)},t.$$.update=()=>{if(t.$$.dirty[0]&1){e:fe(s),xe()}if(t.$$.dirty[0]&2){e:n&&se()}};e:f=x();return[s,n,l,d,y,V,v,T,K,de,Te,i,u,c,h,Le,We,Re,fa,Ka,At]}var ja=class extends me{constructor(e){super(),Be(this,e,Ll,xl,pe,{view:12,state:11,viewContentId:13,updateView:14},ml,[-1,-1])}},Zo=ja;var er="vertical-tabs-view",Jo=er+"-content",Il={LIST_STATE:er+"list-state"},it="vertical-tabs-view",ia=class extends Qo.ItemView{constructor(a,o){super(o);this.state={tabIdToIndex:{},sortedTabIds:[]};this.plugin=a,this.settings=a.settings;let r=localStorage.getItem(Il.LIST_STATE);if(r)try{this.state=JSON.parse(r)}catch(l){console.error(l)}this.registerEvent(this.app.workspace.on("layout-change",()=>{let l=this.getActiveLeaf();ee.activeLeafId.set(l.id),this.updateView()})),this.registerEvent(this.app.workspace.on("active-leaf-change",l=>{!l||l.getViewState().type===it||ee.activeLeafId.set(l.id)}))}setSettings(a){this.plugin.settings=a,ee.plugin.set(this.plugin),this.updateView()}getViewType(){return it}getIcon(){return"list"}getDisplayText(){return"Vertical Tabs"}async onClose(){this.Tabs.$destroy()}async onOpen(){ee.plugin.set(this.plugin),ee.leaves.set(this.getSortedLeaves()),ee.activeLeafId.set(this.getActiveLeaf().id);let a=this.contentEl;a.id=Jo,this.Tabs=new Zo({target:this.contentEl,props:{view:this,state:this.state,updateView:this.updateView,viewContentId:Jo}})}getActiveLeaf(){return this.app.workspace.getMostRecentLeaf()}async setActiveLeafById(a){await to(this.app,a),ee.activeLeafId.set(a)}updateView(){let a=this.getSortedLeaves();a.forEach(o=>{o.on("pinned-change",()=>{ee.leaves.set(a)})}),ee.leaves.set(a)}getActiveLeafIndex(){let a=this.getActiveLeaf();return a?this.state.tabIdToIndex[a.id]:0}async cycleNextTab(){let a=this.getActiveLeafIndex();if(a==null)return;let o=(a+1)%this.state.sortedTabIds.length;await this.setActiveLeafById(this.state.sortedTabIds[o])}async cyclePreviousTab(){let a=this.getActiveLeafIndex();if(a==null)return;let o=(a-1)%this.state.sortedTabIds.length;o<0&&(o+=this.state.sortedTabIds.length),await this.setActiveLeafById(this.state.sortedTabIds[o])}collectLeafIds(a,o=[]){return a.forEach(r=>{if(r.type==="leaf")o.push(r.id);else if("children"in r&&Array.isArray(r.children))return this.collectLeafIds(r.children,o)}),o}getLeaves(){let a=[],o=this.app.workspace.rootSplit,r=this.collectLeafIds(o.children);return this.app.workspace.iterateRootLeaves(l=>{r.includes(l.id)&&a.push(l)}),a}getSortedLeaves(){return this.getLeaves().slice().sort((a,o)=>{var s,n;let r=(s=this.state.tabIdToIndex[a.id])!=null?s:1/0,l=(n=this.state.tabIdToIndex[o.id])!=null?n:1/0;return r-l})}};var da=class extends tr.Plugin{async onload(){Bt("loading..."),await this.loadSettings(),this.addSettingTab(new Ot(this.app,this)),this.addCommands(),this.app.workspace.onLayoutReady(async()=>{this.registerViewExtension()}),Bt("loaded.")}onunload(){Bt("unloaded.")}async loadSettings(){this.settings=Object.assign({},eo,await this.loadData()),this.settings.tabIconRules.length===0&&"tabIconConfigs"in this.settings&&Array.isArray(this.settings.tabIconConfigs)&&this.settings.tabIconConfigs.length>0&&(this.settings.tabIconRules=structuredClone(this.settings.tabIconConfigs),delete this.settings.tabIconConfigs,this.saveSettings(this.settings))}async saveSettings(a){await this.saveData(a),this.settings=a;let o=this.getView();o&&o.updateView()}addCommands(){this.addCommand({id:"show-tabs-view",name:"Show vertical tabs view",callback:async()=>{this.openViewLeaf()}}),this.addCommand({id:"cycle-previous-tab",name:"Cycle previous tab",callback:async()=>{let a=this.getView();a&&await a.cyclePreviousTab()}}),this.addCommand({id:"cycle-next-tab",name:"Cycle next tab",callback:async()=>{let a=this.getView();a&&await a.cycleNextTab()}})}registerViewExtension(){this.registerView(it,a=>new ia(this,a))}getView(){let a=this.app.workspace.getLeavesOfType(it)[0];if(a)return a.view}async openViewLeaf(){let a=()=>this.settings.defaultPosition==="left"?this.app.workspace.getLeftLeaf(!1):this.settings.defaultPosition==="right"?this.app.workspace.getRightLeaf(!1):this.app.workspace.getLeftLeaf(!1),o=this.getView();if(o)return o.updateView(),this.app.workspace.revealLeaf(o.leaf);let r=a();await r.setViewState({type:it,active:!0}),this.app.workspace.revealLeaf(r)}}; +/*! Bundled license information: + +sortablejs/modular/sortable.esm.js: + (**! + * Sortable 1.15.0 + * @author RubaXa + * @author owenm + * @license MIT + *) +*/ diff --git a/.obsidian/plugins/vertical-tabs-view/manifest.json b/.obsidian/plugins/vertical-tabs-view/manifest.json new file mode 100644 index 00000000..483a2d38 --- /dev/null +++ b/.obsidian/plugins/vertical-tabs-view/manifest.json @@ -0,0 +1,11 @@ +{ + "id": "vertical-tabs-view", + "name": "Vertical Tabs View", + "version": "2.4.5", + "minAppVersion": "0.15.0", + "description": "Provides a vertical tabs view.", + "author": "hdykokd", + "authorUrl": "https://hdykokd.me", + "fundingUrl": "https://www.buymeacoffee.com/hdykokd", + "isDesktopOnly": false +} \ No newline at end of file diff --git a/.obsidian/plugins/vertical-tabs-view/styles.css b/.obsidian/plugins/vertical-tabs-view/styles.css new file mode 100644 index 00000000..ae95e3b6 --- /dev/null +++ b/.obsidian/plugins/vertical-tabs-view/styles.css @@ -0,0 +1,163 @@ +#vertical-tabs-view-content { + padding: 0; + margin: 2px; +} + +ul.vertical-tabs-view-list { + list-style: none; + padding: 0; + margin: 0.1rem 0; +} + +.is-focused .vertical-tabs-view-list li.vertical-tabs-view-list-item { + color: var(--tab-text-color-focused); +} +.vertical-tabs-view-list li.vertical-tabs-view-list-item { + display: flex; + flex-direction: row; + justify-content: space-between; + color: var(--tab-text-color); + font-size: var(--tab-font-size); + font-weight: var(--tab-font-weight); + padding: 2px 0 2px 2px; + width: 100%; + min-height: 2.5rem; + border-radius: var(--tab-radius); + overflow: hidden; + white-space: nowrap; +} +.is-focused .vertical-tabs-view-list li.focused, +.vertical-tabs-view-list li.focused { + color: var(--tab-text-color-focused-active-current); + background-color: var(--tab-background-active); +} + +.vertical-tabs-view-list li.vertical-tabs-view-list-item:hover { + background-color: var(--background-modifier-hover); +} + +.vertical-tabs-view-list-item-ghost { + opacity: 0.6; +} +.is-mobile .vertical-tabs-view-list-item-chosen { + display: none; +} + +.vertical-tabs-view-list li .vertical-tabs-view-list-item-left-container, +.vertical-tabs-view-list li .vertical-tabs-view-list-item-right-container { + display: flex; + flex-direction: row; + align-items: center; + overflow: auto; +} + +.vertical-tabs-view-list li .vertical-tabs-view-list-item-name-container { + display: flex; + overflow: auto; + margin: 0 0.25em; + scrollbar-width: thin; +} + +/* scrollbar */ +.vertical-tabs-view-list li .vertical-tabs-view-list-item-name-container::-webkit-scrollbar { + margin-top: 0.25em; + height: 0.25em; +} +.vertical-tabs-view-list li .vertical-tabs-view-list-item-name-container::-webkit-scrollbar-track { + background-color: var(--scrollbar-bg); +} +.vertical-tabs-view-list li .vertical-tabs-view-list-item-name-container::-webkit-scrollbar-thumb { + background-color: var(--scrollbar-thumb-bg); +} +.vertical-tabs-view-list li .vertical-tabs-view-list-item-name-container::-webkit-scrollbar-thumb:hover { + background-color: var(--scrollbar-active-thumb-bg); +} + +.vertical-tabs-view-list li .vertical-tabs-view-list-item-right-container { + flex-shrink: 0; +} + +.vertical-tabs-view-list li .vertical-tabs-view-list-item-icon { + color: var(--tab-text-color); + padding-top: 0.25em; +} + +.vertical-tabs-view-list li .vertical-tabs-view-list-item-tab-icon { + margin: 0 0.25em; + min-width: var(--icon-s); + --icon-size: var(--icon-s); + --icon-stroke: var(--icon-s-stroke-width); +} + +.vertical-tabs-view-list li .vertical-tabs-view-list-item-close-btn, +.vertical-tabs-view-list li .vertical-tabs-view-list-item-pin-btn { + cursor: pointer; + --icon-size: var(--icon-l); + --icon-stroke: var(--icon-l-stroke-width); +} + +.vertical-tabs-view-list li .vertical-tabs-view-list-item-close-btn:hover, +.vertical-tabs-view-list li .vertical-tabs-view-list-item-pin-btn:hover { + color: var(--tab-text-color-focused); + background-color: var(--tab-background-active); +} + +.vertical-tabs-view-list li .vertical-tabs-view-list-item-icon-pinned { + color: var(--text-accent); +} + +.vertical-tabs-view-list li .vertical-tabs-view-list-item-pin-btn { + margin-right: 0.5em; + margin-top: 0.5em; +} + +.vertical-tabs-view-list li .vertical-tabs-view-list-item-name-container { + display: flex; + flex-direction: column; + justify-content: space-between; + margin-left: 0.25em; + line-height: 1.4em; + width: 100%; +} + +.vertical-tabs-view-list li .vertical-tabs-view-list-item-name-container::-webkit-scrollbar { + width: 2rem; +} + +.vertical-tabs-view-list li .vertical-tabs-view-list-item-dirname { + font-size: var(--font-ui-smaller); +} + +/* settings */ +.vertical-tabs-view-settings-preview-icon-wrapper { + display: flex; +} +.vertical-tabs-view-settings-preview-icon-text { + margin-right: 0.5em; +} +.vertical-tabs-view-settings-tab-icon-rules { + margin-left: 1em; +} +.setting-item.vertical-tabs-view-settings-tab-icon-rules-add-btn { + border: none; +} +.vertical-tabs-view-settings-tab-icon-rule-wrapper { + border: 1px solid var(--background-modifier-border); + padding: 1em; + margin-bottom: 0.25em; +} +.vertical-tabs-view-settings-tab-icon-rule-match-config-wrapper { + border-bottom: 1px solid var(--background-modifier-border); + padding: 0.5em 1em; +} +.vertical-tabs-view-settings-tab-icon-rule-remove-btn-wrapper { + display: flex; + justify-content: end; + margin-top: 1em; +} + +/* See: https://github.com/hdykokd/obsidian-vertical-tabs-view/issues/60 */ +.vertical-tabs-view-list-mobile-margin-block { + height: 100%; + padding-bottom: 4.5rem; +} diff --git a/.obsidian/plugins/zotlit/data.json b/.obsidian/plugins/zotlit/data.json new file mode 100644 index 00000000..77efa79c --- /dev/null +++ b/.obsidian/plugins/zotlit/data.json @@ -0,0 +1,27 @@ +{ + "logLevel": "INFO", + "citationEditorSuggester": true, + "showCitekeyInSuggester": true, + "literatureNoteFolder": "sources/zotero", + "enableServer": false, + "serverPort": 9091, + "serverHostname": "127.0.0.1", + "template": { + "folder": "templates/zotero", + "templates": { + "filename": "<%= it.citekey ?? it.DOI ?? it.title ?? it.key %>.md" + } + }, + "updateAnnotBlock": false, + "updateOverwrite": false, + "autoPairEta": false, + "autoTrim": [ + false, + false + ], + "autoRefresh": true, + "zoteroDataDir": "/Users/oscarplaisant/Zotero", + "citationLibrary": 2, + "imgExcerptImport": "symlink", + "imgExcerptPath": "images/zotero" +} \ No newline at end of file diff --git a/.obsidian/plugins/zotlit/main.js b/.obsidian/plugins/zotlit/main.js new file mode 100644 index 00000000..22910ab3 --- /dev/null +++ b/.obsidian/plugins/zotlit/main.js @@ -0,0 +1,410 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source visit the plugins github repository +*/ + +"use strict";var fj=Object.create;var Ho=Object.defineProperty;var Ov=Object.getOwnPropertyDescriptor;var pj=Object.getOwnPropertyNames;var dj=Object.getPrototypeOf,mj=Object.prototype.hasOwnProperty;var hj=(e,t,r)=>t in e?Ho(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var $u=(e,t)=>()=>(e&&(t=e(e=0)),t);var g=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Av=(e,t)=>{for(var r in t)Ho(e,r,{get:t[r],enumerable:!0})},kv=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of pj(t))!mj.call(e,o)&&o!==r&&Ho(e,o,{get:()=>t[o],enumerable:!(n=Ov(t,o))||n.enumerable});return e};var ge=(e,t,r)=>(r=e!=null?fj(dj(e)):{},kv(t||!e||!e.__esModule?Ho(r,"default",{value:e,enumerable:!0}):r,e)),Ed=e=>kv(Ho({},"__esModule",{value:!0}),e),le=(e,t,r,n)=>{for(var o=n>1?void 0:n?Ov(t,r):t,i=e.length-1,s;i>=0;i--)(s=e[i])&&(o=(n?s(t,r,o):s(o))||o);return n&&o&&Ho(t,r,o),o};var Nv=(e,t,r)=>(hj(e,typeof t!="symbol"?t+"":t,r),r);var r0=g((Ine,t0)=>{var Jo=1e3,Zo=Jo*60,Yo=Zo*60,Gn=Yo*24,_j=Gn*7,Cj=Gn*365.25;t0.exports=function(e,t){t=t||{};var r=typeof e;if(r==="string"&&e.length>0)return Tj(e);if(r==="number"&&isFinite(e))return t.long?Aj(e):Oj(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function Tj(e){if(e=String(e),!(e.length>100)){var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(t){var r=parseFloat(t[1]),n=(t[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*Cj;case"weeks":case"week":case"w":return r*_j;case"days":case"day":case"d":return r*Gn;case"hours":case"hour":case"hrs":case"hr":case"h":return r*Yo;case"minutes":case"minute":case"mins":case"min":case"m":return r*Zo;case"seconds":case"second":case"secs":case"sec":case"s":return r*Jo;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function Oj(e){var t=Math.abs(e);return t>=Gn?Math.round(e/Gn)+"d":t>=Yo?Math.round(e/Yo)+"h":t>=Zo?Math.round(e/Zo)+"m":t>=Jo?Math.round(e/Jo)+"s":e+"ms"}function Aj(e){var t=Math.abs(e);return t>=Gn?Hu(e,t,Gn,"day"):t>=Yo?Hu(e,t,Yo,"hour"):t>=Zo?Hu(e,t,Zo,"minute"):t>=Jo?Hu(e,t,Jo,"second"):e+" ms"}function Hu(e,t,r,n){var o=t>=r*1.5;return Math.round(e/r)+" "+n+(o?"s":"")}});var o0=g((_ne,n0)=>{function kj(e){r.debug=r,r.default=r,r.coerce=u,r.disable=i,r.enable=o,r.enabled=s,r.humanize=r0(),r.destroy=l,Object.keys(e).forEach(c=>{r[c]=e[c]}),r.names=[],r.skips=[],r.formatters={};function t(c){let f=0;for(let p=0;p{if(J==="%%")return"%";M++;let K=r.formatters[G];if(typeof K=="function"){let P=y[M];J=K.call(v,P),y.splice(M,1),M--}return J}),r.formatArgs.call(v,y),(v.log||r.log).apply(v,y)}return b.namespace=c,b.useColors=r.useColors(),b.color=r.selectColor(c),b.extend=n,b.destroy=r.destroy,Object.defineProperty(b,"enabled",{enumerable:!0,configurable:!1,get:()=>p!==null?p:(d!==r.namespaces&&(d=r.namespaces,h=r.enabled(c)),h),set:y=>{p=y}}),typeof r.init=="function"&&r.init(b),b}function n(c,f){let p=r(this.namespace+(typeof f>"u"?":":f)+c);return p.log=this.log,p}function o(c){r.save(c),r.namespaces=c,r.names=[],r.skips=[];let f,p=(typeof c=="string"?c:"").split(/[\s,]+/),d=p.length;for(f=0;f"-"+f)].join(",");return r.enable(""),c}function s(c){if(c[c.length-1]==="*")return!0;let f,p;for(f=0,p=r.skips.length;f{At.formatArgs=Rj;At.save=Dj;At.load=Pj;At.useColors=Nj;At.storage=Fj();At.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();At.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function Nj(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function Rj(e){if(e[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+e[0]+(this.useColors?"%c ":" ")+"+"+Ku.exports.humanize(this.diff),!this.useColors)return;let t="color: "+this.color;e.splice(1,0,t,"color: inherit");let r=0,n=0;e[0].replace(/%[a-zA-Z%]/g,o=>{o!=="%%"&&(r++,o==="%c"&&(n=r))}),e.splice(n,0,t)}At.log=console.debug||console.log||(()=>{});function Dj(e){try{e?At.storage.setItem("debug",e):At.storage.removeItem("debug")}catch{}}function Pj(){let e;try{e=At.storage.getItem("debug")}catch{}return!e&&typeof process<"u"&&"env"in process&&(e=process.env.DEBUG),e}function Fj(){try{return localStorage}catch{}}Ku.exports=o0()(At);var{formatters:$j}=Ku.exports;$j.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}});var s0=g((Cne,i0)=>{"use strict";i0.exports=Mj;function Xo(e){return e instanceof Buffer?Buffer.from(e):new e.constructor(e.buffer.slice(),e.byteOffset,e.length)}function Mj(e){if(e=e||{},e.circles)return jj(e);return e.proto?n:r;function t(o,i){for(var s=Object.keys(o),a=new Array(s.length),u=0;u{var Lj=require("util"),Jn=Ue()("log4js:configuration"),Vu=[],Gu=[],a0=e=>!e,u0=e=>e&&typeof e=="object"&&!Array.isArray(e),qj=e=>/^[A-Za-z][A-Za-z0-9_]*$/g.test(e),Bj=e=>e&&typeof e=="number"&&Number.isInteger(e),zj=e=>{Gu.push(e),Jn(`Added listener, now ${Gu.length} listeners`)},Uj=e=>{Vu.push(e),Jn(`Added pre-processing listener, now ${Vu.length} listeners`)},c0=(e,t,r)=>{(Array.isArray(t)?t:[t]).forEach(o=>{if(o)throw new Error(`Problem with log4js configuration: (${Lj.inspect(e,{depth:5})}) - ${r}`)})},Wj=e=>{Jn("New configuration to be validated: ",e),c0(e,a0(u0(e)),"must be an object."),Jn(`Calling pre-processing listeners (${Vu.length})`),Vu.forEach(t=>t(e)),Jn("Configuration pre-processing finished."),Jn(`Calling configuration listeners (${Gu.length})`),Gu.forEach(t=>t(e)),Jn("Configuration finished.")};l0.exports={configure:Wj,addListener:zj,addPreProcessingListener:Uj,throwExceptionIf:c0,anObject:u0,anInteger:Bj,validIdentifier:qj,not:a0}});var Ju=g((One,zt)=>{"use strict";function f0(e,t){for(var r=e.toString();r.length-1?o:i,a=Yn(t.getHours()),u=Yn(t.getMinutes()),l=Yn(t.getSeconds()),c=f0(t.getMilliseconds(),3),f=Hj(t.getTimezoneOffset()),p=e.replace(/dd/g,r).replace(/MM/g,n).replace(/y{1,4}/g,s).replace(/hh/g,a).replace(/mm/g,u).replace(/ss/g,l).replace(/SSS/g,c).replace(/O/g,f);return p}function dn(e,t,r,n){e["set"+(n?"":"UTC")+t](r)}function Kj(e,t,r){var n=e.indexOf("O")<0,o=!1,i=[{pattern:/y{1,4}/,regexp:"\\d{1,4}",fn:function(f,p){dn(f,"FullYear",p,n)}},{pattern:/MM/,regexp:"\\d{1,2}",fn:function(f,p){dn(f,"Month",p-1,n),f.getMonth()!==p-1&&(o=!0)}},{pattern:/dd/,regexp:"\\d{1,2}",fn:function(f,p){o&&dn(f,"Month",f.getMonth()-1,n),dn(f,"Date",p,n)}},{pattern:/hh/,regexp:"\\d{1,2}",fn:function(f,p){dn(f,"Hours",p,n)}},{pattern:/mm/,regexp:"\\d\\d",fn:function(f,p){dn(f,"Minutes",p,n)}},{pattern:/ss/,regexp:"\\d\\d",fn:function(f,p){dn(f,"Seconds",p,n)}},{pattern:/SSS/,regexp:"\\d\\d\\d",fn:function(f,p){dn(f,"Milliseconds",p,n)}},{pattern:/O/,regexp:"[+-]\\d{1,2}:?\\d{2}?|Z",fn:function(f,p){p==="Z"?p=0:p=p.replace(":","");var d=Math.abs(p),h=(p>0?-1:1)*(d%100+Math.floor(d/100)*60);f.setUTCMinutes(f.getUTCMinutes()+h)}}],s=i.reduce(function(f,p){return p.pattern.test(f.regexp)?(p.index=f.regexp.match(p.pattern).index,f.regexp=f.regexp.replace(p.pattern,"("+p.regexp+")")):p.index=-1,f},{regexp:e,index:[]}),a=i.filter(function(f){return f.index>-1});a.sort(function(f,p){return f.index-p.index});var u=new RegExp(s.regexp),l=u.exec(t);if(l){var c=r||zt.exports.now();return a.forEach(function(f,p){f.fn(c,l[p+1])}),c}throw new Error("String '"+t+"' could not be parsed as '"+e+"'")}function Vj(e,t,r){if(!e)throw new Error("pattern must be supplied");return Kj(e,t,r)}function Gj(){return new Date}zt.exports=p0;zt.exports.asString=p0;zt.exports.parse=Vj;zt.exports.now=Gj;zt.exports.ISO8601_FORMAT="yyyy-MM-ddThh:mm:ss.SSS";zt.exports.ISO8601_WITH_TZ_OFFSET_FORMAT="yyyy-MM-ddThh:mm:ss.SSSO";zt.exports.DATETIME_FORMAT="dd MM yyyy hh:mm:ss.SSS";zt.exports.ABSOLUTETIME_FORMAT="hh:mm:ss.SSS"});var $d=g((Ane,I0)=>{var mn=Ju(),d0=require("os"),gs=require("util"),hs=require("path"),m0=require("url"),h0=Ue()("log4js:layouts"),g0={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[90,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[91,39],yellow:[33,39]};function y0(e){return e?`\x1B[${g0[e][0]}m`:""}function b0(e){return e?`\x1B[${g0[e][1]}m`:""}function Jj(e,t){return y0(t)+e+b0(t)}function v0(e,t){return Jj(gs.format("[%s] [%s] %s - ",mn.asString(e.startTime),e.level.toString(),e.categoryName),t)}function x0(e){return v0(e)+gs.format(...e.data)}function Zu(e){return v0(e,e.level.colour)+gs.format(...e.data)}function w0(e){return gs.format(...e.data)}function E0(e){return e.data[0]}function S0(e,t){let r="%r %p %c - %m%n",n=/%(-?[0-9]+)?(\.?-?[0-9]+)?([[\]cdhmnprzxXyflos%])(\{([^}]+)\})?|([^%]+)/;e=e||r;function o(C,_){let I=C.categoryName;if(_){let B=parseInt(_,10),D=I.split(".");BD&&(I=re.slice(-D).join(hs.sep))}return I}function T(C){return C.lineNumber?`${C.lineNumber}`:""}function M(C){return C.columnNumber?`${C.columnNumber}`:""}function V(C){return C.callStack||""}let J={c:o,d:i,h:s,m:a,n:u,p:l,r:c,"[":f,"]":p,y:b,z:h,"%":d,x:y,X:v,f:w,l:T,o:M,s:V};function G(C,_,I){return J[C](_,I)}function K(C,_){let I;return C?(I=parseInt(C.slice(1),10),I>0?_.slice(0,I):_.slice(I)):_}function P(C,_){let I;if(C)if(C.charAt(0)==="-")for(I=parseInt(C.slice(1),10);_.length{var $e=Zn(),_0=["white","grey","black","blue","cyan","green","magenta","red","yellow"],Me=class{constructor(t,r,n){this.level=t,this.levelStr=r,this.colour=n}toString(){return this.levelStr}static getLevel(t,r){return t?t instanceof Me?t:(t instanceof Object&&t.levelStr&&(t=t.levelStr),Me[t.toString().toUpperCase()]||r):r}static addLevels(t){t&&(Object.keys(t).forEach(n=>{let o=n.toUpperCase();Me[o]=new Me(t[n].value,o,t[n].colour);let i=Me.levels.findIndex(s=>s.levelStr===o);i>-1?Me.levels[i]=Me[o]:Me.levels.push(Me[o])}),Me.levels.sort((n,o)=>n.level-o.level))}isLessThanOrEqualTo(t){return typeof t=="string"&&(t=Me.getLevel(t)),this.level<=t.level}isGreaterThanOrEqualTo(t){return typeof t=="string"&&(t=Me.getLevel(t)),this.level>=t.level}isEqualTo(t){return typeof t=="string"&&(t=Me.getLevel(t)),this.level===t.level}};Me.levels=[];Me.addLevels({ALL:{value:Number.MIN_VALUE,colour:"grey"},TRACE:{value:5e3,colour:"blue"},DEBUG:{value:1e4,colour:"cyan"},INFO:{value:2e4,colour:"green"},WARN:{value:3e4,colour:"yellow"},ERROR:{value:4e4,colour:"red"},FATAL:{value:5e4,colour:"magenta"},MARK:{value:9007199254740992,colour:"grey"},OFF:{value:Number.MAX_VALUE,colour:"grey"}});$e.addListener(e=>{let t=e.levels;t&&($e.throwExceptionIf(e,$e.not($e.anObject(t)),"levels must be an object"),Object.keys(t).forEach(n=>{$e.throwExceptionIf(e,$e.not($e.validIdentifier(n)),`level name "${n}" is not a valid identifier (must start with a letter, only contain A-Z,a-z,0-9,_)`),$e.throwExceptionIf(e,$e.not($e.anObject(t[n])),`level "${n}" must be an object`),$e.throwExceptionIf(e,$e.not(t[n].value),`level "${n}" must have a 'value' property`),$e.throwExceptionIf(e,$e.not($e.anInteger(t[n].value)),`level "${n}".value must have an integer value`),$e.throwExceptionIf(e,$e.not(t[n].colour),`level "${n}" must have a 'colour' property`),$e.throwExceptionIf(e,$e.not(_0.indexOf(t[n].colour)>-1),`level "${n}".colour must be one of ${_0.join(", ")}`)}))});$e.addListener(e=>{Me.addLevels(e.levels)});C0.exports=Me});var $0=g(bs=>{"use strict";var{parse:A0,stringify:k0}=JSON,{keys:Zj}=Object,ys=String,N0="string",T0={},Yu="object",R0=(e,t)=>t,Yj=e=>e instanceof ys?ys(e):e,Xj=(e,t)=>typeof t===N0?new ys(t):t,D0=(e,t,r,n)=>{let o=[];for(let i=Zj(r),{length:s}=i,a=0;a{let n=ys(t.push(r)-1);return e.set(r,n),n},P0=(e,t)=>{let r=A0(e,Xj).map(Yj),n=r[0],o=t||R0,i=typeof n===Yu&&n?D0(r,new Set,n,o):n;return o.call({"":i},"",i)};bs.parse=P0;var F0=(e,t,r)=>{let n=t&&typeof t===Yu?(c,f)=>c===""||-1A0(F0(e));bs.toJSON=Qj;var e3=e=>P0(k0(e));bs.fromJSON=e3});var Md=g((Rne,L0)=>{var M0=$0(),j0=Xn(),Qo=class{constructor(t,r,n,o,i){this.startTime=new Date,this.categoryName=t,this.data=n,this.level=r,this.context=Object.assign({},o),this.pid=process.pid,i&&(this.functionName=i.functionName,this.fileName=i.fileName,this.lineNumber=i.lineNumber,this.columnNumber=i.columnNumber,this.callStack=i.callStack)}serialise(){return M0.stringify(this,(t,r)=>(r&&r.message&&r.stack?r=Object.assign({message:r.message,stack:r.stack},r):typeof r=="number"&&(Number.isNaN(r)||!Number.isFinite(r))?r=r.toString():typeof r>"u"&&(r=typeof r),r))}static deserialise(t){let r;try{let n=M0.parse(t,(o,i)=>{if(i&&i.message&&i.stack){let s=new Error(i);Object.keys(i).forEach(a=>{s[a]=i[a]}),i=s}return i});n.location={functionName:n.functionName,fileName:n.fileName,lineNumber:n.lineNumber,columnNumber:n.columnNumber,callStack:n.callStack},r=new Qo(n.categoryName,j0.getLevel(n.level.levelStr),n.data,n.context,n.location),r.startTime=new Date(n.startTime),r.pid=n.pid,r.cluster=n.cluster}catch(n){r=new Qo("log4js",j0.ERROR,["Unable to parse log:",t,"because: ",n])}return r}};L0.exports=Qo});var Qu=g((Dne,z0)=>{var Ut=Ue()("log4js:clustering"),t3=Md(),r3=Zn(),ei=!1,Wt=null;try{Wt=require("cluster")}catch{Ut("cluster module not present"),ei=!0}var Ld=[],xs=!1,vs="NODE_APP_INSTANCE",q0=()=>xs&&process.env[vs]==="0",jd=()=>ei||Wt&&Wt.isMaster||q0(),B0=e=>{Ld.forEach(t=>t(e))},Xu=(e,t)=>{if(Ut("cluster message received from worker ",e,": ",t),e.topic&&e.data&&(t=e,e=void 0),t&&t.topic&&t.topic==="log4js:message"){Ut("received message: ",t.data);let r=t3.deserialise(t.data);B0(r)}};ei||r3.addListener(e=>{Ld.length=0,{pm2:xs,disableClustering:ei,pm2InstanceVar:vs="NODE_APP_INSTANCE"}=e,Ut(`clustering disabled ? ${ei}`),Ut(`cluster.isMaster ? ${Wt&&Wt.isMaster}`),Ut(`pm2 enabled ? ${xs}`),Ut(`pm2InstanceVar = ${vs}`),Ut(`process.env[${vs}] = ${process.env[vs]}`),xs&&process.removeListener("message",Xu),Wt&&Wt.removeListener&&Wt.removeListener("message",Xu),ei||e.disableClustering?Ut("Not listening for cluster messages, because clustering disabled."):q0()?(Ut("listening for PM2 broadcast messages"),process.on("message",Xu)):Wt&&Wt.isMaster?(Ut("listening for cluster messages"),Wt.on("message",Xu)):Ut("not listening for messages, because we are not a master process")});z0.exports={onlyOnMaster:(e,t)=>jd()?e():t,isMaster:jd,send:e=>{jd()?B0(e):(xs||(e.cluster={workerId:Wt.worker.id,worker:process.pid}),process.send({topic:"log4js:message",data:e.serialise()}))},onMessage:e=>{Ld.push(e)}}});var H0=g((Pne,W0)=>{function n3(e){if(typeof e=="number"&&Number.isInteger(e))return e;let t={K:1024,M:1024*1024,G:1024*1024*1024},r=Object.keys(t),n=e.slice(-1).toLocaleUpperCase(),o=e.slice(0,-1).trim();if(r.indexOf(n)<0||!Number.isInteger(Number(o)))throw Error(`maxLogSize: "${e}" is invalid`);return o*t[n]}function o3(e,t){let r=Object.assign({},t);return Object.keys(e).forEach(n=>{r[n]&&(r[n]=e[n](t[n]))}),r}function qd(e){return o3({maxLogSize:n3},e)}var U0={dateFile:qd,file:qd,fileSync:qd};W0.exports.modifyConfig=e=>U0[e.type]?U0[e.type](e):e});var V0=g((Fne,K0)=>{var i3=console.log.bind(console);function s3(e,t){return r=>{i3(e(r,t))}}function a3(e,t){let r=t.colouredLayout;return e.layout&&(r=t.layout(e.layout.type,e.layout)),s3(r,e.timezoneOffset)}K0.exports.configure=a3});var J0=g(G0=>{function u3(e,t){return r=>{process.stdout.write(`${e(r,t)} +`)}}function c3(e,t){let r=t.colouredLayout;return e.layout&&(r=t.layout(e.layout.type,e.layout)),u3(r,e.timezoneOffset)}G0.configure=c3});var Y0=g((Mne,Z0)=>{function l3(e,t){return r=>{process.stderr.write(`${e(r,t)} +`)}}function f3(e,t){let r=t.colouredLayout;return e.layout&&(r=t.layout(e.layout.type,e.layout)),l3(r,e.timezoneOffset)}Z0.exports.configure=f3});var Q0=g((jne,X0)=>{function p3(e,t,r,n){let o=n.getLevel(e),i=n.getLevel(t,n.FATAL);return s=>{let a=s.level;o.isLessThanOrEqualTo(a)&&i.isGreaterThanOrEqualTo(a)&&r(s)}}function d3(e,t,r,n){let o=r(e.appender);return p3(e.level,e.maxLevel,o,n)}X0.exports.configure=d3});var rx=g((Lne,tx)=>{var ex=Ue()("log4js:categoryFilter");function m3(e,t){return typeof e=="string"&&(e=[e]),r=>{ex(`Checking ${r.categoryName} against ${e}`),e.indexOf(r.categoryName)===-1&&(ex("Not excluded, sending to appender"),t(r))}}function h3(e,t,r){let n=r(e.appender);return m3(e.exclude,n)}tx.exports.configure=h3});var ix=g((qne,ox)=>{var nx=Ue()("log4js:noLogFilter");function g3(e){return e.filter(r=>r!=null&&r!=="")}function y3(e,t){return r=>{nx(`Checking data: ${r.data} against filters: ${e}`),typeof e=="string"&&(e=[e]),e=g3(e);let n=new RegExp(e.join("|"),"i");(e.length===0||r.data.findIndex(o=>n.test(o))<0)&&(nx("Not excluded, sending to appender"),t(r))}}function b3(e,t,r){let n=r(e.appender);return y3(e.exclude,n)}ox.exports.configure=b3});var gt=g(Bd=>{"use strict";Bd.fromCallback=function(e){return Object.defineProperty(function(){if(typeof arguments[arguments.length-1]=="function")e.apply(this,arguments);else return new Promise((t,r)=>{arguments[arguments.length]=(n,o)=>{if(n)return r(n);t(o)},arguments.length++,e.apply(this,arguments)})},"name",{value:e.name})};Bd.fromPromise=function(e){return Object.defineProperty(function(){let t=arguments[arguments.length-1];if(typeof t!="function")return e.apply(this,arguments);e.apply(this,arguments).then(r=>t(null,r),t)},"name",{value:e.name})}});var ax=g((zne,sx)=>{var hn=require("constants"),v3=process.cwd,ec=null,x3=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){return ec||(ec=v3.call(process)),ec};try{process.cwd()}catch{}typeof process.chdir=="function"&&(zd=process.chdir,process.chdir=function(e){ec=null,zd.call(process,e)},Object.setPrototypeOf&&Object.setPrototypeOf(process.chdir,zd));var zd;sx.exports=w3;function w3(e){hn.hasOwnProperty("O_SYMLINK")&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)&&t(e),e.lutimes||r(e),e.chown=i(e.chown),e.fchown=i(e.fchown),e.lchown=i(e.lchown),e.chmod=n(e.chmod),e.fchmod=n(e.fchmod),e.lchmod=n(e.lchmod),e.chownSync=s(e.chownSync),e.fchownSync=s(e.fchownSync),e.lchownSync=s(e.lchownSync),e.chmodSync=o(e.chmodSync),e.fchmodSync=o(e.fchmodSync),e.lchmodSync=o(e.lchmodSync),e.stat=a(e.stat),e.fstat=a(e.fstat),e.lstat=a(e.lstat),e.statSync=u(e.statSync),e.fstatSync=u(e.fstatSync),e.lstatSync=u(e.lstatSync),e.chmod&&!e.lchmod&&(e.lchmod=function(c,f,p){p&&process.nextTick(p)},e.lchmodSync=function(){}),e.chown&&!e.lchown&&(e.lchown=function(c,f,p,d){d&&process.nextTick(d)},e.lchownSync=function(){}),x3==="win32"&&(e.rename=typeof e.rename!="function"?e.rename:function(c){function f(p,d,h){var b=Date.now(),y=0;c(p,d,function v(w){if(w&&(w.code==="EACCES"||w.code==="EPERM"||w.code==="EBUSY")&&Date.now()-b<6e4){setTimeout(function(){e.stat(d,function(T,M){T&&T.code==="ENOENT"?c(p,d,v):h(w)})},y),y<100&&(y+=10);return}h&&h(w)})}return Object.setPrototypeOf&&Object.setPrototypeOf(f,c),f}(e.rename)),e.read=typeof e.read!="function"?e.read:function(c){function f(p,d,h,b,y,v){var w;if(v&&typeof v=="function"){var T=0;w=function(M,V,J){if(M&&M.code==="EAGAIN"&&T<10)return T++,c.call(e,p,d,h,b,y,w);v.apply(this,arguments)}}return c.call(e,p,d,h,b,y,w)}return Object.setPrototypeOf&&Object.setPrototypeOf(f,c),f}(e.read),e.readSync=typeof e.readSync!="function"?e.readSync:function(c){return function(f,p,d,h,b){for(var y=0;;)try{return c.call(e,f,p,d,h,b)}catch(v){if(v.code==="EAGAIN"&&y<10){y++;continue}throw v}}}(e.readSync);function t(c){c.lchmod=function(f,p,d){c.open(f,hn.O_WRONLY|hn.O_SYMLINK,p,function(h,b){if(h){d&&d(h);return}c.fchmod(b,p,function(y){c.close(b,function(v){d&&d(y||v)})})})},c.lchmodSync=function(f,p){var d=c.openSync(f,hn.O_WRONLY|hn.O_SYMLINK,p),h=!0,b;try{b=c.fchmodSync(d,p),h=!1}finally{if(h)try{c.closeSync(d)}catch{}else c.closeSync(d)}return b}}function r(c){hn.hasOwnProperty("O_SYMLINK")&&c.futimes?(c.lutimes=function(f,p,d,h){c.open(f,hn.O_SYMLINK,function(b,y){if(b){h&&h(b);return}c.futimes(y,p,d,function(v){c.close(y,function(w){h&&h(v||w)})})})},c.lutimesSync=function(f,p,d){var h=c.openSync(f,hn.O_SYMLINK),b,y=!0;try{b=c.futimesSync(h,p,d),y=!1}finally{if(y)try{c.closeSync(h)}catch{}else c.closeSync(h)}return b}):c.futimes&&(c.lutimes=function(f,p,d,h){h&&process.nextTick(h)},c.lutimesSync=function(){})}function n(c){return c&&function(f,p,d){return c.call(e,f,p,function(h){l(h)&&(h=null),d&&d.apply(this,arguments)})}}function o(c){return c&&function(f,p){try{return c.call(e,f,p)}catch(d){if(!l(d))throw d}}}function i(c){return c&&function(f,p,d,h){return c.call(e,f,p,d,function(b){l(b)&&(b=null),h&&h.apply(this,arguments)})}}function s(c){return c&&function(f,p,d){try{return c.call(e,f,p,d)}catch(h){if(!l(h))throw h}}}function a(c){return c&&function(f,p,d){typeof p=="function"&&(d=p,p=null);function h(b,y){y&&(y.uid<0&&(y.uid+=4294967296),y.gid<0&&(y.gid+=4294967296)),d&&d.apply(this,arguments)}return p?c.call(e,f,p,h):c.call(e,f,h)}}function u(c){return c&&function(f,p){var d=p?c.call(e,f,p):c.call(e,f);return d&&(d.uid<0&&(d.uid+=4294967296),d.gid<0&&(d.gid+=4294967296)),d}}function l(c){if(!c||c.code==="ENOSYS")return!0;var f=!process.getuid||process.getuid()!==0;return!!(f&&(c.code==="EINVAL"||c.code==="EPERM"))}}});var lx=g((Une,cx)=>{var ux=require("stream").Stream;cx.exports=E3;function E3(e){return{ReadStream:t,WriteStream:r};function t(n,o){if(!(this instanceof t))return new t(n,o);ux.call(this);var i=this;this.path=n,this.fd=null,this.readable=!0,this.paused=!1,this.flags="r",this.mode=438,this.bufferSize=64*1024,o=o||{};for(var s=Object.keys(o),a=0,u=s.length;athis.end)throw new Error("start must be <= end");this.pos=this.start}if(this.fd!==null){process.nextTick(function(){i._read()});return}e.open(this.path,this.flags,this.mode,function(c,f){if(c){i.emit("error",c),i.readable=!1;return}i.fd=f,i.emit("open",f),i._read()})}function r(n,o){if(!(this instanceof r))return new r(n,o);ux.call(this),this.path=n,this.fd=null,this.writable=!0,this.flags="w",this.encoding="binary",this.mode=438,this.bytesWritten=0,o=o||{};for(var i=Object.keys(o),s=0,a=i.length;s= zero");this.pos=this.start}this.busy=!1,this._queue=[],this.fd===null&&(this._open=e.open,this._queue.push([this._open,this.path,this.flags,this.mode,void 0]),this.flush())}}});var px=g((Wne,fx)=>{"use strict";fx.exports=I3;var S3=Object.getPrototypeOf||function(e){return e.__proto__};function I3(e){if(e===null||typeof e!="object")return e;if(e instanceof Object)var t={__proto__:S3(e)};else var t=Object.create(null);return Object.getOwnPropertyNames(e).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))}),t}});var je=g((Hne,Hd)=>{var Ce=require("fs"),_3=ax(),C3=lx(),T3=px(),tc=require("util"),Ye,nc;typeof Symbol=="function"&&typeof Symbol.for=="function"?(Ye=Symbol.for("graceful-fs.queue"),nc=Symbol.for("graceful-fs.previous")):(Ye="___graceful-fs.queue",nc="___graceful-fs.previous");function O3(){}function hx(e,t){Object.defineProperty(e,Ye,{get:function(){return t}})}var Qn=O3;tc.debuglog?Qn=tc.debuglog("gfs4"):/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&(Qn=function(){var e=tc.format.apply(tc,arguments);e="GFS4: "+e.split(/\n/).join(` +GFS4: `),console.error(e)});Ce[Ye]||(dx=global[Ye]||[],hx(Ce,dx),Ce.close=function(e){function t(r,n){return e.call(Ce,r,function(o){o||mx(),typeof n=="function"&&n.apply(this,arguments)})}return Object.defineProperty(t,nc,{value:e}),t}(Ce.close),Ce.closeSync=function(e){function t(r){e.apply(Ce,arguments),mx()}return Object.defineProperty(t,nc,{value:e}),t}(Ce.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&process.on("exit",function(){Qn(Ce[Ye]),require("assert").equal(Ce[Ye].length,0)}));var dx;global[Ye]||hx(global,Ce[Ye]);Hd.exports=Ud(T3(Ce));process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!Ce.__patched&&(Hd.exports=Ud(Ce),Ce.__patched=!0);function Ud(e){_3(e),e.gracefulify=Ud,e.createReadStream=V,e.createWriteStream=J;var t=e.readFile;e.readFile=r;function r(P,X,C){return typeof X=="function"&&(C=X,X=null),_(P,X,C);function _(I,B,D,re){return t(I,B,function(oe){oe&&(oe.code==="EMFILE"||oe.code==="ENFILE")?ti([_,[I,B,D],oe,re||Date.now(),Date.now()]):typeof D=="function"&&D.apply(this,arguments)})}}var n=e.writeFile;e.writeFile=o;function o(P,X,C,_){return typeof C=="function"&&(_=C,C=null),I(P,X,C,_);function I(B,D,re,oe,me){return n(B,D,re,function(ae){ae&&(ae.code==="EMFILE"||ae.code==="ENFILE")?ti([I,[B,D,re,oe],ae,me||Date.now(),Date.now()]):typeof oe=="function"&&oe.apply(this,arguments)})}}var i=e.appendFile;i&&(e.appendFile=s);function s(P,X,C,_){return typeof C=="function"&&(_=C,C=null),I(P,X,C,_);function I(B,D,re,oe,me){return i(B,D,re,function(ae){ae&&(ae.code==="EMFILE"||ae.code==="ENFILE")?ti([I,[B,D,re,oe],ae,me||Date.now(),Date.now()]):typeof oe=="function"&&oe.apply(this,arguments)})}}var a=e.copyFile;a&&(e.copyFile=u);function u(P,X,C,_){return typeof C=="function"&&(_=C,C=0),I(P,X,C,_);function I(B,D,re,oe,me){return a(B,D,re,function(ae){ae&&(ae.code==="EMFILE"||ae.code==="ENFILE")?ti([I,[B,D,re,oe],ae,me||Date.now(),Date.now()]):typeof oe=="function"&&oe.apply(this,arguments)})}}var l=e.readdir;e.readdir=f;var c=/^v[0-5]\./;function f(P,X,C){typeof X=="function"&&(C=X,X=null);var _=c.test(process.version)?function(D,re,oe,me){return l(D,I(D,re,oe,me))}:function(D,re,oe,me){return l(D,re,I(D,re,oe,me))};return _(P,X,C);function I(B,D,re,oe){return function(me,ae){me&&(me.code==="EMFILE"||me.code==="ENFILE")?ti([_,[B,D,re],me,oe||Date.now(),Date.now()]):(ae&&ae.sort&&ae.sort(),typeof re=="function"&&re.call(this,me,ae))}}}if(process.version.substr(0,4)==="v0.8"){var p=C3(e);v=p.ReadStream,T=p.WriteStream}var d=e.ReadStream;d&&(v.prototype=Object.create(d.prototype),v.prototype.open=w);var h=e.WriteStream;h&&(T.prototype=Object.create(h.prototype),T.prototype.open=M),Object.defineProperty(e,"ReadStream",{get:function(){return v},set:function(P){v=P},enumerable:!0,configurable:!0}),Object.defineProperty(e,"WriteStream",{get:function(){return T},set:function(P){T=P},enumerable:!0,configurable:!0});var b=v;Object.defineProperty(e,"FileReadStream",{get:function(){return b},set:function(P){b=P},enumerable:!0,configurable:!0});var y=T;Object.defineProperty(e,"FileWriteStream",{get:function(){return y},set:function(P){y=P},enumerable:!0,configurable:!0});function v(P,X){return this instanceof v?(d.apply(this,arguments),this):v.apply(Object.create(v.prototype),arguments)}function w(){var P=this;K(P.path,P.flags,P.mode,function(X,C){X?(P.autoClose&&P.destroy(),P.emit("error",X)):(P.fd=C,P.emit("open",C),P.read())})}function T(P,X){return this instanceof T?(h.apply(this,arguments),this):T.apply(Object.create(T.prototype),arguments)}function M(){var P=this;K(P.path,P.flags,P.mode,function(X,C){X?(P.destroy(),P.emit("error",X)):(P.fd=C,P.emit("open",C))})}function V(P,X){return new e.ReadStream(P,X)}function J(P,X){return new e.WriteStream(P,X)}var G=e.open;e.open=K;function K(P,X,C,_){return typeof C=="function"&&(_=C,C=null),I(P,X,C,_);function I(B,D,re,oe,me){return G(B,D,re,function(ae,E){ae&&(ae.code==="EMFILE"||ae.code==="ENFILE")?ti([I,[B,D,re,oe],ae,me||Date.now(),Date.now()]):typeof oe=="function"&&oe.apply(this,arguments)})}}return e}function ti(e){Qn("ENQUEUE",e[0].name,e[1]),Ce[Ye].push(e),Wd()}var rc;function mx(){for(var e=Date.now(),t=0;t2&&(Ce[Ye][t][3]=e,Ce[Ye][t][4]=e);Wd()}function Wd(){if(clearTimeout(rc),rc=void 0,Ce[Ye].length!==0){var e=Ce[Ye].shift(),t=e[0],r=e[1],n=e[2],o=e[3],i=e[4];if(o===void 0)Qn("RETRY",t.name,r),t.apply(null,r);else if(Date.now()-o>=6e4){Qn("TIMEOUT",t.name,r);var s=r.pop();typeof s=="function"&&s.call(null,n)}else{var a=Date.now()-i,u=Math.max(i-o,1),l=Math.min(u*1.2,100);a>=l?(Qn("RETRY",t.name,r),t.apply(null,r.concat([o]))):Ce[Ye].push(e)}rc===void 0&&(rc=setTimeout(Wd,0))}}});var Kd=g(eo=>{"use strict";var gx=gt().fromCallback,Ht=je(),A3=["access","appendFile","chmod","chown","close","copyFile","fchmod","fchown","fdatasync","fstat","fsync","ftruncate","futimes","lchown","lchmod","link","lstat","mkdir","mkdtemp","open","readFile","readdir","readlink","realpath","rename","rmdir","stat","symlink","truncate","unlink","utimes","writeFile"].filter(e=>typeof Ht[e]=="function");Object.keys(Ht).forEach(e=>{e!=="promises"&&(eo[e]=Ht[e])});A3.forEach(e=>{eo[e]=gx(Ht[e])});eo.exists=function(e,t){return typeof t=="function"?Ht.exists(e,t):new Promise(r=>Ht.exists(e,r))};eo.read=function(e,t,r,n,o,i){return typeof i=="function"?Ht.read(e,t,r,n,o,i):new Promise((s,a)=>{Ht.read(e,t,r,n,o,(u,l,c)=>{if(u)return a(u);s({bytesRead:l,buffer:c})})})};eo.write=function(e,t,...r){return typeof r[r.length-1]=="function"?Ht.write(e,t,...r):new Promise((n,o)=>{Ht.write(e,t,...r,(i,s,a)=>{if(i)return o(i);n({bytesWritten:s,buffer:a})})})};typeof Ht.realpath.native=="function"&&(eo.realpath.native=gx(Ht.realpath.native))});var Gd=g((Vne,bx)=>{"use strict";var Vd=require("path");function yx(e){return e=Vd.normalize(Vd.resolve(e)).split(Vd.sep),e.length>0?e[0]:null}var k3=/[<>:"|?*]/;function N3(e){let t=yx(e);return e=e.replace(t,""),k3.test(e)}bx.exports={getRootPath:yx,invalidWin32Path:N3}});var xx=g((Gne,vx)=>{"use strict";var R3=je(),Jd=require("path"),D3=Gd().invalidWin32Path,P3=parseInt("0777",8);function Zd(e,t,r,n){if(typeof t=="function"?(r=t,t={}):(!t||typeof t!="object")&&(t={mode:t}),process.platform==="win32"&&D3(e)){let s=new Error(e+" contains invalid WIN32 path characters.");return s.code="EINVAL",r(s)}let o=t.mode,i=t.fs||R3;o===void 0&&(o=P3&~process.umask()),n||(n=null),r=r||function(){},e=Jd.resolve(e),i.mkdir(e,o,s=>{if(!s)return n=n||e,r(null,n);switch(s.code){case"ENOENT":if(Jd.dirname(e)===e)return r(s);Zd(Jd.dirname(e),t,(a,u)=>{a?r(a,u):Zd(e,t,r,u)});break;default:i.stat(e,(a,u)=>{a||!u.isDirectory()?r(s,n):r(null,n)});break}})}vx.exports=Zd});var Ex=g((Jne,wx)=>{"use strict";var F3=je(),Yd=require("path"),$3=Gd().invalidWin32Path,M3=parseInt("0777",8);function Xd(e,t,r){(!t||typeof t!="object")&&(t={mode:t});let n=t.mode,o=t.fs||F3;if(process.platform==="win32"&&$3(e)){let i=new Error(e+" contains invalid WIN32 path characters.");throw i.code="EINVAL",i}n===void 0&&(n=M3&~process.umask()),r||(r=null),e=Yd.resolve(e);try{o.mkdirSync(e,n),r=r||e}catch(i){if(i.code==="ENOENT"){if(Yd.dirname(e)===e)throw i;r=Xd(Yd.dirname(e),t,r),Xd(e,t,r)}else{let s;try{s=o.statSync(e)}catch{throw i}if(!s.isDirectory())throw i}}return r}wx.exports=Xd});var kt=g((Zne,Sx)=>{"use strict";var j3=gt().fromCallback,Qd=j3(xx()),em=Ex();Sx.exports={mkdirs:Qd,mkdirsSync:em,mkdirp:Qd,mkdirpSync:em,ensureDir:Qd,ensureDirSync:em}});var tm=g((Yne,_x)=>{"use strict";var nt=je(),Ix=require("os"),oc=require("path");function L3(){let e=oc.join("millis-test-sync"+Date.now().toString()+Math.random().toString().slice(2));e=oc.join(Ix.tmpdir(),e);let t=new Date(1435410243862);nt.writeFileSync(e,"https://github.com/jprichardson/node-fs-extra/pull/141");let r=nt.openSync(e,"r+");return nt.futimesSync(r,t,t),nt.closeSync(r),nt.statSync(e).mtime>1435410243e3}function q3(e){let t=oc.join("millis-test"+Date.now().toString()+Math.random().toString().slice(2));t=oc.join(Ix.tmpdir(),t);let r=new Date(1435410243862);nt.writeFile(t,"https://github.com/jprichardson/node-fs-extra/pull/141",n=>{if(n)return e(n);nt.open(t,"r+",(o,i)=>{if(o)return e(o);nt.futimes(i,r,r,s=>{if(s)return e(s);nt.close(i,a=>{if(a)return e(a);nt.stat(t,(u,l)=>{if(u)return e(u);e(null,l.mtime>1435410243e3)})})})})})}function B3(e){if(typeof e=="number")return Math.floor(e/1e3)*1e3;if(e instanceof Date)return new Date(Math.floor(e.getTime()/1e3)*1e3);throw new Error("fs-extra: timeRemoveMillis() unknown parameter type")}function z3(e,t,r,n){nt.open(e,"r+",(o,i)=>{if(o)return n(o);nt.futimes(i,t,r,s=>{nt.close(i,a=>{n&&n(s||a)})})})}function U3(e,t,r){let n=nt.openSync(e,"r+");return nt.futimesSync(n,t,r),nt.closeSync(n)}_x.exports={hasMillisRes:q3,hasMillisResSync:L3,timeRemoveMillis:B3,utimesMillis:z3,utimesMillisSync:U3}});var Ss=g((Xne,Nx)=>{"use strict";var Kt=je(),yt=require("path"),Cx=10,Tx=5,W3=0,nm=process.versions.node.split("."),Ox=Number.parseInt(nm[0],10),Ax=Number.parseInt(nm[1],10),H3=Number.parseInt(nm[2],10);function ws(){if(Ox>Cx)return!0;if(Ox===Cx){if(Ax>Tx)return!0;if(Ax===Tx&&H3>=W3)return!0}return!1}function K3(e,t,r){ws()?Kt.stat(e,{bigint:!0},(n,o)=>{if(n)return r(n);Kt.stat(t,{bigint:!0},(i,s)=>i?i.code==="ENOENT"?r(null,{srcStat:o,destStat:null}):r(i):r(null,{srcStat:o,destStat:s}))}):Kt.stat(e,(n,o)=>{if(n)return r(n);Kt.stat(t,(i,s)=>i?i.code==="ENOENT"?r(null,{srcStat:o,destStat:null}):r(i):r(null,{srcStat:o,destStat:s}))})}function V3(e,t){let r,n;ws()?r=Kt.statSync(e,{bigint:!0}):r=Kt.statSync(e);try{ws()?n=Kt.statSync(t,{bigint:!0}):n=Kt.statSync(t)}catch(o){if(o.code==="ENOENT")return{srcStat:r,destStat:null};throw o}return{srcStat:r,destStat:n}}function G3(e,t,r,n){K3(e,t,(o,i)=>{if(o)return n(o);let{srcStat:s,destStat:a}=i;return a&&a.ino&&a.dev&&a.ino===s.ino&&a.dev===s.dev?n(new Error("Source and destination must not be the same.")):s.isDirectory()&&om(e,t)?n(new Error(Es(e,t,r))):n(null,{srcStat:s,destStat:a})})}function J3(e,t,r){let{srcStat:n,destStat:o}=V3(e,t);if(o&&o.ino&&o.dev&&o.ino===n.ino&&o.dev===n.dev)throw new Error("Source and destination must not be the same.");if(n.isDirectory()&&om(e,t))throw new Error(Es(e,t,r));return{srcStat:n,destStat:o}}function rm(e,t,r,n,o){let i=yt.resolve(yt.dirname(e)),s=yt.resolve(yt.dirname(r));if(s===i||s===yt.parse(s).root)return o();ws()?Kt.stat(s,{bigint:!0},(a,u)=>a?a.code==="ENOENT"?o():o(a):u.ino&&u.dev&&u.ino===t.ino&&u.dev===t.dev?o(new Error(Es(e,r,n))):rm(e,t,s,n,o)):Kt.stat(s,(a,u)=>a?a.code==="ENOENT"?o():o(a):u.ino&&u.dev&&u.ino===t.ino&&u.dev===t.dev?o(new Error(Es(e,r,n))):rm(e,t,s,n,o))}function kx(e,t,r,n){let o=yt.resolve(yt.dirname(e)),i=yt.resolve(yt.dirname(r));if(i===o||i===yt.parse(i).root)return;let s;try{ws()?s=Kt.statSync(i,{bigint:!0}):s=Kt.statSync(i)}catch(a){if(a.code==="ENOENT")return;throw a}if(s.ino&&s.dev&&s.ino===t.ino&&s.dev===t.dev)throw new Error(Es(e,r,n));return kx(e,t,i,n)}function om(e,t){let r=yt.resolve(e).split(yt.sep).filter(o=>o),n=yt.resolve(t).split(yt.sep).filter(o=>o);return r.reduce((o,i,s)=>o&&n[s]===i,!0)}function Es(e,t,r){return`Cannot ${r} '${e}' to a subdirectory of itself, '${t}'.`}Nx.exports={checkPaths:G3,checkPathsSync:J3,checkParentPaths:rm,checkParentPathsSync:kx,isSrcSubdir:om}});var Dx=g((Qne,Rx)=>{"use strict";Rx.exports=function(e){if(typeof Buffer.allocUnsafe=="function")try{return Buffer.allocUnsafe(e)}catch{return new Buffer(e)}return new Buffer(e)}});var jx=g((eoe,Mx)=>{"use strict";var Ie=je(),Is=require("path"),Z3=kt().mkdirsSync,Y3=tm().utimesMillisSync,_s=Ss();function X3(e,t,r){typeof r=="function"&&(r={filter:r}),r=r||{},r.clobber="clobber"in r?!!r.clobber:!0,r.overwrite="overwrite"in r?!!r.overwrite:r.clobber,r.preserveTimestamps&&process.arch==="ia32"&&console.warn(`fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended; + + see https://github.com/jprichardson/node-fs-extra/issues/269`);let{srcStat:n,destStat:o}=_s.checkPathsSync(e,t,"copy");return _s.checkParentPathsSync(e,n,t,"copy"),Q3(o,e,t,r)}function Q3(e,t,r,n){if(n.filter&&!n.filter(t,r))return;let o=Is.dirname(r);return Ie.existsSync(o)||Z3(o),Px(e,t,r,n)}function Px(e,t,r,n){if(!(n.filter&&!n.filter(t,r)))return e5(e,t,r,n)}function e5(e,t,r,n){let i=(n.dereference?Ie.statSync:Ie.lstatSync)(t);if(i.isDirectory())return o5(i,e,t,r,n);if(i.isFile()||i.isCharacterDevice()||i.isBlockDevice())return t5(i,e,t,r,n);if(i.isSymbolicLink())return a5(e,t,r,n)}function t5(e,t,r,n,o){return t?r5(e,r,n,o):Fx(e,r,n,o)}function r5(e,t,r,n){if(n.overwrite)return Ie.unlinkSync(r),Fx(e,t,r,n);if(n.errorOnExist)throw new Error(`'${r}' already exists`)}function Fx(e,t,r,n){return typeof Ie.copyFileSync=="function"?(Ie.copyFileSync(t,r),Ie.chmodSync(r,e.mode),n.preserveTimestamps?Y3(r,e.atime,e.mtime):void 0):n5(e,t,r,n)}function n5(e,t,r,n){let i=Dx()(65536),s=Ie.openSync(t,"r"),a=Ie.openSync(r,"w",e.mode),u=0;for(;us5(n,e,t,r))}function s5(e,t,r,n){let o=Is.join(t,e),i=Is.join(r,e),{destStat:s}=_s.checkPathsSync(o,i,"copy");return Px(s,o,i,n)}function a5(e,t,r,n){let o=Ie.readlinkSync(t);if(n.dereference&&(o=Is.resolve(process.cwd(),o)),e){let i;try{i=Ie.readlinkSync(r)}catch(s){if(s.code==="EINVAL"||s.code==="UNKNOWN")return Ie.symlinkSync(o,r);throw s}if(n.dereference&&(i=Is.resolve(process.cwd(),i)),_s.isSrcSubdir(o,i))throw new Error(`Cannot copy '${o}' to a subdirectory of itself, '${i}'.`);if(Ie.statSync(r).isDirectory()&&_s.isSrcSubdir(i,o))throw new Error(`Cannot overwrite '${i}' with '${o}'.`);return u5(o,r)}else return Ie.symlinkSync(o,r)}function u5(e,t){return Ie.unlinkSync(t),Ie.symlinkSync(e,t)}Mx.exports=X3});var im=g((toe,Lx)=>{"use strict";Lx.exports={copySync:jx()}});var xr=g((roe,Bx)=>{"use strict";var c5=gt().fromPromise,qx=Kd();function l5(e){return qx.access(e).then(()=>!0).catch(()=>!1)}Bx.exports={pathExists:c5(l5),pathExistsSync:qx.existsSync}});var Zx=g((noe,Jx)=>{"use strict";var Xe=je(),Cs=require("path"),f5=kt().mkdirs,p5=xr().pathExists,d5=tm().utimesMillis,Ts=Ss();function m5(e,t,r,n){typeof r=="function"&&!n?(n=r,r={}):typeof r=="function"&&(r={filter:r}),n=n||function(){},r=r||{},r.clobber="clobber"in r?!!r.clobber:!0,r.overwrite="overwrite"in r?!!r.overwrite:r.clobber,r.preserveTimestamps&&process.arch==="ia32"&&console.warn(`fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended; + + see https://github.com/jprichardson/node-fs-extra/issues/269`),Ts.checkPaths(e,t,"copy",(o,i)=>{if(o)return n(o);let{srcStat:s,destStat:a}=i;Ts.checkParentPaths(e,s,t,"copy",u=>u?n(u):r.filter?Wx(zx,a,e,t,r,n):zx(a,e,t,r,n))})}function zx(e,t,r,n,o){let i=Cs.dirname(r);p5(i,(s,a)=>{if(s)return o(s);if(a)return sm(e,t,r,n,o);f5(i,u=>u?o(u):sm(e,t,r,n,o))})}function Wx(e,t,r,n,o,i){Promise.resolve(o.filter(r,n)).then(s=>s?e(t,r,n,o,i):i(),s=>i(s))}function sm(e,t,r,n,o){return n.filter?Wx(Ux,e,t,r,n,o):Ux(e,t,r,n,o)}function Ux(e,t,r,n,o){(n.dereference?Xe.stat:Xe.lstat)(t,(s,a)=>{if(s)return o(s);if(a.isDirectory())return b5(a,e,t,r,n,o);if(a.isFile()||a.isCharacterDevice()||a.isBlockDevice())return h5(a,e,t,r,n,o);if(a.isSymbolicLink())return w5(e,t,r,n,o)})}function h5(e,t,r,n,o,i){return t?g5(e,r,n,o,i):Hx(e,r,n,o,i)}function g5(e,t,r,n,o){if(n.overwrite)Xe.unlink(r,i=>i?o(i):Hx(e,t,r,n,o));else return n.errorOnExist?o(new Error(`'${r}' already exists`)):o()}function Hx(e,t,r,n,o){return typeof Xe.copyFile=="function"?Xe.copyFile(t,r,i=>i?o(i):Kx(e,r,n,o)):y5(e,t,r,n,o)}function y5(e,t,r,n,o){let i=Xe.createReadStream(t);i.on("error",s=>o(s)).once("open",()=>{let s=Xe.createWriteStream(r,{mode:e.mode});s.on("error",a=>o(a)).on("open",()=>i.pipe(s)).once("close",()=>Kx(e,r,n,o))})}function Kx(e,t,r,n){Xe.chmod(t,e.mode,o=>o?n(o):r.preserveTimestamps?d5(t,e.atime,e.mtime,n):n())}function b5(e,t,r,n,o,i){return t?t&&!t.isDirectory()?i(new Error(`Cannot overwrite non-directory '${n}' with directory '${r}'.`)):Vx(r,n,o,i):v5(e,r,n,o,i)}function v5(e,t,r,n,o){Xe.mkdir(r,i=>{if(i)return o(i);Vx(t,r,n,s=>s?o(s):Xe.chmod(r,e.mode,o))})}function Vx(e,t,r,n){Xe.readdir(e,(o,i)=>o?n(o):Gx(i,e,t,r,n))}function Gx(e,t,r,n,o){let i=e.pop();return i?x5(e,i,t,r,n,o):o()}function x5(e,t,r,n,o,i){let s=Cs.join(r,t),a=Cs.join(n,t);Ts.checkPaths(s,a,"copy",(u,l)=>{if(u)return i(u);let{destStat:c}=l;sm(c,s,a,o,f=>f?i(f):Gx(e,r,n,o,i))})}function w5(e,t,r,n,o){Xe.readlink(t,(i,s)=>{if(i)return o(i);if(n.dereference&&(s=Cs.resolve(process.cwd(),s)),e)Xe.readlink(r,(a,u)=>a?a.code==="EINVAL"||a.code==="UNKNOWN"?Xe.symlink(s,r,o):o(a):(n.dereference&&(u=Cs.resolve(process.cwd(),u)),Ts.isSrcSubdir(s,u)?o(new Error(`Cannot copy '${s}' to a subdirectory of itself, '${u}'.`)):e.isDirectory()&&Ts.isSrcSubdir(u,s)?o(new Error(`Cannot overwrite '${u}' with '${s}'.`)):E5(s,r,o)));else return Xe.symlink(s,r,o)})}function E5(e,t,r){Xe.unlink(t,n=>n?r(n):Xe.symlink(e,t,r))}Jx.exports=m5});var am=g((ooe,Yx)=>{"use strict";var S5=gt().fromCallback;Yx.exports={copy:S5(Zx())}});var sw=g((ioe,iw)=>{"use strict";var Xx=je(),rw=require("path"),pe=require("assert"),Os=process.platform==="win32";function nw(e){["unlink","chmod","stat","lstat","rmdir","readdir"].forEach(r=>{e[r]=e[r]||Xx[r],r=r+"Sync",e[r]=e[r]||Xx[r]}),e.maxBusyTries=e.maxBusyTries||3}function um(e,t,r){let n=0;typeof t=="function"&&(r=t,t={}),pe(e,"rimraf: missing path"),pe.strictEqual(typeof e,"string","rimraf: path should be a string"),pe.strictEqual(typeof r,"function","rimraf: callback function required"),pe(t,"rimraf: invalid options argument provided"),pe.strictEqual(typeof t,"object","rimraf: options should be object"),nw(t),Qx(e,t,function o(i){if(i){if((i.code==="EBUSY"||i.code==="ENOTEMPTY"||i.code==="EPERM")&&nQx(e,t,o),s)}i.code==="ENOENT"&&(i=null)}r(i)})}function Qx(e,t,r){pe(e),pe(t),pe(typeof r=="function"),t.lstat(e,(n,o)=>{if(n&&n.code==="ENOENT")return r(null);if(n&&n.code==="EPERM"&&Os)return ew(e,t,n,r);if(o&&o.isDirectory())return ic(e,t,n,r);t.unlink(e,i=>{if(i){if(i.code==="ENOENT")return r(null);if(i.code==="EPERM")return Os?ew(e,t,i,r):ic(e,t,i,r);if(i.code==="EISDIR")return ic(e,t,i,r)}return r(i)})})}function ew(e,t,r,n){pe(e),pe(t),pe(typeof n=="function"),r&&pe(r instanceof Error),t.chmod(e,438,o=>{o?n(o.code==="ENOENT"?null:r):t.stat(e,(i,s)=>{i?n(i.code==="ENOENT"?null:r):s.isDirectory()?ic(e,t,r,n):t.unlink(e,n)})})}function tw(e,t,r){let n;pe(e),pe(t),r&&pe(r instanceof Error);try{t.chmodSync(e,438)}catch(o){if(o.code==="ENOENT")return;throw r}try{n=t.statSync(e)}catch(o){if(o.code==="ENOENT")return;throw r}n.isDirectory()?sc(e,t,r):t.unlinkSync(e)}function ic(e,t,r,n){pe(e),pe(t),r&&pe(r instanceof Error),pe(typeof n=="function"),t.rmdir(e,o=>{o&&(o.code==="ENOTEMPTY"||o.code==="EEXIST"||o.code==="EPERM")?I5(e,t,n):o&&o.code==="ENOTDIR"?n(r):n(o)})}function I5(e,t,r){pe(e),pe(t),pe(typeof r=="function"),t.readdir(e,(n,o)=>{if(n)return r(n);let i=o.length,s;if(i===0)return t.rmdir(e,r);o.forEach(a=>{um(rw.join(e,a),t,u=>{if(!s){if(u)return r(s=u);--i===0&&t.rmdir(e,r)}})})})}function ow(e,t){let r;t=t||{},nw(t),pe(e,"rimraf: missing path"),pe.strictEqual(typeof e,"string","rimraf: path should be a string"),pe(t,"rimraf: missing options"),pe.strictEqual(typeof t,"object","rimraf: options should be object");try{r=t.lstatSync(e)}catch(n){if(n.code==="ENOENT")return;n.code==="EPERM"&&Os&&tw(e,t,n)}try{r&&r.isDirectory()?sc(e,t,null):t.unlinkSync(e)}catch(n){if(n.code==="ENOENT")return;if(n.code==="EPERM")return Os?tw(e,t,n):sc(e,t,n);if(n.code!=="EISDIR")throw n;sc(e,t,n)}}function sc(e,t,r){pe(e),pe(t),r&&pe(r instanceof Error);try{t.rmdirSync(e)}catch(n){if(n.code==="ENOTDIR")throw r;if(n.code==="ENOTEMPTY"||n.code==="EEXIST"||n.code==="EPERM")_5(e,t);else if(n.code!=="ENOENT")throw n}}function _5(e,t){if(pe(e),pe(t),t.readdirSync(e).forEach(r=>ow(rw.join(e,r),t)),Os){let r=Date.now();do try{return t.rmdirSync(e,t)}catch{}while(Date.now()-r<500)}else return t.rmdirSync(e,t)}iw.exports=um;um.sync=ow});var As=g((soe,uw)=>{"use strict";var C5=gt().fromCallback,aw=sw();uw.exports={remove:C5(aw),removeSync:aw.sync}});var gw=g((aoe,hw)=>{"use strict";var T5=gt().fromCallback,fw=je(),pw=require("path"),dw=kt(),mw=As(),cw=T5(function(t,r){r=r||function(){},fw.readdir(t,(n,o)=>{if(n)return dw.mkdirs(t,r);o=o.map(s=>pw.join(t,s)),i();function i(){let s=o.pop();if(!s)return r();mw.remove(s,a=>{if(a)return r(a);i()})}})});function lw(e){let t;try{t=fw.readdirSync(e)}catch{return dw.mkdirsSync(e)}t.forEach(r=>{r=pw.join(e,r),mw.removeSync(r)})}hw.exports={emptyDirSync:lw,emptydirSync:lw,emptyDir:cw,emptydir:cw}});var xw=g((uoe,vw)=>{"use strict";var O5=gt().fromCallback,yw=require("path"),ks=je(),bw=kt(),A5=xr().pathExists;function k5(e,t){function r(){ks.writeFile(e,"",n=>{if(n)return t(n);t()})}ks.stat(e,(n,o)=>{if(!n&&o.isFile())return t();let i=yw.dirname(e);A5(i,(s,a)=>{if(s)return t(s);if(a)return r();bw.mkdirs(i,u=>{if(u)return t(u);r()})})})}function N5(e){let t;try{t=ks.statSync(e)}catch{}if(t&&t.isFile())return;let r=yw.dirname(e);ks.existsSync(r)||bw.mkdirsSync(r),ks.writeFileSync(e,"")}vw.exports={createFile:O5(k5),createFileSync:N5}});var _w=g((coe,Iw)=>{"use strict";var R5=gt().fromCallback,Ew=require("path"),to=je(),Sw=kt(),ww=xr().pathExists;function D5(e,t,r){function n(o,i){to.link(o,i,s=>{if(s)return r(s);r(null)})}ww(t,(o,i)=>{if(o)return r(o);if(i)return r(null);to.lstat(e,s=>{if(s)return s.message=s.message.replace("lstat","ensureLink"),r(s);let a=Ew.dirname(t);ww(a,(u,l)=>{if(u)return r(u);if(l)return n(e,t);Sw.mkdirs(a,c=>{if(c)return r(c);n(e,t)})})})})}function P5(e,t){if(to.existsSync(t))return;try{to.lstatSync(e)}catch(i){throw i.message=i.message.replace("lstat","ensureLink"),i}let n=Ew.dirname(t);return to.existsSync(n)||Sw.mkdirsSync(n),to.linkSync(e,t)}Iw.exports={createLink:R5(D5),createLinkSync:P5}});var Tw=g((loe,Cw)=>{"use strict";var gn=require("path"),Ns=je(),F5=xr().pathExists;function $5(e,t,r){if(gn.isAbsolute(e))return Ns.lstat(e,n=>n?(n.message=n.message.replace("lstat","ensureSymlink"),r(n)):r(null,{toCwd:e,toDst:e}));{let n=gn.dirname(t),o=gn.join(n,e);return F5(o,(i,s)=>i?r(i):s?r(null,{toCwd:o,toDst:e}):Ns.lstat(e,a=>a?(a.message=a.message.replace("lstat","ensureSymlink"),r(a)):r(null,{toCwd:e,toDst:gn.relative(n,e)})))}}function M5(e,t){let r;if(gn.isAbsolute(e)){if(r=Ns.existsSync(e),!r)throw new Error("absolute srcpath does not exist");return{toCwd:e,toDst:e}}else{let n=gn.dirname(t),o=gn.join(n,e);if(r=Ns.existsSync(o),r)return{toCwd:o,toDst:e};if(r=Ns.existsSync(e),!r)throw new Error("relative srcpath does not exist");return{toCwd:e,toDst:gn.relative(n,e)}}}Cw.exports={symlinkPaths:$5,symlinkPathsSync:M5}});var kw=g((foe,Aw)=>{"use strict";var Ow=je();function j5(e,t,r){if(r=typeof t=="function"?t:r,t=typeof t=="function"?!1:t,t)return r(null,t);Ow.lstat(e,(n,o)=>{if(n)return r(null,"file");t=o&&o.isDirectory()?"dir":"file",r(null,t)})}function L5(e,t){let r;if(t)return t;try{r=Ow.lstatSync(e)}catch{return"file"}return r&&r.isDirectory()?"dir":"file"}Aw.exports={symlinkType:j5,symlinkTypeSync:L5}});var Mw=g((poe,$w)=>{"use strict";var q5=gt().fromCallback,Rw=require("path"),ri=je(),Dw=kt(),B5=Dw.mkdirs,z5=Dw.mkdirsSync,Pw=Tw(),U5=Pw.symlinkPaths,W5=Pw.symlinkPathsSync,Fw=kw(),H5=Fw.symlinkType,K5=Fw.symlinkTypeSync,Nw=xr().pathExists;function V5(e,t,r,n){n=typeof r=="function"?r:n,r=typeof r=="function"?!1:r,Nw(t,(o,i)=>{if(o)return n(o);if(i)return n(null);U5(e,t,(s,a)=>{if(s)return n(s);e=a.toDst,H5(a.toCwd,r,(u,l)=>{if(u)return n(u);let c=Rw.dirname(t);Nw(c,(f,p)=>{if(f)return n(f);if(p)return ri.symlink(e,t,l,n);B5(c,d=>{if(d)return n(d);ri.symlink(e,t,l,n)})})})})})}function G5(e,t,r){if(ri.existsSync(t))return;let o=W5(e,t);e=o.toDst,r=K5(o.toCwd,r);let i=Rw.dirname(t);return ri.existsSync(i)||z5(i),ri.symlinkSync(e,t,r)}$w.exports={createSymlink:q5(V5),createSymlinkSync:G5}});var Lw=g((doe,jw)=>{"use strict";var ac=xw(),uc=_w(),cc=Mw();jw.exports={createFile:ac.createFile,createFileSync:ac.createFileSync,ensureFile:ac.createFile,ensureFileSync:ac.createFileSync,createLink:uc.createLink,createLinkSync:uc.createLinkSync,ensureLink:uc.createLink,ensureLinkSync:uc.createLinkSync,createSymlink:cc.createSymlink,createSymlinkSync:cc.createSymlinkSync,ensureSymlink:cc.createSymlink,ensureSymlinkSync:cc.createSymlinkSync}});var Uw=g((moe,zw)=>{var ni;try{ni=je()}catch{ni=require("fs")}function J5(e,t,r){r==null&&(r=t,t={}),typeof t=="string"&&(t={encoding:t}),t=t||{};var n=t.fs||ni,o=!0;"throws"in t&&(o=t.throws),n.readFile(e,t,function(i,s){if(i)return r(i);s=Bw(s);var a;try{a=JSON.parse(s,t?t.reviver:null)}catch(u){return o?(u.message=e+": "+u.message,r(u)):r(null,null)}r(null,a)})}function Z5(e,t){t=t||{},typeof t=="string"&&(t={encoding:t});var r=t.fs||ni,n=!0;"throws"in t&&(n=t.throws);try{var o=r.readFileSync(e,t);return o=Bw(o),JSON.parse(o,t.reviver)}catch(i){if(n)throw i.message=e+": "+i.message,i;return null}}function qw(e,t){var r,n=` +`;typeof t=="object"&&t!==null&&(t.spaces&&(r=t.spaces),t.EOL&&(n=t.EOL));var o=JSON.stringify(e,t?t.replacer:null,r);return o.replace(/\n/g,n)+n}function Y5(e,t,r,n){n==null&&(n=r,r={}),r=r||{};var o=r.fs||ni,i="";try{i=qw(t,r)}catch(s){n&&n(s,null);return}o.writeFile(e,i,r,n)}function X5(e,t,r){r=r||{};var n=r.fs||ni,o=qw(t,r);return n.writeFileSync(e,o,r)}function Bw(e){return Buffer.isBuffer(e)&&(e=e.toString("utf8")),e=e.replace(/^\uFEFF/,""),e}var Q5={readFile:J5,readFileSync:Z5,writeFile:Y5,writeFileSync:X5};zw.exports=Q5});var fc=g((hoe,Hw)=>{"use strict";var Ww=gt().fromCallback,lc=Uw();Hw.exports={readJson:Ww(lc.readFile),readJsonSync:lc.readFileSync,writeJson:Ww(lc.writeFile),writeJsonSync:lc.writeFileSync}});var Gw=g((goe,Vw)=>{"use strict";var eL=require("path"),tL=kt(),rL=xr().pathExists,Kw=fc();function nL(e,t,r,n){typeof r=="function"&&(n=r,r={});let o=eL.dirname(e);rL(o,(i,s)=>{if(i)return n(i);if(s)return Kw.writeJson(e,t,r,n);tL.mkdirs(o,a=>{if(a)return n(a);Kw.writeJson(e,t,r,n)})})}Vw.exports=nL});var Zw=g((yoe,Jw)=>{"use strict";var oL=je(),iL=require("path"),sL=kt(),aL=fc();function uL(e,t,r){let n=iL.dirname(e);oL.existsSync(n)||sL.mkdirsSync(n),aL.writeJsonSync(e,t,r)}Jw.exports=uL});var Xw=g((boe,Yw)=>{"use strict";var cL=gt().fromCallback,ut=fc();ut.outputJson=cL(Gw());ut.outputJsonSync=Zw();ut.outputJSON=ut.outputJson;ut.outputJSONSync=ut.outputJsonSync;ut.writeJSON=ut.writeJson;ut.writeJSONSync=ut.writeJsonSync;ut.readJSON=ut.readJson;ut.readJSONSync=ut.readJsonSync;Yw.exports=ut});var oE=g((voe,nE)=>{"use strict";var tE=je(),lL=require("path"),fL=im().copySync,rE=As().removeSync,pL=kt().mkdirpSync,Qw=Ss();function dL(e,t,r){r=r||{};let n=r.overwrite||r.clobber||!1,{srcStat:o}=Qw.checkPathsSync(e,t,"move");return Qw.checkParentPathsSync(e,o,t,"move"),pL(lL.dirname(t)),mL(e,t,n)}function mL(e,t,r){if(r)return rE(t),eE(e,t,r);if(tE.existsSync(t))throw new Error("dest already exists.");return eE(e,t,r)}function eE(e,t,r){try{tE.renameSync(e,t)}catch(n){if(n.code!=="EXDEV")throw n;return hL(e,t,r)}}function hL(e,t,r){return fL(e,t,{overwrite:r,errorOnExist:!0}),rE(e)}nE.exports=dL});var sE=g((xoe,iE)=>{"use strict";iE.exports={moveSync:oE()}});var fE=g((woe,lE)=>{"use strict";var gL=je(),yL=require("path"),bL=am().copy,cE=As().remove,vL=kt().mkdirp,xL=xr().pathExists,aE=Ss();function wL(e,t,r,n){typeof r=="function"&&(n=r,r={});let o=r.overwrite||r.clobber||!1;aE.checkPaths(e,t,"move",(i,s)=>{if(i)return n(i);let{srcStat:a}=s;aE.checkParentPaths(e,a,t,"move",u=>{if(u)return n(u);vL(yL.dirname(t),l=>l?n(l):EL(e,t,o,n))})})}function EL(e,t,r,n){if(r)return cE(t,o=>o?n(o):uE(e,t,r,n));xL(t,(o,i)=>o?n(o):i?n(new Error("dest already exists.")):uE(e,t,r,n))}function uE(e,t,r,n){gL.rename(e,t,o=>o?o.code!=="EXDEV"?n(o):SL(e,t,r,n):n())}function SL(e,t,r,n){bL(e,t,{overwrite:r,errorOnExist:!0},i=>i?n(i):cE(e,n))}lE.exports=wL});var dE=g((Eoe,pE)=>{"use strict";var IL=gt().fromCallback;pE.exports={move:IL(fE())}});var yE=g((Soe,gE)=>{"use strict";var _L=gt().fromCallback,Rs=je(),mE=require("path"),hE=kt(),CL=xr().pathExists;function TL(e,t,r,n){typeof r=="function"&&(n=r,r="utf8");let o=mE.dirname(e);CL(o,(i,s)=>{if(i)return n(i);if(s)return Rs.writeFile(e,t,r,n);hE.mkdirs(o,a=>{if(a)return n(a);Rs.writeFile(e,t,r,n)})})}function OL(e,...t){let r=mE.dirname(e);if(Rs.existsSync(r))return Rs.writeFileSync(e,...t);hE.mkdirsSync(r),Rs.writeFileSync(e,...t)}gE.exports={outputFile:_L(TL),outputFileSync:OL}});var lm=g((Ioe,cm)=>{"use strict";cm.exports=Object.assign({},Kd(),im(),am(),gw(),Lw(),Xw(),kt(),sE(),dE(),yE(),xr(),As());var bE=require("fs");Object.getOwnPropertyDescriptor(bE,"promises")&&Object.defineProperty(cm.exports,"promises",{get(){return bE.promises}})});var xE=g((_oe,vE)=>{vE.exports=()=>new Date});var EE=g((Coe,wE)=>{var AL=Ue()("streamroller:fileNameFormatter"),kL=require("path"),NL=".gz",RL=".";wE.exports=({file:e,keepFileExt:t,needsIndex:r,alwaysIncludeDate:n,compress:o,fileNameSep:i})=>{let s=i||RL,a=kL.join(e.dir,e.name),u=d=>d+e.ext,l=(d,h,b)=>(r||!b)&&h?d+s+h:d,c=(d,h,b)=>(h>0||n)&&b?d+s+b:d,f=(d,h)=>h&&o?d+NL:d,p=t?[c,l,u,f]:[u,c,l,f];return({date:d,index:h})=>(AL(`_formatFileName: date=${d}, index=${h}`),p.reduce((b,y)=>y(b,h,d),a))}});var CE=g((Toe,_E)=>{var ro=Ue()("streamroller:fileNameParser"),SE=".gz",IE=Ju(),DL=".";_E.exports=({file:e,keepFileExt:t,pattern:r,fileNameSep:n})=>{let o=n||DL,i=(p,d)=>p.endsWith(SE)?(ro("it is gzipped"),d.isCompressed=!0,p.slice(0,-1*SE.length)):p,s="__NOT_MATCHING__",f=[i,t?p=>p.startsWith(e.name)&&p.endsWith(e.ext)?(ro("it starts and ends with the right things"),p.slice(e.name.length+1,-1*e.ext.length)):s:p=>p.startsWith(e.base)?(ro("it starts with the right things"),p.slice(e.base.length+1)):s,r?(p,d)=>{let h=p.split(o),b=h[h.length-1];ro("items: ",h,", indexStr: ",b);let y=p;b!==void 0&&b.match(/^\d+$/)?(y=p.slice(0,-1*(b.length+1)),ro(`dateStr is ${y}`),r&&!y&&(y=b,b="0")):b="0";try{let v=IE.parse(r,y,new Date(0,0));return IE.asString(r,v)!==y?p:(d.index=parseInt(b,10),d.date=y,d.timestamp=v.getTime(),"")}catch(v){return ro(`Problem parsing ${y} as ${r}, error was: `,v),p}}:(p,d)=>p.match(/^\d+$/)?(ro("it has an index"),d.index=parseInt(p,10),""):p];return p=>{let d={filename:p,index:0,isCompressed:!1};return f.reduce((b,y)=>y(b,d),p)?null:d}}});var OE=g((Ooe,TE)=>{var bt=Ue()("streamroller:moveAndMaybeCompressFile"),qr=lm(),PL=require("zlib"),FL=function(e){let t={mode:parseInt("0600",8),compress:!1},r=Object.assign({},t,e);return bt(`_parseOption: moveAndMaybeCompressFile called with option=${JSON.stringify(r)}`),r},$L=async(e,t,r)=>{if(r=FL(r),e===t){bt("moveAndMaybeCompressFile: source and target are the same, not doing anything");return}if(await qr.pathExists(e))if(bt(`moveAndMaybeCompressFile: moving file from ${e} to ${t} ${r.compress?"with":"without"} compress`),r.compress)await new Promise((n,o)=>{let i=!1,s=qr.createWriteStream(t,{mode:r.mode,flags:"wx"}).on("open",()=>{i=!0;let a=qr.createReadStream(e).on("open",()=>{a.pipe(PL.createGzip()).pipe(s)}).on("error",u=>{bt(`moveAndMaybeCompressFile: error reading ${e}`,u),s.destroy(u)})}).on("finish",()=>{bt(`moveAndMaybeCompressFile: finished compressing ${t}, deleting ${e}`),qr.unlink(e).then(n).catch(a=>{bt(`moveAndMaybeCompressFile: error deleting ${e}, truncating instead`,a),qr.truncate(e).then(n).catch(u=>{bt(`moveAndMaybeCompressFile: error truncating ${e}`,u),o(u)})})}).on("error",a=>{i?(bt(`moveAndMaybeCompressFile: error writing ${t}, deleting`,a),qr.unlink(t).then(()=>{o(a)}).catch(u=>{bt(`moveAndMaybeCompressFile: error deleting ${t}`,u),o(u)})):(bt(`moveAndMaybeCompressFile: error creating ${t}`,a),o(a))})}).catch(()=>{});else{bt(`moveAndMaybeCompressFile: renaming ${e} to ${t}`);try{await qr.move(e,t,{overwrite:!0})}catch(n){if(bt(`moveAndMaybeCompressFile: error renaming ${e} to ${t}`,n),n.code!=="ENOENT"){bt("moveAndMaybeCompressFile: trying copy+truncate instead");try{await qr.copy(e,t,{overwrite:!0}),await qr.truncate(e)}catch(o){bt("moveAndMaybeCompressFile: error copy+truncate",o)}}}}};TE.exports=$L});var mc=g((Aoe,AE)=>{var Nt=Ue()("streamroller:RollingFileWriteStream"),oo=lm(),no=require("path"),ML=require("os"),pc=xE(),dc=Ju(),{Writable:jL}=require("stream"),LL=EE(),qL=CE(),BL=OE(),zL=e=>(Nt(`deleteFiles: files to delete: ${e}`),Promise.all(e.map(t=>oo.unlink(t).catch(r=>{Nt(`deleteFiles: error when unlinking ${t}, ignoring. Error was ${r}`)})))),fm=class extends jL{constructor(t,r){if(Nt(`constructor: creating RollingFileWriteStream. path=${t}`),typeof t!="string"||t.length===0)throw new Error(`Invalid filename: ${t}`);if(t.endsWith(no.sep))throw new Error(`Filename is a directory: ${t}`);t.indexOf(`~${no.sep}`)===0&&(t=t.replace("~",ML.homedir())),super(r),this.options=this._parseOption(r),this.fileObject=no.parse(t),this.fileObject.dir===""&&(this.fileObject=no.parse(no.join(process.cwd(),t))),this.fileFormatter=LL({file:this.fileObject,alwaysIncludeDate:this.options.alwaysIncludePattern,needsIndex:this.options.maxSize 0`);if(n.numBackups||n.numBackups===0){if(n.numBackups<0)throw new Error(`options.numBackups (${n.numBackups}) should be >= 0`);if(n.numBackups>=Number.MAX_SAFE_INTEGER)throw new Error(`options.numBackups (${n.numBackups}) should be < Number.MAX_SAFE_INTEGER`);n.numToKeep=n.numBackups+1}else if(n.numToKeep<=0)throw new Error(`options.numToKeep (${n.numToKeep}) should be > 0`);return Nt(`_parseOption: creating stream with option=${JSON.stringify(n)}`),n}_final(t){this.currentFileStream.end("",this.options.encoding,t)}_write(t,r,n){this._shouldRoll().then(()=>{Nt(`_write: writing chunk. file=${this.currentFileStream.path} state=${JSON.stringify(this.state)} chunk=${t}`),this.currentFileStream.write(t,r,o=>{this.state.currentSize+=t.length,n(o)})})}async _shouldRoll(){(this._dateChanged()||this._tooBig())&&(Nt(`_shouldRoll: rolling because dateChanged? ${this._dateChanged()} or tooBig? ${this._tooBig()}`),await this._roll())}_dateChanged(){return this.state.currentDate&&this.state.currentDate!==dc(this.options.pattern,pc())}_tooBig(){return this.state.currentSize>=this.options.maxSize}_roll(){return Nt("_roll: closing the current stream"),new Promise((t,r)=>{this.currentFileStream.end("",this.options.encoding,()=>{this._moveOldFiles().then(t).catch(r)})})}async _moveOldFiles(){let t=await this._getExistingFiles(),r=this.state.currentDate?t.filter(n=>n.date===this.state.currentDate):t;for(let n=r.length;n>=0;n--){Nt(`_moveOldFiles: i = ${n}`);let o=this.fileFormatter({date:this.state.currentDate,index:n}),i=this.fileFormatter({date:this.state.currentDate,index:n+1}),s={compress:this.options.compress&&n===0,mode:this.options.mode};await BL(o,i,s)}this.state.currentSize=0,this.state.currentDate=this.state.currentDate?dc(this.options.pattern,pc()):null,Nt(`_moveOldFiles: finished rolling files. state=${JSON.stringify(this.state)}`),this._renewWriteStream(),await new Promise((n,o)=>{this.currentFileStream.write("","utf8",()=>{this._clean().then(n).catch(o)})})}async _getExistingFiles(){let t=await oo.readdir(this.fileObject.dir).catch(()=>[]);Nt(`_getExistingFiles: files=${t}`);let r=t.map(o=>this.fileNameParser(o)).filter(o=>o),n=o=>(o.timestamp?o.timestamp:pc().getTime())-o.index;return r.sort((o,i)=>n(o)-n(i)),r}_renewWriteStream(){let t=this.fileFormatter({date:this.state.currentDate,index:0}),r=i=>{try{return oo.mkdirSync(i,{recursive:!0})}catch(s){if(s.code==="ENOENT")return r(no.dirname(i)),r(i);if(s.code!=="EEXIST"&&s.code!=="EROFS")throw s;try{if(oo.statSync(i).isDirectory())return i;throw s}catch{throw s}}};r(this.fileObject.dir);let n={flags:this.options.flags,encoding:this.options.encoding,mode:this.options.mode},o=function(i,s,a){return i[a]=i[s],delete i[s],i};oo.appendFileSync(t,"",o({...n},"flags","flag")),this.currentFileStream=oo.createWriteStream(t,n),this.currentFileStream.on("error",i=>{this.emit("error",i)})}async _clean(){let t=await this._getExistingFiles();if(Nt(`_clean: numToKeep = ${this.options.numToKeep}, existingFiles = ${t.length}`),Nt("_clean: existing files are: ",t),this._tooManyFiles(t.length)){let r=t.slice(0,t.length-this.options.numToKeep).map(n=>no.format({dir:this.fileObject.dir,base:n.filename}));await zL(r)}}_tooManyFiles(t){return this.options.numToKeep>0&&t>this.options.numToKeep}};AE.exports=fm});var NE=g((koe,kE)=>{var UL=mc(),pm=class extends UL{constructor(t,r,n,o){o||(o={}),r&&(o.maxSize=r),!o.numBackups&&o.numBackups!==0&&(!n&&n!==0&&(n=1),o.numBackups=n),super(t,o),this.backups=o.numBackups,this.size=this.options.maxSize}get theStream(){return this.currentFileStream}};kE.exports=pm});var DE=g((Noe,RE)=>{var WL=mc(),dm=class extends WL{constructor(t,r,n){r&&typeof r=="object"&&(n=r,r=null),n||(n={}),r||(r="yyyy-MM-dd"),n.pattern=r,!n.numBackups&&n.numBackups!==0?(!n.daysToKeep&&n.daysToKeep!==0?n.daysToKeep=1:process.emitWarning("options.daysToKeep is deprecated due to the confusion it causes when used together with file size rolling. Please use options.numBackups instead.","DeprecationWarning","streamroller-DEP0001"),n.numBackups=n.daysToKeep):n.daysToKeep=n.numBackups,super(t,n),this.mode=this.options.mode}get theStream(){return this.currentFileStream}};RE.exports=dm});var mm=g((Roe,PE)=>{PE.exports={RollingFileWriteStream:mc(),RollingFileStream:NE(),DateRollingFileStream:DE()}});var LE=g((Doe,jE)=>{var FE=Ue()("log4js:file"),hm=require("path"),HL=mm(),ME=require("os"),KL=ME.EOL,hc=!1,gc=new Set;function $E(){gc.forEach(e=>{e.sighupHandler()})}function VL(e,t,r,n,o,i){if(typeof e!="string"||e.length===0)throw new Error(`Invalid filename: ${e}`);if(e.endsWith(hm.sep))throw new Error(`Filename is a directory: ${e}`);e=e.replace(new RegExp(`^~(?=${hm.sep}.+)`),ME.homedir()),e=hm.normalize(e),n=!n&&n!==0?5:n,FE("Creating file appender (",e,", ",r,", ",n,", ",o,", ",i,")");function s(l,c,f,p){let d=new HL.RollingFileStream(l,c,f,p);return d.on("error",h=>{console.error("log4js.fileAppender - Writing to file %s, error happened ",l,h)}),d.on("drain",()=>{process.emit("log4js:pause",!1)}),d}let a=s(e,r,n,o),u=function(l){if(a.writable){if(o.removeColor===!0){let c=/\x1b[[0-9;]*m/g;l.data=l.data.map(f=>typeof f=="string"?f.replace(c,""):f)}a.write(t(l,i)+KL,"utf8")||process.emit("log4js:pause",!0)}};return u.reopen=function(){a.end(()=>{a=s(e,r,n,o)})},u.sighupHandler=function(){FE("SIGHUP handler called."),u.reopen()},u.shutdown=function(l){gc.delete(u),gc.size===0&&hc&&(process.removeListener("SIGHUP",$E),hc=!1),a.end("","utf-8",l)},gc.add(u),hc||(process.on("SIGHUP",$E),hc=!0),u}function GL(e,t){let r=t.basicLayout;return e.layout&&(r=t.layout(e.layout.type,e.layout)),e.mode=e.mode||384,VL(e.filename,r,e.maxLogSize,e.backups,e,e.timezoneOffset)}jE.exports.configure=GL});var BE=g((Poe,qE)=>{var JL=mm(),ZL=require("os"),YL=ZL.EOL;function XL(e,t,r){let n=new JL.DateRollingFileStream(e,t,r);return n.on("error",o=>{console.error("log4js.dateFileAppender - Writing to file %s, error happened ",e,o)}),n.on("drain",()=>{process.emit("log4js:pause",!1)}),n}function QL(e,t,r,n,o){n.maxSize=n.maxLogSize;let i=XL(e,t,n),s=function(a){i.writable&&(i.write(r(a,o)+YL,"utf8")||process.emit("log4js:pause",!0))};return s.shutdown=function(a){i.end("","utf-8",a)},s}function eq(e,t){let r=t.basicLayout;return e.layout&&(r=t.layout(e.layout.type,e.layout)),e.alwaysIncludePattern||(e.alwaysIncludePattern=!1),e.mode=e.mode||384,QL(e.filename,e.pattern,r,e,e.timezoneOffset)}qE.exports.configure=eq});var HE=g((Foe,WE)=>{var Br=Ue()("log4js:fileSync"),Er=require("path"),wr=require("fs"),zE=require("os"),tq=zE.EOL;function UE(e,t){let r=n=>{try{return wr.mkdirSync(n,{recursive:!0})}catch(o){if(o.code==="ENOENT")return r(Er.dirname(n)),r(n);if(o.code!=="EEXIST"&&o.code!=="EROFS")throw o;try{if(wr.statSync(n).isDirectory())return n;throw o}catch{throw o}}};r(Er.dirname(e)),wr.appendFileSync(e,"",{mode:t.mode,flag:t.flags})}var gm=class{constructor(t,r,n,o){if(Br("In RollingFileStream"),r<0)throw new Error(`maxLogSize (${r}) should be > 0`);this.filename=t,this.size=r,this.backups=n,this.options=o,this.currentSize=0;function i(s){let a=0;try{a=wr.statSync(s).size}catch{UE(s,o)}return a}this.currentSize=i(this.filename)}shouldRoll(){return Br("should roll with current size %d, and max size %d",this.currentSize,this.size),this.currentSize>=this.size}roll(t){let r=this,n=new RegExp(`^${Er.basename(t)}`);function o(l){return n.test(l)}function i(l){return parseInt(l.slice(`${Er.basename(t)}.`.length),10)||0}function s(l,c){return i(l)-i(c)}function a(l){let c=i(l);if(Br(`Index of ${l} is ${c}`),r.backups===0)wr.truncateSync(t,0);else if(c ${t}.${c+1}`),wr.renameSync(Er.join(Er.dirname(t),l),`${t}.${c+1}`)}}function u(){Br("Renaming the old files"),wr.readdirSync(Er.dirname(t)).filter(o).sort(s).reverse().forEach(a)}Br("Rolling, rolling, rolling"),u()}write(t,r){let n=this;function o(){Br("writing the chunk to the file"),n.currentSize+=t.length,wr.appendFileSync(n.filename,t)}Br("in write"),this.shouldRoll()&&(this.currentSize=0,this.roll(this.filename)),o()}};function rq(e,t,r,n,o,i){if(typeof e!="string"||e.length===0)throw new Error(`Invalid filename: ${e}`);if(e.endsWith(Er.sep))throw new Error(`Filename is a directory: ${e}`);e=e.replace(new RegExp(`^~(?=${Er.sep}.+)`),zE.homedir()),e=Er.normalize(e),n=!n&&n!==0?5:n,Br("Creating fileSync appender (",e,", ",r,", ",n,", ",o,", ",i,")");function s(u,l,c){let f;return l?f=new gm(u,l,c,o):f=(p=>(UE(p,o),{write(d){wr.appendFileSync(p,d)}}))(u),f}let a=s(e,r,n);return u=>{a.write(t(u,i)+tq)}}function nq(e,t){let r=t.basicLayout;e.layout&&(r=t.layout(e.layout.type,e.layout));let n={flags:e.flags||"a",encoding:e.encoding||"utf8",mode:e.mode||384};return rq(e.filename,r,e.maxLogSize,e.backups,n,e.timezoneOffset)}WE.exports.configure=nq});var VE=g(($oe,KE)=>{var Sr=Ue()("log4js:tcp"),oq=require("net");function iq(e,t){let r=!1,n=[],o,i=3,s="__LOG4JS__";function a(f){Sr("Writing log event to socket"),r=o.write(`${t(f)}${s}`,"utf8")}function u(){let f;for(Sr("emptying buffer");f=n.shift();)a(f)}function l(){Sr(`appender creating socket to ${e.host||"localhost"}:${e.port||5e3}`),s=`${e.endMsg||"__LOG4JS__"}`,o=oq.createConnection(e.port||5e3,e.host||"localhost"),o.on("connect",()=>{Sr("socket connected"),u(),r=!0}),o.on("drain",()=>{Sr("drain event received, emptying buffer"),r=!0,u()}),o.on("timeout",o.end.bind(o)),o.on("error",f=>{Sr("connection error",f),r=!1,u()}),o.on("close",l)}l();function c(f){r?a(f):(Sr("buffering log event because it cannot write at the moment"),n.push(f))}return c.shutdown=function(f){Sr("shutdown called"),n.length&&i?(Sr("buffer has items, waiting 100ms to empty"),i-=1,setTimeout(()=>{c.shutdown(f)},100)):(o.removeAllListeners("close"),o.end(f))},c}function sq(e,t){Sr(`configure with config = ${e}`);let r=function(n){return n.serialise()};return e.layout&&(r=t.layout(e.layout.type,e.layout)),iq(e,r)}KE.exports.configure=sq});var vm=g((Moe,bm)=>{var ym=require("path"),yn=Ue()("log4js:appenders"),Vt=Zn(),GE=Qu(),aq=Xn(),uq=$d(),cq=H0(),ar=new Map;ar.set("console",V0());ar.set("stdout",J0());ar.set("stderr",Y0());ar.set("logLevelFilter",Q0());ar.set("categoryFilter",rx());ar.set("noLogFilter",ix());ar.set("file",LE());ar.set("dateFile",BE());ar.set("fileSync",HE());ar.set("tcp",VE());var Ds=new Map,yc=(e,t)=>{let r;try{let n=`${e}.cjs`;r=require.resolve(n),yn("Loading module from ",n)}catch{r=e,yn("Loading module from ",e)}try{return require(r)}catch(n){Vt.throwExceptionIf(t,n.code!=="MODULE_NOT_FOUND",`appender "${e}" could not be loaded (error was: ${n})`);return}},lq=(e,t)=>ar.get(e)||yc(`./${e}`,t)||yc(e,t)||require.main&&require.main.filename&&yc(ym.join(ym.dirname(require.main.filename),e),t)||yc(ym.join(process.cwd(),e),t),bc=new Set,JE=(e,t)=>{if(Ds.has(e))return Ds.get(e);if(!t.appenders[e])return!1;if(bc.has(e))throw new Error(`Dependency loop detected for appender ${e}.`);bc.add(e),yn(`Creating appender ${e}`);let r=fq(e,t);return bc.delete(e),Ds.set(e,r),r},fq=(e,t)=>{let r=t.appenders[e],n=r.type.configure?r.type:lq(r.type,t);return Vt.throwExceptionIf(t,Vt.not(n),`appender "${e}" is not valid (type "${r.type}" could not be found)`),n.appender&&(process.emitWarning(`Appender ${r.type} exports an appender function.`,"DeprecationWarning","log4js-node-DEP0001"),yn("[log4js-node-DEP0001]",`DEPRECATION: Appender ${r.type} exports an appender function.`)),n.shutdown&&(process.emitWarning(`Appender ${r.type} exports a shutdown function.`,"DeprecationWarning","log4js-node-DEP0002"),yn("[log4js-node-DEP0002]",`DEPRECATION: Appender ${r.type} exports a shutdown function.`)),yn(`${e}: clustering.isMaster ? ${GE.isMaster()}`),yn(`${e}: appenderModule is ${require("util").inspect(n)}`),GE.onlyOnMaster(()=>(yn(`calling appenderModule.configure for ${e} / ${r.type}`),n.configure(cq.modifyConfig(r),uq,o=>JE(o,t),aq)),()=>{})},ZE=e=>{if(Ds.clear(),bc.clear(),!e)return;let t=[];Object.values(e.categories).forEach(r=>{t.push(...r.appenders)}),Object.keys(e.appenders).forEach(r=>{(t.includes(r)||e.appenders[r].type==="tcp-server"||e.appenders[r].type==="multiprocess")&&JE(r,e)})},YE=()=>{ZE()};YE();Vt.addListener(e=>{Vt.throwExceptionIf(e,Vt.not(Vt.anObject(e.appenders)),'must have a property "appenders" of type object.');let t=Object.keys(e.appenders);Vt.throwExceptionIf(e,Vt.not(t.length),"must define at least one appender."),t.forEach(r=>{Vt.throwExceptionIf(e,Vt.not(e.appenders[r].type),`appender "${r}" is not valid (must be an object with property "type")`)})});Vt.addListener(ZE);bm.exports=Ds;bm.exports.init=YE});var Em=g((joe,vc)=>{var Ps=Ue()("log4js:categories"),ke=Zn(),xm=Xn(),XE=vm(),bn=new Map;function QE(e,t,r){if(t.inherit===!1)return;let n=r.lastIndexOf(".");if(n<0)return;let o=r.slice(0,n),i=e.categories[o];i||(i={inherit:!0,appenders:[]}),QE(e,i,o),!e.categories[o]&&i.appenders&&i.appenders.length&&i.level&&(e.categories[o]=i),t.appenders=t.appenders||[],t.level=t.level||i.level,i.appenders.forEach(s=>{t.appenders.includes(s)||t.appenders.push(s)}),t.parent=i}function pq(e){if(!e.categories)return;Object.keys(e.categories).forEach(r=>{let n=e.categories[r];QE(e,n,r)})}ke.addPreProcessingListener(e=>pq(e));ke.addListener(e=>{ke.throwExceptionIf(e,ke.not(ke.anObject(e.categories)),'must have a property "categories" of type object.');let t=Object.keys(e.categories);ke.throwExceptionIf(e,ke.not(t.length),"must define at least one category."),t.forEach(r=>{let n=e.categories[r];ke.throwExceptionIf(e,[ke.not(n.appenders),ke.not(n.level)],`category "${r}" is not valid (must be an object with properties "appenders" and "level")`),ke.throwExceptionIf(e,ke.not(Array.isArray(n.appenders)),`category "${r}" is not valid (appenders must be an array of appender names)`),ke.throwExceptionIf(e,ke.not(n.appenders.length),`category "${r}" is not valid (appenders must contain at least one appender name)`),Object.prototype.hasOwnProperty.call(n,"enableCallStack")&&ke.throwExceptionIf(e,typeof n.enableCallStack!="boolean",`category "${r}" is not valid (enableCallStack must be boolean type)`),n.appenders.forEach(o=>{ke.throwExceptionIf(e,ke.not(XE.get(o)),`category "${r}" is not valid (appender "${o}" is not defined)`)}),ke.throwExceptionIf(e,ke.not(xm.getLevel(n.level)),`category "${r}" is not valid (level "${n.level}" not recognised; valid levels are ${xm.levels.join(", ")})`)}),ke.throwExceptionIf(e,ke.not(e.categories.default),'must define a "default" category.')});var wm=e=>{if(bn.clear(),!e)return;Object.keys(e.categories).forEach(r=>{let n=e.categories[r],o=[];n.appenders.forEach(i=>{o.push(XE.get(i)),Ps(`Creating category ${r}`),bn.set(r,{appenders:o,level:xm.getLevel(n.level),enableCallStack:n.enableCallStack||!1})})})},eS=()=>{wm()};eS();ke.addListener(wm);var oi=e=>{if(Ps(`configForCategory: searching for config for ${e}`),bn.has(e))return Ps(`configForCategory: ${e} exists in config, returning it`),bn.get(e);let t;return e.indexOf(".")>0?(Ps(`configForCategory: ${e} has hierarchy, cloning from parents`),t={...oi(e.slice(0,e.lastIndexOf(".")))}):(bn.has("default")||wm({categories:{default:{appenders:["out"],level:"OFF"}}}),Ps("configForCategory: cloning default category"),t={...bn.get("default")}),bn.set(e,t),t},dq=e=>oi(e).appenders,mq=e=>oi(e).level,hq=(e,t)=>{oi(e).level=t},gq=e=>oi(e).enableCallStack===!0,yq=(e,t)=>{oi(e).enableCallStack=t};vc.exports=bn;vc.exports=Object.assign(vc.exports,{appendersForCategory:dq,getLevelForCategory:mq,setLevelForCategory:hq,getEnableCallStackForCategory:gq,setEnableCallStackForCategory:yq,init:eS})});var iS=g((Loe,oS)=>{var tS=Ue()("log4js:logger"),bq=Md(),Ir=Xn(),vq=Qu(),xc=Em(),rS=Zn(),xq=/at (?:(.+)\s+\()?(?:(.+?):(\d+)(?::(\d+))?|([^)]+))\)?/;function wq(e,t=4){try{let r=e.stack.split(` +`).slice(t),n=xq.exec(r[0]);if(n&&n.length===6)return{functionName:n[1],fileName:n[2],lineNumber:parseInt(n[3],10),columnNumber:parseInt(n[4],10),callStack:r.join(` +`)};console.error("log4js.logger - defaultParseCallStack error")}catch(r){console.error("log4js.logger - defaultParseCallStack error",r)}return null}var Fs=class{constructor(t){if(!t)throw new Error("No category provided.");this.category=t,this.context={},this.parseCallStack=wq,tS(`Logger created (${this.category}, ${this.level})`)}get level(){return Ir.getLevel(xc.getLevelForCategory(this.category),Ir.OFF)}set level(t){xc.setLevelForCategory(this.category,Ir.getLevel(t,this.level))}get useCallStack(){return xc.getEnableCallStackForCategory(this.category)}set useCallStack(t){xc.setEnableCallStackForCategory(this.category,t===!0)}log(t,...r){let n=Ir.getLevel(t);n?this.isLevelEnabled(n)&&this._log(n,r):rS.validIdentifier(t)&&r.length>0?(this.log(Ir.WARN,"log4js:logger.log: valid log-level not found as first parameter given:",t),this.log(Ir.INFO,`[${t}]`,...r)):this.log(Ir.INFO,t,...r)}isLevelEnabled(t){return this.level.isLessThanOrEqualTo(t)}_log(t,r){tS(`sending log data (${t}) to appenders`);let n=new bq(this.category,t,r,this.context,this.useCallStack&&this.parseCallStack(new Error));vq.send(n)}addContext(t,r){this.context[t]=r}removeContext(t){delete this.context[t]}clearContext(){this.context={}}setParseCallStackFunction(t){this.parseCallStack=t}};function nS(e){let t=Ir.getLevel(e),n=t.toString().toLowerCase().replace(/_([a-z])/g,i=>i[1].toUpperCase()),o=n[0].toUpperCase()+n.slice(1);Fs.prototype[`is${o}Enabled`]=function(){return this.isLevelEnabled(t)},Fs.prototype[n]=function(...i){this.log(t,...i)}}Ir.levels.forEach(nS);rS.addListener(()=>{Ir.levels.forEach(nS)});oS.exports=Fs});var uS=g((qoe,aS)=>{var ii=Xn(),Eq=':remote-addr - - ":method :url HTTP/:http-version" :status :content-length ":referrer" ":user-agent"';function Sq(e){return e.originalUrl||e.url}function Iq(e,t,r){let n=i=>{let s=i.concat();for(let a=0;an.source?n.source:n);t=new RegExp(r.join("|"))}return t}function Cq(e,t,r){let n=t;if(r){let o=r.find(i=>{let s=!1;return i.from&&i.to?s=e>=i.from&&e<=i.to:s=i.codes.indexOf(e)!==-1,s});o&&(n=ii.getLevel(o.level,n))}return n}aS.exports=function(t,r){typeof r=="string"||typeof r=="function"?r={format:r}:r=r||{};let n=t,o=ii.getLevel(r.level,ii.INFO),i=r.format||Eq;return(s,a,u)=>{if(s._logging!==void 0)return u();if(typeof r.nolog!="function"){let l=_q(r.nolog);if(l&&l.test(s.originalUrl))return u()}if(n.isLevelEnabled(o)||r.level==="auto"){let l=new Date,{writeHead:c}=a;s._logging=!0,a.writeHead=(d,h)=>{a.writeHead=c,a.writeHead(d,h),a.__statusCode=d,a.__headers=h||{}};let f=!1,p=()=>{if(f)return;if(f=!0,typeof r.nolog=="function"&&r.nolog(s,a)===!0){s._logging=!1;return}a.responseTime=new Date-l,a.statusCode&&r.level==="auto"&&(o=ii.INFO,a.statusCode>=300&&(o=ii.WARN),a.statusCode>=400&&(o=ii.ERROR)),o=Cq(a.statusCode,o,r.statusRules);let d=Iq(s,a,r.tokens||[]);if(r.context&&n.addContext("res",a),typeof i=="function"){let h=i(s,a,b=>sS(b,d));h&&n.log(o,h)}else n.log(o,sS(i,d));r.context&&n.removeContext("res")};a.on("end",p),a.on("finish",p),a.on("error",p),a.on("close",p)}return u()}}});var dS=g((Boe,pS)=>{var cS=Ue()("log4js:recording"),wc=[];function Tq(){return function(e){cS(`received logEvent, number of events now ${wc.length+1}`),cS("log event was ",e),wc.push(e)}}function lS(){return wc.slice()}function fS(){wc.length=0}pS.exports={configure:Tq,replay:lS,playback:lS,reset:fS,erase:fS}});var xS=g((zoe,vS)=>{var vn=Ue()("log4js:main"),Oq=require("fs"),Aq=s0()({proto:!0}),kq=Zn(),Nq=$d(),Rq=Xn(),mS=vm(),hS=Em(),Dq=iS(),Pq=Qu(),Fq=uS(),$q=dS(),$s=!1;function Mq(e){if(!$s)return;vn("Received log event ",e),hS.appendersForCategory(e.categoryName).forEach(r=>{r(e)})}function jq(e){vn(`Loading configuration from ${e}`);try{return JSON.parse(Oq.readFileSync(e,"utf8"))}catch(t){throw new Error(`Problem reading config from file "${e}". Error was ${t.message}`,t)}}function gS(e){$s&&yS();let t=e;return typeof t=="string"&&(t=jq(e)),vn(`Configuration is ${t}`),kq.configure(Aq(t)),Pq.onMessage(Mq),$s=!0,bS}function Lq(){return $q}function yS(e){vn("Shutdown called. Disabling all log writing."),$s=!1;let t=Array.from(mS.values());mS.init(),hS.init();let r=t.reduceRight((s,a)=>a.shutdown?s+1:s,0);if(r===0)return vn("No appenders with shutdown functions found."),e!==void 0&&e();let n=0,o;vn(`Found ${r} appenders with shutdown functions.`);function i(s){o=o||s,n+=1,vn(`Appender shutdowns complete: ${n} / ${r}`),n>=r&&(vn("All shutdown functions completed."),e&&e(o))}return t.filter(s=>s.shutdown).forEach(s=>s.shutdown(i)),null}function qq(e){return $s||gS(process.env.LOG4JS_CONFIG||{appenders:{out:{type:"stdout"}},categories:{default:{appenders:["out"],level:"OFF"}}}),new Dq(e||"default")}var bS={getLogger:qq,configure:gS,shutdown:yS,connectLogger:Fq,levels:Rq,addLayout:Nq.addLayout,recording:Lq};vS.exports=bS});var si=g(Ec=>{"use strict";Object.defineProperty(Ec,"__esModule",{value:!0});function wS(e,t){if(t)return e;throw new Error("Unhandled discriminated union member: "+JSON.stringify(e))}Ec.assertNever=wS;Ec.default=wS});var IS=g((Woe,SS)=>{"use strict";var Bq=["h","min","s","ms","\u03BCs","ns"],zq=["hour","minute","second","millisecond","microsecond","nanosecond"],ES=[3600,60,1,1e6,1e3,1];SS.exports=function(e,t){var r,n,o,i,s,a,u,l,c,f;if(r=!1,n=!1,t&&(r=t.verbose||!1,n=t.precise||!1),!Array.isArray(e)||e.length!==2||typeof e[0]!="number"||typeof e[1]!="number")return"";for(e[1]<0&&(f=e[0]+e[1]/1e9,e[0]=parseInt(f),e[1]=parseFloat((f%1).toPrecision(9))*1e9),c="",o=0;o<6&&(i=o<3?0:1,s=e[i],o!==3&&o!==0&&(s=s%ES[o-1]),o===2&&(s+=e[1]/1e9),a=s/ES[o],!(a>=1&&(r&&(a=Math.floor(a)),n?l=a.toString():(u=a>=10?0:2,l=a.toFixed(u)),l.indexOf(".")>-1&&l[l.length-1]==="0"&&(l=l.replace(/\.?0+$/,"")),c&&(c+=" "),c+=l,r?(c+=" "+zq[o],l!=="1"&&(c+="s")):c+=" "+Bq[o],!r)));o++);return c}});var CS=g((Hoe,_S)=>{"use strict";_S.exports=e=>encodeURIComponent(e).replace(/[!'()*]/g,t=>`%${t.charCodeAt(0).toString(16).toUpperCase()}`)});var NS=g((Koe,kS)=>{"use strict";var AS="%[a-f0-9]{2}",TS=new RegExp("("+AS+")|([^%]+?)","gi"),OS=new RegExp("("+AS+")+","gi");function Sm(e,t){try{return[decodeURIComponent(e.join(""))]}catch{}if(e.length===1)return e;t=t||1;var r=e.slice(0,t),n=e.slice(t);return Array.prototype.concat.call([],Sm(r),Sm(n))}function Uq(e){try{return decodeURIComponent(e)}catch{for(var t=e.match(TS)||[],r=1;r{"use strict";RS.exports=(e,t)=>{if(!(typeof e=="string"&&typeof t=="string"))throw new TypeError("Expected the arguments to be of type `string`");if(t==="")return[e];let r=e.indexOf(t);return r===-1?[e]:[e.slice(0,r),e.slice(r+t.length)]}});var FS=g((Goe,PS)=>{"use strict";PS.exports=function(e,t){for(var r={},n=Object.keys(e),o=Array.isArray(t),i=0;i{"use strict";var Hq=CS(),Kq=NS(),MS=DS(),Vq=FS(),Gq=e=>e==null,Im=Symbol("encodeFragmentIdentifier");function Jq(e){switch(e.arrayFormat){case"index":return t=>(r,n)=>{let o=r.length;return n===void 0||e.skipNull&&n===null||e.skipEmptyString&&n===""?r:n===null?[...r,[Re(t,e),"[",o,"]"].join("")]:[...r,[Re(t,e),"[",Re(o,e),"]=",Re(n,e)].join("")]};case"bracket":return t=>(r,n)=>n===void 0||e.skipNull&&n===null||e.skipEmptyString&&n===""?r:n===null?[...r,[Re(t,e),"[]"].join("")]:[...r,[Re(t,e),"[]=",Re(n,e)].join("")];case"colon-list-separator":return t=>(r,n)=>n===void 0||e.skipNull&&n===null||e.skipEmptyString&&n===""?r:n===null?[...r,[Re(t,e),":list="].join("")]:[...r,[Re(t,e),":list=",Re(n,e)].join("")];case"comma":case"separator":case"bracket-separator":{let t=e.arrayFormat==="bracket-separator"?"[]=":"=";return r=>(n,o)=>o===void 0||e.skipNull&&o===null||e.skipEmptyString&&o===""?n:(o=o===null?"":o,n.length===0?[[Re(r,e),t,Re(o,e)].join("")]:[[n,Re(o,e)].join(e.arrayFormatSeparator)])}default:return t=>(r,n)=>n===void 0||e.skipNull&&n===null||e.skipEmptyString&&n===""?r:n===null?[...r,Re(t,e)]:[...r,[Re(t,e),"=",Re(n,e)].join("")]}}function Zq(e){let t;switch(e.arrayFormat){case"index":return(r,n,o)=>{if(t=/\[(\d*)\]$/.exec(r),r=r.replace(/\[\d*\]$/,""),!t){o[r]=n;return}o[r]===void 0&&(o[r]={}),o[r][t[1]]=n};case"bracket":return(r,n,o)=>{if(t=/(\[\])$/.exec(r),r=r.replace(/\[\]$/,""),!t){o[r]=n;return}if(o[r]===void 0){o[r]=[n];return}o[r]=[].concat(o[r],n)};case"colon-list-separator":return(r,n,o)=>{if(t=/(:list)$/.exec(r),r=r.replace(/:list$/,""),!t){o[r]=n;return}if(o[r]===void 0){o[r]=[n];return}o[r]=[].concat(o[r],n)};case"comma":case"separator":return(r,n,o)=>{let i=typeof n=="string"&&n.includes(e.arrayFormatSeparator),s=typeof n=="string"&&!i&&zr(n,e).includes(e.arrayFormatSeparator);n=s?zr(n,e):n;let a=i||s?n.split(e.arrayFormatSeparator).map(u=>zr(u,e)):n===null?n:zr(n,e);o[r]=a};case"bracket-separator":return(r,n,o)=>{let i=/(\[\])$/.test(r);if(r=r.replace(/\[\]$/,""),!i){o[r]=n&&zr(n,e);return}let s=n===null?[]:n.split(e.arrayFormatSeparator).map(a=>zr(a,e));if(o[r]===void 0){o[r]=s;return}o[r]=[].concat(o[r],s)};default:return(r,n,o)=>{if(o[r]===void 0){o[r]=n;return}o[r]=[].concat(o[r],n)}}}function jS(e){if(typeof e!="string"||e.length!==1)throw new TypeError("arrayFormatSeparator must be single character string")}function Re(e,t){return t.encode?t.strict?Hq(e):encodeURIComponent(e):e}function zr(e,t){return t.decode?Kq(e):e}function LS(e){return Array.isArray(e)?e.sort():typeof e=="object"?LS(Object.keys(e)).sort((t,r)=>Number(t)-Number(r)).map(t=>e[t]):e}function qS(e){let t=e.indexOf("#");return t!==-1&&(e=e.slice(0,t)),e}function Yq(e){let t="",r=e.indexOf("#");return r!==-1&&(t=e.slice(r)),t}function BS(e){e=qS(e);let t=e.indexOf("?");return t===-1?"":e.slice(t+1)}function $S(e,t){return t.parseNumbers&&!Number.isNaN(Number(e))&&typeof e=="string"&&e.trim()!==""?e=Number(e):t.parseBooleans&&e!==null&&(e.toLowerCase()==="true"||e.toLowerCase()==="false")&&(e=e.toLowerCase()==="true"),e}function zS(e,t){t=Object.assign({decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1},t),jS(t.arrayFormatSeparator);let r=Zq(t),n=Object.create(null);if(typeof e!="string"||(e=e.trim().replace(/^[?#&]/,""),!e))return n;for(let o of e.split("&")){if(o==="")continue;let[i,s]=MS(t.decode?o.replace(/\+/g," "):o,"=");s=s===void 0?null:["comma","separator","bracket-separator"].includes(t.arrayFormat)?s:zr(s,t),r(zr(i,t),s,n)}for(let o of Object.keys(n)){let i=n[o];if(typeof i=="object"&&i!==null)for(let s of Object.keys(i))i[s]=$S(i[s],t);else n[o]=$S(i,t)}return t.sort===!1?n:(t.sort===!0?Object.keys(n).sort():Object.keys(n).sort(t.sort)).reduce((o,i)=>{let s=n[i];return s&&typeof s=="object"&&!Array.isArray(s)?o[i]=LS(s):o[i]=s,o},Object.create(null))}vt.extract=BS;vt.parse=zS;vt.stringify=(e,t)=>{if(!e)return"";t=Object.assign({encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:","},t),jS(t.arrayFormatSeparator);let r=s=>t.skipNull&&Gq(e[s])||t.skipEmptyString&&e[s]==="",n=Jq(t),o={};for(let s of Object.keys(e))r(s)||(o[s]=e[s]);let i=Object.keys(o);return t.sort!==!1&&i.sort(t.sort),i.map(s=>{let a=e[s];return a===void 0?"":a===null?Re(s,t):Array.isArray(a)?a.length===0&&t.arrayFormat==="bracket-separator"?Re(s,t)+"[]":a.reduce(n(s),[]).join("&"):Re(s,t)+"="+Re(a,t)}).filter(s=>s.length>0).join("&")};vt.parseUrl=(e,t)=>{t=Object.assign({decode:!0},t);let[r,n]=MS(e,"#");return Object.assign({url:r.split("?")[0]||"",query:zS(BS(e),t)},t&&t.parseFragmentIdentifier&&n?{fragmentIdentifier:zr(n,t)}:{})};vt.stringifyUrl=(e,t)=>{t=Object.assign({encode:!0,strict:!0,[Im]:!0},t);let r=qS(e.url).split("?")[0]||"",n=vt.extract(e.url),o=vt.parse(n,{sort:!1}),i=Object.assign(o,e.query),s=vt.stringify(i,t);s&&(s=`?${s}`);let a=Yq(e.url);return e.fragmentIdentifier&&(a=`#${t[Im]?Re(e.fragmentIdentifier,t):e.fragmentIdentifier}`),`${r}${s}${a}`};vt.pick=(e,t,r)=>{r=Object.assign({parseFragmentIdentifier:!0,[Im]:!1},r);let{url:n,query:o,fragmentIdentifier:i}=vt.parseUrl(e,r);return vt.stringifyUrl({url:n,query:Vq(o,t),fragmentIdentifier:i},r)};vt.exclude=(e,t,r)=>{let n=Array.isArray(t)?o=>!t.includes(o):(o,i)=>!t(o,i);return vt.pick(e,n,r)}});function Gr(e,t){for(var r in t)e[r]=t[r];return e}function d_(e){var t=e.parentNode;t&&t.removeChild(e)}function H(e,t,r){var n,o,i,s={};for(i in t)i=="key"?n=t[i]:i=="ref"?o=t[i]:s[i]=t[i];if(arguments.length>2&&(s.children=arguments.length>3?aa.call(arguments,2):r),typeof e=="function"&&e.defaultProps!=null)for(i in e.defaultProps)s[i]===void 0&&(s[i]=e.defaultProps[i]);return ia(e,s,n,o,null)}function ia(e,t,r,n,o){var i={type:e,props:t,key:r,ref:n,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:o??++l_};return o==null&&q.vnode!=null&&q.vnode(i),i}function fl(){return{current:null}}function $(e){return e.children}function Dt(e,t){this.props=e,this.context=t}function sa(e,t){if(t==null)return e.__?sa(e.__,e.__.__k.indexOf(e)+1):null;for(var r;t0?ia(d.type,d.props,d.key,d.ref?d.ref:null,d.__v):d)!=null){if(d.__=r,d.__b=r.__b+1,(p=v[c])===null||p&&d.key==p.key&&d.type===p.type)v[c]=void 0;else for(f=0;f2&&(s.children=arguments.length>3?aa.call(arguments,2):r),ia(e.type,s,n||e.key,o||e.ref,null)}function Le(e,t){var r={__c:t="__cC"+f_++,__:e,Consumer:function(n,o){return n.children(o)},Provider:function(n){var o,i;return this.getChildContext||(o=[],(i={})[t]=this,this.getChildContext=function(){return i},this.shouldComponentUpdate=function(s){this.props.value!==s.value&&o.some(Ih)},this.sub=function(s){o.push(s);var a=s.componentWillUnmount;s.componentWillUnmount=function(){o.splice(o.indexOf(s),1),a&&a.call(s)}}),n.children}};return r.Provider.__=r.Consumer.contextType=r}var aa,q,l_,Tz,oa,s_,f_,ul,p_,Oz,wi=$u(()=>{ul={},p_=[],Oz=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;aa=p_.slice,q={__e:function(e,t,r,n){for(var o,i,s;t=t.__;)if((o=t.__c)&&!o.__)try{if((i=o.constructor)&&i.getDerivedStateFromError!=null&&(o.setState(i.getDerivedStateFromError(e)),s=o.__d),o.componentDidCatch!=null&&(o.componentDidCatch(e,n||{}),s=o.__d),s)return o.__E=o}catch(a){e=a}throw e}},l_=0,Tz=function(e){return e!=null&&e.constructor===void 0},Dt.prototype.setState=function(e,t){var r;r=this.__s!=null&&this.__s!==this.state?this.__s:this.__s=Gr({},this.state),typeof e=="function"&&(e=e(Gr({},r),this.props)),e&&Gr(r,e),e!=null&&this.__v&&(t&&this._sb.push(t),Ih(this))},Dt.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Ih(this))},Dt.prototype.render=$,oa=[],cl.__r=0,f_=0});function ho(e,t){q.__h&&q.__h(Ee,e,Ei||t),Ei=0;var r=Ee.__H||(Ee.__H={__:[],__h:[]});return e>=r.__.length&&r.__.push({__V:pl}),r.__[e]}function j(e){return Ei=1,Nr(k_,e)}function Nr(e,t,r){var n=ho(Tn++,2);if(n.t=e,!n.__c&&(n.__=[r?r(t):k_(void 0,t),function(i){var s=n.__N?n.__N[0]:n.__[0],a=n.t(s,i);s!==a&&(n.__N=[a,n.__[1]],n.__c.setState({}))}],n.__c=Ee,!Ee.u)){Ee.u=!0;var o=Ee.shouldComponentUpdate;Ee.shouldComponentUpdate=function(i,s,a){if(!n.__c.__H)return!0;var u=n.__c.__H.__.filter(function(c){return c.__c});if(u.every(function(c){return!c.__N}))return!o||o.call(this,i,s,a);var l=!1;return u.forEach(function(c){if(c.__N){var f=c.__[0];c.__=c.__N,c.__N=void 0,f!==c.__[0]&&(l=!0)}}),!(!l&&n.__c.props===i)&&(!o||o.call(this,i,s,a))}}return n.__N||n.__}function U(e,t){var r=ho(Tn++,3);!q.__s&&Nh(r.__H,t)&&(r.__=e,r.i=t,Ee.__H.__h.push(r))}function Et(e,t){var r=ho(Tn++,4);!q.__s&&Nh(r.__H,t)&&(r.__=e,r.i=t,Ee.__h.push(r))}function F(e){return Ei=5,ne(function(){return{current:e}},[])}function Ah(e,t,r){Ei=6,Et(function(){return typeof e=="function"?(e(t()),function(){return e(null)}):e?(e.current=t(),function(){return e.current=null}):void 0},r==null?r:r.concat(e))}function ne(e,t){var r=ho(Tn++,7);return Nh(r.__H,t)?(r.__V=e(),r.i=t,r.__h=e,r.__V):r.__}function Y(e,t){return Ei=8,ne(function(){return e},t)}function Q(e){var t=Ee.context[e.__c],r=ho(Tn++,9);return r.c=e,t?(r.__==null&&(r.__=!0,t.sub(Ee)),t.props.value):e.__}function go(e,t){q.useDebugValue&&q.useDebugValue(t?t(e):e)}function Rz(e){var t=ho(Tn++,10),r=j();return t.__=e,Ee.componentDidCatch||(Ee.componentDidCatch=function(n,o){t.__&&t.__(n,o),r[1](n)}),[r[0],function(){r[1](void 0)}]}function kh(){var e=ho(Tn++,11);if(!e.__){for(var t=Ee.__v;t!==null&&!t.__m&&t.__!==null;)t=t.__;var r=t.__m||(t.__m=[0,0]);e.__="P"+r[0]+"-"+r[1]++}return e.__}function Dz(){for(var e;e=A_.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(dl),e.__H.__h.forEach(Oh),e.__H.__h=[]}catch(t){e.__H.__h=[],q.__e(t,e.__v)}}function Pz(e){var t,r=function(){clearTimeout(n),O_&&cancelAnimationFrame(t),setTimeout(e)},n=setTimeout(r,100);O_&&(t=requestAnimationFrame(r))}function dl(e){var t=Ee,r=e.__c;typeof r=="function"&&(e.__c=void 0,r()),Ee=t}function Oh(e){var t=Ee;e.__c=e.__(),Ee=t}function Nh(e,t){return!e||e.length!==t.length||t.some(function(r,n){return r!==e[n]})}function k_(e,t){return typeof t=="function"?t(e):t}var Tn,Ee,Th,E_,Ei,A_,pl,S_,I_,__,C_,T_,O_,Rh=$u(()=>{wi();Ei=0,A_=[],pl=[],S_=q.__b,I_=q.__r,__=q.diffed,C_=q.__c,T_=q.unmount;q.__b=function(e){Ee=null,S_&&S_(e)},q.__r=function(e){I_&&I_(e),Tn=0;var t=(Ee=e.__c).__H;t&&(Th===Ee?(t.__h=[],Ee.__h=[],t.__.forEach(function(r){r.__N&&(r.__=r.__N),r.__V=pl,r.__N=r.i=void 0})):(t.__h.forEach(dl),t.__h.forEach(Oh),t.__h=[])),Th=Ee},q.diffed=function(e){__&&__(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(A_.push(t)!==1&&E_===q.requestAnimationFrame||((E_=q.requestAnimationFrame)||Pz)(Dz)),t.__H.__.forEach(function(r){r.i&&(r.__H=r.i),r.__V!==pl&&(r.__=r.__V),r.i=void 0,r.__V=pl})),Th=Ee=null},q.__c=function(e,t){t.some(function(r){try{r.__h.forEach(dl),r.__h=r.__h.filter(function(n){return!n.__||Oh(n)})}catch(n){t.some(function(o){o.__h&&(o.__h=[])}),t=[],q.__e(n,r.__v)}}),C_&&C_(e,t)},q.unmount=function(e){T_&&T_(e);var t,r=e.__c;r&&r.__H&&(r.__H.__.forEach(function(n){try{dl(n)}catch(o){t=o}}),r.__H=void 0,t&&q.__e(t,r.__v))};O_=typeof requestAnimationFrame=="function"});function L_(e,t){for(var r in t)e[r]=t[r];return e}function Ph(e,t){for(var r in e)if(r!=="__source"&&!(r in t))return!0;for(var n in t)if(n!=="__source"&&e[n]!==t[n])return!0;return!1}function Dh(e,t){return e===t&&(e!==0||1/e==1/t)||e!=e&&t!=t}function ml(e){this.props=e}function st(e,t){function r(o){var i=this.props.ref,s=i==o.ref;return!s&&i&&(i.call?i(null):i.current=null),t?!t(this.props,o)||!s:Ph(this.props,o)}function n(o){return this.shouldComponentUpdate=r,H(e,o)}return n.displayName="Memo("+(e.displayName||e.name)+")",n.prototype.isReactComponent=!0,n.__f=!0,n}function Z(e){function t(r){var n=L_({},r);return delete n.ref,e(n,r.ref||null)}return t.$$typeof=Fz,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName="ForwardRef("+(e.displayName||e.name)+")",t}function q_(e,t,r){return e&&(e.__c&&e.__c.__H&&(e.__c.__H.__.forEach(function(n){typeof n.__c=="function"&&n.__c()}),e.__c.__H=null),(e=L_({},e)).__c!=null&&(e.__c.__P===r&&(e.__c.__P=t),e.__c=null),e.__k=e.__k&&e.__k.map(function(n){return q_(n,t,r)})),e}function B_(e,t,r){return e&&(e.__v=null,e.__k=e.__k&&e.__k.map(function(n){return B_(n,t,r)}),e.__c&&e.__c.__P===t&&(e.__e&&r.insertBefore(e.__e,e.__d),e.__c.__e=!0,e.__c.__P=r)),e}function ua(){this.__u=0,this.t=null,this.__b=null}function z_(e){var t=e.__.__c;return t&&t.__a&&t.__a(e)}function U_(e){var t,r,n;function o(i){if(t||(t=e()).then(function(s){r=s.default||s},function(s){n=s}),n)throw n;if(!r)throw t;return H(r,i)}return o.displayName="Lazy",o.__f=!0,o}function Si(){this.u=null,this.o=null}function Mz(e){return this.getChildContext=function(){return e.context},e.children}function jz(e){var t=this,r=e.i;t.componentWillUnmount=function(){xi(null,t.l),t.l=null,t.i=null},t.i&&t.i!==r&&t.componentWillUnmount(),e.__v?(t.l||(t.i=r,t.l={nodeType:1,parentNode:r,childNodes:[],appendChild:function(n){this.childNodes.push(n),t.i.appendChild(n)},insertBefore:function(n,o){this.childNodes.push(n),t.i.appendChild(n)},removeChild:function(n){this.childNodes.splice(this.childNodes.indexOf(n)>>>1,1),t.i.removeChild(n)}}),xi(H(Mz,{context:t.context},e.__v),t.l)):t.l&&t.componentWillUnmount()}function W_(e,t){var r=H(jz,{__v:e,i:t});return r.containerInfo=t,r}function K_(e,t,r){return t.__k==null&&(t.textContent=""),xi(e,t),typeof r=="function"&&r(),e?e.__c:null}function V_(e,t,r){return Ch(e,t),typeof r=="function"&&r(),e?e.__c:null}function zz(){}function Uz(){return this.cancelBubble}function Wz(){return this.defaultPrevented}function Z_(e){return H.bind(null,e)}function Pt(e){return!!e&&e.$$typeof===H_}function Xt(e){return Pt(e)?w_.apply(null,arguments):e}function Y_(e){return!!e.__k&&(xi(null,e),!0)}function X_(e){return e&&(e.base||e.nodeType===1&&e)||null}function Fh(e){e()}function tC(e){return e}function rC(){return[!1,Fh]}function oC(e,t){var r=t(),n=j({h:{__:r,v:t}}),o=n[0].h,i=n[1];return Et(function(){o.__=r,o.v=t,Dh(o.__,t())||i({h:o})},[e,r,t]),U(function(){return Dh(o.__,o.v())||i({h:o}),e(function(){Dh(o.__,o.v())||i({h:o})})},[e]),r}var N_,Fz,R_,Ve,$z,D_,P_,H_,Lz,qz,Bz,F_,G_,$_,M_,j_,J_,Hz,Q_,Rr,eC,nC,R,$h=$u(()=>{wi();wi();Rh();Rh();(ml.prototype=new Dt).isPureReactComponent=!0,ml.prototype.shouldComponentUpdate=function(e,t){return Ph(this.props,e)||Ph(this.state,t)};N_=q.__b;q.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),N_&&N_(e)};Fz=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.forward_ref")||3911;R_=function(e,t){return e==null?null:kr(kr(e).map(t))},Ve={map:R_,forEach:R_,count:function(e){return e?kr(e).length:0},only:function(e){var t=kr(e);if(t.length!==1)throw"Children.only";return t[0]},toArray:kr},$z=q.__e;q.__e=function(e,t,r,n){if(e.then){for(var o,i=t;i=i.__;)if((o=i.__c)&&o.__c)return t.__e==null&&(t.__e=r.__e,t.__k=r.__k),o.__c(e,t)}$z(e,t,r,n)};D_=q.unmount;q.unmount=function(e){var t=e.__c;t&&t.__R&&t.__R(),t&&e.__h===!0&&(e.type=null),D_&&D_(e)},(ua.prototype=new Dt).__c=function(e,t){var r=t.__c,n=this;n.t==null&&(n.t=[]),n.t.push(r);var o=z_(n.__v),i=!1,s=function(){i||(i=!0,r.__R=null,o?o(a):a())};r.__R=s;var a=function(){if(!--n.__u){if(n.state.__a){var l=n.state.__a;n.__v.__k[0]=B_(l,l.__c.__P,l.__c.__O)}var c;for(n.setState({__a:n.__b=null});c=n.t.pop();)c.forceUpdate()}},u=t.__h===!0;n.__u++||u||n.setState({__a:n.__b=n.__v.__k[0]}),e.then(s,s)},ua.prototype.componentWillUnmount=function(){this.t=[]},ua.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var r=document.createElement("div"),n=this.__v.__k[0].__c;this.__v.__k[0]=q_(this.__b,r,n.__O=n.__P)}this.__b=null}var o=t.__a&&H($,null,e.fallback);return o&&(o.__h=null),[H($,null,t.__a?null:e.children),o]};P_=function(e,t,r){if(++r[1]===r[0]&&e.o.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!=="t"||!e.o.size))for(r=e.u;r;){for(;r.length>3;)r.pop()();if(r[1]Ve,Component:()=>Dt,Fragment:()=>$,PureComponent:()=>ml,StrictMode:()=>eC,Suspense:()=>ua,SuspenseList:()=>Si,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:()=>J_,cloneElement:()=>Xt,createContext:()=>Le,createElement:()=>H,createFactory:()=>Z_,createPortal:()=>W_,createRef:()=>fl,default:()=>R,findDOMNode:()=>X_,flushSync:()=>Rr,forwardRef:()=>Z,hydrate:()=>V_,isValidElement:()=>Pt,lazy:()=>U_,memo:()=>st,render:()=>K_,startTransition:()=>Fh,unmountComponentAtNode:()=>Y_,unstable_batchedUpdates:()=>Q_,useCallback:()=>Y,useContext:()=>Q,useDebugValue:()=>go,useDeferredValue:()=>tC,useEffect:()=>U,useErrorBoundary:()=>Rz,useId:()=>kh,useImperativeHandle:()=>Ah,useInsertionEffect:()=>nC,useLayoutEffect:()=>Et,useMemo:()=>ne,useReducer:()=>Nr,useRef:()=>F,useState:()=>j,useSyncExternalStore:()=>oC,useTransition:()=>rC,version:()=>Hz});var S=$u(()=>{$h();$h()});var er=g((KT,VT)=>{"use strict";var Gl=function(e){return e&&e.Math===Math&&e};VT.exports=Gl(typeof globalThis=="object"&&globalThis)||Gl(typeof window=="object"&&window)||Gl(typeof self=="object"&&self)||Gl(typeof global=="object"&&global)||function(){return this}()||KT||Function("return this")()});var ft=g((Jbe,GT)=>{"use strict";GT.exports=function(e){try{return!!e()}catch{return!0}}});var Ta=g((Zbe,JT)=>{"use strict";var K9=ft();JT.exports=!K9(function(){var e=function(){}.bind();return typeof e!="function"||e.hasOwnProperty("prototype")})});var eO=g((Ybe,QT)=>{"use strict";var V9=Ta(),XT=Function.prototype,ZT=XT.apply,YT=XT.call;QT.exports=typeof Reflect=="object"&&Reflect.apply||(V9?YT.bind(ZT):function(){return YT.apply(ZT,arguments)})});var pt=g((Xbe,nO)=>{"use strict";var tO=Ta(),rO=Function.prototype,cg=rO.call,G9=tO&&rO.bind.bind(cg,cg);nO.exports=tO?G9:function(e){return function(){return cg.apply(e,arguments)}}});var wo=g((Qbe,iO)=>{"use strict";var oO=pt(),J9=oO({}.toString),Z9=oO("".slice);iO.exports=function(e){return Z9(J9(e),8,-1)}});var lg=g((eve,sO)=>{"use strict";var Y9=wo(),X9=pt();sO.exports=function(e){if(Y9(e)==="Function")return X9(e)}});var pg=g((tve,aO)=>{"use strict";var fg=typeof document=="object"&&document.all,Q9=typeof fg>"u"&&fg!==void 0;aO.exports={all:fg,IS_HTMLDDA:Q9}});var Je=g((rve,cO)=>{"use strict";var uO=pg(),e4=uO.all;cO.exports=uO.IS_HTMLDDA?function(e){return typeof e=="function"||e===e4}:function(e){return typeof e=="function"}});var tr=g((nve,lO)=>{"use strict";var t4=ft();lO.exports=!t4(function(){return Object.defineProperty({},1,{get:function(){return 7}})[1]!==7})});var Xr=g((ove,fO)=>{"use strict";var r4=Ta(),Jl=Function.prototype.call;fO.exports=r4?Jl.bind(Jl):function(){return Jl.apply(Jl,arguments)}});var hO=g(mO=>{"use strict";var pO={}.propertyIsEnumerable,dO=Object.getOwnPropertyDescriptor,n4=dO&&!pO.call({1:2},1);mO.f=n4?function(t){var r=dO(this,t);return!!r&&r.enumerable}:pO});var Oa=g((sve,gO)=>{"use strict";gO.exports=function(e,t){return{enumerable:!(e&1),configurable:!(e&2),writable:!(e&4),value:t}}});var mg=g((ave,yO)=>{"use strict";var o4=pt(),i4=ft(),s4=wo(),dg=Object,a4=o4("".split);yO.exports=i4(function(){return!dg("z").propertyIsEnumerable(0)})?function(e){return s4(e)==="String"?a4(e,""):dg(e)}:dg});var Di=g((uve,bO)=>{"use strict";bO.exports=function(e){return e==null}});var Aa=g((cve,vO)=>{"use strict";var u4=Di(),c4=TypeError;vO.exports=function(e){if(u4(e))throw c4("Can't call method on "+e);return e}});var Pi=g((lve,xO)=>{"use strict";var l4=mg(),f4=Aa();xO.exports=function(e){return l4(f4(e))}});var fr=g((fve,SO)=>{"use strict";var wO=Je(),EO=pg(),p4=EO.all;SO.exports=EO.IS_HTMLDDA?function(e){return typeof e=="object"?e!==null:wO(e)||e===p4}:function(e){return typeof e=="object"?e!==null:wO(e)}});var ka=g((pve,IO)=>{"use strict";IO.exports={}});var Eo=g((dve,CO)=>{"use strict";var hg=ka(),gg=er(),d4=Je(),_O=function(e){return d4(e)?e:void 0};CO.exports=function(e,t){return arguments.length<2?_O(hg[e])||_O(gg[e]):hg[e]&&hg[e][t]||gg[e]&&gg[e][t]}});var Zl=g((mve,TO)=>{"use strict";var m4=pt();TO.exports=m4({}.isPrototypeOf)});var AO=g((hve,OO)=>{"use strict";OO.exports=typeof navigator<"u"&&String(navigator.userAgent)||""});var $O=g((gve,FO)=>{"use strict";var PO=er(),yg=AO(),kO=PO.process,NO=PO.Deno,RO=kO&&kO.versions||NO&&NO.version,DO=RO&&RO.v8,pr,Yl;DO&&(pr=DO.split("."),Yl=pr[0]>0&&pr[0]<4?1:+(pr[0]+pr[1]));!Yl&&yg&&(pr=yg.match(/Edge\/(\d+)/),(!pr||pr[1]>=74)&&(pr=yg.match(/Chrome\/(\d+)/),pr&&(Yl=+pr[1])));FO.exports=Yl});var bg=g((yve,jO)=>{"use strict";var MO=$O(),h4=ft(),g4=er(),y4=g4.String;jO.exports=!!Object.getOwnPropertySymbols&&!h4(function(){var e=Symbol("symbol detection");return!y4(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&MO&&MO<41})});var vg=g((bve,LO)=>{"use strict";var b4=bg();LO.exports=b4&&!Symbol.sham&&typeof Symbol.iterator=="symbol"});var xg=g((vve,qO)=>{"use strict";var v4=Eo(),x4=Je(),w4=Zl(),E4=vg(),S4=Object;qO.exports=E4?function(e){return typeof e=="symbol"}:function(e){var t=v4("Symbol");return x4(t)&&w4(t.prototype,S4(e))}});var Xl=g((xve,BO)=>{"use strict";var I4=String;BO.exports=function(e){try{return I4(e)}catch{return"Object"}}});var So=g((wve,zO)=>{"use strict";var _4=Je(),C4=Xl(),T4=TypeError;zO.exports=function(e){if(_4(e))return e;throw T4(C4(e)+" is not a function")}});var Ql=g((Eve,UO)=>{"use strict";var O4=So(),A4=Di();UO.exports=function(e,t){var r=e[t];return A4(r)?void 0:O4(r)}});var HO=g((Sve,WO)=>{"use strict";var wg=Xr(),Eg=Je(),Sg=fr(),k4=TypeError;WO.exports=function(e,t){var r,n;if(t==="string"&&Eg(r=e.toString)&&!Sg(n=wg(r,e))||Eg(r=e.valueOf)&&!Sg(n=wg(r,e))||t!=="string"&&Eg(r=e.toString)&&!Sg(n=wg(r,e)))return n;throw k4("Can't convert object to primitive value")}});var Na=g((Ive,KO)=>{"use strict";KO.exports=!0});var JO=g((_ve,GO)=>{"use strict";var VO=er(),N4=Object.defineProperty;GO.exports=function(e,t){try{N4(VO,e,{value:t,configurable:!0,writable:!0})}catch{VO[e]=t}return t}});var ef=g((Cve,YO)=>{"use strict";var R4=er(),D4=JO(),ZO="__core-js_shared__",P4=R4[ZO]||D4(ZO,{});YO.exports=P4});var Ig=g((Tve,QO)=>{"use strict";var F4=Na(),XO=ef();(QO.exports=function(e,t){return XO[e]||(XO[e]=t!==void 0?t:{})})("versions",[]).push({version:"3.32.1",mode:F4?"pure":"global",copyright:"\xA9 2014-2023 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.32.1/LICENSE",source:"https://github.com/zloirock/core-js"})});var tf=g((Ove,eA)=>{"use strict";var $4=Aa(),M4=Object;eA.exports=function(e){return M4($4(e))}});var Fr=g((Ave,tA)=>{"use strict";var j4=pt(),L4=tf(),q4=j4({}.hasOwnProperty);tA.exports=Object.hasOwn||function(t,r){return q4(L4(t),r)}});var rf=g((kve,rA)=>{"use strict";var B4=pt(),z4=0,U4=Math.random(),W4=B4(1 .toString);rA.exports=function(e){return"Symbol("+(e===void 0?"":e)+")_"+W4(++z4+U4,36)}});var dr=g((Nve,oA)=>{"use strict";var H4=er(),K4=Ig(),nA=Fr(),V4=rf(),G4=bg(),J4=vg(),Fi=H4.Symbol,_g=K4("wks"),Z4=J4?Fi.for||Fi:Fi&&Fi.withoutSetter||V4;oA.exports=function(e){return nA(_g,e)||(_g[e]=G4&&nA(Fi,e)?Fi[e]:Z4("Symbol."+e)),_g[e]}});var uA=g((Rve,aA)=>{"use strict";var Y4=Xr(),iA=fr(),sA=xg(),X4=Ql(),Q4=HO(),e8=dr(),t8=TypeError,r8=e8("toPrimitive");aA.exports=function(e,t){if(!iA(e)||sA(e))return e;var r=X4(e,r8),n;if(r){if(t===void 0&&(t="default"),n=Y4(r,e,t),!iA(n)||sA(n))return n;throw t8("Can't convert object to primitive value")}return t===void 0&&(t="number"),Q4(e,t)}});var Ra=g((Dve,cA)=>{"use strict";var n8=uA(),o8=xg();cA.exports=function(e){var t=n8(e,"string");return o8(t)?t:t+""}});var Tg=g((Pve,fA)=>{"use strict";var i8=er(),lA=fr(),Cg=i8.document,s8=lA(Cg)&&lA(Cg.createElement);fA.exports=function(e){return s8?Cg.createElement(e):{}}});var Og=g((Fve,pA)=>{"use strict";var a8=tr(),u8=ft(),c8=Tg();pA.exports=!a8&&!u8(function(){return Object.defineProperty(c8("div"),"a",{get:function(){return 7}}).a!==7})});var hA=g(mA=>{"use strict";var l8=tr(),f8=Xr(),p8=hO(),d8=Oa(),m8=Pi(),h8=Ra(),g8=Fr(),y8=Og(),dA=Object.getOwnPropertyDescriptor;mA.f=l8?dA:function(t,r){if(t=m8(t),r=h8(r),y8)try{return dA(t,r)}catch{}if(g8(t,r))return d8(!f8(p8.f,t,r),t[r])}});var yA=g((Mve,gA)=>{"use strict";var b8=ft(),v8=Je(),x8=/#|\.prototype\./,Da=function(e,t){var r=E8[w8(e)];return r===I8?!0:r===S8?!1:v8(t)?b8(t):!!t},w8=Da.normalize=function(e){return String(e).replace(x8,".").toLowerCase()},E8=Da.data={},S8=Da.NATIVE="N",I8=Da.POLYFILL="P";gA.exports=Da});var Pa=g((jve,vA)=>{"use strict";var bA=lg(),_8=So(),C8=Ta(),T8=bA(bA.bind);vA.exports=function(e,t){return _8(e),t===void 0?e:C8?T8(e,t):function(){return e.apply(t,arguments)}}});var Ag=g((Lve,xA)=>{"use strict";var O8=tr(),A8=ft();xA.exports=O8&&A8(function(){return Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype!==42})});var Nn=g((qve,wA)=>{"use strict";var k8=fr(),N8=String,R8=TypeError;wA.exports=function(e){if(k8(e))return e;throw R8(N8(e)+" is not an object")}});var Rn=g(SA=>{"use strict";var D8=tr(),P8=Og(),F8=Ag(),nf=Nn(),EA=Ra(),$8=TypeError,kg=Object.defineProperty,M8=Object.getOwnPropertyDescriptor,Ng="enumerable",Rg="configurable",Dg="writable";SA.f=D8?F8?function(t,r,n){if(nf(t),r=EA(r),nf(n),typeof t=="function"&&r==="prototype"&&"value"in n&&Dg in n&&!n[Dg]){var o=M8(t,r);o&&o[Dg]&&(t[r]=n.value,n={configurable:Rg in n?n[Rg]:o[Rg],enumerable:Ng in n?n[Ng]:o[Ng],writable:!1})}return kg(t,r,n)}:kg:function(t,r,n){if(nf(t),r=EA(r),nf(n),P8)try{return kg(t,r,n)}catch{}if("get"in n||"set"in n)throw $8("Accessors not supported");return"value"in n&&(t[r]=n.value),t}});var Io=g((zve,IA)=>{"use strict";var j8=tr(),L8=Rn(),q8=Oa();IA.exports=j8?function(e,t,r){return L8.f(e,t,q8(1,r))}:function(e,t,r){return e[t]=r,e}});var _o=g((Uve,CA)=>{"use strict";var of=er(),B8=eO(),z8=lg(),U8=Je(),W8=hA().f,H8=yA(),$i=ka(),K8=Pa(),Mi=Io(),_A=Fr(),V8=function(e){var t=function(r,n,o){if(this instanceof t){switch(arguments.length){case 0:return new e;case 1:return new e(r);case 2:return new e(r,n)}return new e(r,n,o)}return B8(e,this,arguments)};return t.prototype=e.prototype,t};CA.exports=function(e,t){var r=e.target,n=e.global,o=e.stat,i=e.proto,s=n?of:o?of[r]:(of[r]||{}).prototype,a=n?$i:$i[r]||Mi($i,r,{})[r],u=a.prototype,l,c,f,p,d,h,b,y,v;for(p in t)l=H8(n?p:r+(o?".":"#")+p,e.forced),c=!l&&s&&_A(s,p),h=a[p],c&&(e.dontCallGetSet?(v=W8(s,p),b=v&&v.value):b=s[p]),d=c&&b?b:t[p],!(c&&typeof h==typeof d)&&(e.bind&&c?y=K8(d,of):e.wrap&&c?y=V8(d):i&&U8(d)?y=z8(d):y=d,(e.sham||d&&d.sham||h&&h.sham)&&Mi(y,"sham",!0),Mi(a,p,y),i&&(f=r+"Prototype",_A($i,f)||Mi($i,f,{}),Mi($i[f],p,d),e.real&&u&&(l||!u[p])&&Mi(u,p,d)))}});var Fa=g((Wve,TA)=>{"use strict";TA.exports={}});var AA=g((Hve,OA)=>{"use strict";var G8=Math.ceil,J8=Math.floor;OA.exports=Math.trunc||function(t){var r=+t;return(r>0?J8:G8)(r)}});var Pg=g((Kve,kA)=>{"use strict";var Z8=AA();kA.exports=function(e){var t=+e;return t!==t||t===0?0:Z8(t)}});var Fg=g((Vve,NA)=>{"use strict";var Y8=Pg(),X8=Math.max,Q8=Math.min;NA.exports=function(e,t){var r=Y8(e);return r<0?X8(r+t,0):Q8(r,t)}});var DA=g((Gve,RA)=>{"use strict";var eU=Pg(),tU=Math.min;RA.exports=function(e){return e>0?tU(eU(e),9007199254740991):0}});var $a=g((Jve,PA)=>{"use strict";var rU=DA();PA.exports=function(e){return rU(e.length)}});var MA=g((Zve,$A)=>{"use strict";var nU=Pi(),oU=Fg(),iU=$a(),FA=function(e){return function(t,r,n){var o=nU(t),i=iU(o),s=oU(n,i),a;if(e&&r!==r){for(;i>s;)if(a=o[s++],a!==a)return!0}else for(;i>s;s++)if((e||s in o)&&o[s]===r)return e||s||0;return!e&&-1}};$A.exports={includes:FA(!0),indexOf:FA(!1)}});var Mg=g((Yve,LA)=>{"use strict";var sU=pt(),$g=Fr(),aU=Pi(),uU=MA().indexOf,cU=Fa(),jA=sU([].push);LA.exports=function(e,t){var r=aU(e),n=0,o=[],i;for(i in r)!$g(cU,i)&&$g(r,i)&&jA(o,i);for(;t.length>n;)$g(r,i=t[n++])&&(~uU(o,i)||jA(o,i));return o}});var sf=g((Xve,qA)=>{"use strict";qA.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]});var jg=g(BA=>{"use strict";var lU=Mg(),fU=sf(),pU=fU.concat("length","prototype");BA.f=Object.getOwnPropertyNames||function(t){return lU(t,pU)}});var UA=g((e0e,zA)=>{"use strict";var dU=Ra(),mU=Rn(),hU=Oa();zA.exports=function(e,t,r){var n=dU(t);n in e?mU.f(e,n,hU(0,r)):e[n]=r}});var KA=g((t0e,HA)=>{"use strict";var WA=Fg(),gU=$a(),yU=UA(),bU=Array,vU=Math.max;HA.exports=function(e,t,r){for(var n=gU(e),o=WA(t,n),i=WA(r===void 0?n:r,n),s=bU(vU(i-o,0)),a=0;o{"use strict";var xU=wo(),wU=Pi(),VA=jg().f,EU=KA(),GA=typeof window=="object"&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],SU=function(e){try{return VA(e)}catch{return EU(GA)}};JA.exports.f=function(t){return GA&&xU(t)==="Window"?SU(t):VA(wU(t))}});var XA=g((n0e,YA)=>{"use strict";var IU=ft();YA.exports=IU(function(){if(typeof ArrayBuffer=="function"){var e=new ArrayBuffer(8);Object.isExtensible(e)&&Object.defineProperty(e,"a",{value:8})}})});var tk=g((o0e,ek)=>{"use strict";var _U=ft(),CU=fr(),TU=wo(),QA=XA(),af=Object.isExtensible,OU=_U(function(){af(1)});ek.exports=OU||QA?function(t){return!CU(t)||QA&&TU(t)==="ArrayBuffer"?!1:af?af(t):!0}:af});var nk=g((i0e,rk)=>{"use strict";var AU=ft();rk.exports=!AU(function(){return Object.isExtensible(Object.preventExtensions({}))})});var zg=g((s0e,sk)=>{"use strict";var kU=_o(),NU=pt(),RU=Fa(),DU=fr(),Lg=Fr(),PU=Rn().f,ok=jg(),FU=ZA(),qg=tk(),$U=rf(),MU=nk(),ik=!1,Qr=$U("meta"),jU=0,Bg=function(e){PU(e,Qr,{value:{objectID:"O"+jU++,weakData:{}}})},LU=function(e,t){if(!DU(e))return typeof e=="symbol"?e:(typeof e=="string"?"S":"P")+e;if(!Lg(e,Qr)){if(!qg(e))return"F";if(!t)return"E";Bg(e)}return e[Qr].objectID},qU=function(e,t){if(!Lg(e,Qr)){if(!qg(e))return!0;if(!t)return!1;Bg(e)}return e[Qr].weakData},BU=function(e){return MU&&ik&&qg(e)&&!Lg(e,Qr)&&Bg(e),e},zU=function(){UU.enable=function(){},ik=!0;var e=ok.f,t=NU([].splice),r={};r[Qr]=1,e(r).length&&(ok.f=function(n){for(var o=e(n),i=0,s=o.length;i{"use strict";ak.exports={}});var ck=g((u0e,uk)=>{"use strict";var WU=dr(),HU=Ma(),KU=WU("iterator"),VU=Array.prototype;uk.exports=function(e){return e!==void 0&&(HU.Array===e||VU[KU]===e)}});var uf=g((c0e,fk)=>{"use strict";var GU=dr(),JU=GU("toStringTag"),lk={};lk[JU]="z";fk.exports=String(lk)==="[object z]"});var lf=g((l0e,pk)=>{"use strict";var ZU=uf(),YU=Je(),cf=wo(),XU=dr(),QU=XU("toStringTag"),eW=Object,tW=cf(function(){return arguments}())==="Arguments",rW=function(e,t){try{return e[t]}catch{}};pk.exports=ZU?cf:function(e){var t,r,n;return e===void 0?"Undefined":e===null?"Null":typeof(r=rW(t=eW(e),QU))=="string"?r:tW?cf(t):(n=cf(t))==="Object"&&YU(t.callee)?"Arguments":n}});var Ug=g((f0e,mk)=>{"use strict";var nW=lf(),dk=Ql(),oW=Di(),iW=Ma(),sW=dr(),aW=sW("iterator");mk.exports=function(e){if(!oW(e))return dk(e,aW)||dk(e,"@@iterator")||iW[nW(e)]}});var gk=g((p0e,hk)=>{"use strict";var uW=Xr(),cW=So(),lW=Nn(),fW=Xl(),pW=Ug(),dW=TypeError;hk.exports=function(e,t){var r=arguments.length<2?pW(e):t;if(cW(r))return lW(uW(r,e));throw dW(fW(e)+" is not iterable")}});var vk=g((d0e,bk)=>{"use strict";var mW=Xr(),yk=Nn(),hW=Ql();bk.exports=function(e,t,r){var n,o;yk(e);try{if(n=hW(e,"return"),!n){if(t==="throw")throw r;return r}n=mW(n,e)}catch(i){o=!0,n=i}if(t==="throw")throw r;if(o)throw n;return yk(n),r}});var ja=g((m0e,Sk)=>{"use strict";var gW=Pa(),yW=Xr(),bW=Nn(),vW=Xl(),xW=ck(),wW=$a(),xk=Zl(),EW=gk(),SW=Ug(),wk=vk(),IW=TypeError,ff=function(e,t){this.stopped=e,this.result=t},Ek=ff.prototype;Sk.exports=function(e,t,r){var n=r&&r.that,o=!!(r&&r.AS_ENTRIES),i=!!(r&&r.IS_RECORD),s=!!(r&&r.IS_ITERATOR),a=!!(r&&r.INTERRUPTED),u=gW(t,n),l,c,f,p,d,h,b,y=function(w){return l&&wk(l,"normal",w),new ff(!0,w)},v=function(w){return o?(bW(w),a?u(w[0],w[1],y):u(w[0],w[1])):a?u(w,y):u(w)};if(i)l=e.iterator;else if(s)l=e;else{if(c=SW(e),!c)throw IW(vW(e)+" is not iterable");if(xW(c)){for(f=0,p=wW(e);p>f;f++)if(d=v(e[f]),d&&xk(Ek,d))return d;return new ff(!1)}l=EW(e,c)}for(h=i?e.next:l.next;!(b=yW(h,l)).done;){try{d=v(b.value)}catch(w){wk(l,"throw",w)}if(typeof d=="object"&&d&&xk(Ek,d))return d}return new ff(!1)}});var Wg=g((h0e,Ik)=>{"use strict";var _W=Zl(),CW=TypeError;Ik.exports=function(e,t){if(_W(t,e))return e;throw CW("Incorrect invocation")}});var Ck=g((g0e,_k)=>{"use strict";var TW=uf(),OW=lf();_k.exports=TW?{}.toString:function(){return"[object "+OW(this)+"]"}});var pf=g((y0e,Ok)=>{"use strict";var AW=uf(),kW=Rn().f,NW=Io(),RW=Fr(),DW=Ck(),PW=dr(),Tk=PW("toStringTag");Ok.exports=function(e,t,r,n){if(e){var o=r?e:e.prototype;RW(o,Tk)||kW(o,Tk,{configurable:!0,value:t}),n&&!AW&&NW(o,"toString",DW)}}});var kk=g((b0e,Ak)=>{"use strict";var FW=wo();Ak.exports=Array.isArray||function(t){return FW(t)==="Array"}});var Rk=g((v0e,Nk)=>{"use strict";var $W=pt(),MW=Je(),Hg=ef(),jW=$W(Function.toString);MW(Hg.inspectSource)||(Hg.inspectSource=function(e){return jW(e)});Nk.exports=Hg.inspectSource});var jk=g((x0e,Mk)=>{"use strict";var LW=pt(),qW=ft(),Dk=Je(),BW=lf(),zW=Eo(),UW=Rk(),Pk=function(){},WW=[],Fk=zW("Reflect","construct"),Kg=/^\s*(?:class|function)\b/,HW=LW(Kg.exec),KW=!Kg.exec(Pk),La=function(t){if(!Dk(t))return!1;try{return Fk(Pk,WW,t),!0}catch{return!1}},$k=function(t){if(!Dk(t))return!1;switch(BW(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return KW||!!HW(Kg,UW(t))}catch{return!0}};$k.sham=!0;Mk.exports=!Fk||qW(function(){var e;return La(La.call)||!La(Object)||!La(function(){e=!0})||e})?$k:La});var zk=g((w0e,Bk)=>{"use strict";var Lk=kk(),VW=jk(),GW=fr(),JW=dr(),ZW=JW("species"),qk=Array;Bk.exports=function(e){var t;return Lk(e)&&(t=e.constructor,VW(t)&&(t===qk||Lk(t.prototype))?t=void 0:GW(t)&&(t=t[ZW],t===null&&(t=void 0))),t===void 0?qk:t}});var Wk=g((E0e,Uk)=>{"use strict";var YW=zk();Uk.exports=function(e,t){return new(YW(e))(t===0?0:t)}});var Vk=g((S0e,Kk)=>{"use strict";var XW=Pa(),QW=pt(),e7=mg(),t7=tf(),r7=$a(),n7=Wk(),Hk=QW([].push),Dn=function(e){var t=e===1,r=e===2,n=e===3,o=e===4,i=e===6,s=e===7,a=e===5||i;return function(u,l,c,f){for(var p=t7(u),d=e7(p),h=XW(l,c),b=r7(d),y=0,v=f||n7,w=t?v(u,b):r||s?v(u,0):void 0,T,M;b>y;y++)if((a||y in d)&&(T=d[y],M=h(T,y,p),e))if(t)w[y]=M;else if(M)switch(e){case 3:return!0;case 5:return T;case 6:return y;case 2:Hk(w,T)}else switch(e){case 4:return!1;case 7:Hk(w,T)}return i?-1:n||o?o:w}};Kk.exports={forEach:Dn(0),map:Dn(1),filter:Dn(2),some:Dn(3),every:Dn(4),find:Dn(5),findIndex:Dn(6),filterReject:Dn(7)}});var Zk=g((I0e,Jk)=>{"use strict";var o7=er(),i7=Je(),Gk=o7.WeakMap;Jk.exports=i7(Gk)&&/native code/.test(String(Gk))});var df=g((_0e,Xk)=>{"use strict";var s7=Ig(),a7=rf(),Yk=s7("keys");Xk.exports=function(e){return Yk[e]||(Yk[e]=a7(e))}});var Zg=g((C0e,tN)=>{"use strict";var u7=Zk(),eN=er(),c7=fr(),l7=Io(),Vg=Fr(),Gg=ef(),f7=df(),p7=Fa(),Qk="Object already initialized",Jg=eN.TypeError,d7=eN.WeakMap,mf,qa,hf,m7=function(e){return hf(e)?qa(e):mf(e,{})},h7=function(e){return function(t){var r;if(!c7(t)||(r=qa(t)).type!==e)throw Jg("Incompatible receiver, "+e+" required");return r}};u7||Gg.state?(mr=Gg.state||(Gg.state=new d7),mr.get=mr.get,mr.has=mr.has,mr.set=mr.set,mf=function(e,t){if(mr.has(e))throw Jg(Qk);return t.facade=e,mr.set(e,t),t},qa=function(e){return mr.get(e)||{}},hf=function(e){return mr.has(e)}):(Co=f7("state"),p7[Co]=!0,mf=function(e,t){if(Vg(e,Co))throw Jg(Qk);return t.facade=e,l7(e,Co,t),t},qa=function(e){return Vg(e,Co)?e[Co]:{}},hf=function(e){return Vg(e,Co)});var mr,Co;tN.exports={set:mf,get:qa,has:hf,enforce:m7,getterFor:h7}});var oN=g((T0e,nN)=>{"use strict";var g7=_o(),y7=er(),b7=zg(),v7=ft(),x7=Io(),w7=ja(),E7=Wg(),S7=Je(),I7=fr(),_7=Di(),C7=pf(),T7=Rn().f,O7=Vk().forEach,A7=tr(),rN=Zg(),k7=rN.set,N7=rN.getterFor;nN.exports=function(e,t,r){var n=e.indexOf("Map")!==-1,o=e.indexOf("Weak")!==-1,i=n?"set":"add",s=y7[e],a=s&&s.prototype,u={},l;if(!A7||!S7(s)||!(o||a.forEach&&!v7(function(){new s().entries().next()})))l=r.getConstructor(t,e,n,i),b7.enable();else{l=t(function(p,d){k7(E7(p,c),{type:e,collection:new s}),_7(d)||w7(d,p[i],{that:p,AS_ENTRIES:n})});var c=l.prototype,f=N7(e);O7(["add","clear","delete","forEach","get","has","set","keys","values","entries"],function(p){var d=p==="add"||p==="set";p in a&&!(o&&p==="clear")&&x7(c,p,function(h,b){var y=f(this).collection;if(!d&&o&&!I7(h))return p==="get"?void 0:!1;var v=y[p](h===0?0:h,b);return d?this:v})}),o||T7(c,"size",{configurable:!0,get:function(){return f(this).collection.size}})}return C7(l,e,!1,!0),u[e]=l,g7({global:!0,forced:!0},u),o||r.setStrong(l,e,n),l}});var sN=g((O0e,iN)=>{"use strict";var R7=Mg(),D7=sf();iN.exports=Object.keys||function(t){return R7(t,D7)}});var uN=g(aN=>{"use strict";var P7=tr(),F7=Ag(),$7=Rn(),M7=Nn(),j7=Pi(),L7=sN();aN.f=P7&&!F7?Object.defineProperties:function(t,r){M7(t);for(var n=j7(r),o=L7(r),i=o.length,s=0,a;i>s;)$7.f(t,a=o[s++],n[a]);return t}});var lN=g((k0e,cN)=>{"use strict";var q7=Eo();cN.exports=q7("document","documentElement")});var Ba=g((N0e,yN)=>{"use strict";var B7=Nn(),z7=uN(),fN=sf(),U7=Fa(),W7=lN(),H7=Tg(),K7=df(),pN=">",dN="<",Xg="prototype",Qg="script",hN=K7("IE_PROTO"),Yg=function(){},gN=function(e){return dN+Qg+pN+e+dN+"/"+Qg+pN},mN=function(e){e.write(gN("")),e.close();var t=e.parentWindow.Object;return e=null,t},V7=function(){var e=H7("iframe"),t="java"+Qg+":",r;return e.style.display="none",W7.appendChild(e),e.src=String(t),r=e.contentWindow.document,r.open(),r.write(gN("document.F=Object")),r.close(),r.F},gf,yf=function(){try{gf=new ActiveXObject("htmlfile")}catch{}yf=typeof document<"u"?document.domain&&gf?mN(gf):V7():mN(gf);for(var e=fN.length;e--;)delete yf[Xg][fN[e]];return yf()};U7[hN]=!0;yN.exports=Object.create||function(t,r){var n;return t!==null?(Yg[Xg]=B7(t),n=new Yg,Yg[Xg]=null,n[hN]=t):n=yf(),r===void 0?n:z7.f(n,r)}});var ey=g((R0e,bN)=>{"use strict";var G7=Rn();bN.exports=function(e,t,r){return G7.f(e,t,r)}});var bf=g((D0e,vN)=>{"use strict";var J7=Io();vN.exports=function(e,t,r,n){return n&&n.enumerable?e[t]=r:J7(e,t,r),e}});var wN=g((P0e,xN)=>{"use strict";var Z7=bf();xN.exports=function(e,t,r){for(var n in t)r&&r.unsafe&&e[n]?e[n]=t[n]:Z7(e,n,t[n],r);return e}});var IN=g((F0e,SN)=>{"use strict";var ty=tr(),Y7=Fr(),EN=Function.prototype,X7=ty&&Object.getOwnPropertyDescriptor,ry=Y7(EN,"name"),Q7=ry&&function(){}.name==="something",eH=ry&&(!ty||ty&&X7(EN,"name").configurable);SN.exports={EXISTS:ry,PROPER:Q7,CONFIGURABLE:eH}});var CN=g(($0e,_N)=>{"use strict";var tH=ft();_N.exports=!tH(function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})});var oy=g((M0e,ON)=>{"use strict";var rH=Fr(),nH=Je(),oH=tf(),iH=df(),sH=CN(),TN=iH("IE_PROTO"),ny=Object,aH=ny.prototype;ON.exports=sH?ny.getPrototypeOf:function(e){var t=oH(e);if(rH(t,TN))return t[TN];var r=t.constructor;return nH(r)&&t instanceof r?r.prototype:t instanceof ny?aH:null}});var uy=g((j0e,NN)=>{"use strict";var uH=ft(),cH=Je(),lH=fr(),fH=Ba(),AN=oy(),pH=bf(),dH=dr(),mH=Na(),ay=dH("iterator"),kN=!1,en,iy,sy;[].keys&&(sy=[].keys(),"next"in sy?(iy=AN(AN(sy)),iy!==Object.prototype&&(en=iy)):kN=!0);var hH=!lH(en)||uH(function(){var e={};return en[ay].call(e)!==e});hH?en={}:mH&&(en=fH(en));cH(en[ay])||pH(en,ay,function(){return this});NN.exports={IteratorPrototype:en,BUGGY_SAFARI_ITERATORS:kN}});var DN=g((L0e,RN)=>{"use strict";var gH=uy().IteratorPrototype,yH=Ba(),bH=Oa(),vH=pf(),xH=Ma(),wH=function(){return this};RN.exports=function(e,t,r,n){var o=t+" Iterator";return e.prototype=yH(gH,{next:bH(+!n,r)}),vH(e,o,!1,!0),xH[o]=wH,e}});var FN=g((q0e,PN)=>{"use strict";var EH=pt(),SH=So();PN.exports=function(e,t,r){try{return EH(SH(Object.getOwnPropertyDescriptor(e,t)[r]))}catch{}}});var MN=g((B0e,$N)=>{"use strict";var IH=Je(),_H=String,CH=TypeError;$N.exports=function(e){if(typeof e=="object"||IH(e))return e;throw CH("Can't set "+_H(e)+" as a prototype")}});var LN=g((z0e,jN)=>{"use strict";var TH=FN(),OH=Nn(),AH=MN();jN.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e=!1,t={},r;try{r=TH(Object.prototype,"__proto__","set"),r(t,[]),e=t instanceof Array}catch{}return function(o,i){return OH(o),AH(i),e?r(o,i):o.__proto__=i,o}}():void 0)});var ZN=g((U0e,JN)=>{"use strict";var kH=_o(),NH=Xr(),vf=Na(),VN=IN(),RH=Je(),DH=DN(),qN=oy(),BN=LN(),PH=pf(),FH=Io(),cy=bf(),$H=dr(),zN=Ma(),GN=uy(),MH=VN.PROPER,jH=VN.CONFIGURABLE,UN=GN.IteratorPrototype,xf=GN.BUGGY_SAFARI_ITERATORS,za=$H("iterator"),WN="keys",Ua="values",HN="entries",KN=function(){return this};JN.exports=function(e,t,r,n,o,i,s){DH(r,t,n);var a=function(v){if(v===o&&p)return p;if(!xf&&v in c)return c[v];switch(v){case WN:return function(){return new r(this,v)};case Ua:return function(){return new r(this,v)};case HN:return function(){return new r(this,v)}}return function(){return new r(this)}},u=t+" Iterator",l=!1,c=e.prototype,f=c[za]||c["@@iterator"]||o&&c[o],p=!xf&&f||a(o),d=t==="Array"&&c.entries||f,h,b,y;if(d&&(h=qN(d.call(new e)),h!==Object.prototype&&h.next&&(!vf&&qN(h)!==UN&&(BN?BN(h,UN):RH(h[za])||cy(h,za,KN)),PH(h,u,!0,!0),vf&&(zN[u]=KN))),MH&&o===Ua&&f&&f.name!==Ua&&(!vf&&jH?FH(c,"name",Ua):(l=!0,p=function(){return NH(f,this)})),o)if(b={values:a(Ua),keys:i?p:a(WN),entries:a(HN)},s)for(y in b)(xf||l||!(y in c))&&cy(c,y,b[y]);else kH({target:t,proto:!0,forced:xf||l},b);return(!vf||s)&&c[za]!==p&&cy(c,za,p,{name:o}),zN[t]=p,b}});var XN=g((W0e,YN)=>{"use strict";YN.exports=function(e,t){return{value:e,done:t}}});var tR=g((H0e,eR)=>{"use strict";var LH=Eo(),qH=ey(),BH=dr(),zH=tr(),QN=BH("species");eR.exports=function(e){var t=LH(e);zH&&t&&!t[QN]&&qH(t,QN,{configurable:!0,get:function(){return this}})}});var aR=g((K0e,sR)=>{"use strict";var UH=Ba(),WH=ey(),rR=wN(),HH=Pa(),KH=Wg(),VH=Di(),GH=ja(),JH=ZN(),wf=XN(),ZH=tR(),Wa=tr(),nR=zg().fastKey,iR=Zg(),oR=iR.set,ly=iR.getterFor;sR.exports={getConstructor:function(e,t,r,n){var o=e(function(l,c){KH(l,i),oR(l,{type:t,index:UH(null),first:void 0,last:void 0,size:0}),Wa||(l.size=0),VH(c)||GH(c,l[n],{that:l,AS_ENTRIES:r})}),i=o.prototype,s=ly(t),a=function(l,c,f){var p=s(l),d=u(l,c),h,b;return d?d.value=f:(p.last=d={index:b=nR(c,!0),key:c,value:f,previous:h=p.last,next:void 0,removed:!1},p.first||(p.first=d),h&&(h.next=d),Wa?p.size++:l.size++,b!=="F"&&(p.index[b]=d)),l},u=function(l,c){var f=s(l),p=nR(c),d;if(p!=="F")return f.index[p];for(d=f.first;d;d=d.next)if(d.key===c)return d};return rR(i,{clear:function(){for(var c=this,f=s(c),p=f.index,d=f.first;d;)d.removed=!0,d.previous&&(d.previous=d.previous.next=void 0),delete p[d.index],d=d.next;f.first=f.last=void 0,Wa?f.size=0:c.size=0},delete:function(l){var c=this,f=s(c),p=u(c,l);if(p){var d=p.next,h=p.previous;delete f.index[p.index],p.removed=!0,h&&(h.next=d),d&&(d.previous=h),f.first===p&&(f.first=d),f.last===p&&(f.last=h),Wa?f.size--:c.size--}return!!p},forEach:function(c){for(var f=s(this),p=HH(c,arguments.length>1?arguments[1]:void 0),d;d=d?d.next:f.first;)for(p(d.value,d.key,this);d&&d.removed;)d=d.previous},has:function(c){return!!u(this,c)}}),rR(i,r?{get:function(c){var f=u(this,c);return f&&f.value},set:function(c,f){return a(this,c===0?0:c,f)}}:{add:function(c){return a(this,c=c===0?0:c,c)}}),Wa&&WH(i,"size",{configurable:!0,get:function(){return s(this).size}}),o},setStrong:function(e,t,r){var n=t+" Iterator",o=ly(t),i=ly(n);JH(e,t,function(s,a){oR(this,{type:n,target:s,state:o(s),kind:a,last:void 0})},function(){for(var s=i(this),a=s.kind,u=s.last;u&&u.removed;)u=u.previous;return!s.target||!(s.last=u=u?u.next:s.state.first)?(s.target=void 0,wf(void 0,!0)):wf(a==="keys"?u.key:a==="values"?u.value:[u.key,u.value],!1)},r?"entries":"values",!r,!0),ZH(t)}}});var uR=g(()=>{"use strict";var YH=oN(),XH=aR();YH("Map",function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}},XH)});var cR=g(()=>{"use strict";uR()});var fR=g((Y0e,lR)=>{"use strict";lR.exports=function(e,t){return t===1?function(r,n){return r[e](n)}:function(r,n,o){return r[e](n,o)}}});var mR=g((X0e,dR)=>{"use strict";var QH=Eo(),Ef=fR(),pR=QH("Map");dR.exports={Map:pR,set:Ef("set",2),get:Ef("get",1),has:Ef("has",1),remove:Ef("delete",1),proto:pR.prototype}});var hR=g(()=>{"use strict";var eK=_o(),tK=pt(),rK=So(),nK=Aa(),oK=ja(),Sf=mR(),iK=Na(),sK=Sf.Map,aK=Sf.has,uK=Sf.get,cK=Sf.set,lK=tK([].push);eK({target:"Map",stat:!0,forced:iK},{groupBy:function(t,r){nK(t),rK(r);var n=new sK,o=0;return oK(t,function(i){var s=r(i,o++);aK(n,s)?lK(uK(n,s),i):cK(n,s,[i])}),n}})});var bR=g((txe,yR)=>{"use strict";cR();hR();var fK=Xr(),pK=Je(),dK=ka(),gR=dK.Map,mK=gR.groupBy;yR.exports=function(t,r,n){return fK(mK,pK(this)?this:gR,t,r,n)}});var xR=g((rxe,vR)=>{"use strict";var hK=bR();vR.exports=hK});var wR=g(()=>{"use strict";var gK=_o(),yK=tr(),bK=Ba();gK({target:"Object",stat:!0,sham:!yK},{create:bK})});var ER=g(()=>{"use strict";var vK=_o(),xK=Eo(),wK=pt(),EK=So(),SK=Aa(),IK=Ra(),_K=ja(),CK=xK("Object","create"),TK=wK([].push);vK({target:"Object",stat:!0},{groupBy:function(t,r){SK(t),EK(r);var n=CK(null),o=0;return _K(t,function(i){var s=IK(r(i,o++));s in n?TK(n[s],i):n[s]=[i]}),n}})});var IR=g((axe,SR)=>{"use strict";wR();ER();var OK=ka();SR.exports=OK.Object.groupBy});var CR=g((uxe,_R)=>{"use strict";var AK=IR();_R.exports=AK});var KR=g(HR=>{"use strict";var qi=(S(),Ed(lr));function KK(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var VK=typeof Object.is=="function"?Object.is:KK,GK=qi.useState,JK=qi.useEffect,ZK=qi.useLayoutEffect,YK=qi.useDebugValue;function XK(e,t){var r=t(),n=GK({inst:{value:r,getSnapshot:t}}),o=n[0].inst,i=n[1];return ZK(function(){o.value=r,o.getSnapshot=t,Ay(o)&&i({inst:o})},[e,r,t]),JK(function(){return Ay(o)&&i({inst:o}),e(function(){Ay(o)&&i({inst:o})})},[e]),YK(r),r}function Ay(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!VK(e,r)}catch{return!0}}function QK(e,t){return t()}var eV=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?QK:XK;HR.useSyncExternalStore=qi.useSyncExternalStore!==void 0?qi.useSyncExternalStore:eV});var GR=g((kEe,VR)=>{"use strict";VR.exports=KR()});var ZR=g(JR=>{"use strict";var $f=(S(),Ed(lr)),tV=GR();function rV(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var nV=typeof Object.is=="function"?Object.is:rV,oV=tV.useSyncExternalStore,iV=$f.useRef,sV=$f.useEffect,aV=$f.useMemo,uV=$f.useDebugValue;JR.useSyncExternalStoreWithSelector=function(e,t,r,n,o){var i=iV(null);if(i.current===null){var s={hasValue:!1,value:null};i.current=s}else s=i.current;i=aV(function(){function u(d){if(!l){if(l=!0,c=d,d=n(d),o!==void 0&&s.hasValue){var h=s.value;if(o(h,d))return f=h}return f=d}if(h=f,nV(c,d))return h;var b=n(d);return o!==void 0&&o(h,b)?h:(c=d,f=b)}var l=!1,c,f,p=r===void 0?null:r;return[function(){return u(t())},p===null?void 0:function(){return u(p())}]},[t,r,n,o]);var a=oV(e,i[0],i[1]);return sV(function(){s.hasValue=!0,s.value=a},[a]),uV(a),a}});var XR=g((REe,YR)=>{"use strict";YR.exports=ZR()});var Ln=g((EAe,on)=>{function sb(){return on.exports=sb=Object.assign?Object.assign.bind():function(e){for(var t=1;t{function mb(e){return sn.exports=mb=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},sn.exports.__esModule=!0,sn.exports.default=sn.exports,mb(e)}sn.exports=mb,sn.exports.__esModule=!0,sn.exports.default=sn.exports});var YP=g((tke,cu)=>{var ZP=tp().default;function GJ(e,t){if(ZP(e)!=="object"||e===null)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var n=r.call(e,t||"default");if(ZP(n)!=="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}cu.exports=GJ,cu.exports.__esModule=!0,cu.exports.default=cu.exports});var XP=g((rke,lu)=>{var JJ=tp().default,ZJ=YP();function YJ(e){var t=ZJ(e,"string");return JJ(t)==="symbol"?t:String(t)}lu.exports=YJ,lu.exports.__esModule=!0,lu.exports.default=lu.exports});var QP=g((nke,fu)=>{var XJ=XP();function QJ(e,t,r){return t=XJ(t),t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}fu.exports=QJ,fu.exports.__esModule=!0,fu.exports.default=fu.exports});var eF=g((oke,pu)=>{function eZ(e){if(Array.isArray(e))return e}pu.exports=eZ,pu.exports.__esModule=!0,pu.exports.default=pu.exports});var tF=g((ike,du)=>{function tZ(e,t){var r=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(r!=null){var n,o,i,s,a=[],u=!0,l=!1;try{if(i=(r=r.call(e)).next,t===0){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=i.call(r)).done)&&(a.push(n.value),a.length!==t);u=!0);}catch(c){l=!0,o=c}finally{try{if(!u&&r.return!=null&&(s=r.return(),Object(s)!==s))return}finally{if(l)throw o}}return a}}du.exports=tZ,du.exports.__esModule=!0,du.exports.default=du.exports});var rF=g((ske,mu)=>{function rZ(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r{var nF=rF();function nZ(e,t){if(e){if(typeof e=="string")return nF(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return nF(e,t)}}hu.exports=nZ,hu.exports.__esModule=!0,hu.exports.default=hu.exports});var iF=g((uke,gu)=>{function oZ(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}gu.exports=oZ,gu.exports.__esModule=!0,gu.exports.default=gu.exports});var sF=g((cke,yu)=>{var iZ=eF(),sZ=tF(),aZ=oF(),uZ=iF();function cZ(e,t){return iZ(e)||sZ(e,t)||aZ(e,t)||uZ()}yu.exports=cZ,yu.exports.__esModule=!0,yu.exports.default=yu.exports});var uF=g((rp,aF)=>{"use strict";rp.__esModule=!0;rp.default={scheme:"threezerotwofour",author:"jan t. sott (http://github.com/idleberg)",base00:"#090300",base01:"#3a3432",base02:"#4a4543",base03:"#5c5855",base04:"#807d7c",base05:"#a5a2a2",base06:"#d6d5d4",base07:"#f7f7f7",base08:"#db2d20",base09:"#e8bbd0",base0A:"#fded02",base0B:"#01a252",base0C:"#b5e4f4",base0D:"#01a0e4",base0E:"#a16a94",base0F:"#cdab53"};aF.exports=rp.default});var lF=g((np,cF)=>{"use strict";np.__esModule=!0;np.default={scheme:"apathy",author:"jannik siebert (https://github.com/janniks)",base00:"#031A16",base01:"#0B342D",base02:"#184E45",base03:"#2B685E",base04:"#5F9C92",base05:"#81B5AC",base06:"#A7CEC8",base07:"#D2E7E4",base08:"#3E9688",base09:"#3E7996",base0A:"#3E4C96",base0B:"#883E96",base0C:"#963E4C",base0D:"#96883E",base0E:"#4C963E",base0F:"#3E965B"};cF.exports=np.default});var pF=g((op,fF)=>{"use strict";op.__esModule=!0;op.default={scheme:"ashes",author:"jannik siebert (https://github.com/janniks)",base00:"#1C2023",base01:"#393F45",base02:"#565E65",base03:"#747C84",base04:"#ADB3BA",base05:"#C7CCD1",base06:"#DFE2E5",base07:"#F3F4F5",base08:"#C7AE95",base09:"#C7C795",base0A:"#AEC795",base0B:"#95C7AE",base0C:"#95AEC7",base0D:"#AE95C7",base0E:"#C795AE",base0F:"#C79595"};fF.exports=op.default});var mF=g((ip,dF)=>{"use strict";ip.__esModule=!0;ip.default={scheme:"atelier dune",author:"bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune)",base00:"#20201d",base01:"#292824",base02:"#6e6b5e",base03:"#7d7a68",base04:"#999580",base05:"#a6a28c",base06:"#e8e4cf",base07:"#fefbec",base08:"#d73737",base09:"#b65611",base0A:"#cfb017",base0B:"#60ac39",base0C:"#1fad83",base0D:"#6684e1",base0E:"#b854d4",base0F:"#d43552"};dF.exports=ip.default});var gF=g((sp,hF)=>{"use strict";sp.__esModule=!0;sp.default={scheme:"atelier forest",author:"bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest)",base00:"#1b1918",base01:"#2c2421",base02:"#68615e",base03:"#766e6b",base04:"#9c9491",base05:"#a8a19f",base06:"#e6e2e0",base07:"#f1efee",base08:"#f22c40",base09:"#df5320",base0A:"#d5911a",base0B:"#5ab738",base0C:"#00ad9c",base0D:"#407ee7",base0E:"#6666ea",base0F:"#c33ff3"};hF.exports=sp.default});var bF=g((ap,yF)=>{"use strict";ap.__esModule=!0;ap.default={scheme:"atelier heath",author:"bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath)",base00:"#1b181b",base01:"#292329",base02:"#695d69",base03:"#776977",base04:"#9e8f9e",base05:"#ab9bab",base06:"#d8cad8",base07:"#f7f3f7",base08:"#ca402b",base09:"#a65926",base0A:"#bb8a35",base0B:"#379a37",base0C:"#159393",base0D:"#516aec",base0E:"#7b59c0",base0F:"#cc33cc"};yF.exports=ap.default});var xF=g((up,vF)=>{"use strict";up.__esModule=!0;up.default={scheme:"atelier lakeside",author:"bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside/)",base00:"#161b1d",base01:"#1f292e",base02:"#516d7b",base03:"#5a7b8c",base04:"#7195a8",base05:"#7ea2b4",base06:"#c1e4f6",base07:"#ebf8ff",base08:"#d22d72",base09:"#935c25",base0A:"#8a8a0f",base0B:"#568c3b",base0C:"#2d8f6f",base0D:"#257fad",base0E:"#5d5db1",base0F:"#b72dd2"};vF.exports=up.default});var EF=g((cp,wF)=>{"use strict";cp.__esModule=!0;cp.default={scheme:"atelier seaside",author:"bram de haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside/)",base00:"#131513",base01:"#242924",base02:"#5e6e5e",base03:"#687d68",base04:"#809980",base05:"#8ca68c",base06:"#cfe8cf",base07:"#f0fff0",base08:"#e6193c",base09:"#87711d",base0A:"#c3c322",base0B:"#29a329",base0C:"#1999b3",base0D:"#3d62f5",base0E:"#ad2bee",base0F:"#e619c3"};wF.exports=cp.default});var IF=g((lp,SF)=>{"use strict";lp.__esModule=!0;lp.default={scheme:"bespin",author:"jan t. sott",base00:"#28211c",base01:"#36312e",base02:"#5e5d5c",base03:"#666666",base04:"#797977",base05:"#8a8986",base06:"#9d9b97",base07:"#baae9e",base08:"#cf6a4c",base09:"#cf7d34",base0A:"#f9ee98",base0B:"#54be0d",base0C:"#afc4db",base0D:"#5ea6ea",base0E:"#9b859d",base0F:"#937121"};SF.exports=lp.default});var CF=g((fp,_F)=>{"use strict";fp.__esModule=!0;fp.default={scheme:"brewer",author:"timoth\xE9e poisot (http://github.com/tpoisot)",base00:"#0c0d0e",base01:"#2e2f30",base02:"#515253",base03:"#737475",base04:"#959697",base05:"#b7b8b9",base06:"#dadbdc",base07:"#fcfdfe",base08:"#e31a1c",base09:"#e6550d",base0A:"#dca060",base0B:"#31a354",base0C:"#80b1d3",base0D:"#3182bd",base0E:"#756bb1",base0F:"#b15928"};_F.exports=fp.default});var OF=g((pp,TF)=>{"use strict";pp.__esModule=!0;pp.default={scheme:"bright",author:"chris kempson (http://chriskempson.com)",base00:"#000000",base01:"#303030",base02:"#505050",base03:"#b0b0b0",base04:"#d0d0d0",base05:"#e0e0e0",base06:"#f5f5f5",base07:"#ffffff",base08:"#fb0120",base09:"#fc6d24",base0A:"#fda331",base0B:"#a1c659",base0C:"#76c7b7",base0D:"#6fb3d2",base0E:"#d381c3",base0F:"#be643c"};TF.exports=pp.default});var kF=g((dp,AF)=>{"use strict";dp.__esModule=!0;dp.default={scheme:"chalk",author:"chris kempson (http://chriskempson.com)",base00:"#151515",base01:"#202020",base02:"#303030",base03:"#505050",base04:"#b0b0b0",base05:"#d0d0d0",base06:"#e0e0e0",base07:"#f5f5f5",base08:"#fb9fb1",base09:"#eda987",base0A:"#ddb26f",base0B:"#acc267",base0C:"#12cfc0",base0D:"#6fc2ef",base0E:"#e1a3ee",base0F:"#deaf8f"};AF.exports=dp.default});var RF=g((mp,NF)=>{"use strict";mp.__esModule=!0;mp.default={scheme:"codeschool",author:"brettof86",base00:"#232c31",base01:"#1c3657",base02:"#2a343a",base03:"#3f4944",base04:"#84898c",base05:"#9ea7a6",base06:"#a7cfa3",base07:"#b5d8f6",base08:"#2a5491",base09:"#43820d",base0A:"#a03b1e",base0B:"#237986",base0C:"#b02f30",base0D:"#484d79",base0E:"#c59820",base0F:"#c98344"};NF.exports=mp.default});var PF=g((hp,DF)=>{"use strict";hp.__esModule=!0;hp.default={scheme:"colors",author:"mrmrs (http://clrs.cc)",base00:"#111111",base01:"#333333",base02:"#555555",base03:"#777777",base04:"#999999",base05:"#bbbbbb",base06:"#dddddd",base07:"#ffffff",base08:"#ff4136",base09:"#ff851b",base0A:"#ffdc00",base0B:"#2ecc40",base0C:"#7fdbff",base0D:"#0074d9",base0E:"#b10dc9",base0F:"#85144b"};DF.exports=hp.default});var $F=g((gp,FF)=>{"use strict";gp.__esModule=!0;gp.default={scheme:"default",author:"chris kempson (http://chriskempson.com)",base00:"#181818",base01:"#282828",base02:"#383838",base03:"#585858",base04:"#b8b8b8",base05:"#d8d8d8",base06:"#e8e8e8",base07:"#f8f8f8",base08:"#ab4642",base09:"#dc9656",base0A:"#f7ca88",base0B:"#a1b56c",base0C:"#86c1b9",base0D:"#7cafc2",base0E:"#ba8baf",base0F:"#a16946"};FF.exports=gp.default});var jF=g((yp,MF)=>{"use strict";yp.__esModule=!0;yp.default={scheme:"eighties",author:"chris kempson (http://chriskempson.com)",base00:"#2d2d2d",base01:"#393939",base02:"#515151",base03:"#747369",base04:"#a09f93",base05:"#d3d0c8",base06:"#e8e6df",base07:"#f2f0ec",base08:"#f2777a",base09:"#f99157",base0A:"#ffcc66",base0B:"#99cc99",base0C:"#66cccc",base0D:"#6699cc",base0E:"#cc99cc",base0F:"#d27b53"};MF.exports=yp.default});var qF=g((bp,LF)=>{"use strict";bp.__esModule=!0;bp.default={scheme:"embers",author:"jannik siebert (https://github.com/janniks)",base00:"#16130F",base01:"#2C2620",base02:"#433B32",base03:"#5A5047",base04:"#8A8075",base05:"#A39A90",base06:"#BEB6AE",base07:"#DBD6D1",base08:"#826D57",base09:"#828257",base0A:"#6D8257",base0B:"#57826D",base0C:"#576D82",base0D:"#6D5782",base0E:"#82576D",base0F:"#825757"};LF.exports=bp.default});var zF=g((vp,BF)=>{"use strict";vp.__esModule=!0;vp.default={scheme:"flat",author:"chris kempson (http://chriskempson.com)",base00:"#2C3E50",base01:"#34495E",base02:"#7F8C8D",base03:"#95A5A6",base04:"#BDC3C7",base05:"#e0e0e0",base06:"#f5f5f5",base07:"#ECF0F1",base08:"#E74C3C",base09:"#E67E22",base0A:"#F1C40F",base0B:"#2ECC71",base0C:"#1ABC9C",base0D:"#3498DB",base0E:"#9B59B6",base0F:"#be643c"};BF.exports=vp.default});var WF=g((xp,UF)=>{"use strict";xp.__esModule=!0;xp.default={scheme:"google",author:"seth wright (http://sethawright.com)",base00:"#1d1f21",base01:"#282a2e",base02:"#373b41",base03:"#969896",base04:"#b4b7b4",base05:"#c5c8c6",base06:"#e0e0e0",base07:"#ffffff",base08:"#CC342B",base09:"#F96A38",base0A:"#FBA922",base0B:"#198844",base0C:"#3971ED",base0D:"#3971ED",base0E:"#A36AC7",base0F:"#3971ED"};UF.exports=xp.default});var KF=g((wp,HF)=>{"use strict";wp.__esModule=!0;wp.default={scheme:"grayscale",author:"alexandre gavioli (https://github.com/alexx2/)",base00:"#101010",base01:"#252525",base02:"#464646",base03:"#525252",base04:"#ababab",base05:"#b9b9b9",base06:"#e3e3e3",base07:"#f7f7f7",base08:"#7c7c7c",base09:"#999999",base0A:"#a0a0a0",base0B:"#8e8e8e",base0C:"#868686",base0D:"#686868",base0E:"#747474",base0F:"#5e5e5e"};HF.exports=wp.default});var GF=g((Ep,VF)=>{"use strict";Ep.__esModule=!0;Ep.default={scheme:"green screen",author:"chris kempson (http://chriskempson.com)",base00:"#001100",base01:"#003300",base02:"#005500",base03:"#007700",base04:"#009900",base05:"#00bb00",base06:"#00dd00",base07:"#00ff00",base08:"#007700",base09:"#009900",base0A:"#007700",base0B:"#00bb00",base0C:"#005500",base0D:"#009900",base0E:"#00bb00",base0F:"#005500"};VF.exports=Ep.default});var ZF=g((Sp,JF)=>{"use strict";Sp.__esModule=!0;Sp.default={scheme:"harmonic16",author:"jannik siebert (https://github.com/janniks)",base00:"#0b1c2c",base01:"#223b54",base02:"#405c79",base03:"#627e99",base04:"#aabcce",base05:"#cbd6e2",base06:"#e5ebf1",base07:"#f7f9fb",base08:"#bf8b56",base09:"#bfbf56",base0A:"#8bbf56",base0B:"#56bf8b",base0C:"#568bbf",base0D:"#8b56bf",base0E:"#bf568b",base0F:"#bf5656"};JF.exports=Sp.default});var XF=g((Ip,YF)=>{"use strict";Ip.__esModule=!0;Ip.default={scheme:"hopscotch",author:"jan t. sott",base00:"#322931",base01:"#433b42",base02:"#5c545b",base03:"#797379",base04:"#989498",base05:"#b9b5b8",base06:"#d5d3d5",base07:"#ffffff",base08:"#dd464c",base09:"#fd8b19",base0A:"#fdcc59",base0B:"#8fc13e",base0C:"#149b93",base0D:"#1290bf",base0E:"#c85e7c",base0F:"#b33508"};YF.exports=Ip.default});var e$=g((_p,QF)=>{"use strict";_p.__esModule=!0;_p.default={scheme:"isotope",author:"jan t. sott",base00:"#000000",base01:"#404040",base02:"#606060",base03:"#808080",base04:"#c0c0c0",base05:"#d0d0d0",base06:"#e0e0e0",base07:"#ffffff",base08:"#ff0000",base09:"#ff9900",base0A:"#ff0099",base0B:"#33ff00",base0C:"#00ffff",base0D:"#0066ff",base0E:"#cc00ff",base0F:"#3300ff"};QF.exports=_p.default});var r$=g((Cp,t$)=>{"use strict";Cp.__esModule=!0;Cp.default={scheme:"marrakesh",author:"alexandre gavioli (http://github.com/alexx2/)",base00:"#201602",base01:"#302e00",base02:"#5f5b17",base03:"#6c6823",base04:"#86813b",base05:"#948e48",base06:"#ccc37a",base07:"#faf0a5",base08:"#c35359",base09:"#b36144",base0A:"#a88339",base0B:"#18974e",base0C:"#75a738",base0D:"#477ca1",base0E:"#8868b3",base0F:"#b3588e"};t$.exports=Cp.default});var o$=g((Tp,n$)=>{"use strict";Tp.__esModule=!0;Tp.default={scheme:"mocha",author:"chris kempson (http://chriskempson.com)",base00:"#3B3228",base01:"#534636",base02:"#645240",base03:"#7e705a",base04:"#b8afad",base05:"#d0c8c6",base06:"#e9e1dd",base07:"#f5eeeb",base08:"#cb6077",base09:"#d28b71",base0A:"#f4bc87",base0B:"#beb55b",base0C:"#7bbda4",base0D:"#8ab3b5",base0E:"#a89bb9",base0F:"#bb9584"};n$.exports=Tp.default});var s$=g((Op,i$)=>{"use strict";Op.__esModule=!0;Op.default={scheme:"monokai",author:"wimer hazenberg (http://www.monokai.nl)",base00:"#272822",base01:"#383830",base02:"#49483e",base03:"#75715e",base04:"#a59f85",base05:"#f8f8f2",base06:"#f5f4f1",base07:"#f9f8f5",base08:"#f92672",base09:"#fd971f",base0A:"#f4bf75",base0B:"#a6e22e",base0C:"#a1efe4",base0D:"#66d9ef",base0E:"#ae81ff",base0F:"#cc6633"};i$.exports=Op.default});var u$=g((Ap,a$)=>{"use strict";Ap.__esModule=!0;Ap.default={scheme:"ocean",author:"chris kempson (http://chriskempson.com)",base00:"#2b303b",base01:"#343d46",base02:"#4f5b66",base03:"#65737e",base04:"#a7adba",base05:"#c0c5ce",base06:"#dfe1e8",base07:"#eff1f5",base08:"#bf616a",base09:"#d08770",base0A:"#ebcb8b",base0B:"#a3be8c",base0C:"#96b5b4",base0D:"#8fa1b3",base0E:"#b48ead",base0F:"#ab7967"};a$.exports=Ap.default});var l$=g((kp,c$)=>{"use strict";kp.__esModule=!0;kp.default={scheme:"paraiso",author:"jan t. sott",base00:"#2f1e2e",base01:"#41323f",base02:"#4f424c",base03:"#776e71",base04:"#8d8687",base05:"#a39e9b",base06:"#b9b6b0",base07:"#e7e9db",base08:"#ef6155",base09:"#f99b15",base0A:"#fec418",base0B:"#48b685",base0C:"#5bc4bf",base0D:"#06b6ef",base0E:"#815ba4",base0F:"#e96ba8"};c$.exports=kp.default});var p$=g((Np,f$)=>{"use strict";Np.__esModule=!0;Np.default={scheme:"pop",author:"chris kempson (http://chriskempson.com)",base00:"#000000",base01:"#202020",base02:"#303030",base03:"#505050",base04:"#b0b0b0",base05:"#d0d0d0",base06:"#e0e0e0",base07:"#ffffff",base08:"#eb008a",base09:"#f29333",base0A:"#f8ca12",base0B:"#37b349",base0C:"#00aabb",base0D:"#0e5a94",base0E:"#b31e8d",base0F:"#7a2d00"};f$.exports=Np.default});var m$=g((Rp,d$)=>{"use strict";Rp.__esModule=!0;Rp.default={scheme:"railscasts",author:"ryan bates (http://railscasts.com)",base00:"#2b2b2b",base01:"#272935",base02:"#3a4055",base03:"#5a647e",base04:"#d4cfc9",base05:"#e6e1dc",base06:"#f4f1ed",base07:"#f9f7f3",base08:"#da4939",base09:"#cc7833",base0A:"#ffc66d",base0B:"#a5c261",base0C:"#519f50",base0D:"#6d9cbe",base0E:"#b6b3eb",base0F:"#bc9458"};d$.exports=Rp.default});var g$=g((Dp,h$)=>{"use strict";Dp.__esModule=!0;Dp.default={scheme:"shapeshifter",author:"tyler benziger (http://tybenz.com)",base00:"#000000",base01:"#040404",base02:"#102015",base03:"#343434",base04:"#555555",base05:"#ababab",base06:"#e0e0e0",base07:"#f9f9f9",base08:"#e92f2f",base09:"#e09448",base0A:"#dddd13",base0B:"#0ed839",base0C:"#23edda",base0D:"#3b48e3",base0E:"#f996e2",base0F:"#69542d"};h$.exports=Dp.default});var b$=g((Pp,y$)=>{"use strict";Pp.__esModule=!0;Pp.default={scheme:"solarized",author:"ethan schoonover (http://ethanschoonover.com/solarized)",base00:"#002b36",base01:"#073642",base02:"#586e75",base03:"#657b83",base04:"#839496",base05:"#93a1a1",base06:"#eee8d5",base07:"#fdf6e3",base08:"#dc322f",base09:"#cb4b16",base0A:"#b58900",base0B:"#859900",base0C:"#2aa198",base0D:"#268bd2",base0E:"#6c71c4",base0F:"#d33682"};y$.exports=Pp.default});var x$=g((Fp,v$)=>{"use strict";Fp.__esModule=!0;Fp.default={scheme:"summerfruit",author:"christopher corley (http://cscorley.github.io/)",base00:"#151515",base01:"#202020",base02:"#303030",base03:"#505050",base04:"#B0B0B0",base05:"#D0D0D0",base06:"#E0E0E0",base07:"#FFFFFF",base08:"#FF0086",base09:"#FD8900",base0A:"#ABA800",base0B:"#00C918",base0C:"#1faaaa",base0D:"#3777E6",base0E:"#AD00A1",base0F:"#cc6633"};v$.exports=Fp.default});var E$=g(($p,w$)=>{"use strict";$p.__esModule=!0;$p.default={scheme:"tomorrow",author:"chris kempson (http://chriskempson.com)",base00:"#1d1f21",base01:"#282a2e",base02:"#373b41",base03:"#969896",base04:"#b4b7b4",base05:"#c5c8c6",base06:"#e0e0e0",base07:"#ffffff",base08:"#cc6666",base09:"#de935f",base0A:"#f0c674",base0B:"#b5bd68",base0C:"#8abeb7",base0D:"#81a2be",base0E:"#b294bb",base0F:"#a3685a"};w$.exports=$p.default});var I$=g((Mp,S$)=>{"use strict";Mp.__esModule=!0;Mp.default={scheme:"london tube",author:"jan t. sott",base00:"#231f20",base01:"#1c3f95",base02:"#5a5758",base03:"#737171",base04:"#959ca1",base05:"#d9d8d8",base06:"#e7e7e8",base07:"#ffffff",base08:"#ee2e24",base09:"#f386a1",base0A:"#ffd204",base0B:"#00853e",base0C:"#85cebc",base0D:"#009ddc",base0E:"#98005d",base0F:"#b06110"};S$.exports=Mp.default});var C$=g((jp,_$)=>{"use strict";jp.__esModule=!0;jp.default={scheme:"twilight",author:"david hart (http://hart-dev.com)",base00:"#1e1e1e",base01:"#323537",base02:"#464b50",base03:"#5f5a60",base04:"#838184",base05:"#a7a7a7",base06:"#c3c3c3",base07:"#ffffff",base08:"#cf6a4c",base09:"#cda869",base0A:"#f9ee98",base0B:"#8f9d6a",base0C:"#afc4db",base0D:"#7587a6",base0E:"#9b859d",base0F:"#9b703f"};_$.exports=jp.default});var T$=g(ie=>{"use strict";ie.__esModule=!0;function se(e){return e&&e.__esModule?e.default:e}var lZ=uF();ie.threezerotwofour=se(lZ);var fZ=lF();ie.apathy=se(fZ);var pZ=pF();ie.ashes=se(pZ);var dZ=mF();ie.atelierDune=se(dZ);var mZ=gF();ie.atelierForest=se(mZ);var hZ=bF();ie.atelierHeath=se(hZ);var gZ=xF();ie.atelierLakeside=se(gZ);var yZ=EF();ie.atelierSeaside=se(yZ);var bZ=IF();ie.bespin=se(bZ);var vZ=CF();ie.brewer=se(vZ);var xZ=OF();ie.bright=se(xZ);var wZ=kF();ie.chalk=se(wZ);var EZ=RF();ie.codeschool=se(EZ);var SZ=PF();ie.colors=se(SZ);var IZ=$F();ie.default=se(IZ);var _Z=jF();ie.eighties=se(_Z);var CZ=qF();ie.embers=se(CZ);var TZ=zF();ie.flat=se(TZ);var OZ=WF();ie.google=se(OZ);var AZ=KF();ie.grayscale=se(AZ);var kZ=GF();ie.greenscreen=se(kZ);var NZ=ZF();ie.harmonic=se(NZ);var RZ=XF();ie.hopscotch=se(RZ);var DZ=e$();ie.isotope=se(DZ);var PZ=r$();ie.marrakesh=se(PZ);var FZ=o$();ie.mocha=se(FZ);var $Z=s$();ie.monokai=se($Z);var MZ=u$();ie.ocean=se(MZ);var jZ=l$();ie.paraiso=se(jZ);var LZ=p$();ie.pop=se(LZ);var qZ=m$();ie.railscasts=se(qZ);var BZ=g$();ie.shapeshifter=se(BZ);var zZ=b$();ie.solarized=se(zZ);var UZ=x$();ie.summerfruit=se(UZ);var WZ=E$();ie.tomorrow=se(WZ);var HZ=I$();ie.tube=se(HZ);var KZ=C$();ie.twilight=se(KZ)});var A$=g((fke,O$)=>{"use strict";O$.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var N$=g((pke,k$)=>{k$.exports=function(t){return!t||typeof t=="string"?!1:t instanceof Array||Array.isArray(t)||t.length>=0&&(t.splice instanceof Function||Object.getOwnPropertyDescriptor(t,t.length-1)&&t.constructor.name!=="String")}});var P$=g((dke,D$)=>{"use strict";var VZ=N$(),GZ=Array.prototype.concat,JZ=Array.prototype.slice,R$=D$.exports=function(t){for(var r=[],n=0,o=t.length;n{var bu=A$(),vu=P$(),F$=Object.hasOwnProperty,$$=Object.create(null);for(Lp in bu)F$.call(bu,Lp)&&($$[bu[Lp]]=Lp);var Lp,Mt=M$.exports={to:{},get:{}};Mt.get=function(e){var t=e.substring(0,3).toLowerCase(),r,n;switch(t){case"hsl":r=Mt.get.hsl(e),n="hsl";break;case"hwb":r=Mt.get.hwb(e),n="hwb";break;default:r=Mt.get.rgb(e),n="rgb";break}return r?{model:n,value:r}:null};Mt.get.rgb=function(e){if(!e)return null;var t=/^#([a-f0-9]{3,4})$/i,r=/^#([a-f0-9]{6})([a-f0-9]{2})?$/i,n=/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/,o=/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/,i=/^(\w+)$/,s=[0,0,0,1],a,u,l;if(a=e.match(r)){for(l=a[2],a=a[1],u=0;u<3;u++){var c=u*2;s[u]=parseInt(a.slice(c,c+2),16)}l&&(s[3]=parseInt(l,16)/255)}else if(a=e.match(t)){for(a=a[1],l=a[3],u=0;u<3;u++)s[u]=parseInt(a[u]+a[u],16);l&&(s[3]=parseInt(l+l,16)/255)}else if(a=e.match(n)){for(u=0;u<3;u++)s[u]=parseInt(a[u+1],0);a[4]&&(a[5]?s[3]=parseFloat(a[4])*.01:s[3]=parseFloat(a[4]))}else if(a=e.match(o)){for(u=0;u<3;u++)s[u]=Math.round(parseFloat(a[u+1])*2.55);a[4]&&(a[5]?s[3]=parseFloat(a[4])*.01:s[3]=parseFloat(a[4]))}else return(a=e.match(i))?a[1]==="transparent"?[0,0,0,0]:F$.call(bu,a[1])?(s=bu[a[1]],s[3]=1,s):null:null;for(u=0;u<3;u++)s[u]=Bn(s[u],0,255);return s[3]=Bn(s[3],0,1),s};Mt.get.hsl=function(e){if(!e)return null;var t=/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/,r=e.match(t);if(r){var n=parseFloat(r[4]),o=(parseFloat(r[1])%360+360)%360,i=Bn(parseFloat(r[2]),0,100),s=Bn(parseFloat(r[3]),0,100),a=Bn(isNaN(n)?1:n,0,1);return[o,i,s,a]}return null};Mt.get.hwb=function(e){if(!e)return null;var t=/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/,r=e.match(t);if(r){var n=parseFloat(r[4]),o=(parseFloat(r[1])%360+360)%360,i=Bn(parseFloat(r[2]),0,100),s=Bn(parseFloat(r[3]),0,100),a=Bn(isNaN(n)?1:n,0,1);return[o,i,s,a]}return null};Mt.to.hex=function(){var e=vu(arguments);return"#"+qp(e[0])+qp(e[1])+qp(e[2])+(e[3]<1?qp(Math.round(e[3]*255)):"")};Mt.to.rgb=function(){var e=vu(arguments);return e.length<4||e[3]===1?"rgb("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+")":"rgba("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+", "+e[3]+")"};Mt.to.rgb.percent=function(){var e=vu(arguments),t=Math.round(e[0]/255*100),r=Math.round(e[1]/255*100),n=Math.round(e[2]/255*100);return e.length<4||e[3]===1?"rgb("+t+"%, "+r+"%, "+n+"%)":"rgba("+t+"%, "+r+"%, "+n+"%, "+e[3]+")"};Mt.to.hsl=function(){var e=vu(arguments);return e.length<4||e[3]===1?"hsl("+e[0]+", "+e[1]+"%, "+e[2]+"%)":"hsla("+e[0]+", "+e[1]+"%, "+e[2]+"%, "+e[3]+")"};Mt.to.hwb=function(){var e=vu(arguments),t="";return e.length>=4&&e[3]!==1&&(t=", "+e[3]),"hwb("+e[0]+", "+e[1]+"%, "+e[2]+"%"+t+")"};Mt.to.keyword=function(e){return $$[e.slice(0,3)]};function Bn(e,t,r){return Math.min(Math.max(t,e),r)}function qp(e){var t=Math.round(e).toString(16).toUpperCase();return t.length<2?"0"+t:t}});var q$=g((hke,L$)=>{"use strict";L$.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var hb=g((gke,W$)=>{var Mo=q$(),U$={};for(Bp in Mo)Mo.hasOwnProperty(Bp)&&(U$[Mo[Bp]]=Bp);var Bp,L=W$.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(mt in L)if(L.hasOwnProperty(mt)){if(!("channels"in L[mt]))throw new Error("missing channels property: "+mt);if(!("labels"in L[mt]))throw new Error("missing channel labels property: "+mt);if(L[mt].labels.length!==L[mt].channels)throw new Error("channel and label counts mismatch: "+mt);B$=L[mt].channels,z$=L[mt].labels,delete L[mt].channels,delete L[mt].labels,Object.defineProperty(L[mt],"channels",{value:B$}),Object.defineProperty(L[mt],"labels",{value:z$})}var B$,z$,mt;L.rgb.hsl=function(e){var t=e[0]/255,r=e[1]/255,n=e[2]/255,o=Math.min(t,r,n),i=Math.max(t,r,n),s=i-o,a,u,l;return i===o?a=0:t===i?a=(r-n)/s:r===i?a=2+(n-t)/s:n===i&&(a=4+(t-r)/s),a=Math.min(a*60,360),a<0&&(a+=360),l=(o+i)/2,i===o?u=0:l<=.5?u=s/(i+o):u=s/(2-i-o),[a,u*100,l*100]};L.rgb.hsv=function(e){var t,r,n,o,i,s=e[0]/255,a=e[1]/255,u=e[2]/255,l=Math.max(s,a,u),c=l-Math.min(s,a,u),f=function(p){return(l-p)/6/c+1/2};return c===0?o=i=0:(i=c/l,t=f(s),r=f(a),n=f(u),s===l?o=n-r:a===l?o=1/3+t-n:u===l&&(o=2/3+r-t),o<0?o+=1:o>1&&(o-=1)),[o*360,i*100,l*100]};L.rgb.hwb=function(e){var t=e[0],r=e[1],n=e[2],o=L.rgb.hsl(e)[0],i=1/255*Math.min(t,Math.min(r,n));return n=1-1/255*Math.max(t,Math.max(r,n)),[o,i*100,n*100]};L.rgb.cmyk=function(e){var t=e[0]/255,r=e[1]/255,n=e[2]/255,o,i,s,a;return a=Math.min(1-t,1-r,1-n),o=(1-t-a)/(1-a)||0,i=(1-r-a)/(1-a)||0,s=(1-n-a)/(1-a)||0,[o*100,i*100,s*100,a*100]};function ZZ(e,t){return Math.pow(e[0]-t[0],2)+Math.pow(e[1]-t[1],2)+Math.pow(e[2]-t[2],2)}L.rgb.keyword=function(e){var t=U$[e];if(t)return t;var r=1/0,n;for(var o in Mo)if(Mo.hasOwnProperty(o)){var i=Mo[o],s=ZZ(e,i);s.04045?Math.pow((t+.055)/1.055,2.4):t/12.92,r=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92,n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92;var o=t*.4124+r*.3576+n*.1805,i=t*.2126+r*.7152+n*.0722,s=t*.0193+r*.1192+n*.9505;return[o*100,i*100,s*100]};L.rgb.lab=function(e){var t=L.rgb.xyz(e),r=t[0],n=t[1],o=t[2],i,s,a;return r/=95.047,n/=100,o/=108.883,r=r>.008856?Math.pow(r,1/3):7.787*r+16/116,n=n>.008856?Math.pow(n,1/3):7.787*n+16/116,o=o>.008856?Math.pow(o,1/3):7.787*o+16/116,i=116*n-16,s=500*(r-n),a=200*(n-o),[i,s,a]};L.hsl.rgb=function(e){var t=e[0]/360,r=e[1]/100,n=e[2]/100,o,i,s,a,u;if(r===0)return u=n*255,[u,u,u];n<.5?i=n*(1+r):i=n+r-n*r,o=2*n-i,a=[0,0,0];for(var l=0;l<3;l++)s=t+1/3*-(l-1),s<0&&s++,s>1&&s--,6*s<1?u=o+(i-o)*6*s:2*s<1?u=i:3*s<2?u=o+(i-o)*(2/3-s)*6:u=o,a[l]=u*255;return a};L.hsl.hsv=function(e){var t=e[0],r=e[1]/100,n=e[2]/100,o=r,i=Math.max(n,.01),s,a;return n*=2,r*=n<=1?n:2-n,o*=i<=1?i:2-i,a=(n+r)/2,s=n===0?2*o/(i+o):2*r/(n+r),[t,s*100,a*100]};L.hsv.rgb=function(e){var t=e[0]/60,r=e[1]/100,n=e[2]/100,o=Math.floor(t)%6,i=t-Math.floor(t),s=255*n*(1-r),a=255*n*(1-r*i),u=255*n*(1-r*(1-i));switch(n*=255,o){case 0:return[n,u,s];case 1:return[a,n,s];case 2:return[s,n,u];case 3:return[s,a,n];case 4:return[u,s,n];case 5:return[n,s,a]}};L.hsv.hsl=function(e){var t=e[0],r=e[1]/100,n=e[2]/100,o=Math.max(n,.01),i,s,a;return a=(2-r)*n,i=(2-r)*o,s=r*o,s/=i<=1?i:2-i,s=s||0,a/=2,[t,s*100,a*100]};L.hwb.rgb=function(e){var t=e[0]/360,r=e[1]/100,n=e[2]/100,o=r+n,i,s,a,u;o>1&&(r/=o,n/=o),i=Math.floor(6*t),s=1-n,a=6*t-i,i&1&&(a=1-a),u=r+a*(s-r);var l,c,f;switch(i){default:case 6:case 0:l=s,c=u,f=r;break;case 1:l=u,c=s,f=r;break;case 2:l=r,c=s,f=u;break;case 3:l=r,c=u,f=s;break;case 4:l=u,c=r,f=s;break;case 5:l=s,c=r,f=u;break}return[l*255,c*255,f*255]};L.cmyk.rgb=function(e){var t=e[0]/100,r=e[1]/100,n=e[2]/100,o=e[3]/100,i,s,a;return i=1-Math.min(1,t*(1-o)+o),s=1-Math.min(1,r*(1-o)+o),a=1-Math.min(1,n*(1-o)+o),[i*255,s*255,a*255]};L.xyz.rgb=function(e){var t=e[0]/100,r=e[1]/100,n=e[2]/100,o,i,s;return o=t*3.2406+r*-1.5372+n*-.4986,i=t*-.9689+r*1.8758+n*.0415,s=t*.0557+r*-.204+n*1.057,o=o>.0031308?1.055*Math.pow(o,1/2.4)-.055:o*12.92,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:i*12.92,s=s>.0031308?1.055*Math.pow(s,1/2.4)-.055:s*12.92,o=Math.min(Math.max(0,o),1),i=Math.min(Math.max(0,i),1),s=Math.min(Math.max(0,s),1),[o*255,i*255,s*255]};L.xyz.lab=function(e){var t=e[0],r=e[1],n=e[2],o,i,s;return t/=95.047,r/=100,n/=108.883,t=t>.008856?Math.pow(t,1/3):7.787*t+16/116,r=r>.008856?Math.pow(r,1/3):7.787*r+16/116,n=n>.008856?Math.pow(n,1/3):7.787*n+16/116,o=116*r-16,i=500*(t-r),s=200*(r-n),[o,i,s]};L.lab.xyz=function(e){var t=e[0],r=e[1],n=e[2],o,i,s;i=(t+16)/116,o=r/500+i,s=i-n/200;var a=Math.pow(i,3),u=Math.pow(o,3),l=Math.pow(s,3);return i=a>.008856?a:(i-16/116)/7.787,o=u>.008856?u:(o-16/116)/7.787,s=l>.008856?l:(s-16/116)/7.787,o*=95.047,i*=100,s*=108.883,[o,i,s]};L.lab.lch=function(e){var t=e[0],r=e[1],n=e[2],o,i,s;return o=Math.atan2(n,r),i=o*360/2/Math.PI,i<0&&(i+=360),s=Math.sqrt(r*r+n*n),[t,s,i]};L.lch.lab=function(e){var t=e[0],r=e[1],n=e[2],o,i,s;return s=n/360*2*Math.PI,o=r*Math.cos(s),i=r*Math.sin(s),[t,o,i]};L.rgb.ansi16=function(e){var t=e[0],r=e[1],n=e[2],o=1 in arguments?arguments[1]:L.rgb.hsv(e)[2];if(o=Math.round(o/50),o===0)return 30;var i=30+(Math.round(n/255)<<2|Math.round(r/255)<<1|Math.round(t/255));return o===2&&(i+=60),i};L.hsv.ansi16=function(e){return L.rgb.ansi16(L.hsv.rgb(e),e[2])};L.rgb.ansi256=function(e){var t=e[0],r=e[1],n=e[2];if(t===r&&r===n)return t<8?16:t>248?231:Math.round((t-8)/247*24)+232;var o=16+36*Math.round(t/255*5)+6*Math.round(r/255*5)+Math.round(n/255*5);return o};L.ansi16.rgb=function(e){var t=e%10;if(t===0||t===7)return e>50&&(t+=3.5),t=t/10.5*255,[t,t,t];var r=(~~(e>50)+1)*.5,n=(t&1)*r*255,o=(t>>1&1)*r*255,i=(t>>2&1)*r*255;return[n,o,i]};L.ansi256.rgb=function(e){if(e>=232){var t=(e-232)*10+8;return[t,t,t]}e-=16;var r,n=Math.floor(e/36)/5*255,o=Math.floor((r=e%36)/6)/5*255,i=r%6/5*255;return[n,o,i]};L.rgb.hex=function(e){var t=((Math.round(e[0])&255)<<16)+((Math.round(e[1])&255)<<8)+(Math.round(e[2])&255),r=t.toString(16).toUpperCase();return"000000".substring(r.length)+r};L.hex.rgb=function(e){var t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];var r=t[0];t[0].length===3&&(r=r.split("").map(function(a){return a+a}).join(""));var n=parseInt(r,16),o=n>>16&255,i=n>>8&255,s=n&255;return[o,i,s]};L.rgb.hcg=function(e){var t=e[0]/255,r=e[1]/255,n=e[2]/255,o=Math.max(Math.max(t,r),n),i=Math.min(Math.min(t,r),n),s=o-i,a,u;return s<1?a=i/(1-s):a=0,s<=0?u=0:o===t?u=(r-n)/s%6:o===r?u=2+(n-t)/s:u=4+(t-r)/s+4,u/=6,u%=1,[u*360,s*100,a*100]};L.hsl.hcg=function(e){var t=e[1]/100,r=e[2]/100,n=1,o=0;return r<.5?n=2*t*r:n=2*t*(1-r),n<1&&(o=(r-.5*n)/(1-n)),[e[0],n*100,o*100]};L.hsv.hcg=function(e){var t=e[1]/100,r=e[2]/100,n=t*r,o=0;return n<1&&(o=(r-n)/(1-n)),[e[0],n*100,o*100]};L.hcg.rgb=function(e){var t=e[0]/360,r=e[1]/100,n=e[2]/100;if(r===0)return[n*255,n*255,n*255];var o=[0,0,0],i=t%1*6,s=i%1,a=1-s,u=0;switch(Math.floor(i)){case 0:o[0]=1,o[1]=s,o[2]=0;break;case 1:o[0]=a,o[1]=1,o[2]=0;break;case 2:o[0]=0,o[1]=1,o[2]=s;break;case 3:o[0]=0,o[1]=a,o[2]=1;break;case 4:o[0]=s,o[1]=0,o[2]=1;break;default:o[0]=1,o[1]=0,o[2]=a}return u=(1-r)*n,[(r*o[0]+u)*255,(r*o[1]+u)*255,(r*o[2]+u)*255]};L.hcg.hsv=function(e){var t=e[1]/100,r=e[2]/100,n=t+r*(1-t),o=0;return n>0&&(o=t/n),[e[0],o*100,n*100]};L.hcg.hsl=function(e){var t=e[1]/100,r=e[2]/100,n=r*(1-t)+.5*t,o=0;return n>0&&n<.5?o=t/(2*n):n>=.5&&n<1&&(o=t/(2*(1-n))),[e[0],o*100,n*100]};L.hcg.hwb=function(e){var t=e[1]/100,r=e[2]/100,n=t+r*(1-t);return[e[0],(n-t)*100,(1-n)*100]};L.hwb.hcg=function(e){var t=e[1]/100,r=e[2]/100,n=1-r,o=n-t,i=0;return o<1&&(i=(n-o)/(1-o)),[e[0],o*100,i*100]};L.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]};L.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]};L.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]};L.gray.hsl=L.gray.hsv=function(e){return[0,0,e[0]]};L.gray.hwb=function(e){return[0,100,e[0]]};L.gray.cmyk=function(e){return[0,0,0,e[0]]};L.gray.lab=function(e){return[e[0],0,0]};L.gray.hex=function(e){var t=Math.round(e[0]/100*255)&255,r=(t<<16)+(t<<8)+t,n=r.toString(16).toUpperCase();return"000000".substring(n.length)+n};L.rgb.gray=function(e){var t=(e[0]+e[1]+e[2])/3;return[t/255*100]}});var K$=g((yke,H$)=>{var zp=hb();function YZ(){for(var e={},t=Object.keys(zp),r=t.length,n=0;n{var gb=hb(),tY=K$(),Gi={},rY=Object.keys(gb);function nY(e){var t=function(r){return r==null?r:(arguments.length>1&&(r=Array.prototype.slice.call(arguments)),e(r))};return"conversion"in e&&(t.conversion=e.conversion),t}function oY(e){var t=function(r){if(r==null)return r;arguments.length>1&&(r=Array.prototype.slice.call(arguments));var n=e(r);if(typeof n=="object")for(var o=n.length,i=0;i{"use strict";var xu=j$(),jt=G$(),vb=[].slice,J$=["keyword","gray","hex"],yb={};Object.keys(jt).forEach(function(e){yb[vb.call(jt[e].labels).sort().join("")]=e});var Up={};function tt(e,t){if(!(this instanceof tt))return new tt(e,t);if(t&&t in J$&&(t=null),t&&!(t in jt))throw new Error("Unknown model: "+t);var r,n;if(e==null)this.model="rgb",this.color=[0,0,0],this.valpha=1;else if(e instanceof tt)this.model=e.model,this.color=e.color.slice(),this.valpha=e.valpha;else if(typeof e=="string"){var o=xu.get(e);if(o===null)throw new Error("Unable to parse color from string: "+e);this.model=o.model,n=jt[this.model].channels,this.color=o.value.slice(0,n),this.valpha=typeof o.value[n]=="number"?o.value[n]:1}else if(e.length){this.model=t||"rgb",n=jt[this.model].channels;var i=vb.call(e,0,n);this.color=bb(i,n),this.valpha=typeof e[n]=="number"?e[n]:1}else if(typeof e=="number")e&=16777215,this.model="rgb",this.color=[e>>16&255,e>>8&255,e&255],this.valpha=1;else{this.valpha=1;var s=Object.keys(e);"alpha"in e&&(s.splice(s.indexOf("alpha"),1),this.valpha=typeof e.alpha=="number"?e.alpha:0);var a=s.sort().join("");if(!(a in yb))throw new Error("Unable to parse color from object: "+JSON.stringify(e));this.model=yb[a];var u=jt[this.model].labels,l=[];for(r=0;rr?(t+.05)/(r+.05):(r+.05)/(t+.05)},level:function(e){var t=this.contrast(e);return t>=7.1?"AAA":t>=4.5?"AA":""},isDark:function(){var e=this.rgb().color,t=(e[0]*299+e[1]*587+e[2]*114)/1e3;return t<128},isLight:function(){return!this.isDark()},negate:function(){for(var e=this.rgb(),t=0;t<3;t++)e.color[t]=255-e.color[t];return e},lighten:function(e){var t=this.hsl();return t.color[2]+=t.color[2]*e,t},darken:function(e){var t=this.hsl();return t.color[2]-=t.color[2]*e,t},saturate:function(e){var t=this.hsl();return t.color[1]+=t.color[1]*e,t},desaturate:function(e){var t=this.hsl();return t.color[1]-=t.color[1]*e,t},whiten:function(e){var t=this.hwb();return t.color[1]+=t.color[1]*e,t},blacken:function(e){var t=this.hwb();return t.color[2]+=t.color[2]*e,t},grayscale:function(){var e=this.rgb().color,t=e[0]*.3+e[1]*.59+e[2]*.11;return tt.rgb(t,t,t)},fade:function(e){return this.alpha(this.valpha-this.valpha*e)},opaquer:function(e){return this.alpha(this.valpha+this.valpha*e)},rotate:function(e){var t=this.hsl(),r=t.color[0];return r=(r+e)%360,r=r<0?360+r:r,t.color[0]=r,t},mix:function(e,t){if(!e||!e.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof e);var r=e.rgb(),n=this.rgb(),o=t===void 0?.5:t,i=2*o-1,s=r.alpha()-n.alpha(),a=((i*s===-1?i:(i+s)/(1+i*s))+1)/2,u=1-a;return tt.rgb(a*r.red()+u*n.red(),a*r.green()+u*n.green(),a*r.blue()+u*n.blue(),r.alpha()*o+n.alpha()*(1-o))}};Object.keys(jt).forEach(function(e){if(J$.indexOf(e)===-1){var t=jt[e].channels;tt.prototype[e]=function(){if(this.model===e)return new tt(this);if(arguments.length)return new tt(arguments,e);var r=typeof arguments[t]=="number"?t:this.valpha;return new tt(aY(jt[this.model][e].raw(this.color)).concat(r),e)},tt[e]=function(r){return typeof r=="number"&&(r=bb(vb.call(arguments),t)),new tt(r,e)}}});function iY(e,t){return Number(e.toFixed(t))}function sY(e){return function(t){return iY(t,e)}}function Ne(e,t,r){return e=Array.isArray(e)?e:[e],e.forEach(function(n){(Up[n]||(Up[n]=[]))[t]=r}),e=e[0],function(n){var o;return arguments.length?(r&&(n=r(n)),o=this[e](),o.color[t]=n,o):(o=this[e]().color[t],r&&(o=r(o)),o)}}function ze(e){return function(t){return Math.max(0,Math.min(e,t))}}function aY(e){return Array.isArray(e)?e:[e]}function bb(e,t){for(var r=0;r{var uY="Expected a function",X$="__lodash_placeholder__",Lo=1,Hp=2,cY=4,jo=8,wu=16,Ji=32,Eu=64,i2=128,lY=256,s2=512,Q$=1/0,fY=9007199254740991,pY=17976931348623157e292,e2=0/0,dY=[["ary",i2],["bind",Lo],["bindKey",Hp],["curry",jo],["curryRight",wu],["flip",s2],["partial",Ji],["partialRight",Eu],["rearg",lY]],mY="[object Function]",hY="[object GeneratorFunction]",gY="[object Symbol]",yY=/[\\^$.*+?()[\]{}|]/g,bY=/^\s+|\s+$/g,vY=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,xY=/\{\n\/\* \[wrapped with (.+)\] \*/,wY=/,? & /,EY=/^[-+]0x[0-9a-f]+$/i,SY=/^0b[01]+$/i,IY=/^\[object .+?Constructor\]$/,_Y=/^0o[0-7]+$/i,CY=/^(?:0|[1-9]\d*)$/,TY=parseInt,OY=typeof global=="object"&&global&&global.Object===Object&&global,AY=typeof self=="object"&&self&&self.Object===Object&&self,Iu=OY||AY||Function("return this")();function a2(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}function kY(e,t){for(var r=-1,n=e?e.length:0;++r-1}function RY(e,t,r,n){for(var o=e.length,i=r+(n?1:-1);n?i--:++i2?e:void 0}();function UY(e){return Zi(e)?BY(e):{}}function WY(e){if(!Zi(e)||tX(e))return!1;var t=iX(e)||MY(e)?qY:IY;return t.test(nX(e))}function HY(e,t,r,n){for(var o=-1,i=e.length,s=r.length,a=-1,u=t.length,l=Wp(i-s,0),c=Array(u+l),f=!n;++a1&&w.reverse(),c&&u1?"& ":"")+t[n],t=t.join(r>2?", ":" "),e.replace(vY,`{ +/* [wrapped with `+t+`] */ +`)}function eX(e,t){return t=t??fY,!!t&&(typeof e=="number"||CY.test(e))&&e>-1&&e%1==0&&ebe});module.exports=Ed(mee);function Rv(e){var t=new WeakMap;return r=>t.has(r)?t.get(r):gj(t,r,e(r,t))}function gj(e,t,r){return e.set(t,r),r}function Dv(e){return e&&typeof e=="object"?JSON.parse(JSON.stringify(e)):e}var jr=typeof queueMicrotask=="function"?queueMicrotask:(e=>t=>e.then(t))(Promise.resolve());function Pv(e){let t=Promise.resolve(e);return(r,n)=>r||n?(typeof n>"u"&&(n=console.error),t=t.then(r,n)):t}function Fv(){let e,t,r=new Promise((n,o)=>{e=n,t=o});return{resolve:e,reject:t,promise:r}}var Cee=require("obsidian"),rt;(function(e){Object.assign(e,require("obsidian"))})(rt||(rt={}));var Sd="use.me",Id="use.factory",Ko,ls,_d=function(){return Object.defineProperties(e(),{this:{get(){if(Ko)return Ko;throw new TypeError("No current context")}},me:{value:Sd},factory:{value:Id}});function e(o){let i=new Map;i.prev=o;let s=Object.assign(o?u=>{let l=i.get(u);if(!l){for(let d=i.prev;d;d=d.prev)if(l=d.get(u)){l=Object.assign(Object.assign({},l),{s:l.s||1});break}l=l||{s:2,v:r},i.set(u,l)}let c,f,p;for(;;)switch(l.s){case 0:return Ko===s&&ls&&ls.push(u),l.v;case 1:if(c=l.d,!c||a(()=>c.k.every(d=>s(d)===c.c(d)))){l.s=0;break}l.v=c.f;case 2:l.s=4;try{t(i,u,0,a(f=l.v,u,p=[])),p.length&&(l.d={c:s,f,k:p});break}catch(d){l.s=3,l.v=d,l.d=null}case 3:throw l.v;case 4:throw new Error(`Factory ${String(l.v)} didn't resolve ${String(u)}`)}}:u=>_d.this(u),{def(u,l){return t(i,u,2,l),s},set(u,l){return t(i,u,1,l),s},fork(u){let l=e(i);return u!=null?l(u):l}});return o?s.use=s:s;function a(u,l,c){let f=Ko,p=ls;try{return Ko=s,ls=c,u(l)}finally{Ko=f,ls=p}}}function t(o,i,s,a){if(o.has(i)){let u=o.get(i);if(!u.s)throw new Error(`Already read: ${String(i)}`);u.s=s,u.v=a,u.d=null}else o.set(i,{s,v:a})}function r(o){if(typeof o[Sd]=="function")return o[Sd](o);if(n(o))return typeof o.prototype[Id]=="function"?o.prototype[Id]():new o;throw new ReferenceError(`No config for ${String(o)}`)}function n(o){return typeof o=="function"&&o.prototype!==void 0&&(Object.getPrototypeOf(o.prototype)!==Object.prototype||Object.getOwnPropertyNames(o.prototype).length>1||o.toString().startsWith("class"))}}();var yj,Vo=(e=>(e.service=function(t){return e(Mu).addChild(t),e.this},e.plugin=function(t){if(!Lr)yj=t.app,Lr=e.fork(),Lr.set(rt.Plugin,t),Lr.set(t.constructor,t),t.addChild(Lr.use(Mu));else if(t!==Lr.use(rt.Plugin))throw new TypeError("use.plugin() called on multiple plugins");return Lr},e.def(rt.Plugin,()=>{throw new Error("Plugin not created yet")}),e.def(rt.App,()=>e(rt.Plugin).app),e))(_d),Lr;function Cd(e){if(e?.use)return e.use;if(Lr)return Lr;if(e instanceof rt.Plugin)return e.use=Vo.plugin(e);throw new Error("No context available: did you forget to `use.plugin()`?")}var ue=class extends rt.Component{constructor(){super(...arguments),this.use=Vo.service(this)}},Mu=class extends rt.Component{constructor(){super(...arguments),this.children=new Set([this])}onload(){this.loaded=!0}onunload(){this.loaded=!1,this.children.clear()}addChild(t){return this.children.has(t)||(this.children.add(t),this.loaded?jr(()=>super.addChild(t)):super.addChild(t)),t}};function bj(e,t){jr(()=>e.removeChild(t))}function $v(e,t){let r=new rt.Component;r.onload=()=>{bj(e,r),e=null,t()},e.addChild(r)}function Lu(){throw new Error("Cycle detected")}function qu(){if(ln>1){ln--;return}let e,t=!1;for(;fs!==void 0;){let r=fs;for(fs=void 0,Td++;r!==void 0;){let n=r.o;if(r.o=void 0,r.f&=-3,!(8&r.f)&&qv(r))try{r.c()}catch(o){t||(e=o,t=!0)}r=n}}if(Td=0,ln--,t)throw e}function Mv(e){if(ln>0)return e();ln++;try{return e()}finally{qu()}}var Ae,fs;var ln=0,Td=0,ju=0;function jv(e){if(Ae===void 0)return;let t=e.n;if(t===void 0||t.t!==Ae)return t={i:0,S:e,p:Ae.s,n:void 0,t:Ae,e:void 0,x:void 0,r:t},Ae.s!==void 0&&(Ae.s.n=t),Ae.s=t,e.n=t,32&Ae.f&&e.S(t),t;if(t.i===-1)return t.i=0,t.n!==void 0&&(t.n.p=t.p,t.p!==void 0&&(t.p.n=t.n),t.p=Ae.s,t.n=void 0,Ae.s.n=t,Ae.s=t),t}function ht(e){this.v=e,this.i=0,this.n=void 0,this.t=void 0}ht.prototype.h=function(){return!0};ht.prototype.S=function(e){this.t!==e&&e.e===void 0&&(e.x=this.t,this.t!==void 0&&(this.t.e=e),this.t=e)};ht.prototype.U=function(e){if(this.t!==void 0){let t=e.e,r=e.x;t!==void 0&&(t.x=r,e.e=void 0),r!==void 0&&(r.e=t,e.x=void 0),e===this.t&&(this.t=r)}};ht.prototype.subscribe=function(e){let t=this;return Ad(function(){let r=t.value,n=32&this.f;this.f&=-33;try{e(r)}finally{this.f|=n}})};ht.prototype.valueOf=function(){return this.value};ht.prototype.toString=function(){return this.value+""};ht.prototype.toJSON=function(){return this.value};ht.prototype.peek=function(){return this.v};Object.defineProperty(ht.prototype,"value",{get(){let e=jv(this);return e!==void 0&&(e.i=this.i),this.v},set(e){if(Ae instanceof fn&&function(){throw new Error("Computed cannot have side-effects")}(),e!==this.v){Td>100&&Lu(),this.v=e,this.i++,ju++,ln++;try{for(let t=this.t;t!==void 0;t=t.x)t.t.N()}finally{qu()}}}});function Lv(e){return new ht(e)}function qv(e){for(let t=e.s;t!==void 0;t=t.n)if(t.S.i!==t.i||!t.S.h()||t.S.i!==t.i)return!0;return!1}function Bv(e){for(let t=e.s;t!==void 0;t=t.n){let r=t.S.n;if(r!==void 0&&(t.r=r),t.S.n=t,t.i=-1,t.n===void 0){e.s=t;break}}}function zv(e){let t,r=e.s;for(;r!==void 0;){let n=r.p;r.i===-1?(r.S.U(r),n!==void 0&&(n.n=r.n),r.n!==void 0&&(r.n.p=n)):t=r,r.S.n=r.r,r.r!==void 0&&(r.r=void 0),r=n}e.s=t}function fn(e){ht.call(this,void 0),this.x=e,this.s=void 0,this.g=ju-1,this.f=4}(fn.prototype=new ht).h=function(){if(this.f&=-3,1&this.f)return!1;if((36&this.f)==32||(this.f&=-5,this.g===ju))return!0;if(this.g=ju,this.f|=1,this.i>0&&!qv(this))return this.f&=-2,!0;let e=Ae;try{Bv(this),Ae=this;let t=this.x();(16&this.f||this.v!==t||this.i===0)&&(this.v=t,this.f&=-17,this.i++)}catch(t){this.v=t,this.f|=16,this.i++}return Ae=e,zv(this),this.f&=-2,!0};fn.prototype.S=function(e){if(this.t===void 0){this.f|=36;for(let t=this.s;t!==void 0;t=t.n)t.S.S(t)}ht.prototype.S.call(this,e)};fn.prototype.U=function(e){if(this.t!==void 0&&(ht.prototype.U.call(this,e),this.t===void 0)){this.f&=-33;for(let t=this.s;t!==void 0;t=t.n)t.S.U(t)}};fn.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(let e=this.t;e!==void 0;e=e.x)e.t.N()}};fn.prototype.peek=function(){if(this.h()||Lu(),16&this.f)throw this.v;return this.v};Object.defineProperty(fn.prototype,"value",{get(){1&this.f&&Lu();let e=jv(this);if(this.h(),e!==void 0&&(e.i=this.i),16&this.f)throw this.v;return this.v}});function Bu(e){return new fn(e)}function Uv(e){let t=e.u;if(e.u=void 0,typeof t=="function"){ln++;let r=Ae;Ae=void 0;try{t()}catch(n){throw e.f&=-2,e.f|=8,Od(e),n}finally{Ae=r,qu()}}}function Od(e){for(let t=e.s;t!==void 0;t=t.n)t.S.U(t);e.x=void 0,e.s=void 0,Uv(e)}function vj(e){if(Ae!==this)throw new Error("Out-of-order effect");zv(this),Ae=e,this.f&=-2,8&this.f&&Od(this),qu()}function ps(e){this.x=e,this.u=void 0,this.s=void 0,this.o=void 0,this.f=32}ps.prototype.c=function(){let e=this.S();try{if(8&this.f||this.x===void 0)return;let t=this.x();typeof t=="function"&&(this.u=t)}finally{e()}};ps.prototype.S=function(){1&this.f&&Lu(),this.f|=1,this.f&=-9,Uv(this),Bv(this),ln++;let e=Ae;return Ae=this,vj.bind(this,e)};ps.prototype.N=function(){2&this.f||(this.f|=2,this.o=fs,fs=this)};ps.prototype.d=function(){this.f|=8,1&this.f||Od(this)};function Ad(e){let t=new ps(e);try{t.c()}catch(r){throw t.d(),r}return t.d.bind(t)}function kd(e){let t=Bu(e);return()=>t.value}function Wv(e){let t=Lv(e);function r(){return t.value,e}return r.set=function(n){e!==n&&(ms.size||jr(xj),ms.set(t,e=n))},r}var ms=new Map;function xj(){ms.size&&Mv(()=>{for(let[e,t]of ms.entries())ms.delete(e),e.value=t})}var wj=Rv(function(e){return{}});function fe(e,t,r){let n=r.get;return{...r,get(){var o,i;return((o=(i=wj(this))[t])!==null&&o!==void 0?o:i[t]=kd(n.bind(this)))()}}}var ds;function qe(e){let t=Ad(function(){let r=ds,n=ds=[];try{let o=e.call(this);if(o&&n.push(o),n.length)return n.length===1?n.pop():function(){for(;n.length;)try{n.shift()()}catch(i){Promise.reject(i)}}}finally{ds=r}});return ds&&ds.push(t),t}function qt(e,t){let r=Object.keys(t).map(n=>Ej(e,n,t[n]));return r.length===1?r[0]:function(){r.forEach(n=>n())}}function Ej(e,t,r){let n=e[t],o=e.hasOwnProperty(t),i=r(n);return n&&Object.setPrototypeOf(i,n),Object.setPrototypeOf(s,i),e[t]=s,a;function s(...u){return i===n&&e[t]===s&&a(),i.apply(this,u)}function a(){e[t]===s&&(o?e[t]=n:delete e[t]),i!==n&&(i=n,Object.setPrototypeOf(s,n||Function))}}var zu=e=>{if(typeof e!="object"||e===null)return!1;let t=Object.getPrototypeOf(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},Sj=new Set(["__proto__","prototype","constructor"]),Nd=(e,t)=>{if(!zu(t))return e;e||(e={});for(let[r,n]of Object.entries(t)){if(Sj.has(r))continue;let o=e[r];if(zu(o)&&zu(n))e[r]=Nd(o,n);else{if(n===void 0)continue;zu(n)?e[r]=Nd({},n):Array.isArray(n)?e[r]=[...n]:e[r]=n}}return e};function Uu(e={},t={}){return Nd({...t},{...e})}var Wu=class extends ue{get current(){return this.cloned()}addDefaults(t){this.data=Uu(this.data,t)}constructor(){super(),this.plugin=this.use(rt.Plugin),this.queue=Pv(),this.data={},this.version=Wv(0),this.cloned=kd(()=>this.version()?Dv(this.data):null),this.queue(async()=>{var t;await new Promise(r=>$v(this.plugin,r)),this.data=Uu((t=await this.plugin.loadData())!==null&&t!==void 0?t:{},this.data),this.version.set(this.version()+1)},console.error)}once(t,r){let n=this.each(o=>{n(),t.call(r,o)});return n}each(t,r){return qe(()=>{this.current&&jr(t.bind(r,this.current))})}onChange(t,r){return this.each(t,r)}update(t){return this.queue(async()=>{var r;let n=this.data,o=JSON.stringify(n);try{var i=JSON.parse(o);i=(r=t(i))!==null&&r!==void 0?r:i;let s=JSON.stringify(i);o!==s&&(this.data=i,this.version.set(this.version()+1),await this.plugin.saveData(JSON.parse(s)).catch(console.error))}catch(s){console.error(s)}return this.data})}};function Hv(e,t,r,n){let{resolve:o,promise:i}=Fv(),s=new class extends rt.FuzzySuggestModal{getItemText(a){var u;return(u=t?.(a))!==null&&u!==void 0?u:""+a}getItems(){return e}onChooseItem(a,u){o({item:a,event:u})}onClose(){super.onClose(),jr(()=>o({item:null,event:null}))}}(app);return r&&s.setPlaceholder(r),n?.(s),s.open(),i}var cj=require("obsidian");var Kv=e=>`obsidian-zotero:${e}`;var Bt=({key:e,groupID:t,parentItem:r},n=!1)=>{let o=[e];return!n&&r&&o.push(`a${r}`),typeof t=="number"&&o.push(`g${t}`),o.join("")},Vv=(e,t,r=!0)=>(n,...o)=>{let i="";for(let s=0;s0&&(i+=e(o[s-1])),i+=(r?n.raw:n)[s];return t(i)},Pd=(e=!0,t)=>Vv(r=>r,r=>new RegExp(e?"^"+r+"$":r,t),!0),Rd=String.raw`[23456789ABCDEFGHIJKLMNPQRSTUVWXYZ]{8}`,Dd=String.raw`\d+`,Gv=e=>{let t={annotKey:Rd,parentKey:Rd,groupID:Dd,page:Dd};if(e)for(let r in t)t[r]=`(${t[r]})`;return Vv(r=>t[r],r=>r)`${"annotKey"}a${"parentKey"}(?:g${"groupID"})?(?:p${"page"})?`},Jv=Pd()`${Rd}(?:g${Dd})?`,Zv=Pd()`${Gv(!0)}`,Yv=Pd()`(?:${Gv(!1)}n?)+`,Go=(e,t)=>{if(e===null)return null;let r;return typeof e=="number"?r=e:r=parseInt(e,10),Number.isInteger(r)?t?r+1:r:null};var Xv=(e,t,{getLogger:r,configure:n})=>{let o=Kv(e);return n({appenders:{out:{type:"console"}},categories:{default:{appenders:["out"],level:t},[o]:{appenders:["out"],level:t}}}),r(o)},Qv={ALL:"ALL",TRACE:"TRACE",DEBUG:"DEBUG",INFO:"INFO",WARN:"WARN",ERROR:"ERROR",FATAL:"FATAL",MARK:"MARK",OFF:"OFF"};var pn=()=>(...e)=>e;var e0=e=>`better-sqlite3-${e}.node`;var al=ge(xS(),1);var Eh=ge(si(),1),Cn=require("obsidian"),n_=ge(IS(),1);var y1=require("http");var Xq=ge(si(),1),Qq=ge(_m(),1),Cm=ge(_m(),1);var WS=pn()("open","export","update");var US=(e,t)=>{let r=new RegExp(`^${t}\\[(\\d+)\\]$`);return Object.entries(e).filter(([n])=>r.test(n)).sort(([n],[o])=>Number(n.match(r)[1])-Number(o.match(r)[1])).map(([,n])=>JSON.parse(n))},Sc=e=>{if(e.type==="item")return{version:e.version,type:e.type,items:US(e,"items")};if(e.type==="annotation")return{version:e.version,type:e.type,annots:US(e,"annots"),parent:JSON.parse(e.parent)};throw new TypeError("Unrecognized query type: "+e.type)};var Tm=/^/;var Ic=require("obsidian");var Ms=require("path");var VS=require("path/posix");var Am=require("obsidian");var HS={"103":{darwin:["arm64","x64"],linux:["x64"],win32:["x64","ia32","arm64"]},"109":{darwin:["arm64","x64"],linux:["x64"],win32:["x64","ia32","arm64"]},"110":{darwin:["arm64","x64"],linux:["x64"],win32:["x64","ia32","arm64"]},"114":{darwin:["arm64","x64"],linux:["x64"],win32:["x64","ia32","arm64"]},"116":{darwin:["arm64","x64"],linux:["x64"],win32:["x64","ia32","arm64"]}};var KS=Am.Platform.isDesktopApp?require("@electron/remote").app.getPath("userData"):null,{arch:iie,platform:sie,versions:{modules:tB,electron:aie}}=process,Om=HS,GS=({modules:e})=>{if(e in Om)return 0;let r=Object.keys(Om).map(o=>parseInt(o,10)).sort((o,i)=>o-i);return parseInt(e,10)>r[r.length-1]?1:-1},JS=({platform:e,arch:t})=>!!Om[tB][e]?.includes(t),ZS=()=>Am.Platform.isDesktopApp?{arch:process.arch,platform:process.platform,modules:process.versions.modules,electron:process.versions.electron}:null,km=e=>e.versions?.["better-sqlite3"],ai=e=>{if(!KS)return null;let t=km(e);return t?(0,VS.join)(KS,e0(t)):null};var YS={citationEditorSuggester:!0,showCitekeyInSuggester:!1};var XS={literatureNoteFolder:"LiteratureNotes"};var QS={enableServer:!1,serverPort:9091,serverHostname:"127.0.0.1"};var Nm=require("path/posix");var e1=`[!note] Page <%= it.pageLabel %> + +<%= it.imgEmbed %><%= it.text %> +<% if (it.comment) { %> +--- +<%= it.comment %> +<% } %>`;var t1=`<% for (const annotation of it) { %> +<%~ include("annotation", annotation) %> +<% } %>`;var r1='[<%= it.map(lit => `@${lit.citekey}`).join("; ") %>]';var n1='<%= it.map(lit => `@${lit.citekey}`).join("; ") %>';var o1=`<%= it.content %>`;var i1=`title: "<%= it.title %>" +citekey: "<%= it.citekey %>"`;var s1=`# <%= it.title %> + +[Zotero](<%= it.backlink %>) <%= it.fileLink %> +<%~ include("annots", it.annotations) %>`;var ot={Ejectable:{note:s1,field:i1,annots:t1,annotation:e1,cite:r1,cite2:n1,colored:o1},Embeded:{filename:"<%= it.citekey ?? it.DOI ?? it.title ?? it.key %>.md"}},_r={Ejectable:Object.keys(ot.Ejectable),Embeded:Object.keys(ot.Embeded),All:Object.keys(ot.Ejectable).concat(Object.keys(ot.Embeded))};function Rm(e){return Object.hasOwn(ot.Embeded,e)?`zt-${e}.eta.md`:Object.hasOwn(ot.Ejectable,e)?e==="annotation"?"zt-annot.eta.md":`zt-${e}.eta.md`:null}function io(e,t){return(0,Nm.join)(t,Rm(e))}function ct(e,t){let r=_r.Embeded.find(o=>(0,Nm.join)(t,`zt-${o}.eta.md`)===e);if(r)return{type:"embeded",name:r};let n=_r.Ejectable.find(o=>io(o,t)===e);return n?{type:"ejectable",name:n}:null}var a1={template:{folder:"ZtTemplates",templates:ot.Embeded},updateAnnotBlock:!1,updateOverwrite:!1,autoPairEta:!1,autoTrim:[!1,!1]};var u1={autoRefresh:!0};var c1=require("os"),l1=require("path"),f1=()=>({zoteroDataDir:(0,l1.join)((0,c1.homedir)(),"Zotero"),citationLibrary:1});var p1=require("obsidian"),d1={imgExcerptImport:p1.Platform.isWin?"copy":"symlink",imgExcerptPath:"ZtImgExcerpt"};var m1=()=>({...h1,...YS,...XS,...QS,...a1,...u1,...f1(),...d1});function Qe(e,t,r=!1){let n=0;return(...o)=>{if(t(),n++>(r?1:0))return e(...o)}}var de=class extends Wu{#e=this.use(be);#t;get nativeBinding(){if(this.#t)return this.#t;let t=ai(this.#e.manifest);if(t)return this.#t=t,this.#t;throw new Error("Failed to get native binding path")}get templateDir(){return this.current?.template?.folder}get libId(){return this.current?.citationLibrary}get simpleTemplates(){return this.current?.template?.templates}get zoteroDbPath(){return(0,Ms.join)(this.current?.zoteroDataDir,"zotero.sqlite")}get bbtSearchDbPath(){return(0,Ms.join)(this.current?.zoteroDataDir,"better-bibtex-search.sqlite")}get bbtMainDbPath(){return(0,Ms.join)(this.current?.zoteroDataDir,"better-bibtex.sqlite")}get zoteroCacheDirPath(){return(0,Ms.join)(this.current?.zoteroDataDir,"cache")}get dbConnParams(){return[{zotero:this.zoteroDbPath,bbtSearch:this.bbtSearchDbPath,bbtMain:this.bbtMainDbPath},{nativeBinding:this.nativeBinding}]}};le([fe],de.prototype,"templateDir",1),le([fe],de.prototype,"libId",1),le([fe],de.prototype,"simpleTemplates",1),le([fe],de.prototype,"zoteroDbPath",1),le([fe],de.prototype,"bbtSearchDbPath",1),le([fe],de.prototype,"bbtMainDbPath",1),le([fe],de.prototype,"zoteroCacheDirPath",1),le([fe],de.prototype,"dbConnParams",1);function g1(e){let t=Cd(e)(de);return t.addDefaults(m1()),t}var cB=new Set(["notify"]),lB=new Set([...WS.map(e=>`zotero/${e}`)]),Ur=class extends ue{#e=new Ic.Events;settings=this.use(de);plugin=this.use(be);server=null;get port(){return this.settings.current?.serverPort}get hostname(){return this.settings.current?.serverHostname}get enableServer(){return this.settings.current?.enableServer}onload(){this.register(qe(Qe(()=>{this.enableServer?this.initServer():this.closeServer()},()=>this.enableServer))),this.register(qe(Qe(()=>{this.reloadPort(),new Ic.Notice("Server port is saved and applied.")},()=>(this.port,this.hostname),!0))),this.registerObsidianProtocolHandler()}onunload(){this.closeServer(),this.server=null}registerObsidianProtocolHandler(){let t=r=>{let{action:n,...o}=r;this.trigger(n,o)};for(let r of lB)this.plugin.registerObsidianProtocolHandler(r,t)}#t(){this.server??=(0,y1.createServer)((t,r)=>{this.requestListener(t,r)})}#r(){this.server?.listening||this.server?.listen(this.port,this.hostname,()=>this.listeningListener())}initServer(){this.#t(),this.#r()}closeServer(){this.server?.close()}reloadPort(){this.enableServer&&(this.closeServer(),this.#t(),this.#r())}requestListener(t,r){if(!t.url){W.error("Request without url"),r.statusCode=400,r.end();return}W.trace("server recieved req",t.url,t.rawHeaders);let{pathname:n,searchParams:o}=new URL(t.url,`http://${t.headers.host}`),i=n.substring(1),s=`bg:${n.substring(1)}`;if(cB.has(i)){let a=Object.fromEntries(o.entries());t.headers["content-type"]==="application/json"?new Promise((u,l)=>{let c="";t.on("data",f=>c+=f),t.on("error",f=>l(f)),t.on("end",()=>{try{u(JSON.parse(c))}catch(f){l(f)}})}).then(u=>{this.trigger(s,a,u),r.end()}):(this.trigger(s,a),r.end())}else r.statusCode=404,r.end()}listeningListener(){this.server&&W.info(`Server is listening at ${fB(this.server)}`)}on(t,r,n){return this.#e.on(t,r,n)}off(t,r){return this.#e.off(t,r)}offref(t){return this.#e.offref(t)}trigger(t,...r){return W.trace(`server trigger ${t}`,...r),this.#e.trigger(t,...r)}tryTrigger(t,r){return this.#e.tryTrigger(t,r)}};le([fe],Ur.prototype,"port",1),le([fe],Ur.prototype,"hostname",1),le([fe],Ur.prototype,"enableServer",1);function fB(e){let t=e.address();return t?typeof t=="string"?t:`${t.address}:${t.port}`:"?"}var b1=ge(si(),1),v1=require("obsidian");function x1(e,t={}){return qs({...t,register:r=>e.metadataCache.on("initialized",r),unregister:r=>e.metadataCache.offref(r),escape:()=>e.metadataCache.initialized,timeout:t.timeout??null})}function Dm(e,t={}){return qs({...t,register:r=>e.vault.on("zotero:db-refresh",r),unregister:r=>e.vault.offref(r)})}function ui(e,t={}){return qs({...t,unregister:r=>e.app.vault.offref(r),escape:()=>e.dbWorker.status===2,register:r=>{let n=e.dbWorker.status;if(n===0)return e.app.vault.on("zotero:db-ready",r);if(n===1)return e.app.vault.on("zotero:db-refresh",r);if(n===2)throw new Error("should not be called when db is ready");(0,b1.assertNever)(n)}})}var w1=e=>new Promise(t=>{e.workspace.onLayoutReady(t)}),qs=({register:e,unregister:t,escape:r,timeout:n=1e4,waitAfterEvent:o,debounce:i=1e3})=>{let s=null;return[new Promise((u,l)=>{if(r?.()){u();return}s=function(){t(p),l(new Ls)};function c(){t(p),u()}async function f(){o!==void 0&&await sleep(o),c()}let p=e(i?(0,v1.debounce)(f,i,!0):f);n!==null&&sleep(n).then(()=>{t(p),r?.()?c():l(new js(n))})}),s]},js=class extends Error{constructor(r){super(`Timeout after ${r}ms`);this.timeout=r}},Ls=class extends Error{constructor(){super("Manually cancelled")}};var dB=e=>{let t=new Blob([e],{type:"text/javascript"});return URL.createObjectURL(t)},E1=(e,t)=>{let r=dB(e),n=new Worker(r,t);return URL.revokeObjectURL(r),n};var Pm=class extends Error{},xe=e=>{throw new Pm(e)},Fm=class extends Error{},he=e=>{throw new Fm(e)};var xn=(e,t)=>De(e)===t,De=e=>{let t=typeof e;return t==="object"?e===null?"null":"object":t==="function"?"object":t},$m={bigint:"a bigint",boolean:"boolean",null:"null",number:"a number",object:"an object",string:"a string",symbol:"a symbol",undefined:"undefined"};var Gt=(e,t)=>e in t,S1=e=>Object.entries(e),we=e=>Object.keys(e),so=e=>{let t=[];for(;e!==Object.prototype&&e!==null&&e!==void 0;){for(let r of Object.getOwnPropertyNames(e))t.includes(r)||t.push(r);for(let r of Object.getOwnPropertySymbols(e))t.includes(r)||t.push(r);e=Object.getPrototypeOf(e)}return t},ci=(e,t)=>{let r=e?.[t];return r!=null};var I1=e=>Object.keys(e).length,Bs=e=>xn(e,"object")?Object.keys(e).length!==0:!1,sse=Symbol("id");var Cr=e=>Array.isArray(e)?e:[e];var We=class extends Array{static fromString(t,r="/"){return t===r?new We:new We(...t.split(r))}toString(t="/"){return this.length?this.join(t):t}},_1=(e,t)=>{let r=e;for(let n of t){if(typeof r!="object"||r===null)return;r=r[n]}return r};var Mm=/^(?!^-0$)-?(?:0|[1-9]\d*)(?:\.\d*[1-9])?$/,mB=e=>Mm.test(e),hB=/^-?\d*\.?\d*$/,gB=e=>e.length!==0&&hB.test(e),_c=/^(?:0|(?:-?[1-9]\d*))$/,zs=e=>_c.test(e),Us=/^(?:0|(?:[1-9]\d*))$/,C1=/^-?\d+$/,yB=e=>C1.test(e),T1={number:"a number",bigint:"a bigint",integer:"an integer"},O1=(e,t)=>`'${e}' was parsed as ${T1[t]} but could not be narrowed to a literal value. Avoid unnecessary leading or trailing zeros and other abnormal notation`,bB=(e,t)=>t==="number"?mB(e):zs(e),vB=(e,t)=>t==="number"?Number(e):Number.parseInt(e),xB=(e,t)=>t==="number"?gB(e):yB(e),Ws=(e,t)=>A1(e,"number",t),Cc=(e,t)=>A1(e,"integer",t),A1=(e,t,r)=>{let n=vB(e,t);if(!Number.isNaN(n)){if(bB(e,t))return n;if(xB(e,t))return he(O1(e,t))}return r?he(r===!0?`Failed to parse ${T1[t]} from '${e}'`:r):void 0},jm=e=>{if(e[e.length-1]!=="n")return;let t=e.slice(0,-1),r;try{r=BigInt(t)}catch{return}if(_c.test(t))return r;if(C1.test(t))return he(O1(e,"bigint"))};var Te=(e,t)=>{switch(De(e)){case"object":return JSON.stringify(Lm(e,Tc,[]),null,t);case"symbol":return Tc.onSymbol(e);default:return qm(e)}},Tc={onCycle:()=>"(cycle)",onSymbol:e=>`(symbol${e.description&&` ${e.description}`})`,onFunction:e=>`(function${e.name&&` ${e.name}`})`},Lm=(e,t,r)=>{switch(De(e)){case"object":if(typeof e=="function")return Tc.onFunction(e);if(r.includes(e))return"(cycle)";let n=[...r,e];if(Array.isArray(e))return e.map(i=>Lm(i,t,n));let o={};for(let i in e)o[i]=Lm(e[i],t,n);return o;case"symbol":return Tc.onSymbol(e);case"bigint":return`${e}n`;case"undefined":return"undefined";default:return e}},qm=e=>typeof e=="string"?`'${e}'`:typeof e=="bigint"?`${e}n`:`${e}`;function wB(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function EB(e,t){return t.get?t.get.call(e):t.value}function SB(e,t,r){if(t.set)t.set.call(e,r);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=r}}function N1(e,t,r){if(!t.has(e))throw new TypeError("attempted to "+r+" private field on non-instance");return t.get(e)}function k1(e,t){var r=N1(e,t,"get");return EB(e,r)}function IB(e,t,r){wB(e,t),t.set(e,r)}function _B(e,t,r){var n=N1(e,t,"set");return SB(e,n,r),r}function Oc(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Jt=e=>(t,r,n)=>t===void 0?r===void 0?xe(Nc):r:r===void 0?t:e(t,r,n),Nc="Unexpected operation two undefined operands",Bm={domain:({l:e,r:t})=>`${e.join(", ")} and ${t.join(", ")}`,range:({l:e,r:t})=>`${kc(e)} and ${kc(t)}`,class:({l:e,r:t})=>`classes ${typeof e=="string"?e:e.name} and ${typeof t=="string"?t:t.name}`,tupleLength:({l:e,r:t})=>`tuples of length ${e} and ${t}`,value:({l:e,r:t})=>`literal values ${Te(e)} and ${Te(t)}`,leftAssignability:({l:e,r:t})=>`literal value ${Te(e.value)} and ${Te(t)}`,rightAssignability:({l:e,r:t})=>`literal value ${Te(t.value)} and ${Te(e)}`,union:({l:e,r:t})=>`branches ${Te(e)} and branches ${Te(t)}`},kc=e=>"limit"in e?`the range of exactly ${e.limit}`:e.min?e.max?`the range bounded by ${e.min.comparator}${e.min.limit} and ${e.max.comparator}${e.max.limit}`:`${e.min.comparator}${e.min.limit}`:e.max?`${e.max.comparator}${e.max.limit}`:"the unbounded range",Ac=new WeakMap,wn=class{get disjoints(){return k1(this,Ac)}addDisjoint(t,r,n){return k1(this,Ac)[`${this.path}`]={kind:t,l:r,r:n},Rc}constructor(t,r){Oc(this,"type",void 0),Oc(this,"lastOperator",void 0),Oc(this,"path",void 0),Oc(this,"domain",void 0),IB(this,Ac,{writable:!0,value:void 0}),this.type=t,this.lastOperator=r,this.path=new We,_B(this,Ac,{})}},Rc=Symbol("empty"),R1=()=>Rc,ur=e=>e===Rc,D1=Symbol("equal"),He=()=>D1,Zt=e=>e===D1,li=(e,t)=>(r,n,o)=>{let i={},s=we({...r,...n}),a=!0,u=!0;for(let l of s){let c=typeof e=="function"?e(l,r[l],n[l],o):e[l](r[l],n[l],o);if(Zt(c))r[l]!==void 0&&(i[l]=r[l]);else if(ur(c))if(t.onEmpty==="omit")a=!1,u=!1;else return Rc;else c!==void 0&&(i[l]=c),a&&(a=c===r[l]),u&&(u=c===n[l])}return a?u?He():r:u?n:i};var P1=e=>{let t=we(e);if(t.length===1){let n=t[0];return`${n==="/"?"":`At ${n}: `}Intersection of ${Bm[e[n].kind](e[n])} results in an unsatisfiable type`}let r=` + "Intersection results in unsatisfiable types at the following paths: +`;for(let n in e)r+=` ${n}: ${Bm[e[n].kind](e[n])} +`;return r},Dc=(e,t,r)=>`${e.length?`At ${e}: `:""}${t} ${r?`${r} `:""}results in an unsatisfiable type`;var Hs={Array,Date,Error,Function,Map,RegExp,Set,Object,String,Number,Boolean,WeakMap,WeakSet,Promise},fi=(e,t)=>{if(De(e)!=="object")return;let r=t??Hs,n=Object.getPrototypeOf(e);for(;n?.constructor&&(!r[n.constructor.name]||!(e instanceof r[n.constructor.name]));)n=Object.getPrototypeOf(n);return n?.constructor?.name};var En=e=>Array.isArray(e),zm={Object:"an object",Array:"an array",Function:"a function",Date:"a Date",RegExp:"a RegExp",Error:"an Error",Map:"a Map",Set:"a Set",String:"a String object",Number:"a Number object",Boolean:"a Boolean object",Promise:"a Promise",WeakMap:"a WeakMap",WeakSet:"a WeakSet"},Pc=e=>{let t=Object(e).name;return t&&Gt(t,Hs)&&Hs[t]===e?t:void 0};var F1=Jt((e,t,r)=>e===t?He():e instanceof t?e:t instanceof e?t:r.addDisjoint("class",e,t)),$1=(e,t)=>typeof e=="string"?fi(t.data)===e||!t.problems.add("class",e):t.data instanceof e||!t.problems.add("class",e);var Fc=(e,t)=>{if(Array.isArray(e)){if(Array.isArray(t)){let r=CB(e,t);return r.length===e.length?r.length===t.length?He():e:r.length===t.length?t:r}return e.includes(t)?e:[...e,t]}return Array.isArray(t)?t.includes(e)?t:[...t,e]:e===t?He():[e,t]},CB=(e,t)=>{let r=[...e];for(let n of t)e.includes(n)||r.push(n);return r};var M1=Jt((e,t)=>e===t?He():Math.abs(e*t/TB(e,t))),TB=(e,t)=>{let r,n=e,o=t;for(;o!==0;)r=o,o=n%o,n=r;return n},j1=(e,t)=>t.data%e===0||!t.problems.add("divisor",e);var Ks=e=>e[0]==="?",$c=e=>e[0]==="!",Or={index:"[index]"},Sn=e=>Ks(e)||$c(e)?e[1]:e,OB=e=>{if(typeof e.length=="object"&&$c(e.length)&&typeof e.length[1]!="string"&&jc(e.length[1],"number"))return e.length[1].number.value},L1=Jt((e,t,r)=>{let n=AB(e,t,r);if(typeof n=="symbol")return n;let o=OB(n);if(o===void 0||!(Or.index in n))return n;let{[Or.index]:i,...s}=n,a=Sn(i);for(let u=0;u{if(t===void 0)return r===void 0?He():r;if(r===void 0)return t;n.path.push(e);let o=Mc(Sn(t),Sn(r),n);n.path.pop();let i=Ks(t)&&Ks(r);return ur(o)&&i?{}:o},{onEmpty:"bubble"}),q1=(e,t,r)=>{let n=r.type.config?.keys??r.type.scope.config.keys;return n==="loose"?kB(e,t,r):NB(n,e,t,r)},kB=(e,t,r)=>{for(let n in t){let o=t[n];r.path.push(n),n===Or.index?e.push(["indexProp",Tr(Sn(o),r)]):Ks(o)?e.push(["optionalProp",[n,Tr(o[1],r)]]):$c(o)?e.push(["prerequisiteProp",[n,Tr(o[1],r)]]):e.push(["requiredProp",[n,Tr(o,r)]]),r.path.pop()}},NB=(e,t,r,n)=>{let o={required:{},optional:{}};for(let i in r){let s=r[i];n.path.push(i),i===Or.index?o.index=Tr(Sn(s),n):Ks(s)?o.optional[i]=Tr(s[1],n):$c(s)?t.push(["prerequisiteProp",[i,Tr(s[1],n)]]):o.required[i]=Tr(s,n),n.path.pop()}t.push([`${e}Props`,o])};function RB(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Um=e=>typeof e=="string"||Array.isArray(e)?e.length:typeof e=="number"?e:0,DB=e=>typeof e=="string"?"characters":Array.isArray(e)?"items long":"",Lc=class{toString(){return Te(this.value)}get domain(){return De(this.value)}get size(){return Um(this.value)}get units(){return DB(this.value)}get className(){return Object(this.value).constructor.name}constructor(t){RB(this,"value",void 0),this.value=t}};var qc={">":!0,">=":!0},Wm={"<":!0,"<=":!0},Vs=e=>"comparator"in e,z1=Jt((e,t,r)=>{if(Vs(e))return Vs(t)?e.limit===t.limit?He():r.addDisjoint("range",e,t):B1(t,e.limit)?e:r.addDisjoint("range",e,t);if(Vs(t))return B1(e,t.limit)?t:r.addDisjoint("range",e,t);let n=pi("min",e.min,t.min),o=pi("max",e.max,t.max);return n==="l"?o==="r"?pi("min",e.min,t.max)==="l"?r.addDisjoint("range",e,t):{min:e.min,max:t.max}:e:n==="r"?o==="l"?pi("max",e.max,t.min)==="l"?r.addDisjoint("range",e,t):{min:t.min,max:e.max}:t:o==="l"?e:o==="r"?t:He()}),B1=(e,t)=>Vs(e)?t===e.limit:PB(e.min,t)&&FB(e.max,t),PB=(e,t)=>!e||t>e.limit||t===e.limit&&!Gs(e.comparator),FB=(e,t)=>!e||t{let n=r.lastDomain==="string"?"characters":r.lastDomain==="object"?"items long":void 0;if(Vs(t))return e.push(["bound",n?{...t,units:n}:t]);t.min&&e.push(["bound",n?{...t.min,units:n}:t.min]),t.max&&e.push(["bound",n?{...t.max,units:n}:t.max])},W1=(e,t)=>$B[e.comparator](Um(t.data),e.limit)||!t.problems.add("bound",e),$B={"<":(e,t)=>e":(e,t)=>e>t,"<=":(e,t)=>e<=t,">=":(e,t)=>e>=t,"==":(e,t)=>e===t},pi=(e,t,r)=>t?r?t.limit===r.limit?Gs(t.comparator)?Gs(r.comparator)?"=":"l":Gs(r.comparator)?"r":"=":e==="min"?t.limit>r.limit?"l":"r":t.limite.length===1;var Hm={},Km=e=>(Hm[e]||(Hm[e]=new RegExp(e)),Hm[e]),H1=(e,t)=>Km(e).test(t.data)||!t.problems.add("regex",`/${e}/`),K1=Jt(Fc);var G1=(e,t,r)=>"value"in e?"value"in t?e.value===t.value?He():r.addDisjoint("value",e.value,t.value):V1(e.value,t,r)?e:r.addDisjoint("leftAssignability",e,t):"value"in t?V1(t.value,e,r)?t:r.addDisjoint("rightAssignability",e,t):jB(e,t,r),MB=Jt(Fc),jB=li({divisor:M1,regex:K1,props:L1,class:F1,range:z1,narrow:MB},{onEmpty:"bubble"}),Vm=(e,t)=>{let r=[],n;for(n in e)LB[n](r,e[n],t);return r.sort((o,i)=>Js[o[0]]-Js[i[0]])},LB={regex:(e,t)=>{for(let r of Cr(t))e.push(["regex",r])},divisor:(e,t)=>{e.push(["divisor",t])},range:U1,class:(e,t)=>{e.push(["class",t])},props:q1,narrow:(e,t)=>{for(let r of Cr(t))e.push(["narrow",r])},value:(e,t)=>{e.push(["value",t])}},Js={config:-1,domain:0,value:0,domains:0,branches:0,switch:0,alias:0,class:0,regex:1,divisor:1,bound:1,prerequisiteProp:2,distilledProps:3,strictProps:3,requiredProp:3,optionalProp:3,indexProp:3,narrow:4,morph:5},V1=(e,t,r)=>!r.type.scope.type(["node",{[r.domain]:t}])(e).problems;var Gm=e=>e?.lBranches!==void 0,Z1=(e,t,r)=>{let n={lBranches:e,rBranches:t,lExtendsR:[],rExtendsL:[],equalities:[],distinctIntersections:[]},o=t.map(i=>({condition:i,distinct:[]}));return e.forEach((i,s)=>{let a=!1,u=o.map((l,c)=>{if(a||!l.distinct)return null;let f=l.condition,p=Ys(i,f,r);return ur(p)?null:p===i?(n.lExtendsR.push(s),a=!0,null):p===f?(n.rExtendsL.push(c),l.distinct=null,null):Zt(p)?(n.equalities.push([s,c]),a=!0,l.distinct=null,null):xn(p,"object")?p:xe(`Unexpected predicate intersection result of type '${De(p)}'`)});if(!a)for(let l=0;li.distinct??[]),n},Jm=e=>"rules"in e,Zs=(e,t)=>{if(Jm(e)){let r=Vm(e.rules,t);if(e.morph)if(typeof e.morph=="function")r.push(["morph",e.morph]);else for(let n of e.morph)r.push(["morph",n]);return r}return Vm(e,t)},J1=e=>e.rules??e,Ys=(e,t,r)=>{let n=J1(e),o=J1(t),i=G1(n,o,r);return"morph"in e?"morph"in t?e.morph===t.morph?Zt(i)||ur(i)?i:{rules:i,morph:e.morph}:r.lastOperator==="&"?he(Dc(r.path,"Intersection","of morphs")):{}:ur(i)?i:{rules:Zt(i)?e.rules:i,morph:e.morph}:"morph"in t?ur(i)?i:{rules:Zt(i)?t.rules:i,morph:t.morph}:i};var Y1=e=>`${e==="/"?"A":`At ${e}, a`} union including one or more morphs must be discriminatable`;var Q1=(e,t)=>{let r=BB(e,t),n=e.map((o,i)=>i);return eI(e,n,r,t)},eI=(e,t,r,n)=>{if(t.length===1)return Zs(e[t[0]],n);let o=UB(t,r);if(!o)return[["branches",t.map(s=>Ym(e[s],n.type.scope)?he(Y1(`${n.path}`)):Zs(e[s],n))]];let i={};for(let s in o.indexCases){let a=o.indexCases[s];i[s]=eI(e,a,r,n),s!=="default"&&Xs(i[s],o.path,o,n)}return[["switch",{path:o.path,kind:o.kind,cases:i}]]},Xs=(e,t,r,n)=>{for(let o=0;oxe(`Unexpectedly failed to discriminate ${e.kind} at path '${e.path}'`),qB={domain:!0,class:!0,value:!0},BB=(e,t)=>{let r={disjointsByPair:{},casesByDisjoint:{}};for(let n=0;n{let t=We.fromString(e);return[t,t.pop()]},UB=(e,t)=>{let r;for(let n=0;n{let v=e.indexOf(y);if(v!==-1)return delete f[v],!0});b.length!==0&&(c[h]=b,p++)}let d=we(f);if(d.length&&(c.default=d.map(h=>parseInt(h))),!r||p>r.score){let[h,b]=zB(u);if(r={path:h,kind:b,indexCases:c,score:p},p===e.length)return r}}}}return r},X1=(e,t)=>{switch(e){case"value":return tI(t);case"domain":return t;case"class":return Pc(t);default:return}},tI=e=>{let t=De(e);return t==="object"||t==="symbol"?void 0:qm(e)},WB={value:e=>tI(e)??"default",class:e=>fi(e)??"default",domain:De},rI=(e,t)=>WB[e](t),Ym=(e,t)=>"morph"in e?!0:"props"in e?Object.values(e.props).some(r=>HB(Sn(r),t)):!1,HB=(e,t)=>typeof e=="string"?t.resolve(e).includesMorph:Object.values(t.resolveTypeNode(e)).some(r=>r===!0?!1:En(r)?r.some(n=>Ym(n,t)):Ym(r,t));var di=e=>e===!0?{}:e,nI=(e,t,r)=>{if(e===!0&&t===!0)return He();if(!En(e)&&!En(t)){let s=Ys(di(e),di(t),r);return s===e?e:s===t?t:s}let n=Cr(di(e)),o=Cr(di(t)),i=Z1(n,o,r);return i.equalities.length===n.length&&i.equalities.length===o.length?He():i.lExtendsR.length+i.equalities.length===n.length?e:i.rExtendsL.length+i.equalities.length===o.length?t:i},oI=(e,t,r,n)=>{n.domain=e;let o=nI(t,r,n);if(!Gm(o))return o;let i=[...o.distinctIntersections,...o.equalities.map(s=>o.lBranches[s[0]]),...o.lExtendsR.map(s=>o.lBranches[s]),...o.rExtendsL.map(s=>o.rBranches[s])];return i.length===0&&n.addDisjoint("union",o.lBranches,o.rBranches),i.length===1?i[0]:i},iI=(e,t,r,n)=>{let o=new wn(n,"|"),i=nI(t,r,o);if(!Gm(i))return Zt(i)||i===t?r:i===r?t:e==="boolean"?!0:[di(t),di(r)];let s=[...i.lBranches.filter((a,u)=>!i.lExtendsR.includes(u)&&!i.equalities.some(l=>l[0]===u)),...i.rBranches.filter((a,u)=>!i.rExtendsL.includes(u)&&!i.equalities.some(l=>l[1]===u))];return s.length===1?s[0]:s},Xm=(e,t)=>e===!0?[]:En(e)?Q1(e,t):Zs(e,t),sI=e=>typeof e=="object"&&"value"in e;var Qs=e=>"config"in e,Mc=(e,t,r)=>{r.domain=void 0;let n=r.type.scope.resolveTypeNode(e),o=r.type.scope.resolveTypeNode(t),i=KB(n,o,r);return typeof i=="object"&&!Bs(i)?Bs(r.disjoints)?R1():r.addDisjoint("domain",we(n),we(o)):i===n?e:i===o?t:i},KB=li((e,t,r,n)=>{if(t===void 0)return r===void 0?xe(Nc):void 0;if(r!==void 0)return oI(e,t,r,n)},{onEmpty:"omit"}),In=(e,t,r)=>{let n=new wn(r,"&"),o=Mc(e,t,n);return ur(o)?he(P1(n.disjoints)):Zt(o)?e:o},Bc=(e,t,r)=>{let n=r.scope.resolveTypeNode(e),o=r.scope.resolveTypeNode(t),i={},s=we({...n,...o});for(let a of s)i[a]=ci(n,a)?ci(o,a)?iI(a,n[a],o[a],r):n[a]:ci(o,a)?o[a]:xe(Nc);return i},VB=e=>e[0]&&(e[0][0]==="value"||e[0][0]==="class"),Qm=e=>{let t={type:e,path:new We,lastDomain:"undefined"};return Tr(e.node,t)},Tr=(e,t)=>{if(typeof e=="string")return t.type.scope.resolve(e).flat;let r=Qs(e),n=GB(r?e.node:e,t);return r?[["config",{config:S1(e.config),node:n}]]:n},GB=(e,t)=>{let r=we(e);if(r.length===1){let o=r[0],i=e[o];if(i===!0)return o;t.lastDomain=o;let s=Xm(i,t);return VB(s)?s:[["domain",o],...s]}let n={};for(let o of r)t.lastDomain=o,n[o]=Xm(e[o],t);return[["domains",n]]},jc=(e,t)=>JB(e,t)&&sI(e[t]),JB=(e,t)=>{let r=we(e);return r.length===1&&r[0]===t},mi=e=>({object:{class:Array,props:{[Or.index]:e}}});function eh(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Oe=class{shift(){return this.chars[this.i++]??""}get lookahead(){return this.chars[this.i]??""}shiftUntil(t){let r="";for(;this.lookahead;){if(t(this,r))if(r[r.length-1]===Oe.escapeToken)r=r.slice(0,-1);else break;r+=this.shift()}return r}shiftUntilNextTerminator(){return this.shiftUntil(Oe.lookaheadIsNotWhitespace),this.shiftUntil(Oe.lookaheadIsTerminator)}get unscanned(){return this.chars.slice(this.i,this.chars.length).join("")}lookaheadIs(t){return this.lookahead===t}lookaheadIsIn(t){return this.lookahead in t}constructor(t){eh(this,"chars",void 0),eh(this,"i",void 0),eh(this,"finalized",!1),this.chars=[...t],this.i=0}};(function(e){var t=e.lookaheadIsTerminator=p=>p.lookahead in o,r=e.lookaheadIsNotWhitespace=p=>p.lookahead!==f,n=e.comparatorStartChars={"<":!0,">":!0,"=":!0},o=e.terminatingChars={...n,"|":!0,"&":!0,")":!0,"[":!0,"%":!0," ":!0},i=e.comparators={"<":!0,">":!0,"<=":!0,">=":!0,"==":!0},s=e.oneCharComparators={"<":!0,">":!0},a=e.comparatorDescriptions={"<":"less than",">":"more than","<=":"at most",">=":"at least","==":"exactly"},u=e.invertedComparators={"<":">",">":"<","<=":">=",">=":"<=","==":"=="},l=e.branchTokens={"|":!0,"&":!0},c=e.escapeToken="\\",f=e.whiteSpaceToken=" "})(Oe||(Oe={}));function ZB(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function YB(e,t){return t.get?t.get.call(e):t.value}function XB(e,t,r){if(t.set)t.set.call(e,r);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=r}}function aI(e,t,r){if(!t.has(e))throw new TypeError("attempted to "+r+" private field on non-instance");return t.get(e)}function zc(e,t){var r=aI(e,t,"get");return YB(e,r)}function QB(e,t,r){ZB(e,t),t.set(e,r)}function e6(e,t,r){var n=aI(e,t,"set");return XB(e,n,r),r}function Wr(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var rh=class extends TypeError{constructor(t){super(`${t}`),Wr(this,"cause",void 0),this.cause=t}},co=class{toString(){return this.message}get message(){return this.writers.addContext(this.reason,this.path)}get reason(){return this.writers.writeReason(this.mustBe,new Lc(this.data))}get mustBe(){return typeof this.writers.mustBe=="string"?this.writers.mustBe:this.writers.mustBe(this.source)}constructor(t,r,n,o,i){Wr(this,"code",void 0),Wr(this,"path",void 0),Wr(this,"data",void 0),Wr(this,"source",void 0),Wr(this,"writers",void 0),Wr(this,"parts",void 0),this.code=t,this.path=r,this.data=n,this.source=o,this.writers=i,this.code==="multi"&&(this.parts=this.source)}},hi=new WeakMap,nh=class extends Array{mustBe(t,r){return this.add("custom",t,r)}add(t,r,n){let o=We.from(n?.path??zc(this,hi).path),i=n&&"data"in n?n.data:zc(this,hi).data,s=new co(t,o,i,r,zc(this,hi).getProblemConfig(t));return this.addProblem(s),s}addProblem(t){let r=`${t.path}`,n=this.byPath[r];if(n)if(n.parts)n.parts.push(t);else{let o=new co("multi",n.path,n.data,[n,t],zc(this,hi).getProblemConfig("multi")),i=this.indexOf(n);this[i===-1?this.length:i]=o,this.byPath[r]=o}else this.byPath[r]=t,this.push(t);this.count++}get summary(){return`${this}`}toString(){return this.join(` +`)}throw(){throw new rh(this)}constructor(t){super(),Wr(this,"byPath",{}),Wr(this,"count",0),QB(this,hi,{writable:!0,value:void 0}),e6(this,hi,t)}},Uc=nh,t6=e=>e[0].toUpperCase()+e.slice(1),oh=e=>e.map(t=>$m[t]),uI=e=>e.map(t=>zm[t]),th=e=>{if(e.length===0)return"never";if(e.length===1)return e[0];let t="";for(let r=0;r`must be ${e}${t&&` (was ${t})`}`,cI=(e,t)=>t.length===0?t6(e):t.length===1&&zs(t[0])?`Item at index ${t[0]} ${e}`:`${t} ${e}`,uo={divisor:{mustBe:e=>e===1?"an integer":`a multiple of ${e}`},class:{mustBe:e=>{let t=Pc(e);return t?zm[t]:`an instance of ${e.name}`},writeReason:(e,t)=>ao(e,t.className)},domain:{mustBe:e=>$m[e],writeReason:(e,t)=>ao(e,t.domain)},missing:{mustBe:()=>"defined",writeReason:e=>ao(e,"")},extraneous:{mustBe:()=>"removed",writeReason:e=>ao(e,"")},bound:{mustBe:e=>`${Oe.comparatorDescriptions[e.comparator]} ${e.limit}${e.units?` ${e.units}`:""}`,writeReason:(e,t)=>ao(e,`${t.size}`)},regex:{mustBe:e=>`a string matching ${e}`},value:{mustBe:Te},branches:{mustBe:e=>th(e.map(t=>`${t.path} must be ${t.parts?th(t.parts.map(r=>r.mustBe)):t.mustBe}`)),writeReason:(e,t)=>`${e} (was ${t})`,addContext:(e,t)=>t.length?`At ${t}, ${e}`:e},multi:{mustBe:e=>"\u2022 "+e.map(t=>t.mustBe).join(` +\u2022 `),writeReason:(e,t)=>`${t} must be... +${e}`,addContext:(e,t)=>t.length?`At ${t}, ${e}`:e},custom:{mustBe:e=>e},cases:{mustBe:e=>th(e)}},lI=we(uo),r6=()=>{let e={},t;for(t of lI)e[t]={mustBe:uo[t].mustBe,writeReason:uo[t].writeReason??ao,addContext:uo[t].addContext??cI};return e},n6=r6(),fI=e=>{if(!e)return n6;let t={};for(let r of lI)t[r]={mustBe:e[r]?.mustBe??uo[r].mustBe,writeReason:e[r]?.writeReason??uo[r].writeReason??e.writeReason??ao,addContext:e[r]?.addContext??uo[r].addContext??e.addContext??cI};return t};function o6(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function i6(e,t){return t.get?t.get.call(e):t.value}function s6(e,t,r){if(t.set)t.set.call(e,r);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=r}}function mI(e,t,r){if(!t.has(e))throw new TypeError("attempted to "+r+" private field on non-instance");return t.get(e)}function ih(e,t){var r=mI(e,t,"get");return i6(e,r)}function a6(e,t,r){o6(e,t),t.set(e,r)}function u6(e,t,r){var n=mI(e,t,"set");return s6(e,n,r),r}function Ar(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var c6=()=>({mustBe:[],writeReason:[],addContext:[],keys:[]}),l6=["mustBe","writeReason","addContext"],hI=(e,t)=>{let r=new sh(t,e);Wc(e.flat,r);let n=new gI(r);if(r.problems.count)n.problems=r.problems;else{for(let[o,i]of r.entriesToPrune)delete o[i];n.data=r.data}return n},gI=class{constructor(){Ar(this,"data",void 0),Ar(this,"problems",void 0)}},ea=new WeakMap,sh=class{getProblemConfig(t){let r={};for(let n of l6)r[n]=this.traversalConfig[n][0]??this.rootScope.config.codes[t][n];return r}traverseConfig(t,r){for(let o of t)this.traversalConfig[o[0]].unshift(o[1]);let n=Wc(r,this);for(let o of t)this.traversalConfig[o[0]].shift();return n}traverseKey(t,r){let n=this.data;this.data=this.data[t],this.path.push(t);let o=Wc(r,this);return this.path.pop(),n[t]!==this.data&&(n[t]=this.data),this.data=n,o}traverseResolution(t){let r=this.type.scope.resolve(t),n=r.qualifiedName,o=this.data,i=xn(o,"object");if(i){let u=ih(this,ea)[n];if(u){if(u.includes(o))return!0;u.push(o)}else ih(this,ea)[n]=[o]}let s=this.type;this.type=r;let a=Wc(r.flat,this);return this.type=s,i&&ih(this,ea)[n].pop(),a}traverseBranches(t){let r=this.failFast;this.failFast=!0;let n=this.problems,o=new Uc(this);this.problems=o;let i=this.path,s=this.entriesToPrune,a=!1;for(let u of t)if(this.path=new We,this.entriesToPrune=[],Hc(u,this)){a=!0,s.push(...this.entriesToPrune);break}return this.path=i,this.entriesToPrune=s,this.problems=n,this.failFast=r,a||!this.problems.add("branches",o)}constructor(t,r){Ar(this,"data",void 0),Ar(this,"type",void 0),Ar(this,"path",void 0),Ar(this,"problems",void 0),Ar(this,"entriesToPrune",void 0),Ar(this,"failFast",void 0),Ar(this,"traversalConfig",void 0),Ar(this,"rootScope",void 0),a6(this,ea,{writable:!0,value:void 0}),this.data=t,this.type=r,this.path=new We,this.problems=new Uc(this),this.entriesToPrune=[],this.failFast=!1,this.traversalConfig=c6(),u6(this,ea,{}),this.rootScope=r.scope}},Wc=(e,t)=>typeof e=="string"?De(t.data)===e||!t.problems.add("domain",e):Hc(e,t),Hc=(e,t)=>{let r=!0;for(let n=0;ne[0]in t.data?t.traverseKey(e[0],e[1]):(t.problems.add("missing",void 0,{path:t.path.concat(e[0]),data:void 0}),!1),dI=e=>(t,r)=>{let n=!0,o={...t.required};for(let s in r.data)if(t.required[s]?(n=r.traverseKey(s,t.required[s])&&n,delete o[s]):t.optional[s]?n=r.traverseKey(s,t.optional[s])&&n:t.index&&_c.test(s)?n=r.traverseKey(s,t.index)&&n:e==="distilledProps"?r.failFast?r.entriesToPrune.push([r.data,s]):delete r.data[s]:(n=!1,r.problems.add("extraneous",r.data[s],{path:r.path.concat(s)})),!n&&r.failFast)return!1;let i=Object.keys(o);if(i.length){for(let s of i)r.problems.add("missing",void 0,{path:r.path.concat(s)});return!1}return n},f6={regex:H1,divisor:j1,domains:(e,t)=>{let r=e[De(t.data)];return r?Hc(r,t):!t.problems.add("cases",oh(we(e)))},domain:(e,t)=>De(t.data)===e||!t.problems.add("domain",e),bound:W1,optionalProp:(e,t)=>e[0]in t.data?t.traverseKey(e[0],e[1]):!0,requiredProp:pI,prerequisiteProp:pI,indexProp:(e,t)=>{if(!Array.isArray(t.data))return t.problems.add("class",Array),!1;let r=!0;for(let n=0;nt.traverseBranches(e),switch:(e,t)=>{let r=_1(t.data,e.path),n=rI(e.kind,r);if(ci(e.cases,n))return Hc(e.cases[n],t);let o=we(e.cases),i=t.path.concat(e.path),s=e.kind==="value"?o:e.kind==="domain"?oh(o):e.kind==="class"?uI(o):xe(`Unexpectedly encountered rule kind '${e.kind}' during traversal`);return t.problems.add("cases",s,{path:i,data:r}),!1},alias:(e,t)=>t.traverseResolution(e),class:$1,narrow:(e,t)=>{let r=t.problems.count,n=e(t.data,t.problems);return!n&&t.problems.count===r&&t.problems.mustBe(e.name?`valid according to ${e.name}`:"valid"),n},config:({config:e,node:t},r)=>r.traverseConfig(e,t),value:(e,t)=>t.data===e||!t.problems.add("value",e),morph:(e,t)=>{let r=e(t.data,t.problems);if(t.problems.length)return!1;if(r instanceof co)return t.problems.addProblem(r),!1;if(r instanceof gI){if(r.problems){for(let n of r.problems)t.problems.addProblem(n);return!1}return t.data=r.data,!0}return t.data=r,!0},distilledProps:dI("distilledProps"),strictProps:dI("strictProps")};var _n=new Proxy(()=>_n,{get:()=>_n});var ah=(e,t,r,n)=>{let o={node:e,flat:[["alias",e]],allows:a=>!i(a).problems,assert:a=>{let u=i(a);return u.problems?u.problems.throw():u.data},infer:_n,inferIn:_n,qualifiedName:p6(e)?n.getAnonymousQualifiedName(e):`${n.name}.${e}`,definition:t,scope:n,includesMorph:!1,config:r},i={[e]:a=>hI(i,a)}[e];return Object.assign(i,o)},uh=e=>e?.infer===_n,p6=e=>e[0]==="\u03BB";var yI=e=>{let t=e.scanner.shiftUntilNextTerminator();e.setRoot(d6(e,t))},d6=(e,t)=>e.ctx.type.scope.addParsedReferenceIfResolvable(t,e.ctx)?t:m6(t)??e.error(t===""?ch(e):h6(t)),m6=e=>{let t=Ws(e);if(t!==void 0)return{number:{value:t}};let r=jm(e);if(r!==void 0)return{bigint:{value:r}}},h6=e=>`'${e}' is unresolvable`,ch=e=>{let t=e.previousOperator();return t?lh(t,e.scanner.unscanned):g6(e.scanner.unscanned)},lh=(e,t)=>`Token '${e}' requires a right operand${t?` before '${t}'`:""}`,g6=e=>`Expected an expression${e?` before '${e}'`:""}`;var fh=(e,t)=>({node:t.type.scope.resolveTypeNode(Ke(e[0],t)),config:e[2]});var Yt=e=>Object.isFrozen(e)?e:Array.isArray(e)?Object.freeze(e.map(Yt)):y6(e),y6=e=>{for(let t in e)Yt(e[t]);return e};var b6=Yt({regex:Us.source}),v6=Yt({range:{min:{comparator:">=",limit:0}},divisor:1}),bI=(e,t)=>{let r=t.type.scope.resolveNode(Ke(e[1],t)),n=we(r).map(c=>w6(c,r[c])),o=vI(n);if(!o.length)return Dc(t.path,"keyof");let i={};for(let c of o){let f=typeof c;if(f==="string"||f==="number"||f==="symbol"){var s,a;(s=i)[a=f]??(s[a]=[]),i[f].push({value:c})}else if(c===Us){var u,l;(u=i).string??(u.string=[]),i.string.push(b6),(l=i).number??(l.number=[]),i.number.push(v6)}else return xe(`Unexpected keyof key '${Te(c)}'`)}return Object.fromEntries(Object.entries(i).map(([c,f])=>[c,f.length===1?f[0]:f]))},x6={bigint:so(0n),boolean:so(!1),null:[],number:so(0),object:[],string:so(""),symbol:so(Symbol()),undefined:[]},w6=(e,t)=>e!=="object"||t===!0?x6[e]:vI(Cr(t).map(r=>E6(r))),vI=e=>{if(!e.length)return[];let t=e[0];for(let r=1;re[r].includes(n));return t},E6=e=>{let t=[];if("props"in e)for(let r of Object.keys(e.props))r===Or.index?t.push(Us):t.includes(r)||(t.push(r),Us.test(r)&&t.push(Cc(r,`Unexpectedly failed to parse an integer from key '${r}'`)));if("class"in e){let r=typeof e.class=="string"?Hs[e.class]:e.class;for(let n of so(r.prototype))t.includes(n)||t.push(n)}return t};var wI=(e,t)=>{if(typeof e[2]!="function")return he(S6(e[2]));let r=Ke(e[0],t),n=t.type.scope.resolveTypeNode(r),o=e[2];t.type.includesMorph=!0;let i,s={};for(i in n){let a=n[i];a===!0?s[i]={rules:{},morph:o}:typeof a=="object"?s[i]=En(a)?a.map(u=>xI(u,o)):xI(a,o):xe(`Unexpected predicate value for domain '${i}': ${Te(a)}`)}return s},xI=(e,t)=>Jm(e)?{...e,morph:e.morph?Array.isArray(e.morph)?[...e.morph,t]:[e.morph,t]:t}:{rules:e,morph:t},S6=e=>`Morph expression requires a function following '|>' (was ${typeof e})`;var EI=e=>`Expected a Function or Record operand (${Te(e)} was invalid)`,SI=(e,t,r,n)=>{let o=we(t);if(!xn(e,"object"))return he(EI(e));let i={};if(typeof e=="function"){let s={[n]:e};for(let a of o)i[a]=s}else for(let s of o){if(e[s]===void 0)continue;let a={[n]:e[s]};if(typeof a[n]!="function")return he(EI(a));i[s]=a}return i};var II=(e,t)=>{let r=Ke(e[0],t),n=t.type.scope.resolveNode(r),o=Qs(n),i=o?n.node:n,s=In(r,SI(e[2],i,t,"narrow"),t.type);return o?{config:n.config,node:s}:s};var CI=(e,t)=>{if(_6(e))return TI[e[1]](e,t);if(C6(e))return OI[e[0]](e,t);let r={length:["!",{number:{value:e.length}}]};for(let n=0;n{if(e[2]===void 0)return he(lh(e[1],""));let r=Ke(e[0],t),n=Ke(e[2],t);return e[1]==="&"?In(r,n,t.type):Bc(r,n,t.type)},I6=(e,t)=>mi(Ke(e[0],t));var _6=e=>TI[e[1]]!==void 0,TI={"|":_I,"&":_I,"[]":I6,"=>":II,"|>":wI,":":fh},OI={keyof:bI,instanceof:e=>typeof e[1]!="function"?he(`Expected a constructor following 'instanceof' operator (was ${typeof e[1]}).`):{object:{class:e[1]}},"===":e=>({[De(e[1])]:{value:e[1]}}),node:e=>e[1]},C6=e=>OI[e[0]]!==void 0;var AI=(e,t)=>{let r={};for(let n in e){let o=n,i=!1;n[n.length-1]==="?"&&(n[n.length-2]===Oe.escapeToken?o=`${n.slice(0,-2)}?`:(o=n.slice(0,-1),i=!0)),t.path.push(o);let s=Ke(e[n],t);t.path.pop(),r[o]=i?["?",s]:s}return{object:{props:r}}};var kI=e=>`Unmatched )${e===""?"":` before ${e}`}`,NI="Missing )",RI=(e,t)=>`Left bounds are only valid when paired with right bounds (try ...${t}${e})`,Kc=e=>`Left-bounded expressions must specify their limits using < or <= (was ${e})`,DI=(e,t,r,n)=>`An expression may have at most one left bound (parsed ${e}${Oe.invertedComparators[t]}, ${r}${Oe.invertedComparators[n]})`;function ta(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Vc=class{error(t){return he(t)}hasRoot(){return this.root!==void 0}resolveRoot(){return this.assertHasRoot(),this.ctx.type.scope.resolveTypeNode(this.root)}rootToString(){return this.assertHasRoot(),Te(this.root)}ejectRootIfLimit(){this.assertHasRoot();let t=typeof this.root=="string"?this.ctx.type.scope.resolveNode(this.root):this.root;if(jc(t,"number")){let r=t.number.value;return this.root=void 0,r}}ejectRangeIfOpen(){if(this.branches.range){let t=this.branches.range;return delete this.branches.range,t}}assertHasRoot(){if(this.root===void 0)return xe("Unexpected interaction with unset root")}assertUnsetRoot(){if(this.root!==void 0)return xe("Unexpected attempt to overwrite root")}setRoot(t){this.assertUnsetRoot(),this.root=t}rootToArray(){this.root=mi(this.ejectRoot())}intersect(t){this.root=In(this.ejectRoot(),t,this.ctx.type)}ejectRoot(){this.assertHasRoot();let t=this.root;return this.root=void 0,t}ejectFinalizedRoot(){this.assertHasRoot();let t=this.root;return this.root=T6,t}finalize(){if(this.groups.length)return this.error(NI);this.finalizeBranches(),this.scanner.finalized=!0}reduceLeftBound(t,r){let n=Oe.invertedComparators[r];if(!Gt(n,qc))return this.error(Kc(r));if(this.branches.range)return this.error(DI(`${this.branches.range.limit}`,this.branches.range.comparator,`${t}`,n));this.branches.range={limit:t,comparator:n}}finalizeBranches(){this.assertRangeUnset(),this.branches.union?(this.pushRootToBranch("|"),this.setRoot(this.branches.union)):this.branches.intersection&&this.setRoot(In(this.branches.intersection,this.ejectRoot(),this.ctx.type))}finalizeGroup(){this.finalizeBranches();let t=this.groups.pop();if(!t)return this.error(kI(this.scanner.unscanned));this.branches=t}pushRootToBranch(t){this.assertRangeUnset(),this.branches.intersection=this.branches.intersection?In(this.branches.intersection,this.ejectRoot(),this.ctx.type):this.ejectRoot(),t==="|"&&(this.branches.union=this.branches.union?Bc(this.branches.union,this.branches.intersection,this.ctx.type):this.branches.intersection,delete this.branches.intersection)}assertRangeUnset(){if(this.branches.range)return this.error(RI(`${this.branches.range.limit}`,this.branches.range.comparator))}reduceGroupOpen(){this.groups.push(this.branches),this.branches={}}previousOperator(){return this.branches.range?.comparator??this.branches.intersection?"&":this.branches.union?"|":void 0}shiftedByOne(){return this.scanner.shift(),this}constructor(t,r){ta(this,"ctx",void 0),ta(this,"scanner",void 0),ta(this,"root",void 0),ta(this,"branches",void 0),ta(this,"groups",void 0),this.ctx=r,this.branches={},this.groups=[],this.scanner=new Oe(t)}},T6=new Proxy({},{get:()=>xe("Unexpected attempt to access ejected attributes")});var PI=(e,t)=>{let r=e.scanner.shiftUntil(O6[t]);if(e.scanner.lookahead==="")return e.error(k6(r,t));e.scanner.shift()==="/"?(Km(r),e.setRoot({string:{regex:r}})):e.setRoot({string:{value:r}})},FI={"'":1,'"':1,"/":1},O6={"'":e=>e.lookahead==="'",'"':e=>e.lookahead==='"',"/":e=>e.lookahead==="/"},A6={'"':"double-quote","'":"single-quote","/":"forward slash"},k6=(e,t)=>`${t}${e} requires a closing ${A6[t]}`;var Gc=e=>e.scanner.lookahead===""?e.error(ch(e)):e.scanner.lookahead==="("?e.shiftedByOne().reduceGroupOpen():e.scanner.lookaheadIsIn(FI)?PI(e,e.scanner.shift()):e.scanner.lookahead===" "?Gc(e.shiftedByOne()):yI(e);var $I=e=>`Bounded expression ${e} must be a number, string or array`;var MI=(e,t)=>{let r=N6(e,t),n=e.ejectRootIfLimit();return n===void 0?D6(e,r):e.reduceLeftBound(n,r)},N6=(e,t)=>e.scanner.lookaheadIs("=")?`${t}${e.scanner.shift()}`:Gt(t,Oe.oneCharComparators)?t:e.error(R6),R6="= is not a valid comparator. Use == to check for equality",D6=(e,t)=>{let r=e.scanner.shiftUntilNextTerminator(),n=Ws(r,$6(t,r+e.scanner.unscanned)),o=e.ejectRangeIfOpen(),i={comparator:t,limit:n},s=o?ph(i,Wm)?pi("min",o,i)==="l"?e.error(M6({min:o,max:i})):{min:o,max:i}:e.error(Kc(t)):F6(i,"==")?i:ph(i,qc)?{min:i}:ph(i,Wm)?{max:i}:xe(`Unexpected comparator '${i.comparator}'`);e.intersect(P6(s,e))},P6=(e,t)=>{let r=t.resolveRoot(),n=we(r),o={},i={range:e};return n.every(a=>{switch(a){case"string":return o.string=i,!0;case"number":return o.number=i,!0;case"object":return o.object=i,r.object===!0?!1:Cr(r.object).every(u=>"class"in u&&u.class===Array);default:return!1}})||t.error($I(t.rootToString())),o},F6=(e,t)=>e.comparator===t,ph=(e,t)=>e.comparator in t,$6=(e,t)=>`Comparator ${e} must be followed by a number literal (was '${t}')`,M6=e=>`${kc(e)} is empty`;var jI=e=>`Divisibility operand ${e} must be a number`;var qI=e=>{let t=e.scanner.shiftUntilNextTerminator(),r=Cc(t,LI(t));r===0&&e.error(LI(0));let n=we(e.resolveRoot());n.length===1&&n[0]==="number"?e.intersect({number:{divisor:r}}):e.error(jI(e.rootToString()))},LI=e=>`% operator must be followed by a non-zero integer literal (was ${e})`;var dh=e=>{let t=e.scanner.shift();return t===""?e.finalize():t==="["?e.scanner.shift()==="]"?e.rootToArray():e.error(L6):Gt(t,Oe.branchTokens)?e.pushRootToBranch(t):t===")"?e.finalizeGroup():Gt(t,Oe.comparatorStartChars)?MI(e,t):t==="%"?qI(e):t===" "?dh(e):xe(j6(t))},j6=e=>`Unexpected character '${e}'`,L6="Missing expected ']'";var BI=(e,t)=>t.type.scope.parseCache.get(e)??t.type.scope.parseCache.set(e,q6(e,t)??B6(e,t)),q6=(e,t)=>{if(t.type.scope.addParsedReferenceIfResolvable(e,t))return e;if(e.endsWith("[]")){let r=e.slice(0,-2);if(t.type.scope.addParsedReferenceIfResolvable(e,t))return mi(r)}},B6=(e,t)=>{let r=new Vc(e,t);return Gc(r),z6(r)},z6=e=>{for(;!e.scanner.finalized;)U6(e);return e.ejectFinalizedRoot()},U6=e=>e.hasRoot()?dh(e):Gc(e);var Ke=(e,t)=>{let r=De(e);if(r==="string")return BI(e,t);if(r!=="object")return he(mh(r));let n=fi(e);switch(n){case"Object":return AI(e,t);case"Array":return CI(e,t);case"RegExp":return{string:{regex:e.source}};case"Function":if(uh(e))return t.type.scope.addAnonymousTypeReference(e,t);if(W6(e)){let o=e();if(uh(o))return t.type.scope.addAnonymousTypeReference(o,t)}return he(mh("Function"));default:return he(mh(n??Te(e)))}},Wce=Symbol("as"),W6=e=>typeof e=="function"&&e.length===0,mh=e=>`Type definitions must be strings or objects (was ${e})`;function H6(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var gi=class{get root(){return this.cache}has(t){return t in this.cache}get(t){return this.cache[t]}set(t,r){return this.cache[t]=r,r}constructor(){H6(this,"cache",{})}},Jc=class extends gi{set(t,r){return this.cache[t]=Yt(r),r}};function KI(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function K6(e,t){return t.get?t.get.call(e):t.value}function V6(e,t,r){if(t.set)t.set.call(e,r);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=r}}function VI(e,t,r){if(!t.has(e))throw new TypeError("attempted to "+r+" private field on non-instance");return t.get(e)}function Kr(e,t){var r=VI(e,t,"get");return K6(e,r)}function zI(e,t,r){KI(e,t),t.set(e,r)}function UI(e,t,r){var n=VI(e,t,"set");return V6(e,n,r),r}function Hr(e,t,r){if(!t.has(e))throw new TypeError("attempted to get private field on non-instance");return r}function Zc(e,t){KI(e,t),t.add(e)}function xt(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var G6=e=>({codes:fI(e.codes),keys:e.keys??"loose"}),J6=0,WI={},hh={};var lo=new WeakMap,yi=new WeakMap,HI=new WeakSet,Yc=new WeakSet,yh=new WeakSet,Xc=new WeakSet,bh=class{getAnonymousQualifiedName(t){let r=0,n=t;for(;this.isResolvable(n);)n=`${t}${r++}`;return`${this.name}.${n}`}addAnonymousTypeReference(t,r){var n;return(n=r.type).includesMorph||(n.includesMorph=t.includesMorph),t.node}get infer(){return _n}compile(){if(!hh[this.name]){for(let t in this.aliases)this.resolve(t);hh[this.name]=Kr(this,yi).root}return Kr(this,yi).root}addParsedReferenceIfResolvable(t,r){var n;let o=Hr(this,Xc,vh).call(this,t,"undefined",[t]);return o?((n=r.type).includesMorph||(n.includesMorph=o.includesMorph),!0):!1}resolve(t){return Hr(this,Xc,vh).call(this,t,"throw",[t])}resolveNode(t){return typeof t=="string"?this.resolveNode(this.resolve(t).node):t}resolveTypeNode(t){let r=this.resolveNode(t);return Qs(r)?r.node:r}isResolvable(t){return Kr(this,lo).has(t)||this.aliases[t]}constructor(t,r={}){Zc(this,HI),Zc(this,Yc),Zc(this,yh),Zc(this,Xc),xt(this,"aliases",void 0),xt(this,"name",void 0),xt(this,"config",void 0),xt(this,"parseCache",void 0),zI(this,lo,{writable:!0,value:void 0}),zI(this,yi,{writable:!0,value:void 0}),xt(this,"expressions",void 0),xt(this,"intersection",void 0),xt(this,"union",void 0),xt(this,"arrayOf",void 0),xt(this,"keyOf",void 0),xt(this,"valueOf",void 0),xt(this,"instanceOf",void 0),xt(this,"narrow",void 0),xt(this,"morph",void 0),xt(this,"type",void 0),this.aliases=t,this.parseCache=new Jc,UI(this,lo,new gi),UI(this,yi,new gi),this.expressions={intersection:(n,o,i)=>this.type([n,"&",o],i),union:(n,o,i)=>this.type([n,"|",o],i),arrayOf:(n,o)=>this.type([n,"[]"],o),keyOf:(n,o)=>this.type(["keyof",n],o),node:(n,o)=>this.type(["node",n],o),instanceOf:(n,o)=>this.type(["instanceof",n],o),valueOf:(n,o)=>this.type(["===",n],o),narrow:(n,o,i)=>this.type([n,"=>",o],i),morph:(n,o,i)=>this.type([n,"|>",o],i)},this.intersection=this.expressions.intersection,this.union=this.expressions.union,this.arrayOf=this.expressions.arrayOf,this.keyOf=this.expressions.keyOf,this.valueOf=this.expressions.valueOf,this.instanceOf=this.expressions.instanceOf,this.narrow=this.expressions.narrow,this.morph=this.expressions.morph,this.type=Object.assign((n,o={})=>{let i=ah("\u03BBtype",n,o,this),s=Hr(this,yh,GI).call(this,i),a=Ke(n,s);return i.node=Yt(Bs(o)?{config:o,node:this.resolveTypeNode(a)}:a),i.flat=Yt(Qm(i)),i},{from:this.expressions.node}),this.name=Hr(this,HI,Z6).call(this,r),r.standard!==!1&&Hr(this,Yc,gh).call(this,[hh.standard],"imports"),r.imports&&Hr(this,Yc,gh).call(this,r.imports,"imports"),r.includes&&Hr(this,Yc,gh).call(this,r.includes,"includes"),this.config=G6(r)}};function Z6(e){let t=e.name?WI[e.name]?he(`A scope named '${e.name}' already exists`):e.name:`scope${++J6}`;return WI[t]=this,t}function gh(e,t){for(let r of e)for(let n in r)(Kr(this,lo).has(n)||n in this.aliases)&&he(X6(n)),Kr(this,lo).set(n,r[n]),t==="includes"&&Kr(this,yi).set(n,r[n])}function GI(e){return{type:e,path:new We}}function vh(e,t,r){let n=Kr(this,lo).get(e);if(n)return n;let o=this.aliases[e];if(!o)return t==="throw"?xe(`Unexpectedly failed to resolve alias '${e}'`):void 0;let i=ah(e,o,{},this),s=Hr(this,yh,GI).call(this,i);Kr(this,lo).set(e,i),Kr(this,yi).set(e,i);let a=Ke(o,s);if(typeof a=="string"){if(r.includes(a))return he(Y6(e,r));r.push(a),a=Hr(this,Xc,vh).call(this,a,"throw",r).node}return i.node=Yt(a),i.flat=Yt(Qm(i)),i}var wt=(e,t={})=>new bh(e,t),xh=wt({},{name:"root",standard:!1}),cr=xh.type,Y6=(e,t)=>`Alias '${e}' has a shallow resolution cycle: ${[...t,e].join("=>")}`,X6=e=>`Alias '${e}' is already defined`;var Qc=wt({Function:["node",{object:{class:Function}}],Date:["node",{object:{class:Date}}],Error:["node",{object:{class:Error}}],Map:["node",{object:{class:Map}}],RegExp:["node",{object:{class:RegExp}}],Set:["node",{object:{class:Set}}],WeakMap:["node",{object:{class:WeakMap}}],WeakSet:["node",{object:{class:WeakSet}}],Promise:["node",{object:{class:Promise}}]},{name:"jsObjects",standard:!1}),JI=Qc.compile();var ZI={bigint:!0,boolean:!0,null:!0,number:!0,object:!0,string:!0,symbol:!0,undefined:!0},el=wt({any:["node",ZI],bigint:["node",{bigint:!0}],boolean:["node",{boolean:!0}],false:["node",{boolean:{value:!1}}],never:["node",{}],null:["node",{null:!0}],number:["node",{number:!0}],object:["node",{object:!0}],string:["node",{string:!0}],symbol:["node",{symbol:!0}],true:["node",{boolean:{value:!0}}],unknown:["node",ZI],void:["node",{undefined:!0}],undefined:["node",{undefined:!0}]},{name:"ts",standard:!1}),fo=el.compile();var Q6=e=>{let t=e.replace(/[- ]+/g,""),r=0,n,o,i;for(let s=t.length-1;s>=0;s--)n=t.substring(s,s+1),o=parseInt(n,10),i?(o*=2,o>=10?r+=o%10+1:r+=o):r+=o,i=!i;return!!(r%10===0&&t)},ez=/^(?:4[0-9]{12}(?:[0-9]{3,6})?|5[1-5][0-9]{14}|(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12,15}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11}|6[27][0-9]{14}|^(81[0-9]{14,17}))$/,YI=cr([ez,"=>",(e,t)=>Q6(e)||!t.mustBe("a valid credit card number")],{mustBe:"a valid credit card number"});var tz=/^[./-]$/,rz=/^([+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T]((([01]\d|2[0-3])((:?)[0-5]\d)?|24:?00)([.,]\d+(?!:))?)?(\17[0-5]\d([.,]\d+)?)?([zZ]|([+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/,nz=e=>!isNaN(e),tl=e=>`a ${e}-formatted date`,oz=(e,t)=>{if(!t?.format){let a=new Date(e);return nz(a)?a:"a valid date"}if(t.format==="iso8601")return rz.test(e)?new Date(e):tl("iso8601");let r=e.split(tz),n=e[r[0].length],o=n?t.format.split(n):[t.format];if(r.length!==o.length)return tl(t.format);let i={};for(let a=0;a",(e,t)=>{let r=oz(e);return typeof r=="string"?t.mustBe(r):r}]);var iz=cr([Mm,"|>",e=>parseFloat(e)],{mustBe:"a well-formed numeric string"}),sz=cr([fo.string,"|>",(e,t)=>{if(!zs(e))return t.mustBe("a well-formed integer string");let r=parseInt(e);return Number.isSafeInteger(r)?r:t.mustBe("an integer in the range Number.MIN_SAFE_INTEGER to Number.MAX_SAFE_INTEGER")}]),az=cr(/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/,{mustBe:"a valid email"}),uz=cr(/^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$/,{mustBe:"a valid UUID"}),cz=cr(/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/,{mustBe:"a valid semantic version (see https://semver.org/)"}),lz=cr([fo.string,"|>",e=>JSON.parse(e)],{mustBe:"a JSON-parsable string"}),rl=wt({alpha:[/^[A-Za-z]*$/,":",{mustBe:"only letters"}],alphanumeric:[/^[A-Za-z\d]*$/,":",{mustBe:"only letters and digits"}],lowercase:[/^[a-z]*$/,":",{mustBe:"only lowercase letters"}],uppercase:[/^[A-Z]*$/,":",{mustBe:"only uppercase letters"}],creditCard:YI,email:az,uuid:uz,parsedNumber:iz,parsedInteger:sz,parsedDate:XI,semver:cz,json:lz,integer:["node",{number:{divisor:1}}]},{name:"validation",standard:!1}),QI=rl.compile();var nl=wt({},{name:"standard",includes:[fo,JI,QI],standard:!1}),fz=nl.compile(),Vr={root:xh,tsKeywords:el,jsObjects:Qc,validation:rl,ark:nl};var ra=nl.type;var pz=Vr.ark.intersection,dz=Vr.ark.union,mz=Vr.ark.arrayOf,hz=Vr.ark.keyOf,gz=Vr.ark.instanceOf,yz=Vr.ark.valueOf,bz=Vr.ark.narrow,vz=Vr.ark.morph;var{DataRequest:Mle,DataResponse:e_}=wt({DataRequest:{id:"number",method:"string",params:"any[]"},DataResponse:{id:"number","eventName?":"string",payload:"any",error:"any"}}).compile(),ol="__METHODS__",il="__EVAL__";var t_=()=>({events:{},emit(e,...t){let r=this.events[e]||[];for(let n=0,o=r.length;n{this.events[e]=this.events[e]?.filter(r=>t!==r)}}});function po(){let e=t_();return e.once=(t,r)=>{let n=(...i)=>{o(),r(...i)},o=e.on(t,n);return o},e}function xz(e){return Object.assign(new Error,e)}var mo=class{pending=new Map;terminateState=!1;terminationHandler=null;lastId=0;worker;constructor(){this.worker=this.setupWorker(),this.worker.onMessage(t=>this.onMessage(t.data)),this.worker.onError(t=>this.onError(t.error))}internal=po();evt=po();task=po();onMessage(t){if(this.terminateState==="finished")return;if(t==="ready"){this.internal.emit("ready");return}let{data:r,problems:n}=e_(t);if(n)throw new Error(n.toString());if(r.eventName){this.evt.emit(r.eventName,r.payload);return}this.task.emit(r.id,r.payload,r.error),this.terminateState==="requested"&&this.terminate()}onError(t){for(let r of this.pending.values())r.abort(t);this.pending.clear(),this.worker.terminate()}methods(){return this.invoke(ol)}eval(t,r,n){let o=[t,...r];return this.invoke(il,o,{transfer:n})}send({id:t,method:r,params:n,transfer:o,timeout:i},s=new AbortController){let a=s.signal;return this.pending.set(t,s),new Promise((u,l)=>{this.worker.send({id:t,method:r,params:n},{transfer:o});let c=-1,f=()=>{l(a?.reason),p(),window.clearTimeout(c)};i!==void 0&&(c=window.setTimeout(()=>{s.abort(new DOMException(`Timeout after ${i}ms`,"TimeoutError"))},i)),a?.addEventListener("abort",f);let p=this.task.once(t,(d,h)=>{a?.removeEventListener("abort",f),h?l(xz(h)):u(d)})}).catch(u=>{if(u instanceof DOMException&&["AbortError","TimeoutError"].includes(u.name))return this.terminate(!0).then(()=>{throw u});throw u}).finally(()=>{this.pending.delete(t)})}async invoke(t,r=[],{controller:n,transfer:o}={}){if(this.terminateState!==!1)throw new Error("Worker is terminated");let i=++this.lastId;return await this.worker.readyPromise,await this.send({id:i,method:t,params:r,transfer:o},n)}busy(){return this.pending.size>0}terminate(t=!1,r){if(t){for(let n of this.pending.values())n.abort(new Error("Worker terminated"));this.pending.clear()}if(this.busy()){this.terminateState="requested";let n=new Promise(o=>{this.internal.once("terminate",o)});return r!==void 0?Promise.race([n,wz(r)]).then():n}return this.worker.terminate(),Promise.resolve()}};function wz(e){return new Promise(t=>setTimeout(()=>t(new DOMException(`Timeout after ${e}ms`,"TimeoutError")),e))}var bi=class extends mo{setupWorker(){let t=this,r=Object.assign(this.initWebWorker(),{readyPromise:new Promise(n=>t.internal.once("ready",()=>n(!0))),killed:!1,send(n,o){r.postMessage(n,o)},onMessage(n){return r.addEventListener("message",n),()=>r.removeEventListener("message",n)},onError(n){return r.addEventListener("error",n),()=>r.removeEventListener("error",n)}});return qt(r,{terminate:n=>function(){r.killed||(n.call(this),r.killed=!0,t.internal.emit("terminate")),t.terminateState="finished"}}),r}};var vi=class{workers=[];tasks=[];pending=new Map;emitter=po();#e=po();maxQueueSize=1/0;maxWorkers=Math.max((this.getMaxConcurrency()||4)-1,1);minWorkers=0;getMaxConcurrency(){return navigator.hardwareConcurrency}constructor(t={}){if(t.maxQueueSize!==void 0&&(this.maxQueueSize=Sz.assert(t.maxQueueSize)),t.maxWorkers!==void 0&&(this.maxWorkers=Ez.assert(t.maxWorkers)),t.minWorkers!==void 0){let o=Iz.assert(t.minWorkers);o==="max"?this.minWorkers=this.maxWorkers:(this.minWorkers=o,this.maxWorkers=Math.max(this.minWorkers,this.maxWorkers)),this.ensureMinWorkers()}let r={},n=o=>r[o]??=(...i)=>this.invoke(o,i);this.proxy=new Proxy(r,{get:(o,i)=>!Reflect.has(o,i)&&typeof i=="string"?n(i):Reflect.get(o,i)}),this.methods().then(o=>o.forEach(n))}eval(t,r,n={}){return this.invoke(il,[typeof t=="string"?t:t.toString(),r],n)}invoke(t,r=[],n={}){if(this.tasks.length>=this.maxQueueSize)throw new Error("Max queue size of "+this.maxQueueSize+" reached");let o={method:t,params:r,transfer:n.transfer};return this.tasks.push(o),this.pending.set(o,n.controller??new AbortController),this.next(),new Promise((i,s)=>{let a=[this.#e.on("complete",(u,l)=>{o===u&&(a.forEach(c=>c()),i(l))}),this.#e.on("error",(u,l)=>{o===u&&(a.forEach(c=>c()),s(l))})]})}methods(){return this.invoke(ol)}proxy;next(){if(this.tasks.length===0)return;let t=this.getWorker();if(!t)return;let r=this.tasks.shift();if(!this.pending.has(r))return this.next();let n=this.pending.get(r);t.invoke(r.method,r.params,{transfer:r.transfer,timeout:r.timeout,controller:n}).then(o=>{this.#e.emit("complete",r,o)}).catch(o=>{this.#e.emit("error",r,o),t.terminateState==="finished"&&this.removeWorker(t)}).finally(()=>{this.pending.delete(r),this.next()})}getWorker(){for(let t of this.workers)if(!t.busy())return t;if(this.workers.length{try{await n.terminate(t,r),this.removeWorkerFromList(n)}finally{this.emitter.emit("worker-terminate")}})).then()}get stats(){let t=this.workers.length,r=this.workers.filter(function(n){return n.busy()}).length;return{totalWorkers:t,busyWorkers:r,idleWorkers:t-r,pendingTasks:this.tasks.length,activeTasks:r}}ensureMinWorkers(){if(this.minWorkers)for(let t=this.workers.length;t=1"),Sz=ra("integer>=1"),Iz=ra('integer>=0|"max"');var r_='"use strict";var Zg=Object.create;var vu=Object.defineProperty;var Qg=Object.getOwnPropertyDescriptor;var Xg=Object.getOwnPropertyNames;var ey=Object.getPrototypeOf,ty=Object.prototype.hasOwnProperty;var D=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var ry=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Xg(t))!ty.call(e,o)&&o!==r&&vu(e,o,{get:()=>t[o],enumerable:!(n=Qg(t,o))||n.enumerable});return e};var $r=(e,t,r)=>(r=e!=null?Zg(ey(e)):{},ry(t||!e||!e.__esModule?vu(r,"default",{value:e,enumerable:!0}):r,e));var Js=D((pl,Hs)=>{(function(e){if(typeof pl=="object"&&typeof Hs<"u")Hs.exports=e();else if(typeof define=="function"&&define.amd)define([],e);else{var t;typeof window<"u"?t=window:typeof global<"u"?t=global:typeof self<"u"?t=self:t=this,t.localforage=e()}})(function(){var e,t,r;return function n(o,i,s){function a(l,d){if(!i[l]){if(!o[l]){var f=typeof require=="function"&&require;if(!d&&f)return f(l,!0);if(u)return u(l,!0);var g=new Error("Cannot find module \'"+l+"\'");throw g.code="MODULE_NOT_FOUND",g}var w=i[l]={exports:{}};o[l][0].call(w.exports,function(x){var S=o[l][1][x];return a(S||x)},w,w.exports,n,o,i,s)}return i[l].exports}for(var u=typeof require=="function"&&require,m=0;m"u"&&n(3);var f=Promise;function g(c,h){h&&c.then(function(p){h(null,p)},function(p){h(p)})}function w(c,h,p){typeof h=="function"&&c.then(h),typeof p=="function"&&c.catch(p)}function x(c){return typeof c!="string"&&(console.warn(c+" used as a key, but it is not a string."),c=String(c)),c}function S(){if(arguments.length&&typeof arguments[arguments.length-1]=="function")return arguments[arguments.length-1]}var N="local-forage-detect-blob-support",M=void 0,k={},ee=Object.prototype.toString,xe="readonly",A="readwrite";function B(c){for(var h=c.length,p=new ArrayBuffer(h),b=new Uint8Array(p),v=0;v=43)}}).catch(function(){return!1})}function F(c){return typeof M=="boolean"?f.resolve(M):L(c).then(function(h){return M=h,M})}function j(c){var h=k[c.name],p={};p.promise=new f(function(b,v){p.resolve=b,p.reject=v}),h.deferredOperations.push(p),h.dbReady?h.dbReady=h.dbReady.then(function(){return p.promise}):h.dbReady=p.promise}function O(c){var h=k[c.name],p=h.deferredOperations.pop();if(p)return p.resolve(),p.promise}function $(c,h){var p=k[c.name],b=p.deferredOperations.pop();if(b)return b.reject(h),b.promise}function R(c,h){return new f(function(p,b){if(k[c.name]=k[c.name]||Xa(),c.db)if(h)j(c),c.db.close();else return p(c.db);var v=[c.name];h&&v.push(c.version);var y=m.open.apply(m,v);h&&(y.onupgradeneeded=function(E){var I=y.result;try{I.createObjectStore(c.storeName),E.oldVersion<=1&&I.createObjectStore(N)}catch(_){if(_.name==="ConstraintError")console.warn(\'The database "\'+c.name+\'" has been upgraded from version \'+E.oldVersion+" to version "+E.newVersion+\', but the storage "\'+c.storeName+\'" already exists.\');else throw _}}),y.onerror=function(E){E.preventDefault(),b(y.error)},y.onsuccess=function(){var E=y.result;E.onversionchange=function(I){I.target.close()},p(E),O(c)}})}function U(c){return R(c,!1)}function q(c){return R(c,!0)}function W(c,h){if(!c.db)return!0;var p=!c.db.objectStoreNames.contains(c.storeName),b=c.versionc.db.version;if(b&&(c.version!==h&&console.warn(\'The database "\'+c.name+`" can\'t be downgraded from version `+c.db.version+" to version "+c.version+"."),c.version=c.db.version),v||p){if(p){var y=c.db.version+1;y>c.version&&(c.version=y)}return!0}return!1}function K(c){return new f(function(h,p){var b=new FileReader;b.onerror=p,b.onloadend=function(v){var y=btoa(v.target.result||"");h({__local_forage_encoded_blob:!0,data:y,type:c.type})},b.readAsBinaryString(c)})}function X(c){var h=B(atob(c.data));return d([h],{type:c.type})}function J(c){return c&&c.__local_forage_encoded_blob}function Zn(c){var h=this,p=h._initReady().then(function(){var b=k[h._dbInfo.name];if(b&&b.dbReady)return b.dbReady});return w(p,c,c),p}function Xh(c){j(c);for(var h=k[c.name],p=h.forages,b=0;b0&&(!c.db||y.name==="InvalidStateError"||y.name==="NotFoundError"))return f.resolve().then(function(){if(!c.db||y.name==="NotFoundError"&&!c.db.objectStoreNames.contains(c.storeName)&&c.version<=c.db.version)return c.db&&(c.version=c.db.version+1),q(c)}).then(function(){return Xh(c).then(function(){ft(c,h,p,b-1)})}).catch(p);p(y)}}function Xa(){return{forages:[],db:null,dbReady:null,deferredOperations:[]}}function eg(c){var h=this,p={db:null};if(c)for(var b in c)p[b]=c[b];var v=k[p.name];v||(v=Xa(),k[p.name]=v),v.forages.push(h),h._initReady||(h._initReady=h.ready,h.ready=Zn);var y=[];function E(){return f.resolve()}for(var I=0;I>4,C[v++]=(E&15)<<4|I>>2,C[v++]=(I&3)<<6|_&63;return T}function Ki(c){var h=new Uint8Array(c),p="",b;for(b=0;b>2],p+=vt[(h[b]&3)<<4|h[b+1]>>4],p+=vt[(h[b+1]&15)<<2|h[b+2]>>6],p+=vt[h[b+2]&63];return h.length%3===2?p=p.substring(0,p.length-1)+"=":h.length%3===1&&(p=p.substring(0,p.length-2)+"=="),p}function mg(c,h){var p="";if(c&&(p=fu.call(c)),c&&(p==="[object ArrayBuffer]"||c.buffer&&fu.call(c.buffer)==="[object ArrayBuffer]")){var b,v=Qn;c instanceof ArrayBuffer?(b=c,v+=zi):(b=c.buffer,p==="[object Int8Array]"?v+=tu:p==="[object Uint8Array]"?v+=ru:p==="[object Uint8ClampedArray]"?v+=nu:p==="[object Int16Array]"?v+=ou:p==="[object Uint16Array]"?v+=su:p==="[object Int32Array]"?v+=iu:p==="[object Uint32Array]"?v+=au:p==="[object Float32Array]"?v+=uu:p==="[object Float64Array]"?v+=cu:h(new Error("Failed to get type for BinaryArray"))),h(v+Ki(b))}else if(p==="[object Blob]"){var y=new FileReader;y.onload=function(){var E=pg+c.type+"~"+Ki(this.result);h(Qn+Wi+E)},y.readAsArrayBuffer(c)}else try{h(JSON.stringify(c))}catch(E){console.error("Couldn\'t convert value into a JSON string: ",c),h(null,E)}}function dg(c){if(c.substring(0,Ui)!==Qn)return JSON.parse(c);var h=c.substring(lu),p=c.substring(Ui,lu),b;if(p===Wi&&eu.test(h)){var v=h.match(eu);b=v[1],h=h.substring(v[0].length)}var y=pu(h);switch(p){case zi:return y;case Wi:return d([y],{type:b});case tu:return new Int8Array(y);case ru:return new Uint8Array(y);case nu:return new Uint8ClampedArray(y);case ou:return new Int16Array(y);case su:return new Uint16Array(y);case iu:return new Int32Array(y);case au:return new Uint32Array(y);case uu:return new Float32Array(y);case cu:return new Float64Array(y);default:throw new Error("Unkown type: "+p)}}var Gi={serialize:mg,deserialize:dg,stringToBuffer:pu,bufferToString:Ki};function mu(c,h,p,b){c.executeSql("CREATE TABLE IF NOT EXISTS "+h.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],p,b)}function hg(c){var h=this,p={db:null};if(c)for(var b in c)p[b]=typeof c[b]!="string"?c[b].toString():c[b];var v=new f(function(y,E){try{p.db=openDatabase(p.name,String(p.version),p.description,p.size)}catch(I){return E(I)}p.db.transaction(function(I){mu(I,p,function(){h._dbInfo=p,y()},function(_,T){E(T)})},E)});return p.serializer=Gi,v}function wt(c,h,p,b,v,y){c.executeSql(p,b,v,function(E,I){I.code===I.SYNTAX_ERR?E.executeSql("SELECT name FROM sqlite_master WHERE type=\'table\' AND name = ?",[h.storeName],function(_,T){T.rows.length?y(_,I):mu(_,h,function(){_.executeSql(p,b,v,y)},y)},y):y(E,I)},y)}function gg(c,h){var p=this;c=x(c);var b=new f(function(v,y){p.ready().then(function(){var E=p._dbInfo;E.db.transaction(function(I){wt(I,E,"SELECT * FROM "+E.storeName+" WHERE key = ? LIMIT 1",[c],function(_,T){var C=T.rows.length?T.rows.item(0).value:null;C&&(C=E.serializer.deserialize(C)),v(C)},function(_,T){y(T)})})}).catch(y)});return g(b,h),b}function yg(c,h){var p=this,b=new f(function(v,y){p.ready().then(function(){var E=p._dbInfo;E.db.transaction(function(I){wt(I,E,"SELECT * FROM "+E.storeName,[],function(_,T){for(var C=T.rows,P=C.length,z=0;z0){E(du.apply(v,[c,_,p,b-1]));return}I(z)}})})}).catch(I)});return g(y,p),y}function bg(c,h,p){return du.apply(this,[c,h,p,1])}function vg(c,h){var p=this;c=x(c);var b=new f(function(v,y){p.ready().then(function(){var E=p._dbInfo;E.db.transaction(function(I){wt(I,E,"DELETE FROM "+E.storeName+" WHERE key = ?",[c],function(){v()},function(_,T){y(T)})})}).catch(y)});return g(b,h),b}function wg(c){var h=this,p=new f(function(b,v){h.ready().then(function(){var y=h._dbInfo;y.db.transaction(function(E){wt(E,y,"DELETE FROM "+y.storeName,[],function(){b()},function(I,_){v(_)})})}).catch(v)});return g(p,c),p}function xg(c){var h=this,p=new f(function(b,v){h.ready().then(function(){var y=h._dbInfo;y.db.transaction(function(E){wt(E,y,"SELECT COUNT(key) as c FROM "+y.storeName,[],function(I,_){var T=_.rows.item(0).c;b(T)},function(I,_){v(_)})})}).catch(v)});return g(p,c),p}function Eg(c,h){var p=this,b=new f(function(v,y){p.ready().then(function(){var E=p._dbInfo;E.db.transaction(function(I){wt(I,E,"SELECT key FROM "+E.storeName+" WHERE id = ? LIMIT 1",[c+1],function(_,T){var C=T.rows.length?T.rows.item(0).key:null;v(C)},function(_,T){y(T)})})}).catch(y)});return g(b,h),b}function Ig(c){var h=this,p=new f(function(b,v){h.ready().then(function(){var y=h._dbInfo;y.db.transaction(function(E){wt(E,y,"SELECT key FROM "+y.storeName,[],function(I,_){for(var T=[],C=0;C<_.rows.length;C++)T.push(_.rows.item(C).key);b(T)},function(I,_){v(_)})})}).catch(v)});return g(p,c),p}function Sg(c){return new f(function(h,p){c.transaction(function(b){b.executeSql("SELECT name FROM sqlite_master WHERE type=\'table\' AND name <> \'__WebKitDatabaseInfoTable__\'",[],function(v,y){for(var E=[],I=0;I0}function Cg(c){var h=this,p={};if(c)for(var b in c)p[b]=c[b];return p.keyPrefix=hu(c,h._defaultConfig),Ng()?(h._dbInfo=p,p.serializer=Gi,f.resolve()):f.reject()}function Ag(c){var h=this,p=h.ready().then(function(){for(var b=h._dbInfo.keyPrefix,v=localStorage.length-1;v>=0;v--){var y=localStorage.key(v);y.indexOf(b)===0&&localStorage.removeItem(y)}});return g(p,c),p}function Rg(c,h){var p=this;c=x(c);var b=p.ready().then(function(){var v=p._dbInfo,y=localStorage.getItem(v.keyPrefix+c);return y&&(y=v.serializer.deserialize(y)),y});return g(b,h),b}function Fg(c,h){var p=this,b=p.ready().then(function(){for(var v=p._dbInfo,y=v.keyPrefix,E=y.length,I=localStorage.length,_=1,T=0;T=0;E--){var I=localStorage.key(E);I.indexOf(y)===0&&localStorage.removeItem(I)}}):v=f.reject("Invalid arguments"),g(v,h),v}var Lg={_driver:"localStorageWrapper",_initStorage:Cg,_support:_g(),iterate:Fg,getItem:Rg,setItem:qg,removeItem:Mg,clear:Ag,length:kg,key:$g,keys:Pg,dropInstance:jg},Bg=function(h,p){return h===p||typeof h=="number"&&typeof p=="number"&&isNaN(h)&&isNaN(p)},Ug=function(h,p){for(var b=h.length,v=0;v"u"?"undefined":s(p))==="object"){if(this._ready)return new Error("Can\'t call config() after localforage has been used.");for(var b in p){if(b==="storeName"&&(p[b]=p[b].replace(/\\W/g,"_")),b==="version"&&typeof p[b]!="number")return new Error("Database version must be a number.");this._config[b]=p[b]}return"driver"in p&&p.driver?this.setDriver(this._config.driver):!0}else return typeof p=="string"?this._config[p]:this._config},c.prototype.defineDriver=function(p,b,v){var y=new f(function(E,I){try{var _=p._driver,T=new Error("Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver");if(!p._driver){I(T);return}for(var C=Hi.concat("_initStorage"),P=0,z=C.length;P{var gr=1e3,yr=gr*60,br=yr*60,zt=br*24,Lv=zt*7,Bv=zt*365.25;ml.exports=function(e,t){t=t||{};var r=typeof e;if(r==="string"&&e.length>0)return Uv(e);if(r==="number"&&isFinite(e))return t.long?Wv(e):zv(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function Uv(e){if(e=String(e),!(e.length>100)){var t=/^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(t){var r=parseFloat(t[1]),n=(t[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*Bv;case"weeks":case"week":case"w":return r*Lv;case"days":case"day":case"d":return r*zt;case"hours":case"hour":case"hrs":case"hr":case"h":return r*br;case"minutes":case"minute":case"mins":case"min":case"m":return r*yr;case"seconds":case"second":case"secs":case"sec":case"s":return r*gr;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function zv(e){var t=Math.abs(e);return t>=zt?Math.round(e/zt)+"d":t>=br?Math.round(e/br)+"h":t>=yr?Math.round(e/yr)+"m":t>=gr?Math.round(e/gr)+"s":e+"ms"}function Wv(e){var t=Math.abs(e);return t>=zt?Wo(e,t,zt,"day"):t>=br?Wo(e,t,br,"hour"):t>=yr?Wo(e,t,yr,"minute"):t>=gr?Wo(e,t,gr,"second"):e+" ms"}function Wo(e,t,r,n){var o=t>=r*1.5;return Math.round(e/r)+" "+n+(o?"s":"")}});var gl=D((tA,hl)=>{function Kv(e){r.debug=r,r.default=r,r.coerce=u,r.disable=i,r.enable=o,r.enabled=s,r.humanize=dl(),r.destroy=m,Object.keys(e).forEach(l=>{r[l]=e[l]}),r.names=[],r.skips=[],r.formatters={};function t(l){let d=0;for(let f=0;f{if(A==="%%")return"%";ee++;let L=r.formatters[B];if(typeof L=="function"){let F=S[ee];A=L.call(N,F),S.splice(ee,1),ee--}return A}),r.formatArgs.call(N,S),(N.log||r.log).apply(N,S)}return x.namespace=l,x.useColors=r.useColors(),x.color=r.selectColor(l),x.extend=n,x.destroy=r.destroy,Object.defineProperty(x,"enabled",{enumerable:!0,configurable:!1,get:()=>f!==null?f:(g!==r.namespaces&&(g=r.namespaces,w=r.enabled(l)),w),set:S=>{f=S}}),typeof r.init=="function"&&r.init(x),x}function n(l,d){let f=r(this.namespace+(typeof d>"u"?":":d)+l);return f.log=this.log,f}function o(l){r.save(l),r.namespaces=l,r.names=[],r.skips=[];let d,f=(typeof l=="string"?l:"").split(/[\\s,]+/),g=f.length;for(d=0;d"-"+d)].join(",");return r.enable(""),l}function s(l){if(l[l.length-1]==="*")return!0;let d,f;for(d=0,f=r.skips.length;d{Fe.formatArgs=Hv;Fe.save=Jv;Fe.load=Vv;Fe.useColors=Gv;Fe.storage=Yv();Fe.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();Fe.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function Gv(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/)}function Hv(e){if(e[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+e[0]+(this.useColors?"%c ":" ")+"+"+Ko.exports.humanize(this.diff),!this.useColors)return;let t="color: "+this.color;e.splice(1,0,t,"color: inherit");let r=0,n=0;e[0].replace(/%[a-zA-Z%]/g,o=>{o!=="%%"&&(r++,o==="%c"&&(n=r))}),e.splice(n,0,t)}Fe.log=console.debug||console.log||(()=>{});function Jv(e){try{e?Fe.storage.setItem("debug",e):Fe.storage.removeItem("debug")}catch{}}function Vv(){let e;try{e=Fe.storage.getItem("debug")}catch{}return!e&&typeof process<"u"&&"env"in process&&(e=process.env.DEBUG),e}function Yv(){try{return localStorage}catch{}}Ko.exports=gl()(Fe);var{formatters:Zv}=Ko.exports;Zv.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}});var bl=D((rA,yl)=>{"use strict";yl.exports=Qv;function vr(e){return e instanceof Buffer?Buffer.from(e):new e.constructor(e.buffer.slice(),e.byteOffset,e.length)}function Qv(e){if(e=e||{},e.circles)return Xv(e);return e.proto?n:r;function t(o,i){for(var s=Object.keys(o),a=new Array(s.length),u=0;u{var ew=require("util"),Wt=we()("log4js:configuration"),Go=[],Ho=[],vl=e=>!e,wl=e=>e&&typeof e=="object"&&!Array.isArray(e),tw=e=>/^[A-Za-z][A-Za-z0-9_]*$/g.test(e),rw=e=>e&&typeof e=="number"&&Number.isInteger(e),nw=e=>{Ho.push(e),Wt(`Added listener, now ${Ho.length} listeners`)},ow=e=>{Go.push(e),Wt(`Added pre-processing listener, now ${Go.length} listeners`)},xl=(e,t,r)=>{(Array.isArray(t)?t:[t]).forEach(o=>{if(o)throw new Error(`Problem with log4js configuration: (${ew.inspect(e,{depth:5})}) - ${r}`)})},iw=e=>{Wt("New configuration to be validated: ",e),xl(e,vl(wl(e)),"must be an object."),Wt(`Calling pre-processing listeners (${Go.length})`),Go.forEach(t=>t(e)),Wt("Configuration pre-processing finished."),Wt(`Calling configuration listeners (${Ho.length})`),Ho.forEach(t=>t(e)),Wt("Configuration finished.")};El.exports={configure:iw,addListener:nw,addPreProcessingListener:ow,throwExceptionIf:xl,anObject:wl,anInteger:rw,validIdentifier:tw,not:vl}});var Jo=D((oA,ze)=>{"use strict";function Il(e,t){for(var r=e.toString();r.length-1?o:i,a=Gt(t.getHours()),u=Gt(t.getMinutes()),m=Gt(t.getSeconds()),l=Il(t.getMilliseconds(),3),d=sw(t.getTimezoneOffset()),f=e.replace(/dd/g,r).replace(/MM/g,n).replace(/y{1,4}/g,s).replace(/hh/g,a).replace(/mm/g,u).replace(/ss/g,m).replace(/SSS/g,l).replace(/O/g,d);return f}function _t(e,t,r,n){e["set"+(n?"":"UTC")+t](r)}function aw(e,t,r){var n=e.indexOf("O")<0,o=!1,i=[{pattern:/y{1,4}/,regexp:"\\\\d{1,4}",fn:function(d,f){_t(d,"FullYear",f,n)}},{pattern:/MM/,regexp:"\\\\d{1,2}",fn:function(d,f){_t(d,"Month",f-1,n),d.getMonth()!==f-1&&(o=!0)}},{pattern:/dd/,regexp:"\\\\d{1,2}",fn:function(d,f){o&&_t(d,"Month",d.getMonth()-1,n),_t(d,"Date",f,n)}},{pattern:/hh/,regexp:"\\\\d{1,2}",fn:function(d,f){_t(d,"Hours",f,n)}},{pattern:/mm/,regexp:"\\\\d\\\\d",fn:function(d,f){_t(d,"Minutes",f,n)}},{pattern:/ss/,regexp:"\\\\d\\\\d",fn:function(d,f){_t(d,"Seconds",f,n)}},{pattern:/SSS/,regexp:"\\\\d\\\\d\\\\d",fn:function(d,f){_t(d,"Milliseconds",f,n)}},{pattern:/O/,regexp:"[+-]\\\\d{1,2}:?\\\\d{2}?|Z",fn:function(d,f){f==="Z"?f=0:f=f.replace(":","");var g=Math.abs(f),w=(f>0?-1:1)*(g%100+Math.floor(g/100)*60);d.setUTCMinutes(d.getUTCMinutes()+w)}}],s=i.reduce(function(d,f){return f.pattern.test(d.regexp)?(f.index=d.regexp.match(f.pattern).index,d.regexp=d.regexp.replace(f.pattern,"("+f.regexp+")")):f.index=-1,d},{regexp:e,index:[]}),a=i.filter(function(d){return d.index>-1});a.sort(function(d,f){return d.index-f.index});var u=new RegExp(s.regexp),m=u.exec(t);if(m){var l=r||ze.exports.now();return a.forEach(function(d,f){d.fn(l,m[f+1])}),l}throw new Error("String \'"+t+"\' could not be parsed as \'"+e+"\'")}function uw(e,t,r){if(!e)throw new Error("pattern must be supplied");return aw(e,t,r)}function cw(){return new Date}ze.exports=Sl;ze.exports.asString=Sl;ze.exports.parse=uw;ze.exports.now=cw;ze.exports.ISO8601_FORMAT="yyyy-MM-ddThh:mm:ss.SSS";ze.exports.ISO8601_WITH_TZ_OFFSET_FORMAT="yyyy-MM-ddThh:mm:ss.SSSO";ze.exports.DATETIME_FORMAT="dd MM yyyy hh:mm:ss.SSS";ze.exports.ABSOLUTETIME_FORMAT="hh:mm:ss.SSS"});var Ys=D((iA,kl)=>{var Tt=Jo(),Ol=require("os"),bn=require("util"),yn=require("path"),Dl=require("url"),_l=we()("log4js:layouts"),Tl={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[90,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[91,39],yellow:[33,39]};function Nl(e){return e?`\\x1B[${Tl[e][0]}m`:""}function Cl(e){return e?`\\x1B[${Tl[e][1]}m`:""}function lw(e,t){return Nl(t)+e+Cl(t)}function Al(e,t){return lw(bn.format("[%s] [%s] %s - ",Tt.asString(e.startTime),e.level.toString(),e.categoryName),t)}function Rl(e){return Al(e)+bn.format(...e.data)}function Vo(e){return Al(e,e.level.colour)+bn.format(...e.data)}function Fl(e){return bn.format(...e.data)}function $l(e){return e.data[0]}function Pl(e,t){let r="%r %p %c - %m%n",n=/%(-?[0-9]+)?(\\.?-?[0-9]+)?([[\\]cdhmnprzxXyflos%])(\\{([^}]+)\\})?|([^%]+)/;e=e||r;function o(O,$){let R=O.categoryName;if($){let U=parseInt($,10),q=R.split(".");Uq&&(R=W.slice(-q).join(yn.sep))}return R}function k(O){return O.lineNumber?`${O.lineNumber}`:""}function ee(O){return O.columnNumber?`${O.columnNumber}`:""}function xe(O){return O.callStack||""}let A={c:o,d:i,h:s,m:a,n:u,p:m,r:l,"[":d,"]":f,y:x,z:w,"%":g,x:S,X:N,f:M,l:k,o:ee,s:xe};function B(O,$,R){return A[O]($,R)}function L(O,$){let R;return O?(R=parseInt(O.slice(1),10),R>0?$.slice(0,R):$.slice(R)):$}function F(O,$){let R;if(O)if(O.charAt(0)==="-")for(R=parseInt(O.slice(1),10);$.length{var me=Kt(),Ml=["white","grey","black","blue","cyan","green","magenta","red","yellow"],de=class{constructor(t,r,n){this.level=t,this.levelStr=r,this.colour=n}toString(){return this.levelStr}static getLevel(t,r){return t?t instanceof de?t:(t instanceof Object&&t.levelStr&&(t=t.levelStr),de[t.toString().toUpperCase()]||r):r}static addLevels(t){t&&(Object.keys(t).forEach(n=>{let o=n.toUpperCase();de[o]=new de(t[n].value,o,t[n].colour);let i=de.levels.findIndex(s=>s.levelStr===o);i>-1?de.levels[i]=de[o]:de.levels.push(de[o])}),de.levels.sort((n,o)=>n.level-o.level))}isLessThanOrEqualTo(t){return typeof t=="string"&&(t=de.getLevel(t)),this.level<=t.level}isGreaterThanOrEqualTo(t){return typeof t=="string"&&(t=de.getLevel(t)),this.level>=t.level}isEqualTo(t){return typeof t=="string"&&(t=de.getLevel(t)),this.level===t.level}};de.levels=[];de.addLevels({ALL:{value:Number.MIN_VALUE,colour:"grey"},TRACE:{value:5e3,colour:"blue"},DEBUG:{value:1e4,colour:"cyan"},INFO:{value:2e4,colour:"green"},WARN:{value:3e4,colour:"yellow"},ERROR:{value:4e4,colour:"red"},FATAL:{value:5e4,colour:"magenta"},MARK:{value:9007199254740992,colour:"grey"},OFF:{value:Number.MAX_VALUE,colour:"grey"}});me.addListener(e=>{let t=e.levels;t&&(me.throwExceptionIf(e,me.not(me.anObject(t)),"levels must be an object"),Object.keys(t).forEach(n=>{me.throwExceptionIf(e,me.not(me.validIdentifier(n)),`level name "${n}" is not a valid identifier (must start with a letter, only contain A-Z,a-z,0-9,_)`),me.throwExceptionIf(e,me.not(me.anObject(t[n])),`level "${n}" must be an object`),me.throwExceptionIf(e,me.not(t[n].value),`level "${n}" must have a \'value\' property`),me.throwExceptionIf(e,me.not(me.anInteger(t[n].value)),`level "${n}".value must have an integer value`),me.throwExceptionIf(e,me.not(t[n].colour),`level "${n}" must have a \'colour\' property`),me.throwExceptionIf(e,me.not(Ml.indexOf(t[n].colour)>-1),`level "${n}".colour must be one of ${Ml.join(", ")}`)}))});me.addListener(e=>{de.addLevels(e.levels)});ql.exports=de});var Jl=D(wn=>{"use strict";var{parse:Bl,stringify:Ul}=JSON,{keys:fw}=Object,vn=String,zl="string",jl={},Yo="object",Wl=(e,t)=>t,pw=e=>e instanceof vn?vn(e):e,mw=(e,t)=>typeof t===zl?new vn(t):t,Kl=(e,t,r,n)=>{let o=[];for(let i=fw(r),{length:s}=i,a=0;a{let n=vn(t.push(r)-1);return e.set(r,n),n},Gl=(e,t)=>{let r=Bl(e,mw).map(pw),n=r[0],o=t||Wl,i=typeof n===Yo&&n?Kl(r,new Set,n,o):n;return o.call({"":i},"",i)};wn.parse=Gl;var Hl=(e,t,r)=>{let n=t&&typeof t===Yo?(l,d)=>l===""||-1Bl(Hl(e));wn.toJSON=dw;var hw=e=>Gl(Ul(e));wn.fromJSON=hw});var Zs=D((uA,Zl)=>{var Vl=Jl(),Yl=Ht(),wr=class{constructor(t,r,n,o,i){this.startTime=new Date,this.categoryName=t,this.data=n,this.level=r,this.context=Object.assign({},o),this.pid=process.pid,i&&(this.functionName=i.functionName,this.fileName=i.fileName,this.lineNumber=i.lineNumber,this.columnNumber=i.columnNumber,this.callStack=i.callStack)}serialise(){return Vl.stringify(this,(t,r)=>(r&&r.message&&r.stack?r=Object.assign({message:r.message,stack:r.stack},r):typeof r=="number"&&(Number.isNaN(r)||!Number.isFinite(r))?r=r.toString():typeof r>"u"&&(r=typeof r),r))}static deserialise(t){let r;try{let n=Vl.parse(t,(o,i)=>{if(i&&i.message&&i.stack){let s=new Error(i);Object.keys(i).forEach(a=>{s[a]=i[a]}),i=s}return i});n.location={functionName:n.functionName,fileName:n.fileName,lineNumber:n.lineNumber,columnNumber:n.columnNumber,callStack:n.callStack},r=new wr(n.categoryName,Yl.getLevel(n.level.levelStr),n.data,n.context,n.location),r.startTime=new Date(n.startTime),r.pid=n.pid,r.cluster=n.cluster}catch(n){r=new wr("log4js",Yl.ERROR,["Unable to parse log:",t,"because: ",n])}return r}};Zl.exports=wr});var Qo=D((cA,ef)=>{var We=we()("log4js:clustering"),gw=Zs(),yw=Kt(),xr=!1,Ke=null;try{Ke=require("cluster")}catch{We("cluster module not present"),xr=!0}var Xs=[],En=!1,xn="NODE_APP_INSTANCE",Ql=()=>En&&process.env[xn]==="0",Qs=()=>xr||Ke&&Ke.isMaster||Ql(),Xl=e=>{Xs.forEach(t=>t(e))},Zo=(e,t)=>{if(We("cluster message received from worker ",e,": ",t),e.topic&&e.data&&(t=e,e=void 0),t&&t.topic&&t.topic==="log4js:message"){We("received message: ",t.data);let r=gw.deserialise(t.data);Xl(r)}};xr||yw.addListener(e=>{Xs.length=0,{pm2:En,disableClustering:xr,pm2InstanceVar:xn="NODE_APP_INSTANCE"}=e,We(`clustering disabled ? ${xr}`),We(`cluster.isMaster ? ${Ke&&Ke.isMaster}`),We(`pm2 enabled ? ${En}`),We(`pm2InstanceVar = ${xn}`),We(`process.env[${xn}] = ${process.env[xn]}`),En&&process.removeListener("message",Zo),Ke&&Ke.removeListener&&Ke.removeListener("message",Zo),xr||e.disableClustering?We("Not listening for cluster messages, because clustering disabled."):Ql()?(We("listening for PM2 broadcast messages"),process.on("message",Zo)):Ke&&Ke.isMaster?(We("listening for cluster messages"),Ke.on("message",Zo)):We("not listening for messages, because we are not a master process")});ef.exports={onlyOnMaster:(e,t)=>Qs()?e():t,isMaster:Qs,send:e=>{Qs()?Xl(e):(En||(e.cluster={workerId:Ke.worker.id,worker:process.pid}),process.send({topic:"log4js:message",data:e.serialise()}))},onMessage:e=>{Xs.push(e)}}});var nf=D((lA,rf)=>{function bw(e){if(typeof e=="number"&&Number.isInteger(e))return e;let t={K:1024,M:1024*1024,G:1024*1024*1024},r=Object.keys(t),n=e.slice(-1).toLocaleUpperCase(),o=e.slice(0,-1).trim();if(r.indexOf(n)<0||!Number.isInteger(Number(o)))throw Error(`maxLogSize: "${e}" is invalid`);return o*t[n]}function vw(e,t){let r=Object.assign({},t);return Object.keys(e).forEach(n=>{r[n]&&(r[n]=e[n](t[n]))}),r}function ea(e){return vw({maxLogSize:bw},e)}var tf={dateFile:ea,file:ea,fileSync:ea};rf.exports.modifyConfig=e=>tf[e.type]?tf[e.type](e):e});var sf=D((fA,of)=>{var ww=console.log.bind(console);function xw(e,t){return r=>{ww(e(r,t))}}function Ew(e,t){let r=t.colouredLayout;return e.layout&&(r=t.layout(e.layout.type,e.layout)),xw(r,e.timezoneOffset)}of.exports.configure=Ew});var uf=D(af=>{function Iw(e,t){return r=>{process.stdout.write(`${e(r,t)}\n`)}}function Sw(e,t){let r=t.colouredLayout;return e.layout&&(r=t.layout(e.layout.type,e.layout)),Iw(r,e.timezoneOffset)}af.configure=Sw});var lf=D((mA,cf)=>{function Ow(e,t){return r=>{process.stderr.write(`${e(r,t)}\n`)}}function Dw(e,t){let r=t.colouredLayout;return e.layout&&(r=t.layout(e.layout.type,e.layout)),Ow(r,e.timezoneOffset)}cf.exports.configure=Dw});var pf=D((dA,ff)=>{function _w(e,t,r,n){let o=n.getLevel(e),i=n.getLevel(t,n.FATAL);return s=>{let a=s.level;o.isLessThanOrEqualTo(a)&&i.isGreaterThanOrEqualTo(a)&&r(s)}}function Tw(e,t,r,n){let o=r(e.appender);return _w(e.level,e.maxLevel,o,n)}ff.exports.configure=Tw});var hf=D((hA,df)=>{var mf=we()("log4js:categoryFilter");function Nw(e,t){return typeof e=="string"&&(e=[e]),r=>{mf(`Checking ${r.categoryName} against ${e}`),e.indexOf(r.categoryName)===-1&&(mf("Not excluded, sending to appender"),t(r))}}function Cw(e,t,r){let n=r(e.appender);return Nw(e.exclude,n)}df.exports.configure=Cw});var bf=D((gA,yf)=>{var gf=we()("log4js:noLogFilter");function Aw(e){return e.filter(r=>r!=null&&r!=="")}function Rw(e,t){return r=>{gf(`Checking data: ${r.data} against filters: ${e}`),typeof e=="string"&&(e=[e]),e=Aw(e);let n=new RegExp(e.join("|"),"i");(e.length===0||r.data.findIndex(o=>n.test(o))<0)&&(gf("Not excluded, sending to appender"),t(r))}}function Fw(e,t,r){let n=r(e.appender);return Rw(e.exclude,n)}yf.exports.configure=Fw});var Ce=D(ta=>{"use strict";ta.fromCallback=function(e){return Object.defineProperty(function(){if(typeof arguments[arguments.length-1]=="function")e.apply(this,arguments);else return new Promise((t,r)=>{arguments[arguments.length]=(n,o)=>{if(n)return r(n);t(o)},arguments.length++,e.apply(this,arguments)})},"name",{value:e.name})};ta.fromPromise=function(e){return Object.defineProperty(function(){let t=arguments[arguments.length-1];if(typeof t!="function")return e.apply(this,arguments);e.apply(this,arguments).then(r=>t(null,r),t)},"name",{value:e.name})}});var wf=D((bA,vf)=>{var Nt=require("constants"),$w=process.cwd,Xo=null,Pw=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){return Xo||(Xo=$w.call(process)),Xo};try{process.cwd()}catch{}typeof process.chdir=="function"&&(ra=process.chdir,process.chdir=function(e){Xo=null,ra.call(process,e)},Object.setPrototypeOf&&Object.setPrototypeOf(process.chdir,ra));var ra;vf.exports=kw;function kw(e){Nt.hasOwnProperty("O_SYMLINK")&&process.version.match(/^v0\\.6\\.[0-2]|^v0\\.5\\./)&&t(e),e.lutimes||r(e),e.chown=i(e.chown),e.fchown=i(e.fchown),e.lchown=i(e.lchown),e.chmod=n(e.chmod),e.fchmod=n(e.fchmod),e.lchmod=n(e.lchmod),e.chownSync=s(e.chownSync),e.fchownSync=s(e.fchownSync),e.lchownSync=s(e.lchownSync),e.chmodSync=o(e.chmodSync),e.fchmodSync=o(e.fchmodSync),e.lchmodSync=o(e.lchmodSync),e.stat=a(e.stat),e.fstat=a(e.fstat),e.lstat=a(e.lstat),e.statSync=u(e.statSync),e.fstatSync=u(e.fstatSync),e.lstatSync=u(e.lstatSync),e.chmod&&!e.lchmod&&(e.lchmod=function(l,d,f){f&&process.nextTick(f)},e.lchmodSync=function(){}),e.chown&&!e.lchown&&(e.lchown=function(l,d,f,g){g&&process.nextTick(g)},e.lchownSync=function(){}),Pw==="win32"&&(e.rename=typeof e.rename!="function"?e.rename:function(l){function d(f,g,w){var x=Date.now(),S=0;l(f,g,function N(M){if(M&&(M.code==="EACCES"||M.code==="EPERM"||M.code==="EBUSY")&&Date.now()-x<6e4){setTimeout(function(){e.stat(g,function(k,ee){k&&k.code==="ENOENT"?l(f,g,N):w(M)})},S),S<100&&(S+=10);return}w&&w(M)})}return Object.setPrototypeOf&&Object.setPrototypeOf(d,l),d}(e.rename)),e.read=typeof e.read!="function"?e.read:function(l){function d(f,g,w,x,S,N){var M;if(N&&typeof N=="function"){var k=0;M=function(ee,xe,A){if(ee&&ee.code==="EAGAIN"&&k<10)return k++,l.call(e,f,g,w,x,S,M);N.apply(this,arguments)}}return l.call(e,f,g,w,x,S,M)}return Object.setPrototypeOf&&Object.setPrototypeOf(d,l),d}(e.read),e.readSync=typeof e.readSync!="function"?e.readSync:function(l){return function(d,f,g,w,x){for(var S=0;;)try{return l.call(e,d,f,g,w,x)}catch(N){if(N.code==="EAGAIN"&&S<10){S++;continue}throw N}}}(e.readSync);function t(l){l.lchmod=function(d,f,g){l.open(d,Nt.O_WRONLY|Nt.O_SYMLINK,f,function(w,x){if(w){g&&g(w);return}l.fchmod(x,f,function(S){l.close(x,function(N){g&&g(S||N)})})})},l.lchmodSync=function(d,f){var g=l.openSync(d,Nt.O_WRONLY|Nt.O_SYMLINK,f),w=!0,x;try{x=l.fchmodSync(g,f),w=!1}finally{if(w)try{l.closeSync(g)}catch{}else l.closeSync(g)}return x}}function r(l){Nt.hasOwnProperty("O_SYMLINK")&&l.futimes?(l.lutimes=function(d,f,g,w){l.open(d,Nt.O_SYMLINK,function(x,S){if(x){w&&w(x);return}l.futimes(S,f,g,function(N){l.close(S,function(M){w&&w(N||M)})})})},l.lutimesSync=function(d,f,g){var w=l.openSync(d,Nt.O_SYMLINK),x,S=!0;try{x=l.futimesSync(w,f,g),S=!1}finally{if(S)try{l.closeSync(w)}catch{}else l.closeSync(w)}return x}):l.futimes&&(l.lutimes=function(d,f,g,w){w&&process.nextTick(w)},l.lutimesSync=function(){})}function n(l){return l&&function(d,f,g){return l.call(e,d,f,function(w){m(w)&&(w=null),g&&g.apply(this,arguments)})}}function o(l){return l&&function(d,f){try{return l.call(e,d,f)}catch(g){if(!m(g))throw g}}}function i(l){return l&&function(d,f,g,w){return l.call(e,d,f,g,function(x){m(x)&&(x=null),w&&w.apply(this,arguments)})}}function s(l){return l&&function(d,f,g){try{return l.call(e,d,f,g)}catch(w){if(!m(w))throw w}}}function a(l){return l&&function(d,f,g){typeof f=="function"&&(g=f,f=null);function w(x,S){S&&(S.uid<0&&(S.uid+=4294967296),S.gid<0&&(S.gid+=4294967296)),g&&g.apply(this,arguments)}return f?l.call(e,d,f,w):l.call(e,d,w)}}function u(l){return l&&function(d,f){var g=f?l.call(e,d,f):l.call(e,d);return g&&(g.uid<0&&(g.uid+=4294967296),g.gid<0&&(g.gid+=4294967296)),g}}function m(l){if(!l||l.code==="ENOSYS")return!0;var d=!process.getuid||process.getuid()!==0;return!!(d&&(l.code==="EINVAL"||l.code==="EPERM"))}}});var If=D((vA,Ef)=>{var xf=require("stream").Stream;Ef.exports=Mw;function Mw(e){return{ReadStream:t,WriteStream:r};function t(n,o){if(!(this instanceof t))return new t(n,o);xf.call(this);var i=this;this.path=n,this.fd=null,this.readable=!0,this.paused=!1,this.flags="r",this.mode=438,this.bufferSize=64*1024,o=o||{};for(var s=Object.keys(o),a=0,u=s.length;athis.end)throw new Error("start must be <= end");this.pos=this.start}if(this.fd!==null){process.nextTick(function(){i._read()});return}e.open(this.path,this.flags,this.mode,function(l,d){if(l){i.emit("error",l),i.readable=!1;return}i.fd=d,i.emit("open",d),i._read()})}function r(n,o){if(!(this instanceof r))return new r(n,o);xf.call(this),this.path=n,this.fd=null,this.writable=!0,this.flags="w",this.encoding="binary",this.mode=438,this.bytesWritten=0,o=o||{};for(var i=Object.keys(o),s=0,a=i.length;s= zero");this.pos=this.start}this.busy=!1,this._queue=[],this.fd===null&&(this._open=e.open,this._queue.push([this._open,this.path,this.flags,this.mode,void 0]),this.flush())}}});var Of=D((wA,Sf)=>{"use strict";Sf.exports=jw;var qw=Object.getPrototypeOf||function(e){return e.__proto__};function jw(e){if(e===null||typeof e!="object")return e;if(e instanceof Object)var t={__proto__:qw(e)};else var t=Object.create(null);return Object.getOwnPropertyNames(e).forEach(function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))}),t}});var he=D((xA,ia)=>{var se=require("fs"),Lw=wf(),Bw=If(),Uw=Of(),ei=require("util"),Ee,ri;typeof Symbol=="function"&&typeof Symbol.for=="function"?(Ee=Symbol.for("graceful-fs.queue"),ri=Symbol.for("graceful-fs.previous")):(Ee="___graceful-fs.queue",ri="___graceful-fs.previous");function zw(){}function Tf(e,t){Object.defineProperty(e,Ee,{get:function(){return t}})}var Jt=zw;ei.debuglog?Jt=ei.debuglog("gfs4"):/\\bgfs4\\b/i.test(process.env.NODE_DEBUG||"")&&(Jt=function(){var e=ei.format.apply(ei,arguments);e="GFS4: "+e.split(/\\n/).join(`\nGFS4: `),console.error(e)});se[Ee]||(Df=global[Ee]||[],Tf(se,Df),se.close=function(e){function t(r,n){return e.call(se,r,function(o){o||_f(),typeof n=="function"&&n.apply(this,arguments)})}return Object.defineProperty(t,ri,{value:e}),t}(se.close),se.closeSync=function(e){function t(r){e.apply(se,arguments),_f()}return Object.defineProperty(t,ri,{value:e}),t}(se.closeSync),/\\bgfs4\\b/i.test(process.env.NODE_DEBUG||"")&&process.on("exit",function(){Jt(se[Ee]),require("assert").equal(se[Ee].length,0)}));var Df;global[Ee]||Tf(global,se[Ee]);ia.exports=na(Uw(se));process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!se.__patched&&(ia.exports=na(se),se.__patched=!0);function na(e){Lw(e),e.gracefulify=na,e.createReadStream=xe,e.createWriteStream=A;var t=e.readFile;e.readFile=r;function r(F,j,O){return typeof j=="function"&&(O=j,j=null),$(F,j,O);function $(R,U,q,W){return t(R,U,function(K){K&&(K.code==="EMFILE"||K.code==="ENFILE")?Er([$,[R,U,q],K,W||Date.now(),Date.now()]):typeof q=="function"&&q.apply(this,arguments)})}}var n=e.writeFile;e.writeFile=o;function o(F,j,O,$){return typeof O=="function"&&($=O,O=null),R(F,j,O,$);function R(U,q,W,K,X){return n(U,q,W,function(J){J&&(J.code==="EMFILE"||J.code==="ENFILE")?Er([R,[U,q,W,K],J,X||Date.now(),Date.now()]):typeof K=="function"&&K.apply(this,arguments)})}}var i=e.appendFile;i&&(e.appendFile=s);function s(F,j,O,$){return typeof O=="function"&&($=O,O=null),R(F,j,O,$);function R(U,q,W,K,X){return i(U,q,W,function(J){J&&(J.code==="EMFILE"||J.code==="ENFILE")?Er([R,[U,q,W,K],J,X||Date.now(),Date.now()]):typeof K=="function"&&K.apply(this,arguments)})}}var a=e.copyFile;a&&(e.copyFile=u);function u(F,j,O,$){return typeof O=="function"&&($=O,O=0),R(F,j,O,$);function R(U,q,W,K,X){return a(U,q,W,function(J){J&&(J.code==="EMFILE"||J.code==="ENFILE")?Er([R,[U,q,W,K],J,X||Date.now(),Date.now()]):typeof K=="function"&&K.apply(this,arguments)})}}var m=e.readdir;e.readdir=d;var l=/^v[0-5]\\./;function d(F,j,O){typeof j=="function"&&(O=j,j=null);var $=l.test(process.version)?function(q,W,K,X){return m(q,R(q,W,K,X))}:function(q,W,K,X){return m(q,W,R(q,W,K,X))};return $(F,j,O);function R(U,q,W,K){return function(X,J){X&&(X.code==="EMFILE"||X.code==="ENFILE")?Er([$,[U,q,W],X,K||Date.now(),Date.now()]):(J&&J.sort&&J.sort(),typeof W=="function"&&W.call(this,X,J))}}}if(process.version.substr(0,4)==="v0.8"){var f=Bw(e);N=f.ReadStream,k=f.WriteStream}var g=e.ReadStream;g&&(N.prototype=Object.create(g.prototype),N.prototype.open=M);var w=e.WriteStream;w&&(k.prototype=Object.create(w.prototype),k.prototype.open=ee),Object.defineProperty(e,"ReadStream",{get:function(){return N},set:function(F){N=F},enumerable:!0,configurable:!0}),Object.defineProperty(e,"WriteStream",{get:function(){return k},set:function(F){k=F},enumerable:!0,configurable:!0});var x=N;Object.defineProperty(e,"FileReadStream",{get:function(){return x},set:function(F){x=F},enumerable:!0,configurable:!0});var S=k;Object.defineProperty(e,"FileWriteStream",{get:function(){return S},set:function(F){S=F},enumerable:!0,configurable:!0});function N(F,j){return this instanceof N?(g.apply(this,arguments),this):N.apply(Object.create(N.prototype),arguments)}function M(){var F=this;L(F.path,F.flags,F.mode,function(j,O){j?(F.autoClose&&F.destroy(),F.emit("error",j)):(F.fd=O,F.emit("open",O),F.read())})}function k(F,j){return this instanceof k?(w.apply(this,arguments),this):k.apply(Object.create(k.prototype),arguments)}function ee(){var F=this;L(F.path,F.flags,F.mode,function(j,O){j?(F.destroy(),F.emit("error",j)):(F.fd=O,F.emit("open",O))})}function xe(F,j){return new e.ReadStream(F,j)}function A(F,j){return new e.WriteStream(F,j)}var B=e.open;e.open=L;function L(F,j,O,$){return typeof O=="function"&&($=O,O=null),R(F,j,O,$);function R(U,q,W,K,X){return B(U,q,W,function(J,Zn){J&&(J.code==="EMFILE"||J.code==="ENFILE")?Er([R,[U,q,W,K],J,X||Date.now(),Date.now()]):typeof K=="function"&&K.apply(this,arguments)})}}return e}function Er(e){Jt("ENQUEUE",e[0].name,e[1]),se[Ee].push(e),oa()}var ti;function _f(){for(var e=Date.now(),t=0;t2&&(se[Ee][t][3]=e,se[Ee][t][4]=e);oa()}function oa(){if(clearTimeout(ti),ti=void 0,se[Ee].length!==0){var e=se[Ee].shift(),t=e[0],r=e[1],n=e[2],o=e[3],i=e[4];if(o===void 0)Jt("RETRY",t.name,r),t.apply(null,r);else if(Date.now()-o>=6e4){Jt("TIMEOUT",t.name,r);var s=r.pop();typeof s=="function"&&s.call(null,n)}else{var a=Date.now()-i,u=Math.max(i-o,1),m=Math.min(u*1.2,100);a>=m?(Jt("RETRY",t.name,r),t.apply(null,r.concat([o]))):se[Ee].push(e)}ti===void 0&&(ti=setTimeout(oa,0))}}});var sa=D(Vt=>{"use strict";var Nf=Ce().fromCallback,Ge=he(),Ww=["access","appendFile","chmod","chown","close","copyFile","fchmod","fchown","fdatasync","fstat","fsync","ftruncate","futimes","lchown","lchmod","link","lstat","mkdir","mkdtemp","open","readFile","readdir","readlink","realpath","rename","rmdir","stat","symlink","truncate","unlink","utimes","writeFile"].filter(e=>typeof Ge[e]=="function");Object.keys(Ge).forEach(e=>{e!=="promises"&&(Vt[e]=Ge[e])});Ww.forEach(e=>{Vt[e]=Nf(Ge[e])});Vt.exists=function(e,t){return typeof t=="function"?Ge.exists(e,t):new Promise(r=>Ge.exists(e,r))};Vt.read=function(e,t,r,n,o,i){return typeof i=="function"?Ge.read(e,t,r,n,o,i):new Promise((s,a)=>{Ge.read(e,t,r,n,o,(u,m,l)=>{if(u)return a(u);s({bytesRead:m,buffer:l})})})};Vt.write=function(e,t,...r){return typeof r[r.length-1]=="function"?Ge.write(e,t,...r):new Promise((n,o)=>{Ge.write(e,t,...r,(i,s,a)=>{if(i)return o(i);n({bytesWritten:s,buffer:a})})})};typeof Ge.realpath.native=="function"&&(Vt.realpath.native=Nf(Ge.realpath.native))});var ua=D((IA,Af)=>{"use strict";var aa=require("path");function Cf(e){return e=aa.normalize(aa.resolve(e)).split(aa.sep),e.length>0?e[0]:null}var Kw=/[<>:"|?*]/;function Gw(e){let t=Cf(e);return e=e.replace(t,""),Kw.test(e)}Af.exports={getRootPath:Cf,invalidWin32Path:Gw}});var Ff=D((SA,Rf)=>{"use strict";var Hw=he(),ca=require("path"),Jw=ua().invalidWin32Path,Vw=parseInt("0777",8);function la(e,t,r,n){if(typeof t=="function"?(r=t,t={}):(!t||typeof t!="object")&&(t={mode:t}),process.platform==="win32"&&Jw(e)){let s=new Error(e+" contains invalid WIN32 path characters.");return s.code="EINVAL",r(s)}let o=t.mode,i=t.fs||Hw;o===void 0&&(o=Vw&~process.umask()),n||(n=null),r=r||function(){},e=ca.resolve(e),i.mkdir(e,o,s=>{if(!s)return n=n||e,r(null,n);switch(s.code){case"ENOENT":if(ca.dirname(e)===e)return r(s);la(ca.dirname(e),t,(a,u)=>{a?r(a,u):la(e,t,r,u)});break;default:i.stat(e,(a,u)=>{a||!u.isDirectory()?r(s,n):r(null,n)});break}})}Rf.exports=la});var Pf=D((OA,$f)=>{"use strict";var Yw=he(),fa=require("path"),Zw=ua().invalidWin32Path,Qw=parseInt("0777",8);function pa(e,t,r){(!t||typeof t!="object")&&(t={mode:t});let n=t.mode,o=t.fs||Yw;if(process.platform==="win32"&&Zw(e)){let i=new Error(e+" contains invalid WIN32 path characters.");throw i.code="EINVAL",i}n===void 0&&(n=Qw&~process.umask()),r||(r=null),e=fa.resolve(e);try{o.mkdirSync(e,n),r=r||e}catch(i){if(i.code==="ENOENT"){if(fa.dirname(e)===e)throw i;r=pa(fa.dirname(e),t,r),pa(e,t,r)}else{let s;try{s=o.statSync(e)}catch{throw i}if(!s.isDirectory())throw i}}return r}$f.exports=pa});var $e=D((DA,kf)=>{"use strict";var Xw=Ce().fromCallback,ma=Xw(Ff()),da=Pf();kf.exports={mkdirs:ma,mkdirsSync:da,mkdirp:ma,mkdirpSync:da,ensureDir:ma,ensureDirSync:da}});var ha=D((_A,qf)=>{"use strict";var Se=he(),Mf=require("os"),ni=require("path");function ex(){let e=ni.join("millis-test-sync"+Date.now().toString()+Math.random().toString().slice(2));e=ni.join(Mf.tmpdir(),e);let t=new Date(1435410243862);Se.writeFileSync(e,"https://github.com/jprichardson/node-fs-extra/pull/141");let r=Se.openSync(e,"r+");return Se.futimesSync(r,t,t),Se.closeSync(r),Se.statSync(e).mtime>1435410243e3}function tx(e){let t=ni.join("millis-test"+Date.now().toString()+Math.random().toString().slice(2));t=ni.join(Mf.tmpdir(),t);let r=new Date(1435410243862);Se.writeFile(t,"https://github.com/jprichardson/node-fs-extra/pull/141",n=>{if(n)return e(n);Se.open(t,"r+",(o,i)=>{if(o)return e(o);Se.futimes(i,r,r,s=>{if(s)return e(s);Se.close(i,a=>{if(a)return e(a);Se.stat(t,(u,m)=>{if(u)return e(u);e(null,m.mtime>1435410243e3)})})})})})}function rx(e){if(typeof e=="number")return Math.floor(e/1e3)*1e3;if(e instanceof Date)return new Date(Math.floor(e.getTime()/1e3)*1e3);throw new Error("fs-extra: timeRemoveMillis() unknown parameter type")}function nx(e,t,r,n){Se.open(e,"r+",(o,i)=>{if(o)return n(o);Se.futimes(i,t,r,s=>{Se.close(i,a=>{n&&n(s||a)})})})}function ox(e,t,r){let n=Se.openSync(e,"r+");return Se.futimesSync(n,t,r),Se.closeSync(n)}qf.exports={hasMillisRes:tx,hasMillisResSync:ex,timeRemoveMillis:rx,utimesMillis:nx,utimesMillisSync:ox}});var On=D((TA,Wf)=>{"use strict";var He=he(),Ae=require("path"),jf=10,Lf=5,ix=0,ya=process.versions.node.split("."),Bf=Number.parseInt(ya[0],10),Uf=Number.parseInt(ya[1],10),sx=Number.parseInt(ya[2],10);function In(){if(Bf>jf)return!0;if(Bf===jf){if(Uf>Lf)return!0;if(Uf===Lf&&sx>=ix)return!0}return!1}function ax(e,t,r){In()?He.stat(e,{bigint:!0},(n,o)=>{if(n)return r(n);He.stat(t,{bigint:!0},(i,s)=>i?i.code==="ENOENT"?r(null,{srcStat:o,destStat:null}):r(i):r(null,{srcStat:o,destStat:s}))}):He.stat(e,(n,o)=>{if(n)return r(n);He.stat(t,(i,s)=>i?i.code==="ENOENT"?r(null,{srcStat:o,destStat:null}):r(i):r(null,{srcStat:o,destStat:s}))})}function ux(e,t){let r,n;In()?r=He.statSync(e,{bigint:!0}):r=He.statSync(e);try{In()?n=He.statSync(t,{bigint:!0}):n=He.statSync(t)}catch(o){if(o.code==="ENOENT")return{srcStat:r,destStat:null};throw o}return{srcStat:r,destStat:n}}function cx(e,t,r,n){ax(e,t,(o,i)=>{if(o)return n(o);let{srcStat:s,destStat:a}=i;return a&&a.ino&&a.dev&&a.ino===s.ino&&a.dev===s.dev?n(new Error("Source and destination must not be the same.")):s.isDirectory()&&ba(e,t)?n(new Error(Sn(e,t,r))):n(null,{srcStat:s,destStat:a})})}function lx(e,t,r){let{srcStat:n,destStat:o}=ux(e,t);if(o&&o.ino&&o.dev&&o.ino===n.ino&&o.dev===n.dev)throw new Error("Source and destination must not be the same.");if(n.isDirectory()&&ba(e,t))throw new Error(Sn(e,t,r));return{srcStat:n,destStat:o}}function ga(e,t,r,n,o){let i=Ae.resolve(Ae.dirname(e)),s=Ae.resolve(Ae.dirname(r));if(s===i||s===Ae.parse(s).root)return o();In()?He.stat(s,{bigint:!0},(a,u)=>a?a.code==="ENOENT"?o():o(a):u.ino&&u.dev&&u.ino===t.ino&&u.dev===t.dev?o(new Error(Sn(e,r,n))):ga(e,t,s,n,o)):He.stat(s,(a,u)=>a?a.code==="ENOENT"?o():o(a):u.ino&&u.dev&&u.ino===t.ino&&u.dev===t.dev?o(new Error(Sn(e,r,n))):ga(e,t,s,n,o))}function zf(e,t,r,n){let o=Ae.resolve(Ae.dirname(e)),i=Ae.resolve(Ae.dirname(r));if(i===o||i===Ae.parse(i).root)return;let s;try{In()?s=He.statSync(i,{bigint:!0}):s=He.statSync(i)}catch(a){if(a.code==="ENOENT")return;throw a}if(s.ino&&s.dev&&s.ino===t.ino&&s.dev===t.dev)throw new Error(Sn(e,r,n));return zf(e,t,i,n)}function ba(e,t){let r=Ae.resolve(e).split(Ae.sep).filter(o=>o),n=Ae.resolve(t).split(Ae.sep).filter(o=>o);return r.reduce((o,i,s)=>o&&n[s]===i,!0)}function Sn(e,t,r){return`Cannot ${r} \'${e}\' to a subdirectory of itself, \'${t}\'.`}Wf.exports={checkPaths:cx,checkPathsSync:lx,checkParentPaths:ga,checkParentPathsSync:zf,isSrcSubdir:ba}});var Gf=D((NA,Kf)=>{"use strict";Kf.exports=function(e){if(typeof Buffer.allocUnsafe=="function")try{return Buffer.allocUnsafe(e)}catch{return new Buffer(e)}return new Buffer(e)}});var Zf=D((CA,Yf)=>{"use strict";var ne=he(),Dn=require("path"),fx=$e().mkdirsSync,px=ha().utimesMillisSync,_n=On();function mx(e,t,r){typeof r=="function"&&(r={filter:r}),r=r||{},r.clobber="clobber"in r?!!r.clobber:!0,r.overwrite="overwrite"in r?!!r.overwrite:r.clobber,r.preserveTimestamps&&process.arch==="ia32"&&console.warn(`fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269`);let{srcStat:n,destStat:o}=_n.checkPathsSync(e,t,"copy");return _n.checkParentPathsSync(e,n,t,"copy"),dx(o,e,t,r)}function dx(e,t,r,n){if(n.filter&&!n.filter(t,r))return;let o=Dn.dirname(r);return ne.existsSync(o)||fx(o),Hf(e,t,r,n)}function Hf(e,t,r,n){if(!(n.filter&&!n.filter(t,r)))return hx(e,t,r,n)}function hx(e,t,r,n){let i=(n.dereference?ne.statSync:ne.lstatSync)(t);if(i.isDirectory())return vx(i,e,t,r,n);if(i.isFile()||i.isCharacterDevice()||i.isBlockDevice())return gx(i,e,t,r,n);if(i.isSymbolicLink())return Ex(e,t,r,n)}function gx(e,t,r,n,o){return t?yx(e,r,n,o):Jf(e,r,n,o)}function yx(e,t,r,n){if(n.overwrite)return ne.unlinkSync(r),Jf(e,t,r,n);if(n.errorOnExist)throw new Error(`\'${r}\' already exists`)}function Jf(e,t,r,n){return typeof ne.copyFileSync=="function"?(ne.copyFileSync(t,r),ne.chmodSync(r,e.mode),n.preserveTimestamps?px(r,e.atime,e.mtime):void 0):bx(e,t,r,n)}function bx(e,t,r,n){let i=Gf()(65536),s=ne.openSync(t,"r"),a=ne.openSync(r,"w",e.mode),u=0;for(;uxx(n,e,t,r))}function xx(e,t,r,n){let o=Dn.join(t,e),i=Dn.join(r,e),{destStat:s}=_n.checkPathsSync(o,i,"copy");return Hf(s,o,i,n)}function Ex(e,t,r,n){let o=ne.readlinkSync(t);if(n.dereference&&(o=Dn.resolve(process.cwd(),o)),e){let i;try{i=ne.readlinkSync(r)}catch(s){if(s.code==="EINVAL"||s.code==="UNKNOWN")return ne.symlinkSync(o,r);throw s}if(n.dereference&&(i=Dn.resolve(process.cwd(),i)),_n.isSrcSubdir(o,i))throw new Error(`Cannot copy \'${o}\' to a subdirectory of itself, \'${i}\'.`);if(ne.statSync(r).isDirectory()&&_n.isSrcSubdir(i,o))throw new Error(`Cannot overwrite \'${i}\' with \'${o}\'.`);return Ix(o,r)}else return ne.symlinkSync(o,r)}function Ix(e,t){return ne.unlinkSync(t),ne.symlinkSync(e,t)}Yf.exports=mx});var va=D((AA,Qf)=>{"use strict";Qf.exports={copySync:Zf()}});var it=D((RA,ep)=>{"use strict";var Sx=Ce().fromPromise,Xf=sa();function Ox(e){return Xf.access(e).then(()=>!0).catch(()=>!1)}ep.exports={pathExists:Sx(Ox),pathExistsSync:Xf.existsSync}});var cp=D((FA,up)=>{"use strict";var Ie=he(),Tn=require("path"),Dx=$e().mkdirs,_x=it().pathExists,Tx=ha().utimesMillis,Nn=On();function Nx(e,t,r,n){typeof r=="function"&&!n?(n=r,r={}):typeof r=="function"&&(r={filter:r}),n=n||function(){},r=r||{},r.clobber="clobber"in r?!!r.clobber:!0,r.overwrite="overwrite"in r?!!r.overwrite:r.clobber,r.preserveTimestamps&&process.arch==="ia32"&&console.warn(`fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n\n see https://github.com/jprichardson/node-fs-extra/issues/269`),Nn.checkPaths(e,t,"copy",(o,i)=>{if(o)return n(o);let{srcStat:s,destStat:a}=i;Nn.checkParentPaths(e,s,t,"copy",u=>u?n(u):r.filter?np(tp,a,e,t,r,n):tp(a,e,t,r,n))})}function tp(e,t,r,n,o){let i=Tn.dirname(r);_x(i,(s,a)=>{if(s)return o(s);if(a)return wa(e,t,r,n,o);Dx(i,u=>u?o(u):wa(e,t,r,n,o))})}function np(e,t,r,n,o,i){Promise.resolve(o.filter(r,n)).then(s=>s?e(t,r,n,o,i):i(),s=>i(s))}function wa(e,t,r,n,o){return n.filter?np(rp,e,t,r,n,o):rp(e,t,r,n,o)}function rp(e,t,r,n,o){(n.dereference?Ie.stat:Ie.lstat)(t,(s,a)=>{if(s)return o(s);if(a.isDirectory())return Fx(a,e,t,r,n,o);if(a.isFile()||a.isCharacterDevice()||a.isBlockDevice())return Cx(a,e,t,r,n,o);if(a.isSymbolicLink())return kx(e,t,r,n,o)})}function Cx(e,t,r,n,o,i){return t?Ax(e,r,n,o,i):op(e,r,n,o,i)}function Ax(e,t,r,n,o){if(n.overwrite)Ie.unlink(r,i=>i?o(i):op(e,t,r,n,o));else return n.errorOnExist?o(new Error(`\'${r}\' already exists`)):o()}function op(e,t,r,n,o){return typeof Ie.copyFile=="function"?Ie.copyFile(t,r,i=>i?o(i):ip(e,r,n,o)):Rx(e,t,r,n,o)}function Rx(e,t,r,n,o){let i=Ie.createReadStream(t);i.on("error",s=>o(s)).once("open",()=>{let s=Ie.createWriteStream(r,{mode:e.mode});s.on("error",a=>o(a)).on("open",()=>i.pipe(s)).once("close",()=>ip(e,r,n,o))})}function ip(e,t,r,n){Ie.chmod(t,e.mode,o=>o?n(o):r.preserveTimestamps?Tx(t,e.atime,e.mtime,n):n())}function Fx(e,t,r,n,o,i){return t?t&&!t.isDirectory()?i(new Error(`Cannot overwrite non-directory \'${n}\' with directory \'${r}\'.`)):sp(r,n,o,i):$x(e,r,n,o,i)}function $x(e,t,r,n,o){Ie.mkdir(r,i=>{if(i)return o(i);sp(t,r,n,s=>s?o(s):Ie.chmod(r,e.mode,o))})}function sp(e,t,r,n){Ie.readdir(e,(o,i)=>o?n(o):ap(i,e,t,r,n))}function ap(e,t,r,n,o){let i=e.pop();return i?Px(e,i,t,r,n,o):o()}function Px(e,t,r,n,o,i){let s=Tn.join(r,t),a=Tn.join(n,t);Nn.checkPaths(s,a,"copy",(u,m)=>{if(u)return i(u);let{destStat:l}=m;wa(l,s,a,o,d=>d?i(d):ap(e,r,n,o,i))})}function kx(e,t,r,n,o){Ie.readlink(t,(i,s)=>{if(i)return o(i);if(n.dereference&&(s=Tn.resolve(process.cwd(),s)),e)Ie.readlink(r,(a,u)=>a?a.code==="EINVAL"||a.code==="UNKNOWN"?Ie.symlink(s,r,o):o(a):(n.dereference&&(u=Tn.resolve(process.cwd(),u)),Nn.isSrcSubdir(s,u)?o(new Error(`Cannot copy \'${s}\' to a subdirectory of itself, \'${u}\'.`)):e.isDirectory()&&Nn.isSrcSubdir(u,s)?o(new Error(`Cannot overwrite \'${u}\' with \'${s}\'.`)):Mx(s,r,o)));else return Ie.symlink(s,r,o)})}function Mx(e,t,r){Ie.unlink(t,n=>n?r(n):Ie.symlink(e,t,r))}up.exports=Nx});var xa=D(($A,lp)=>{"use strict";var qx=Ce().fromCallback;lp.exports={copy:qx(cp())}});var vp=D((PA,bp)=>{"use strict";var fp=he(),hp=require("path"),G=require("assert"),Cn=process.platform==="win32";function gp(e){["unlink","chmod","stat","lstat","rmdir","readdir"].forEach(r=>{e[r]=e[r]||fp[r],r=r+"Sync",e[r]=e[r]||fp[r]}),e.maxBusyTries=e.maxBusyTries||3}function Ea(e,t,r){let n=0;typeof t=="function"&&(r=t,t={}),G(e,"rimraf: missing path"),G.strictEqual(typeof e,"string","rimraf: path should be a string"),G.strictEqual(typeof r,"function","rimraf: callback function required"),G(t,"rimraf: invalid options argument provided"),G.strictEqual(typeof t,"object","rimraf: options should be object"),gp(t),pp(e,t,function o(i){if(i){if((i.code==="EBUSY"||i.code==="ENOTEMPTY"||i.code==="EPERM")&&npp(e,t,o),s)}i.code==="ENOENT"&&(i=null)}r(i)})}function pp(e,t,r){G(e),G(t),G(typeof r=="function"),t.lstat(e,(n,o)=>{if(n&&n.code==="ENOENT")return r(null);if(n&&n.code==="EPERM"&&Cn)return mp(e,t,n,r);if(o&&o.isDirectory())return oi(e,t,n,r);t.unlink(e,i=>{if(i){if(i.code==="ENOENT")return r(null);if(i.code==="EPERM")return Cn?mp(e,t,i,r):oi(e,t,i,r);if(i.code==="EISDIR")return oi(e,t,i,r)}return r(i)})})}function mp(e,t,r,n){G(e),G(t),G(typeof n=="function"),r&&G(r instanceof Error),t.chmod(e,438,o=>{o?n(o.code==="ENOENT"?null:r):t.stat(e,(i,s)=>{i?n(i.code==="ENOENT"?null:r):s.isDirectory()?oi(e,t,r,n):t.unlink(e,n)})})}function dp(e,t,r){let n;G(e),G(t),r&&G(r instanceof Error);try{t.chmodSync(e,438)}catch(o){if(o.code==="ENOENT")return;throw r}try{n=t.statSync(e)}catch(o){if(o.code==="ENOENT")return;throw r}n.isDirectory()?ii(e,t,r):t.unlinkSync(e)}function oi(e,t,r,n){G(e),G(t),r&&G(r instanceof Error),G(typeof n=="function"),t.rmdir(e,o=>{o&&(o.code==="ENOTEMPTY"||o.code==="EEXIST"||o.code==="EPERM")?jx(e,t,n):o&&o.code==="ENOTDIR"?n(r):n(o)})}function jx(e,t,r){G(e),G(t),G(typeof r=="function"),t.readdir(e,(n,o)=>{if(n)return r(n);let i=o.length,s;if(i===0)return t.rmdir(e,r);o.forEach(a=>{Ea(hp.join(e,a),t,u=>{if(!s){if(u)return r(s=u);--i===0&&t.rmdir(e,r)}})})})}function yp(e,t){let r;t=t||{},gp(t),G(e,"rimraf: missing path"),G.strictEqual(typeof e,"string","rimraf: path should be a string"),G(t,"rimraf: missing options"),G.strictEqual(typeof t,"object","rimraf: options should be object");try{r=t.lstatSync(e)}catch(n){if(n.code==="ENOENT")return;n.code==="EPERM"&&Cn&&dp(e,t,n)}try{r&&r.isDirectory()?ii(e,t,null):t.unlinkSync(e)}catch(n){if(n.code==="ENOENT")return;if(n.code==="EPERM")return Cn?dp(e,t,n):ii(e,t,n);if(n.code!=="EISDIR")throw n;ii(e,t,n)}}function ii(e,t,r){G(e),G(t),r&&G(r instanceof Error);try{t.rmdirSync(e)}catch(n){if(n.code==="ENOTDIR")throw r;if(n.code==="ENOTEMPTY"||n.code==="EEXIST"||n.code==="EPERM")Lx(e,t);else if(n.code!=="ENOENT")throw n}}function Lx(e,t){if(G(e),G(t),t.readdirSync(e).forEach(r=>yp(hp.join(e,r),t)),Cn){let r=Date.now();do try{return t.rmdirSync(e,t)}catch{}while(Date.now()-r<500)}else return t.rmdirSync(e,t)}bp.exports=Ea;Ea.sync=yp});var An=D((kA,xp)=>{"use strict";var Bx=Ce().fromCallback,wp=vp();xp.exports={remove:Bx(wp),removeSync:wp.sync}});var Np=D((MA,Tp)=>{"use strict";var Ux=Ce().fromCallback,Sp=he(),Op=require("path"),Dp=$e(),_p=An(),Ep=Ux(function(t,r){r=r||function(){},Sp.readdir(t,(n,o)=>{if(n)return Dp.mkdirs(t,r);o=o.map(s=>Op.join(t,s)),i();function i(){let s=o.pop();if(!s)return r();_p.remove(s,a=>{if(a)return r(a);i()})}})});function Ip(e){let t;try{t=Sp.readdirSync(e)}catch{return Dp.mkdirsSync(e)}t.forEach(r=>{r=Op.join(e,r),_p.removeSync(r)})}Tp.exports={emptyDirSync:Ip,emptydirSync:Ip,emptyDir:Ep,emptydir:Ep}});var Fp=D((qA,Rp)=>{"use strict";var zx=Ce().fromCallback,Cp=require("path"),Rn=he(),Ap=$e(),Wx=it().pathExists;function Kx(e,t){function r(){Rn.writeFile(e,"",n=>{if(n)return t(n);t()})}Rn.stat(e,(n,o)=>{if(!n&&o.isFile())return t();let i=Cp.dirname(e);Wx(i,(s,a)=>{if(s)return t(s);if(a)return r();Ap.mkdirs(i,u=>{if(u)return t(u);r()})})})}function Gx(e){let t;try{t=Rn.statSync(e)}catch{}if(t&&t.isFile())return;let r=Cp.dirname(e);Rn.existsSync(r)||Ap.mkdirsSync(r),Rn.writeFileSync(e,"")}Rp.exports={createFile:zx(Kx),createFileSync:Gx}});var qp=D((jA,Mp)=>{"use strict";var Hx=Ce().fromCallback,Pp=require("path"),Yt=he(),kp=$e(),$p=it().pathExists;function Jx(e,t,r){function n(o,i){Yt.link(o,i,s=>{if(s)return r(s);r(null)})}$p(t,(o,i)=>{if(o)return r(o);if(i)return r(null);Yt.lstat(e,s=>{if(s)return s.message=s.message.replace("lstat","ensureLink"),r(s);let a=Pp.dirname(t);$p(a,(u,m)=>{if(u)return r(u);if(m)return n(e,t);kp.mkdirs(a,l=>{if(l)return r(l);n(e,t)})})})})}function Vx(e,t){if(Yt.existsSync(t))return;try{Yt.lstatSync(e)}catch(i){throw i.message=i.message.replace("lstat","ensureLink"),i}let n=Pp.dirname(t);return Yt.existsSync(n)||kp.mkdirsSync(n),Yt.linkSync(e,t)}Mp.exports={createLink:Hx(Jx),createLinkSync:Vx}});var Lp=D((LA,jp)=>{"use strict";var Ct=require("path"),Fn=he(),Yx=it().pathExists;function Zx(e,t,r){if(Ct.isAbsolute(e))return Fn.lstat(e,n=>n?(n.message=n.message.replace("lstat","ensureSymlink"),r(n)):r(null,{toCwd:e,toDst:e}));{let n=Ct.dirname(t),o=Ct.join(n,e);return Yx(o,(i,s)=>i?r(i):s?r(null,{toCwd:o,toDst:e}):Fn.lstat(e,a=>a?(a.message=a.message.replace("lstat","ensureSymlink"),r(a)):r(null,{toCwd:e,toDst:Ct.relative(n,e)})))}}function Qx(e,t){let r;if(Ct.isAbsolute(e)){if(r=Fn.existsSync(e),!r)throw new Error("absolute srcpath does not exist");return{toCwd:e,toDst:e}}else{let n=Ct.dirname(t),o=Ct.join(n,e);if(r=Fn.existsSync(o),r)return{toCwd:o,toDst:e};if(r=Fn.existsSync(e),!r)throw new Error("relative srcpath does not exist");return{toCwd:e,toDst:Ct.relative(n,e)}}}jp.exports={symlinkPaths:Zx,symlinkPathsSync:Qx}});var zp=D((BA,Up)=>{"use strict";var Bp=he();function Xx(e,t,r){if(r=typeof t=="function"?t:r,t=typeof t=="function"?!1:t,t)return r(null,t);Bp.lstat(e,(n,o)=>{if(n)return r(null,"file");t=o&&o.isDirectory()?"dir":"file",r(null,t)})}function e0(e,t){let r;if(t)return t;try{r=Bp.lstatSync(e)}catch{return"file"}return r&&r.isDirectory()?"dir":"file"}Up.exports={symlinkType:Xx,symlinkTypeSync:e0}});var Yp=D((UA,Vp)=>{"use strict";var t0=Ce().fromCallback,Kp=require("path"),Ir=he(),Gp=$e(),r0=Gp.mkdirs,n0=Gp.mkdirsSync,Hp=Lp(),o0=Hp.symlinkPaths,i0=Hp.symlinkPathsSync,Jp=zp(),s0=Jp.symlinkType,a0=Jp.symlinkTypeSync,Wp=it().pathExists;function u0(e,t,r,n){n=typeof r=="function"?r:n,r=typeof r=="function"?!1:r,Wp(t,(o,i)=>{if(o)return n(o);if(i)return n(null);o0(e,t,(s,a)=>{if(s)return n(s);e=a.toDst,s0(a.toCwd,r,(u,m)=>{if(u)return n(u);let l=Kp.dirname(t);Wp(l,(d,f)=>{if(d)return n(d);if(f)return Ir.symlink(e,t,m,n);r0(l,g=>{if(g)return n(g);Ir.symlink(e,t,m,n)})})})})})}function c0(e,t,r){if(Ir.existsSync(t))return;let o=i0(e,t);e=o.toDst,r=a0(o.toCwd,r);let i=Kp.dirname(t);return Ir.existsSync(i)||n0(i),Ir.symlinkSync(e,t,r)}Vp.exports={createSymlink:t0(u0),createSymlinkSync:c0}});var Qp=D((zA,Zp)=>{"use strict";var si=Fp(),ai=qp(),ui=Yp();Zp.exports={createFile:si.createFile,createFileSync:si.createFileSync,ensureFile:si.createFile,ensureFileSync:si.createFileSync,createLink:ai.createLink,createLinkSync:ai.createLinkSync,ensureLink:ai.createLink,ensureLinkSync:ai.createLinkSync,createSymlink:ui.createSymlink,createSymlinkSync:ui.createSymlinkSync,ensureSymlink:ui.createSymlink,ensureSymlinkSync:ui.createSymlinkSync}});var rm=D((WA,tm)=>{var Sr;try{Sr=he()}catch{Sr=require("fs")}function l0(e,t,r){r==null&&(r=t,t={}),typeof t=="string"&&(t={encoding:t}),t=t||{};var n=t.fs||Sr,o=!0;"throws"in t&&(o=t.throws),n.readFile(e,t,function(i,s){if(i)return r(i);s=em(s);var a;try{a=JSON.parse(s,t?t.reviver:null)}catch(u){return o?(u.message=e+": "+u.message,r(u)):r(null,null)}r(null,a)})}function f0(e,t){t=t||{},typeof t=="string"&&(t={encoding:t});var r=t.fs||Sr,n=!0;"throws"in t&&(n=t.throws);try{var o=r.readFileSync(e,t);return o=em(o),JSON.parse(o,t.reviver)}catch(i){if(n)throw i.message=e+": "+i.message,i;return null}}function Xp(e,t){var r,n=`\n`;typeof t=="object"&&t!==null&&(t.spaces&&(r=t.spaces),t.EOL&&(n=t.EOL));var o=JSON.stringify(e,t?t.replacer:null,r);return o.replace(/\\n/g,n)+n}function p0(e,t,r,n){n==null&&(n=r,r={}),r=r||{};var o=r.fs||Sr,i="";try{i=Xp(t,r)}catch(s){n&&n(s,null);return}o.writeFile(e,i,r,n)}function m0(e,t,r){r=r||{};var n=r.fs||Sr,o=Xp(t,r);return n.writeFileSync(e,o,r)}function em(e){return Buffer.isBuffer(e)&&(e=e.toString("utf8")),e=e.replace(/^\\uFEFF/,""),e}var d0={readFile:l0,readFileSync:f0,writeFile:p0,writeFileSync:m0};tm.exports=d0});var li=D((KA,om)=>{"use strict";var nm=Ce().fromCallback,ci=rm();om.exports={readJson:nm(ci.readFile),readJsonSync:ci.readFileSync,writeJson:nm(ci.writeFile),writeJsonSync:ci.writeFileSync}});var am=D((GA,sm)=>{"use strict";var h0=require("path"),g0=$e(),y0=it().pathExists,im=li();function b0(e,t,r,n){typeof r=="function"&&(n=r,r={});let o=h0.dirname(e);y0(o,(i,s)=>{if(i)return n(i);if(s)return im.writeJson(e,t,r,n);g0.mkdirs(o,a=>{if(a)return n(a);im.writeJson(e,t,r,n)})})}sm.exports=b0});var cm=D((HA,um)=>{"use strict";var v0=he(),w0=require("path"),x0=$e(),E0=li();function I0(e,t,r){let n=w0.dirname(e);v0.existsSync(n)||x0.mkdirsSync(n),E0.writeJsonSync(e,t,r)}um.exports=I0});var fm=D((JA,lm)=>{"use strict";var S0=Ce().fromCallback,De=li();De.outputJson=S0(am());De.outputJsonSync=cm();De.outputJSON=De.outputJson;De.outputJSONSync=De.outputJsonSync;De.writeJSON=De.writeJson;De.writeJSONSync=De.writeJsonSync;De.readJSON=De.readJson;De.readJSONSync=De.readJsonSync;lm.exports=De});var ym=D((VA,gm)=>{"use strict";var dm=he(),O0=require("path"),D0=va().copySync,hm=An().removeSync,_0=$e().mkdirpSync,pm=On();function T0(e,t,r){r=r||{};let n=r.overwrite||r.clobber||!1,{srcStat:o}=pm.checkPathsSync(e,t,"move");return pm.checkParentPathsSync(e,o,t,"move"),_0(O0.dirname(t)),N0(e,t,n)}function N0(e,t,r){if(r)return hm(t),mm(e,t,r);if(dm.existsSync(t))throw new Error("dest already exists.");return mm(e,t,r)}function mm(e,t,r){try{dm.renameSync(e,t)}catch(n){if(n.code!=="EXDEV")throw n;return C0(e,t,r)}}function C0(e,t,r){return D0(e,t,{overwrite:r,errorOnExist:!0}),hm(e)}gm.exports=T0});var vm=D((YA,bm)=>{"use strict";bm.exports={moveSync:ym()}});var Sm=D((ZA,Im)=>{"use strict";var A0=he(),R0=require("path"),F0=xa().copy,Em=An().remove,$0=$e().mkdirp,P0=it().pathExists,wm=On();function k0(e,t,r,n){typeof r=="function"&&(n=r,r={});let o=r.overwrite||r.clobber||!1;wm.checkPaths(e,t,"move",(i,s)=>{if(i)return n(i);let{srcStat:a}=s;wm.checkParentPaths(e,a,t,"move",u=>{if(u)return n(u);$0(R0.dirname(t),m=>m?n(m):M0(e,t,o,n))})})}function M0(e,t,r,n){if(r)return Em(t,o=>o?n(o):xm(e,t,r,n));P0(t,(o,i)=>o?n(o):i?n(new Error("dest already exists.")):xm(e,t,r,n))}function xm(e,t,r,n){A0.rename(e,t,o=>o?o.code!=="EXDEV"?n(o):q0(e,t,r,n):n())}function q0(e,t,r,n){F0(e,t,{overwrite:r,errorOnExist:!0},i=>i?n(i):Em(e,n))}Im.exports=k0});var Dm=D((QA,Om)=>{"use strict";var j0=Ce().fromCallback;Om.exports={move:j0(Sm())}});var Cm=D((XA,Nm)=>{"use strict";var L0=Ce().fromCallback,$n=he(),_m=require("path"),Tm=$e(),B0=it().pathExists;function U0(e,t,r,n){typeof r=="function"&&(n=r,r="utf8");let o=_m.dirname(e);B0(o,(i,s)=>{if(i)return n(i);if(s)return $n.writeFile(e,t,r,n);Tm.mkdirs(o,a=>{if(a)return n(a);$n.writeFile(e,t,r,n)})})}function z0(e,...t){let r=_m.dirname(e);if($n.existsSync(r))return $n.writeFileSync(e,...t);Tm.mkdirsSync(r),$n.writeFileSync(e,...t)}Nm.exports={outputFile:L0(U0),outputFileSync:z0}});var Sa=D((eR,Ia)=>{"use strict";Ia.exports=Object.assign({},sa(),va(),xa(),Np(),Qp(),fm(),$e(),vm(),Dm(),Cm(),it(),An());var Am=require("fs");Object.getOwnPropertyDescriptor(Am,"promises")&&Object.defineProperty(Ia.exports,"promises",{get(){return Am.promises}})});var Fm=D((tR,Rm)=>{Rm.exports=()=>new Date});var Pm=D((rR,$m)=>{var W0=we()("streamroller:fileNameFormatter"),K0=require("path"),G0=".gz",H0=".";$m.exports=({file:e,keepFileExt:t,needsIndex:r,alwaysIncludeDate:n,compress:o,fileNameSep:i})=>{let s=i||H0,a=K0.join(e.dir,e.name),u=g=>g+e.ext,m=(g,w,x)=>(r||!x)&&w?g+s+w:g,l=(g,w,x)=>(w>0||n)&&x?g+s+x:g,d=(g,w)=>w&&o?g+G0:g,f=t?[l,m,u,d]:[u,l,m,d];return({date:g,index:w})=>(W0(`_formatFileName: date=${g}, index=${w}`),f.reduce((x,S)=>S(x,w,g),a))}});var jm=D((nR,qm)=>{var Zt=we()("streamroller:fileNameParser"),km=".gz",Mm=Jo(),J0=".";qm.exports=({file:e,keepFileExt:t,pattern:r,fileNameSep:n})=>{let o=n||J0,i=(f,g)=>f.endsWith(km)?(Zt("it is gzipped"),g.isCompressed=!0,f.slice(0,-1*km.length)):f,s="__NOT_MATCHING__",d=[i,t?f=>f.startsWith(e.name)&&f.endsWith(e.ext)?(Zt("it starts and ends with the right things"),f.slice(e.name.length+1,-1*e.ext.length)):s:f=>f.startsWith(e.base)?(Zt("it starts with the right things"),f.slice(e.base.length+1)):s,r?(f,g)=>{let w=f.split(o),x=w[w.length-1];Zt("items: ",w,", indexStr: ",x);let S=f;x!==void 0&&x.match(/^\\d+$/)?(S=f.slice(0,-1*(x.length+1)),Zt(`dateStr is ${S}`),r&&!S&&(S=x,x="0")):x="0";try{let N=Mm.parse(r,S,new Date(0,0));return Mm.asString(r,N)!==S?f:(g.index=parseInt(x,10),g.date=S,g.timestamp=N.getTime(),"")}catch(N){return Zt(`Problem parsing ${S} as ${r}, error was: `,N),f}}:(f,g)=>f.match(/^\\d+$/)?(Zt("it has an index"),g.index=parseInt(f,10),""):f];return f=>{let g={filename:f,index:0,isCompressed:!1};return d.reduce((x,S)=>S(x,g),f)?null:g}}});var Bm=D((oR,Lm)=>{var Re=we()("streamroller:moveAndMaybeCompressFile"),gt=Sa(),V0=require("zlib"),Y0=function(e){let t={mode:parseInt("0600",8),compress:!1},r=Object.assign({},t,e);return Re(`_parseOption: moveAndMaybeCompressFile called with option=${JSON.stringify(r)}`),r},Z0=async(e,t,r)=>{if(r=Y0(r),e===t){Re("moveAndMaybeCompressFile: source and target are the same, not doing anything");return}if(await gt.pathExists(e))if(Re(`moveAndMaybeCompressFile: moving file from ${e} to ${t} ${r.compress?"with":"without"} compress`),r.compress)await new Promise((n,o)=>{let i=!1,s=gt.createWriteStream(t,{mode:r.mode,flags:"wx"}).on("open",()=>{i=!0;let a=gt.createReadStream(e).on("open",()=>{a.pipe(V0.createGzip()).pipe(s)}).on("error",u=>{Re(`moveAndMaybeCompressFile: error reading ${e}`,u),s.destroy(u)})}).on("finish",()=>{Re(`moveAndMaybeCompressFile: finished compressing ${t}, deleting ${e}`),gt.unlink(e).then(n).catch(a=>{Re(`moveAndMaybeCompressFile: error deleting ${e}, truncating instead`,a),gt.truncate(e).then(n).catch(u=>{Re(`moveAndMaybeCompressFile: error truncating ${e}`,u),o(u)})})}).on("error",a=>{i?(Re(`moveAndMaybeCompressFile: error writing ${t}, deleting`,a),gt.unlink(t).then(()=>{o(a)}).catch(u=>{Re(`moveAndMaybeCompressFile: error deleting ${t}`,u),o(u)})):(Re(`moveAndMaybeCompressFile: error creating ${t}`,a),o(a))})}).catch(()=>{});else{Re(`moveAndMaybeCompressFile: renaming ${e} to ${t}`);try{await gt.move(e,t,{overwrite:!0})}catch(n){if(Re(`moveAndMaybeCompressFile: error renaming ${e} to ${t}`,n),n.code!=="ENOENT"){Re("moveAndMaybeCompressFile: trying copy+truncate instead");try{await gt.copy(e,t,{overwrite:!0}),await gt.truncate(e)}catch(o){Re("moveAndMaybeCompressFile: error copy+truncate",o)}}}}};Lm.exports=Z0});var mi=D((iR,Um)=>{var Pe=we()("streamroller:RollingFileWriteStream"),Xt=Sa(),Qt=require("path"),Q0=require("os"),fi=Fm(),pi=Jo(),{Writable:X0}=require("stream"),eE=Pm(),tE=jm(),rE=Bm(),nE=e=>(Pe(`deleteFiles: files to delete: ${e}`),Promise.all(e.map(t=>Xt.unlink(t).catch(r=>{Pe(`deleteFiles: error when unlinking ${t}, ignoring. Error was ${r}`)})))),Oa=class extends X0{constructor(t,r){if(Pe(`constructor: creating RollingFileWriteStream. path=${t}`),typeof t!="string"||t.length===0)throw new Error(`Invalid filename: ${t}`);if(t.endsWith(Qt.sep))throw new Error(`Filename is a directory: ${t}`);t.indexOf(`~${Qt.sep}`)===0&&(t=t.replace("~",Q0.homedir())),super(r),this.options=this._parseOption(r),this.fileObject=Qt.parse(t),this.fileObject.dir===""&&(this.fileObject=Qt.parse(Qt.join(process.cwd(),t))),this.fileFormatter=eE({file:this.fileObject,alwaysIncludeDate:this.options.alwaysIncludePattern,needsIndex:this.options.maxSize 0`);if(n.numBackups||n.numBackups===0){if(n.numBackups<0)throw new Error(`options.numBackups (${n.numBackups}) should be >= 0`);if(n.numBackups>=Number.MAX_SAFE_INTEGER)throw new Error(`options.numBackups (${n.numBackups}) should be < Number.MAX_SAFE_INTEGER`);n.numToKeep=n.numBackups+1}else if(n.numToKeep<=0)throw new Error(`options.numToKeep (${n.numToKeep}) should be > 0`);return Pe(`_parseOption: creating stream with option=${JSON.stringify(n)}`),n}_final(t){this.currentFileStream.end("",this.options.encoding,t)}_write(t,r,n){this._shouldRoll().then(()=>{Pe(`_write: writing chunk. file=${this.currentFileStream.path} state=${JSON.stringify(this.state)} chunk=${t}`),this.currentFileStream.write(t,r,o=>{this.state.currentSize+=t.length,n(o)})})}async _shouldRoll(){(this._dateChanged()||this._tooBig())&&(Pe(`_shouldRoll: rolling because dateChanged? ${this._dateChanged()} or tooBig? ${this._tooBig()}`),await this._roll())}_dateChanged(){return this.state.currentDate&&this.state.currentDate!==pi(this.options.pattern,fi())}_tooBig(){return this.state.currentSize>=this.options.maxSize}_roll(){return Pe("_roll: closing the current stream"),new Promise((t,r)=>{this.currentFileStream.end("",this.options.encoding,()=>{this._moveOldFiles().then(t).catch(r)})})}async _moveOldFiles(){let t=await this._getExistingFiles(),r=this.state.currentDate?t.filter(n=>n.date===this.state.currentDate):t;for(let n=r.length;n>=0;n--){Pe(`_moveOldFiles: i = ${n}`);let o=this.fileFormatter({date:this.state.currentDate,index:n}),i=this.fileFormatter({date:this.state.currentDate,index:n+1}),s={compress:this.options.compress&&n===0,mode:this.options.mode};await rE(o,i,s)}this.state.currentSize=0,this.state.currentDate=this.state.currentDate?pi(this.options.pattern,fi()):null,Pe(`_moveOldFiles: finished rolling files. state=${JSON.stringify(this.state)}`),this._renewWriteStream(),await new Promise((n,o)=>{this.currentFileStream.write("","utf8",()=>{this._clean().then(n).catch(o)})})}async _getExistingFiles(){let t=await Xt.readdir(this.fileObject.dir).catch(()=>[]);Pe(`_getExistingFiles: files=${t}`);let r=t.map(o=>this.fileNameParser(o)).filter(o=>o),n=o=>(o.timestamp?o.timestamp:fi().getTime())-o.index;return r.sort((o,i)=>n(o)-n(i)),r}_renewWriteStream(){let t=this.fileFormatter({date:this.state.currentDate,index:0}),r=i=>{try{return Xt.mkdirSync(i,{recursive:!0})}catch(s){if(s.code==="ENOENT")return r(Qt.dirname(i)),r(i);if(s.code!=="EEXIST"&&s.code!=="EROFS")throw s;try{if(Xt.statSync(i).isDirectory())return i;throw s}catch{throw s}}};r(this.fileObject.dir);let n={flags:this.options.flags,encoding:this.options.encoding,mode:this.options.mode},o=function(i,s,a){return i[a]=i[s],delete i[s],i};Xt.appendFileSync(t,"",o({...n},"flags","flag")),this.currentFileStream=Xt.createWriteStream(t,n),this.currentFileStream.on("error",i=>{this.emit("error",i)})}async _clean(){let t=await this._getExistingFiles();if(Pe(`_clean: numToKeep = ${this.options.numToKeep}, existingFiles = ${t.length}`),Pe("_clean: existing files are: ",t),this._tooManyFiles(t.length)){let r=t.slice(0,t.length-this.options.numToKeep).map(n=>Qt.format({dir:this.fileObject.dir,base:n.filename}));await nE(r)}}_tooManyFiles(t){return this.options.numToKeep>0&&t>this.options.numToKeep}};Um.exports=Oa});var Wm=D((sR,zm)=>{var oE=mi(),Da=class extends oE{constructor(t,r,n,o){o||(o={}),r&&(o.maxSize=r),!o.numBackups&&o.numBackups!==0&&(!n&&n!==0&&(n=1),o.numBackups=n),super(t,o),this.backups=o.numBackups,this.size=this.options.maxSize}get theStream(){return this.currentFileStream}};zm.exports=Da});var Gm=D((aR,Km)=>{var iE=mi(),_a=class extends iE{constructor(t,r,n){r&&typeof r=="object"&&(n=r,r=null),n||(n={}),r||(r="yyyy-MM-dd"),n.pattern=r,!n.numBackups&&n.numBackups!==0?(!n.daysToKeep&&n.daysToKeep!==0?n.daysToKeep=1:process.emitWarning("options.daysToKeep is deprecated due to the confusion it causes when used together with file size rolling. Please use options.numBackups instead.","DeprecationWarning","streamroller-DEP0001"),n.numBackups=n.daysToKeep):n.daysToKeep=n.numBackups,super(t,n),this.mode=this.options.mode}get theStream(){return this.currentFileStream}};Km.exports=_a});var Ta=D((uR,Hm)=>{Hm.exports={RollingFileWriteStream:mi(),RollingFileStream:Wm(),DateRollingFileStream:Gm()}});var Qm=D((cR,Zm)=>{var Jm=we()("log4js:file"),Na=require("path"),sE=Ta(),Ym=require("os"),aE=Ym.EOL,di=!1,hi=new Set;function Vm(){hi.forEach(e=>{e.sighupHandler()})}function uE(e,t,r,n,o,i){if(typeof e!="string"||e.length===0)throw new Error(`Invalid filename: ${e}`);if(e.endsWith(Na.sep))throw new Error(`Filename is a directory: ${e}`);e=e.replace(new RegExp(`^~(?=${Na.sep}.+)`),Ym.homedir()),e=Na.normalize(e),n=!n&&n!==0?5:n,Jm("Creating file appender (",e,", ",r,", ",n,", ",o,", ",i,")");function s(m,l,d,f){let g=new sE.RollingFileStream(m,l,d,f);return g.on("error",w=>{console.error("log4js.fileAppender - Writing to file %s, error happened ",m,w)}),g.on("drain",()=>{process.emit("log4js:pause",!1)}),g}let a=s(e,r,n,o),u=function(m){if(a.writable){if(o.removeColor===!0){let l=/\\x1b[[0-9;]*m/g;m.data=m.data.map(d=>typeof d=="string"?d.replace(l,""):d)}a.write(t(m,i)+aE,"utf8")||process.emit("log4js:pause",!0)}};return u.reopen=function(){a.end(()=>{a=s(e,r,n,o)})},u.sighupHandler=function(){Jm("SIGHUP handler called."),u.reopen()},u.shutdown=function(m){hi.delete(u),hi.size===0&&di&&(process.removeListener("SIGHUP",Vm),di=!1),a.end("","utf-8",m)},hi.add(u),di||(process.on("SIGHUP",Vm),di=!0),u}function cE(e,t){let r=t.basicLayout;return e.layout&&(r=t.layout(e.layout.type,e.layout)),e.mode=e.mode||384,uE(e.filename,r,e.maxLogSize,e.backups,e,e.timezoneOffset)}Zm.exports.configure=cE});var ed=D((lR,Xm)=>{var lE=Ta(),fE=require("os"),pE=fE.EOL;function mE(e,t,r){let n=new lE.DateRollingFileStream(e,t,r);return n.on("error",o=>{console.error("log4js.dateFileAppender - Writing to file %s, error happened ",e,o)}),n.on("drain",()=>{process.emit("log4js:pause",!1)}),n}function dE(e,t,r,n,o){n.maxSize=n.maxLogSize;let i=mE(e,t,n),s=function(a){i.writable&&(i.write(r(a,o)+pE,"utf8")||process.emit("log4js:pause",!0))};return s.shutdown=function(a){i.end("","utf-8",a)},s}function hE(e,t){let r=t.basicLayout;return e.layout&&(r=t.layout(e.layout.type,e.layout)),e.alwaysIncludePattern||(e.alwaysIncludePattern=!1),e.mode=e.mode||384,dE(e.filename,e.pattern,r,e,e.timezoneOffset)}Xm.exports.configure=hE});var od=D((fR,nd)=>{var yt=we()("log4js:fileSync"),at=require("path"),st=require("fs"),td=require("os"),gE=td.EOL;function rd(e,t){let r=n=>{try{return st.mkdirSync(n,{recursive:!0})}catch(o){if(o.code==="ENOENT")return r(at.dirname(n)),r(n);if(o.code!=="EEXIST"&&o.code!=="EROFS")throw o;try{if(st.statSync(n).isDirectory())return n;throw o}catch{throw o}}};r(at.dirname(e)),st.appendFileSync(e,"",{mode:t.mode,flag:t.flags})}var Ca=class{constructor(t,r,n,o){if(yt("In RollingFileStream"),r<0)throw new Error(`maxLogSize (${r}) should be > 0`);this.filename=t,this.size=r,this.backups=n,this.options=o,this.currentSize=0;function i(s){let a=0;try{a=st.statSync(s).size}catch{rd(s,o)}return a}this.currentSize=i(this.filename)}shouldRoll(){return yt("should roll with current size %d, and max size %d",this.currentSize,this.size),this.currentSize>=this.size}roll(t){let r=this,n=new RegExp(`^${at.basename(t)}`);function o(m){return n.test(m)}function i(m){return parseInt(m.slice(`${at.basename(t)}.`.length),10)||0}function s(m,l){return i(m)-i(l)}function a(m){let l=i(m);if(yt(`Index of ${m} is ${l}`),r.backups===0)st.truncateSync(t,0);else if(l ${t}.${l+1}`),st.renameSync(at.join(at.dirname(t),m),`${t}.${l+1}`)}}function u(){yt("Renaming the old files"),st.readdirSync(at.dirname(t)).filter(o).sort(s).reverse().forEach(a)}yt("Rolling, rolling, rolling"),u()}write(t,r){let n=this;function o(){yt("writing the chunk to the file"),n.currentSize+=t.length,st.appendFileSync(n.filename,t)}yt("in write"),this.shouldRoll()&&(this.currentSize=0,this.roll(this.filename)),o()}};function yE(e,t,r,n,o,i){if(typeof e!="string"||e.length===0)throw new Error(`Invalid filename: ${e}`);if(e.endsWith(at.sep))throw new Error(`Filename is a directory: ${e}`);e=e.replace(new RegExp(`^~(?=${at.sep}.+)`),td.homedir()),e=at.normalize(e),n=!n&&n!==0?5:n,yt("Creating fileSync appender (",e,", ",r,", ",n,", ",o,", ",i,")");function s(u,m,l){let d;return m?d=new Ca(u,m,l,o):d=(f=>(rd(f,o),{write(g){st.appendFileSync(f,g)}}))(u),d}let a=s(e,r,n);return u=>{a.write(t(u,i)+gE)}}function bE(e,t){let r=t.basicLayout;e.layout&&(r=t.layout(e.layout.type,e.layout));let n={flags:e.flags||"a",encoding:e.encoding||"utf8",mode:e.mode||384};return yE(e.filename,r,e.maxLogSize,e.backups,n,e.timezoneOffset)}nd.exports.configure=bE});var sd=D((pR,id)=>{var ut=we()("log4js:tcp"),vE=require("net");function wE(e,t){let r=!1,n=[],o,i=3,s="__LOG4JS__";function a(d){ut("Writing log event to socket"),r=o.write(`${t(d)}${s}`,"utf8")}function u(){let d;for(ut("emptying buffer");d=n.shift();)a(d)}function m(){ut(`appender creating socket to ${e.host||"localhost"}:${e.port||5e3}`),s=`${e.endMsg||"__LOG4JS__"}`,o=vE.createConnection(e.port||5e3,e.host||"localhost"),o.on("connect",()=>{ut("socket connected"),u(),r=!0}),o.on("drain",()=>{ut("drain event received, emptying buffer"),r=!0,u()}),o.on("timeout",o.end.bind(o)),o.on("error",d=>{ut("connection error",d),r=!1,u()}),o.on("close",m)}m();function l(d){r?a(d):(ut("buffering log event because it cannot write at the moment"),n.push(d))}return l.shutdown=function(d){ut("shutdown called"),n.length&&i?(ut("buffer has items, waiting 100ms to empty"),i-=1,setTimeout(()=>{l.shutdown(d)},100)):(o.removeAllListeners("close"),o.end(d))},l}function xE(e,t){ut(`configure with config = ${e}`);let r=function(n){return n.serialise()};return e.layout&&(r=t.layout(e.layout.type,e.layout)),wE(e,r)}id.exports.configure=xE});var Fa=D((mR,Ra)=>{var Aa=require("path"),At=we()("log4js:appenders"),Je=Kt(),ad=Qo(),EE=Ht(),IE=Ys(),SE=nf(),Qe=new Map;Qe.set("console",sf());Qe.set("stdout",uf());Qe.set("stderr",lf());Qe.set("logLevelFilter",pf());Qe.set("categoryFilter",hf());Qe.set("noLogFilter",bf());Qe.set("file",Qm());Qe.set("dateFile",ed());Qe.set("fileSync",od());Qe.set("tcp",sd());var Pn=new Map,gi=(e,t)=>{let r;try{let n=`${e}.cjs`;r=require.resolve(n),At("Loading module from ",n)}catch{r=e,At("Loading module from ",e)}try{return require(r)}catch(n){Je.throwExceptionIf(t,n.code!=="MODULE_NOT_FOUND",`appender "${e}" could not be loaded (error was: ${n})`);return}},OE=(e,t)=>Qe.get(e)||gi(`./${e}`,t)||gi(e,t)||require.main&&require.main.filename&&gi(Aa.join(Aa.dirname(require.main.filename),e),t)||gi(Aa.join(process.cwd(),e),t),yi=new Set,ud=(e,t)=>{if(Pn.has(e))return Pn.get(e);if(!t.appenders[e])return!1;if(yi.has(e))throw new Error(`Dependency loop detected for appender ${e}.`);yi.add(e),At(`Creating appender ${e}`);let r=DE(e,t);return yi.delete(e),Pn.set(e,r),r},DE=(e,t)=>{let r=t.appenders[e],n=r.type.configure?r.type:OE(r.type,t);return Je.throwExceptionIf(t,Je.not(n),`appender "${e}" is not valid (type "${r.type}" could not be found)`),n.appender&&(process.emitWarning(`Appender ${r.type} exports an appender function.`,"DeprecationWarning","log4js-node-DEP0001"),At("[log4js-node-DEP0001]",`DEPRECATION: Appender ${r.type} exports an appender function.`)),n.shutdown&&(process.emitWarning(`Appender ${r.type} exports a shutdown function.`,"DeprecationWarning","log4js-node-DEP0002"),At("[log4js-node-DEP0002]",`DEPRECATION: Appender ${r.type} exports a shutdown function.`)),At(`${e}: clustering.isMaster ? ${ad.isMaster()}`),At(`${e}: appenderModule is ${require("util").inspect(n)}`),ad.onlyOnMaster(()=>(At(`calling appenderModule.configure for ${e} / ${r.type}`),n.configure(SE.modifyConfig(r),IE,o=>ud(o,t),EE)),()=>{})},cd=e=>{if(Pn.clear(),yi.clear(),!e)return;let t=[];Object.values(e.categories).forEach(r=>{t.push(...r.appenders)}),Object.keys(e.appenders).forEach(r=>{(t.includes(r)||e.appenders[r].type==="tcp-server"||e.appenders[r].type==="multiprocess")&&ud(r,e)})},ld=()=>{cd()};ld();Je.addListener(e=>{Je.throwExceptionIf(e,Je.not(Je.anObject(e.appenders)),\'must have a property "appenders" of type object.\');let t=Object.keys(e.appenders);Je.throwExceptionIf(e,Je.not(t.length),"must define at least one appender."),t.forEach(r=>{Je.throwExceptionIf(e,Je.not(e.appenders[r].type),`appender "${r}" is not valid (must be an object with property "type")`)})});Je.addListener(cd);Ra.exports=Pn;Ra.exports.init=ld});var ka=D((dR,bi)=>{var kn=we()("log4js:categories"),ue=Kt(),$a=Ht(),fd=Fa(),Rt=new Map;function pd(e,t,r){if(t.inherit===!1)return;let n=r.lastIndexOf(".");if(n<0)return;let o=r.slice(0,n),i=e.categories[o];i||(i={inherit:!0,appenders:[]}),pd(e,i,o),!e.categories[o]&&i.appenders&&i.appenders.length&&i.level&&(e.categories[o]=i),t.appenders=t.appenders||[],t.level=t.level||i.level,i.appenders.forEach(s=>{t.appenders.includes(s)||t.appenders.push(s)}),t.parent=i}function _E(e){if(!e.categories)return;Object.keys(e.categories).forEach(r=>{let n=e.categories[r];pd(e,n,r)})}ue.addPreProcessingListener(e=>_E(e));ue.addListener(e=>{ue.throwExceptionIf(e,ue.not(ue.anObject(e.categories)),\'must have a property "categories" of type object.\');let t=Object.keys(e.categories);ue.throwExceptionIf(e,ue.not(t.length),"must define at least one category."),t.forEach(r=>{let n=e.categories[r];ue.throwExceptionIf(e,[ue.not(n.appenders),ue.not(n.level)],`category "${r}" is not valid (must be an object with properties "appenders" and "level")`),ue.throwExceptionIf(e,ue.not(Array.isArray(n.appenders)),`category "${r}" is not valid (appenders must be an array of appender names)`),ue.throwExceptionIf(e,ue.not(n.appenders.length),`category "${r}" is not valid (appenders must contain at least one appender name)`),Object.prototype.hasOwnProperty.call(n,"enableCallStack")&&ue.throwExceptionIf(e,typeof n.enableCallStack!="boolean",`category "${r}" is not valid (enableCallStack must be boolean type)`),n.appenders.forEach(o=>{ue.throwExceptionIf(e,ue.not(fd.get(o)),`category "${r}" is not valid (appender "${o}" is not defined)`)}),ue.throwExceptionIf(e,ue.not($a.getLevel(n.level)),`category "${r}" is not valid (level "${n.level}" not recognised; valid levels are ${$a.levels.join(", ")})`)}),ue.throwExceptionIf(e,ue.not(e.categories.default),\'must define a "default" category.\')});var Pa=e=>{if(Rt.clear(),!e)return;Object.keys(e.categories).forEach(r=>{let n=e.categories[r],o=[];n.appenders.forEach(i=>{o.push(fd.get(i)),kn(`Creating category ${r}`),Rt.set(r,{appenders:o,level:$a.getLevel(n.level),enableCallStack:n.enableCallStack||!1})})})},md=()=>{Pa()};md();ue.addListener(Pa);var Or=e=>{if(kn(`configForCategory: searching for config for ${e}`),Rt.has(e))return kn(`configForCategory: ${e} exists in config, returning it`),Rt.get(e);let t;return e.indexOf(".")>0?(kn(`configForCategory: ${e} has hierarchy, cloning from parents`),t={...Or(e.slice(0,e.lastIndexOf(".")))}):(Rt.has("default")||Pa({categories:{default:{appenders:["out"],level:"OFF"}}}),kn("configForCategory: cloning default category"),t={...Rt.get("default")}),Rt.set(e,t),t},TE=e=>Or(e).appenders,NE=e=>Or(e).level,CE=(e,t)=>{Or(e).level=t},AE=e=>Or(e).enableCallStack===!0,RE=(e,t)=>{Or(e).enableCallStack=t};bi.exports=Rt;bi.exports=Object.assign(bi.exports,{appendersForCategory:TE,getLevelForCategory:NE,setLevelForCategory:CE,getEnableCallStackForCategory:AE,setEnableCallStackForCategory:RE,init:md})});var bd=D((hR,yd)=>{var dd=we()("log4js:logger"),FE=Zs(),ct=Ht(),$E=Qo(),vi=ka(),hd=Kt(),PE=/at (?:(.+)\\s+\\()?(?:(.+?):(\\d+)(?::(\\d+))?|([^)]+))\\)?/;function kE(e,t=4){try{let r=e.stack.split(`\n`).slice(t),n=PE.exec(r[0]);if(n&&n.length===6)return{functionName:n[1],fileName:n[2],lineNumber:parseInt(n[3],10),columnNumber:parseInt(n[4],10),callStack:r.join(`\n`)};console.error("log4js.logger - defaultParseCallStack error")}catch(r){console.error("log4js.logger - defaultParseCallStack error",r)}return null}var Mn=class{constructor(t){if(!t)throw new Error("No category provided.");this.category=t,this.context={},this.parseCallStack=kE,dd(`Logger created (${this.category}, ${this.level})`)}get level(){return ct.getLevel(vi.getLevelForCategory(this.category),ct.OFF)}set level(t){vi.setLevelForCategory(this.category,ct.getLevel(t,this.level))}get useCallStack(){return vi.getEnableCallStackForCategory(this.category)}set useCallStack(t){vi.setEnableCallStackForCategory(this.category,t===!0)}log(t,...r){let n=ct.getLevel(t);n?this.isLevelEnabled(n)&&this._log(n,r):hd.validIdentifier(t)&&r.length>0?(this.log(ct.WARN,"log4js:logger.log: valid log-level not found as first parameter given:",t),this.log(ct.INFO,`[${t}]`,...r)):this.log(ct.INFO,t,...r)}isLevelEnabled(t){return this.level.isLessThanOrEqualTo(t)}_log(t,r){dd(`sending log data (${t}) to appenders`);let n=new FE(this.category,t,r,this.context,this.useCallStack&&this.parseCallStack(new Error));$E.send(n)}addContext(t,r){this.context[t]=r}removeContext(t){delete this.context[t]}clearContext(){this.context={}}setParseCallStackFunction(t){this.parseCallStack=t}};function gd(e){let t=ct.getLevel(e),n=t.toString().toLowerCase().replace(/_([a-z])/g,i=>i[1].toUpperCase()),o=n[0].toUpperCase()+n.slice(1);Mn.prototype[`is${o}Enabled`]=function(){return this.isLevelEnabled(t)},Mn.prototype[n]=function(...i){this.log(t,...i)}}ct.levels.forEach(gd);hd.addListener(()=>{ct.levels.forEach(gd)});yd.exports=Mn});var xd=D((gR,wd)=>{var Dr=Ht(),ME=\':remote-addr - - ":method :url HTTP/:http-version" :status :content-length ":referrer" ":user-agent"\';function qE(e){return e.originalUrl||e.url}function jE(e,t,r){let n=i=>{let s=i.concat();for(let a=0;an.source?n.source:n);t=new RegExp(r.join("|"))}return t}function BE(e,t,r){let n=t;if(r){let o=r.find(i=>{let s=!1;return i.from&&i.to?s=e>=i.from&&e<=i.to:s=i.codes.indexOf(e)!==-1,s});o&&(n=Dr.getLevel(o.level,n))}return n}wd.exports=function(t,r){typeof r=="string"||typeof r=="function"?r={format:r}:r=r||{};let n=t,o=Dr.getLevel(r.level,Dr.INFO),i=r.format||ME;return(s,a,u)=>{if(s._logging!==void 0)return u();if(typeof r.nolog!="function"){let m=LE(r.nolog);if(m&&m.test(s.originalUrl))return u()}if(n.isLevelEnabled(o)||r.level==="auto"){let m=new Date,{writeHead:l}=a;s._logging=!0,a.writeHead=(g,w)=>{a.writeHead=l,a.writeHead(g,w),a.__statusCode=g,a.__headers=w||{}};let d=!1,f=()=>{if(d)return;if(d=!0,typeof r.nolog=="function"&&r.nolog(s,a)===!0){s._logging=!1;return}a.responseTime=new Date-m,a.statusCode&&r.level==="auto"&&(o=Dr.INFO,a.statusCode>=300&&(o=Dr.WARN),a.statusCode>=400&&(o=Dr.ERROR)),o=BE(a.statusCode,o,r.statusRules);let g=jE(s,a,r.tokens||[]);if(r.context&&n.addContext("res",a),typeof i=="function"){let w=i(s,a,x=>vd(x,g));w&&n.log(o,w)}else n.log(o,vd(i,g));r.context&&n.removeContext("res")};a.on("end",f),a.on("finish",f),a.on("error",f),a.on("close",f)}return u()}}});var Dd=D((yR,Od)=>{var Ed=we()("log4js:recording"),wi=[];function UE(){return function(e){Ed(`received logEvent, number of events now ${wi.length+1}`),Ed("log event was ",e),wi.push(e)}}function Id(){return wi.slice()}function Sd(){wi.length=0}Od.exports={configure:UE,replay:Id,playback:Id,reset:Sd,erase:Sd}});var Fd=D((bR,Rd)=>{var Ft=we()("log4js:main"),zE=require("fs"),WE=bl()({proto:!0}),KE=Kt(),GE=Ys(),HE=Ht(),_d=Fa(),Td=ka(),JE=bd(),VE=Qo(),YE=xd(),ZE=Dd(),qn=!1;function QE(e){if(!qn)return;Ft("Received log event ",e),Td.appendersForCategory(e.categoryName).forEach(r=>{r(e)})}function XE(e){Ft(`Loading configuration from ${e}`);try{return JSON.parse(zE.readFileSync(e,"utf8"))}catch(t){throw new Error(`Problem reading config from file "${e}". Error was ${t.message}`,t)}}function Nd(e){qn&&Cd();let t=e;return typeof t=="string"&&(t=XE(e)),Ft(`Configuration is ${t}`),KE.configure(WE(t)),VE.onMessage(QE),qn=!0,Ad}function eI(){return ZE}function Cd(e){Ft("Shutdown called. Disabling all log writing."),qn=!1;let t=Array.from(_d.values());_d.init(),Td.init();let r=t.reduceRight((s,a)=>a.shutdown?s+1:s,0);if(r===0)return Ft("No appenders with shutdown functions found."),e!==void 0&&e();let n=0,o;Ft(`Found ${r} appenders with shutdown functions.`);function i(s){o=o||s,n+=1,Ft(`Appender shutdowns complete: ${n} / ${r}`),n>=r&&(Ft("All shutdown functions completed."),e&&e(o))}return t.filter(s=>s.shutdown).forEach(s=>s.shutdown(i)),null}function tI(e){return qn||Nd(process.env.LOG4JS_CONFIG||{appenders:{out:{type:"stdout"}},categories:{default:{appenders:["out"],level:"OFF"}}}),new JE(e||"default")}var Ad={getLogger:tI,configure:Nd,shutdown:Cd,connectLogger:YE,levels:HE,addLayout:GE.addLayout,recording:eI};Rd.exports=Ad});var lt=D(Ei=>{"use strict";Ei.getBooleanOption=(e,t)=>{let r=!1;if(t in e&&typeof(r=e[t])!="boolean")throw new TypeError(`Expected the "${t}" option to be a boolean`);return r};Ei.cppdb=Symbol();Ei.inspect=Symbol.for("nodejs.util.inspect.custom")});var ja=D((ER,kd)=>{"use strict";var qa={value:"SqliteError",writable:!0,enumerable:!1,configurable:!0};function er(e,t){if(new.target!==er)return new er(e,t);if(typeof t!="string")throw new TypeError("Expected second argument to be a string");Error.call(this,e),qa.value=""+e,Object.defineProperty(this,"message",qa),Error.captureStackTrace(this,er),this.code=t}Object.setPrototypeOf(er,Error);Object.setPrototypeOf(er.prototype,Error.prototype);Object.defineProperty(er.prototype,"name",qa);kd.exports=er});var qd=D((IR,Md)=>{var Ii=require("path").sep||"/";Md.exports=nI;function nI(e){if(typeof e!="string"||e.length<=7||e.substring(0,7)!="file://")throw new TypeError("must pass in a file:// URI to convert to a file path");var t=decodeURI(e.substring(7)),r=t.indexOf("/"),n=t.substring(0,r),o=t.substring(r+1);return n=="localhost"&&(n=""),n&&(n=Ii+Ii+n),o=o.replace(/^(.+)\\|/,"$1:"),Ii=="\\\\"&&(o=o.replace(/\\//g,"\\\\")),/^.+\\:/.test(o)||(o=Ii+o),n+o}});var Ud=D((_r,Bd)=>{var La=require("fs"),Oi=require("path"),oI=qd(),Si=Oi.join,iI=Oi.dirname,jd=La.accessSync&&function(e){try{La.accessSync(e)}catch{return!1}return!0}||La.existsSync||Oi.existsSync,Ld={arrow:process.env.NODE_BINDINGS_ARROW||" \\u2192 ",compiled:process.env.NODE_BINDINGS_COMPILED_DIR||"compiled",platform:process.platform,arch:process.arch,nodePreGyp:"node-v"+process.versions.modules+"-"+process.platform+"-"+process.arch,version:process.versions.node,bindings:"bindings.node",try:[["module_root","build","bindings"],["module_root","build","Debug","bindings"],["module_root","build","Release","bindings"],["module_root","out","Debug","bindings"],["module_root","Debug","bindings"],["module_root","out","Release","bindings"],["module_root","Release","bindings"],["module_root","build","default","bindings"],["module_root","compiled","version","platform","arch","bindings"],["module_root","addon-build","release","install-root","bindings"],["module_root","addon-build","debug","install-root","bindings"],["module_root","addon-build","default","install-root","bindings"],["module_root","lib","binding","nodePreGyp","bindings"]]};function sI(e){typeof e=="string"?e={bindings:e}:e||(e={}),Object.keys(Ld).map(function(u){u in e||(e[u]=Ld[u])}),e.module_root||(e.module_root=_r.getRoot(_r.getFileName())),Oi.extname(e.bindings)!=".node"&&(e.bindings+=".node");for(var t=typeof __webpack_require__=="function"?__non_webpack_require__:require,r=[],n=0,o=e.try.length,i,s,a;n{"use strict";var{cppdb:Xe}=lt();$t.prepare=function(t){return this[Xe].prepare(t,this,!1)};$t.exec=function(t){return this[Xe].exec(t),this};$t.close=function(){return this[Xe].close(),this};$t.loadExtension=function(...t){return this[Xe].loadExtension(...t),this};$t.defaultSafeIntegers=function(...t){return this[Xe].defaultSafeIntegers(...t),this};$t.unsafeMode=function(...t){return this[Xe].unsafeMode(...t),this};$t.getters={name:{get:function(){return this[Xe].name},enumerable:!0},open:{get:function(){return this[Xe].open},enumerable:!0},inTransaction:{get:function(){return this[Xe].inTransaction},enumerable:!0},readonly:{get:function(){return this[Xe].readonly},enumerable:!0},memory:{get:function(){return this[Xe].memory},enumerable:!0}}});var Gd=D((OR,Kd)=>{"use strict";var{cppdb:aI}=lt(),Wd=new WeakMap;Kd.exports=function(t){if(typeof t!="function")throw new TypeError("Expected first argument to be a function");let r=this[aI],n=uI(r,this),{apply:o}=Function.prototype,i={default:{value:Di(o,t,r,n.default)},deferred:{value:Di(o,t,r,n.deferred)},immediate:{value:Di(o,t,r,n.immediate)},exclusive:{value:Di(o,t,r,n.exclusive)},database:{value:this,enumerable:!0}};return Object.defineProperties(i.default.value,i),Object.defineProperties(i.deferred.value,i),Object.defineProperties(i.immediate.value,i),Object.defineProperties(i.exclusive.value,i),i.default.value};var uI=(e,t)=>{let r=Wd.get(e);if(!r){let n={commit:e.prepare("COMMIT",t,!1),rollback:e.prepare("ROLLBACK",t,!1),savepoint:e.prepare("SAVEPOINT ` _bs3. `",t,!1),release:e.prepare("RELEASE ` _bs3. `",t,!1),rollbackTo:e.prepare("ROLLBACK TO ` _bs3. `",t,!1)};Wd.set(e,r={default:Object.assign({begin:e.prepare("BEGIN",t,!1)},n),deferred:Object.assign({begin:e.prepare("BEGIN DEFERRED",t,!1)},n),immediate:Object.assign({begin:e.prepare("BEGIN IMMEDIATE",t,!1)},n),exclusive:Object.assign({begin:e.prepare("BEGIN EXCLUSIVE",t,!1)},n)})}return r},Di=(e,t,r,{begin:n,commit:o,rollback:i,savepoint:s,release:a,rollbackTo:u})=>function(){let l,d,f;r.inTransaction?(l=s,d=a,f=u):(l=n,d=o,f=i),l.run();try{let g=e.call(t,this,arguments);return d.run(),g}catch(g){throw r.inTransaction&&(f.run(),f!==i&&d.run()),g}}});var Jd=D((DR,Hd)=>{"use strict";var{getBooleanOption:cI,cppdb:lI}=lt();Hd.exports=function(t,r){if(r==null&&(r={}),typeof t!="string")throw new TypeError("Expected first argument to be a string");if(typeof r!="object")throw new TypeError("Expected second argument to be an options object");let n=cI(r,"simple"),o=this[lI].prepare(`PRAGMA ${t}`,this,!0);return n?o.pluck().get():o.all()}});var Zd=D((_R,Yd)=>{"use strict";var fI=require("fs"),pI=require("path"),{promisify:mI}=require("util"),{cppdb:dI}=lt(),Vd=mI(fI.access);Yd.exports=async function(t,r){if(r==null&&(r={}),typeof t!="string")throw new TypeError("Expected first argument to be a string");if(typeof r!="object")throw new TypeError("Expected second argument to be an options object");t=t.trim();let n="attached"in r?r.attached:"main",o="progress"in r?r.progress:null;if(!t)throw new TypeError("Backup filename cannot be an empty string");if(t===":memory:")throw new TypeError(\'Invalid backup filename ":memory:"\');if(typeof n!="string")throw new TypeError(\'Expected the "attached" option to be a string\');if(!n)throw new TypeError(\'The "attached" option cannot be an empty string\');if(o!=null&&typeof o!="function")throw new TypeError(\'Expected the "progress" option to be a function\');await Vd(pI.dirname(t)).catch(()=>{throw new TypeError("Cannot save backup because the directory does not exist")});let i=await Vd(t).then(()=>!1,()=>!0);return hI(this[dI].backup(this,n,t,i),o||null)};var hI=(e,t)=>{let r=0,n=!0;return new Promise((o,i)=>{setImmediate(function s(){try{let a=e.transfer(r);if(!a.remainingPages){e.close(),o(a);return}if(n&&(n=!1,r=100),t){let u=t(a);if(u!==void 0)if(typeof u=="number"&&u===u)r=Math.max(0,Math.min(2147483647,Math.round(u)));else throw new TypeError("Expected progress callback to return a number or undefined")}setImmediate(s)}catch(a){e.close(),i(a)}})})}});var Xd=D((TR,Qd)=>{"use strict";var{cppdb:gI}=lt();Qd.exports=function(t){if(t==null&&(t={}),typeof t!="object")throw new TypeError("Expected first argument to be an options object");let r="attached"in t?t.attached:"main";if(typeof r!="string")throw new TypeError(\'Expected the "attached" option to be a string\');if(!r)throw new TypeError(\'The "attached" option cannot be an empty string\');return this[gI].serialize(r)}});var th=D((NR,eh)=>{"use strict";var{getBooleanOption:_i,cppdb:yI}=lt();eh.exports=function(t,r,n){if(r==null&&(r={}),typeof r=="function"&&(n=r,r={}),typeof t!="string")throw new TypeError("Expected first argument to be a string");if(typeof n!="function")throw new TypeError("Expected last argument to be a function");if(typeof r!="object")throw new TypeError("Expected second argument to be an options object");if(!t)throw new TypeError("User-defined function name cannot be an empty string");let o="safeIntegers"in r?+_i(r,"safeIntegers"):2,i=_i(r,"deterministic"),s=_i(r,"directOnly"),a=_i(r,"varargs"),u=-1;if(!a){if(u=n.length,!Number.isInteger(u)||u<0)throw new TypeError("Expected function.length to be a positive integer");if(u>100)throw new RangeError("User-defined functions cannot have more than 100 arguments")}return this[yI].function(n,t,u,o,i,s),this}});var oh=D((CR,nh)=>{"use strict";var{getBooleanOption:Ti,cppdb:bI}=lt();nh.exports=function(t,r){if(typeof t!="string")throw new TypeError("Expected first argument to be a string");if(typeof r!="object"||r===null)throw new TypeError("Expected second argument to be an options object");if(!t)throw new TypeError("User-defined function name cannot be an empty string");let n="start"in r?r.start:null,o=Ba(r,"step",!0),i=Ba(r,"inverse",!1),s=Ba(r,"result",!1),a="safeIntegers"in r?+Ti(r,"safeIntegers"):2,u=Ti(r,"deterministic"),m=Ti(r,"directOnly"),l=Ti(r,"varargs"),d=-1;if(!l&&(d=Math.max(rh(o),i?rh(i):0),d>0&&(d-=1),d>100))throw new RangeError("User-defined functions cannot have more than 100 arguments");return this[bI].aggregate(n,o,i,s,t,d,a,u,m),this};var Ba=(e,t,r)=>{let n=t in e?e[t]:null;if(typeof n=="function")return n;if(n!=null)throw new TypeError(`Expected the "${t}" option to be a function`);if(r)throw new TypeError(`Missing required option "${t}"`);return null},rh=({length:e})=>{if(Number.isInteger(e)&&e>=0)return e;throw new TypeError("Expected function.length to be a positive integer")}});var uh=D((AR,ah)=>{"use strict";var{cppdb:vI}=lt();ah.exports=function(t,r){if(typeof t!="string")throw new TypeError("Expected first argument to be a string");if(!t)throw new TypeError("Virtual table module name cannot be an empty string");let n=!1;if(typeof r=="object"&&r!==null)n=!0,r=_I(sh(r,"used",t));else{if(typeof r!="function")throw new TypeError("Expected second argument to be a function or a table definition object");r=wI(r)}return this[vI].table(r,t,n),this};function wI(e){return function(r,n,o,...i){let s={module:r,database:n,table:o},a=OI.call(e,s,i);if(typeof a!="object"||a===null)throw new TypeError(`Virtual table module "${r}" did not return a table definition object`);return sh(a,"returned",r)}}function sh(e,t,r){if(!jn.call(e,"rows"))throw new TypeError(`Virtual table module "${r}" ${t} a table definition without a "rows" property`);if(!jn.call(e,"columns"))throw new TypeError(`Virtual table module "${r}" ${t} a table definition without a "columns" property`);let n=e.rows;if(typeof n!="function"||Object.getPrototypeOf(n)!==DI)throw new TypeError(`Virtual table module "${r}" ${t} a table definition with an invalid "rows" property (should be a generator function)`);let o=e.columns;if(!Array.isArray(o)||!(o=[...o]).every(m=>typeof m=="string"))throw new TypeError(`Virtual table module "${r}" ${t} a table definition with an invalid "columns" property (should be an array of strings)`);if(o.length!==new Set(o).size)throw new TypeError(`Virtual table module "${r}" ${t} a table definition with duplicate column names`);if(!o.length)throw new RangeError(`Virtual table module "${r}" ${t} a table definition with zero columns`);let i;if(jn.call(e,"parameters")){if(i=e.parameters,!Array.isArray(i)||!(i=[...i]).every(m=>typeof m=="string"))throw new TypeError(`Virtual table module "${r}" ${t} a table definition with an invalid "parameters" property (should be an array of strings)`)}else i=SI(n);if(i.length!==new Set(i).size)throw new TypeError(`Virtual table module "${r}" ${t} a table definition with duplicate parameter names`);if(i.length>32)throw new RangeError(`Virtual table module "${r}" ${t} a table definition with more than the maximum number of 32 parameters`);for(let m of i)if(o.includes(m))throw new TypeError(`Virtual table module "${r}" ${t} a table definition with column "${m}" which was ambiguously defined as both a column and parameter`);let s=2;if(jn.call(e,"safeIntegers")){let m=e.safeIntegers;if(typeof m!="boolean")throw new TypeError(`Virtual table module "${r}" ${t} a table definition with an invalid "safeIntegers" property (should be a boolean)`);s=+m}let a=!1;if(jn.call(e,"directOnly")&&(a=e.directOnly,typeof a!="boolean"))throw new TypeError(`Virtual table module "${r}" ${t} a table definition with an invalid "directOnly" property (should be a boolean)`);return[`CREATE TABLE x(${[...i.map(ih).map(m=>`${m} HIDDEN`),...o.map(ih)].join(", ")});`,xI(n,new Map(o.map((m,l)=>[m,i.length+l])),r),i,s,a]}function xI(e,t,r){return function*(...o){let i=o.map(s=>Buffer.isBuffer(s)?Buffer.from(s):s);for(let s=0;s`"${e.replace(/"/g,\'""\')}"`,_I=e=>()=>e});var lh=D((RR,ch)=>{"use strict";var TI=function(){};ch.exports=function(t,r){return Object.assign(new TI,this)}});var dh=D((FR,mh)=>{"use strict";var NI=require("fs"),fh=require("path"),Ln=lt(),CI=ja(),ph;function Oe(e,t){if(new.target==null)return new Oe(e,t);let r;if(Buffer.isBuffer(e)&&(r=e,e=":memory:"),e==null&&(e=""),t==null&&(t={}),typeof e!="string")throw new TypeError("Expected first argument to be a string");if(typeof t!="object")throw new TypeError("Expected second argument to be an options object");if("readOnly"in t)throw new TypeError(\'Misspelled option "readOnly" should be "readonly"\');if("memory"in t)throw new TypeError(\'Option "memory" was removed in v7.0.0 (use ":memory:" filename instead)\');let n=e.trim(),o=n===""||n===":memory:",i=Ln.getBooleanOption(t,"readonly"),s=Ln.getBooleanOption(t,"fileMustExist"),a=Ln.getBooleanOption(t,"uriPath"),u="timeout"in t?t.timeout:5e3,m="verbose"in t?t.verbose:null,l="nativeBinding"in t?t.nativeBinding:null;if(i&&o&&!r)throw new TypeError("In-memory/temporary databases cannot be readonly");if(!Number.isInteger(u)||u<0)throw new TypeError(\'Expected the "timeout" option to be a positive integer\');if(u>2147483647)throw new RangeError(\'Option "timeout" cannot be greater than 2147483647\');if(m!=null&&typeof m!="function")throw new TypeError(\'Expected the "verbose" option to be a function\');if(l!=null&&typeof l!="string")throw new TypeError(\'Expected the "nativeBinding" option to be a string\');let d;if(l==null?d=ph||(ph=Ud()("better_sqlite3.node")):d=require(fh.resolve(l).replace(/(\\.node)?$/,".node")),d.isInitialized||(d.setErrorConstructor(CI),d.isInitialized=!0),!o&&!a&&!NI.existsSync(fh.dirname(n)))throw new TypeError("Cannot open database because the directory does not exist");Object.defineProperties(this,{[Ln.cppdb]:{value:new d.Database(n,e,o,i,s,a,u,m||null,r||null)},...tr.getters})}var tr=zd();Oe.prototype.prepare=tr.prepare;Oe.prototype.transaction=Gd();Oe.prototype.pragma=Jd();Oe.prototype.backup=Zd();Oe.prototype.serialize=Xd();Oe.prototype.function=th();Oe.prototype.aggregate=oh();Oe.prototype.table=uh();Oe.prototype.loadExtension=tr.loadExtension;Oe.prototype.exec=tr.exec;Oe.prototype.close=tr.close;Oe.prototype.defaultSafeIntegers=tr.defaultSafeIntegers;Oe.prototype.unsafeMode=tr.unsafeMode;Oe.prototype[Ln.inspect]=lh();mh.exports=Oe});var hh=D(($R,Ua)=>{"use strict";Ua.exports=dh();Ua.exports.SqliteError=ja()});var wh=D(Ni=>{"use strict";Object.defineProperty(Ni,"__esModule",{value:!0});function vh(e,t){if(t)return e;throw new Error("Unhandled discriminated union member: "+JSON.stringify(e))}Ni.assertNever=vh;Ni.default=vh});var Zi=class extends Error{},te=e=>{throw new Zi(e)},Qi=class extends Error{},Q=e=>{throw new Qi(e)};var xt=(e,t)=>le(e)===t,le=e=>{let t=typeof e;return t==="object"?e===null?"null":"object":t==="function"?"object":t},Xi={bigint:"a bigint",boolean:"boolean",null:"null",number:"a number",object:"an object",string:"a string",symbol:"a symbol",undefined:"undefined"};var Me=(e,t)=>e in t,wu=e=>Object.entries(e),re=e=>Object.keys(e),Pt=e=>{let t=[];for(;e!==Object.prototype&&e!==null&&e!==void 0;){for(let r of Object.getOwnPropertyNames(e))t.includes(r)||t.push(r);for(let r of Object.getOwnPropertySymbols(e))t.includes(r)||t.push(r);e=Object.getPrototypeOf(e)}return t},ir=(e,t)=>{let r=e?.[t];return r!=null};var xu=e=>Object.keys(e).length,Pr=e=>xt(e,"object")?Object.keys(e).length!==0:!1,tS=Symbol("id");var et=e=>Array.isArray(e)?e:[e];var ge=class extends Array{static fromString(t,r="/"){return t===r?new ge:new ge(...t.split(r))}toString(t="/"){return this.length?this.join(t):t}},Eu=(e,t)=>{let r=e;for(let n of t){if(typeof r!="object"||r===null)return;r=r[n]}return r};var es=/^(?!^-0$)-?(?:0|[1-9]\\d*)(?:\\.\\d*[1-9])?$/,ny=e=>es.test(e),oy=/^-?\\d*\\.?\\d*$/,iy=e=>e.length!==0&&oy.test(e),eo=/^(?:0|(?:-?[1-9]\\d*))$/,kr=e=>eo.test(e),Mr=/^(?:0|(?:[1-9]\\d*))$/,Iu=/^-?\\d+$/,sy=e=>Iu.test(e),Su={number:"a number",bigint:"a bigint",integer:"an integer"},Ou=(e,t)=>`\'${e}\' was parsed as ${Su[t]} but could not be narrowed to a literal value. Avoid unnecessary leading or trailing zeros and other abnormal notation`,ay=(e,t)=>t==="number"?ny(e):kr(e),uy=(e,t)=>t==="number"?Number(e):Number.parseInt(e),cy=(e,t)=>t==="number"?iy(e):sy(e),qr=(e,t)=>Du(e,"number",t),to=(e,t)=>Du(e,"integer",t),Du=(e,t,r)=>{let n=uy(e,t);if(!Number.isNaN(n)){if(ay(e,t))return n;if(cy(e,t))return Q(Ou(e,t))}return r?Q(r===!0?`Failed to parse ${Su[t]} from \'${e}\'`:r):void 0},ts=e=>{if(e[e.length-1]!=="n")return;let t=e.slice(0,-1),r;try{r=BigInt(t)}catch{return}if(eo.test(t))return r;if(Iu.test(t))return Q(Ou(e,"bigint"))};var oe=(e,t)=>{switch(le(e)){case"object":return JSON.stringify(rs(e,ro,[]),null,t);case"symbol":return ro.onSymbol(e);default:return ns(e)}},ro={onCycle:()=>"(cycle)",onSymbol:e=>`(symbol${e.description&&` ${e.description}`})`,onFunction:e=>`(function${e.name&&` ${e.name}`})`},rs=(e,t,r)=>{switch(le(e)){case"object":if(typeof e=="function")return ro.onFunction(e);if(r.includes(e))return"(cycle)";let n=[...r,e];if(Array.isArray(e))return e.map(i=>rs(i,t,n));let o={};for(let i in e)o[i]=rs(e[i],t,n);return o;case"symbol":return ro.onSymbol(e);case"bigint":return`${e}n`;case"undefined":return"undefined";default:return e}},ns=e=>typeof e=="string"?`\'${e}\'`:typeof e=="bigint"?`${e}n`:`${e}`;function ly(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function fy(e,t){return t.get?t.get.call(e):t.value}function py(e,t,r){if(t.set)t.set.call(e,r);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=r}}function Tu(e,t,r){if(!t.has(e))throw new TypeError("attempted to "+r+" private field on non-instance");return t.get(e)}function _u(e,t){var r=Tu(e,t,"get");return fy(e,r)}function my(e,t,r){ly(e,t),t.set(e,r)}function dy(e,t,r){var n=Tu(e,t,"set");return py(e,n,r),r}function no(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var qe=e=>(t,r,n)=>t===void 0?r===void 0?te(so):r:r===void 0?t:e(t,r,n),so="Unexpected operation two undefined operands",os={domain:({l:e,r:t})=>`${e.join(", ")} and ${t.join(", ")}`,range:({l:e,r:t})=>`${io(e)} and ${io(t)}`,class:({l:e,r:t})=>`classes ${typeof e=="string"?e:e.name} and ${typeof t=="string"?t:t.name}`,tupleLength:({l:e,r:t})=>`tuples of length ${e} and ${t}`,value:({l:e,r:t})=>`literal values ${oe(e)} and ${oe(t)}`,leftAssignability:({l:e,r:t})=>`literal value ${oe(e.value)} and ${oe(t)}`,rightAssignability:({l:e,r:t})=>`literal value ${oe(t.value)} and ${oe(e)}`,union:({l:e,r:t})=>`branches ${oe(e)} and branches ${oe(t)}`},io=e=>"limit"in e?`the range of exactly ${e.limit}`:e.min?e.max?`the range bounded by ${e.min.comparator}${e.min.limit} and ${e.max.comparator}${e.max.limit}`:`${e.min.comparator}${e.min.limit}`:e.max?`${e.max.comparator}${e.max.limit}`:"the unbounded range",oo=new WeakMap,Et=class{get disjoints(){return _u(this,oo)}addDisjoint(t,r,n){return _u(this,oo)[`${this.path}`]={kind:t,l:r,r:n},ao}constructor(t,r){no(this,"type",void 0),no(this,"lastOperator",void 0),no(this,"path",void 0),no(this,"domain",void 0),my(this,oo,{writable:!0,value:void 0}),this.type=t,this.lastOperator=r,this.path=new ge,dy(this,oo,{})}},ao=Symbol("empty"),Nu=()=>ao,Ye=e=>e===ao,Cu=Symbol("equal"),ye=()=>Cu,je=e=>e===Cu,sr=(e,t)=>(r,n,o)=>{let i={},s=re({...r,...n}),a=!0,u=!0;for(let m of s){let l=typeof e=="function"?e(m,r[m],n[m],o):e[m](r[m],n[m],o);if(je(l))r[m]!==void 0&&(i[m]=r[m]);else if(Ye(l))if(t.onEmpty==="omit")a=!1,u=!1;else return ao;else l!==void 0&&(i[m]=l),a&&(a=l===r[m]),u&&(u=l===n[m])}return a?u?ye():r:u?n:i};var Au=e=>{let t=re(e);if(t.length===1){let n=t[0];return`${n==="/"?"":`At ${n}: `}Intersection of ${os[e[n].kind](e[n])} results in an unsatisfiable type`}let r=`\n "Intersection results in unsatisfiable types at the following paths:\n`;for(let n in e)r+=` ${n}: ${os[e[n].kind](e[n])}\n`;return r},uo=(e,t,r)=>`${e.length?`At ${e}: `:""}${t} ${r?`${r} `:""}results in an unsatisfiable type`;var jr={Array,Date,Error,Function,Map,RegExp,Set,Object,String,Number,Boolean,WeakMap,WeakSet,Promise},ar=(e,t)=>{if(le(e)!=="object")return;let r=t??jr,n=Object.getPrototypeOf(e);for(;n?.constructor&&(!r[n.constructor.name]||!(e instanceof r[n.constructor.name]));)n=Object.getPrototypeOf(n);return n?.constructor?.name};var It=e=>Array.isArray(e),is={Object:"an object",Array:"an array",Function:"a function",Date:"a Date",RegExp:"a RegExp",Error:"an Error",Map:"a Map",Set:"a Set",String:"a String object",Number:"a Number object",Boolean:"a Boolean object",Promise:"a Promise",WeakMap:"a WeakMap",WeakSet:"a WeakSet"},co=e=>{let t=Object(e).name;return t&&Me(t,jr)&&jr[t]===e?t:void 0};var Ru=qe((e,t,r)=>e===t?ye():e instanceof t?e:t instanceof e?t:r.addDisjoint("class",e,t)),Fu=(e,t)=>typeof e=="string"?ar(t.data)===e||!t.problems.add("class",e):t.data instanceof e||!t.problems.add("class",e);var lo=(e,t)=>{if(Array.isArray(e)){if(Array.isArray(t)){let r=hy(e,t);return r.length===e.length?r.length===t.length?ye():e:r.length===t.length?t:r}return e.includes(t)?e:[...e,t]}return Array.isArray(t)?t.includes(e)?t:[...t,e]:e===t?ye():[e,t]},hy=(e,t)=>{let r=[...e];for(let n of t)e.includes(n)||r.push(n);return r};var $u=qe((e,t)=>e===t?ye():Math.abs(e*t/gy(e,t))),gy=(e,t)=>{let r,n=e,o=t;for(;o!==0;)r=o,o=n%o,n=r;return n},Pu=(e,t)=>t.data%e===0||!t.problems.add("divisor",e);var Lr=e=>e[0]==="?",fo=e=>e[0]==="!",rt={index:"[index]"},St=e=>Lr(e)||fo(e)?e[1]:e,yy=e=>{if(typeof e.length=="object"&&fo(e.length)&&typeof e.length[1]!="string"&&mo(e.length[1],"number"))return e.length[1].number.value},ku=qe((e,t,r)=>{let n=by(e,t,r);if(typeof n=="symbol")return n;let o=yy(n);if(o===void 0||!(rt.index in n))return n;let{[rt.index]:i,...s}=n,a=St(i);for(let u=0;u{if(t===void 0)return r===void 0?ye():r;if(r===void 0)return t;n.path.push(e);let o=po(St(t),St(r),n);n.path.pop();let i=Lr(t)&&Lr(r);return Ye(o)&&i?{}:o},{onEmpty:"bubble"}),Mu=(e,t,r)=>{let n=r.type.config?.keys??r.type.scope.config.keys;return n==="loose"?vy(e,t,r):wy(n,e,t,r)},vy=(e,t,r)=>{for(let n in t){let o=t[n];r.path.push(n),n===rt.index?e.push(["indexProp",tt(St(o),r)]):Lr(o)?e.push(["optionalProp",[n,tt(o[1],r)]]):fo(o)?e.push(["prerequisiteProp",[n,tt(o[1],r)]]):e.push(["requiredProp",[n,tt(o,r)]]),r.path.pop()}},wy=(e,t,r,n)=>{let o={required:{},optional:{}};for(let i in r){let s=r[i];n.path.push(i),i===rt.index?o.index=tt(St(s),n):Lr(s)?o.optional[i]=tt(s[1],n):fo(s)?t.push(["prerequisiteProp",[i,tt(s[1],n)]]):o.required[i]=tt(s,n),n.path.pop()}t.push([`${e}Props`,o])};function xy(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var ss=e=>typeof e=="string"||Array.isArray(e)?e.length:typeof e=="number"?e:0,Ey=e=>typeof e=="string"?"characters":Array.isArray(e)?"items long":"",ho=class{toString(){return oe(this.value)}get domain(){return le(this.value)}get size(){return ss(this.value)}get units(){return Ey(this.value)}get className(){return Object(this.value).constructor.name}constructor(t){xy(this,"value",void 0),this.value=t}};var go={">":!0,">=":!0},as={"<":!0,"<=":!0},Br=e=>"comparator"in e,ju=qe((e,t,r)=>{if(Br(e))return Br(t)?e.limit===t.limit?ye():r.addDisjoint("range",e,t):qu(t,e.limit)?e:r.addDisjoint("range",e,t);if(Br(t))return qu(e,t.limit)?t:r.addDisjoint("range",e,t);let n=ur("min",e.min,t.min),o=ur("max",e.max,t.max);return n==="l"?o==="r"?ur("min",e.min,t.max)==="l"?r.addDisjoint("range",e,t):{min:e.min,max:t.max}:e:n==="r"?o==="l"?ur("max",e.max,t.min)==="l"?r.addDisjoint("range",e,t):{min:t.min,max:e.max}:t:o==="l"?e:o==="r"?t:ye()}),qu=(e,t)=>Br(e)?t===e.limit:Iy(e.min,t)&&Sy(e.max,t),Iy=(e,t)=>!e||t>e.limit||t===e.limit&&!Ur(e.comparator),Sy=(e,t)=>!e||t{let n=r.lastDomain==="string"?"characters":r.lastDomain==="object"?"items long":void 0;if(Br(t))return e.push(["bound",n?{...t,units:n}:t]);t.min&&e.push(["bound",n?{...t.min,units:n}:t.min]),t.max&&e.push(["bound",n?{...t.max,units:n}:t.max])},Bu=(e,t)=>Oy[e.comparator](ss(t.data),e.limit)||!t.problems.add("bound",e),Oy={"<":(e,t)=>e":(e,t)=>e>t,"<=":(e,t)=>e<=t,">=":(e,t)=>e>=t,"==":(e,t)=>e===t},ur=(e,t,r)=>t?r?t.limit===r.limit?Ur(t.comparator)?Ur(r.comparator)?"=":"l":Ur(r.comparator)?"r":"=":e==="min"?t.limit>r.limit?"l":"r":t.limite.length===1;var us={},cs=e=>(us[e]||(us[e]=new RegExp(e)),us[e]),Uu=(e,t)=>cs(e).test(t.data)||!t.problems.add("regex",`/${e}/`),zu=qe(lo);var Ku=(e,t,r)=>"value"in e?"value"in t?e.value===t.value?ye():r.addDisjoint("value",e.value,t.value):Wu(e.value,t,r)?e:r.addDisjoint("leftAssignability",e,t):"value"in t?Wu(t.value,e,r)?t:r.addDisjoint("rightAssignability",e,t):_y(e,t,r),Dy=qe(lo),_y=sr({divisor:$u,regex:zu,props:ku,class:Ru,range:ju,narrow:Dy},{onEmpty:"bubble"}),ls=(e,t)=>{let r=[],n;for(n in e)Ty[n](r,e[n],t);return r.sort((o,i)=>zr[o[0]]-zr[i[0]])},Ty={regex:(e,t)=>{for(let r of et(t))e.push(["regex",r])},divisor:(e,t)=>{e.push(["divisor",t])},range:Lu,class:(e,t)=>{e.push(["class",t])},props:Mu,narrow:(e,t)=>{for(let r of et(t))e.push(["narrow",r])},value:(e,t)=>{e.push(["value",t])}},zr={config:-1,domain:0,value:0,domains:0,branches:0,switch:0,alias:0,class:0,regex:1,divisor:1,bound:1,prerequisiteProp:2,distilledProps:3,strictProps:3,requiredProp:3,optionalProp:3,indexProp:3,narrow:4,morph:5},Wu=(e,t,r)=>!r.type.scope.type(["node",{[r.domain]:t}])(e).problems;var fs=e=>e?.lBranches!==void 0,Hu=(e,t,r)=>{let n={lBranches:e,rBranches:t,lExtendsR:[],rExtendsL:[],equalities:[],distinctIntersections:[]},o=t.map(i=>({condition:i,distinct:[]}));return e.forEach((i,s)=>{let a=!1,u=o.map((m,l)=>{if(a||!m.distinct)return null;let d=m.condition,f=Kr(i,d,r);return Ye(f)?null:f===i?(n.lExtendsR.push(s),a=!0,null):f===d?(n.rExtendsL.push(l),m.distinct=null,null):je(f)?(n.equalities.push([s,l]),a=!0,m.distinct=null,null):xt(f,"object")?f:te(`Unexpected predicate intersection result of type \'${le(f)}\'`)});if(!a)for(let m=0;mi.distinct??[]),n},ps=e=>"rules"in e,Wr=(e,t)=>{if(ps(e)){let r=ls(e.rules,t);if(e.morph)if(typeof e.morph=="function")r.push(["morph",e.morph]);else for(let n of e.morph)r.push(["morph",n]);return r}return ls(e,t)},Gu=e=>e.rules??e,Kr=(e,t,r)=>{let n=Gu(e),o=Gu(t),i=Ku(n,o,r);return"morph"in e?"morph"in t?e.morph===t.morph?je(i)||Ye(i)?i:{rules:i,morph:e.morph}:r.lastOperator==="&"?Q(uo(r.path,"Intersection","of morphs")):{}:Ye(i)?i:{rules:je(i)?e.rules:i,morph:e.morph}:"morph"in t?Ye(i)?i:{rules:je(i)?t.rules:i,morph:t.morph}:i};var Ju=e=>`${e==="/"?"A":`At ${e}, a`} union including one or more morphs must be discriminatable`;var Yu=(e,t)=>{let r=Cy(e,t),n=e.map((o,i)=>i);return Zu(e,n,r,t)},Zu=(e,t,r,n)=>{if(t.length===1)return Wr(e[t[0]],n);let o=Ry(t,r);if(!o)return[["branches",t.map(s=>ds(e[s],n.type.scope)?Q(Ju(`${n.path}`)):Wr(e[s],n))]];let i={};for(let s in o.indexCases){let a=o.indexCases[s];i[s]=Zu(e,a,r,n),s!=="default"&&Gr(i[s],o.path,o,n)}return[["switch",{path:o.path,kind:o.kind,cases:i}]]},Gr=(e,t,r,n)=>{for(let o=0;ote(`Unexpectedly failed to discriminate ${e.kind} at path \'${e.path}\'`),Ny={domain:!0,class:!0,value:!0},Cy=(e,t)=>{let r={disjointsByPair:{},casesByDisjoint:{}};for(let n=0;n{let t=ge.fromString(e);return[t,t.pop()]},Ry=(e,t)=>{let r;for(let n=0;n{let N=e.indexOf(S);if(N!==-1)return delete d[N],!0});x.length!==0&&(l[w]=x,f++)}let g=re(d);if(g.length&&(l.default=g.map(w=>parseInt(w))),!r||f>r.score){let[w,x]=Ay(u);if(r={path:w,kind:x,indexCases:l,score:f},f===e.length)return r}}}}return r},Vu=(e,t)=>{switch(e){case"value":return Qu(t);case"domain":return t;case"class":return co(t);default:return}},Qu=e=>{let t=le(e);return t==="object"||t==="symbol"?void 0:ns(e)},Fy={value:e=>Qu(e)??"default",class:e=>ar(e)??"default",domain:le},Xu=(e,t)=>Fy[e](t),ds=(e,t)=>"morph"in e?!0:"props"in e?Object.values(e.props).some(r=>$y(St(r),t)):!1,$y=(e,t)=>typeof e=="string"?t.resolve(e).includesMorph:Object.values(t.resolveTypeNode(e)).some(r=>r===!0?!1:It(r)?r.some(n=>ds(n,t)):ds(r,t));var cr=e=>e===!0?{}:e,ec=(e,t,r)=>{if(e===!0&&t===!0)return ye();if(!It(e)&&!It(t)){let s=Kr(cr(e),cr(t),r);return s===e?e:s===t?t:s}let n=et(cr(e)),o=et(cr(t)),i=Hu(n,o,r);return i.equalities.length===n.length&&i.equalities.length===o.length?ye():i.lExtendsR.length+i.equalities.length===n.length?e:i.rExtendsL.length+i.equalities.length===o.length?t:i},tc=(e,t,r,n)=>{n.domain=e;let o=ec(t,r,n);if(!fs(o))return o;let i=[...o.distinctIntersections,...o.equalities.map(s=>o.lBranches[s[0]]),...o.lExtendsR.map(s=>o.lBranches[s]),...o.rExtendsL.map(s=>o.rBranches[s])];return i.length===0&&n.addDisjoint("union",o.lBranches,o.rBranches),i.length===1?i[0]:i},rc=(e,t,r,n)=>{let o=new Et(n,"|"),i=ec(t,r,o);if(!fs(i))return je(i)||i===t?r:i===r?t:e==="boolean"?!0:[cr(t),cr(r)];let s=[...i.lBranches.filter((a,u)=>!i.lExtendsR.includes(u)&&!i.equalities.some(m=>m[0]===u)),...i.rBranches.filter((a,u)=>!i.rExtendsL.includes(u)&&!i.equalities.some(m=>m[1]===u))];return s.length===1?s[0]:s},hs=(e,t)=>e===!0?[]:It(e)?Yu(e,t):Wr(e,t),nc=e=>typeof e=="object"&&"value"in e;var Hr=e=>"config"in e,po=(e,t,r)=>{r.domain=void 0;let n=r.type.scope.resolveTypeNode(e),o=r.type.scope.resolveTypeNode(t),i=Py(n,o,r);return typeof i=="object"&&!Pr(i)?Pr(r.disjoints)?Nu():r.addDisjoint("domain",re(n),re(o)):i===n?e:i===o?t:i},Py=sr((e,t,r,n)=>{if(t===void 0)return r===void 0?te(so):void 0;if(r!==void 0)return tc(e,t,r,n)},{onEmpty:"omit"}),Ot=(e,t,r)=>{let n=new Et(r,"&"),o=po(e,t,n);return Ye(o)?Q(Au(n.disjoints)):je(o)?e:o},yo=(e,t,r)=>{let n=r.scope.resolveTypeNode(e),o=r.scope.resolveTypeNode(t),i={},s=re({...n,...o});for(let a of s)i[a]=ir(n,a)?ir(o,a)?rc(a,n[a],o[a],r):n[a]:ir(o,a)?o[a]:te(so);return i},ky=e=>e[0]&&(e[0][0]==="value"||e[0][0]==="class"),gs=e=>{let t={type:e,path:new ge,lastDomain:"undefined"};return tt(e.node,t)},tt=(e,t)=>{if(typeof e=="string")return t.type.scope.resolve(e).flat;let r=Hr(e),n=My(r?e.node:e,t);return r?[["config",{config:wu(e.config),node:n}]]:n},My=(e,t)=>{let r=re(e);if(r.length===1){let o=r[0],i=e[o];if(i===!0)return o;t.lastDomain=o;let s=hs(i,t);return ky(s)?s:[["domain",o],...s]}let n={};for(let o of r)t.lastDomain=o,n[o]=hs(e[o],t);return[["domains",n]]},mo=(e,t)=>qy(e,t)&&nc(e[t]),qy=(e,t)=>{let r=re(e);return r.length===1&&r[0]===t},lr=e=>({object:{class:Array,props:{[rt.index]:e}}});function ys(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var ie=class{shift(){return this.chars[this.i++]??""}get lookahead(){return this.chars[this.i]??""}shiftUntil(t){let r="";for(;this.lookahead;){if(t(this,r))if(r[r.length-1]===ie.escapeToken)r=r.slice(0,-1);else break;r+=this.shift()}return r}shiftUntilNextTerminator(){return this.shiftUntil(ie.lookaheadIsNotWhitespace),this.shiftUntil(ie.lookaheadIsTerminator)}get unscanned(){return this.chars.slice(this.i,this.chars.length).join("")}lookaheadIs(t){return this.lookahead===t}lookaheadIsIn(t){return this.lookahead in t}constructor(t){ys(this,"chars",void 0),ys(this,"i",void 0),ys(this,"finalized",!1),this.chars=[...t],this.i=0}};(function(e){var t=e.lookaheadIsTerminator=f=>f.lookahead in o,r=e.lookaheadIsNotWhitespace=f=>f.lookahead!==d,n=e.comparatorStartChars={"<":!0,">":!0,"=":!0},o=e.terminatingChars={...n,"|":!0,"&":!0,")":!0,"[":!0,"%":!0," ":!0},i=e.comparators={"<":!0,">":!0,"<=":!0,">=":!0,"==":!0},s=e.oneCharComparators={"<":!0,">":!0},a=e.comparatorDescriptions={"<":"less than",">":"more than","<=":"at most",">=":"at least","==":"exactly"},u=e.invertedComparators={"<":">",">":"<","<=":">=",">=":"<=","==":"=="},m=e.branchTokens={"|":!0,"&":!0},l=e.escapeToken="\\\\",d=e.whiteSpaceToken=" "})(ie||(ie={}));function jy(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function Ly(e,t){return t.get?t.get.call(e):t.value}function By(e,t,r){if(t.set)t.set.call(e,r);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=r}}function oc(e,t,r){if(!t.has(e))throw new TypeError("attempted to "+r+" private field on non-instance");return t.get(e)}function bo(e,t){var r=oc(e,t,"get");return Ly(e,r)}function Uy(e,t,r){jy(e,t),t.set(e,r)}function zy(e,t,r){var n=oc(e,t,"set");return By(e,n,r),r}function pt(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var vs=class extends TypeError{constructor(t){super(`${t}`),pt(this,"cause",void 0),this.cause=t}},qt=class{toString(){return this.message}get message(){return this.writers.addContext(this.reason,this.path)}get reason(){return this.writers.writeReason(this.mustBe,new ho(this.data))}get mustBe(){return typeof this.writers.mustBe=="string"?this.writers.mustBe:this.writers.mustBe(this.source)}constructor(t,r,n,o,i){pt(this,"code",void 0),pt(this,"path",void 0),pt(this,"data",void 0),pt(this,"source",void 0),pt(this,"writers",void 0),pt(this,"parts",void 0),this.code=t,this.path=r,this.data=n,this.source=o,this.writers=i,this.code==="multi"&&(this.parts=this.source)}},fr=new WeakMap,ws=class extends Array{mustBe(t,r){return this.add("custom",t,r)}add(t,r,n){let o=ge.from(n?.path??bo(this,fr).path),i=n&&"data"in n?n.data:bo(this,fr).data,s=new qt(t,o,i,r,bo(this,fr).getProblemConfig(t));return this.addProblem(s),s}addProblem(t){let r=`${t.path}`,n=this.byPath[r];if(n)if(n.parts)n.parts.push(t);else{let o=new qt("multi",n.path,n.data,[n,t],bo(this,fr).getProblemConfig("multi")),i=this.indexOf(n);this[i===-1?this.length:i]=o,this.byPath[r]=o}else this.byPath[r]=t,this.push(t);this.count++}get summary(){return`${this}`}toString(){return this.join(`\n`)}throw(){throw new vs(this)}constructor(t){super(),pt(this,"byPath",{}),pt(this,"count",0),Uy(this,fr,{writable:!0,value:void 0}),zy(this,fr,t)}},vo=ws,Wy=e=>e[0].toUpperCase()+e.slice(1),xs=e=>e.map(t=>Xi[t]),ic=e=>e.map(t=>is[t]),bs=e=>{if(e.length===0)return"never";if(e.length===1)return e[0];let t="";for(let r=0;r`must be ${e}${t&&` (was ${t})`}`,sc=(e,t)=>t.length===0?Wy(e):t.length===1&&kr(t[0])?`Item at index ${t[0]} ${e}`:`${t} ${e}`,Mt={divisor:{mustBe:e=>e===1?"an integer":`a multiple of ${e}`},class:{mustBe:e=>{let t=co(e);return t?is[t]:`an instance of ${e.name}`},writeReason:(e,t)=>kt(e,t.className)},domain:{mustBe:e=>Xi[e],writeReason:(e,t)=>kt(e,t.domain)},missing:{mustBe:()=>"defined",writeReason:e=>kt(e,"")},extraneous:{mustBe:()=>"removed",writeReason:e=>kt(e,"")},bound:{mustBe:e=>`${ie.comparatorDescriptions[e.comparator]} ${e.limit}${e.units?` ${e.units}`:""}`,writeReason:(e,t)=>kt(e,`${t.size}`)},regex:{mustBe:e=>`a string matching ${e}`},value:{mustBe:oe},branches:{mustBe:e=>bs(e.map(t=>`${t.path} must be ${t.parts?bs(t.parts.map(r=>r.mustBe)):t.mustBe}`)),writeReason:(e,t)=>`${e} (was ${t})`,addContext:(e,t)=>t.length?`At ${t}, ${e}`:e},multi:{mustBe:e=>"\\u2022 "+e.map(t=>t.mustBe).join(`\n\\u2022 `),writeReason:(e,t)=>`${t} must be...\n${e}`,addContext:(e,t)=>t.length?`At ${t}, ${e}`:e},custom:{mustBe:e=>e},cases:{mustBe:e=>bs(e)}},ac=re(Mt),Ky=()=>{let e={},t;for(t of ac)e[t]={mustBe:Mt[t].mustBe,writeReason:Mt[t].writeReason??kt,addContext:Mt[t].addContext??sc};return e},Gy=Ky(),uc=e=>{if(!e)return Gy;let t={};for(let r of ac)t[r]={mustBe:e[r]?.mustBe??Mt[r].mustBe,writeReason:e[r]?.writeReason??Mt[r].writeReason??e.writeReason??kt,addContext:e[r]?.addContext??Mt[r].addContext??e.addContext??sc};return t};function Hy(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function Jy(e,t){return t.get?t.get.call(e):t.value}function Vy(e,t,r){if(t.set)t.set.call(e,r);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=r}}function fc(e,t,r){if(!t.has(e))throw new TypeError("attempted to "+r+" private field on non-instance");return t.get(e)}function Es(e,t){var r=fc(e,t,"get");return Jy(e,r)}function Yy(e,t,r){Hy(e,t),t.set(e,r)}function Zy(e,t,r){var n=fc(e,t,"set");return Vy(e,n,r),r}function nt(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Qy=()=>({mustBe:[],writeReason:[],addContext:[],keys:[]}),Xy=["mustBe","writeReason","addContext"],pc=(e,t)=>{let r=new Is(t,e);wo(e.flat,r);let n=new mc(r);if(r.problems.count)n.problems=r.problems;else{for(let[o,i]of r.entriesToPrune)delete o[i];n.data=r.data}return n},mc=class{constructor(){nt(this,"data",void 0),nt(this,"problems",void 0)}},Jr=new WeakMap,Is=class{getProblemConfig(t){let r={};for(let n of Xy)r[n]=this.traversalConfig[n][0]??this.rootScope.config.codes[t][n];return r}traverseConfig(t,r){for(let o of t)this.traversalConfig[o[0]].unshift(o[1]);let n=wo(r,this);for(let o of t)this.traversalConfig[o[0]].shift();return n}traverseKey(t,r){let n=this.data;this.data=this.data[t],this.path.push(t);let o=wo(r,this);return this.path.pop(),n[t]!==this.data&&(n[t]=this.data),this.data=n,o}traverseResolution(t){let r=this.type.scope.resolve(t),n=r.qualifiedName,o=this.data,i=xt(o,"object");if(i){let u=Es(this,Jr)[n];if(u){if(u.includes(o))return!0;u.push(o)}else Es(this,Jr)[n]=[o]}let s=this.type;this.type=r;let a=wo(r.flat,this);return this.type=s,i&&Es(this,Jr)[n].pop(),a}traverseBranches(t){let r=this.failFast;this.failFast=!0;let n=this.problems,o=new vo(this);this.problems=o;let i=this.path,s=this.entriesToPrune,a=!1;for(let u of t)if(this.path=new ge,this.entriesToPrune=[],xo(u,this)){a=!0,s.push(...this.entriesToPrune);break}return this.path=i,this.entriesToPrune=s,this.problems=n,this.failFast=r,a||!this.problems.add("branches",o)}constructor(t,r){nt(this,"data",void 0),nt(this,"type",void 0),nt(this,"path",void 0),nt(this,"problems",void 0),nt(this,"entriesToPrune",void 0),nt(this,"failFast",void 0),nt(this,"traversalConfig",void 0),nt(this,"rootScope",void 0),Yy(this,Jr,{writable:!0,value:void 0}),this.data=t,this.type=r,this.path=new ge,this.problems=new vo(this),this.entriesToPrune=[],this.failFast=!1,this.traversalConfig=Qy(),Zy(this,Jr,{}),this.rootScope=r.scope}},wo=(e,t)=>typeof e=="string"?le(t.data)===e||!t.problems.add("domain",e):xo(e,t),xo=(e,t)=>{let r=!0;for(let n=0;ne[0]in t.data?t.traverseKey(e[0],e[1]):(t.problems.add("missing",void 0,{path:t.path.concat(e[0]),data:void 0}),!1),lc=e=>(t,r)=>{let n=!0,o={...t.required};for(let s in r.data)if(t.required[s]?(n=r.traverseKey(s,t.required[s])&&n,delete o[s]):t.optional[s]?n=r.traverseKey(s,t.optional[s])&&n:t.index&&eo.test(s)?n=r.traverseKey(s,t.index)&&n:e==="distilledProps"?r.failFast?r.entriesToPrune.push([r.data,s]):delete r.data[s]:(n=!1,r.problems.add("extraneous",r.data[s],{path:r.path.concat(s)})),!n&&r.failFast)return!1;let i=Object.keys(o);if(i.length){for(let s of i)r.problems.add("missing",void 0,{path:r.path.concat(s)});return!1}return n},eb={regex:Uu,divisor:Pu,domains:(e,t)=>{let r=e[le(t.data)];return r?xo(r,t):!t.problems.add("cases",xs(re(e)))},domain:(e,t)=>le(t.data)===e||!t.problems.add("domain",e),bound:Bu,optionalProp:(e,t)=>e[0]in t.data?t.traverseKey(e[0],e[1]):!0,requiredProp:cc,prerequisiteProp:cc,indexProp:(e,t)=>{if(!Array.isArray(t.data))return t.problems.add("class",Array),!1;let r=!0;for(let n=0;nt.traverseBranches(e),switch:(e,t)=>{let r=Eu(t.data,e.path),n=Xu(e.kind,r);if(ir(e.cases,n))return xo(e.cases[n],t);let o=re(e.cases),i=t.path.concat(e.path),s=e.kind==="value"?o:e.kind==="domain"?xs(o):e.kind==="class"?ic(o):te(`Unexpectedly encountered rule kind \'${e.kind}\' during traversal`);return t.problems.add("cases",s,{path:i,data:r}),!1},alias:(e,t)=>t.traverseResolution(e),class:Fu,narrow:(e,t)=>{let r=t.problems.count,n=e(t.data,t.problems);return!n&&t.problems.count===r&&t.problems.mustBe(e.name?`valid according to ${e.name}`:"valid"),n},config:({config:e,node:t},r)=>r.traverseConfig(e,t),value:(e,t)=>t.data===e||!t.problems.add("value",e),morph:(e,t)=>{let r=e(t.data,t.problems);if(t.problems.length)return!1;if(r instanceof qt)return t.problems.addProblem(r),!1;if(r instanceof mc){if(r.problems){for(let n of r.problems)t.problems.addProblem(n);return!1}return t.data=r.data,!0}return t.data=r,!0},distilledProps:lc("distilledProps"),strictProps:lc("strictProps")};var Dt=new Proxy(()=>Dt,{get:()=>Dt});var Ss=(e,t,r,n)=>{let o={node:e,flat:[["alias",e]],allows:a=>!i(a).problems,assert:a=>{let u=i(a);return u.problems?u.problems.throw():u.data},infer:Dt,inferIn:Dt,qualifiedName:tb(e)?n.getAnonymousQualifiedName(e):`${n.name}.${e}`,definition:t,scope:n,includesMorph:!1,config:r},i={[e]:a=>pc(i,a)}[e];return Object.assign(i,o)},Os=e=>e?.infer===Dt,tb=e=>e[0]==="\\u03BB";var dc=e=>{let t=e.scanner.shiftUntilNextTerminator();e.setRoot(rb(e,t))},rb=(e,t)=>e.ctx.type.scope.addParsedReferenceIfResolvable(t,e.ctx)?t:nb(t)??e.error(t===""?Ds(e):ob(t)),nb=e=>{let t=qr(e);if(t!==void 0)return{number:{value:t}};let r=ts(e);if(r!==void 0)return{bigint:{value:r}}},ob=e=>`\'${e}\' is unresolvable`,Ds=e=>{let t=e.previousOperator();return t?_s(t,e.scanner.unscanned):ib(e.scanner.unscanned)},_s=(e,t)=>`Token \'${e}\' requires a right operand${t?` before \'${t}\'`:""}`,ib=e=>`Expected an expression${e?` before \'${e}\'`:""}`;var Ts=(e,t)=>({node:t.type.scope.resolveTypeNode(be(e[0],t)),config:e[2]});var Le=e=>Object.isFrozen(e)?e:Array.isArray(e)?Object.freeze(e.map(Le)):sb(e),sb=e=>{for(let t in e)Le(e[t]);return e};var ab=Le({regex:Mr.source}),ub=Le({range:{min:{comparator:">=",limit:0}},divisor:1}),hc=(e,t)=>{let r=t.type.scope.resolveNode(be(e[1],t)),n=re(r).map(l=>lb(l,r[l])),o=gc(n);if(!o.length)return uo(t.path,"keyof");let i={};for(let l of o){let d=typeof l;if(d==="string"||d==="number"||d==="symbol"){var s,a;(s=i)[a=d]??(s[a]=[]),i[d].push({value:l})}else if(l===Mr){var u,m;(u=i).string??(u.string=[]),i.string.push(ab),(m=i).number??(m.number=[]),i.number.push(ub)}else return te(`Unexpected keyof key \'${oe(l)}\'`)}return Object.fromEntries(Object.entries(i).map(([l,d])=>[l,d.length===1?d[0]:d]))},cb={bigint:Pt(0n),boolean:Pt(!1),null:[],number:Pt(0),object:[],string:Pt(""),symbol:Pt(Symbol()),undefined:[]},lb=(e,t)=>e!=="object"||t===!0?cb[e]:gc(et(t).map(r=>fb(r))),gc=e=>{if(!e.length)return[];let t=e[0];for(let r=1;re[r].includes(n));return t},fb=e=>{let t=[];if("props"in e)for(let r of Object.keys(e.props))r===rt.index?t.push(Mr):t.includes(r)||(t.push(r),Mr.test(r)&&t.push(to(r,`Unexpectedly failed to parse an integer from key \'${r}\'`)));if("class"in e){let r=typeof e.class=="string"?jr[e.class]:e.class;for(let n of Pt(r.prototype))t.includes(n)||t.push(n)}return t};var bc=(e,t)=>{if(typeof e[2]!="function")return Q(pb(e[2]));let r=be(e[0],t),n=t.type.scope.resolveTypeNode(r),o=e[2];t.type.includesMorph=!0;let i,s={};for(i in n){let a=n[i];a===!0?s[i]={rules:{},morph:o}:typeof a=="object"?s[i]=It(a)?a.map(u=>yc(u,o)):yc(a,o):te(`Unexpected predicate value for domain \'${i}\': ${oe(a)}`)}return s},yc=(e,t)=>ps(e)?{...e,morph:e.morph?Array.isArray(e.morph)?[...e.morph,t]:[e.morph,t]:t}:{rules:e,morph:t},pb=e=>`Morph expression requires a function following \'|>\' (was ${typeof e})`;var vc=e=>`Expected a Function or Record operand (${oe(e)} was invalid)`,wc=(e,t,r,n)=>{let o=re(t);if(!xt(e,"object"))return Q(vc(e));let i={};if(typeof e=="function"){let s={[n]:e};for(let a of o)i[a]=s}else for(let s of o){if(e[s]===void 0)continue;let a={[n]:e[s]};if(typeof a[n]!="function")return Q(vc(a));i[s]=a}return i};var xc=(e,t)=>{let r=be(e[0],t),n=t.type.scope.resolveNode(r),o=Hr(n),i=o?n.node:n,s=Ot(r,wc(e[2],i,t,"narrow"),t.type);return o?{config:n.config,node:s}:s};var Ic=(e,t)=>{if(db(e))return Sc[e[1]](e,t);if(hb(e))return Oc[e[0]](e,t);let r={length:["!",{number:{value:e.length}}]};for(let n=0;n{if(e[2]===void 0)return Q(_s(e[1],""));let r=be(e[0],t),n=be(e[2],t);return e[1]==="&"?Ot(r,n,t.type):yo(r,n,t.type)},mb=(e,t)=>lr(be(e[0],t));var db=e=>Sc[e[1]]!==void 0,Sc={"|":Ec,"&":Ec,"[]":mb,"=>":xc,"|>":bc,":":Ts},Oc={keyof:hc,instanceof:e=>typeof e[1]!="function"?Q(`Expected a constructor following \'instanceof\' operator (was ${typeof e[1]}).`):{object:{class:e[1]}},"===":e=>({[le(e[1])]:{value:e[1]}}),node:e=>e[1]},hb=e=>Oc[e[0]]!==void 0;var Dc=(e,t)=>{let r={};for(let n in e){let o=n,i=!1;n[n.length-1]==="?"&&(n[n.length-2]===ie.escapeToken?o=`${n.slice(0,-2)}?`:(o=n.slice(0,-1),i=!0)),t.path.push(o);let s=be(e[n],t);t.path.pop(),r[o]=i?["?",s]:s}return{object:{props:r}}};var _c=e=>`Unmatched )${e===""?"":` before ${e}`}`,Tc="Missing )",Nc=(e,t)=>`Left bounds are only valid when paired with right bounds (try ...${t}${e})`,Eo=e=>`Left-bounded expressions must specify their limits using < or <= (was ${e})`,Cc=(e,t,r,n)=>`An expression may have at most one left bound (parsed ${e}${ie.invertedComparators[t]}, ${r}${ie.invertedComparators[n]})`;function Vr(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Io=class{error(t){return Q(t)}hasRoot(){return this.root!==void 0}resolveRoot(){return this.assertHasRoot(),this.ctx.type.scope.resolveTypeNode(this.root)}rootToString(){return this.assertHasRoot(),oe(this.root)}ejectRootIfLimit(){this.assertHasRoot();let t=typeof this.root=="string"?this.ctx.type.scope.resolveNode(this.root):this.root;if(mo(t,"number")){let r=t.number.value;return this.root=void 0,r}}ejectRangeIfOpen(){if(this.branches.range){let t=this.branches.range;return delete this.branches.range,t}}assertHasRoot(){if(this.root===void 0)return te("Unexpected interaction with unset root")}assertUnsetRoot(){if(this.root!==void 0)return te("Unexpected attempt to overwrite root")}setRoot(t){this.assertUnsetRoot(),this.root=t}rootToArray(){this.root=lr(this.ejectRoot())}intersect(t){this.root=Ot(this.ejectRoot(),t,this.ctx.type)}ejectRoot(){this.assertHasRoot();let t=this.root;return this.root=void 0,t}ejectFinalizedRoot(){this.assertHasRoot();let t=this.root;return this.root=gb,t}finalize(){if(this.groups.length)return this.error(Tc);this.finalizeBranches(),this.scanner.finalized=!0}reduceLeftBound(t,r){let n=ie.invertedComparators[r];if(!Me(n,go))return this.error(Eo(r));if(this.branches.range)return this.error(Cc(`${this.branches.range.limit}`,this.branches.range.comparator,`${t}`,n));this.branches.range={limit:t,comparator:n}}finalizeBranches(){this.assertRangeUnset(),this.branches.union?(this.pushRootToBranch("|"),this.setRoot(this.branches.union)):this.branches.intersection&&this.setRoot(Ot(this.branches.intersection,this.ejectRoot(),this.ctx.type))}finalizeGroup(){this.finalizeBranches();let t=this.groups.pop();if(!t)return this.error(_c(this.scanner.unscanned));this.branches=t}pushRootToBranch(t){this.assertRangeUnset(),this.branches.intersection=this.branches.intersection?Ot(this.branches.intersection,this.ejectRoot(),this.ctx.type):this.ejectRoot(),t==="|"&&(this.branches.union=this.branches.union?yo(this.branches.union,this.branches.intersection,this.ctx.type):this.branches.intersection,delete this.branches.intersection)}assertRangeUnset(){if(this.branches.range)return this.error(Nc(`${this.branches.range.limit}`,this.branches.range.comparator))}reduceGroupOpen(){this.groups.push(this.branches),this.branches={}}previousOperator(){return this.branches.range?.comparator??this.branches.intersection?"&":this.branches.union?"|":void 0}shiftedByOne(){return this.scanner.shift(),this}constructor(t,r){Vr(this,"ctx",void 0),Vr(this,"scanner",void 0),Vr(this,"root",void 0),Vr(this,"branches",void 0),Vr(this,"groups",void 0),this.ctx=r,this.branches={},this.groups=[],this.scanner=new ie(t)}},gb=new Proxy({},{get:()=>te("Unexpected attempt to access ejected attributes")});var Ac=(e,t)=>{let r=e.scanner.shiftUntil(yb[t]);if(e.scanner.lookahead==="")return e.error(vb(r,t));e.scanner.shift()==="/"?(cs(r),e.setRoot({string:{regex:r}})):e.setRoot({string:{value:r}})},Rc={"\'":1,\'"\':1,"/":1},yb={"\'":e=>e.lookahead==="\'",\'"\':e=>e.lookahead===\'"\',"/":e=>e.lookahead==="/"},bb={\'"\':"double-quote","\'":"single-quote","/":"forward slash"},vb=(e,t)=>`${t}${e} requires a closing ${bb[t]}`;var So=e=>e.scanner.lookahead===""?e.error(Ds(e)):e.scanner.lookahead==="("?e.shiftedByOne().reduceGroupOpen():e.scanner.lookaheadIsIn(Rc)?Ac(e,e.scanner.shift()):e.scanner.lookahead===" "?So(e.shiftedByOne()):dc(e);var Fc=e=>`Bounded expression ${e} must be a number, string or array`;var $c=(e,t)=>{let r=wb(e,t),n=e.ejectRootIfLimit();return n===void 0?Eb(e,r):e.reduceLeftBound(n,r)},wb=(e,t)=>e.scanner.lookaheadIs("=")?`${t}${e.scanner.shift()}`:Me(t,ie.oneCharComparators)?t:e.error(xb),xb="= is not a valid comparator. Use == to check for equality",Eb=(e,t)=>{let r=e.scanner.shiftUntilNextTerminator(),n=qr(r,Ob(t,r+e.scanner.unscanned)),o=e.ejectRangeIfOpen(),i={comparator:t,limit:n},s=o?Ns(i,as)?ur("min",o,i)==="l"?e.error(Db({min:o,max:i})):{min:o,max:i}:e.error(Eo(t)):Sb(i,"==")?i:Ns(i,go)?{min:i}:Ns(i,as)?{max:i}:te(`Unexpected comparator \'${i.comparator}\'`);e.intersect(Ib(s,e))},Ib=(e,t)=>{let r=t.resolveRoot(),n=re(r),o={},i={range:e};return n.every(a=>{switch(a){case"string":return o.string=i,!0;case"number":return o.number=i,!0;case"object":return o.object=i,r.object===!0?!1:et(r.object).every(u=>"class"in u&&u.class===Array);default:return!1}})||t.error(Fc(t.rootToString())),o},Sb=(e,t)=>e.comparator===t,Ns=(e,t)=>e.comparator in t,Ob=(e,t)=>`Comparator ${e} must be followed by a number literal (was \'${t}\')`,Db=e=>`${io(e)} is empty`;var Pc=e=>`Divisibility operand ${e} must be a number`;var Mc=e=>{let t=e.scanner.shiftUntilNextTerminator(),r=to(t,kc(t));r===0&&e.error(kc(0));let n=re(e.resolveRoot());n.length===1&&n[0]==="number"?e.intersect({number:{divisor:r}}):e.error(Pc(e.rootToString()))},kc=e=>`% operator must be followed by a non-zero integer literal (was ${e})`;var Cs=e=>{let t=e.scanner.shift();return t===""?e.finalize():t==="["?e.scanner.shift()==="]"?e.rootToArray():e.error(Tb):Me(t,ie.branchTokens)?e.pushRootToBranch(t):t===")"?e.finalizeGroup():Me(t,ie.comparatorStartChars)?$c(e,t):t==="%"?Mc(e):t===" "?Cs(e):te(_b(t))},_b=e=>`Unexpected character \'${e}\'`,Tb="Missing expected \']\'";var qc=(e,t)=>t.type.scope.parseCache.get(e)??t.type.scope.parseCache.set(e,Nb(e,t)??Cb(e,t)),Nb=(e,t)=>{if(t.type.scope.addParsedReferenceIfResolvable(e,t))return e;if(e.endsWith("[]")){let r=e.slice(0,-2);if(t.type.scope.addParsedReferenceIfResolvable(e,t))return lr(r)}},Cb=(e,t)=>{let r=new Io(e,t);return So(r),Ab(r)},Ab=e=>{for(;!e.scanner.finalized;)Rb(e);return e.ejectFinalizedRoot()},Rb=e=>e.hasRoot()?Cs(e):So(e);var be=(e,t)=>{let r=le(e);if(r==="string")return qc(e,t);if(r!=="object")return Q(As(r));let n=ar(e);switch(n){case"Object":return Dc(e,t);case"Array":return Ic(e,t);case"RegExp":return{string:{regex:e.source}};case"Function":if(Os(e))return t.type.scope.addAnonymousTypeReference(e,t);if(Fb(e)){let o=e();if(Os(o))return t.type.scope.addAnonymousTypeReference(o,t)}return Q(As("Function"));default:return Q(As(n??oe(e)))}},j_=Symbol("as"),Fb=e=>typeof e=="function"&&e.length===0,As=e=>`Type definitions must be strings or objects (was ${e})`;function $b(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var pr=class{get root(){return this.cache}has(t){return t in this.cache}get(t){return this.cache[t]}set(t,r){return this.cache[t]=r,r}constructor(){$b(this,"cache",{})}},Oo=class extends pr{set(t,r){return this.cache[t]=Le(r),r}};function zc(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function Pb(e,t){return t.get?t.get.call(e):t.value}function kb(e,t,r){if(t.set)t.set.call(e,r);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=r}}function Wc(e,t,r){if(!t.has(e))throw new TypeError("attempted to "+r+" private field on non-instance");return t.get(e)}function dt(e,t){var r=Wc(e,t,"get");return Pb(e,r)}function jc(e,t,r){zc(e,t),t.set(e,r)}function Lc(e,t,r){var n=Wc(e,t,"set");return kb(e,n,r),r}function mt(e,t,r){if(!t.has(e))throw new TypeError("attempted to get private field on non-instance");return r}function Do(e,t){zc(e,t),t.add(e)}function Ne(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Mb=e=>({codes:uc(e.codes),keys:e.keys??"loose"}),qb=0,Bc={},Rs={};var jt=new WeakMap,mr=new WeakMap,Uc=new WeakSet,_o=new WeakSet,$s=new WeakSet,To=new WeakSet,Ps=class{getAnonymousQualifiedName(t){let r=0,n=t;for(;this.isResolvable(n);)n=`${t}${r++}`;return`${this.name}.${n}`}addAnonymousTypeReference(t,r){var n;return(n=r.type).includesMorph||(n.includesMorph=t.includesMorph),t.node}get infer(){return Dt}compile(){if(!Rs[this.name]){for(let t in this.aliases)this.resolve(t);Rs[this.name]=dt(this,mr).root}return dt(this,mr).root}addParsedReferenceIfResolvable(t,r){var n;let o=mt(this,To,ks).call(this,t,"undefined",[t]);return o?((n=r.type).includesMorph||(n.includesMorph=o.includesMorph),!0):!1}resolve(t){return mt(this,To,ks).call(this,t,"throw",[t])}resolveNode(t){return typeof t=="string"?this.resolveNode(this.resolve(t).node):t}resolveTypeNode(t){let r=this.resolveNode(t);return Hr(r)?r.node:r}isResolvable(t){return dt(this,jt).has(t)||this.aliases[t]}constructor(t,r={}){Do(this,Uc),Do(this,_o),Do(this,$s),Do(this,To),Ne(this,"aliases",void 0),Ne(this,"name",void 0),Ne(this,"config",void 0),Ne(this,"parseCache",void 0),jc(this,jt,{writable:!0,value:void 0}),jc(this,mr,{writable:!0,value:void 0}),Ne(this,"expressions",void 0),Ne(this,"intersection",void 0),Ne(this,"union",void 0),Ne(this,"arrayOf",void 0),Ne(this,"keyOf",void 0),Ne(this,"valueOf",void 0),Ne(this,"instanceOf",void 0),Ne(this,"narrow",void 0),Ne(this,"morph",void 0),Ne(this,"type",void 0),this.aliases=t,this.parseCache=new Oo,Lc(this,jt,new pr),Lc(this,mr,new pr),this.expressions={intersection:(n,o,i)=>this.type([n,"&",o],i),union:(n,o,i)=>this.type([n,"|",o],i),arrayOf:(n,o)=>this.type([n,"[]"],o),keyOf:(n,o)=>this.type(["keyof",n],o),node:(n,o)=>this.type(["node",n],o),instanceOf:(n,o)=>this.type(["instanceof",n],o),valueOf:(n,o)=>this.type(["===",n],o),narrow:(n,o,i)=>this.type([n,"=>",o],i),morph:(n,o,i)=>this.type([n,"|>",o],i)},this.intersection=this.expressions.intersection,this.union=this.expressions.union,this.arrayOf=this.expressions.arrayOf,this.keyOf=this.expressions.keyOf,this.valueOf=this.expressions.valueOf,this.instanceOf=this.expressions.instanceOf,this.narrow=this.expressions.narrow,this.morph=this.expressions.morph,this.type=Object.assign((n,o={})=>{let i=Ss("\\u03BBtype",n,o,this),s=mt(this,$s,Kc).call(this,i),a=be(n,s);return i.node=Le(Pr(o)?{config:o,node:this.resolveTypeNode(a)}:a),i.flat=Le(gs(i)),i},{from:this.expressions.node}),this.name=mt(this,Uc,jb).call(this,r),r.standard!==!1&&mt(this,_o,Fs).call(this,[Rs.standard],"imports"),r.imports&&mt(this,_o,Fs).call(this,r.imports,"imports"),r.includes&&mt(this,_o,Fs).call(this,r.includes,"includes"),this.config=Mb(r)}};function jb(e){let t=e.name?Bc[e.name]?Q(`A scope named \'${e.name}\' already exists`):e.name:`scope${++qb}`;return Bc[t]=this,t}function Fs(e,t){for(let r of e)for(let n in r)(dt(this,jt).has(n)||n in this.aliases)&&Q(Bb(n)),dt(this,jt).set(n,r[n]),t==="includes"&&dt(this,mr).set(n,r[n])}function Kc(e){return{type:e,path:new ge}}function ks(e,t,r){let n=dt(this,jt).get(e);if(n)return n;let o=this.aliases[e];if(!o)return t==="throw"?te(`Unexpectedly failed to resolve alias \'${e}\'`):void 0;let i=Ss(e,o,{},this),s=mt(this,$s,Kc).call(this,i);dt(this,jt).set(e,i),dt(this,mr).set(e,i);let a=be(o,s);if(typeof a=="string"){if(r.includes(a))return Q(Lb(e,r));r.push(a),a=mt(this,To,ks).call(this,a,"throw",r).node}return i.node=Le(a),i.flat=Le(gs(i)),i}var Be=(e,t={})=>new Ps(e,t),Ms=Be({},{name:"root",standard:!1}),Ze=Ms.type,Lb=(e,t)=>`Alias \'${e}\' has a shallow resolution cycle: ${[...t,e].join("=>")}`,Bb=e=>`Alias \'${e}\' is already defined`;var No=Be({Function:["node",{object:{class:Function}}],Date:["node",{object:{class:Date}}],Error:["node",{object:{class:Error}}],Map:["node",{object:{class:Map}}],RegExp:["node",{object:{class:RegExp}}],Set:["node",{object:{class:Set}}],WeakMap:["node",{object:{class:WeakMap}}],WeakSet:["node",{object:{class:WeakSet}}],Promise:["node",{object:{class:Promise}}]},{name:"jsObjects",standard:!1}),Gc=No.compile();var Hc={bigint:!0,boolean:!0,null:!0,number:!0,object:!0,string:!0,symbol:!0,undefined:!0},Co=Be({any:["node",Hc],bigint:["node",{bigint:!0}],boolean:["node",{boolean:!0}],false:["node",{boolean:{value:!1}}],never:["node",{}],null:["node",{null:!0}],number:["node",{number:!0}],object:["node",{object:!0}],string:["node",{string:!0}],symbol:["node",{symbol:!0}],true:["node",{boolean:{value:!0}}],unknown:["node",Hc],void:["node",{undefined:!0}],undefined:["node",{undefined:!0}]},{name:"ts",standard:!1}),Lt=Co.compile();var Ub=e=>{let t=e.replace(/[- ]+/g,""),r=0,n,o,i;for(let s=t.length-1;s>=0;s--)n=t.substring(s,s+1),o=parseInt(n,10),i?(o*=2,o>=10?r+=o%10+1:r+=o):r+=o,i=!i;return!!(r%10===0&&t)},zb=/^(?:4[0-9]{12}(?:[0-9]{3,6})?|5[1-5][0-9]{14}|(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12,15}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11}|6[27][0-9]{14}|^(81[0-9]{14,17}))$/,Jc=Ze([zb,"=>",(e,t)=>Ub(e)||!t.mustBe("a valid credit card number")],{mustBe:"a valid credit card number"});var Wb=/^[./-]$/,Kb=/^([+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24:?00)([.,]\\d+(?!:))?)?(\\17[0-5]\\d([.,]\\d+)?)?([zZ]|([+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$/,Gb=e=>!isNaN(e),Ao=e=>`a ${e}-formatted date`,Hb=(e,t)=>{if(!t?.format){let a=new Date(e);return Gb(a)?a:"a valid date"}if(t.format==="iso8601")return Kb.test(e)?new Date(e):Ao("iso8601");let r=e.split(Wb),n=e[r[0].length],o=n?t.format.split(n):[t.format];if(r.length!==o.length)return Ao(t.format);let i={};for(let a=0;a",(e,t)=>{let r=Hb(e);return typeof r=="string"?t.mustBe(r):r}]);var Jb=Ze([es,"|>",e=>parseFloat(e)],{mustBe:"a well-formed numeric string"}),Vb=Ze([Lt.string,"|>",(e,t)=>{if(!kr(e))return t.mustBe("a well-formed integer string");let r=parseInt(e);return Number.isSafeInteger(r)?r:t.mustBe("an integer in the range Number.MIN_SAFE_INTEGER to Number.MAX_SAFE_INTEGER")}]),Yb=Ze(/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$/,{mustBe:"a valid email"}),Zb=Ze(/^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$/,{mustBe:"a valid UUID"}),Qb=Ze(/^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/,{mustBe:"a valid semantic version (see https://semver.org/)"}),Xb=Ze([Lt.string,"|>",e=>JSON.parse(e)],{mustBe:"a JSON-parsable string"}),Ro=Be({alpha:[/^[A-Za-z]*$/,":",{mustBe:"only letters"}],alphanumeric:[/^[A-Za-z\\d]*$/,":",{mustBe:"only letters and digits"}],lowercase:[/^[a-z]*$/,":",{mustBe:"only lowercase letters"}],uppercase:[/^[A-Z]*$/,":",{mustBe:"only uppercase letters"}],creditCard:Jc,email:Yb,uuid:Zb,parsedNumber:Jb,parsedInteger:Vb,parsedDate:Vc,semver:Qb,json:Xb,integer:["node",{number:{divisor:1}}]},{name:"validation",standard:!1}),Yc=Ro.compile();var Fo=Be({},{name:"standard",includes:[Lt,Gc,Yc],standard:!1}),ev=Fo.compile(),ht={root:Ms,tsKeywords:Co,jsObjects:No,validation:Ro,ark:Fo};var tv=Fo.type;var rv=ht.ark.intersection,nv=ht.ark.union,ov=ht.ark.arrayOf,iv=ht.ark.keyOf,sv=ht.ark.instanceOf,av=ht.ark.valueOf,uv=ht.ark.narrow,cv=ht.ark.morph;var{DataRequest:Zc,DataResponse:R1}=Be({DataRequest:{id:"number",method:"string",params:"any[]"},DataResponse:{id:"number","eventName?":"string",payload:"any",error:"any"}}).compile(),Qc="__METHODS__",Xc="__EVAL__";var lv=typeof parent<"u"&&typeof window<"u"&&window!==parent?parent.postMessage:postMessage,Yr=class{methods;constructor(t){if(!(typeof self<"u"&&typeof postMessage=="function"&&typeof addEventListener=="function"))throw new Error("Script must be executed as a worker");this.methods={...t,[Qc]:()=>Object.keys(t),[Xc]:(r,...n)=>new Function(`return (${r})`)()(...n)},addEventListener("message",r=>this.onMessage(r.data)),this.send("ready")}send(t,r){lv(t,r)}async onMessage(t){let{data:r,problems:n}=Zc(t);if(n)return this.send({id:-1,payload:null,error:n.toString()});try{let o=this.methods[r.method];if(!o)throw new Error(\'Unknown method "\'+r.method+\'"\');let i=await o.apply(o,r.params);this.send({id:r.id,payload:i,error:null})}catch(o){console.error(o),this.send({id:r.id,payload:null,error:fv(o)})}}emit(t,r){this.send({eventName:t,payload:r,id:-1,error:null})}};function fv(e){return Object.getOwnPropertyNames(e).reduce((t,r)=>Object.defineProperty(t,r,{value:e[r],enumerable:!0}),{})}var el=e=>`obsidian-zotero:${e}`;var Ls=({key:e,groupID:t,parentItem:r},n=!1)=>{let o=[e];return!n&&r&&o.push(`a${r}`),typeof t=="number"&&o.push(`g${t}`),o.join("")},tl=(e,t,r=!0)=>(n,...o)=>{let i="";for(let s=0;s0&&(i+=e(o[s-1])),i+=(r?n.raw:n)[s];return t(i)},Bs=(e=!0,t)=>tl(r=>r,r=>new RegExp(e?"^"+r+"$":r,t),!0),qs=String.raw`[23456789ABCDEFGHIJKLMNPQRSTUVWXYZ]{8}`,js=String.raw`\\d+`,rl=e=>{let t={annotKey:qs,parentKey:qs,groupID:js,page:js};if(e)for(let r in t)t[r]=`(${t[r]})`;return tl(r=>t[r],r=>r)`${"annotKey"}a${"parentKey"}(?:g${"groupID"})?(?:p${"page"})?`},k1=Bs()`${qs}(?:g${js})?`,M1=Bs()`${rl(!0)}`,q1=Bs()`(?:${rl(!1)}n?)+`;var mv=/^[0-9]{4}\\-(0[0-9]|10|11|12)\\-(0[0-9]|[1-2][0-9]|30|31) /;var dv=/^\\-?[0-9]{4}\\-(0[1-9]|10|11|12)\\-(0[1-9]|[1-2][0-9]|30|31) ([0-1][0-9]|[2][0-3]):([0-5][0-9]):([0-5][0-9])$/,hv=/^\\-?[0-9]{4}\\-(0[1-9]|10|11|12)\\-(0[1-9]|[1-2][0-9]|30|31) ([0-1][0-9]|[2][0-3]):([0-5][0-9])$/,gv=e=>yv(e)||bv(e)?!1:mv.test(e),nl=e=>e?gv(e)?e.substring(0,10):"0000-00-00":"";var yv=e=>dv.test(e),bv=e=>hv.test(e);var ol=(e,t,{getLogger:r,configure:n})=>{let o=el(e);return n({appenders:{out:{type:"console"}},categories:{default:{appenders:["out"],level:t},[o]:{appenders:["out"],level:t}}}),r(o)};var il=()=>(...e)=>e;function sl(e,t){let r=Object.keys(t).map(n=>vv(e,n,t[n]));return r.length===1?r[0]:function(){r.forEach(n=>n())}}function vv(e,t,r){let n=e[t],o=e.hasOwnProperty(t),i=r(n);return n&&Object.setPrototypeOf(i,n),Object.setPrototypeOf(s,i),e[t]=s,a;function s(...u){return i===n&&e[t]===s&&a(),i.apply(this,u)}function a(){e[t]===s&&(o?e[t]=n:delete e[t]),i!==n&&(i=n,Object.setPrototypeOf(s,n||Function))}}var al=e=>{let t=r=>async(...n)=>{try{return await r(...n)}catch(o){throw console.error(o),o}};return sl(e,Object.fromEntries(Object.keys(e).map(r=>[r,t]))),e};var ul;(function(e){e[e.highlight=1]="highlight",e[e.note=2]="note",e[e.image=3]="image",e[e.ink=4]="ink",e[e.underline=5]="underline",e[e.text=6]="text"})(ul||(ul={}));var cl;(function(e){e[e.manual=0]="manual",e[e.auto=1]="auto"})(cl||(cl={}));var ll;(function(e){e[e.importedFile=0]="importedFile",e[e.importedUrl=1]="importedUrl",e[e.linkedFile=2]="linkedFile",e[e.linkedUrl=3]="linkedUrl",e[e.embeddedImage=4]="embeddedImage"})(ll||(ll={}));var Us;(function(e){e[e.fullName=0]="fullName",e[e.nameOnly=1]="nameOnly"})(Us||(Us={}));var zs=["attachment","note","annotation"];var $o=zs.map(e=>`\'${e}\'`).join(",");var ve=(e="itemID")=>`--sql\n ${e} IS NOT NULL\n ${e==="itemID"?`AND ${e} NOT IN (SELECT itemID FROM deletedItems)`:""}\n`,Ue=(e,t="$itemId")=>typeof e=="boolean"?"":`AND ${e} = ${t}`;var Z=class{statement;constructor(t){this.statement=t.prepare(this.sql())}get database(){return this.statement.database}get(t){return this.statement.get(t)}all(t){return t===void 0?this.statement.all():this.statement.all(t)}},dr=class extends Z{query(t){return this.all(t)}},Po=class extends Z{query(){return this.all(void 0)}},hr=class extends Z{query(t){return this.all(t).map(r=>this.parse(r,t))}};var Ws=(e,t)=>{for(let r=0;re?.split("|").map(t=>parseInt(t,10))??[];var ko=`--sql\n items.itemID,\n items.key,\n items.clientDateModified,\n items.dateAdded,\n items.dateModified,\n annots.type,\n annots.authorName,\n annots.text,\n annots.comment,\n annots.color,\n annots.pageLabel,\n annots.sortIndex,\n annots.position,\n annots.isExternal\n`,Mo=`--sql\n itemAnnotations annots\n JOIN items USING (itemID)\n`,qo=(e,t,r)=>Object.assign(e,{sortIndex:Ks(e.sortIndex),position:JSON.parse(e.position),libraryID:t,groupID:r,itemType:"annotation"});var wv=`--sql\nSELECT\n ${ko},\n annots.parentItemID,\n parentItems.key as parentItem\nFROM\n ${Mo}\n JOIN items as parentItems ON annots.parentItemID = parentItems.itemID\nWHERE\n items.key = $annotKey\n AND items.libraryID = $libId\n AND ${ve("items.itemID")}\n`,Zr=class extends Z{trxCache={};sql(){return wv}parse(t,r){return qo(t,r.libId,r.groupID)}query(t){let{annotKeys:r,libId:n}=t,o=s=>s.reduce((a,u)=>{let m=this.get({annotKey:u,libId:n});return m&&(a[u]=this.parse(m,t)),a},{});return(this.trxCache[n]??=this.database.transaction(o))(r)}};var xv=`--sql\nSELECT\n ${ko}\nFROM\n ${Mo}\nWHERE\n parentItemID = $attachmentId\n AND items.libraryID = $libId\n AND ${ve()}\n`,Qr=class extends hr{sql(){return xv}getKeyStatement=this.database.prepare("SELECT key FROM items WHERE itemID = $attachmentId AND libraryID = $libId");parse(t,r,n){return Object.assign(qo(t,r.libId,r.groupID),{parentItem:n,parentItemID:r.attachmentId})}query(t){let r=this.getKeyStatement.get(t)?.key;if(r===void 0)throw new Error("Parent item not found");return this.all(t).map(n=>this.parse(n,t,r)).sort((n,o)=>Ws(n.sortIndex,o.sortIndex))}};var jo=`--sql\n items.itemID,\n items.key,\n items.clientDateModified,\n items.dateAdded,\n items.dateModified,\n notes.note,\n notes.title\n`,Lo=`--sql\n itemNotes notes\n JOIN items USING (itemID)\n`,Bo=(e,t,r)=>Object.assign(e,{libraryID:t,groupID:r,itemType:"note"});var Ev=`--sql\nSELECT\n ${jo},\n notes.parentItemID,\n parentItems.key as parentItem\nFROM\n ${Lo}\n JOIN items as parentItems ON notes.parentItemID = parentItems.itemID\nWHERE\n items.key = $noteKey\n AND items.libraryID = $libId\n AND ${ve("items.itemID")}\n`,Xr=class extends Z{trxCache={};sql(){return Ev}parse(t,r){return Bo(t,r.libId,r.groupID)}query(t){let{noteKeys:r,libId:n}=t,o=s=>s.reduce((a,u)=>{let m=this.get({noteKey:u,libId:n});return m&&(a[u]=this.parse(m,t)),a},{});return(this.trxCache[n]??=this.database.transaction(o))(r)}};var Iv=`--sql\nSELECT\n ${jo}\nFROM\n ${Lo}\nWHERE\n parentItemID = $itemID\n AND items.libraryID = $libId\n AND ${ve()}\n`,en=class extends hr{sql(){return Iv}getKeyStatement=this.database.prepare("SELECT key FROM items WHERE itemID = $itemID AND libraryID = $libId");parse(t,r,n){return Object.assign(Bo(t,r.libId,r.groupID),{parentItem:n,parentItemID:r.itemID})}query(t){let r=this.getKeyStatement.get(t)?.key;if(r===void 0)throw new Error("Parent item not found");return this.all(t).map(n=>this.parse(n,t,r))}};var Sv=`--sql\nSELECT\n atchs.itemID,\n atchs.path,\n atchs.contentType,\n atchs.linkMode,\n charsets.charset,\n items.key,\n COUNT(atchs.itemID) as annotCount\nFROM\n itemAttachments atchs\n JOIN items USING (itemID)\n LEFT JOIN charsets USING (charsetID)\n LEFT JOIN itemAnnotations annots ON atchs.itemID = annots.parentItemID\nWHERE\n atchs.parentItemID = $itemId\n AND libraryID = $libId\n AND ${ve("atchs.itemID")}\nGROUP BY atchs.itemID\n`,tn=class extends dr{sql(){return Sv}};var ot="betterbibtex",Bt="bbts";var Ov=`--sql\nSELECT\n citationkey as citekey\nFROM\n ${ot}.citationkey\nWHERE\n itemID = $itemID\n AND (libraryID IS NULL OR libraryID = $libId)\n`,Dv=`--sql\nSELECT\n citekey\nFROM\n ${Bt}.citekeys\nWHERE\n itemID = $itemID\n AND (libraryID IS NULL OR libraryID = $libId)\n`,rn=class extends Z{trxFunc=t=>t.reduce((r,[n,o])=>{let i=this.get({itemID:n,libId:o});return i&&(r[n]=i.citekey),r},{});trx=this.database.transaction(this.trxFunc);sql(){return Ov}query(t){return this.trx(t.items)}},nn=class extends Z{trxFunc=t=>t.reduce((r,[n,o])=>{let i=this.get({itemID:n,libId:o});return i&&(r[n]=i.citekey),r},{});trx=this.database.transaction(this.trxFunc);sql(){return Dv}query(t){return this.trx(t.items)}};var _v=`--sql\nSELECT\n itemID\nFROM\n ${ot}.citationkey\nWHERE\n citationkey = $citekey\n`,Tv=`--sql\nSELECT\n itemID\nFROM\n ${Bt}.citekeys\nWHERE\n citekey = $citekey\n`,on=class extends Z{trxFunc=t=>t.reduce((r,n)=>{let o=this.get({citekey:n});return r[n]=o?.itemID??-1,r},{});trx=this.database.transaction(this.trxFunc);sql(){return _v}query(t){return this.trx(t.citekeys)}},sn=class extends Z{trxFunc=t=>t.reduce((r,n)=>{let o=this.get({citekey:n});return r[n]=o?.itemID??-1,r},{});trx=this.database.transaction(this.trxFunc);sql(){return Tv}query(t){return this.trx(t.citekeys)}};var Uo=e=>`--sql\nSELECT\n itemID,\n creators.firstName,\n creators.lastName,\n creators.fieldMode,\n creatorTypes.creatorType,\n orderIndex\nFROM\n items\n LEFT JOIN itemCreators USING (itemID)\n JOIN creators USING (creatorID)\n JOIN creatorTypes USING (creatorTypeID)\nWHERE\n libraryID = $libId\n ${Ue(e||"itemID")}\n AND ${ve()}\nORDER BY\n itemID,\n orderIndex\n`;var KT=Uo(!0);function fl(e){for(var t={},r=e.length,n=0;nt.map(([r,n])=>[r,this.all({itemId:r,libId:n})]);trx=this.database.transaction(this.trxFunc);sql(){return Nv}query(t){return Ut(this.trx(t))}};var zo=e=>`--sql\nSELECT\n items.itemID,\n fieldsCombined.fieldName,\n itemDataValues.value\nFROM\n items\n JOIN itemData USING (itemID)\n JOIN itemDataValues USING (valueID)\n JOIN fieldsCombined USING (fieldID)\n JOIN itemTypesCombined USING (itemTypeID)\nWHERE\n libraryID = $libId\n ${Ue(e||"items.itemID")}\n AND itemTypesCombined.typeName NOT IN (${$o})\n AND ${ve()}\n`;var FN=zo(!0);var Cv=zo(!1),un=class extends Z{trxFunc=t=>t.map(([r,n])=>[r,this.all({itemId:r,libId:n})]);trx=this.database.transaction(this.trxFunc);sql(){return Cv}query(t){return Ut(this.trx(t))}};var cn=e=>`--sql\nSELECT\n items.libraryID,\n items.itemID,\n items.key,\n items.clientDateModified,\n items.dateAdded,\n items.dateModified,\n itemTypesCombined.typeName as itemType,\n json_group_array(collectionID) filter (where collectionID is not null) as collectionIDs\nFROM \n items\n JOIN itemTypesCombined USING (itemTypeID)\n LEFT JOIN collectionItems USING (itemID)\nWHERE \n libraryID = $libId\n ${e==="full"?Ue(!1):e==="id"?Ue("items.itemID"):Ue("items.key","$key")}\n AND ${ve()}\n AND itemType NOT IN (${$o})\nGROUP BY itemID\n`;var Av=cn("full"),ln=class extends Z{sql(){return Av}query(t){return this.all(t).map(({collectionIDs:n,...o})=>({...o,collectionIDs:JSON.parse(n)}))}};var Rv=cn("id"),Fv=cn("key"),fn=class extends Z{trxFunc=t=>t.reduce((r,[n,o])=>{let i=this.get({itemId:n,libId:o});return i&&(r[n]={...i,collectionIDs:JSON.parse(i.collectionIDs)}),r},{});trx=this.database.transaction(this.trxFunc);sql(){return Rv}query(t){return this.trx(t)}},pn=class extends Z{trxFunc=t=>t.reduce((r,[n,o])=>{let i=this.get({key:n,libId:o});return i&&(r[n]={...i,collectionIDs:JSON.parse(i.collectionIDs)}),r},{});trx=this.database.transaction(this.trxFunc);sql(){return Fv}query(t){return this.trx(t)}};var mn=e=>`--sql\nWITH\n RECURSIVE CollectionPath AS (\n -- Base case: collections without a parent\n SELECT\n collectionID,\n parentCollectionID,\n collectionName AS path\n FROM\n collections\n WHERE\n libraryID = $libId\n ${e==="full"?Ue(!1):e==="id"?Ue("collectionID","$collectionID"):Ue("key","$key")}\n AND ${ve("collectionID")}\n UNION ALL\n -- Recursive case: join with parent collections\n SELECT\n prev.collectionID,\n c.parentCollectionID,\n c.collectionName\n FROM\n collections c\n JOIN CollectionPath prev ON c.collectionID = prev.parentCollectionID\n )\nSELECT\n p.collectionID,\n json_group_array(p.path) path,\n c.key,\n c.collectionName,\n c.libraryID\nFROM\n CollectionPath p\n JOIN collections c USING (collectionID)\nGROUP BY\n collectionID\nORDER BY\n collectionID;\n`;function Gs({collectionID:e,collectionName:t,path:r,...n}){return{...n,id:e,name:t,path:JSON.parse(r)}}var ZN=mn("full");var $v=mn("id"),tC=mn("key"),dn=class extends Z{trxFunc=t=>t.reduce((r,[n,o])=>{let i=this.get({collectionID:n,libId:o});return i&&r.set(n,Gs(i)),r},new Map);trx=this.database.transaction(this.trxFunc);sql(){return $v}query(t){return this.trx(t)}};var Pv=`--sql\nSELECT\n libraries.libraryID,\n groups.groupID,\n CASE\n libraries.type\n WHEN \'user\' THEN \'My Library\'\n WHEN \'group\' THEN groups.name\n ELSE NULL\n END AS name\nFROM\n libraries\n LEFT JOIN groups USING (libraryID)\nWHERE\n libraries.libraryID IS NOT NULL\nORDER BY\n libraryID\n`,hn=class extends Po{sql(){return Pv}};var kv=`--sql\nSELECT\n tagID,\n type,\n name\nFROM\n itemTags\n JOIN items USING (itemID)\n JOIN tags USING (tagID)\nWHERE\n itemID = $itemId\n AND tagID IS NOT NULL\n AND libraryID = $libId\n`,gn=class extends Z{trxFunc=t=>t.map(([r,n])=>[r,this.all({itemId:r,libId:n})]);trx=this.database.transaction(this.trxFunc);sql(){return kv}query(t){return Ut(this.trx(t))}};var Mv=new Set(il()("creators","itemID","itemType","key","libraryID","collections"));var Qh=$r(Js(),1);var $d=$r(Js(),1),xi=$r(Fd(),1),rI="INFO",Pd=ol("db-worker",rI,xi.default),Ma="log4js_loglevel";$d.default.getItem(Ma).then(e=>{typeof e=="string"&&e in xi.levels&&(Pd.level=e,console.debug(`Read from localforage: loglevel ${e}`))});var ae=Pd;var yh=require("fs"),bh=$r(hh(),1);var bt=class extends Error{constructor(){super("Database not set")}},gh=e=>(0,yh.statSync)(e).mtimeMs,Bn=class{database=null;get instance(){return this.database?.instance}get databaseList(){return this.instance?.pragma("database_list")??[]}tableExists(t,r=""){if(!this.database)throw new bt;let n=r||"main",{exist:o}=(this.database.existStatements[n]??=this.database.instance.prepare(`SELECT count(*) AS exist FROM ${r?`${r}.`:""}sqlite_master WHERE type = \'table\' AND name = $tableName`)).get({tableName:t});return!!o}attachDatabase(t,r){if(!this.instance)throw new bt;this.instance.prepare(`ATTACH DATABASE $path AS ${r}`).run({path:t})}detachDatabase(t){if(!this.instance)throw new bt;this.instance.prepare(`DETACH DATABASE ${t}`).run()}isUpToDate(){return this.database?this.database.mtime===gh(this.database.file):null}opened=!1;open(t,r){try{return this.database?.instance&&(ae.debug("Database opened before, closing: ",this.database.instance.name),this.close()),this.database={mtime:gh(t),instance:AI(t,r),file:t,existStatements:{},prepared:new Map},ae.debug("Database opened: ",t),this.opened=!0,!0}catch(n){if(n.code!=="ENOENT")throw console.error("Failed to open database",t),n;return this.opened=!1,!1}}close(){this.opened=!1,this.instance?.close(),this.database=null}prepare(t){if(!this.database)throw new bt;let r=this.database.prepared.get(t);if(r)return r;let n=new t(this.database.instance);return this.database.prepared.set(t,n),n}};function AI(e,t){return new bh.default(`file:${e}?mode=ro&immutable=1`,{nativeBinding:t.nativeBinding,uriPath:!0,verbose:void 0})}function RI(e){return e.tableExists("citationkey",ot)}var Un=class{#e=null;get instance(){return this.status==="READY"?this.#e:null}get zotero(){if(!this.#e)throw new Error("database not ready");return this.#e.zotero}status="NOT_INITIALIZED";get loadStatus(){if(this.#e?.zotero.opened!==!0)return{main:!1,bbtMain:!1,bbtSearch:null};let t=this.#e.zotero.databaseList;return t.some(o=>o.name===ot)?this.#e.bbtAfterMigration?{main:!0,bbtMain:!0,bbtSearch:null}:{main:!0,bbtMain:!0,bbtSearch:t.some(o=>o.name===Bt)}:{main:!0,bbtMain:!1,bbtSearch:null}}get bbtLoadStatus(){let t=this.loadStatus;return t.bbtMain?t.bbtSearch!==!1:!1}getItemIDsFromCitekey(t){if(!this.#e)throw new bt;let r=this.#e.bbtAfterMigration?on:sn;return this.#e.zotero.prepare(r).query({citekeys:t})}getCitekeys(t){if(!this.#e)throw new bt;let r=this.#e.bbtAfterMigration?rn:nn;return this.#e.zotero.prepare(r).query({items:t})}load(t,r){let n={zotero:this.#e?.zotero??new Bn};try{let o=n.zotero.open(t.zotero,r);if(!o)throw new Error(`Failed to open main database, no database found at ${t.zotero}`);let i=FI(t,n.zotero),s=n.zotero.prepare(hn).query().reduce((a,u)=>(a[u.libraryID]=u,a),{});return this.#e={...n,bbtAfterMigration:i.bbtSearch===null,libraries:s},this.status="READY",{main:o,...i}}catch(o){throw this.status="ERROR",o}}groupOf(t){if(!this.#e)throw new Error("Library info not loaded");return this.#e.libraries[t].groupID}get libraries(){if(!this.#e)throw new Error("Library info not loaded");return Object.values(this.#e.libraries)}};function FI(e,t){try{t.attachDatabase(`file:${e.bbtMain}?mode=ro&immutable=1`,ot)}catch(n){let{code:o}=n;return o==="SQLITE_CANTOPEN"?ae.debug(`Unable to open bbt main database, no database found at ${e.bbtMain}`):ae.debug(`Unable to open bbt main database, ${o} @ ${e.bbtMain}`),{bbtMain:!1,bbtSearch:null}}if(RI(t))return{bbtMain:!0,bbtSearch:null};try{t.attachDatabase(`file:${e.bbtSearch}?mode=ro&immutable=1`,ot)}catch(n){let{code:o}=n;return o==="SQLITE_CANTOPEN"?ae.debug(`Unable to open bbt search database, no database found at ${e.bbtSearch}`):ae.debug(`Unable to open bbt search database, ${o} @ ${e.bbtSearch}`),{bbtMain:!0,bbtSearch:!1}}return{bbtMain:!0,bbtSearch:!0}}var xh=$r(wh(),1);var $I=e=>typeof e[0][0]=="string";function Eh(e){return[...new Set(e)]}var zn=class{#e=Ci;async get(t,r){if(t.length===0)return[];if(!r)return await Promise.all(t.map(([i,s])=>this.#t(i,s)));let n=$I(t)?this.#e.readItemByKey(t):this.#e.readItemById(t);return await this.#e.updateIndex(n),Object.values(n)}async#t(t,r){let n=await this.#e.getItemsCache(r);return typeof t=="number"?n.byId.get(t)??null:typeof t=="string"?n.byKey.get(t)??null:((0,xh.assertNever)(t),null)}};function Wn(){this.cache=null,this.matcher=null,this.stemmer=null,this.filter=null}Wn.prototype.add;Wn.prototype.append;Wn.prototype.search;Wn.prototype.update;Wn.prototype.remove;function Tr(e,t){return typeof e<"u"?e:t}function za(e){let t=new Array(e);for(let r=0;r1&&(e=Wa(e,this.stemmer)),n&&e.length>1&&(e=PI(e)),r||r==="")){let o=e.split(r);return this.filter?kI(o,this.filter):o}return e}var Th=/[\\p{Z}\\p{S}\\p{P}\\p{C}]+/u;function Nh(e){let t=H();for(let r=0,n=e.length;r=0;m--){let l=e[m],d=l.length,f=H(),g=!s;for(let w=0;w=0;m--){l=n[m],d=l.length;for(let f=0,g;f0;n--)this.queue[n]=this.queue[n-1];this.queue[0]=e}this.cache[e]=t};Fi.prototype.get=function(e){let t=this.cache[e];if(this.limit&&t){let r=this.queue.indexOf(e);if(r){let n=this.queue[r-1];this.queue[r-1]=this.queue[r],this.queue[r]=n}}return t};Fi.prototype.del=function(e){for(let t=0,r,n;t=this.minlength&&(a||!s[l])){let f=ki(u,o,m),g="";switch(this.tokenize){case"full":if(d>2){for(let w=0;ww;x--)if(x-w>=this.minlength){let S=ki(u,o,m,d,w);g=l.substring(w,x),this.push_index(s,g,S,e,r)}break}case"reverse":if(d>1){for(let w=d-1;w>0;w--)if(g=l[w]+g,g.length>=this.minlength){let x=ki(u,o,m,d,w);this.push_index(s,g,x,e,r)}g=""}case"forward":if(d>1){for(let w=0;w=this.minlength&&this.push_index(s,g,f,e,r);break}default:if(this.boost&&(f=Math.min(f/this.boost(t,l,m)|0,u-1)),this.push_index(s,l,f,e,r),a&&o>1&&m=this.minlength&&!w[l]){w[l]=1;let k=ki(x+(o/2>x?0:1),o,m,N-1,M-1),ee=this.bidirectional&&l>S;this.push_index(i,ee?S:l,k,e,r,ee?l:S)}}}}}this.fastupdate||(this.register[e]=1)}}return this};function ki(e,t,r,n,o){return r&&e>1?t+(n||0)<=e?r+(o||0):(e-1)/(t+(n||0))*(r+(o||0))+1|0:0}_e.prototype.push_index=function(e,t,r,n,o,i){let s=i?this.ctx:this.map;if((!e[t]||i&&!e[t][i])&&(this.optimize&&(s=s[r]),i?(e=e[t]||(e[t]=H()),e[i]=1,s=s[i]||(s[i]=H())):e[t]=1,s=s[t]||(s[t]=[]),this.optimize||(s=s[r]||(s[r]=[])),(!o||!s.includes(n))&&(s[s.length]=n,this.fastupdate))){let a=this.register[n]||(this.register[n]=[]);a[a.length]=s}};_e.prototype.search=function(e,t,r){r||(!t&&Ve(e)?(r=e,e=r.query):Ve(t)&&(r=t));let n=[],o,i,s,a=0;if(r&&(e=r.query||e,t=r.limit,a=r.offset||0,i=r.context,s=!0&&r.suggest),e&&(e=this.encode(""+e),o=e.length,o>1)){let d=H(),f=[];for(let g=0,w=0,x;g=this.minlength&&!d[x]){if(!this.optimize&&!s&&!this.map[x])return n;f[w++]=x,d[x]=1}e=f,o=e.length}if(!o)return n;t||(t=100);let u=this.depth&&o>1&&i!==!1,m=0,l;u?(l=e[0],m=1):o>1&&e.sort(Oh);for(let d,f;m=r)))));d++);if(m){if(o)return Uh(a,r,0);e[e.length]=a;return}}return!t&&a};function Uh(e,t,r){return e.length===1?e=e[0]:e=Sh(e),r||e.length>t?e.slice(r,r+t):e}function Bh(e,t,r,n){if(r){let o=n&&t>r;e=e[o?t:r],e=e&&e[o?r:t]}else e=e[t];return e}_e.prototype.contain=function(e){return!!this.register[e]};_e.prototype.update=function(e,t){return this.remove(e).add(e,t)};_e.prototype.remove=function(e,t){let r=this.register[e];if(r){if(this.fastupdate)for(let n=0,o;n1&&(e.splice(s,1),i++):i++}else{o=Math.min(e.length,r);for(let s=0,a;s"u"&&self.exports,o=this;this.worker=BI(r,n,e.worker),this.resolver=H(),this.worker&&(n?this.worker.on("message",function(i){o.resolver[i.id](i.msg),delete o.resolver[i.id]}):this.worker.onmessage=function(i){i=i.data,o.resolver[i.id](i.msg),delete o.resolver[i.id]},this.worker.postMessage({task:"init",factory:r,options:e}))}var Kh=Hn;Jn("add");Jn("append");Jn("search");Jn("update");Jn("remove");function Jn(e){Hn.prototype[e]=Hn.prototype[e+"Async"]=function(){let t=this,r=[].slice.call(arguments),n=r[r.length-1],o;Kn(n)&&(o=n,r.splice(r.length-1,1));let i=new Promise(function(s){setTimeout(function(){t.resolver[++Wh]=s,t.worker.postMessage({task:e,id:Wh,args:r})})});return o?(i.then(o),this):i}}function BI(factory,is_node_js,worker_path){let worker;try{worker=is_node_js?eval(\'new (require("worker_threads")["Worker"])("../dist/node/node.js")\'):factory?new Worker(URL.createObjectURL(new Blob(["onmessage="+zh.toString()],{type:"text/javascript"}))):new Worker(fe(worker_path)?worker_path:"worker/worker.js",{type:"module"})}catch(e){}return worker}function Te(e){if(!(this instanceof Te))return new Te(e);let t=e.document||e.doc||e,r;this.tree=[],this.field=[],this.marker=[],this.register=H(),this.key=(r=t.key||t.id)&&Li(r,this.marker)||"id",this.fastupdate=Tr(e.fastupdate,!0),!0&&(this.storetree=(r=t.store)&&r!==!0&&[],this.store=r&&H()),!0&&(this.tag=(r=t.tag)&&Li(r,this.marker),this.tagindex=r&&H()),!0&&(this.cache=(r=e.cache)&&new $i(r),e.cache=!1),!0&&(this.worker=e.worker),!0&&(this.async=!1),this.index=UI.call(this,e,t)}var Hh=Te;function UI(e,t){let r=H(),n=t.index||t.field||t;fe(n)&&(n=[n]);for(let o=0,i,s;o=0&&(e=e.substring(0,e.length-2),e&&(t[n]=!0)),e&&(r[n++]=e);return n1?r:r[0]}function Va(e,t){if(fe(t))e=e[t];else for(let r=0;e&&r1?r.splice(n,1):delete this.tagindex[t])}!0&&this.store&&delete this.store[e],delete this.register[e]}return this};Te.prototype.search=function(e,t,r,n){r||(!t&&Ve(e)?(r=e,e=""):Ve(t)&&(r=t,t=0));let o=[],i=[],s,a,u,m,l,d,f=0;if(r)if(rr(r))u=r,r=null;else{if(e=r.query||e,s=r.pluck,u=s||r.index||r.field,m=!0&&r.tag,a=!0&&this.store&&r.enrich,l=r.bool==="and",t=r.limit||t||100,d=r.offset||0,m&&(fe(m)&&(m=[m]),!e)){for(let w=0,x;w1||m&&m.length>1);let g=!n&&(this.worker||this.async)&&[];for(let w=0,x,S,N;w0)return(i>t||r)&&(o=o.slice(r,r+t)),n&&(o=Jh.call(this,o)),{tag:e,result:o}}function Jh(e){let t=new Array(e.length);for(let r=0,n;r{e=n,t=o});return{resolve:e,reject:t,promise:r}}var Vn=class{#e=Ar;readCitekeys(t){if(ae.debug("Reading Better BibTex database"),!this.#e.bbtLoadStatus)return ae.info("Better BibTex database not enabled, skipping..."),[];let r=this.#e.getCitekeys(t);return ae.info("Finished reading Better BibTex"),r}toItemObjects(t,r){let n=this.readCitekeys(r),o=this.#e.zotero.prepare(un).query(r),i=this.#e.zotero.prepare(an).query(r),s=Eh(r.flatMap(([u])=>t[u]?.collectionIDs?.map(m=>`${m}-${t[u].libraryID}`)??[])).filter(u=>u!==null),a=this.#e.zotero.prepare(dn).query(s.map(u=>u.split("-").map(m=>+m)));return r.reduce((u,[m,l])=>{if(!m)return u;let d=n[m];d||ae.warn(`Citekey: No item found for itemID ${m}`,d);let f=o[m].reduce((N,M)=>{let{value:k}=M;return M.fieldName==="date"&&(k=nl(k).split("-")[0]),(N[M.fieldName]??=[]).push(k),N},{}),{collectionIDs:g,...w}=t[m],x=g.map(N=>a.get(N)).filter(N=>N!==void 0),S={...w,libraryID:l,groupID:this.#e.groupOf(l),itemID:m,creators:i[m],collections:x,citekey:n[m],...f,dateAccessed:HI(f)?JI(f.accessDate[0]):null};return u[m]=S,u},{})}};function HI(e){let t=e;return Array.isArray(t.accessDate)&&t.accessDate.length===1&&typeof t.accessDate[0]=="string"}function JI(e){let t=e.replace(" ","T")+"Z";try{return new Date(t)}catch{return null}}var Yn=class{#e=Ar;#t=new Vn;#r=new Hh({worker:!0,charset:Ch,language:Vh,document:{id:"itemID",index:["title","creators[]:firstName","creators[]:lastName","date"]},tokenize:"full",suggest:!0});#o=new Map;#n=new Map;getStatus(t){if(!this.#n.has(t)){let n=Yh();return this.#n.set(t,n),n.promise}let r=this.#n.get(t);return r instanceof Promise||typeof r=="string"?r:r.promise}load(t){let r=this.#n.get(t);if(r instanceof Promise)return r;let n=this.#a(t),o=this.#u(t,n).then(()=>{this.#n.set(t,"READY")}).catch(i=>{throw this.#n.set(t,"ERROR"),i});return typeof r=="string"||!r||o.then(r.resolve,r.reject),this.#n.set(t,o),o}async searchItems(t,r){return await this.#i(t),await this.#r.searchAsync(r)}async getCachedItems(t,r){await this.#i(r);let n=this.#o.get(r);if(!n)throw new Error("Cache not initialized");let o=[...n.byId.values()].sort((i,s)=>s.dateAccessed&&i.dateAccessed?s.dateAccessed.getTime()-i.dateAccessed.getTime():0);return t<=0?o:o.slice(0,t)}async getItemsCache(t){await this.#i(t);let r=this.#o.get(t);if(!r)throw new Error("Cache not initialized");return r}async#i(t){let r=this.getStatus(t);if(r==="ERROR")throw new Error("Indexing failed");r instanceof Promise&&await r}#a(t){ae.debug("Reading main Zotero database for index");let{zotero:r}=this.#e,n=this.#s(r.prepare(ln).query({libId:t}));return ae.info("Finished reading main Zotero database for index"),n}readItemByKey(t){let{zotero:r}=this.#e,n=r.prepare(pn).query(t);return this.#s(t.map(([i])=>n[i]))}readItemById(t){let{zotero:r}=this.#e,n=r.prepare(fn).query(t);return this.#s(t.map(([i])=>n[i]))}#s(t){let r=t.reduce((o,i)=>(o[i.itemID]=i,o),{}),n=t.map(o=>[o.itemID,o.libraryID]);return this.#t.toItemObjects(r,n)}async#u(t,r){ae.trace("Start flexsearch indexing");let n=Object.values(r),o=this.#o.get(t);if(this.#o.set(t,{byId:new Map(n.map(i=>[i.itemID,i])),byKey:new Map(n.map(i=>[Ls(i,!0),i]))}),!o)await Promise.all([...n.map(i=>this.#r.addAsync(i.itemID,i))]);else{let i=new Set(n.map(a=>a.itemID)),s=[...o.byId.keys()].filter(a=>!i.has(a));o.byId.clear(),o.byKey.clear(),await Promise.all([...n.map(a=>this.#r.addAsync(a.itemID,a)),...s.map(a=>this.#r.removeAsync(a))])}ae.info("Library citation index done: "+t)}async updateIndex(t){await Promise.all(Object.values(t).map(async r=>{let n=this.#o.get(r.libraryID);if(!n)throw new Error("Cannot update index for library not initialized");n.byId.set(r.itemID,r),n.byKey.set(Ls(r,!0),r),await this.#r.updateAsync(r.itemID,r)}))}};var Ar=new Un,Ci=new Yn,Zh=new zn;function nr(e,t){return(...r)=>{ae.debug(`Reading Zotero database for ${typeof t=="string"?t:t(null,...r)}`);let n=e.apply(null,r);return Promise.resolve(n).then(o=>ae.debug(`Finished reading Zotero database for ${typeof t=="string"?t:t(o,...r)}`)),n}}var Qa=class{#e=Ar;#t=Ci;#r=Zh;api={getLibs:()=>this.#e.libraries,initIndex:async t=>{await this.#t.load(t)},openDb:(...t)=>this.#e.load(...t),search:async(t,r)=>await this.#t.searchItems(t,r),getItems:async(t,r)=>await this.#r.get(t,r),getTags:nr(t=>this.#e.zotero.prepare(gn).query(t),"tags"),getItemIDsFromCitekey:t=>this.#e.getItemIDsFromCitekey(t),getItemsFromCache:(t,r)=>this.#t.getCachedItems(t,r),getAttachments:nr((t,r)=>this.#e.zotero.prepare(tn).query({itemId:t,libId:r}),(t,r)=>`attachments of item ${r}`+(t?`, count: ${t.length}`:"")),getAnnotations:nr((t,r)=>this.#e.zotero.prepare(Qr).query({attachmentId:t,libId:r,groupID:this.#e.groupOf(r)}),(t,r)=>`annotations of attachment ${r}`+(t?`, count: ${t.length}`:"")),getAnnotFromKey:nr((t,r)=>this.#e.zotero.prepare(Zr).query({annotKeys:t,libId:r,groupID:this.#e.groupOf(r)}),(t,r)=>`annotations with keys: ${r.join(",")}`+(t?`, count: ${t.length}`:"")),getNotes:nr((t,r)=>this.#e.zotero.prepare(en).query({itemID:t,libId:r,groupID:this.#e.groupOf(r)}),(t,r)=>`notes of literature ${r}`+(t?`, count: ${t.length}`:"")),getNoteFromKey:nr((t,r)=>this.#e.zotero.prepare(Xr).query({noteKeys:t,libId:r,groupID:this.#e.groupOf(r)}),(t,r)=>`notes with keys: ${r.join(",")}`+(t?`, count: ${t.length}`:"")),isUpToDate:()=>this.#e.zotero.isUpToDate(),getLoadStatus:()=>{let t=this.#e.loadStatus;return{main:t.main,bbt:this.#e.bbtLoadStatus,bbtVersion:t.bbtSearch===null?"v1":"v0"}},raw:(t,r,n)=>{let{zotero:{instance:o}}=this.#e;if(!o)throw new Error("failed to query raw: no main database opened");return o.prepare(r)[t](...n)},setLoglevel:t=>{ae.level=t,Qh.default.setItem(Ma,t)}};toAPI(){return al(this.api)}},VI=new Qa;new Yr(VI.toAPI());\n/*! Bundled license information:\n\nlocalforage/dist/localforage.js:\n (*!\n localForage -- Offline Storage, Improved\n Version 1.10.0\n https://localforage.github.io/localForage\n (c) 2013-2017 Mozilla, Apache License 2.0\n *)\n\nflatted/cjs/index.js:\n (*! (c) 2020 Andrea Giammarchi *)\n*/\n';var wh=class extends bi{initWebWorker(){return E1(r_,{name:"zotlit database worker"})}},sl=class extends vi{workerCtor(){return new wh}};var Rt=class extends ue{settings=this.use(de);app=this.use(Cn.App);plugin=this.use(be);server=this.use(Ur);get zoteroDataDir(){return this.settings.current?.zoteroDataDir}onload(){W.debug("loading DatabaseWorker"),this.settings.once(async()=>{let t=(0,Cn.debounce)(()=>this.refresh({task:"dbConn"}),500,!0);this.registerEvent(this.app.vault.on("zotero:db-updated",()=>t()));let r=process.hrtime();await this.initialize(),W.debug(`ZoteroDB Initialization complete. Took ${(0,n_.default)(process.hrtime(r))}`);let n=this.genAutoRefresh(this.plugin);this.registerEvent(this.server.on("bg:notify",async(o,i)=>{i.event==="regular-item/update"&&n(i)})),this.plugin.addCommand({id:"refresh-zotero-data",name:"Refresh Zotero data",callback:async()=>{await this.refresh({task:"full"})}}),this.plugin.addCommand({id:"refresh-zotero-search-index",name:"Refresh Zotero search index",callback:async()=>{await this.refresh({task:"searchIndex"})}})}),this.register(qe(Qe(async()=>{this.status===0?await this.initialize():await this.refresh({task:"full"})},()=>this.zoteroDataDir))),this.register(qe(Qe(async()=>{await this.refresh({task:"searchIndex",force:!0}),new Cn.Notice("Zotero search index updated.")},()=>this.settings.libId,!0)))}genAutoRefresh(t){let r=!1,n=null,o=()=>{n&&(W.debug("unregistering db refresh watcher"),n(),n=null)},i=(0,Cn.debounce)(async()=>{if(o(),W.debug("Auto Refreshing Zotero Search Index"),!r){r=!1;try{W.debug("Db not refreshed, waiting before auto refresh");let[s]=Dm(t.app,{timeout:1e4});await s}catch(s){if(s instanceof js){W.warn("no db refreshed event received in 10s, skip refresh search index");return}else{console.error("error while waiting for db refresh during execute",s);return}}}await this.refresh({task:"searchIndex",force:!0}),W.debug("Auto Refreshing Zotero Search Index Success")},5e3,!0);return s=>{if(W.debug(`Request to auto refresh search index: (refreshed ${r})`,s),i(),o(),r)return;W.debug("watching db refresh while waiting for search index auto refresh");let[a,u]=Dm(t.app,{timeout:null});n=u,a.then(()=>{W.debug("db refresh while requesting auto refresh search index"),r=!0,n=null}).catch(l=>{l instanceof Ls||console.error("error while waiting for db refresh during request",l)})}}async onunload(){await this.#e.terminate(),this.#t=0,this.#o=null}#e=new sl({minWorkers:1,maxWorkers:1});get api(){return this.#e.proxy}#t=0;get status(){return this.#t}#r=null;async#n(t){let r=this.settings.libId;return!t&&this.#r===r?(W.debug(`Skipping search index init, lib ${r} already indexed`),!1):(await this.api.initIndex(r),this.#r=r,W.debug(`Search index init complete for lib ${r}`),!0)}async#i(){let[t,r]=this.settings.dbConnParams,{main:n,bbtMain:o,bbtSearch:i}=await this.api.openDb(t,r);if((!o||i===!1)&&W.debug("Failed to open Better BibTeX database, skipping..."),!n)throw new Error("Failed to init ZoteroDB")}async initialize(){if(this.#t!==0)throw new Error("Calling init on already initialized db, use refresh instead");await this.#i(),this.app.vault.trigger("zotero:db-ready"),await this.#n(!0),this.app.metadataCache.trigger("zotero:search-ready"),W.info("ZoteroDB Initialization complete."),this.#t=2}#s=null;#o=null;refresh(t){if(this.#t===0)return Promise.reject(new Error("Calling refresh on uninitialized database"));if(this.#t===2){this.#t=1;let r=(async()=>{t.task==="dbConn"?await this.#a():t.task==="searchIndex"?await this.#u(t.force):t.task==="full"?await this.#c():(0,Eh.assertNever)(t),this.#t=2;let n=this.#o;n&&(this.#o=null,await this.refresh(n))})();return this.#s=r}else{if(this.#t===1)return this.#s?(this.#o=this.#l(t),this.#s):Promise.reject(new Error("Other task in pending state"));(0,Eh.assertNever)(this.#t)}}async#a(){await this.#i(),this.app.vault.trigger("zotero:db-refresh")}async#u(t=!1){await this.#n(t)&&this.app.metadataCache.trigger("zotero:search-refresh")}async#c(){await this.#a(),await this.#u(!0),new Cn.Notice("ZoteroDB Refresh complete.")}#l(t){if(!this.#o)return t;let r=this.#o;return r.task==="full"?r:r.task===t.task?r.task==="searchIndex"?{...r,force:r.force||t.force}:r:{task:"full"}}};le([fe],Rt.prototype,"zoteroDataDir",1);var o_="INFO",i_="log4js_loglevel",Cz=()=>{let e=localStorage.getItem(i_);return typeof e=="string"&&e in al.levels?(console.debug(`Read from localstorage: loglevel ${e}`),e):o_},Sh=Xv("main",Cz(),al.default),W=Sh,it=(e,t,...r)=>{if(!t){Sh.error(e,...r);return}Sh.error(e,t instanceof Error?t.message:String(t),...r),console.error(t)},h1={logLevel:o_},na=class extends ue{settings=this.use(de);get level(){return this.settings.current?.logLevel}async applyLogLevel(){localStorage.setItem(i_,this.level),await this.use(Rt).api.setLoglevel(this.level)}onload(){this.register(qe(Qe(()=>this.applyLogLevel(),()=>this.level)))}};le([fe],na.prototype,"level",1);var qC=require("fs"),Jr=require("obsidian");S();var ve={},Ii=Symbol(),uC=e=>!!e[Ii],iC=e=>!e[Ii].c,ca=e=>{var t;let{b:r,c:n}=e[Ii];n&&(n(),(t=Kz.get(r))==null||t())},gl=(e,t)=>{let r=e[Ii].o,n=t[Ii].o;return r===n||e===n||uC(r)&&gl(r,t)},sC=(e,t)=>{let r={b:e,o:t,c:null},n=new Promise(o=>{r.c=()=>{r.c=null,o()},t.finally(r.c)});return n[Ii]=r,n},Kz=new WeakMap;var hl=e=>"init"in e,jh="r",Lh="w",la="c",qh="s",aC="h",Vz="n",Gz="l",Jz="a",Zz="m",Yz=e=>{let t=new WeakMap,r=new WeakMap,n=new Map,o,i;if((ve.env&&ve.env.MODE)!=="production"&&(o=new Set,i=new Set),e)for(let[E,x]of e){let O={v:x,r:0,y:!0,d:new Map};(ve.env&&ve.env.MODE)!=="production"&&(Object.freeze(O),hl(E)||console.warn("Found initial value for derived atom which can cause unexpected behavior",E)),t.set(E,O)}let s=new WeakMap,a=(E,x,O)=>{let A=s.get(x);A||(A=new Map,s.set(x,A)),O.then(()=>{A.get(E)===O&&(A.delete(E),A.size||s.delete(x))}),A.set(E,O)},u=E=>{let x=new Set,O=s.get(E);return O&&(s.delete(E),O.forEach((A,k)=>{ca(A),x.add(k)})),x},l=new WeakMap,c=E=>{let x=l.get(E);return x||(x=new Map,l.set(E,x)),x},f=(E,x)=>{if(E){let O=c(E),A=O.get(x);return A||(A=f(E.p,x),A&&"p"in A&&iC(A.p)&&(A=void 0),A&&O.set(x,A)),A}return t.get(x)},p=(E,x,O)=>{if((ve.env&&ve.env.MODE)!=="production"&&Object.freeze(O),E)c(E).set(x,O);else{let A=t.get(x);t.set(x,O),n.has(x)||n.set(x,A)}},d=(E,x=new Map,O)=>{if(!O)return x;let A=new Map,k=!1;return O.forEach(N=>{var z;let te=((z=f(E,N))==null?void 0:z.r)||0;A.set(N,te),x.get(N)!==te&&(k=!0)}),x.size===A.size&&!k?x:A},h=(E,x,O,A,k)=>{let N=f(E,x);if(N){if(k&&(!("p"in N)||!gl(N.p,k)))return N;"p"in N&&ca(N.p)}let z={v:O,r:N?.r||0,y:!0,d:d(E,N?.d,A)},te=!N?.y;return!N||!("v"in N)||!Object.is(N.v,O)?(te=!0,++z.r,z.d.has(x)&&(z.d=new Map(z.d).set(x,z.r))):z.d!==N.d&&(z.d.size!==N.d.size||!Array.from(z.d.keys()).every(vr=>N.d.has(vr)))&&(te=!0,Promise.resolve().then(()=>{D(E)})),N&&!te?N:(p(E,x,z),z)},b=(E,x,O,A,k)=>{let N=f(E,x);if(N){if(k&&(!("p"in N)||!gl(N.p,k)))return N;"p"in N&&ca(N.p)}let z={e:O,r:(N?.r||0)+1,y:!0,d:d(E,N?.d,A)};return p(E,x,z),z},y=(E,x,O,A)=>{let k=f(E,x);if(k&&"p"in k){if(gl(k.p,O))return k.y?k:{...k,y:!0};ca(k.p)}a(E,x,O);let N={p:O,r:(k?.r||0)+1,y:!0,d:d(E,k?.d,A)};return p(E,x,N),N},v=(E,x,O,A)=>{if(O instanceof Promise){let k=sC(O,O.then(N=>{h(E,x,N,A,k)}).catch(N=>{if(N instanceof Promise)return uC(N)?N.then(()=>{T(E,x,!0)}):N;b(E,x,N,A,k)}));return y(E,x,k,A)}return h(E,x,O,A)},w=(E,x)=>{let O=f(E,x);if(O){let A={...O,y:!1};p(E,x,A)}else(ve.env&&ve.env.MODE)!=="production"&&console.warn("[Bug] could not invalidate non existing atom",x)},T=(E,x,O)=>{if(!O){let k=f(E,x);if(k){if(k.y&&"p"in k&&!iC(k.p))return k;if(k.d.forEach((N,z)=>{if(z!==x)if(!r.has(z))T(E,z);else{let te=f(E,z);te&&!te.y&&T(E,z)}}),Array.from(k.d).every(([N,z])=>{let te=f(E,N);return te&&!("p"in te)&&te.r===z}))return k.y?k:{...k,y:!0}}}let A=new Set;try{let k=x.read(N=>{A.add(N);let z=N===x?f(E,N):T(E,N);if(z){if("e"in z)throw z.e;if("p"in z)throw z.p;return z.v}if(hl(N))return N.init;throw new Error("no atom init")});return v(E,x,k,A)}catch(k){if(k instanceof Promise){let N=sC(k,k);return y(E,x,N,A)}return b(E,x,k,A)}},M=(E,x)=>T(x,E),V=(E,x)=>{let O=r.get(x);return O||(O=_(E,x)),O},J=(E,x)=>!x.l.size&&(!x.t.size||x.t.size===1&&x.t.has(E)),G=(E,x)=>{let O=r.get(x);O&&J(x,O)&&I(E,x)},K=(E,x)=>{let O=r.get(x);O?.t.forEach(A=>{A!==x&&(w(E,A),K(E,A))})},P=(E,x,O)=>{let A=!0,k=(te,vr)=>{let sr=T(E,te);if("e"in sr)throw sr.e;if("p"in sr){if(vr?.unstable_promise)return sr.p.then(()=>{let Fu=f(E,te);return Fu&&"p"in Fu&&Fu.p===sr.p?new Promise(wd=>setTimeout(wd)).then(()=>k(te,vr)):k(te,vr)});throw(ve.env&&ve.env.MODE)!=="production"&&console.info("Reading pending atom state in write operation. We throw a promise for now.",te),sr.p}if("v"in sr)return sr.v;throw(ve.env&&ve.env.MODE)!=="production"&&console.warn("[Bug] no value found while reading atom in write operation. This is probably a bug.",te),new Error("no value found")},N=(te,vr)=>{let sr;if(te===x){if(!hl(te))throw new Error("atom not writable");u(te).forEach(Tv=>{Tv!==E&&v(Tv,te,vr)});let wd=f(E,te),lj=v(E,te,vr);wd!==lj&&K(E,te)}else sr=P(E,te,vr);return A||D(E),sr},z=x.write(k,N,O);return A=!1,z},X=(E,x,O)=>{let A=P(O,E,x);return D(O),A},C=E=>!!E.write,_=(E,x,O)=>{let A={t:new Set(O&&[O]),l:new Set};if(r.set(x,A),(ve.env&&ve.env.MODE)!=="production"&&i.add(x),T(void 0,x).d.forEach((N,z)=>{let te=r.get(z);te?te.t.add(x):z!==x&&_(E,z,x)}),C(x)&&x.onMount){let N=te=>X(x,te,E),z=x.onMount(N);E=void 0,z&&(A.u=z)}return A},I=(E,x)=>{var O;let A=(O=r.get(x))==null?void 0:O.u;A&&A(),r.delete(x),(ve.env&&ve.env.MODE)!=="production"&&i.delete(x);let k=f(E,x);k?("p"in k&&ca(k.p),k.d.forEach((N,z)=>{if(z!==x){let te=r.get(z);te&&(te.t.delete(x),J(z,te)&&I(E,z))}})):(ve.env&&ve.env.MODE)!=="production"&&console.warn("[Bug] could not find atom state to unmount",x)},B=(E,x,O,A)=>{let k=new Set(O.d.keys());A?.forEach((N,z)=>{if(k.has(z)){k.delete(z);return}let te=r.get(z);te&&(te.t.delete(x),J(z,te)&&I(E,z))}),k.forEach(N=>{let z=r.get(N);z?z.t.add(x):r.has(x)&&_(E,N,x)})},D=E=>{if(E){c(E).forEach((O,A)=>{let k=t.get(A);if(O!==k){let N=r.get(A);N?.l.forEach(z=>z(E))}});return}for(;n.size;){let x=Array.from(n);n.clear(),x.forEach(([O,A])=>{let k=f(void 0,O);if(k&&k.d!==A?.d&&B(void 0,O,k,A?.d),A&&!A.y&&k?.y)return;let N=r.get(O);N?.l.forEach(z=>z())})}(ve.env&&ve.env.MODE)!=="production"&&o.forEach(x=>x())},re=E=>{c(E).forEach((O,A)=>{let k=t.get(A);(!k||O.r>k.r||O.y!==k.y||O.r===k.r&&O.d!==k.d)&&(t.set(A,O),O.d!==k?.d&&B(E,A,O,k?.d))})},oe=(E,x)=>{x&&re(x),D(void 0)},me=(E,x,O)=>{let k=V(O,E).l;return k.add(x),()=>{k.delete(x),G(O,E)}},ae=(E,x)=>{for(let[O,A]of E)hl(O)&&(v(x,O,A),K(x,O));D(x)};return(ve.env&&ve.env.MODE)!=="production"?{[jh]:M,[Lh]:X,[la]:oe,[qh]:me,[aC]:ae,[Vz]:E=>(o.add(E),()=>{o.delete(E)}),[Gz]:()=>i.values(),[Jz]:E=>t.get(E),[Zz]:E=>r.get(E)}:{[jh]:M,[Lh]:X,[la]:oe,[qh]:me,[aC]:ae}};var cC=(e,t)=>({s:t?t(e).SECRET_INTERNAL_store:Yz(e)}),Mh=new Map,Bh=e=>(Mh.has(e)||Mh.set(e,Le(cC())),Mh.get(e)),lC=({children:e,initialValues:t,scope:r,unstable_createStore:n,unstable_enableVersionedWrite:o})=>{let[i,s]=j({});U(()=>{let l=a.current;l.w&&(l.s[la](null,i),delete i.p,l.v=i)},[i]);let a=F();if(!a.current){let l=cC(t,n);if(o){let c=0;l.w=f=>{s(p=>{let d=c?p:{p};return f(d),d})},l.v=i,l.r=f=>{++c,f(),--c}}a.current=l}let u=Bh(r);return H(u.Provider,{value:a.current},e)},Xz=0;function Ft(e,t){let r=`atom${++Xz}`,n={toString:()=>r};return typeof e=="function"?n.read=e:(n.init=e,n.read=o=>o(n),n.write=(o,i,s)=>i(n,typeof s=="function"?s(o(n)):s)),t&&(n.write=t),n}function lt(e,t){let r=Bh(t),n=Q(r),{s:o,v:i}=n,s=p=>{let d=o[jh](e,p);if((ve.env&&ve.env.MODE)!=="production"&&!d.y)throw new Error("should not be invalidated");if("e"in d)throw d.e;if("p"in d)throw d.p;if("v"in d)return d.v;throw new Error("no atom value")},[[a,u,l],c]=Nr((p,d)=>{let h=s(d);return Object.is(p[1],h)&&p[2]===e?p:[d,h,e]},i,p=>{let d=s(p);return[p,d,e]}),f=u;return l!==e&&(c(a),f=s(a)),U(()=>{let{v:p}=n;p&&o[la](e,p);let d=o[qh](e,c,p);return c(p),d},[o,e,n]),U(()=>{o[la](e,a)}),go(f),f}function zh(e,t){let r=Bh(t),{s:n,w:o}=Q(r);return Y(s=>{if((ve.env&&ve.env.MODE)!=="production"&&!("write"in e))throw new Error("not writable atom");let a=u=>n[Lh](e,s,u);return o?o(a):a()},[n,o,e])}var jC=require("obsidian");S();var fC=()=>{let e=[];return{get:()=>e,set:(n,o)=>{e.push([n,o])}}};var Dr=Ft(null),Uh=Ft(e=>{let{arch:t,platform:r,modules:n}=e(Dr).platform;return`${r}-${t}-${n}.node.gz`}),fa=Ft(e=>`https://github.com/aidenlx/better-sqlite3/releases/download/${e(Dr).binaryVersion}/${e(Uh)}`),Bfe=Ft(e=>e(fa).replace("github.com","download.fastgit.org")),yl=Ft(e=>ai(e(Dr).manifest)),pC=Ft(e=>e(Dr).mode);var $C=ge(si(),1);S();var dC=function(e){return function(t,r){var n=F(!1);e(function(){return function(){n.current=!1}},[]),e(function(){if(!n.current)n.current=!0;else return t()},r)}};function On(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),o,i=[],s;try{for(;(t===void 0||t-- >0)&&!(o=n.next()).done;)i.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(s)throw s.error}}return i}S();var pa=function(e){return typeof e=="function"};var mC=function(e){return typeof e>"u"};var Qz=!1,hC=Qz;function e9(e){hC&&(pa(e)||console.error("useMemoizedFn expected parameter is a function, got ".concat(typeof e)));var t=F(e);t.current=ne(function(){return e},[e]);var r=F();return r.current||(r.current=function(){for(var n=[],o=0;o{let t=F(null);return[Y(n=>{t.current&&t.current.empty(),n&&(0,xC.setIcon)(n,e),t.current=n},[e])]};wi();wi();var n9=0;function m(e,t,r,n,o){var i,s,a={};for(s in t)s=="ref"?i=t[s]:a[s]=t[s];var u={type:e,props:a,key:r,ref:i,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:--n9,__source:o,__self:n};if(typeof e=="function"&&(i=e.defaultProps))for(s in i)a[s]===void 0&&(a[s]=i[s]);return q.vnode&&q.vnode(u),u}var da=({name:e,desc:t,button:r,onClick:n,icon:o,className:i,...s})=>m("div",{className:_i("setting-item",i),...s,children:[o&&m("div",{className:"setting-icon",children:o}),m("div",{className:"setting-item-info",children:[m("div",{className:"setting-item-name",children:e}),m("div",{className:"setting-item-description",children:t})]}),m("div",{className:"setting-item-control",children:r&&m("button",{className:"mod-cta",onClick:n,children:r})})]});S();var o9=()=>m("svg",{className:"icon-blank svg-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",height:"32",width:"32"}),i9=()=>m("svg",{className:"icon-spin svg-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",height:"32",width:"32",children:[m("path",{opacity:".25",d:"M16 0 A16 16 0 0 0 16 32 A16 16 0 0 0 16 0 M16 4 A12 12 0 0 1 16 28 A12 12 0 0 1 16 4"}),m("path",{d:"M16 0 A16 16 0 0 1 32 16 L28 16 A12 12 0 0 0 16 4z",children:m("animateTransform",{attributeName:"transform",type:"rotate",from:"0 16 16",to:"360 16 16",dur:"0.8s",repeatCount:"indefinite"})})]}),wC=({color:e="var(--icon-color, black)",delay:t=0,height:r=16,width:n=16,style:o,...i})=>{let[s,a]=j(t>0);return U(()=>{let u=-1;return s&&(u=window.setTimeout(()=>{a(!1)},t)),()=>{window.clearTimeout(u)}},[]),m("div",{style:{...o,fill:e,height:Number(r)||r,width:Number(n)||n},...i,children:s?m(o9,{}):m(i9,{})})};var SC=require("fs"),IC=require("fs/promises"),_C=require("stream"),Gh=require("stream/promises"),CC=require("zlib"),f9=require("@electron/remote");var bl=class extends Error{},Kh=class extends bl{},Vh=class extends bl{},s9=(e,t=",")=>e.join(t),a9={accept:"*",multiple:!1,strict:!1},EC=e=>{let{accept:t,multiple:r,strict:n}={...a9,...e},o=l9({multiple:r,accept:Array.isArray(t)?s9(t):t});return new Promise(i=>{o.onchange=()=>{i(u9(o.files,r,n)),o.remove()},o.click()})},u9=(e,t,r)=>new Promise((n,o)=>{if(!e)return o(new Kh);let i=c9(e,t,r);if(!i)return o(new Vh);n(i)}),c9=(e,t,r)=>!t&&r?e.length===1?e[0]:null:e.length?e:null,l9=({accept:e,multiple:t})=>{let r=document.createElement("input");return r.type="file",r.multiple=t,r.accept=e,r};var TC=require("obsidian"),vl=async(e,t,r)=>{let n=_C.Readable.from(Buffer.from(e)),o=(0,SC.createWriteStream)(t);try{r?await(0,Gh.pipeline)(n,o):await(0,Gh.pipeline)(n,(0,CC.createGunzip)(),o)}catch(i){throw o.destroy(),await(0,IC.rm)(t,{force:!0}),i}},OC=async()=>{let e=await EC({multiple:!1,accept:[".gz",".node"],strict:!0});return e?{decompressed:!e.name.endsWith(".gz"),arrayBuffer:await e.arrayBuffer()}:null},AC=async e=>(await fetch(e,{method:"HEAD"})).status,kC=async e=>(await(0,TC.requestUrl)({url:e})).arrayBuffer;var NC=(i=>(i[i.Idle=0]="Idle",i[i.Downloading=1]="Downloading",i[i.Importing=2]="Importing",i[i.Success=3]="Success",i[i.Failed=4]="Failed",i))(NC||{}),Ci=Ft(0),p9=Ft(e=>e(Ci)===4),RC=Ft(null),d9=Ft(e=>{switch(e(Ci)){case 0:return null;case 1:return"Downloading...";case 2:return"Importing...";case 3:return"Module successfully installed";case 4:return`Module install failed: ${e(RC)}`;default:break}}),m9=Ft(null,(e,t,[r,n])=>{t(Ci,4);let o="Failed to install module when "+NC[r];it(o,n),t(RC,o+": "+(n instanceof Error?n.message:`${n}`))}),h9=()=>{let e=zh(Ci),t=zh(m9),r=lt(fa),n=lt(yl);return $t(async()=>{if(!n){t([0,new Error("Cannot find binary version")]);return}e(1);let o;try{if(await AC(r)===404)throw new Error(`Requested module not available (${r}), please open an issue on GitHub`);o=await kC(r)}catch(i){t([1,i]);return}e(2);try{await vl(o,n,!1)}catch(i){t([2,i]);return}e(3)})},DC=()=>{let e=lt(Ci),t=lt(d9),r=lt(Dr),n=h9();return m("div",{className:"zt-auto-install",children:[m(da,{name:"Auto Install",desc:"Recommended",button:e===0?"Install":void 0,onClick:n}),e!==0&&m(da,{className:_i("zt-auto-install-status",{"mod-warning":e===4,"mod-success":e===3}),icon:m(y9,{}),name:t,button:e===3?"Reload Plugin":void 0,onClick:()=>r.reloadPlugin()})]})},g9=()=>{let e=lt(p9),[t]=St(e?"slash":"check");return m("div",{className:"zt-install-done-icon",style:{display:"contents"},ref:t})},y9=()=>{switch(lt(Ci)){case 0:return null;case 1:case 2:return m(wC,{className:"zt-install-spin-icon",style:{display:"contents"}});case 3:case 4:return m(g9,{})}};var PC=require("obsidian");S();var b9=async e=>{try{let t=await OC();return t?(await vl(t.arrayBuffer,e,t.decompressed),!0):(W.info("No file selected, skip import module"),!1)}catch(t){return new PC.Notice(`Failed to import module from ${e}: ${t}`),it("import module "+e,t),!1}},v9=()=>{let[e,t]=j(!1),r=lt(yl),n=async()=>{if(!r)return;await b9(r)&&t(!0)},o=lt(fa),i=lt(Uh),s=lt(Dr);return m("ol",{children:[m("li",{children:["Download ",m("code",{children:".node.gz"})," file from"," ",m("a",{href:o,children:"GitHub"}),"."]}),m("li",{children:["Select downloaded ",m("code",{children:i})," or uncompressed"," ",m("code",{children:"better-sqlite3.node"}),"to install:",m(x9,{onClick:n,done:e})]}),m("li",{children:["Reload ZotLit:",m(w9,{onClick:()=>s.reloadPlugin()})]})]})},FC=()=>{let[e,t]=j(!1);return m("div",{className:"zt-manual-install",children:[m(da,{name:"Manual Install",desc:"Use this option if you have trouble downloading the module with auto install.",button:`${e?"Hide":"Show"} Guide`,onClick:()=>t(r=>!r)}),m("div",{hidden:!e,children:m(v9,{})})]})},x9=({done:e,onClick:t})=>m("button",{className:_i({"zt-import-done":e}),onClick:t,children:e?"Library file imported":"Select"}),w9=({disabled:e,onClick:t})=>m("button",{disabled:e,onClick:t,children:"Reload Plugin"});var E9=()=>{let e=lt(pC);switch(e){case"install":return m($,{children:["ZotLit requires latest version of ",m("code",{children:"better-sqlite3"})," to be installed. Use one of the method below to install or update it."]});case"reset":return m($,{children:[m("code",{children:"better-sqlite3"})," seems to be broken and failed to load. you can try to use one of the method below to reinstall it."]});default:(0,$C.default)(e)}},MC=()=>m($,{children:[m("style",{children:` +.modal.mod-zt-install-guide .modal-content { + display: flex; + flex-direction: column; +} +.zt-install-methods { + display: flex; + flex-direction: column; + gap: var(--size-4-4); + flex-grow: 1; + padding: var(--size-4-4); + padding-bottom: var(--size-4-2); +} +.zt-install-methods .setting-item { + padding: 0; +} +.zt-auto-install { + display: flex; + flex-direction: column; + gap: var(--size-4-4); +} +.modal.mod-zt-install-guide button:disabled { + background-color: var(--background-modifier-cover); +} +.modal.mod-zt-install-guide button:disabled:hover { + box-shadow: var(--input-shadow); +} +.modal.mod-zt-install-guide button.zt-import-done { + background-color: var(--background-modifier-success); +} +.zt-auto-install-status { + border-top: none; +} +.zt-auto-install-status.mod-success .setting-icon , +.zt-auto-install-status.mod-success .setting-item-name { + color: var(--text-success); +} +.zt-auto-install-status.mod-warning .setting-icon , +.zt-auto-install-status.mod-warning .setting-item-name { + color: var(--text-error); +} +.zt-auto-install-status .setting-icon , +.zt-auto-install-status .setting-item-name { + color: var(--text-muted); +} + `}),m("div",{className:"zt-install-desc",children:m(E9,{})}),m("div",{className:"zt-install-methods",children:[m(DC,{}),m(FC,{})]})]});var ma=class extends jC.Modal{constructor(r,n,o,i,s){super(s);this.manifest=r;this.platform=n;this.binaryVersion=o;this.mode=i;this.app=s;this.titleEl.setText("Setup ZotLit"),this.modalEl.addClass("mod-zt-install-guide")}onOpen(){let r=fC();r.set(Dr,this),R.render(m(lC,{initialValues:r.get(),children:m(MC,{})}),this.contentEl)}onClose(){R.unmountComponentAtNode(this.contentEl)}async reloadPlugin(){await this.app.plugins.disablePlugin(this.manifest.id),this.close(),await this.app.plugins.enablePlugin(this.manifest.id)}};var LC=(e,t,r,n)=>{let o=ZS();if(!o)throw new Error("Not in desktop app");let i=GS(o);if(i<0)new Jr.Notice(`The electron (electron: ${o.electron}, module version: ${o.modules}) in current version of obsidian is not supported by zotlit, please reinstall using latest obsidian installer from official website`);else if(i>0)new Jr.Notice(`The electron (electron: ${o.electron}, module version: ${o.modules}) in current version of obsidian is newer than the one supported by installed zotlit, please update zotlit to the latest version`);else if(!JS(o))new Jr.Notice(`Your device (${o.arch}-${o.platform}) is not supported by zotlit`);else{let s=km(t);if(!s)throw new Error(`Cannot find binary version for ${t.name} v${t.version}`);try{(0,qC.statSync)(e).isFile()?r==="reset"&&new ma(t,o,s,r,n).open():new Jr.Notice("Path to database library occupied, please check the location manually: "+e,2e3)}catch(a){let u=a;u.code==="ENOENT"?new ma(t,o,s,r,n).open():(new Jr.Notice(`Unexpected error while checking path of better-sqlite3, please check the location manually: ${e}, error: ${u}`,2e3),it("checking better-sqlite3 path:"+e,u))}}},S9=(e,t)=>{if(!Jr.Platform.isDesktopApp)throw new Error("Not in desktop app");let r=ai(e);if(!r)throw new Error(`Cannot find binary version for ${e.name} v${e.version}`);try{return require(r),!0}catch(n){return n?.code==="MODULE_NOT_FOUND"?LC(r,e,"install",t):(new Jr.Notice(`Failed to load database library: ${n}`),it("Failed to load database library",n),LC(r,e,"reset",t)),!1}},BC=S9;var lM=require("path/posix");var un=require("obsidian");var _e;(function(e){e[e.highlight=1]="highlight",e[e.note=2]="note",e[e.image=3]="image",e[e.ink=4]="ink",e[e.underline=5]="underline",e[e.text=6]="text"})(_e||(_e={}));var yo;(function(e){e[e.manual=0]="manual",e[e.auto=1]="auto"})(yo||(yo={}));var xl;(function(e){e[e.importedFile=0]="importedFile",e[e.importedUrl=1]="importedUrl",e[e.linkedFile=2]="linkedFile",e[e.linkedUrl=3]="linkedUrl",e[e.embeddedImage=4]="embeddedImage"})(xl||(xl={}));var ha;(function(e){e[e.fullName=0]="fullName",e[e.nameOnly=1]="nameOnly"})(ha||(ha={}));var wl=["attachment","note","annotation"];var El=wl.map(e=>`'${e}'`).join(",");var Ge=(e="itemID")=>`--sql + ${e} IS NOT NULL + ${e==="itemID"?`AND ${e} NOT IN (SELECT itemID FROM deletedItems)`:""} +`,Qt=(e,t="$itemId")=>typeof e=="boolean"?"":`AND ${e} = ${t}`;var Sl=(e,t)=>{for(let r=0;r!!e.path,ga=e=>Jh(e)&&!!e.contentType&&I9.has(e.contentType),zC=e=>`obzt-active-atch-${e.itemID}-${e.libraryID}`,Zh=(e,t)=>{let r=e.getItem(zC(t));if(!r)return null;let n=parseInt(r,10);return n>0?n:null},Ti=(e,t,r)=>e.setItem(zC(t),r.toString());var Il=`--sql + items.itemID, + items.key, + items.clientDateModified, + items.dateAdded, + items.dateModified, + annots.type, + annots.authorName, + annots.text, + annots.comment, + annots.color, + annots.pageLabel, + annots.sortIndex, + annots.position, + annots.isExternal +`,_l=`--sql + itemAnnotations annots + JOIN items USING (itemID) +`;var Dde=`--sql +SELECT + ${Il}, + annots.parentItemID, + parentItems.key as parentItem +FROM + ${_l} + JOIN items as parentItems ON annots.parentItemID = parentItems.itemID +WHERE + items.key = $annotKey + AND items.libraryID = $libId + AND ${Ge("items.itemID")} +`;var jde=`--sql +SELECT + ${Il} +FROM + ${_l} +WHERE + parentItemID = $attachmentId + AND items.libraryID = $libId + AND ${Ge()} +`;var Cl=`--sql + items.itemID, + items.key, + items.clientDateModified, + items.dateAdded, + items.dateModified, + notes.note, + notes.title +`,Tl=`--sql + itemNotes notes + JOIN items USING (itemID) +`;var Ude=`--sql +SELECT + ${Cl}, + notes.parentItemID, + parentItems.key as parentItem +FROM + ${Tl} + JOIN items as parentItems ON notes.parentItemID = parentItems.itemID +WHERE + items.key = $noteKey + AND items.libraryID = $libId + AND ${Ge("items.itemID")} +`;var Vde=`--sql +SELECT + ${Cl} +FROM + ${Tl} +WHERE + parentItemID = $itemID + AND items.libraryID = $libId + AND ${Ge()} +`;var Zde=`--sql +SELECT + atchs.itemID, + atchs.path, + atchs.contentType, + atchs.linkMode, + charsets.charset, + items.key, + COUNT(atchs.itemID) as annotCount +FROM + itemAttachments atchs + JOIN items USING (itemID) + LEFT JOIN charsets USING (charsetID) + LEFT JOIN itemAnnotations annots ON atchs.itemID = annots.parentItemID +WHERE + atchs.parentItemID = $itemId + AND libraryID = $libId + AND ${Ge("atchs.itemID")} +GROUP BY atchs.itemID +`;var ya="betterbibtex",ba="bbts";var tme=`--sql +SELECT + citationkey as citekey +FROM + ${ya}.citationkey +WHERE + itemID = $itemID + AND (libraryID IS NULL OR libraryID = $libId) +`,rme=`--sql +SELECT + citekey +FROM + ${ba}.citekeys +WHERE + itemID = $itemID + AND (libraryID IS NULL OR libraryID = $libId) +`;var sme=`--sql +SELECT + itemID +FROM + ${ya}.citationkey +WHERE + citationkey = $citekey +`,ame=`--sql +SELECT + itemID +FROM + ${ba}.citekeys +WHERE + citekey = $citekey +`;var Ol=e=>`--sql +SELECT + itemID, + creators.firstName, + creators.lastName, + creators.fieldMode, + creatorTypes.creatorType, + orderIndex +FROM + items + LEFT JOIN itemCreators USING (itemID) + JOIN creators USING (creatorID) + JOIN creatorTypes USING (creatorTypeID) +WHERE + libraryID = $libId + ${Qt(e||"itemID")} + AND ${Ge()} +ORDER BY + itemID, + orderIndex +`;var dme=Ol(!0);function WC(e){return e===void 0?{BS_PRIVATE_NESTED_SOME_NONE:0}:e!==null&&e.BS_PRIVATE_NESTED_SOME_NONE!==void 0?{BS_PRIVATE_NESTED_SOME_NONE:e.BS_PRIVATE_NESTED_SOME_NONE+1|0}:e}function HC(e,t){for(var r=e.length,n=t.length,o=new Array(r+n|0),i=0;it||e`--sql +SELECT + items.itemID, + fieldsCombined.fieldName, + itemDataValues.value +FROM + items + JOIN itemData USING (itemID) + JOIN itemDataValues USING (valueID) + JOIN fieldsCombined USING (fieldID) + JOIN itemTypesCombined USING (itemTypeID) +WHERE + libraryID = $libId + ${Qt(e||"items.itemID")} + AND itemTypesCombined.typeName NOT IN (${El}) + AND ${Ge()} +`;var che=$l(!0);var dhe=$l(!1);var Ea=e=>`--sql +SELECT + items.libraryID, + items.itemID, + items.key, + items.clientDateModified, + items.dateAdded, + items.dateModified, + itemTypesCombined.typeName as itemType, + json_group_array(collectionID) filter (where collectionID is not null) as collectionIDs +FROM + items + JOIN itemTypesCombined USING (itemTypeID) + LEFT JOIN collectionItems USING (itemID) +WHERE + libraryID = $libId + ${e==="full"?Qt(!1):e==="id"?Qt("items.itemID"):Qt("items.key","$key")} + AND ${Ge()} + AND itemType NOT IN (${El}) +GROUP BY itemID +`;var vhe=Ea("full");var She=Ea("id"),Ihe=Ea("key");var Sa=e=>`--sql +WITH + RECURSIVE CollectionPath AS ( + -- Base case: collections without a parent + SELECT + collectionID, + parentCollectionID, + collectionName AS path + FROM + collections + WHERE + libraryID = $libId + ${e==="full"?Qt(!1):e==="id"?Qt("collectionID","$collectionID"):Qt("key","$key")} + AND ${Ge("collectionID")} + UNION ALL + -- Recursive case: join with parent collections + SELECT + prev.collectionID, + c.parentCollectionID, + c.collectionName + FROM + collections c + JOIN CollectionPath prev ON c.collectionID = prev.parentCollectionID + ) +SELECT + p.collectionID, + json_group_array(p.path) path, + c.key, + c.collectionName, + c.libraryID +FROM + CollectionPath p + JOIN collections c USING (collectionID) +GROUP BY + collectionID +ORDER BY + collectionID; +`;var khe=Sa("full");var Phe=Sa("id"),Fhe=Sa("key");var OT=require("path"),An=({groupID:e,key:t},r)=>{let n=[r,"cache"];return e?n.push("groups",e.toString()):n.push("library"),(0,OT.join)(...n,t+".png")};var Ia=e=>Ml(e)?[e.firstName,e.lastName].join(" "):jl(e)?e.lastName:null,Ml=e=>{let t=e;return t.fieldMode===ha.fullName&&t.firstName!==null&&t.lastName!==null},jl=e=>{let t=e;return t.fieldMode===ha.nameOnly&&t.lastName!==null},eg=new Set(pn()("creators","itemID","itemType","key","libraryID","collections")),tg=e=>!wl.includes(e.itemType)&&typeof e.key=="string",_a=e=>e.itemType==="annotation"&&!!e.parentItem;var AT=e=>typeof e.groupID=="number"?`groups/${e.groupID}`:"library",kn=e=>{let t;if(tg(e))t=new URL(`zotero://select/${AT(e)}/items/${e.key}`);else if(_a(e)){t=new URL(`zotero://open-pdf/${AT(e)}/items/${e.parentItem}`);let r;try{r=Go(e.position.pageIndex,!0)}catch(n){console.warn(n),r=null}typeof r=="number"&&t.searchParams.append("page",r.toString()),e.key&&t.searchParams.append("annotation",e.key)}else return"";return t.toString()};var NT=require("obsidian");var ql=require("obsidian");async function kT(e){let t=await xo(e);if(!t)return null;let{value:r,evt:n}=t;return{value:r.item,evt:n}}function xo(e){let t,r=new Promise((o,i)=>{t=o}),n=qt(e,{selectSuggestion:o=>function(s,a,...u){return t(s!==null?{value:s,evt:a}:null),o.call(this,s,a,...u)},onClose:o=>function(...s){return t(null),o.call(this,...s)}});return r.finally(n),e.open(),r}var Ll=class extends ql.SuggestModal{initial=!0;async#e(){let t=this.inputEl.value,r=await this.getSuggestions(t);if(r.length!==0){let n=this.limit;n&&n>0&&(r=r.slice(0,n)),this.chooser.setSuggestions(r)}else t?this.onNoSuggestion():this.chooser.setSuggestions(null)}#t=(0,ql.debounce)(this.#e.bind(this),250,!0);updateSuggestions(){this.initial?(this.#e(),this.initial=!1):this.#t()}};var rg=class extends NT.FuzzySuggestModal{constructor(r,n){super(n);this.attachments=r}getItems(){return this.attachments}renderSuggestion(r,n){n.addClass("mod-complex");let o=n.createDiv("suggestion-content").createDiv("suggestion-title").createSpan(),i=n.createDiv("suggestion-aux");super.renderSuggestion(r,o),i.createEl("kbd","suggestion-hotkey").setText((r.item.annotCount??0).toString())}getItemText(r){return r.path?.replace(/^storage:/,"")??r.key}onChooseItem(){}};async function k9(e,t){return e.length===1?e[0]:e.length?(await kT(new rg(e,t)))?.value??null:null}function Ni(e,t){Ti(window.localStorage,t,e.itemID)}async function Zr(e,t){let r=e.filter(ga);return await k9(r,t)}var Cy=require("obsidian");var dt=require("obsidian");var Ri=require("obsidian"),RT=()=>`Press ${Ri.Platform.isMacOS?"\u2318 Cmd":"Ctrl"} + ${Ri.Platform.isMacOS?"\u2325 Option":"Shift"} + I, then go to the "Console" tab to see the log.`;var at=e=>e instanceof Ri.TFile&&e.extension==="md",DT=e=>typeof e=="string"?e:e.path;function ng(e){let t=bo(e,o=>o.comment?.match(Tm)?.[1]??-1),r=t[-1]??[],n=new Map(r.map(o=>[o.itemID,[o]]));delete t[-1];for(let[o,i]of Object.entries(t)){let s=n.get(+o);i.forEach(a=>{a.comment&&=a.comment.replace(Tm,"")??null}),s?s.push(...i.sort((a,u)=>Sl(a.sortIndex,u.sortIndex))):i.forEach(a=>{n.set(a.itemID,[a])})}for(let[o,...i]of n.values())if(!(i.length<=0)){for(let s of i)s.comment&&(o.comment=(o.comment??"")+` +`+s.comment),s.text&&(o.text?o.text.endsWith("-")&&!o.text.endsWith("--")?o.text.substring(0,o.text.length-1)+s.text.trimStart():o.text.match(/[a-zA-Z\d]\s*$/)&&s.text.match(/^\s*[a-zA-Z\d]/)?o.text=o.text.trimEnd()+" "+s.text.trimStart():o.text=o.text.trimEnd()+s.text.trimStart():o.text=s.text);o.comment=o.comment?.replace(/\n+/,` +`).replace(/^\s+|\s+$/g,"")??null}return[...n.values()]}function og(e){return e.map(t=>t[0])}function ig(e,t){let r=e.map(([n,...o])=>{if(o.length===0)return[n.itemID,t[n.itemID]];let i=new Map(t[n.itemID].map(s=>[s.tagID,s]));return o.forEach(s=>{t[s.itemID].forEach(a=>{i.set(a.tagID,a)})}),[n.itemID,Array.from(i.values())]});return Object.fromEntries(r)}function PT(e,t){let r=ng(e);return{annotations:og(r),tags:ig(r,t)}}var Hl=class{constructor(t){this.cache=void 0,this.cache=t}define(t,r){this.cache[t]=r}get(t){return this.cache[t]}remove(t){delete this.cache[t]}reset(){this.cache={}}load(t){this.cache={...this.cache,...t}}},et=class extends Error{constructor(t){super(t),this.name="Eta Error"}};function Ca(e,t,r){let n=t.slice(0,r).split(/\n/),o=n.length,i=n[o-1].length+1;throw e+=" at line "+o+" col "+i+`: + + `+t.split(/\n/)[o-1]+` + `+Array(i).join(" ")+"^",new et(e)}function N9(e,t,r,n){let o=t.split(` +`),i=Math.max(r-3,0),s=Math.min(o.length,r+3),a=n,u=o.slice(i,s).map(function(f,p){let d=p+i+1;return(d==r?" >> ":" ")+d+"| "+f}).join(` +`),l=a?a+":"+r+` +`:"line "+r+` +`,c=new et(l+u+` + +`+e.message);throw c.name=e.name,c}var R9=async function(){}.constructor;function D9(e,t){let r=this.config,n=t&&t.async?R9:Function;try{let o=new n(r.varName,"options",this.compileToString.call(this,e,t));return o.mtime=t?.mtime,o}catch(o){throw o instanceof SyntaxError?new et(`Bad template syntax + +`+o.message+` +`+Array(o.message.length+1).join("=")+` +`+this.compileToString.call(this,e,t)+` +`):o}}function P9(e,t){let r=this.config,n=t&&t.async,o=this.compileBody,i=this.parse.call(this,e),s=`${r.functionHeader} +let include = (template, data) => this.render(template, data, options); +let includeAsync = (template, data) => this.renderAsync(template, data, options); + +let __eta = {res: "", e: this.config.escapeFunction, f: this.config.filterFunction${r.debug?', line: 1, templateStr: "'+e.replace(/\\|'/g,"\\$&").replace(/\r\n|\n|\r/g,"\\n")+'"':""}}; + +function layout(path, data) { + __eta.layout = path; + __eta.layoutData = data; +}${r.debug?"try {":""}${r.useWith?"with("+r.varName+"||{}){":""} + +${o.call(this,i)} +if (__eta.layout) { + __eta.res = ${n?"await includeAsync":"include"} (__eta.layout, {...${r.varName}, body: __eta.res, ...__eta.layoutData}); +} +${r.useWith?"}":""}${r.debug?"} catch (e) { this.RuntimeErr(e, __eta.templateStr, __eta.line, options.filepath) }":""} +return __eta.res; +`;if(r.plugins)for(let a=0;a":">",'"':""","'":"'"};function j9(e){return M9[e]}function L9(e){let t=String(e);return/[&<>"']/.test(t)?t.replace(/[&<>"']/g,j9):t}var FT={autoEscape:!0,autoFilter:!1,autoTrim:[!1,"nl"],cache:!1,cacheFilepaths:!0,debug:!1,escapeFunction:L9,filterFunction:e=>String(e),functionHeader:"",parse:{exec:"",interpolate:"=",raw:"~"},plugins:[],rmWhitespace:!1,tags:["<%","%>"],useWith:!1,varName:"it"},Bl=/`(?:\\[\s\S]|\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})*}|(?!\${)[^\\`])*`/g,zl=/'(?:\\[\s\w"'\\`]|[^\n\r'\\])*?'/g,Ul=/"(?:\\[\s\w"'\\`]|[^\n\r"\\])*?"/g;function Wl(e){return e.replace(/[.*+\-?^${}()|[\]\\]/g,"\\$&")}function q9(e,t){return e.slice(0,t).split(` +`).length}function B9(e){let t=this.config,r=[],n=!1,o=0,i=t.parse;if(t.plugins)for(let f=0;f0&&s!==void 0&&i<=s))return o;let a=this.readFile(n),u=this.compile(a,t);return this.config.cache&&r.define(n,u),u}}function ag(e,t,r){let n,o={...r,async:!1};return typeof e=="string"?(e.startsWith("@")||(o.filepath=this.resolvePath(e,o)),n=zT.call(this,e,o)):n=e,n.call(this,t,o)}function ug(e,t,r){let n,o={...r,async:!0};typeof e=="string"?(e.startsWith("@")||(o.filepath=this.resolvePath(e,o)),n=zT.call(this,e,o)):n=e;let i=n.call(this,t,o);return Promise.resolve(i)}function UT(e,t){let r=this.compile(e,{async:!1});return ag.call(this,r,t)}function WT(e,t){let r=this.compile(e,{async:!0});return ug.call(this,r,t)}var Vl=class extends Kl{use=Vo.this;settings=this.use(de);app=this.use(HT.App);tplFileCache=new WeakMap;constructor(){super();let t=this;this.config={...this.config,cache:!0,autoEscape:!1,autoFilter:!0,filterFunction:r=>r==null?"":r instanceof Date?r.toISOString():r,plugins:[],get autoTrim(){return t.settings.current?.autoTrim},get views(){return t.settings.templateDir}}}resolvePath=BT;readFile=LT;readModTime=qT;render=ag;renderAsync=ug;renderString=UT;renderStringAsync=WT;getFile(t){let r=this.app.vault.getAbstractFileByPath(t);if(!r)return t;if(!at(r))throw new et(`'${t}' is not a markdown file`);return r}};var kR=ge(xR(),1),NR=ge(CR(),1);var kf=require("obsidian");var kK="\\ufeff?",NK=typeof process<"u"?process.platform:"",RK="^("+kK+"(= yaml =|---)$([\\s\\S]*?)^(?:\\2|\\.\\.\\.)\\s*$"+(NK==="win32"?"\\r?":"")+"(?:\\n)?)",DK=new RegExp(RK,"m");function If(e){e=e||"";let t=e.split(/(\r?\n)/);return t[0]&&/= yaml =|---/.test(t[0])?FK(e):{yaml:null,body:e,bodyBegin:1}}function PK(e,t){let r=1,n=t.indexOf(` +`),o=e.index+e[0].length;for(;n!==-1;){if(n>=o)return r;r++,n=t.indexOf(` +`,n+1)}return r}function FK(e){let t=DK.exec(e);if(!t)return{yaml:null,body:e,bodyBegin:1};let r=t[t.length-1].replace(/^\s+|\s+$/g,""),n=e.replace(t[0],""),o=PK(t,e);return{yaml:r,body:n,bodyBegin:o}}var Cf=require("path"),my=require("url");function fy(e){if(typeof e!="string")throw new TypeError("Expected a string");return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}function py(e,t){if(typeof e!="string"||typeof t!="string")throw new TypeError("Expected a string");let r=new RegExp(`(?:${fy(t)}){2,}`,"g");return e.replace(r,t)}function _f(){return/[<>:"/\\|?*\u0000-\u001F]/g}function TR(){return/^(con|prn|aux|nul|com\d|lpt\d)$/i}function dy(e,t){if(typeof e!="string"||typeof t!="string")throw new TypeError("Expected a string");return e.startsWith(t)&&(e=e.slice(t.length)),e.endsWith(t)&&(e=e.slice(0,-t.length)),e}var $K=100,OR=/[\u0000-\u001F\u0080-\u009F]/g,MK=/^\.+(\\|\/)|^\.+$/,jK=/\.+$/;function To(e,t={}){if(typeof e!="string")throw new TypeError("Expected a string");let r=t.replacement===void 0?"!":t.replacement;if(_f().test(r)&&OR.test(r))throw new Error("Replacement string cannot contain reserved filename characters");if(e=e.normalize("NFD"),e=e.replace(MK,r),e=e.replace(_f(),r),e=e.replace(OR,r),e=e.replace(jK,""),r.length>0){let o=e[0]===".";e=py(e,r),e=e.length>1?dy(e,r):e,!o&&e[0]==="."&&(e=r+e),e[e.length-1]==="."&&(e+=r)}e=TR().test(e)?e+r:e;let n=typeof t.maxLength=="number"?t.maxLength:$K;if(e.length>n){let o=e.lastIndexOf(".");if(o===-1)e=e.slice(0,n);else{let i=e.slice(0,o),s=e.slice(o);e=i.slice(0,Math.max(1,n-s.length))+s}}return e}var hy=e=>encodeURI(e)===e?e:`<${e}>`,Tf=e=>e.name.endsWith(".eta.md"),gy=(e,t)=>t.path?t.path.startsWith("storage:")?(0,Cf.join)(e,"storage",t.key,t.path.replace(/^storage:/,"")):t.path:"",Of=(e,t,r,n=null,o=null)=>{if(!n?.path)return"";let i=o?`#page=${o}`:void 0,s=t.vault.adapter.getBasePath(),a=gy(e,n),u=(0,Cf.relative)(s,a);if(u.startsWith(".."))return`[attachment](${hy((0,my.pathToFileURL)(a).href+(i??""))})`;{let l=t.metadataCache.getFirstLinkpathDest(u,"");return l?t.fileManager.generateMarkdownLink(l,r??"",i).replace(/^!/,""):(W.warn("fileLink: file not found",u,a),"")}},AR=e=>To(e,{replacement:"_"}),Af=e=>_a(e)&&e.type===_e.image,LK=(e,t,r)=>t?`[${r??""}](${hy(e)})`:`[[${e}${r?"|"+r:""}]]`,yy=(e,t)=>{if(Af(e)){let r=t.imgCacheImporter.import(e);if(r)return LK(r,t.app.vault.getConfig("useMarkdownLinks"));{let n=t.imgCacheImporter.getCachePath(e);return`[Annotation ${e.key}](${hy((0,my.pathToFileURL)(n).href)})`}}else return""};function RR(e){qt(e,{compile:t=>function(n,o){let i=this,s=t.call(this,n,o);if(!o?.filepath)return s;let a=o.filepath,u=ct(a,i.settings.templateDir);if(!u)return s;let l=s;switch(u.name){case"filename":l=(c,f)=>AR(s.call(this,c,f));break;case"annotation":l=(c,f)=>{let p=s.call(this,c,f),d=!0,{yaml:h,body:b}=If(p);if(h)try{(0,kf.parseYaml)(h).callout===!1&&(d=!1)}catch(v){new kf.Notice(`Error parsing frontmatter, ${v}`)}if(!d)return b;let y=b.trim().split(` +`);return y.push(`^${c.blockID}`),y.map(v=>`> ${v}`).join(` +`)};break;default:break}return Object.groupBy&&Map.groupBy?l:(c,f)=>{let p=qK(),d=l.call(this,c,f);return p(),d}}})}function qK(){let e=[];return Object.groupBy||(Object.groupBy=NR.default,e.push(()=>delete Object.groupBy)),Map.groupBy||(Map.groupBy=kR.default,e.push(()=>delete Map.groupBy)),()=>e.forEach(t=>t())}var Oo="zotero-key",ji="zt-attachments";var DR=require("url");var PR=require("obsidian");var Pn=e=>e.plugin.settings.current?.zoteroDataDir,Ha=Symbol("proxied"),Nf=e=>!!e[Ha];var Rf={"#FF6666":"red","#FF8C19":"orange","#F19837":"orange","#FFD400":"yellow","#999999":"gray","#AAAAAA":"gray","#5FB236":"green","#009980":"cyan","#2EA8E5":"blue","#576DD9":"navy","#A28AE5":"purple","#A6507B":"brown","#E56EEE":"magenta"};var by=new Set(pn()("attachment","tags")),vy=(e,t,r)=>new Proxy({get page(){return Go(e.position.pageIndex,!0)??NaN},get backlink(){return kn(e)},get blockID(){let n=Bt(e),o=Go(e.position.pageIndex,!0);return typeof o=="number"&&(n+=`p${o}`),n},get commentMd(){return e.comment?(0,PR.htmlToMarkdown)(e.comment):""},get imgPath(){return Af(this)?An(this,Pn(r)):""},get imgUrl(){if(Af(this)){let n=An(this,Pn(r));return(0,DR.pathToFileURL)(n).href}else return""},get imgLink(){return yy(this,r.plugin)},get imgEmbed(){let n=yy(this,r.plugin);return n?`!${n}`:""},get fileLink(){return Of(Pn(r),r.plugin.app,r.sourcePath,t.attachment,Go(e.position.pageIndex,!0))},get textBlock(){return e.text?`\`\`\`zotero-annot +> ${e.text} [zotero](${kn(e)}) +\`\`\``:""},get colorName(){let n=e.color?.toUpperCase();return Rf[n]||this.color},docItem:"not-loaded"},{get(n,o,i){if(o==="tags"){if(!t.tags[e.itemID])throw console.error(t,e.itemID),new Error("No tags loaded for item "+e.itemID);return t.tags[e.itemID]}if(o==="docItem"){if(n.docItem==="not-loaded")throw new Error("Doc Item not loaded for item "+e.itemID);return n.docItem}return by.has(o)?Reflect.get(t,o,i):Reflect.get(e,o,i)??Reflect.get(n,o,i)},ownKeys(n){return[...Reflect.ownKeys(e),...by,...Reflect.ownKeys(n)]},getOwnPropertyDescriptor(n,o){return Object.prototype.hasOwnProperty.call(e,o)?Reflect.getOwnPropertyDescriptor(e,o):by.has(o)?Reflect.getOwnPropertyDescriptor(t,o):Reflect.getOwnPropertyDescriptor(n,o)}});function xy(e,t){return!e||Nf(e)?e:new Proxy({get filePath(){return gy(Pn(t),e)}},{get(r,n,o){return n===Ha?!0:Reflect.get(e,n,o)??Reflect.get(r,n,o)},ownKeys(r){return[...Reflect.ownKeys(e),...Reflect.ownKeys(r)]},getOwnPropertyDescriptor(r,n){return Object.prototype.hasOwnProperty.call(e,n)?Reflect.getOwnPropertyDescriptor(e,n):Reflect.getOwnPropertyDescriptor(r,n)}})}var wy=class extends Array{toString(){return this.join(" > ")}},Ey=({path:e,...t})=>{let r={path:wy.from(e),toString(){return t.name}};return new Proxy(r,{get(n,o,i){return Reflect.get(n,o,i)??Reflect.get(t,o,i)},ownKeys(n){return[...Reflect.ownKeys(t),...Reflect.ownKeys(n).filter(o=>!(o==="toJSON"||o==="toString"))]},getOwnPropertyDescriptor(n,o){return Object.prototype.hasOwnProperty.call(t,o)?Reflect.getOwnPropertyDescriptor(t,o):Reflect.getOwnPropertyDescriptor(n,o)}})};var Sy=e=>{let t={get fullname(){return Ia(e)??""},toString(){return this.fullname},toJSON(){return this.fullname}};return new Proxy(t,{get(r,n,o){return Reflect.get(r,n,o)??Reflect.get(e,n,o)},ownKeys(r){return[...Reflect.ownKeys(e),...Reflect.ownKeys(r).filter(n=>!(n==="toJSON"||n==="toString"))]},getOwnPropertyDescriptor(r,n){return Object.prototype.hasOwnProperty.call(e,n)?Reflect.getOwnPropertyDescriptor(e,n):Reflect.getOwnPropertyDescriptor(r,n)}})};var Iy=new Set(pn()("attachment","allAttachments","tags","notes")),_y=({creators:e,collections:t,...r},n,o)=>{let i=e.map(s=>Sy(s));return new Proxy({get backlink(){return kn(r)},get fileLink(){return Of(Pn(o),o.plugin.app,o.sourcePath,n.attachment)},get authorsShort(){let s=this.authors;if(!s.length)return"";let a=s[0],u=a.lastName??a.fullname;return s.length===1?u:`${u} et al.`},annotations:"not-loaded",creators:i,collections:t.map(s=>Ey(s)),get authors(){return i.filter(s=>s.creatorType==="author")}},{get(s,a,u){if(a==="tags"){if(!n.tags[r.itemID])throw new Error("No tags loaded for item "+r.itemID);return n.tags[r.itemID]}return Iy.has(a)?n[a]:a==="annotations"?s.annotations:Reflect.get(r,a,u)??Reflect.get(s,a,u)},ownKeys(s){return[...Reflect.ownKeys(r),...Iy,...Reflect.ownKeys(s)]},getOwnPropertyDescriptor(s,a){return Object.prototype.hasOwnProperty.call(r,a)?Reflect.getOwnPropertyDescriptor(r,a):Iy.has(a)?Reflect.getOwnPropertyDescriptor(n,a):Reflect.getOwnPropertyDescriptor(s,a)}})};function FR(e){return!e||Nf(e)?e:new Proxy({toString(){return e.name},toJSON(){return e.name}},{get(t,r,n){return r===Ha?!0:Reflect.get(t,r,n)??Reflect.get(e,r,n)},ownKeys(t){return[...Reflect.ownKeys(e),...Reflect.ownKeys(t).filter(r=>!(r==="toJSON"||r==="toString"))]},getOwnPropertyDescriptor(t,r){return Object.prototype.hasOwnProperty.call(e,r)?Reflect.getOwnPropertyDescriptor(e,r):Reflect.getOwnPropertyDescriptor(t,r)}})}function It(e,t,r){let n={...e,attachement:xy(e.attachment,t),allAttachments:e.allAttachments.map(a=>xy(a,t)),tags:Ai(e.tags,a=>a.map(u=>FR(u)))},o=_y(e.docItem,n,t),i=e.annotations.map(a=>{let u=vy(a,n,t);return u.docItem=o,u}),s=r?i[e.annotations.findIndex(a=>a.itemID===r.itemID)]:void 0;return o.annotations=i,{annotation:s,annotations:i,docItem:o}}var Fn=class extends ue{eta=this.use(Vl);plugin=this.use(be);settings=this.use(de);app=this.use(dt.App);get vault(){return this.app.vault}get folder(){return this.settings.templateDir}get filenameTemplate(){return this.settings.simpleTemplates?.filename}get autoTrim(){return this.settings.current?.autoTrim}async loadTemplates(){let t=this.vault.getAbstractFileByPath(this.folder);if(!t)return;if(!(t instanceof dt.TFolder)){W.warn("Template folder is occupied by a file");return}let r=[];dt.Vault.recurseChildren(t,async n=>{!at(n)||!n.path.endsWith(".eta.md")||r.push(n)}),await Promise.all(r.map(async n=>this.eta.tplFileCache.set(n,await this.vault.cachedRead(n))))}onload(){RR(this.eta),this.settings.once(async()=>{await this.loadTemplates()}),this.register(qe(Qe(()=>this.plugin.app.vault.trigger("zotero:template-updated","filename"),()=>this.filenameTemplate,!0))),this.register(qe(Qe(async()=>_r.All.forEach(t=>this.plugin.app.vault.trigger("zotero:template-updated",t)),()=>this.autoTrim,!0))),this.registerEvent(this.vault.on("create",this.onFileChange,this)),this.registerEvent(this.vault.on("modify",this.onFileChange,this)),this.registerEvent(this.vault.on("delete",async t=>{if(!at(t))return;let r=this.fromPath(t.path);r&&(this.eta.tplFileCache.delete(t),this.vault.trigger("zotero:template-updated",r))})),this.registerEvent(this.vault.on("rename",async(t,r)=>{await this.onFileChange(t);let n=this.fromPath(r);n&&this.vault.trigger("zotero:template-updated",n)}))}async onFileChange(t){if(!at(t))return;let r=this.fromPath(t.path);this.eta.tplFileCache.set(t,await this.vault.cachedRead(t)),this.vault.trigger("zotero:template-updated",r)}fromPath(t){let r=ct(t,this.folder);return r?.type==="ejectable"?r.name:null}onFileUpdate(t){at(t)&&this.fromPath(t.path)}onFileRename(t,r){at(t)&&this.fromPath(t.path),this.fromPath(r)}mergeAnnotTags(t){if(t.annotations.length===0)return t;let r=PT(t.annotations,t.tags);return t.annotations=r.annotations,t.tags={...t.tags,...r.tags},t}render(t,r){try{let n=this.eta.render(t,r);return this.plugin.imgCacheImporter.flush(),n}catch(n){throw console.error("Error while rendering",t,n),n}}renderAnnot(t,r,n){n.merge!==!1&&(r=this.mergeAnnotTags(r));let o=It(r,n,t);return this.render("annotation",o.annotation)}renderNote(t,r,n){r.merge!==!1&&(t=this.mergeAnnotTags(t));let o=It(t,r),i=this.#e(o.docItem,n),s=this.render("note",o.docItem);return["",i,s].join(`--- +`)}renderAnnots(t,r){r.merge!==!1&&(t=this.mergeAnnotTags(t));let n=It(t,r);return this.render("annots",n.annotations)}renderCitations(t,r,n=!1){let o=t.map(i=>It(i,r));return this.render(n?"cite2":"cite",o.map(i=>i.docItem))}renderColored(t){return this.render("colored",t)}renderFilename(t,r){let n=It(t,r);return this.render("filename",n.docItem)}toFrontmatterRecord(t){let r=this.render("field",t),n=!1,{yaml:o,body:i}=If(r);if(o)try{(0,dt.parseYaml)(o).raw===!0&&(n=!0)}catch(f){new dt.Notice(`Error parsing frontmatter, ${f}`)}let s=Bt(t,!0),a=t.attachment?[t.attachment.itemID.toString()]:void 0,{[Oo]:u,[ji]:l,...c}=(0,dt.parseYaml)(i);return{mode:n?"raw":"parsed",yaml:[`${Oo}: ${s}`,`${ji}: ${l??a}`,i.trim(),""].join(` +`),data:{[Oo]:s,[ji]:a,...wa(c,f=>!(f===""||f===null||f===void 0))}}}renderFrontmatter(t,r,n){let o=It(t,r);return this.#e(o.docItem,n)}#e(t,r){try{let n=this.toFrontmatterRecord(t);return n.mode==="raw"?n.yaml:(0,dt.stringifyYaml)(r!==void 0?vo(n.data,r):n.data)}catch(n){throw it("Failed to renderYaml",n,t),new dt.Notice("Failed to renderYaml"),n}}async setFrontmatterTo(t,r){try{let n=this.toFrontmatterRecord(r).data;await this.plugin.app.fileManager.processFrontMatter(t,o=>Object.assign(o,n))}catch(n){it("Failed to set frontmatter to file "+t.path,n,r),new dt.Notice("Failed to set frontmatter to file "+t.path)}}};le([fe],Fn.prototype,"folder",1),le([fe],Fn.prototype,"filenameTemplate",1),le([fe],Fn.prototype,"autoTrim",1);var Df=require("@codemirror/state"),$R=require("obsidian");var MR=e=>Df.Prec.highest(Df.EditorState.languageData.of(t=>{let r=[],n=e.getConfig("autoPairBrackets"),o=e.getConfig("autoPairMarkdown");n&&r.push("(","[","{","'",'"'),o&&r.push("*","_","`","```");let i=t.field($R.editorInfoField);return i?.file&&Tf(i?.file)&&r.push("<","%"),[{closeBrackets:{brackets:r}}]}));var LR=require("obsidian");var jR=[{prefix:"=",name:"interpolate tag",description:"An interpolation outputs data into the template"},{prefix:" ",name:"evaluation tag",description:"An evaluate tag inserts its contents into the template function."}],Pf=class extends LR.EditorSuggest{onTrigger(t,r,n){if(!n||!Tf(n))return null;let o=r.getLine(t.line),s=o.substring(0,t.ch).match(/<%([ =]?)$/);if(!s)return null;let[a,u]=s,l=o.substring(t.ch).match(/^([\w ]*)%>/),c;if(!l)c={...t};else{let[,f]=l;if(u===" "&&f.length===1)return null;c={...t,ch:t.ch+f.length}}return{end:c,start:{ch:s.index+a.length-u.length,line:t.line},query:s[1]}}getSuggestions(t){return t.query?jR.filter(r=>r.prefix===t.query):jR}renderSuggestion({prefix:t,name:r,description:n},o){t===" "?o.createSpan({text:"No Prefix"}):o.createEl("code",{text:t}),o.createDiv({text:r}),o.createDiv({text:n})}selectSuggestion({prefix:t},r){if(!this.context)return;let{editor:n,end:o,start:i}=this.context,s=t===" "?" ":"= it. ";n.transaction({changes:[{from:i,to:o,text:s}],selection:{from:{...i,ch:i.ch+s.length-1}}})}};var Li=class extends ue{#e=null;plugin=this.use(be);settings=this.use(de);#t(){this.plugin.registerEditorSuggest(new Pf(this.plugin.app))}get etaBracketPairing(){return this.settings.current?.autoPairEta}#r(t){let r=this.#e!==null;this.#e===null?(this.#e=[],this.plugin.registerEditorExtension(this.#e)):this.#e.length=0,t&&this.#e.push(MR(this.plugin.app.vault)),r&&this.plugin.app.workspace.updateOptions()}onload(){this.#t(),this.register(qe(Qe(()=>this.#r(this.etaBracketPairing),()=>this.etaBracketPairing)))}};le([fe],Li.prototype,"etaBracketPairing",1);var Ty=e=>{let t=e?.frontmatter?.[Oo];return t&&typeof t=="string"&&Jv.test(t)?t:null},Ao=(e,t)=>{if(!e)return null;let r=typeof e=="string"?t.getCache(e):e instanceof Cy.TFile?t.getFileCache(e):null;return Ty(r)},ko=(e,t)=>{if(!e)return null;let n=(typeof e=="string"?t.getCache(e):e instanceof Cy.TFile?t.getFileCache(e):null)?.frontmatter?.[ji];if(n&&Array.isArray(n)&&n.length>0){let o=[];for(let i of n)if(typeof i=="string"){let s=Number(i);if(!(s>0&&Number.isInteger(s)))return null;o.push(s)}else if(typeof i=="number"){if(!(i>0&&Number.isInteger(i)))return null;o.push(i)}return o}return null},Ka=({id:e})=>!!e&&Yv.test(e),Va=e=>e.split("n").map(t=>{let[,r,,n]=t.split("p")[0].match(Zv);return Bt({key:r,groupID:n?+n:void 0},!0)});function Ga(e,t){let r=DT(e);return!!Ao(r,t.metadataCache)}var sM=require("url");S();var $n=Le({});S();var Be=Le({});S();var qR=function(e){return typeof e=="function"};var zK=!1,BR=zK;function UK(e){BR&&(qR(e)||console.error("useMemoizedFn expected parameter is a function, got ".concat(typeof e)));var t=F(e);t.current=ne(function(){return e},[e]);var r=F();return r.current||(r.current=function(){for(var n=[],o=0;o{let t,r=new Set,n=(u,l)=>{let c=typeof u=="function"?u(t):u;if(!Object.is(c,t)){let f=t;t=l??typeof c!="object"?c:Object.assign({},t,c),r.forEach(p=>p(t,f))}},o=()=>t,a={setState:n,getState:o,subscribe:u=>(r.add(u),()=>r.delete(u)),destroy:()=>{(WR.env&&WR.env.MODE)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),r.clear()}};return t=e(n,o,a),a},Ja=e=>e?UR(e):UR;S();var QR=ge(XR(),1);var{useSyncExternalStoreWithSelector:cV}=QR.default;function _t(e,t=e.getState,r){let n=cV(e.subscribe,e.getState,e.getServerState||e.getState,t,r);return go(n),n}function Bi(e,t){if(Object.is(e,t))return!0;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[n,o]of e)if(!Object.is(o,t.get(n)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}let r=Object.keys(e);if(r.length!==Object.keys(t).length)return!1;for(let n=0;ne&&(t=0,n=r,r=new Map)}return{get:function(s){var a=r.get(s);if(a!==void 0)return a;if((a=n.get(s))!==void 0)return o(s,a),a},set:function(s,a){r.has(s)?r.set(s,a):o(s,a)}}}var Ry="!";function aD(e){var t=e.separator||":";return function(n){for(var o=0,i=[],s=0,a=0;a{e.forEach(r=>{typeof r=="function"?r(t):r!=null&&(r.current=t)})}}var Lf=(e,t)=>{let{setIcon:r}=Q($n),n=F(null);return Y(i=>{n.current&&SV.call(n.current),i&&(r(i,e),t&&i.firstElementChild instanceof SVGSVGElement&&i.firstElementChild.style.setProperty("--icon-size",typeof t=="number"||!Number.isNaN(Number(t))?`${t}px`:t)),n.current=i},[e,t,r])};function SV(){for(;this.lastChild;)this.removeChild(this.lastChild)}var jn=st(Z(function({icon:t,size:r,className:n,...o},i){let s=Lf(t,r),a=jf(s,i);return m("div",{ref:a,className:ee("zt-icon",n),...o})}));S();var Ro=Z(function({onClick:t,onKeyDown:r,className:n,...o},i){return m(jn,{onClick:t,onKeyDown:r??t,className:ee("clickable-icon",n),...o,ref:i,role:"button",tabIndex:0})});S();S();var xD=st(Z(function({icon:t,...r},n){let o=Lf(t);return m("button",{ref:jf(o,n),...r})}));var Do=Z(function({className:t,active:r=!1,...n},o){return m(xD,{...n,ref:o,className:ee("clickable-icon",{"is-active":r},t)})});function Za(e){return m(Ro,{size:16,icon:"info","aria-label":"Show details",...e})}function Ya(){let e=arguments[0];for(let t=1,r=arguments.length;to(t).replace(/<\/?b>/g,"**").replace(/<\/?i>/g,"*"),[t,o]);return m("div",{className:ee("annot-comment select-text overflow-x-auto break-words px-2 py-1",r),...n,children:i(s)})});S();var ED=Z(function({className:t,...r},n){return m("div",{ref:n,className:ee("annot-excerpt",t),...r})});S();function Py({text:e,pageLabel:t,className:r,collapsed:n=!1,...o}){let i=e??`Area Excerpt for Page ${t??"?"}`;return m("img",{className:ee("w-full",n?"max-h-20 object-cover object-left-top":"object-scale-down",r),alt:i,...o})}var SD=st(function({type:t,text:r,pageLabel:n,imgSrc:o,collapsed:i}){switch(t){case _e.highlight:case _e.underline:case _e.text:return m("p",{className:"select-text",children:r});case _e.image:if(!o)throw new Error("imgSrc is required for image annotation");return m(Py,{collapsed:i,src:o,pageLabel:n,text:r});default:return m($,{children:["Unsupported Type: ",_e[t]??t]})}});function Fy({checkbox:e,drag:t,buttons:r,onMoreOptions:n,className:o,children:i,onContextMenu:s,...a}){return m("div",{className:ee("annot-header flex cursor-context-menu items-center gap-1",o),onContextMenu:s??n,...a,children:[e,m("div",{className:"annot-header-drag-container flex flex-row items-center gap-1",children:t}),m("div",{className:"annot-header-buttons-container flex flex-row items-center gap-1 opacity-0 transition-opacity hover:opacity-100",children:r}),m("div",{className:"annot-header-space flex-1"}),i]})}var IV=typeof global=="object"&&global&&global.Object===Object&&global,ID=IV;var _V=typeof self=="object"&&self&&self.Object===Object&&self,CV=ID||_V||Function("return this")(),_D=CV;var TV=_D.Symbol,rn=TV;var CD=Object.prototype,OV=CD.hasOwnProperty,AV=CD.toString,Xa=rn?rn.toStringTag:void 0;function kV(e){var t=OV.call(e,Xa),r=e[Xa];try{e[Xa]=void 0;var n=!0}catch{}var o=AV.call(e);return n&&(t?e[Xa]=r:delete e[Xa]),o}var TD=kV;var NV=Object.prototype,RV=NV.toString;function DV(e){return RV.call(e)}var OD=DV;var PV="[object Null]",FV="[object Undefined]",AD=rn?rn.toStringTag:void 0;function $V(e){return e==null?e===void 0?FV:PV:AD&&AD in Object(e)?TD(e):OD(e)}var kD=$V;function MV(e){return e!=null&&typeof e=="object"}var ND=MV;var jV="[object Symbol]";function LV(e){return typeof e=="symbol"||ND(e)&&kD(e)==jV}var RD=LV;function qV(e,t){for(var r=-1,n=e==null?0:e.length,o=Array(n);++ro?0:o+t),r=r>o?o:r,r<0&&(r+=o),o=t>r?0:r-t>>>0,t>>>=0;for(var i=Array(o);++n=n?e:LD(e,t,r)}var qD=HV;var KV="\\ud800-\\udfff",VV="\\u0300-\\u036f",GV="\\ufe20-\\ufe2f",JV="\\u20d0-\\u20ff",ZV=VV+GV+JV,YV="\\ufe0e\\ufe0f",XV="\\u200d",QV=RegExp("["+XV+KV+ZV+YV+"]");function eG(e){return QV.test(e)}var qf=eG;function tG(e){return e.split("")}var BD=tG;var zD="\\ud800-\\udfff",rG="\\u0300-\\u036f",nG="\\ufe20-\\ufe2f",oG="\\u20d0-\\u20ff",iG=rG+nG+oG,sG="\\ufe0e\\ufe0f",aG="["+zD+"]",$y="["+iG+"]",My="\\ud83c[\\udffb-\\udfff]",uG="(?:"+$y+"|"+My+")",UD="[^"+zD+"]",WD="(?:\\ud83c[\\udde6-\\uddff]){2}",HD="[\\ud800-\\udbff][\\udc00-\\udfff]",cG="\\u200d",KD=uG+"?",VD="["+sG+"]?",lG="(?:"+cG+"(?:"+[UD,WD,HD].join("|")+")"+VD+KD+")*",fG=VD+KD+lG,pG="(?:"+[UD+$y+"?",$y,WD,HD,aG].join("|")+")",dG=RegExp(My+"(?="+My+")|"+pG+fG,"g");function mG(e){return e.match(dG)||[]}var GD=mG;function hG(e){return qf(e)?GD(e):BD(e)}var JD=hG;function gG(e){return function(t){t=Hi(t);var r=qf(t)?JD(t):void 0,n=r?r[0]:t.charAt(0),o=r?qD(r,1).join(""):t.slice(1);return n[e]()+o}}var ZD=gG;var yG=ZD("toUpperCase"),YD=yG;function bG(e,t,r,n){var o=-1,i=e==null?0:e.length;for(n&&i&&(r=e[++o]);++o{switch(e){case _e.highlight:return"align-left";case _e.underline:return"underline";case _e.image:return"frame";case _e.text:return"text-select";case _e.note:case _e.ink:default:return"file-question"}};S();var CP=e=>{let{annotRenderer:t,store:r}=Q(Be),n=_t(r,t.storeSelector,Bi);return t.get(e,n)};S();var TP=e=>{let{getImgSrc:t}=Q(Be);return ne(()=>t(e),[e,t])};function Ly({className:e,...t}){return m(Ro,{icon:"more-vertical",className:ee("annot-header-more-options",e),"aria-label":"More options",size:"0.9rem","aria-label-delay":"50",...t})}S();var OP=st(function({pageLabel:t,backlink:r,className:n,...o}){let i=t?`Page ${t}`:"";return r?m("a",{className:ee("annot-page","external-link","bg-[length:12px] bg-[center_right_3px] pr-[18px] text-xs",n),href:r,"aria-label":`Open annotation in Zotero at page ${t}`,"aria-label-delay":"500",...o,children:i}):m("span",{className:ee("annot-page",n),children:i})});S();function qy({tags:e}){return e.length===0?null:m("div",{className:"annot-tags-container",children:e.map(t=>m(uJ,{...t},t.tagID))})}var uJ=st(function({name:t}){return m("a",{className:ee("tag","annot-tag"),children:t})});function By({collapsed:e=!1,annotation:t,checkbox:r,tags:n,className:o,...i}){let s=F(null),{onMoreOptions:a,onDragStart:u,onShowDetails:l}=Q(Be),c=Qh.selectKeys(t,["type","text","pageLabel"]),f=CP(t),p=hr(h=>a(h,t)),d=hr(()=>l("annot",t.itemID));return m("div",{className:ee("annot-preview","bg-primary shadow-border col-span-1 flex flex-col divide-y overflow-auto rounded-sm transition-colors",o),"data-id":t.itemID,...i,children:[m(Fy,{className:"bg-primary-alt py-1 pl-2 pr-1",checkbox:r,drag:m(IP,{type:t.type,color:t.color,icon:_P(t.type),draggable:f!==null,onDragStart:hr(h=>f&&u(h,f,s.current)),size:16}),buttons:m($,{children:[m(Za,{className:"p-0.5",size:14,onClick:d}),m(Ly,{className:"p-0",onClick:p})]}),onMoreOptions:p,children:m(OP,{pageLabel:t.pageLabel,backlink:kn(t)})}),m(ED,{ref:s,className:"px-2 py-1",children:m("blockquote",{className:ee("border-l-blockquote pl-2 leading-tight",{"line-clamp-3":e}),style:{borderColor:t.color??"var(--interactive-accent)"},children:m(SD,{...c,collapsed:e,imgSrc:TP(t)})})}),t.comment&&m(wD,{content:t.comment}),n&&m(qy,{tags:n})]})}function zy({selectable:e=!1,collapsed:t,annotations:r,getTags:n}){let[o,{add:i,remove:s}]=Oy();return m("div",{role:"list",className:"@md:grid-cols-2 @md:gap-3 @3xl:grid-cols-4 grid grid-cols-1 gap-2",children:r.map(a=>m(By,{checkbox:e&&m(cJ,{checked:o.has(a.itemID),onChange:u=>u?i(a.itemID):s(a.itemID)}),collapsed:t,role:"listitem",annotation:a,tags:n(a.itemID)},a.itemID))})}function cJ({checked:e,onChange:t}){return m("div",{className:"flex h-5 items-center",children:m("input",{type:"checkbox",className:"m-0 h-4 w-4",checked:e,onChange:r=>t(r.target.checked)})})}S();var lJ=()=>_t(Q(Be).store,e=>({attachments:e.allAttachments,onChange:e.setActiveAtch,value:e.attachmentID}),Bi);function Uy(){let{attachments:e,onChange:t,value:r}=lJ();return e?e.length===1?null:e.length<=0?m("span",{className:"atch-select-empty",children:"No attachments available"}):m("select",{className:"atch-select",onChange:n=>t(parseInt(n.target.value,10)),value:r??void 0,children:e.map(({itemID:n,path:o,annotCount:i})=>m("option",{value:n,children:["(",i,") ",o?.replace(/^storage:/,"")]},n))}):m($,{children:"Loading"})}function Wy({isCollapsed:e,...t}){return m(Do,{...t,icon:e?"chevrons-up-down":"chevrons-down-up","aria-label":e?"Expand":"Collapse"})}S();function Bf(e){let{store:t,onSetFollow:r}=Q(Be),n=_t(t,s=>s.follow),o=n===null?"not following":n==="ob-note"?"active literature note":"active literature in Zotero reader";return m($,{children:[m(Do,{...e,onClick:r,icon:n===null?"unlink":"link","aria-label":"Choose follow mode"+(n===null?" (Currently linked with literature)":""),"aria-label-delay":"50"}),n!==null&&m("span",{className:"ml-1","aria-label":`Following ${o}`,children:n==="ob-note"?"ob":"zt"})]})}function zf({children:e,buttons:t}){return m("div",{className:"nav-header",children:[m("div",{className:"nav-buttons-container",children:t}),e]})}function Hy(e){return m(Do,{...e,icon:"refresh-ccw","aria-label":"Refresh annotation list","aria-label-delay":"50"})}var fJ=()=>{let{registerDbUpdate:e,store:t}=Q(Be),r=_t(t,n=>n.refresh);U(()=>e(r),[e,r])};function Qa(){fJ();let{store:e}=Q(Be),t=_t(e,r=>r.doc);return t?m(pJ,{docItem:t.docItem}):m($,{children:[m(zf,{buttons:m(Bf,{})}),m("div",{className:"pane-empty p-2",children:"Active file not literature note"})]})}function pJ({docItem:e}){let{refreshConn:t,onShowDetails:r}=Q(Be),[n,{toggle:o}]=Ff(!1),i=dJ();return m($,{children:[m(zf,{buttons:m($,{children:[m(Za,{className:"nav-action-button",onClick:hr(()=>r("doc-item",e.itemID))}),m(Wy,{className:"nav-action-button",isCollapsed:n,onClick:o}),m(Hy,{className:"nav-action-button",onClick:t}),m(Bf,{})]}),children:m(Uy,{})}),m("div",{className:ee("annots-container @container","overflow-auto px-3 pt-1 pb-8 text-xs"),children:i?m(zy,{collapsed:n,...i}):m($,{children:"Loading"})})]})}var dJ=()=>_t(Q(Be).store,e=>!e.doc||!e.annotations||!e.attachment?null:{annotations:e.annotations,getTags:t=>e.tags[t]??[]},Bi);S();function ce(){return ce=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&(r[o]=e[o]);return r}function Uf(e,t=166){let r;function n(...o){let i=()=>{e.apply(this,o)};clearTimeout(r),r=setTimeout(i,t)}return n.clear=()=>{clearTimeout(r)},n}function Vy(e){return e&&e.ownerDocument||document}function eu(e){return Vy(e).defaultView||window}function Gy(e,t){typeof e=="function"?e(t):e&&(e.current=t)}S();var mJ=typeof window<"u"?Et:U,Jy=mJ;S();function Wf(...e){return ne(()=>e.every(t=>t==null)?null:t=>{e.forEach(r=>{Gy(r,t)})},e)}S();S();var hJ=["onChange","maxRows","minRows","style","value"];function Hf(e){return parseInt(e,10)||0}var gJ={shadow:{visibility:"hidden",position:"absolute",overflow:"hidden",height:0,top:0,left:0,transform:"translateZ(0)"}};function AP(e){return e==null||Object.keys(e).length===0||e.outerHeightStyle===0&&!e.overflow}var yJ=Z(function(t,r){let{onChange:n,maxRows:o,minRows:i=1,style:s,value:a}=t,u=Ky(t,hJ),{current:l}=F(a!=null),c=F(null),f=Wf(r,c),p=F(null),d=F(0),[h,b]=j({outerHeightStyle:0}),y=Y(()=>{let V=c.current,G=eu(V).getComputedStyle(V);if(G.width==="0px")return{outerHeightStyle:0};let K=p.current;K.style.width=G.width,K.value=V.value||t.placeholder||"x",K.value.slice(-1)===` +`&&(K.value+=" ");let P=G.boxSizing,X=Hf(G.paddingBottom)+Hf(G.paddingTop),C=Hf(G.borderBottomWidth)+Hf(G.borderTopWidth),_=K.scrollHeight;K.value="x";let I=K.scrollHeight,B=_;i&&(B=Math.max(Number(i)*I,B)),o&&(B=Math.min(Number(o)*I,B)),B=Math.max(B,I);let D=B+(P==="border-box"?X+C:0),re=Math.abs(B-_)<=1;return{outerHeightStyle:D,overflow:re}},[o,i,t.placeholder]),v=(V,J)=>{let{outerHeightStyle:G,overflow:K}=J;return d.current<20&&(G>0&&Math.abs((V.outerHeightStyle||0)-G)>1||V.overflow!==K)?(d.current+=1,{overflow:K,outerHeightStyle:G}):V},w=Y(()=>{let V=y();AP(V)||b(J=>v(J,V))},[y]),T=()=>{let V=y();AP(V)||Rr(()=>{b(J=>v(J,V))})};return U(()=>{let V=Uf(()=>{d.current=0,c.current&&T()}),J,G=c.current,K=eu(G);return K.addEventListener("resize",V),typeof ResizeObserver<"u"&&(J=new ResizeObserver(V),J.observe(G)),()=>{V.clear(),K.removeEventListener("resize",V),J&&J.disconnect()}}),Jy(()=>{w()}),U(()=>{d.current=0},[a]),m($,{children:[m("textarea",ce({value:a,onChange:V=>{d.current=0,l||w(),n&&n(V)},ref:f,rows:i,style:ce({height:h.outerHeightStyle,overflow:h.overflow?"hidden":void 0},s)},u)),m("textarea",{"aria-hidden":!0,className:t.className,readOnly:!0,ref:p,tabIndex:-1,style:ce({},gJ.shadow,s,{padding:0})})]})}),tu=yJ;S();S();S();S();function bJ(e,t){typeof e=="function"?e(t):e!=null&&(e.current=t)}function Zy(...e){return t=>e.forEach(r=>bJ(r,t))}function Kf(...e){return Y(Zy(...e),e)}S();function kP(e,t=[]){let r=[];function n(i,s){let a=Le(s),u=r.length;r=[...r,s];function l(f){let{scope:p,children:d,...h}=f,b=p?.[e][u]||a,y=ne(()=>h,Object.values(h));return H(b.Provider,{value:y},d)}function c(f,p){let d=p?.[e][u]||a,h=Q(d);if(h)return h;if(s!==void 0)return s;throw new Error(`\`${f}\` must be used within \`${i}\``)}return l.displayName=i+"Provider",[l,c]}let o=()=>{let i=r.map(s=>Le(s));return function(a){let u=a?.[e]||i;return ne(()=>({[`__scope${e}`]:{...a,[e]:u}}),[a,u])}};return o.scopeName=e,[n,vJ(o,...t)]}function vJ(...e){let t=e[0];if(e.length===1)return t;let r=()=>{let n=e.map(o=>({useScope:o(),scopeName:o.scopeName}));return function(i){let s=n.reduce((a,{useScope:u,scopeName:l})=>{let f=u(i)[`__scope${l}`];return{...a,...f}},{});return ne(()=>({[`__scope${t.scopeName}`]:s}),[s])}};return r.scopeName=t.scopeName,r}function Ct(e,t,{checkForDefaultPrevented:r=!0}={}){return function(o){if(e?.(o),r===!1||!o.defaultPrevented)return t?.(o)}}S();S();function Yy(e){let t=F(e);return U(()=>{t.current=e}),ne(()=>(...r)=>{var n;return(n=t.current)===null||n===void 0?void 0:n.call(t,...r)},[])}function NP({prop:e,defaultProp:t,onChange:r=()=>{}}){let[n,o]=xJ({defaultProp:t,onChange:r}),i=e!==void 0,s=i?e:n,a=Yy(r),u=Y(l=>{if(i){let f=typeof l=="function"?l(e):l;f!==e&&a(f)}else o(l)},[i,e,o,a]);return[s,u]}function xJ({defaultProp:e,onChange:t}){let r=j(e),[n]=r,o=F(n),i=Yy(t);return U(()=>{o.current!==n&&(i(n),o.current=n)},[n,o,i]),r}S();function RP(e){let t=F({value:e,previous:e});return ne(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}S();S();var ru=globalThis?.document?Et:()=>{};function DP(e){let[t,r]=j(void 0);return ru(()=>{if(e){r({width:e.offsetWidth,height:e.offsetHeight});let n=new ResizeObserver(o=>{if(!Array.isArray(o)||!o.length)return;let i=o[0],s,a;if("borderBoxSize"in i){let u=i.borderBoxSize,l=Array.isArray(u)?u[0]:u;s=l.inlineSize,a=l.blockSize}else s=e.offsetWidth,a=e.offsetHeight;r({width:s,height:a})});return n.observe(e,{box:"border-box"}),()=>n.unobserve(e)}else r(void 0)},[e]),t}S();S();function wJ(e,t){return Nr((r,n)=>{let o=t[r][n];return o??r},e)}var Xy=e=>{let{present:t,children:r}=e,n=EJ(t),o=typeof r=="function"?r({present:n.isPresent}):Ve.only(r),i=Kf(n.ref,o.ref);return typeof r=="function"||n.isPresent?Xt(o,{ref:i}):null};Xy.displayName="Presence";function EJ(e){let[t,r]=j(),n=F({}),o=F(e),i=F("none"),s=e?"mounted":"unmounted",[a,u]=wJ(s,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return U(()=>{let l=Vf(n.current);i.current=a==="mounted"?l:"none"},[a]),ru(()=>{let l=n.current,c=o.current;if(c!==e){let p=i.current,d=Vf(l);e?u("MOUNT"):d==="none"||l?.display==="none"?u("UNMOUNT"):u(c&&p!==d?"ANIMATION_OUT":"UNMOUNT"),o.current=e}},[e,u]),ru(()=>{if(t){let l=f=>{let d=Vf(n.current).includes(f.animationName);f.target===t&&d&&Rr(()=>u("ANIMATION_END"))},c=f=>{f.target===t&&(i.current=Vf(n.current))};return t.addEventListener("animationstart",c),t.addEventListener("animationcancel",l),t.addEventListener("animationend",l),()=>{t.removeEventListener("animationstart",c),t.removeEventListener("animationcancel",l),t.removeEventListener("animationend",l)}}else u("ANIMATION_END")},[t,u]),{isPresent:["mounted","unmountSuspended"].includes(a),ref:Y(l=>{l&&(n.current=getComputedStyle(l)),r(l)},[])}}function Vf(e){return e?.animationName||"none"}S();S();S();var eb=Z((e,t)=>{let{children:r,...n}=e,o=Ve.toArray(r),i=o.find(IJ);if(i){let s=i.props.children,a=o.map(u=>u===i?Ve.count(s)>1?Ve.only(null):Pt(s)?s.props.children:null:u);return H(Qy,ce({},n,{ref:t}),Pt(s)?Xt(s,void 0,a):null)}return H(Qy,ce({},n,{ref:t}),r)});eb.displayName="Slot";var Qy=Z((e,t)=>{let{children:r,...n}=e;return Pt(r)?Xt(r,{..._J(n,r.props),ref:Zy(t,r.ref)}):Ve.count(r)>1?Ve.only(null):null});Qy.displayName="SlotClone";var SJ=({children:e})=>H($,null,e);function IJ(e){return Pt(e)&&e.type===SJ}function _J(e,t){let r={...t};for(let n in t){let o=e[n],i=t[n];/^on[A-Z]/.test(n)?o&&i?r[n]=(...a)=>{i(...a),o(...a)}:o&&(r[n]=o):n==="style"?r[n]={...o,...i}:n==="className"&&(r[n]=[o,i].filter(Boolean).join(" "))}return{...e,...r}}var CJ=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"],tb=CJ.reduce((e,t)=>{let r=Z((n,o)=>{let{asChild:i,...s}=n,a=i?eb:t;return U(()=>{window[Symbol.for("radix-ui")]=!0},[]),H(a,ce({},s,{ref:o}))});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});var PP="Checkbox",[TJ,bOe]=kP(PP),[OJ,AJ]=TJ(PP),kJ=Z((e,t)=>{let{__scopeCheckbox:r,name:n,checked:o,defaultChecked:i,required:s,disabled:a,value:u="on",onCheckedChange:l,...c}=e,[f,p]=j(null),d=Kf(t,T=>p(T)),h=F(!1),b=f?!!f.closest("form"):!0,[y=!1,v]=NP({prop:o,defaultProp:i,onChange:l}),w=F(y);return U(()=>{let T=f?.form;if(T){let M=()=>v(w.current);return T.addEventListener("reset",M),()=>T.removeEventListener("reset",M)}},[f,v]),H(OJ,{scope:r,state:y,disabled:a},H(tb.button,ce({type:"button",role:"checkbox","aria-checked":Po(y)?"mixed":y,"aria-required":s,"data-state":FP(y),"data-disabled":a?"":void 0,disabled:a,value:u},c,{ref:d,onKeyDown:Ct(e.onKeyDown,T=>{T.key==="Enter"&&T.preventDefault()}),onClick:Ct(e.onClick,T=>{v(M=>Po(M)?!0:!M),b&&(h.current=T.isPropagationStopped(),h.current||T.stopPropagation())})})),b&&H(DJ,{control:f,bubbles:!h.current,name:n,value:u,checked:y,required:s,disabled:a,style:{transform:"translateX(-100%)"}}))}),NJ="CheckboxIndicator",RJ=Z((e,t)=>{let{__scopeCheckbox:r,forceMount:n,...o}=e,i=AJ(NJ,r);return H(Xy,{present:n||Po(i.state)||i.state===!0},H(tb.span,ce({"data-state":FP(i.state),"data-disabled":i.disabled?"":void 0},o,{ref:t,style:{pointerEvents:"none",...e.style}})))}),DJ=e=>{let{control:t,checked:r,bubbles:n=!0,...o}=e,i=F(null),s=RP(r),a=DP(t);return U(()=>{let u=i.current,l=window.HTMLInputElement.prototype,f=Object.getOwnPropertyDescriptor(l,"checked").set;if(s!==r&&f){let p=new Event("click",{bubbles:n});u.indeterminate=Po(r),f.call(u,Po(r)?!1:r),u.dispatchEvent(p)}},[s,r,n]),H("input",ce({type:"checkbox","aria-hidden":!0,defaultChecked:Po(r)?!1:r},o,{tabIndex:-1,ref:i,style:{...e.style,...a,position:"absolute",pointerEvents:"none",opacity:0,margin:0}}))};function Po(e){return e==="indeterminate"}function FP(e){return Po(e)?"indeterminate":e?"checked":"unchecked"}var rb=kJ,$P=RJ;S();var nb=Z(({className:e,checked:t,...r},n)=>m(rb,{ref:n,className:ee("data-[state=checked]:text-mod-error peer h-3 w-3 shrink-0 rounded-sm border disabled:cursor-not-allowed disabled:opacity-50 bg-primary obzt-btn-reset",e),checked:t,...r,children:m($P,{className:ee("flex items-center justify-center"),children:m(jn,{icon:"chevrons-down",size:"0.75rem",className:"contents"})})}));nb.displayName=rb.displayName;var MP=Z(({id:e,checked:t,onCheckChange:r,title:n,disabled:o,className:i,...s},a)=>m("div",{className:ee("flex items-center gap-x-1","rounded-sm focus-within:outline-none focus-within:ring-2 focus-within:ring-mod-border-focus focus-within:ring-offset-2",t&&"animate-pulse",i),ref:a,...s,children:[m(nb,{className:ee("h-3 w-3",o&&"hidden"),id:e,checked:t,disabled:o,onCheckedChange:r}),m("label",{htmlFor:e,className:"peer-[[data-state=checked]]:text-mod-error text-status-bar text-txt-status-bar leading-none peer-disabled:cursor-not-allowed",children:n})]}));MP.displayName="ImportingStatus";var Qp=require("obsidian");S();var Vi=require("obsidian");S();var jP={sanitize:DOMPurify.sanitize.bind(DOMPurify),setIcon:Vi.setIcon,renderMarkdown(e){return m(FJ,{content:e})}};function FJ({content:e}){let t=F(null);return m("div",{className:"contents",ref:n=>{n?(n.empty(),t.current&&t.current.unload(),t.current=new Vi.Component,Vi.MarkdownRenderer.renderMarkdown(e,n,"",t.current)):t.current&&(t.current.unload(),t.current=null)}})}var Fo=require("obsidian"),Gf=class extends Fo.FileView{constructor(t){super(t),this.navigation=!1,this.allowNoFile=!0,this.requestUpdate=(0,Fo.debounce)(()=>this.update(),10)}load(){super.load(),this.registerEvent(this.app.workspace.on("file-open",this.onFileOpen,this))}async setState(t,r){if(!Object.hasOwn(t,"file")&&!Object.hasOwn(t,"group")){let n=this.leaf.workspace.getActiveFile();n&&(t.file=n?.path)}await super.setState(t,r)}onLoadFile(t){return this.requestUpdate()}onUnloadFile(t){return this.requestUpdate()}onFileOpen(t){this.leaf.group||this.leaf.pinned||(t instanceof Fo.TFile?this.loadFile(t):this.loadFile(null),this.requestUpdate())}onGroupChange(){if(super.onGroupChange(),this.leaf.group)for(let t=0,r=this.leaf.workspace.getGroupLeaves(this.leaf.group);ttypeof e=="string"&&e.trim().length>0?await t.database.search(e):await t.database.getItemsOf(50);function Xf({item:e,fields:t},r){r.addClass("mod-complex");let n=r.createDiv("suggestion-content").createDiv("suggestion-title").createSpan(),o=r.createDiv("suggestion-aux");for(let a of t){let u=o.createEl("kbd","suggestion-hotkey");switch(u.setAttribute("aria-label",a),a){case"title":(0,Jf.setIcon)(u,"type");break;case"creators":(0,Jf.setIcon)(u,"user");break;case"date":(0,Jf.setIcon)(u,"calendar");break;default:u.setText(a);break}}let[i]=e.title??[],s=n.createDiv({cls:"title"});typeof i=="string"&&i?s.setText(i):s.setText("Title missing"),this.plugin.settings.current?.showCitekeyInSuggester&&e.citekey&&n.createDiv({cls:"citekey",text:e.citekey}),$J(e)&&n.append(MJ(e))}var $J=e=>e.itemType==="journalArticle",MJ=e=>{let{creators:t,date:r,publicationTitle:n,volume:o,issue:i,pages:s}=e,a={creators:jJ(t),date:r,publication:n,volume:o,issue:i,pages:s},u=(l,c,f)=>a[c]&&l.createSpan({cls:f??c,text:a[c]??void 0});return createDiv({cls:"meta"},l=>{(a.creators||a.date)&&l.createSpan({cls:"author-year"},c=>{u(c,"creators"),u(c,"date")}),u(l,"publication"),(a.volume||a.issue)&&l.createSpan({cls:"vol-issue"},c=>{u(c,"volume"),u(c,"issue")}),u(l,"pages")})},jJ=e=>{if(!e||!e[0])return"";let t=e[0],r=Ml(t)||jl(t)?t.lastName:"";return e.length>1&&(r=r.trim()+" et al."),r};var nu=class extends LP.EditorSuggest{constructor(r){super(r.app);this.plugin=r;this.suggestEl.addClass(Zf)}getSuggestions(r){return Yf(r.query,this.plugin)}renderSuggestion=Xf.bind(this)};var nn=class extends Ll{constructor(r){super(r.app);this.plugin=r;this.modalEl.addClass(Zf)}getSuggestions(r){return Yf(r,this.plugin)}renderSuggestion=Xf.bind(this);onChooseSuggestion(){}};var zP=require("obsidian");var qP=require("@codemirror/state");async function BP(e,t,r=t.settings.current?.updateOverwrite){let{app:n,noteIndex:o,templateRenderer:i}=t,s=o.getNotesFor(e);if(s.length===0)return null;let a=t.settings.libId,u=await t.databaseAPI.getAttachments(e.itemID,a),l=new Set(s.flatMap(y=>ko(y,t.app.metadataCache))),c=u.filter(y=>l.has(y.itemID)),f;c.length===0&&(f=await Zr(u,t.app),f&&(Ni(f,e),c.push(f)));let p=await t.databaseAPI.getNotes(e.itemID,a).then(y=>t.noteParser.normalizeNotes(y)),d=await ou(e,{all:u,selected:c,notes:p},t),h=Object.values(d)[0],b={notes:s.length,addedAnnots:0,updatedAnnots:0};for(let y of s){let v=n.metadataCache.getCache(y);if(!v)continue;let w=ko(y,t.app.metadataCache);w||(f===void 0&&(f=await Zr(c,t.app)),f?w=[f.itemID]:w=[]);let T=n.vault.getAbstractFileByPath(y),M={plugin:t,sourcePath:y};if(r){let _=await i.renderNote(d[w[0]],M);await n.vault.modify(T,_);continue}let V=Ya((v.sections?.filter(Ka)??[]).flatMap(_=>Va(_.id).map(I=>[I,_.position])),bo(([_])=>_),ki((_,I)=>({key:_,blocks:I.map(([B,D])=>D)}))),J=new Set(Object.values(v.blocks??{})?.filter(Ka).flatMap(_=>Va(_.id).map(I=>I))),G=new Map(w.map(_=>[d[_],[]])),K=[];if(await Promise.all(w.map(async _=>{let I=d[_];if(!(!I.annotations||I.annotations.length===0))return await Promise.all(I.annotations.map(async B=>{let D=Bt(B,!0),re=V[D];if(re){if(!t.settings.current?.updateAnnotBlock)return;let oe=await i.renderAnnot(B,I,M);K.push(...re.blocks.map(me=>({from:me.start.offset,to:me.end.offset,insert:oe})))}else J.has(D)||G.get(I).push(B)})??[])})),K.length>0){let _=qP.EditorState.create({doc:await n.vault.read(T)}).update({changes:K}).state.doc.toString();await n.vault.modify(T,_)}await i.setFrontmatterTo(T,It(h,M).docItem);let P=[...G].reduce((_,[I,B])=>{if(B.length===0)return _;let D=i.renderAnnots({...I,annotations:B},M);return(_&&_+` +`)+D},"");P&&await n.vault.append(T,P);let X=K.length,C=[...G.values()].reduce((_,I)=>_+I.length,0);b.updatedAnnots+=X,b.addedAnnots+=C}return b}async function ou(e,{all:t,selected:r,notes:n},o){let i=o.settings.libId,s=await o.databaseAPI.getTags([[e.itemID,i]]);if(r.length===0)return{[-1]:{docItem:e,attachment:null,tags:s,allAttachments:t,annotations:[],notes:n}};let a={};for(let u of r){let l=u?await o.databaseAPI.getAnnotations(u.itemID,i):[];a[u.itemID]={docItem:e,attachment:u,tags:{...s,...await o.databaseAPI.getTags(l.map(c=>[c.itemID,i]))},allAttachments:t,annotations:l,notes:n}}return a}async function Qf({alt:e,item:t},{start:r,end:n,editor:o,file:i},s){let{plugin:a}=s,u=a.settings.libId,l=await a.databaseAPI.getAttachments(t.itemID,u),c=new Set(ko(i,a.app.metadataCache)),f=l.filter(y=>c.has(y.itemID)),p;f.length===0&&(p=await Zr(l,a.app),p&&(Ni(p,t),f.push(p)));let d=await a.databaseAPI.getNotes(t.itemID,u).then(y=>a.noteParser.normalizeNotes(y)),h=await ou(t,{all:l,selected:f,notes:d},s.plugin),b=s.renderCitations(Object.values(h),{plugin:s.plugin},e);o.replaceRange(b,r,n),o.setCursor(o.offsetToPos(o.posToOffset(r)+b.length))}var UP=e=>zP.Keymap.isModifier(e,"Shift");var LJ=[{command:"\u2191\u2193",purpose:"to navigate"},{command:"\u21B5",purpose:"to insert primary Markdown citation"},{command:"\u21B5 (end with /)",purpose:"Insert secondary Markdown citation"}],iu=class extends nu{constructor(r){super(r);this.plugin=r;this.setInstructions(LJ)}onTrigger(r,n){if(!this.plugin.settings.current?.citationEditorSuggester)return null;let o=n.getLine(r.line),s=o.substring(0,r.ch).match(/[[【]@([^\]】]*)$/);if(!s)return null;let a={...r};return(o[r.ch]==="]"||o[r.ch]==="\u3011")&&(a.ch+=1),{end:a,start:{ch:s.index,line:r.line,alt:!!s[0]?.endsWith("/")},query:s[1].replaceAll(/\/$/g,"")}}selectSuggestion(r){this.context&&Qf({item:r.item,alt:this.context.start.alt??!1},this.context,this.plugin.templateRenderer)}};var qJ=[{command:"\u2191\u2193",purpose:"to navigate"},{command:"\u21B5",purpose:"to insert Markdown citation"},{command:"shift \u21B5",purpose:"to insert secondary Markdown citation"},{command:"esc",purpose:"to dismiss"}],ob=class extends nn{constructor(r){super(r);this.plugin=r;this.setInstructions(qJ)}};async function ib(e,t,r){let n=await ep(r);if(!n)return!1;let o=e.getCursor();return await Qf({item:n.value.item,alt:UP(n.evt)},{start:o,end:o,editor:e,file:t},r.templateRenderer),!0}async function ep(e){return await xo(new ob(e))}var qo=require("obsidian");S();S();S();S();var qn=ge(Ln());S();function ab(e){let t=Object.prototype.toString.call(e).slice(8,-1);return t==="Object"&&typeof e[Symbol.iterator]=="function"?"Iterable":t==="Custom"&&e.constructor!==Object&&e instanceof Object?"Object":t}var VP=ge(Ln());S();var au=ge(Ln());S();var WP=ge(Ln());S();function su(e){let{styling:t,arrowStyle:r="single",expanded:n,nodeType:o,onClick:i}=e;return R.createElement("div",(0,WP.default)({},t("arrowContainer",r),{onClick:i}),R.createElement("div",t(["arrow","arrowSign"],o,n,r),"\u25B6",r==="double"&&R.createElement("div",t(["arrowSign","arrowSignInner"]),"\u25B6")))}function BJ(e,t){return e==="Object"?Object.keys(t).length:e==="Array"?t.length:1/0}function zJ(e){return typeof e.set=="function"}function UJ(e,t,r){let n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:0,o=arguments.length>4&&arguments[4]!==void 0?arguments[4]:1/0,i;if(e==="Object"){let s=Object.getOwnPropertyNames(t);r&&s.sort(r===!0?void 0:r),s=s.slice(n,o+1),i={entries:s.map(a=>({key:a,value:t[a]}))}}else if(e==="Array")i={entries:t.slice(n,o+1).map((s,a)=>({key:a+n,value:s}))};else{let s=0,a=[],u=!0,l=zJ(t);for(let c of t){if(s>o){u=!1;break}n<=s&&(l&&Array.isArray(c)?typeof c[0]=="string"||typeof c[0]=="number"?a.push({key:c[0],value:c[1]}):a.push({key:`[entry ${s}]`,value:{"[key]":c[0],"[value]":c[1]}}):a.push({key:s,value:c})),s++}i={hasMore:!u,entries:a}}return i}function ub(e,t,r){let n=[];for(;t-e>r*r;)r=r*r;for(let o=e;o<=t;o+=r)n.push({from:o,to:Math.min(t,o+r-1)});return n}function cb(e,t,r,n){let o=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0,i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:1/0,s=UJ.bind(null,e,t,r);if(!n)return s().entries;let a=i<1/0,u=Math.min(i-o,BJ(e,t));if(e!=="Iterable"){if(u<=n||n<7)return s(o,i).entries}else if(u<=n&&!a)return s(o,i).entries;let l;if(e==="Iterable"){let{hasMore:c,entries:f}=s(o,o+n-1);l=c?[...f,...ub(o+n,o+2*n-1,n)]:f}else l=a?ub(o,i,n):[...s(0,n-5).entries,...ub(n-4,u-5,n),...s(u-4,u-1).entries];return l}var HP=ge(Ln());S();function lb(e){let{styling:t,from:r,to:n,renderChildNodes:o,nodeType:i}=e,[s,a]=j(!1),u=Y(()=>{a(!s)},[s]);return s?R.createElement("div",t("itemRange",s),o(e,r,n)):R.createElement("div",(0,HP.default)({},t("itemRange",s),{onClick:u}),R.createElement(su,{nodeType:i,styling:t,expanded:!1,onClick:u,arrowStyle:"double"}),`${r} ... ${n}`)}function WJ(e){return e.to!==void 0}function KP(e,t,r){let{nodeType:n,data:o,collectionLimit:i,circularCache:s,keyPath:a,postprocessValue:u,sortObjectKeys:l}=e,c=[];return cb(n,o,l,i,t,r).forEach(f=>{if(WJ(f))c.push(R.createElement(lb,(0,au.default)({},e,{key:`ItemRange--${f.from}-${f.to}`,from:f.from,to:f.to,renderChildNodes:KP})));else{let{key:p,value:d}=f,h=s.indexOf(d)!==-1;c.push(R.createElement(uu,(0,au.default)({},e,{postprocessValue:u,collectionLimit:i,key:`Node--${p}`,keyPath:[p,...a],value:u(d),circularCache:[...s,d],isCircular:h,hideRoot:!1})))}}),c}function $o(e){let{circularCache:t=[],collectionLimit:r,createItemString:n,data:o,expandable:i,getItemString:s,hideRoot:a,isCircular:u,keyPath:l,labelRenderer:c,level:f=0,nodeType:p,nodeTypeIndicator:d,shouldExpandNodeInitially:h,styling:b}=e,[y,v]=j(u?!1:h(l,o,f)),w=Y(()=>{i&&v(!y)},[i,y]),T=y||a&&f===0?KP({...e,circularCache:t,level:f+1}):null,M=R.createElement("span",b("nestedNodeItemType",y),d),V=s(p,o,M,n(o,r),l),J=[l,p,y,i];return a?R.createElement("li",b("rootNode",...J),R.createElement("ul",b("rootNodeChildren",...J),T)):R.createElement("li",b("nestedNode",...J),i&&R.createElement(su,{styling:b,nodeType:p,expanded:y,onClick:w}),R.createElement("label",(0,au.default)({},b(["label","nestedNodeLabel"],...J),{onClick:w}),c(...J)),R.createElement("span",(0,au.default)({},b("nestedNodeItemString",...J),{onClick:w}),V),R.createElement("ul",b("nestedNodeChildren",...J),T))}function HJ(e){let t=Object.getOwnPropertyNames(e).length;return`${t} ${t!==1?"keys":"key"}`}function fb(e){let{data:t,...r}=e;return R.createElement($o,(0,VP.default)({},r,{data:t,nodeType:"Object",nodeTypeIndicator:r.nodeType==="Error"?"Error()":"{}",createItemString:HJ,expandable:Object.getOwnPropertyNames(t).length>0}))}var GP=ge(Ln());S();function KJ(e){return`${e.length} ${e.length!==1?"items":"item"}`}function pb(e){let{data:t,...r}=e;return R.createElement($o,(0,GP.default)({},r,{data:t,nodeType:"Array",nodeTypeIndicator:"[]",createItemString:KJ,expandable:t.length>0}))}var JP=ge(Ln());S();function VJ(e,t){let r=0,n=!1;if(Number.isSafeInteger(e.size))r=e.size;else for(let o of e){if(t&&r+1>t){n=!0;break}r+=1}return`${n?">":""}${r} ${r!==1?"entries":"entry"}`}function db(e){return R.createElement($o,(0,JP.default)({},e,{nodeType:"Iterable",nodeTypeIndicator:"()",createItemString:VJ,expandable:!0}))}S();function gr(e){let{nodeType:t,styling:r,labelRenderer:n,keyPath:o,valueRenderer:i,value:s,valueGetter:a=u=>u}=e;return R.createElement("li",r("value",t,o),R.createElement("label",r(["label","valueLabel"],t,o),n(o,t,!1,!1)),R.createElement("span",r("valueText",t,o),i(a(s),s,...o)))}function uu(e){let{getItemString:t,keyPath:r,labelRenderer:n,styling:o,value:i,valueRenderer:s,isCustomNode:a,...u}=e,l=a(i)?"Custom":ab(i),c={getItemString:t,key:r[0],keyPath:r,labelRenderer:n,nodeType:l,styling:o,value:i,valueRenderer:s},f={...u,...c,data:i,isCustomNode:a};switch(l){case"Object":case"Error":case"WeakMap":case"WeakSet":return R.createElement(fb,f);case"Array":return R.createElement(pb,f);case"Iterable":case"Map":case"Set":return R.createElement(db,f);case"String":return R.createElement(gr,(0,qn.default)({},c,{valueGetter:p=>`"${p}"`}));case"Number":return R.createElement(gr,c);case"Boolean":return R.createElement(gr,(0,qn.default)({},c,{valueGetter:p=>p?"true":"false"}));case"Date":return R.createElement(gr,(0,qn.default)({},c,{valueGetter:p=>p.toISOString()}));case"Null":return R.createElement(gr,(0,qn.default)({},c,{valueGetter:()=>"null"}));case"Undefined":return R.createElement(gr,(0,qn.default)({},c,{valueGetter:()=>"undefined"}));case"Function":case"Symbol":return R.createElement(gr,(0,qn.default)({},c,{valueGetter:p=>p.toString()}));case"Custom":return R.createElement(gr,c);default:return R.createElement(gr,(0,qn.default)({},c,{valueGetter:()=>`<${l}>`}))}}var Kp=ge(tp()),w2=ge(QP()),Cb=ge(sF()),Tb=ge(T$()),Sb=ge(Y$()),Ib=ge(g2());function y2(e){var t=e[0],r=e[1],n=e[2],o,i,s;return o=t*1+r*0+n*1.13983,i=t*1+r*-.39465+n*-.5806,s=t*1+r*2.02311+n*0,o=Math.min(Math.max(0,o),1),i=Math.min(Math.max(0,i),1),s=Math.min(Math.max(0,s),1),[o*255,i*255,s*255]}function b2(e){var t=e[0]/255,r=e[1]/255,n=e[2]/255,o=t*.299+r*.587+n*.114,i=t*-.14713+r*-.28886+n*.436,s=t*.615+r*-.51499+n*-.10001;return[o,i,s]}function v2(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),r.push.apply(r,n)}return r}function Tt(e){for(var t=1;t1?s-1:0),u=1;u1?s-1:0),u=1;u1?s-1:0),u=1;u1?s-1:0),u=1;u1?s-1:0),u=1;u2?n-2:0),i=2;i1&&arguments[1]!==void 0?arguments[1]:{},r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},n=t.defaultBase16,o=n===void 0?E2:n,i=t.base16Themes,s=i===void 0?null:i,a=yX(r,s);a&&(r=Tt(Tt({},a),r));for(var u=x2.reduce(function(b,y){return b[y]=r[y]||o[y],b},{}),l=Object.keys(r).reduce(function(b,y){return x2.indexOf(y)===-1&&(b[y]=r[y]),b},{}),c=e(u),f=hX(l,c),p=arguments.length,d=new Array(p>3?p-3:0),h=3;h({BACKGROUND_COLOR:e.base00,TEXT_COLOR:e.base07,STRING_COLOR:e.base0B,DATE_COLOR:e.base0B,NUMBER_COLOR:e.base09,BOOLEAN_COLOR:e.base09,NULL_COLOR:e.base08,UNDEFINED_COLOR:e.base08,FUNCTION_COLOR:e.base08,SYMBOL_COLOR:e.base08,LABEL_COLOR:e.base0D,ARROW_COLOR:e.base0D,ITEM_STRING_COLOR:e.base0B,ITEM_STRING_EXPANDED_COLOR:e.base03}),vX=e=>({String:e.STRING_COLOR,Date:e.DATE_COLOR,Number:e.NUMBER_COLOR,Boolean:e.BOOLEAN_COLOR,Null:e.NULL_COLOR,Undefined:e.UNDEFINED_COLOR,Function:e.FUNCTION_COLOR,Symbol:e.SYMBOL_COLOR}),xX=e=>{let t=bX(e);return{tree:{border:0,padding:0,marginTop:"0.5em",marginBottom:"0.5em",marginLeft:"0.125em",marginRight:0,listStyle:"none",MozUserSelect:"none",WebkitUserSelect:"none",backgroundColor:t.BACKGROUND_COLOR},value:(r,n,o)=>{let{style:i}=r;return{style:{...i,paddingTop:"0.25em",paddingRight:0,marginLeft:"0.875em",WebkitUserSelect:"text",MozUserSelect:"text",wordWrap:"break-word",paddingLeft:o.length>1?"2.125em":"1.25em",textIndent:"-0.5em",wordBreak:"break-all"}}},label:{display:"inline-block",color:t.LABEL_COLOR},valueLabel:{margin:"0 0.5em 0 0"},valueText:(r,n)=>{let{style:o}=r;return{style:{...o,color:vX(t)[n]}}},itemRange:(r,n)=>({style:{paddingTop:n?0:"0.25em",cursor:"pointer",color:t.LABEL_COLOR}}),arrow:(r,n,o)=>{let{style:i}=r;return{style:{...i,marginLeft:0,transition:"150ms",WebkitTransition:"150ms",MozTransition:"150ms",WebkitTransform:o?"rotateZ(90deg)":"rotateZ(0deg)",MozTransform:o?"rotateZ(90deg)":"rotateZ(0deg)",transform:o?"rotateZ(90deg)":"rotateZ(0deg)",transformOrigin:"45% 50%",WebkitTransformOrigin:"45% 50%",MozTransformOrigin:"45% 50%",position:"relative",lineHeight:"1.1em",fontSize:"0.75em"}}},arrowContainer:(r,n)=>{let{style:o}=r;return{style:{...o,display:"inline-block",paddingRight:"0.5em",paddingLeft:n==="double"?"1em":0,cursor:"pointer"}}},arrowSign:{color:t.ARROW_COLOR},arrowSignInner:{position:"absolute",top:0,left:"-0.4em"},nestedNode:(r,n,o,i,s)=>{let{style:a}=r;return{style:{...a,position:"relative",paddingTop:"0.25em",marginLeft:n.length>1?"0.875em":0,paddingLeft:s?0:"1.125em"}}},rootNode:{padding:0,margin:0},nestedNodeLabel:(r,n,o,i,s)=>{let{style:a}=r;return{style:{...a,margin:0,padding:0,WebkitUserSelect:s?"inherit":"text",MozUserSelect:s?"inherit":"text",cursor:s?"pointer":"default"}}},nestedNodeItemString:(r,n,o,i)=>{let{style:s}=r;return{style:{...s,paddingLeft:"0.5em",cursor:"default",color:i?t.ITEM_STRING_EXPANDED_COLOR:t.ITEM_STRING_COLOR}}},nestedNodeItemType:{marginLeft:"0.3em",marginRight:"0.3em"},nestedNodeChildren:(r,n,o)=>{let{style:i}=r;return{style:{...i,padding:0,margin:0,listStyle:"none",display:o?"block":"none"}}},rootNodeChildren:{padding:0,margin:0,listStyle:"none"}}},wX=S2(xX,{defaultBase16:C2}),T2=wX;var O2=e=>e,EX=(e,t,r)=>r===0,SX=(e,t,r,n)=>R.createElement("span",null,r," ",n),IX=e=>{let[t]=e;return R.createElement("span",null,t,":")},_X=()=>!1;function A2(e){let{data:t,theme:r,invertTheme:n,keyPath:o=["root"],labelRenderer:i=IX,valueRenderer:s=O2,shouldExpandNodeInitially:a=EX,hideRoot:u=!1,getItemString:l=SX,postprocessValue:c=O2,isCustomNode:f=_X,collectionLimit:p=50,sortObjectKeys:d=!1}=e,h=ne(()=>T2(n?_2(r):r),[r,n]);return R.createElement("ul",h("tree"),R.createElement(uu,{keyPath:u?[]:o,value:c(t),isCustomNode:f,styling:h,labelRenderer:i,valueRenderer:s,shouldExpandNodeInitially:a,hideRoot:u,getItemString:l,postprocessValue:c,collectionLimit:p,sortObjectKeys:d}))}var k2=require("obsidian");var CX=()=>{let[e]=St("clipboard-copy");return m("span",{ref:e})},N2=(e,t,r,n,o)=>{if(o.length===1){let i=async s=>{s.preventDefault(),s.stopPropagation(),await navigator.clipboard.writeText("```json\n"+JSON.stringify(t,null,2)+"\n```"),new k2.Notice("Copied JSON code block to clipboard")};return m("span",{role:"button",tabIndex:0,onClick:i,onKeyDown:i,"aria-label":"Copy item details in JSON",children:[n," ",m(CX,{})]})}if(o[1]==="creators"&&o.length===3){let i=Ia(t);if(i)return m("span",{children:i})}if(o[1]==="tags"&&o.length===3){let i=t;return m("span",{children:['"',i.name,'"" (',yo[i.type],")"]})}if(o[0]==="sortIndex"&&o.length===2)return m("span",{children:["[",t.join(", "),"]"]});if(o.length===2&&Array.isArray(t)&&t.length===1){let i=JSON.stringify(t[0]);return m("span",{children:[r," ",i.length>100?i.slice(0,100)+"...":i]})}return m("span",{children:[r," ",n]})};var D2=require("obsidian");var P2=(e,t,r,n)=>{let o=e.length===1,i=e.slice(0,-1),s=R2(i);return m("span",{...o?void 0:{onContextMenu:l=>{let c=new D2.Menu().addItem(f=>f.setTitle("Copy template").onClick(()=>{navigator.clipboard.writeText(`<%= ${s} %>`)}));n&&t!=="Array"&&c.addItem(f=>f.setTitle("Copy template (using with)").onClick(()=>{let[p,...d]=i,h=typeof p=="string"&&F2.test(p)?p:`'${p}'`,b=R2(d);navigator.clipboard.writeText(`<% { const { ${h}: $it } = ${b}; %> + <%= $it %> +<% } %>`)})),t==="Array"&&c.addItem(f=>f.setTitle("Copy template (using for-of loop)").onClick(()=>{navigator.clipboard.writeText(`<% for (const $it of ${s}) { %> + <%= $it %> +<% } %>`)})).addItem(f=>f.setTitle("Copy template (using forEach)").onClick(()=>{navigator.clipboard.writeText(`<% ${s}.forEach(($it, i) => { %> + <%= $it %> +<% }) %>`)})).addItem(f=>f.setTitle("Copy template (pick first element)").onClick(()=>{navigator.clipboard.writeText(`<%= ${s}.first() %>`)})).addItem(f=>f.setTitle("Copy template (pick last element)").onClick(()=>{navigator.clipboard.writeText(`<%= ${s}.last() %>`)})),eg.has(i[0])||c.addItem(f=>f.setTitle("Copy template (render when present)").onClick(()=>{navigator.clipboard.writeText(`<% if (${s}) { %> + <%= ${s} %> +<% } %>`)})),l.preventDefault(),c.showAtMouseEvent(l.nativeEvent)},style:{cursor:"context-menu"}},children:[e[0],": "]})},R2=e=>"it"+e.map(TX).reverse().join(""),F2=/^[$_\p{ID_Start}][$\u200c\u200d\p{ID_Continue}]*$/u,TX=e=>typeof e=="number"?`[${e}]`:F2.test(e)?`.${e}`:`[${JSON.stringify(e)}]`;var OX=new Set(["sortIndex"]),AX=new Set(["creators","tags"]),kX=new Set(["position"]),$2=(e,t,r)=>{let n=e[0];return OX.has(n)||AX.has(n)&&Array.isArray(t)&&t.length>6?!1:!!(kX.has(n)||r<1||r<2&&Array.isArray(t)&&t.length>1)};var NX={grad:.9,turn:360,rad:360/(2*Math.PI)},an=function(e){return typeof e=="string"?e.length>0:typeof e=="number"},Ze=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=Math.pow(10,t)),Math.round(r*e)/r+0},nr=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=1),e>r?r:e>t?e:t},H2=function(e){return(e=isFinite(e)?e%360:0)>0?e:e+360},M2=function(e){return{r:nr(e.r,0,255),g:nr(e.g,0,255),b:nr(e.b,0,255),a:nr(e.a)}},Ob=function(e){return{r:Ze(e.r),g:Ze(e.g),b:Ze(e.b),a:Ze(e.a,3)}},RX=/^#([0-9a-f]{3,8})$/i,Vp=function(e){var t=e.toString(16);return t.length<2?"0"+t:t},K2=function(e){var t=e.r,r=e.g,n=e.b,o=e.a,i=Math.max(t,r,n),s=i-Math.min(t,r,n),a=s?i===t?(r-n)/s:i===r?2+(n-t)/s:4+(t-r)/s:0;return{h:60*(a<0?a+6:a),s:i?s/i*100:0,v:i/255*100,a:o}},V2=function(e){var t=e.h,r=e.s,n=e.v,o=e.a;t=t/360*6,r/=100,n/=100;var i=Math.floor(t),s=n*(1-r),a=n*(1-(t-i)*r),u=n*(1-(1-t+i)*r),l=i%6;return{r:255*[n,a,s,s,u,n][l],g:255*[u,n,n,a,s,s][l],b:255*[s,s,u,n,n,a][l],a:o}},j2=function(e){return{h:H2(e.h),s:nr(e.s,0,100),l:nr(e.l,0,100),a:nr(e.a)}},L2=function(e){return{h:Ze(e.h),s:Ze(e.s),l:Ze(e.l),a:Ze(e.a,3)}},q2=function(e){return V2((r=(t=e).s,{h:t.h,s:(r*=((n=t.l)<50?n:100-n)/100)>0?2*r/(n+r)*100:0,v:n+r,a:t.a}));var t,r,n},_u=function(e){return{h:(t=K2(e)).h,s:(o=(200-(r=t.s))*(n=t.v)/100)>0&&o<200?r*n/100/(o<=100?o:200-o)*100:0,l:o/2,a:t.a};var t,r,n,o},DX=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,PX=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,FX=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,$X=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,B2={string:[[function(e){var t=RX.exec(e);return t?(e=t[1]).length<=4?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:e.length===4?Ze(parseInt(e[3]+e[3],16)/255,2):1}:e.length===6||e.length===8?{r:parseInt(e.substr(0,2),16),g:parseInt(e.substr(2,2),16),b:parseInt(e.substr(4,2),16),a:e.length===8?Ze(parseInt(e.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(e){var t=FX.exec(e)||$X.exec(e);return t?t[2]!==t[4]||t[4]!==t[6]?null:M2({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:t[7]===void 0?1:Number(t[7])/(t[8]?100:1)}):null},"rgb"],[function(e){var t=DX.exec(e)||PX.exec(e);if(!t)return null;var r,n,o=j2({h:(r=t[1],n=t[2],n===void 0&&(n="deg"),Number(r)*(NX[n]||1)),s:Number(t[3]),l:Number(t[4]),a:t[5]===void 0?1:Number(t[5])/(t[6]?100:1)});return q2(o)},"hsl"]],object:[[function(e){var t=e.r,r=e.g,n=e.b,o=e.a,i=o===void 0?1:o;return an(t)&&an(r)&&an(n)?M2({r:Number(t),g:Number(r),b:Number(n),a:Number(i)}):null},"rgb"],[function(e){var t=e.h,r=e.s,n=e.l,o=e.a,i=o===void 0?1:o;if(!an(t)||!an(r)||!an(n))return null;var s=j2({h:Number(t),s:Number(r),l:Number(n),a:Number(i)});return q2(s)},"hsl"],[function(e){var t=e.h,r=e.s,n=e.v,o=e.a,i=o===void 0?1:o;if(!an(t)||!an(r)||!an(n))return null;var s=function(a){return{h:H2(a.h),s:nr(a.s,0,100),v:nr(a.v,0,100),a:nr(a.a)}}({h:Number(t),s:Number(r),v:Number(n),a:Number(i)});return V2(s)},"hsv"]]},z2=function(e,t){for(var r=0;r=.5},e.prototype.toHex=function(){return t=Ob(this.rgba),r=t.r,n=t.g,o=t.b,s=(i=t.a)<1?Vp(Ze(255*i)):"","#"+Vp(r)+Vp(n)+Vp(o)+s;var t,r,n,o,i,s},e.prototype.toRgb=function(){return Ob(this.rgba)},e.prototype.toRgbString=function(){return t=Ob(this.rgba),r=t.r,n=t.g,o=t.b,(i=t.a)<1?"rgba("+r+", "+n+", "+o+", "+i+")":"rgb("+r+", "+n+", "+o+")";var t,r,n,o,i},e.prototype.toHsl=function(){return L2(_u(this.rgba))},e.prototype.toHslString=function(){return t=L2(_u(this.rgba)),r=t.h,n=t.s,o=t.l,(i=t.a)<1?"hsla("+r+", "+n+"%, "+o+"%, "+i+")":"hsl("+r+", "+n+"%, "+o+"%)";var t,r,n,o,i},e.prototype.toHsv=function(){return t=K2(this.rgba),{h:Ze(t.h),s:Ze(t.s),v:Ze(t.v),a:Ze(t.a,3)};var t},e.prototype.invert=function(){return Lt({r:255-(t=this.rgba).r,g:255-t.g,b:255-t.b,a:t.a});var t},e.prototype.saturate=function(t){return t===void 0&&(t=.1),Lt(Ab(this.rgba,t))},e.prototype.desaturate=function(t){return t===void 0&&(t=.1),Lt(Ab(this.rgba,-t))},e.prototype.grayscale=function(){return Lt(Ab(this.rgba,-1))},e.prototype.lighten=function(t){return t===void 0&&(t=.1),Lt(U2(this.rgba,t))},e.prototype.darken=function(t){return t===void 0&&(t=.1),Lt(U2(this.rgba,-t))},e.prototype.rotate=function(t){return t===void 0&&(t=15),this.hue(this.hue()+t)},e.prototype.alpha=function(t){return typeof t=="number"?Lt({r:(r=this.rgba).r,g:r.g,b:r.b,a:t}):Ze(this.rgba.a,3);var r},e.prototype.hue=function(t){var r=_u(this.rgba);return typeof t=="number"?Lt({h:t,s:r.s,l:r.l,a:r.a}):Ze(r.h)},e.prototype.isEqual=function(t){return this.toHex()===Lt(t).toHex()},e}(),Lt=function(e){return e instanceof W2?e:new W2(e)};var jX=/^#(?:[\dA-F]{3}){1,2}$|^#(?:[\dA-F]{4}){1,2}$/i,LX=e=>{let t=Lt(e),{r,g:n,b:o}=t.rgba;return r*.299+n*.587+o*.114>186},G2=(e,t,...r)=>{if(typeof t=="string"&&jX.test(t))return m("span",{style:{backgroundColor:t,padding:"0 0.5em",color:LX(t)?"black":"white"},children:t});let n;return r[0]==="linkMode"&&typeof t=="number"&&(n=xl[t]),r[0]==="type"&&typeof t=="number"&&(r.length===2&&_e[t]?n=_e[t]:r.length===4&&typeof r[1]=="number"&&r[2]==="tags"&&yo[t]&&(n=yo[t])),n?m($,{children:[e," ",m("span",{children:["(",n,")"]})]}):e};var J2=()=>document.body.classList.contains("theme-dark"),qX={scheme:"Solarized Light",author:"Ethan Schoonover (modified by aramisgithub)",base00:"transparent",base01:"#eee8d5",base02:"#93a1a1",base03:"#839496",base04:"#657b83",base05:"#586e75",base06:"#073642",base07:"#002b36",base08:"#dc322f",base09:"#cb4b16",base0A:"#b58900",base0B:"#859900",base0C:"#2aa198",base0D:"#268bd2",base0E:"#6c71c4",base0F:"#d33682"},BX={scheme:"Solarized Dark",author:"Ethan Schoonover (modified by aramisgithub)",base00:"transparent",base01:"#073642",base02:"#586e75",base03:"#657b83",base04:"#839496",base05:"#93a1a1",base06:"#eee8d5",base07:"#fdf6e3",base08:"#dc322f",base09:"#cb4b16",base0A:"#b58900",base0B:"#859900",base0C:"#2aa198",base0D:"#268bd2",base0E:"#6c71c4",base0F:"#d33682"};function Nb({item:e,registerCssChange:t}){let[r,n]=j(()=>J2());return U(()=>t?.(()=>n(J2())),[t]),e?m(A2,{data:e,theme:r?BX:qX,invertTheme:!1,keyPath:["Zotero Item Data"],shouldExpandNodeInitially:$2,valueRenderer:G2,labelRenderer:P2,getItemString:N2}):m("div",{children:"No Details Available"})}var Z2=require("obsidian");var Gp=e=>({plugin:e,sourcePath:""});function zX(){return Ja((e,t)=>({preview:null,templateType:null,setTemplateType(r){e(n=>({...n,templateType:r||void 0}))},setPreview(r){e(({...n})=>({...n,preview:r??null}))},async setPreviewFromState(r,n){let o=t().preview;if(o?.docItem.itemID===r?.docItem&&o?.attachment?.itemID===r?.attachment&&o?.annot?.itemID===r?.annot)return!1;let i=n.database.settings.libId;if(!r.docItem)return console.error("TemplatePreview: no docItem provided"),!1;let[s]=await n.databaseAPI.getItems([[r.docItem,i]]);if(!s)return console.error("TemplatePreview: no docItem found for id "+r.docItem),!1;let a=await n.databaseAPI.getAttachments(r.docItem,i),u=a.find(d=>d.itemID===r.attachment)??null;r.attachment&&!u&&console.error("TemplatePreview: no attachment found for id "+r.attachment);let l=u?await n.databaseAPI.getAnnotations(u.itemID,i):[],c=l.find(d=>d.itemID===r.annot);r.annot&&!c&&console.error("TemplatePreview: no annotation found for id "+r.annot);let f=await n.databaseAPI.getTags([[r.docItem,i],...l.map(d=>[d.itemID,i])]),p;try{p=await n.databaseAPI.getNotes(s.itemID,i).then(d=>n.noteParser.normalizeNotes(d))}catch(d){console.error(d),p=[]}return e(()=>({preview:{docItem:s,allAttachments:a,annotations:l,attachment:u,tags:f,annot:l.find(d=>d.itemID===r.annot),notes:p}})),!0}}))}function Y2(e,t){let r=null,n=null,o=null;return function(...i){if(r&&window.clearTimeout(r),n){o=i;return}r=window.setTimeout(()=>{r=null,n=e(...i).then(()=>{o?n=e(...o):n=null}).catch(s=>{console.error(s),n=null})},t)}}var Xi=class extends Z2.FileView{constructor(r,n){super(r);this.plugin=n;this.store=zX()}store;canAcceptExtension(r){return r==="md"}getTemplateType(r){if(!r)return!1;let n=ct(r.path,this.plugin.settings.templateDir);return n?.type!=="ejectable"?!1:n.name}setTemplateType(r){this.store.getState().setTemplateType(r)}async onLoadFile(r){await super.onLoadFile(r),this.setTemplateType(this.getTemplateType(r))}getState(){let r=super.getState(),{preview:n}=this.store.getState(),o;if(!n)o={preview:null};else{let{docItem:i,attachment:s,annot:a}=n;o={preview:{docItem:i.itemID,attachment:s?.itemID,annot:a?.itemID}}}return{...r,...o}}async setState(r,n){if(await super.setState(r,n),r.preview===void 0)return;let o=this.store.getState();r.preview===null?o.setPreview(null):await o.setPreviewFromState(r.preview,this.plugin)}setPreview(r){this.store.getState().setPreview(r)}async onOpen(){await super.onOpen();let[r,n]=ui(this.plugin);n&&this.register(n),await r}};var Qi="zotero-item-details",X2=({templateType:e})=>e==="annotation"?e:"note",Jp=class extends Xi{getViewType(){return Qi}getDisplayText(){let t=this.store.getState();return t.templateType?"Zotero Item Details: "+X2(t):"Zotero Item Details"}async onOpen(){await super.onOpen();let[t,r]=ui(this.plugin);r&&this.register(r),await t,R.render(m(UX,{store:this.store,plugin:this.plugin}),this.contentEl)}async onClose(){R.unmountComponentAtNode(this.contentEl),await super.onClose()}};function UX({store:e,plugin:t}){let r=_t(e,X2),n=_t(e,i=>i.preview),o=ne(()=>{let i=Gp(t);if(!n)return null;switch(r){case"note":{let s=It(n,i);return s.docItem.annotations=void 0,s.docItem}case"annotation":{let s=It(n,i),a=n.annot?s.annotations.find(u=>u.itemID===n.annot?.itemID):s.annotations[0];return a?(a.docItem=void 0,a):null}default:throw new Error("Unsupported template type")}},[t,n,r]);return o?m(Nb,{item:o,registerCssChange:i=>(t.app.workspace.on("css-change",i),()=>t.app.workspace.off("css-change",i))}):m("div",{})}var Q2=ge(si(),1),or=require("obsidian");var es="zotero-template-preview",Zp=class extends Xi{getViewType(){return es}getDisplayText(){let t=this.store.getState().templateType;return t?"Zotero Template Preview: "+t:"Zotero Template Preview"}async switchToTemplate(t){if(!this.leaf.group)return!1;let r=eM(this.leaf.group,this.plugin);if(!r)return!1;let n=Db(t,this.plugin.settings.templateDir,this.app);if(!n||!(n instanceof or.TFile)){new or.Notice("Template file not found: "+t);return}return await r.openFile(n),!0}onload(){let t={annots:this.addAction("list-ordered","Open Template for Annotations",async()=>await this.switchToTemplate("annots")||new or.Notice("Cannot switch to template")),note:this.addAction("file-input","Open Note Template",async()=>await this.switchToTemplate("note")||new or.Notice("Cannot switch to template")),annotation:this.addAction("highlighter","Open Template for Single Annotation",async()=>await this.switchToTemplate("annotation")||new or.Notice("Cannot switch to template")),field:this.addAction("info","Open Template for Note Properties",async()=>await this.switchToTemplate("field")||new or.Notice("Cannot switch to template"))};Object.values(t).forEach(r=>r.hide()),this.register(this.store.subscribe((r,n)=>{if(r.templateType!==n.templateType)for(let[o,i]of Object.entries(t))i.toggle(o!==r.templateType)})),this.registerEvent(this.app.vault.on("zotero:template-updated",r=>{let n=this.getTemplateType(this.file);n&&r===n&&(this.setTemplateType(n),this.requestRender())}))}content=null;async render(){let{preview:t,templateType:r}=this.store.getState();if(!r){this.contentEl.empty(),this.contentEl.setText("No template preview available");return}if(!t){this.contentEl.empty(),this.contentEl.setText("No preview data available");return}let n="",o=Gp(this.plugin),i=this.plugin.templateRenderer;try{switch(r){case"annotation":{let u=t.annot??t.annotations[0];if(!u){this.contentEl.setText("No annotation data available");return}n=i.renderAnnot(u,t,o);break}case"annots":n=i.renderAnnots(t,o);break;case"note":n=i.renderNote(t,o);break;case"field":n=i.renderFrontmatter(t,o);break;case"cite":n=i.renderCitations([t],o);break;case"cite2":n=i.renderCitations([t],o,!0);break;case"colored":n=i.renderColored({content:"I'm Highlight",color:"#FF000080",colorName:"red",bgColor:"#FF000080",bgColorName:"red"});break;default:(0,Q2.assertNever)(r)}if(n===this.content?.markdown)return;this.content?.unload(),this.contentEl.empty();let s=await(0,or.loadPrism)(),a=s.highlight(n,s.languages.markdown,"markdown");this.content=new Rb(n),this.contentEl.createEl("pre").createEl("code",{cls:"language-markdown"}).innerHTML=a}catch(s){this.content?.unload(),this.contentEl.empty();let a=s instanceof Error?s.message:String(s);this.contentEl.createEl("h1",{text:`Error while rendering ${r}`,cls:["mod-error","message"]}),this.contentEl.createEl("pre",{text:a})}}requestRender=Y2(()=>this.render(),200);async onOpen(){await super.onOpen(),this.register(this.store.subscribe((t,r)=>{t.templateType!==r.templateType?this.requestRender():t.preview!==r.preview&&this.requestRender()}))}},Rb=class extends or.Component{constructor(r){super();this.markdown=r}};async function Bo(e,t,{app:r,settings:n}){let{workspace:o}=r,i=Db(e,n.templateDir,r);if(!i||!(i instanceof qo.TFile)){new qo.Notice("Template file not found: "+e);return}let s=o.getLeavesOfType("markdown").filter(c=>{let f=c.view;return f.file?ct(f.file.path,n.templateDir)?.type==="ejectable"&&c.getRoot().type==="floating":!1});if(s.length>0){let c=s[0];if(await c.openFile(i),!c.group)return;let f=o.getGroupLeaves(c.group);for(let p of f){let d=p.view.getViewType();if(d===es||d===Qi){let h=p.view.getState();await p.view.setState({...h,preview:t},{})}}return}let a=o.openPopoutLeaf(),u=o.createLeafBySplit(a,"vertical"),l=o.createLeafBySplit(u,"vertical");await Promise.all([a.openFile(i,{active:!0}),u.setViewState({type:es,state:{file:i.path,preview:t},group:a}),l.setViewState({type:Qi,state:{file:i.path,preview:t},group:a})])}function Db(e,t,r){let n=io(e,t),o=r.vault.getAbstractFileByPath(n);return o instanceof qo.TFile?o:null}function eM(e,t){return t.app.workspace.getGroupLeaves(e).find(n=>n.view instanceof qo.MarkdownView&&n.view.file&&ct(n.view.file.path,t.settings.templateDir)?.type==="ejectable")}var tM=e=>(t,r,n)=>{let{imgCacheImporter:o}=e,i=String(t.timeStamp),s="drag-source";t.dataTransfer.setData("text/plain",r()),t.dataTransfer.setData(s,i),t.dataTransfer.dropEffect="copy";let a=t.target.win,{workspace:u}=e.app,l=p=>{p.dataTransfer?.getData(s)===i&&o.flush(),u.off("editor-drop",l),a.removeEventListener("dragend",c)},c=()=>{o.cancel(),u.off("editor-drop",l)},f=u.on("editor-drop",p=>{p.dataTransfer?.getData("drag-source")===i&&o.flush(),u.offref(f)});a.addEventListener("dragend",c,{once:!0}),n&&t.dataTransfer.setDragImage(n,0,0)},rM=e=>({storeSelector:t=>Fl(t,["doc","attachment","allAttachments","tags","annotations"]),get:(t,{allAttachments:r,attachment:n,doc:o,tags:i,annotations:s})=>!r||!n||!o||!i[t.itemID]||!s?null:()=>{let a=e.app.workspace.getActiveFile(),u=a&&at(a)?a.path:null;return e.templateRenderer.renderAnnot(t,{tags:i,attachment:n,allAttachments:r,annotations:s,docItem:o.docItem,notes:[]},{plugin:e,sourcePath:u,merge:!1})}});var ts=require("obsidian");var nM=e=>(t,r)=>{let n=new ts.Menu;if(n.addItem(o=>o.setTitle("Jump to note").setIcon("links-going-out").onClick(WX(r,e))),e.app.workspace.trigger("zotero:open-annot-menu",r,n),t.nativeEvent instanceof MouseEvent)n.showAtMouseEvent(t.nativeEvent);else{let o=t.currentTarget.getBoundingClientRect();n.showAtPosition({x:o.left,y:o.bottom})}},WX=(e,t)=>async()=>{let r=t.app.workspace.getActiveFile(),n=r&&at(r)?r.path:void 0,o=t.plugin.noteIndex.getBlocksFor({item:e,file:n}).shift();if(!o){new ts.Notice("No embed for this annotation in current note");return}let i=o.blocks.sort((p,d)=>{let h=p.start.offset-d.start.offset;return h!==0?h:p.end.offset-d.end.offset})[0];await sleep(10);let{leaf:s}=t,{workspace:a,vault:u}=t.app,l;if(s.group)l=a.getGroupLeaves(s.group);else{l=[];let p=a.getActiveFileView();p&&l.push(p.leaf)}let c=!1,f=i.end.line+1;for(let p of l)p&&p.view instanceof ts.MarkdownView&&p.view.file?.path===o.file&&(p.view.setEphemeralState({line:f}),c=!0);if(!c){let p=u.getAbstractFileByPath(o.file);if(!p||!at(p))throw new Error("File from block info not found: "+o.file);a.getLeaf().openFile(p,{eState:{line:f}})}};var oM=(e,t)=>t.length===0?null:e?t.find(r=>r.itemID===e)??t[0]:t[0],Yp=()=>({doc:null,allAttachments:null,attachmentID:null,annotations:null,attachment:null,tags:{}}),HX=()=>({follow:"zt-reader",doc:null,allAttachments:null,attachmentID:null,annotations:null,attachment:null,tags:{}}),Cu=e=>e.databaseAPI,iM=e=>Ja((t,r)=>{let n=async(s,a)=>{let u=(await Cu(e).getAttachments(s,a)).filter(ga);t(l=>({...l,allAttachments:u,attachment:oM(l.attachmentID,u)}))},o=async(s,a)=>{let u=await Cu(e).getTags([[s,a]]);return t(l=>({...l,tags:u})),u},i=async s=>{let{attachment:a}=r();if(!a)return;let u=await Cu(e).getAnnotations(a.itemID,s),l=ng(u);t(p=>({...p,annotations:og(l),attachment:a}));let c=await Cu(e).getTags(u.map(p=>[p.itemID,s])),f=ig(l,c);t(p=>({...p,tags:{...p.tags,...f}}))};return{...HX(),loadDocItem:async(s,a,u,l=!1)=>{if(s<0)return t(Yp());if(r().doc?.docItem.itemID===s&&!l)return;let c=(await Cu(e).getItems([[s,u]]))[0];if(!c)return t(Yp());let f={docItem:c,lib:u};if(a<0){let p=Zh(window.localStorage,c);t({...Yp(),doc:f,attachmentID:p})}else Ti(window.localStorage,c,a),t({...Yp(),doc:f,attachmentID:a});await n(c.itemID,u),await o(c.itemID,u),await i(u)},refresh:async()=>{let{doc:s,attachment:a}=r();if(!s)return;let{docItem:u,lib:l}=s;await n(u.itemID,l),await o(u.itemID,l),a&&await i(l)},setActiveAtch:s=>{let{doc:a,allAttachments:u}=r();if(a)if(Ti(window.localStorage,a.docItem,s),!u)t(l=>({...l,attachment:null,attachmentID:s}));else{let l=oM(s,u);t(c=>({...c,attachment:l,attachmentID:s}))}},setFollow:s=>t({follow:s})}});var ed="zotero-annotation-view",Xp=class extends Gf{constructor(r,n){super(r);this.plugin=n;this.store=iM(n)}update(){if(this.follow!=="ob-note")return;let r=this.plugin.settings.libId;(async()=>{if(this.file?.extension!=="md")return!1;let n=Ao(this.file,this.app.metadataCache),o=ko(this.file,this.app.metadataCache);if(!n)return!1;let[i]=await this.plugin.databaseAPI.getItems([[n,r]]);return i?(this.setStatePrev(s=>({...s,follow:"ob-note",itemId:i.itemID,attachmentId:o?.[0]??void 0})),!0):!1})().then(n=>{n||this.setStatePrev(o=>({...o,follow:"ob-note",itemId:-1}))})}getViewType(){return ed}#e=null;onload(){super.onload(),this.contentEl.addClass("obzt");let r=null,n=!1,o=i=>{if(n)r=i;else{n=!0;let{itemId:s,attachmentId:a}=i;this.setStatePrev(u=>({...u,itemId:s,attachmentId:a})).then(()=>{if(n=!1,r===null)return;let u=r;r=null,o(u)})}};this.registerEvent(this.plugin.server.on("bg:notify",(i,s)=>{s.event==="reader/active"&&(this.#e=s.itemId,!(this.follow!=="zt-reader"||s.itemId<0||s.attachmentId<0)&&o(s))}))}getDisplayText(){return this.follow!=="ob-note"||!this.file?.basename?"Zotero Annotations":`Zotero Annotations for ${this.file.basename}`}getIcon(){return"highlighter"}get lib(){return this.plugin.settings.libId}store;get follow(){return this.store.getState().follow}getState(){let r=super.getState(),n=this.store.getState(),o={itemId:n.doc?.docItem.itemID??-1,attachmentId:n.attachment?.itemID??-1,follow:n.follow};return{...r&&typeof r=="object"?r:{},...o}}async setState(r,n){await super.setState(r,n??{});let{itemId:o=-1,attachmentId:i=-1,follow:s="zt-reader"}=r;this.store.getState().setFollow(s),await this.store.getState().loadDocItem(o,i,this.lib)}async setStatePrev(r){await this.setState(r(this.getState()))}onSetFollowZt=async()=>{this.setStatePrev(r=>({...r,follow:"zt-reader"})),await this.setStatePrev(({attachmentId:r,...n})=>({...n,follow:"zt-reader",...this.#e===null?{attachmentId:r}:{itemId:this.#e}}))};onSetFollowOb=()=>{this.store.getState().setFollow("ob-note"),this.update()};onSetFollowNull=async()=>{let{plugin:r}=this,n=await ep(r);if(!n)return;let{itemID:o}=n.value.item,i=r.settings.libId,s=await r.databaseAPI.getAttachments(o,i),a=await Zr(s,this.app);await this.setStatePrev(({attachmentId:u,...l})=>({...l,follow:null,itemId:o,attachmentId:a?.itemID}))};getContext(){let r=this,{plugin:n,store:o,app:i}=r;return{store:o,registerDbUpdate(s){return i.vault.on("zotero:db-refresh",s),()=>i.vault.off("zotero:db-refresh",s)},refreshConn:async()=>{await n.dbWorker.refresh({task:"dbConn"})},getImgSrc:s=>{let a=An(s,n.settings.current?.zoteroDataDir);return KX(a)},onShowDetails:async(s,a)=>{let u=o.getState(),l=u.attachmentID??void 0;if(s==="doc-item")await Bo("note",{docItem:a,attachment:l},n);else{let c=u.doc?.docItem.itemID;if(!c)throw new Error("Missing doc item when showing annotation details");await Bo("annotation",{docItem:c,attachment:l,annot:a},n)}},onDragStart:tM(n),onMoreOptions:nM(r),annotRenderer:rM(n),onSetFollow(s){let a=new Qp.Menu,u=o.getState().follow;if(u!=="zt-reader"&&a.addItem(l=>l.setIcon("book").setTitle("Follow active literature in Zotero reader").onClick(r.onSetFollowZt)),u!=="ob-note"&&a.addItem(l=>l.setIcon("file-edit").setTitle("Follow active literature note").onClick(r.onSetFollowOb)),a.addItem(l=>l.setIcon("file-lock-2").setTitle("Link with selected literature").onClick(async()=>{s.target.blur(),await r.onSetFollowNull()})),s.nativeEvent instanceof MouseEvent)a.showAtMouseEvent(s.nativeEvent);else{let c=s.target.getBoundingClientRect();a.showAtPosition({x:c.x,y:c.y})}}}}async onOpen(){await super.onOpen();let[r,n]=ui(this.plugin);n&&this.register(n),this.contentEl.empty(),this.contentEl.createDiv({cls:"pane-empty p-2",text:"Loading..."}),r.then(()=>{this.contentEl.empty(),R.render(m($n.Provider,{value:jP,children:m(Be.Provider,{value:this.getContext(),children:m(Qa,{})})}),this.contentEl)}).catch(o=>{this.contentEl.empty(),console.error("Failed to load annot view: ",o),this.contentEl.createDiv({cls:"pane-empty p-2",text:"Failed to load, Check console for details"})}),this.registerEvent(this.plugin.server.on("bg:notify",(o,i)=>{if(i.event!=="reader/annot-select")return;let s=i.updates.filter(([,u])=>u).pop();if(!s)return;let[a]=s;this.highlightAnnot(a)}))}async onClose(){R.unmountComponentAtNode(this.contentEl),await super.onClose()}async highlightAnnot(r){let n=this.contentEl.querySelector(`.annot-preview[data-id="${r}"]`);n instanceof HTMLElement&&(n.addClass("select-flashing"),n.scrollIntoView({behavior:"smooth",block:"center"}),await sleep(1500),n.removeClass("select-flashing"))}};function KX(e){return(Qp.Platform.resourcePathPrefix??"app://local/")+(0,sM.pathToFileURL)(e).pathname.substring(1)+`?${Date.now()}`}var aM=require("path/posix");var td=require("obsidian");var VX=[{command:"\u2191\u2193",purpose:"to navigate"},{command:"\u21B5",purpose:"to continue select note to import"},{command:"esc",purpose:"to dismiss"}],Pb=class extends nn{constructor(r){super(r);this.plugin=r;this.setInstructions(VX)}};async function uM(e){let t=await xo(new Pb(e));if(!t)return!1;let{value:{item:r}}=t,n=await e.databaseAPI.getNotes(r.itemID,e.settings.libId);if(n.length===0)return new td.Notice("No note found for selected literature"),!1;let o=await Hv(n,c=>c.title??c.note?.substring(0,20)??`No title (Key ${c.key})`);if(!o.item)return!1;let i=o.item;if(!i.note)return new td.Notice("Selected note is empty"),!1;let s=await e.noteParser.turndown(i.note),a=e.settings.current?.literatureNoteFolder,u=(0,aM.join)(a,"zt-import",To(i.title??[i.note.substring(0,10),i.key].join("_"),{replacement:"_"})),l=await e.app.fileManager.createNewMarkdownFile(e.app.vault.getRoot(),u,s);return await e.app.workspace.openLinkText(l.path,"",!0),new td.Notice(`Note imported: ${i.title??i.key}`),!0}var $r=require("obsidian");var rd=class extends ue{plugin=this.use(be);onload(){this.registerEvent(this.plugin.server.on("zotero/open",t=>this.onZtOpen(Sc(t)))),this.registerEvent(this.plugin.server.on("zotero/export",t=>this.onZtExport(Sc(t)))),this.registerEvent(this.plugin.server.on("zotero/update",t=>this.onZtExport(Sc(t))))}async onZtOpen(t){if(t.type==="annotation"){new $r.Notice("Not implemented yet");return}if(t.items.length<1){new $r.Notice("No items to open");return}await this.plugin.noteFeatures.openNote(t.items[0])}async onZtUpdate(t){if(t.type==="annotation"){new $r.Notice("Single annotation update not yet supported");return}if(t.items.length<1){new $r.Notice("No items to open");return}if(t.items.length>1){new $r.Notice("Multiple literature note update not yet supported");return}await this.plugin.noteFeatures.updateNoteFromId(t.items[0])}async onZtExport(t){if(t.type==="annotation"){new $r.Notice("Not implemented yet");return}t.items.length<1?new $r.Notice("No items to open"):t.items.length>1&&new $r.Notice("Multiple items not yet supported");let{libraryID:r,id:n}=t.items[0],[o]=await this.plugin.databaseAPI.getItems([[n,r]]);if(!o){new $r.Notice("Item not found: "+n);return}let i=await this.plugin.noteFeatures.createNoteForDocItemFull(o);await this.plugin.app.workspace.openLinkText(i,"",!1,{active:!0})}};var cM=require("obsidian");var GX=[{command:"\u2191\u2193",purpose:"to navigate"},{command:"\u21B5",purpose:"to open/create literature note"},{command:"esc",purpose:"to dismiss"}],Fb=class extends nn{constructor(r){super(r);this.plugin=r;this.setInstructions(GX)}};async function $b(e){let t=await xo(new Fb(e));if(!t)return!1;let{value:{item:r},evt:n}=t;if(await e.noteFeatures.openNote(r,!0))return!0;let o=await e.noteFeatures.createNoteForDocItemFull(r);return await e.app.workspace.openLinkText(o,"",cM.Keymap.isModEvent(n),{active:!0}),!0}var Mb=class extends ue{plugin=this.use(be);protocol=this.use(rd);onload(){let{plugin:t}=this,{app:r}=t;t.addCommand({id:"note-quick-switcher",name:"Open quick switcher for literature notes",callback:()=>$b(t)}),t.registerView(ed,o=>new Xp(o,t)),t.registerView(es,o=>new Zp(o,t)),t.registerView(Qi,o=>new Jp(o,t)),t.registerEvent(t.app.workspace.on("file-menu",(o,i)=>{let s=ct(i.path,t.settings.templateDir);s?.type==="ejectable"&&o.addItem(a=>a.setIcon("edit").setTitle("Open template preview").onClick(()=>{Bo(s.name,null,t)}))})),t.addCommand({id:"zotero-annot-view",name:"Open Zotero annotation view in side panel",callback:()=>{r.workspace.ensureSideLeaf(ed,"right",{active:!0,state:{file:r.workspace.getActiveFile()?.path}})}}),t.addCommand({id:"insert-markdown-citation",name:"Insert Markdown citation",editorCallback:(o,i)=>ib(o,i.file,t)}),t.registerEditorSuggest(new iu(t));let n=async(o,i)=>{let s=t.settings.libId,a=Ao(o,r.metadataCache);if(!a)return new un.Notice("Cannot get zotero item key from file name"),!1;let[u]=await t.databaseAPI.getItems([[a,s]]);if(!u)return new un.Notice("Cannot find zotero item with key "+a),!1;await this.updateNote(u,i)};t.addCommand({id:"update-literature-note",name:"Update literature note",editorCheckCallback(o,i,s){let a=s.file&&Ga(s.file,r);if(o)return!!a;a&&n(s.file)}}),t.addCommand({id:"overwrite-update-literature-note",name:"Force update literature note by overwriting",editorCheckCallback(o,i,s){let a=s.file&&Ga(s.file,r);if(o)return!!a;a&&n(s.file,!0)}}),t.addCommand({id:"import-note",name:"Import note",callback:()=>uM(t)}),t.registerEvent(t.app.workspace.on("file-menu",(o,i)=>{Ga(i,r)&&(o.addItem(s=>s.setTitle("Update literature note").setIcon("sync").onClick(()=>n(i))),t.settings.current?.updateOverwrite||o.addItem(s=>s.setTitle("Force update by overwriting").setIcon("sync").onClick(()=>n(i,!0))))})),t.registerEvent(t.app.workspace.on("file-menu",(o,i)=>{let s=ct(i.path,t.settings.templateDir);s?.type==="ejectable"&&o.addItem(a=>a.setTitle("Reset to default").setIcon("reset").onClick(async()=>{activeWindow.confirm("Reset template to default?")&&await t.app.vault.modify(i,ot.Ejectable[s.name])}))}))}async openNote(t,r=!1){let{workspace:n}=this.plugin.app,{noteIndex:o}=this.plugin,i=o.getNotesFor(t);if(!i.length)return!r&&new un.Notice(`No literature note found for zotero item with key ${t.key}`),!1;let s=i.sort().shift();return await n.openLinkText(s,"",!1,{active:!0}),!0}async createNoteForDocItem(t,r){let{noteIndex:n}=this.plugin,o=n.getNotesFor(t);if(o.length)throw new nd(o,t.key);let{vault:i,fileManager:s}=this.plugin.app,{literatureNoteFolder:a}=this.plugin.settings.current,u=this.plugin.templateRenderer,l=(0,lM.join)(a,r.filename(u,{plugin:this.plugin})),c=i.getAbstractFileByPath(l);if(c&&Ao(c,this.plugin.app.metadataCache))throw new nd([l],t.key);return await s.createNewMarkdownFile(i.getRoot(),l,r.note(u,{plugin:this.plugin,sourcePath:l}))}async createNoteForDocItemFull(t){let r=this.plugin.settings.libId,n=await this.plugin.databaseAPI.getAttachments(t.itemID,r),o=await Zr(n,this.plugin.app);o&&Ni(o,t);let i=await this.plugin.databaseAPI.getNotes(t.itemID,r).then(l=>this.plugin.noteParser.normalizeNotes(l)),s=await ou(t,{all:n,selected:o?[o]:[],notes:i},this.plugin),a=Object.values(s)[0];return(await this.createNoteForDocItem(t,{note:(l,c)=>l.renderNote(a,c),filename:(l,c)=>l.renderFilename(a,c)})).path}async updateNoteFromId(t){let{noteIndex:r,databaseAPI:n}=this.plugin;if(!r.getNotesFor(t).length){new un.Notice(`No literature note found for zotero item with key ${t.key}`);return}let[i]=await n.getItems([[t.key,t.libraryID]]);if(!i){new un.Notice(`Cannot find zotero item with key ${t.key}`);return}await this.updateNote(i)}async updateNote(t,r){let n=await BP(t,this.plugin,r);n?n.addedAnnots>0||n.updatedAnnots>0?new un.Notice(`Affected ${n.notes} notes, annotations: ${n.addedAnnots} added, ${n.updatedAnnots} updated`):new un.Notice(`Affected ${n.notes} notes, no annotation updated`):new un.Notice("No note found for this literature")}},fM=Mb,nd=class extends Error{constructor(r,n){super(`Note linked to ${n} already exists: ${r.join(",")}`);this.targets=r;this.key=n;this.name="NoteExistsError"}};var id=require("@codemirror/language");var jb=require("obsidian");var od=class extends ue{plugin=this.use(be);onload(){this.patchEditorClick()}async patchEditorClick(){let{workspace:t}=this.plugin.app,{noteIndex:r,database:n,settings:o,noteFeatures:i}=this.plugin;await w1(this.plugin.app);let s=()=>t.getLeavesOfType("markdown").length>0,[a,u]=qs({register:c=>t.on("layout-change",()=>{s()&&c()}),unregister:c=>t.offref(c),escape:s,timeout:null});u&&this.register(u),await a;let l=t.getLeavesOfType("markdown")[0].view;this.register(qt(l.editor.constructor.prototype,{getClickableTokenAt:c=>function(f,...p){let d=c.call(this,f,...p);return d||JX.call(this,f,r)}})),this.register(qt(l.editMode.constructor.prototype,{triggerClickableToken:c=>function(f,p){if(f.type==="internal-link"&&f.citekey==="zotero")(async()=>{let d=f.text,{[d]:h}=await n.api.getItemIDsFromCitekey([f.text]);if(h<0){new jb.Notice(`Citekey ${d} not found in Zotero`);return}let[b]=await n.api.getItems([[h,o.libId]]);if(!b){new jb.Notice(`Item not found for citekey ${d}`);return}let y=await i.createNoteForDocItemFull(b);await t.openLinkText(y,"",!0,{active:!0})})();else return c.call(this,f,p)}}))}};function JX(e,t){let r=this.cm,n=r.state.doc,o=[],i=n.line(e.line+1),s=(0,id.syntaxTree)(r.state),a=i.from;s.iterate({from:i.from,to:i.to,enter:b=>{let y=b.type,v=b.from,w=b.to,T=y.prop(id.tokenClassNodeProp);T&&(a=u){l=b;break}}if(l<0)return null;let c=o[l];if(!c.type.split(" ").includes("hmd-barelink"))return null;let p=n.sliceString(c.from,c.to);if(!p.startsWith("@"))return null;let d=p.slice(1),h={start:this.offsetToPos(c.from),end:this.offsetToPos(c.to)};if(t.citekeyCache.has(d)){let[b]=t.citekeyCache.get(d);return{type:"internal-link",text:b,...h}}else return{type:"internal-link",text:d,citekey:"zotero",...h}}var sd=require("obsidian");var rs=class extends ue{plugin=this.use(be);settings=this.use(de);app=this.use(sd.App);get meta(){return this.app.metadataCache}get vault(){return this.app.vault}get literatureNoteFolder(){return this.settings.current?.literatureNoteFolder}get joinPath(){return ZX(this.literatureNoteFolder)}noteCache=new Map;blockCache={byFile:new Map,byKey:new Map};citekeyCache=new Map;#e(t,r){let n=Ty(r);if(n){if(!this.noteCache.has(n))return this.noteCache.set(n,new Set([t])),!0;let i=this.noteCache.get(n),s=i.size;return i.add(t).size!==s}let o=!1;for(let[i,s]of this.noteCache.entries()){let a=s.delete(t);o||=a,a&&s.size===0&&this.noteCache.delete(i)}return o}#t(t,r){let n=u=>{let l=this.blockCache.byFile.get(u);if(!l)return!1;this.blockCache.byFile.delete(u);for(let c of l){let f=this.blockCache.byKey.get(c.key);f.delete(c),f.size===0&&this.blockCache.byKey.delete(c.key)}return!0};if(!r)return n(t);let{blocks:o,sections:i}=r;if(!i||!o)return n(t);let s=i.filter(Ka);if(s.length===0)return n(t);n(t);let a=Ya(s.flatMap(u=>Va(u.id).map(l=>[l,u.position])),bo(([u])=>u),ki((u,l)=>({file:t,key:u,blocks:l.map(([c,f])=>f)})),Rl);this.blockCache.byFile.set(t,a);for(let u of a){let l=this.blockCache.byKey.get(u.key);l?l.add(u):this.blockCache.byKey.set(u.key,new Set([u]))}return!0}#r(t,r){let n=r?.frontmatter?.citekey;if(n){if(!this.citekeyCache.has(n))return this.citekeyCache.set(n,new Set([t])),!0;let i=this.citekeyCache.get(n),s=i.size;return i.add(t).size!==s}let o=!1;for(let[i,s]of this.citekeyCache.entries()){let a=s.delete(t);o||=a,a&&s.size===0&&this.citekeyCache.delete(i)}return o}getNotesFor(t){let r=this.noteCache.get(Bt(t,!0));return r?[...r]:[]}getBlocksFor({file:t,item:r}){if(!t&&!r)throw new Error("no file or item provided");let n=r?this.blockCache.byKey.get(Bt(r,!0)):null,o=t?this.blockCache.byFile.get(t):null;return t&&r?!o||!n?[]:o.filter(i=>n.has(i)):t?o?[...o]:[]:r?n?[...n]:[]:[]}getBlocksIn(t){let r=this.blockCache.byFile.get(t);return r?[...r]:null}#n(t,r){r===void 0&&(r=this.meta.getCache(t)),[this.#e(t,r),this.#t(t,r),this.#r(t,r)].some(o=>o)&&this.meta.trigger("zotero:index-update",t)}#i(t){this.#n(t,null)}#s(){this.noteCache.clear(),this.blockCache.byFile.clear(),this.blockCache.byKey.clear(),this.meta.trigger("zotero:index-clear")}onload(){this.settings.once(()=>{[this.meta.on("changed",this.onMetaChanged,this),this.vault.on("rename",this.onFileRenamed,this),this.vault.on("delete",this.onFileRemoved,this)].forEach(this.registerEvent.bind(this));let[t,r]=x1(this.plugin.app,{});r&&this.register(r),t.then(()=>{this.onMetaBuilt(),this.plugin.addCommand({id:"refresh-note-index",name:"Refresh literature notes index",callback:()=>{this.reload(),new sd.Notice("Literature notes re-indexed")}})})}),this.register(qe(Qe(()=>this.reload(),()=>this.literatureNoteFolder,!0)))}onMetaBuilt(){for(let t of this.vault.getMarkdownFiles())this.#n(t.path)}onMetaChanged(t,r,n){this.#n(t.path,n)}onFileRemoved(t){at(t)&&this.#i(t.path)}onFileRenamed(t,r){this.#i(r),at(t)&&this.#n(t.path)}reload(){this.#s(),this.onMetaBuilt(),W.info("Note Index: Reloaded")}};le([fe],rs.prototype,"literatureNoteFolder",1);var ZX=e=>e==="/"?"":e+"/";var Lb=require("crypto");var pM="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var YX=128,zo,ns,XX=e=>{!zo||zo.lengthzo.length&&((0,Lb.randomFillSync)(zo),ns=0),ns+=e};var ad=(e=21)=>{XX(e-=0);let t="";for(let r=ns-e;r({filter:(t,r)=>t.nodeName==="SPAN"&&!!t.style.color,replacement:(t,r,n)=>{if(!(r instanceof HTMLElement))throw new Error("Unexpected node");let{color:o,colorName:i}=Bb(r.style.color),s=r.firstChild,a={bgColor:null,bgColorName:null};if(s===r.lastChild&&s?.nodeName==="SPAN"&&s.style.backgroundColor){let{color:u,colorName:l}=Bb(s.style.backgroundColor);a={bgColor:u,bgColorName:l}}return e.renderColored({content:t,color:o,colorName:i,...a})}}),gM=e=>({filter:(t,r)=>t.nodeName==="SPAN"&&!!t.style.backgroundColor,replacement:(t,r,n)=>{if(!(r instanceof HTMLElement))throw new Error("Unexpected node");let{color:o,colorName:i}=Bb(r.style.backgroundColor),s=r.parentElement;return s?.nodeName==="SPAN"&&s.style.color&&!r.nextSibling?t:e.renderColored({content:t,color:null,colorName:null,bgColor:o,bgColorName:i})}});function Bb(e){if(!e)return{colorName:null,color:null};let t=Lt(e).toHex().toUpperCase();return{colorName:Rf[t.substring(0,7)]??t,color:t}}var Tu={cite:{pattern:/%%ZTNOTE\.CITE:([\w-]{10})%%/g,create:e=>`%%ZTNOTE.CITE:${e}%%`},annot:{pattern:/%%ZTNOTE\.ANNOT:([\w-]{10})%%/g,create:e=>`%%ZTNOTE.ANNOT:${e}%%`}},zb=class{constructor(t){Object.assign(this,t)}toString(){return this.content}},ud=class extends ue{plugin=this.use(be);citations=new Map;annotations=new Map;tdService=new globalThis.TurndownService({headingStyle:"atx"}).addRule("color",hM(this.plugin.templateRenderer)).addRule("bg-color",gM(this.plugin.templateRenderer)).addRule("highlight-imported",{filter:(t,r)=>{if(t.tagName!=="P")return!1;let[n,o,i]=t.childNodes;return n instanceof HTMLElement&&n.classList.contains("highlight")?o instanceof HTMLElement?o.classList.contains("citation"):o instanceof Text&&o.textContent?.trim()===""?i instanceof HTMLElement&&i.classList.contains("citation"):!1:!1},replacement:(t,r,n)=>{let[o,i]=r.children;for(;r.firstChild!==i;)r.removeChild(r.firstChild);r.removeChild(i);let s=yM(o.dataset.annotation),a=r,u=ad(10);return this.annotations.set(u,{annotationKey:s.annotationKey,citationKey:os(s.citationItem.uris[0]),attachementKey:os(s.attachmentURI),commentHTML:a.textContent?.trim()?a.innerHTML:null,inline:!1}),Tu.annot.create(u)}}).addRule("citation",{filter:(t,r)=>t.classList.contains("citation")&&!!t.dataset.citation,replacement:(t,r,n)=>{if(!(r instanceof HTMLElement))throw new Error("Unexpected node");let o=QX(r.dataset.citation),i=ad(10);return this.citations.set(i,{text:t,itemKeys:o.citationItems.map(({uris:[s]})=>os(s))}),Tu.cite.create(i)}}).addRule("highlight",{filter:(t,r)=>t.classList.contains("highlight")&&!!t.dataset.annotation,replacement:(t,r,n)=>{if(!(r instanceof HTMLElement))throw new Error("Unexpected node");let o=yM(r.dataset.annotation),i=ad(10);return this.annotations.set(i,{annotationKey:o.annotationKey,citationKey:os(o.citationItem.uris[0]),attachementKey:os(o.attachmentURI),commentHTML:null,inline:!0}),Tu.annot.create(i)}});onload(){}async normalizeNotes(t){let r=[];for(let{note:n,...o}of t)r.push(new zb({...o,content:n?await this.turndown(n):"",note:n}));return r}async turndown(t){this.citations.clear(),this.annotations.clear();let r=this.tdService.turndown(t),n={citations:[...this.citations.values()].flatMap(c=>c.itemKeys),annotations:[...this.annotations.values()].map(c=>c.citationKey)},o=new Set([...this.annotations.values()].map(c=>c.attachementKey)),i=this.plugin.settings.libId,s=eQ([...n.citations,...n.annotations]),a=await this.plugin.databaseAPI.getItems(s.map(c=>[c,i])).then(async c=>{let f=new Map;for(let p=0;pc?[c.item.itemID,...[...c.annotations.values()].map(f=>f.itemID)]:[]).map(c=>[c,i])),l=r.replaceAll(Tu.cite.pattern,(c,f)=>{let p=this.citations.get(f),d=p.itemKeys.map(b=>{let y=a.get(b);if(!y)throw W.error("citation not found, key: ",b,p),new Error(`citation not found: key ${b}`);return{allAttachments:y.attachments,annotations:[],docItem:y.item,attachment:null,tags:u,notes:[]}});return this.plugin.templateRenderer.renderCitations(d,{plugin:this.plugin})}).replaceAll(Tu.annot.pattern,(c,f)=>{let p=this.annotations.get(f),d=a.get(p.citationKey);if(!d)throw W.error("citation not found, key:",f,p),new Error(`citation key not found: ${f}`);let h=d.annotations.get(p.annotationKey);if(!h)throw W.error("annotation not found, key: ",p.annotationKey,p),new Error(`annotation key not found: ${p.annotationKey}`);let b=this.plugin.templateRenderer.renderAnnot({...h,ztnote:{comment:p.commentHTML,get commentMd(){return p.commentHTML?(0,bM.htmlToMarkdown)(p.commentHTML):""},inline:p.inline}},{allAttachments:d.attachments,annotations:[...d.annotations.values()],attachment:d.attachments.find(y=>y.itemID===h.parentItemID),docItem:d.item,notes:[],tags:u},{plugin:this.plugin});return p.inline?b:` +`+b+` +`}).replace(/\n{3,}/g,` + +`);return this.citations.clear(),this.annotations.clear(),l}};function QX(e){let t=JSON.parse(decodeURIComponent(e)),{data:r,problems:n}=dM(t);if(n)throw W.error("Unexpected citation data",t,n),new Error("Unexpected citation data: "+n.summary);return r}function yM(e){let t=JSON.parse(decodeURIComponent(e)),{data:r,problems:n}=mM(t);if(n)throw W.error("Unexpected annotation data",t,n),new Error("Unexpected annotation data: "+n.summary);return r}function eQ(e){return[...new Set(e)]}var fd=require("fs/promises");var tQ=(e,t)=>t.some(r=>e instanceof r),vM,xM;function rQ(){return vM||(vM=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function nQ(){return xM||(xM=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}var wM=new WeakMap,Wb=new WeakMap,EM=new WeakMap,Ub=new WeakMap,Kb=new WeakMap;function oQ(e){let t=new Promise((r,n)=>{let o=()=>{e.removeEventListener("success",i),e.removeEventListener("error",s)},i=()=>{r(Mr(e.result)),o()},s=()=>{n(e.error),o()};e.addEventListener("success",i),e.addEventListener("error",s)});return t.then(r=>{r instanceof IDBCursor&&wM.set(r,e)}).catch(()=>{}),Kb.set(t,e),t}function iQ(e){if(Wb.has(e))return;let t=new Promise((r,n)=>{let o=()=>{e.removeEventListener("complete",i),e.removeEventListener("error",s),e.removeEventListener("abort",s)},i=()=>{r(),o()},s=()=>{n(e.error||new DOMException("AbortError","AbortError")),o()};e.addEventListener("complete",i),e.addEventListener("error",s),e.addEventListener("abort",s)});Wb.set(e,t)}var Hb={get(e,t,r){if(e instanceof IDBTransaction){if(t==="done")return Wb.get(e);if(t==="objectStoreNames")return e.objectStoreNames||EM.get(e);if(t==="store")return r.objectStoreNames[1]?void 0:r.objectStore(r.objectStoreNames[0])}return Mr(e[t])},set(e,t,r){return e[t]=r,!0},has(e,t){return e instanceof IDBTransaction&&(t==="done"||t==="store")?!0:t in e}};function SM(e){Hb=e(Hb)}function sQ(e){return e===IDBDatabase.prototype.transaction&&!("objectStoreNames"in IDBTransaction.prototype)?function(t,...r){let n=e.call(cd(this),t,...r);return EM.set(n,t.sort?t.sort():[t]),Mr(n)}:nQ().includes(e)?function(...t){return e.apply(cd(this),t),Mr(wM.get(this))}:function(...t){return Mr(e.apply(cd(this),t))}}function aQ(e){return typeof e=="function"?sQ(e):(e instanceof IDBTransaction&&iQ(e),tQ(e,rQ())?new Proxy(e,Hb):e)}function Mr(e){if(e instanceof IDBRequest)return oQ(e);if(Ub.has(e))return Ub.get(e);let t=aQ(e);return t!==e&&(Ub.set(e,t),Kb.set(t,e)),t}var cd=e=>Kb.get(e);function _M(e,t,{blocked:r,upgrade:n,blocking:o,terminated:i}={}){let s=indexedDB.open(e,t),a=Mr(s);return n&&s.addEventListener("upgradeneeded",u=>{n(Mr(s.result),u.oldVersion,u.newVersion,Mr(s.transaction),u)}),r&&s.addEventListener("blocked",u=>r(u.oldVersion,u.newVersion,u)),a.then(u=>{i&&u.addEventListener("close",()=>i()),o&&u.addEventListener("versionchange",l=>o(l.oldVersion,l.newVersion,l))}).catch(()=>{}),a}var uQ=["get","getKey","getAll","getAllKeys","count"],cQ=["put","add","delete","clear"],Vb=new Map;function IM(e,t){if(!(e instanceof IDBDatabase&&!(t in e)&&typeof t=="string"))return;if(Vb.get(t))return Vb.get(t);let r=t.replace(/FromIndex$/,""),n=t!==r,o=cQ.includes(r);if(!(r in(n?IDBIndex:IDBObjectStore).prototype)||!(o||uQ.includes(r)))return;let i=async function(s,...a){let u=this.transaction(s,o?"readwrite":"readonly"),l=u.store;return n&&(l=l.index(a.shift())),(await Promise.all([l[r](...a),o&&u.done]))[0]};return Vb.set(t,i),i}SM(e=>({...e,get:(t,r,n)=>IM(t,r)||e.get(t,r,n),has:(t,r)=>!!IM(t,r)||e.has(t,r)}));var pd=require("obsidian");var lQ="zotlit",ld="pdf-outline",Ou=class extends ue{constructor(r){super();this.plugin=r}db=_M(lQ,1,{upgrade(r){r.createObjectStore(ld,{keyPath:"path"})}});async getCachedOutlineKeys(){return await(await this.db).getAllKeys(ld)}async getPDFOutline(r,n=!1){let o=await this.db,i=await o.get(ld,r),s;try{s=await(0,fd.stat)(r)}catch(u){if(u.code==="ENOENT")return new pd.Notice("PDF file not found"),null;throw u}if(i&&s.mtimeMs===i.mtime&&!n)return W.debug("PDF outline cache hit",r),i.outline;let a=await this.#e(r);return a?(await o.put(ld,{path:r,mtime:s.mtimeMs,outline:a,created:Date.now()}),W.debug("PDF outline cache miss and updated",r),a):null}pdfjs;async#e(r){this.pdfjs??=await(0,pd.loadPdfJs)();let n=this.pdfjs.getDocument(await(0,fd.readFile)(r)),o=await n.promise,i=CM(await o.getOutline(),0),s=await Promise.all(i.map(async({dest:a,...u})=>{if(!Array.isArray(a))return{...u,page:null};let[l]=a,c=await o.getPageIndex(l);return{...u,page:c}}));return await o.cleanup(),await n.destroy(),s}},CM=(e,t)=>e.flatMap(({title:r,dest:n,items:o})=>[{title:r,dest:n,level:t},...CM(o,t+1)]);var Gb=require("fs");var TM=require("obsidian");var cn=class extends ue{settings=this.use(de);api=this.use(Rt).api;app=this.use(TM.App);get autoRefresh(){return this.settings.current?.autoRefresh}onDatabaseUpdate(t){return()=>this.app.vault.trigger("zotero:db-updated",t)}onload(){this.register(qe(Qe(()=>this.setAutoRefresh(this.autoRefresh),()=>this.autoRefresh))),W.debug("loading DatabaseWatcher")}onunload(){this.#e()}#e(){this.#r=!1,this.#t=Ai(this.#t,t=>(t?.close(),null))}#t={main:null,bbt:null};#r=!1;async setAutoRefresh(t,r=!1){if(!(t===this.#r&&!r)&&(W.debug("Auto refresh set to "+t),this.#r=t,this.#e(),t)){this.#t.main=(0,Gb.watch)(this.settings.zoteroDbPath,this.onDatabaseUpdate("main"));let n=await this.api.getLoadStatus();n.bbt&&(this.#t.bbt=(0,Gb.watch)(n.bbtVersion==="v0"?this.settings.bbtSearchDbPath:this.settings.bbtMainDbPath,this.onDatabaseUpdate("bbt")))}}};le([fe],cn.prototype,"autoRefresh",1);var Au=class extends ue{onunload(){W.info("ZoteroDB unloaded")}get defaultLibId(){return this.settings.libId}settings=this.use(de);#e=this.use(Rt);watcher=this.use(cn);get api(){return this.#e.api}async search(t){let n=this.defaultLibId;if(this.#e.status!==2)throw new Error("Search index not ready");let o=await this.api.search(n,{query:t,limit:50,index:fQ});if(o.length===0)return[];let i=pQ(o);return i.length===0?[]:(await this.api.getItems(i.map(a=>[a.id,n]))).map((a,u)=>{let{id:l,fields:c,score:f}=i[u];if(!a)throw new Error("Item not found: "+l);return{item:a,score:f,fields:[...c]}})}async getItemsOf(t=50,r=this.defaultLibId){if(this.#e.status!==2)throw new Error("Search index not ready");return(await this.api.getItemsFromCache(t,r)).map(o=>({item:o,score:-1,fields:[]}))}},fQ=["title","creators[]:firstName","creators[]:lastName","date"];function pQ(e){let{size:t}=new Set(e.flatMap(n=>n.result)),r=e.reduce((n,{field:o,result:i})=>(o.startsWith("creators[]")&&(o="creators"),i.forEach((s,a)=>{let u=t-a;switch(o){case"title":u*=100;break;case"creators":case"date":u*=5;break;default:throw new Error("Unknown field: "+o)}if(!n.has(+s))n.set(+s,{id:+s,score:u,fields:new Set([o])});else{let l=n.get(+s);l.fields.add(o),l.score+=u}}),n),new Map);return Array.from(r.values()).sort((n,o)=>o.score-n.score)}var yr=require("fs/promises"),OM=require("path"),AM=require("path/posix");var ir=require("obsidian");var zn=class extends ue{onload(){W.debug("loading ImgCacheImporter")}async onunload(){await this.flush()}get app(){return this.use(be).app}settings=this.use(de);queue=new Map;getCachePath(t){return An(t,this.settings.current?.zoteroDataDir)}get mode(){return this.settings.current?.imgExcerptImport}get path(){return this.settings.current?.imgExcerptPath}get imgExcerptDir(){return this.mode?this.path:null}getInVaultPath(t){if(!this.imgExcerptDir||t.type!==_e.image)return null;let r=this.getCachePath(t);return mQ(t,r,this.imgExcerptDir)}import(t){let r=this.getCachePath(t),n=this.getInVaultPath(t);if(!n)return null;let o;return this.queue.has(n)?o=this.queue.get(n):(o=async()=>{let i=await this.linkToVault(n,r);return this.queue.delete(n),i},this.queue.set(n,o)),n}async flush(){return await Promise.all([...this.queue.values()].map(r=>r()))}cancel(){this.queue.clear()}async linkToVault(t,r){let n=await(0,yr.stat)(r).then(s=>{if(!s.isFile()&&!s.isSymbolicLink()){let a=`failed to link image excerpt cache to vault: given path not file ${r}`;return new ir.Notice(a),it(a,null),-1}return s.mtimeMs}).catch(s=>{if(s.code==="ENOENT"){let a=`failed to link image excerpt cache to vault: file not found ${r}`;return new ir.Notice(a),it(a,s),-1}throw s});if(n===-1)return!1;let o=this.mode;if(o===!1)return W.trace("import mode disabled"),!1;let i=(0,AM.dirname)(t);if(i!=="."&&i!==".."&&await this.app.vault.createFolder(i).catch(()=>{}),this.app.vault.adapter instanceof ir.FileSystemAdapter){let s=this.app.vault.adapter.getFullPath(t),a=await(0,yr.lstat)(s).catch(u=>{if(u.code!=="ENOENT")throw u;return null});if(o==="copy"){let u=-1;if(a)if(a.isSymbolicLink())W.trace(s+" is symlink, unlinking"),await(0,yr.rm)(s);else if(a.isFile())u=a.mtimeMs;else{let l="Failed to import image excerpt cache: cannot overwrite non-file "+s;return new ir.Notice(l),it(l,null),!1}if(u<0||n>u)return W.trace(s+" is file, "+(u<0?"creating":"overwritting")),await(0,yr.copyFile)(r,s),new ir.Notice(`Copied image excerpt cache to vault: ${t}`),!0;W.trace("mtime check pass, skipping")}else{if(a){if(a.isSymbolicLink())return W.trace(s+" is symlink, skipping"),!1;if(a.isFile())W.trace(s+" is file, remove before symlinking"),await(0,yr.rm)(s);else{let u="Failed to import image excerpt cache: cannot overwrite non-file "+s;return new ir.Notice(u),it(u,null),!1}}try{await(0,yr.symlink)(r,s,"file")}catch(u){if(u.code==="EPERM")return new ir.Notice(`Failed to symlink image excerpt cache to vault: permission denied ${r}, check directory permission or change import mode to copy. If you are using FAT32 drive, symlink is not supported.`),it(`Failed to symlink image excerpt cache to vault: permission denied ${r}`,u),!1;throw u}return new ir.Notice(`linked image excerpt cache to vault: ${t}`),!0}return!1}else throw new Error("Mobile not supported")}};le([fe],zn.prototype,"mode",1),le([fe],zn.prototype,"path",1),le([fe],zn.prototype,"imgExcerptDir",1);var dQ=(e,t)=>(t??"")+(0,OM.basename)(e),mQ=(e,t,r)=>{let n=dQ(t,e.groupID);return[(0,ir.normalizePath)(r),n].join("/")};S();S();S();function is(e,t=[]){let r=[];function n(i,s){let a=Le(s),u=r.length;r=[...r,s];function l(f){let{scope:p,children:d,...h}=f,b=p?.[e][u]||a,y=ne(()=>h,Object.values(h));return H(b.Provider,{value:y},d)}function c(f,p){let d=p?.[e][u]||a,h=Q(d);if(h)return h;if(s!==void 0)return s;throw new Error(`\`${f}\` must be used within \`${i}\``)}return l.displayName=i+"Provider",[l,c]}let o=()=>{let i=r.map(s=>Le(s));return function(a){let u=a?.[e]||i;return ne(()=>({[`__scope${e}`]:{...a,[e]:u}}),[a,u])}};return o.scopeName=e,[n,hQ(o,...t)]}function hQ(...e){let t=e[0];if(e.length===1)return t;let r=()=>{let n=e.map(o=>({useScope:o(),scopeName:o.scopeName}));return function(i){let s=n.reduce((a,{useScope:u,scopeName:l})=>{let f=u(i)[`__scope${l}`];return{...a,...f}},{});return ne(()=>({[`__scope${t.scopeName}`]:s}),[s])}};return r.scopeName=t.scopeName,r}S();S();S();function gQ(e,t){typeof e=="function"?e(t):e!=null&&(e.current=t)}function Jb(...e){return t=>e.forEach(r=>gQ(r,t))}function Uo(...e){return Y(Jb(...e),e)}S();var ss=Z((e,t)=>{let{children:r,...n}=e,o=Ve.toArray(r),i=o.find(bQ);if(i){let s=i.props.children,a=o.map(u=>u===i?Ve.count(s)>1?Ve.only(null):Pt(s)?s.props.children:null:u);return H(Zb,ce({},n,{ref:t}),Pt(s)?Xt(s,void 0,a):null)}return H(Zb,ce({},n,{ref:t}),r)});ss.displayName="Slot";var Zb=Z((e,t)=>{let{children:r,...n}=e;return Pt(r)?Xt(r,{...vQ(n,r.props),ref:Jb(t,r.ref)}):Ve.count(r)>1?Ve.only(null):null});Zb.displayName="SlotClone";var yQ=({children:e})=>H($,null,e);function bQ(e){return Pt(e)&&e.type===yQ}function vQ(e,t){let r={...t};for(let n in t){let o=e[n],i=t[n];/^on[A-Z]/.test(n)?o&&i?r[n]=(...a)=>{i(...a),o(...a)}:o&&(r[n]=o):n==="style"?r[n]={...o,...i}:n==="className"&&(r[n]=[o,i].filter(Boolean).join(" "))}return{...e,...r}}function kM(e){let t=e+"CollectionProvider",[r,n]=is(t),[o,i]=r(t,{collectionRef:{current:null},itemMap:new Map}),s=d=>{let{scope:h,children:b}=d,y=R.useRef(null),v=R.useRef(new Map).current;return R.createElement(o,{scope:h,itemMap:v,collectionRef:y},b)},a=e+"CollectionSlot",u=R.forwardRef((d,h)=>{let{scope:b,children:y}=d,v=i(a,b),w=Uo(h,v.collectionRef);return R.createElement(ss,{ref:w},y)}),l=e+"CollectionItemSlot",c="data-radix-collection-item",f=R.forwardRef((d,h)=>{let{scope:b,children:y,...v}=d,w=R.useRef(null),T=Uo(h,w),M=i(l,b);return R.useEffect(()=>(M.itemMap.set(w,{ref:w,...v}),()=>void M.itemMap.delete(w))),R.createElement(ss,{[c]:"",ref:T},y)});function p(d){let h=i(e+"CollectionConsumer",d);return R.useCallback(()=>{let y=h.collectionRef.current;if(!y)return[];let v=Array.from(y.querySelectorAll(`[${c}]`));return Array.from(h.itemMap.values()).sort((M,V)=>v.indexOf(M.ref.current)-v.indexOf(V.ref.current))},[h.collectionRef,h.itemMap])}return[{Provider:s,Slot:u,ItemSlot:f},p,n]}S();S();var ku=globalThis?.document?Et:()=>{};var xQ=lr["useId".toString()]||(()=>{}),wQ=0;function dd(e){let[t,r]=j(xQ());return ku(()=>{e||r(n=>n??String(wQ++))},[e]),e||(t?`radix-${t}`:"")}S();S();var EQ=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"],Un=EQ.reduce((e,t)=>{let r=Z((n,o)=>{let{asChild:i,...s}=n,a=i?ss:t;return U(()=>{window[Symbol.for("radix-ui")]=!0},[]),H(a,ce({},s,{ref:o}))});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});S();function Nu(e){let t=F(e);return U(()=>{t.current=e}),ne(()=>(...r)=>{var n;return(n=t.current)===null||n===void 0?void 0:n.call(t,...r)},[])}S();function md({prop:e,defaultProp:t,onChange:r=()=>{}}){let[n,o]=SQ({defaultProp:t,onChange:r}),i=e!==void 0,s=i?e:n,a=Nu(r),u=Y(l=>{if(i){let f=typeof l=="function"?l(e):l;f!==e&&a(f)}else o(l)},[i,e,o,a]);return[s,u]}function SQ({defaultProp:e,onChange:t}){let r=j(e),[n]=r,o=F(n),i=Nu(t);return U(()=>{o.current!==n&&(i(n),o.current=n)},[n,o,i]),r}S();var IQ=Le(void 0);function hd(e){let t=Q(IQ);return e||t||"ltr"}var Yb="rovingFocusGroup.onEntryFocus",_Q={bubbles:!1,cancelable:!0},Qb="RovingFocusGroup",[Xb,NM,CQ]=kM(Qb),[TQ,ev]=is(Qb,[CQ]),[OQ,AQ]=TQ(Qb),kQ=Z((e,t)=>H(Xb.Provider,{scope:e.__scopeRovingFocusGroup},H(Xb.Slot,{scope:e.__scopeRovingFocusGroup},H(NQ,ce({},e,{ref:t}))))),NQ=Z((e,t)=>{let{__scopeRovingFocusGroup:r,orientation:n,loop:o=!1,dir:i,currentTabStopId:s,defaultCurrentTabStopId:a,onCurrentTabStopIdChange:u,onEntryFocus:l,...c}=e,f=F(null),p=Uo(t,f),d=hd(i),[h=null,b]=md({prop:s,defaultProp:a,onChange:u}),[y,v]=j(!1),w=Nu(l),T=NM(r),M=F(!1),[V,J]=j(0);return U(()=>{let G=f.current;if(G)return G.addEventListener(Yb,w),()=>G.removeEventListener(Yb,w)},[w]),H(OQ,{scope:r,orientation:n,dir:d,loop:o,currentTabStopId:h,onItemFocus:Y(G=>b(G),[b]),onItemShiftTab:Y(()=>v(!0),[]),onFocusableItemAdd:Y(()=>J(G=>G+1),[]),onFocusableItemRemove:Y(()=>J(G=>G-1),[])},H(Un.div,ce({tabIndex:y||V===0?-1:0,"data-orientation":n},c,{ref:p,style:{outline:"none",...e.style},onMouseDown:Ct(e.onMouseDown,()=>{M.current=!0}),onFocus:Ct(e.onFocus,G=>{let K=!M.current;if(G.target===G.currentTarget&&K&&!y){let P=new CustomEvent(Yb,_Q);if(G.currentTarget.dispatchEvent(P),!P.defaultPrevented){let X=T().filter(D=>D.focusable),C=X.find(D=>D.active),_=X.find(D=>D.id===h),B=[C,_,...X].filter(Boolean).map(D=>D.ref.current);RM(B)}}M.current=!1}),onBlur:Ct(e.onBlur,()=>v(!1))})))}),RQ="RovingFocusGroupItem",DQ=Z((e,t)=>{let{__scopeRovingFocusGroup:r,focusable:n=!0,active:o=!1,tabStopId:i,...s}=e,a=dd(),u=i||a,l=AQ(RQ,r),c=l.currentTabStopId===u,f=NM(r),{onFocusableItemAdd:p,onFocusableItemRemove:d}=l;return U(()=>{if(n)return p(),()=>d()},[n,p,d]),H(Xb.ItemSlot,{scope:r,id:u,focusable:n,active:o},H(Un.span,ce({tabIndex:c?0:-1,"data-orientation":l.orientation},s,{ref:t,onMouseDown:Ct(e.onMouseDown,h=>{n?l.onItemFocus(u):h.preventDefault()}),onFocus:Ct(e.onFocus,()=>l.onItemFocus(u)),onKeyDown:Ct(e.onKeyDown,h=>{if(h.key==="Tab"&&h.shiftKey){l.onItemShiftTab();return}if(h.target!==h.currentTarget)return;let b=$Q(h,l.orientation,l.dir);if(b!==void 0){h.preventDefault();let v=f().filter(w=>w.focusable).map(w=>w.ref.current);if(b==="last")v.reverse();else if(b==="prev"||b==="next"){b==="prev"&&v.reverse();let w=v.indexOf(h.currentTarget);v=l.loop?MQ(v,w+1):v.slice(w+1)}setTimeout(()=>RM(v))}})})))}),PQ={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function FQ(e,t){return t!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function $Q(e,t,r){let n=FQ(e.key,r);if(!(t==="vertical"&&["ArrowLeft","ArrowRight"].includes(n))&&!(t==="horizontal"&&["ArrowUp","ArrowDown"].includes(n)))return PQ[n]}function RM(e){let t=document.activeElement;for(let r of e)if(r===t||(r.focus(),document.activeElement!==t))return}function MQ(e,t){return e.map((r,n)=>e[(t+n)%e.length])}var DM=kQ,PM=DQ;S();S();function jQ(e,t){return Nr((r,n)=>{let o=t[r][n];return o??r},e)}var tv=e=>{let{present:t,children:r}=e,n=LQ(t),o=typeof r=="function"?r({present:n.isPresent}):Ve.only(r),i=Uo(n.ref,o.ref);return typeof r=="function"||n.isPresent?Xt(o,{ref:i}):null};tv.displayName="Presence";function LQ(e){let[t,r]=j(),n=F({}),o=F(e),i=F("none"),s=e?"mounted":"unmounted",[a,u]=jQ(s,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return U(()=>{let l=gd(n.current);i.current=a==="mounted"?l:"none"},[a]),ku(()=>{let l=n.current,c=o.current;if(c!==e){let p=i.current,d=gd(l);e?u("MOUNT"):d==="none"||l?.display==="none"?u("UNMOUNT"):u(c&&p!==d?"ANIMATION_OUT":"UNMOUNT"),o.current=e}},[e,u]),ku(()=>{if(t){let l=f=>{let d=gd(n.current).includes(f.animationName);f.target===t&&d&&Rr(()=>u("ANIMATION_END"))},c=f=>{f.target===t&&(i.current=gd(n.current))};return t.addEventListener("animationstart",c),t.addEventListener("animationcancel",l),t.addEventListener("animationend",l),()=>{t.removeEventListener("animationstart",c),t.removeEventListener("animationcancel",l),t.removeEventListener("animationend",l)}}else u("ANIMATION_END")},[t,u]),{isPresent:["mounted","unmountSuspended"].includes(a),ref:Y(l=>{l&&(n.current=getComputedStyle(l)),r(l)},[])}}function gd(e){return e?.animationName||"none"}var FM="Tabs",[qQ,qPe]=is(FM,[ev]),$M=ev(),[BQ,rv]=qQ(FM),zQ=Z((e,t)=>{let{__scopeTabs:r,value:n,onValueChange:o,defaultValue:i,orientation:s="horizontal",dir:a,activationMode:u="automatic",...l}=e,c=hd(a),[f,p]=md({prop:n,onChange:o,defaultProp:i});return H(BQ,{scope:r,baseId:dd(),value:f,onValueChange:p,orientation:s,dir:c,activationMode:u},H(Un.div,ce({dir:c,"data-orientation":s},l,{ref:t})))}),UQ="TabsList",WQ=Z((e,t)=>{let{__scopeTabs:r,loop:n=!0,...o}=e,i=rv(UQ,r),s=$M(r);return H(DM,ce({asChild:!0},s,{orientation:i.orientation,dir:i.dir,loop:n}),H(Un.div,ce({role:"tablist","aria-orientation":i.orientation},o,{ref:t})))}),HQ="TabsTrigger",KQ=Z((e,t)=>{let{__scopeTabs:r,value:n,disabled:o=!1,...i}=e,s=rv(HQ,r),a=$M(r),u=MM(s.baseId,n),l=jM(s.baseId,n),c=n===s.value;return H(PM,ce({asChild:!0},a,{focusable:!o,active:c}),H(Un.button,ce({type:"button",role:"tab","aria-selected":c,"aria-controls":l,"data-state":c?"active":"inactive","data-disabled":o?"":void 0,disabled:o,id:u},i,{ref:t,onMouseDown:Ct(e.onMouseDown,f=>{!o&&f.button===0&&f.ctrlKey===!1?s.onValueChange(n):f.preventDefault()}),onKeyDown:Ct(e.onKeyDown,f=>{[" ","Enter"].includes(f.key)&&s.onValueChange(n)}),onFocus:Ct(e.onFocus,()=>{let f=s.activationMode!=="manual";!c&&!o&&f&&s.onValueChange(n)})})))}),VQ="TabsContent",GQ=Z((e,t)=>{let{__scopeTabs:r,value:n,forceMount:o,children:i,...s}=e,a=rv(VQ,r),u=MM(a.baseId,n),l=jM(a.baseId,n),c=n===a.value,f=F(c);return U(()=>{let p=requestAnimationFrame(()=>f.current=!1);return()=>cancelAnimationFrame(p)},[]),H(tv,{present:o||c},({present:p})=>H(Un.div,ce({"data-state":c?"active":"inactive","data-orientation":a.orientation,role:"tabpanel","aria-labelledby":u,hidden:!p,id:l,tabIndex:0},s,{ref:t,style:{...e.style,animationDuration:f.current?"0s":void 0}}),p&&i))});function MM(e,t){return`${e}-trigger-${t}`}function jM(e,t){return`${e}-content-${t}`}var LM=zQ,nv=WQ,ov=KQ,iv=GQ;S();var qM=LM,sv=Z(({className:e,...t},r)=>m(nv,{ref:r,className:ee("inline-flex items-center justify-center rounded-md bg-secondary p-1",e),...t}));sv.displayName=nv.displayName;var Wn=Z(({className:e,...t},r)=>m(ov,{className:ee("obzt-btn-reset","inline-flex min-w-[100px] items-center justify-center rounded-[0.185rem] px-3 py-1.5 text-sm font-medium text-txt-muted transition-all disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-primary data-[state=active]:text-txt-normal data-[state=active]:shadow-sm",e),...t,ref:r}));Wn.displayName=ov.displayName;var Hn=Z(({className:e,...t},r)=>m(iv,{className:ee("mt-2 rounded-md border p-6",e),...t,ref:r}));Hn.displayName=iv.displayName;S();S();function as(){return as=Object.assign||function(e){for(var t=1;to(i=>!i),[])]}var VM=require("obsidian");S();S();var ye=Z(function({name:t,description:r,heading:n,children:o,className:i},s){return m("div",{className:ee("setting-item",n&&"setting-item-heading border-none",i),children:[m("div",{className:"setting-item-info",children:[m("div",{className:"setting-item-name",children:t}),r&&m("div",{className:"setting-item-description",children:r})]}),m("div",{className:"setting-item-control",ref:s,children:o})]})});function aee(e){let t=F(e);return t.current=e,ne(()=>Bu(()=>t.current()),[])}function Fe(e,t){let r=Q(Ot).settings,n=aee(()=>e(r.current)).value,o=$t(function(s){r.update(a=>t(s,a))});return[n,o]}function av(e,t){let r=$t(t),n=F(null);return U(()=>{n.current?.setValue(e)},[e]),Y(o=>{if(!o)n.current?.toggleEl.remove(),n.current=null;else{let i=new VM.ToggleComponent(o);i.setValue(e),i.onChange(r),n.current=i}},[])}function br({name:e,children:t,get:r,set:n}){let o=av(...Fe(r,n));return m(uv,{ref:o,name:e,children:t})}var uv=Z(function({name:t,children:r},n){return m(ye,{className:"mod-toggle",ref:n,name:t,description:r})});var ZM=ge(require("node:net"),1),YM=ge(require("node:os"),1),xd=class extends Error{constructor(t){super(`${t} is locked`)}},cs={old:new Set,young:new Set},uee=1e3*15;var vd,cee=()=>{let e=YM.default.networkInterfaces(),t=new Set([void 0,"0.0.0.0"]);for(let r of Object.values(e))for(let n of r)t.add(n.address);return t},GM=e=>new Promise((t,r)=>{let n=ZM.default.createServer();n.unref(),n.on("error",r),n.listen(e,()=>{let{port:o}=n.address();n.close(()=>{t(o)})})}),JM=async(e,t)=>{if(e.host||e.port===0)return GM(e);for(let r of t)try{await GM({port:e.port,host:r})}catch(n){if(!["EADDRNOTAVAIL","EINVAL"].includes(n.code))throw n}return e.port},lee=function*(e){e&&(yield*e),yield 0};async function cv(e){let t,r=new Set;if(e&&(e.port&&(t=typeof e.port=="number"?[e.port]:e.port),e.exclude)){let o=e.exclude;if(typeof o[Symbol.iterator]!="function")throw new TypeError("The `exclude` option must be an iterable.");for(let i of o){if(typeof i!="number")throw new TypeError("Each item in the `exclude` option must be a number corresponding to the port you want excluded.");if(!Number.isSafeInteger(i))throw new TypeError(`Number ${i} in the exclude option is not a safe integer and can't be used`)}r=new Set(o)}vd===void 0&&(vd=setInterval(()=>{cs.old=cs.young,cs.young=new Set},uee),vd.unref&&vd.unref());let n=cee();for(let o of lee(t))try{if(r.has(o))continue;let i=await JM({...e,port:o},n);for(;cs.old.has(i)||cs.young.has(i);){if(o!==0)throw new xd(o);i=await JM({...e,port:o},n)}return cs.young.add(i),i}catch(i){if(!["EADDRINUSE","EACCES"].includes(i.code)&&!(i instanceof xd))throw i}throw new Error("No available ports found")}var lv=require("obsidian");S();function XM(){let[e,t]=Fe(n=>n.enableServer,(n,o)=>({...o,enableServer:n})),r=av(e,t);return m($,{children:[m(ye,{heading:!0,name:"Background connect",description:"Allow Zotero to send status in the background, which is required for some features like focus annotation on selection in Zotero"}),m(uv,{ref:r,name:"Enable",children:"Remember to enable the server in Zotero as well"}),e&&m(fee,{})]})}function fee(){let[e,t]=Fe(a=>a.serverPort,(a,u)=>({...u,serverPort:a})),[r]=Fe(a=>a.serverHostname,(a,u)=>({...u,serverHostname:a})),[n,o]=j(e),[i]=St("check");async function s(){if(isNaN(n)||n<0||n>65535)return new lv.Notice("Invalid port number: "+n),o(e),!1;if(n===e)return!1;let a=await cv({host:r,port:[n]});return a!==n?(new lv.Notice(`Port is currently occupied, a different port is provided: ${a}, confirm again to apply the change.`),o(a),!1):(t(a),!0)}return m(ye,{name:"Port number",description:`Default to ${e}`,children:[m("input",{type:"number",value:n,min:0,max:65535,onChange:a=>o(Number.parseInt(a.target.value,10))}),m("button",{"aria-label":"Apply",ref:i,onClick:s})]})}var ej=require("@electron/remote"),tj=require("obsidian");S();function fv({children:e,path:t,state:r}){return m("div",{children:[e,": ",r==="failed"&&"(Failed to load)",m(pv,{path:t,state:r})]})}function pv({path:e,state:t}){return m("code",{"data-state":t,className:ee("data-[state=success]:text-txt-success","data-[state=failed]:text-txt-error","data-[state=disabled]:text-txt-muted"),children:e})}S();function dv(e){let{database:t}=Q(Ot),[r,n]=bd(()=>t.api.getLoadStatus().then(i=>e==="zotero"?i.main:i.bbt),[e]),o;return r.loading?o="disabled":r.error?o="failed":o=r.result?"success":"failed",[o,n]}function mv(){let e=QM("main"),t=QM("bbt"),[r,n]=dv("zotero"),[o,i]=dv("bbt"),[s,a,u]=pee(()=>{n(),i()});return m(ye,{name:"Zotero data directory",description:m($,{children:[m(fv,{path:e,state:r,children:"Zotero"}),m(fv,{path:t,state:o,children:"Better BibTeX"})]}),children:[m(pv,{path:s,state:a}),m("button",{onClick:u,children:"Select"})]})}function pee(e){let[t,r]=Fe(s=>s.zoteroDataDir,(s,a)=>({...a,zoteroDataDir:s})),{app:n}=Q(Ot),o=HM(async()=>{try{let{filePaths:[s]}=await ej.dialog.showOpenDialog({defaultPath:t,properties:["openDirectory"]});s&&t!==s&&(r(s),await new Promise((a,u)=>{function l(){a(),n.vault.off("zotero:db-refresh",l)}n.vault.on("zotero:db-refresh",l),setTimeout(()=>{u(new DOMException("Timeout after 5s","TimeoutError")),n.vault.off("zotero:db-refresh",l)},5e3)}),e())}catch(s){throw console.error("Failed to set data directory",s),new tj.Notice(`Failed to set data directory: ${s}`),s}}),i;return o.loading?i="disabled":o.error?i="failed":i="success",[t,i,o.execute]}function QM(e){let t=Q(Ot).settings;return e==="main"?t.zoteroDbPath:t.bbtMainDbPath}function hv(){return m($,{children:[m(mv,{}),m(br,{name:"Refresh automatically when Zotero updates database",get:e=>e.autoRefresh,set:(e,t)=>({...t,autoRefresh:e})}),m(XM,{})]})}S();function Wo({name:e,children:t,normalize:r,get:n,set:o}){let[i,s]=Fe(n,o),[a,u]=j(i);return m(gv,{name:e,value:a,onChange:l=>u(l.target.value),onSubmit:()=>{let l=r?.(a)??a;l!==a&&u(l),s(l)},children:t})}function gv({name:e,children:t,value:r,onChange:n,onSubmit:o}){let[i]=St("check");return m(ye,{name:e,description:t,children:[m(tu,{className:"border",value:r,onChange:n}),m("button",{"aria-label":"Apply",ref:i,onClick:o})]})}function rj(){let[e,t]=Fe(r=>r.imgExcerptImport===!1?"false":r.imgExcerptImport,(r,n)=>({...n,imgExcerptImport:r==="false"?!1:r}));return m($,{children:[m(ye,{heading:!0,name:"Image excerpt",description:"Controls how to import images in annotaion excerpts."}),m(ye,{name:"Mode",description:m("dl",{className:"mt-2 grid grid-cols-3 gap-1",children:[m("div",{children:[m("dt",{className:"text-xs font-medium text-txt-normal",children:"Direct link"}),m("dd",{className:"mt-1",children:["Use image embed linked directly to the original image in Zotero cache using ",m("code",{children:"file://"})," url"]})]}),m("div",{children:[m("dt",{className:"text-xs font-medium text-txt-normal",children:"Symlink"}),m("dd",{className:"mt-1",children:["Create a symlink to the original image in Zotero cache within the specified folder",m("p",{className:"text-txt-error",children:"Don't use this option if your file system doesn't support symlink."})]})]}),m("div",{children:[m("dt",{className:"text-xs font-medium text-txt-normal",children:"Copy"}),m("dd",{className:"mt-1",children:"Copy the original image to the specified folder."})]})]}),children:m("select",{className:"dropdown",onChange:r=>t(r.target.value),value:e,children:[m("option",{value:"false",children:"direct link"},0),m("option",{value:"symlink",children:"symlink"},1),m("option",{value:"copy",children:"copy"},2)]})}),e!=="false"&&m($,{children:m(Wo,{name:"Default location",get:r=>r.imgExcerptPath,set:(r,n)=>({...n,imgExcerptPath:r}),normalize:us,children:"The folder to store image excerpts."})})]})}S();function yv(){let{database:e}=Q(Ot),[t,r]=Fe(a=>a.citationLibrary,(a,u)=>({...u,citationLibrary:a})),[n,o]=bd(()=>e.api.getLibs(),[]),i=n.result??[{groupID:null,libraryID:1,name:"My Library"}],[s]=St("switch");return m(ye,{name:"Citation library",children:[m("select",{className:"dropdown",onChange:a=>r(Number.parseInt(a.target.value,10)),value:t,children:i.map(({groupID:a,libraryID:u,name:l})=>m("option",{value:u,children:l?a?`${l} (Group)`:l:`Library ${u}`},u))}),m("button",{"aria-label":"Refresh",ref:s,onClick:async()=>{await e.refresh({task:"full"}),o()}})]})}function bv(){return m($,{children:[m(Wo,{name:"Default location for new literature notes",get:e=>e.literatureNoteFolder,set:(e,t)=>({...t,literatureNoteFolder:e}),normalize:us}),m(yv,{}),m(rj,{})]})}function vv(){let[e,t]=Fe(r=>r.logLevel,(r,n)=>({...n,logLevel:r}));return m($,{children:[m(ye,{heading:!0,name:"Debug"}),m(ye,{name:"Log Level",description:m($,{children:["Change level of logs output to the console.",m("br",{}),"Set to DEBUG if you need to report a issue",m("br",{}),"To check console, ",RT()]}),children:m("select",{className:"dropdown",onChange:r=>{let n=r.target.value;t(n)},value:e,children:Object.entries(Qv).map(([r,n])=>m("option",{value:n,children:r},n))})})]})}function xv(){return m($,{children:m(vv,{})})}var nj=require("obsidian");var Du=class extends nj.PluginSettingTab{#e(){let t=this.containerEl.parentElement;if(!t)throw new Error("Setting tab is not mounted");if(!t.classList.contains("vertical-tab-content-container"))return W.error("Failed to patch unload, unexpected tabContentContainer"),console.error(t),!1;let r=this,n=qt(t,{empty:o=>function(){r.unload(),o.call(this),n()}});return W.debug("Setting tab unload patched"),!0}#t=[];register(t){this.#t.push(t)}unload(){for(;this.#t.length>0;)this.#t.pop()()}display(){this.containerEl.empty(),this.#e()}};function wv(){return m($,{children:[m(br,{name:"Citation editor suggester",get:e=>e.citationEditorSuggester,set:(e,t)=>({...t,citationEditorSuggester:e})}),m(br,{name:"Show BibTex citekey in suggester",get:e=>e.showCitekeyInSuggester,set:(e,t)=>({...t,showCitekeyInSuggester:e})})]})}S();function Ev(){let[e,t]=Fe(l=>l.autoTrim[0],(l,c)=>({...c,autoTrim:[l,c.autoTrim[1]]})),[r,n]=Fe(l=>l.autoTrim[1],(l,c)=>({...c,autoTrim:[c.autoTrim[0],l]})),[o,i]=j(e),[s,a]=j(r),u=$t(async function(c,f){let p=c==="false"?!1:c;f===0?(i(p),t(p)):(a(p),n(p))});return m(ye,{name:"Auto trim",description:m($,{children:[m("p",{className:"text-sm",children:["Controls default whitespace/new line trimming before/after a ejs"," ",m("code",{className:"whitespace-nowrap",children:"<% Tag %>"})]}),m("dl",{className:"mt-2",children:m("div",{className:"grid grid-cols-2 gap-1",children:[m("div",{children:[m("dt",{className:"text-xs font-medium text-txt-normal",children:"Newline slurp"}),m("dd",{className:"mt-1",children:"Removes the following newline before and after the tag."})]}),m("div",{children:[m("dt",{className:"text-xs font-medium text-txt-normal",children:"Whitespace slurp:"}),m("dd",{className:"mt-1",children:"Removes all whitespace before and after the tag."})]})]})})]}),children:m("div",{className:"flex flex-col gap-2",children:[0,1].map(l=>m("div",{className:"flex flex-col items-start gap-1 text-sm",children:[m("span",{children:l===0?"Leading":"Ending"}),m("select",{className:"dropdown",onChange:c=>u(c.target.value,l),value:String(l===0?o:s),children:[m("option",{value:"false",children:"Disable"},0),m("option",{value:"nl",children:"Newline slurp (-)"},1),m("option",{value:"slurp",children:"Whitespace slurp (_)"},2)]})]},l))})})}var Vn=require("obsidian");S();var oj=require("obsidian");S();function Sv(e,{icon:t,desc:r,disable:n}){let o=$t(e),i=F(null);return U(()=>{i.current?.setIcon(t??"")},[t]),U(()=>{i.current?.setTooltip(r??"")},[r]),U(()=>{i.current?.setDisabled(n??!1)},[n]),Y(s=>{if(!s)i.current?.extraSettingsEl.remove(),i.current=null;else{let a=new oj.ExtraButtonComponent(s);a.onClick(o),i.current=a}},[])}var Kn={filename:{title:"Note filename",desc:"Used to render filename for each imported literature note"},cite:{title:"Primary Markdown citation",desc:"Used to render citation in literature note"},cite2:{title:"Secondary Markdown citation",desc:"Used to render alternative citation in literature note"},field:{title:"Note properties",desc:"Used to render Properties in literature note"},note:{title:"Note content",desc:"Used to render created literature note"},annotation:{title:"Single annotaion",desc:"Used to render single annotation"},annots:{title:"Annotations",desc:"Used to render annotation list when batch importing"},colored:{title:"Colored highlight",desc:"Used to render highlights with color in imported Zotero note"}};function ij({type:e}){let{app:t,settings:r}=Q(Ot),[n]=St("arrow-up-right"),[o]=St("folder-input"),[i]=St("reset"),[s,a]=j(()=>Iv(e,{app:t,folder:r.templateDir})),u=io(e,r.templateDir);return U(()=>{let l=[t.vault.on("delete",c=>{c.path===u&&a(!1)}),t.vault.on("create",c=>{c.path===u&&a(!0)}),t.vault.on("rename",(c,f)=>{c.path===u&&a(!0),f===u&&a(!1)})];return()=>l.forEach(c=>t.vault.offref(c))},[u]),s?m(ye,{name:Kn[e].title,description:Kn[e].desc,children:[m("code",{children:u}),m("button",{"aria-label":"Open template file",ref:n,onClick:async()=>{await Bo(e,null,{app:t,settings:r})}}),m("button",{"aria-label":"Reset to default",ref:i,onClick:async()=>{if(!activeWindow.confirm("Reset template to default?"))return;let l=t.vault.getAbstractFileByPath(u);l instanceof Vn.TFile?(await t.vault.modify(l,ot.Ejectable[e]),new Vn.Notice(`Template '${u}' reset`)):a(!0)}})]}):m(ye,{name:Kn[e].title,description:Kn[e].desc,children:[m("pre",{className:"text-left max-w-xs overflow-scroll rounded border p-4",children:ot.Ejectable[e]}),m("button",{"aria-label":"Save to template folder",ref:o,onClick:async()=>{let l=await sj(e,{app:t,folder:r.templateDir});a(l)}})]})}async function sj(e,{app:t,folder:r}){let n=io(e,r),o=t.vault.getAbstractFileByPath(n);return o instanceof Vn.TFile?!0:o?(new Vn.Notice(`The path '${n}' is occupied by a folder`),!1):(await t.fileManager.createNewMarkdownFile(t.vault.getRoot(),n,ot.Ejectable[e]),new Vn.Notice(`Template '${n}' created`),!0)}function Iv(e,{app:t,folder:r}){let n=io(e,r);return t.vault.getAbstractFileByPath(n)instanceof Vn.TFile}function aj(){let{app:e,settings:t}=Q(Ot),[r,n]=j(()=>_r.Ejectable.every(i=>Iv(i,{app:e,folder:t.templateDir}))),o=Sv(async()=>{let i=_r.Ejectable.filter(s=>!Iv(s,{app:e,folder:t.templateDir}));await Promise.all(i.map(s=>sj(s,{app:e,folder:t.templateDir}))),n(!0)},{icon:r?"":"folder-input",desc:r?"":"Save template files to template folder",disable:r});return[r,o]}S();function uj({type:e}){let[t,r]=Fe(i=>i.template.templates[e],(i,s)=>({...s,template:{...s.template,templates:{...s.template.templates,[e]:i}}})),[n,o]=j(t);return m(gv,{name:Kn[e].title,value:n,onChange:i=>o(i.target.value),onSubmit:()=>{r(n)},children:Kn[e].desc})}function _v(){let[e,t]=aj();return m($,{children:[m(Wo,{name:"Template location",get:r=>r.template.folder,set:(r,n)=>({...n,template:{...n.template,folder:r}}),normalize:us,children:"The folder which templates are ejected into and stored"}),m(br,{name:"Auto pair for Eta",get:r=>r.autoPairEta,set:(r,n)=>({...n,autoPairEta:r}),children:["Pair `<` and `%` automatically in eta templates.",m("br",{}),"If you have issue with native auto pair features, you can disable this option and report the bug in GitHub"]}),m(Ev,{}),m(ye,{heading:!0,name:"Simple"}),_r.Embeded.map(r=>m(uj,{type:r},r)),m(ye,{heading:!0,name:"Ejectable",ref:t,description:"These templates can be customized once saved to the template folder",children:e||m("div",{children:"Eject"})}),_r.Ejectable.map(r=>m(ij,{type:r},r))]})}function Cv(){return m($,{children:[m(ye,{heading:!0,name:"Update note",description:m($,{children:["You can find update note option in ",m("code",{children:"More Options"})," menu and command pallette inside a literature note. When update, all literature notes with the same ",m("code",{children:"zotero-key"})," will be updated."]})}),m(br,{name:"Overwrite existing note",get:e=>e.updateOverwrite,set:(e,t)=>({...t,updateOverwrite:e}),children:m("div",{className:"space-y-2",children:m("div",{className:"text-txt-error",children:"\u26A0 WARNING: This will overwrite the whole note content with latest one when update literature note, make sure you didn't add any custom content in the note before enable this option."})})}),m(br,{name:"In-place update of existing annotations",get:e=>e.updateAnnotBlock,set:(e,t)=>({...t,updateAnnotBlock:e}),children:m("div",{className:"space-y-2",children:[m("div",{children:"(Experimental)"}),m("div",{className:"text-txt-error",children:"\u26A0 WARNING: When enable, the plugin will try to update existing annotaion callouts marked with block-id in addition to appped newly-added ones, which may cause unexpected behavior. Make sure you have backup of your notes before enable this option."}),m("div",{className:"text-txt-accent",children:"\u24D8 Note: If you disable callout warpping in annotation template, you need to make sure the block-id is added properly in the template."}),m("div",{className:"text-txt-accent",children:"\u24D8 Note: This won't work on annotations imported before this feature is available, unless every annotation is inside a block with proper block-id"})]})})]})}var Pu=class extends Du{constructor(r){super(r.app,r);this.plugin=r;this.containerEl.addClass("obzt")}display(){super.display(),R.render(m(Ot.Provider,{value:{settings:this.plugin.settings,app:this.app,database:this.plugin.dbWorker,closeTab:()=>this.setting.close()},children:m(dee,{})}),this.containerEl),this.register(()=>R.unmountComponentAtNode(this.containerEl))}};function dee(){let[e,t]=Wh("obzt-setting-tab",{defaultValue:"general"});return m(qM,{value:e,onValueChange:t,className:"flex h-full flex-col",children:[m(sv,{className:"self-start max-w-full",children:[m(Wn,{value:"general",children:"General"}),m(Wn,{value:"connect",children:"Connect"}),m(Wn,{value:"suggester",children:"Suggester"}),m(Wn,{value:"template",children:"Template"}),m(Wn,{value:"update",children:"Note update"}),m(Wn,{value:"misc",children:"Misc"})]}),m(Hn,{value:"general",className:"divide-y flex-grow overflow-y-scroll",children:m(bv,{})}),m(Hn,{value:"connect",className:"divide-y flex-grow overflow-y-scroll",children:m(hv,{})}),m(Hn,{value:"suggester",className:"divide-y flex-grow overflow-y-scroll",children:m(wv,{})}),m(Hn,{value:"template",className:"divide-y flex-grow overflow-y-scroll",children:m(_v,{})}),m(Hn,{value:"update",className:"divide-y flex-grow overflow-y-scroll",children:m(Cv,{})}),m(Hn,{value:"misc",className:"divide-y flex-grow overflow-y-scroll",children:m(xv,{})})]})}var be=class extends cj.Plugin{use=Vo.plugin(this);constructor(t,r){if(super(t,r),!BC(r,t))throw new Error("Library check failed")}settings=g1(this);services={_log:this.use(na)};noteIndex=this.use(rs);server=this.use(Ur);citekeyClick=this.use(od);templateEditor=this.use(Li);noteFeatures=this.use(fM);noteParser=this.use(ud);get databaseAPI(){return this.dbWorker.api}dbWorker=this.use(Rt);imgCacheImporter=this.use(zn);dbWatcher=this.use(cn);database=this.use(Au);templateRenderer=this.use(Fn);pdfParser=this.use(Ou);onload(){W.info("loading ZotLit"),this.addSettingTab(new Pu(this)),globalThis.zoteroAPI={version:this.manifest.version,getDocItems:t=>this.databaseAPI.getItems(t),getItemIDsFromCitekey:(...t)=>this.databaseAPI.getItemIDsFromCitekey(...t),getAnnotsFromKeys:(...t)=>this.databaseAPI.getAnnotFromKey(...t),getAnnotsOfAtch:(...t)=>this.databaseAPI.getAnnotations(...t),getAttachments:(...t)=>this.databaseAPI.getAttachments(...t),getLibs:()=>this.databaseAPI.getLibs()},this.register(()=>{delete globalThis.zoteroAPI})}onunload(){W.info("unloading ZotLit")}};0&&(module.exports={}); +/*! Bundled license information: + +flatted/cjs/index.js: + (*! (c) 2020 Andrea Giammarchi *) + +use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js: + (** + * @license React + * use-sync-external-store-shim.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js: + (** + * @license React + * use-sync-external-store-shim/with-selector.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) + +lodash-es/lodash.js: + (** + * @license + * Lodash (Custom Build) + * Build: `lodash modularize exports="es" -o ./` + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + *) + +@mui/base/index.js: + (** + * @mui/base v5.0.0-alpha.122 + * + * @license MIT + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + *) +*/ diff --git a/.obsidian/plugins/zotlit/manifest.json b/.obsidian/plugins/zotlit/manifest.json new file mode 100644 index 00000000..88808a0e --- /dev/null +++ b/.obsidian/plugins/zotlit/manifest.json @@ -0,0 +1,13 @@ +{ + "id": "zotlit", + "name": "ZotLit", + "version": "1.1.4", + "minAppVersion": "1.4.4", + "versions": { + "better-sqlite3": "8.0.1-mod.1" + }, + "description": "Plugin to integrate with Zotero, create literature notes and insert citations from a Zotero library.", + "author": "AidenLx", + "authorUrl": "https://github.com/aidenlx", + "isDesktopOnly": true +} \ No newline at end of file diff --git a/.obsidian/plugins/zotlit/styles.css b/.obsidian/plugins/zotlit/styles.css new file mode 100644 index 00000000..76691ace --- /dev/null +++ b/.obsidian/plugins/zotlit/styles.css @@ -0,0 +1 @@ +.modal.mod-settings .vertical-tab-content.obzt{padding:var(--size-4-2);padding-right:var(--size-4-3)}.obzt .setting-item:last-child{padding-bottom:0;border-bottom:none}.workspace-leaf-content[data-type=zotero-template-preview] pre{user-select:text}.obzt *,.obzt :before,.obzt :after{border-width:0;border-style:solid;border-color:var(--background-modifier-border)}.obzt [type=button],.obzt [type=reset],.obzt [type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}.obzt blockquote,.obzt dl,.obzt dd,.obzt h1,.obzt h2,.obzt h3,.obzt h4,.obzt h5,.obzt h6,.obzt hr,.obzt figure,.obzt p,.obzt pre{margin:0}.obzt textarea{resize:vertical}.obzt input::-moz-placeholder,.obzt textarea::-moz-placeholder{opacity:1;color:#9ca3af}.obzt input::placeholder,.obzt textarea::placeholder{opacity:1;color:#9ca3af}.obzt h1,.obzt h2,.obzt h3,.obzt h4,.obzt h5,.obzt h6{font-size:inherit;font-weight:inherit}.obzt fieldset{margin:0;padding:0}.obzt legend{padding:0}.obzt menu{list-style:none;margin:0;padding:0}.obzt .shadow-border,.obzt [data-state=active]{--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000}.obzt .ring-0,.obzt .focus-within\:ring-2,.obzt .focus-within\:ring-inset,.obzt .focus\:ring-0{--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000}.obzt .blur,.obzt .filter{--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: }.obzt .container{width:100%}@media (min-width: 640px){.obzt .container{max-width:640px}}@media (min-width: 768px){.obzt .container{max-width:768px}}@media (min-width: 1024px){.obzt .container{max-width:1024px}}@media (min-width: 1280px){.obzt .container{max-width:1280px}}@media (min-width: 1536px){.obzt .container{max-width:1536px}}.obzt .relative{position:relative}.obzt .sticky{position:sticky}.obzt .top-0{top:0}.obzt .z-0{z-index:0}.obzt .z-10{z-index:10}.obzt .col-span-1{grid-column:span 1 / span 1}.obzt .m-0{margin:0}.obzt .m-8{margin:2rem}.obzt .ml-1{margin-left:.25rem}.obzt .mt-1{margin-top:.25rem}.obzt .mt-2{margin-top:.5rem}.obzt .mt-6{margin-top:1.5rem}.obzt .block{display:block}.obzt .flex{display:flex}.obzt .inline-flex{display:inline-flex}.obzt .grid{display:grid}.obzt .contents{display:contents}.obzt .hidden{display:none}.obzt .h-3{height:.75rem}.obzt .h-4{height:1rem}.obzt .h-5{height:1.25rem}.obzt .h-auto{height:auto}.obzt .h-full{height:100%}.obzt .max-h-20{max-height:5rem}.obzt .w-3{width:.75rem}.obzt .w-4{width:1rem}.obzt .w-full{width:100%}.obzt .min-w-0{min-width:0px}.obzt .min-w-\[100px\]{min-width:100px}.obzt .max-w-full{max-width:100%}.obzt .max-w-xs{max-width:20rem}.obzt .flex-1{flex:1 1 0%}.obzt .shrink-0{flex-shrink:0}.obzt .flex-grow{flex-grow:1}@keyframes pulse{50%{opacity:.5}}.obzt .animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.obzt .cursor-context-menu{cursor:context-menu}.obzt .cursor-grab{cursor:grab}.obzt .select-text{-webkit-user-select:text;-moz-user-select:text;user-select:text}.obzt .list-none{list-style-type:none}.obzt .grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.obzt .grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.obzt .grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.obzt .flex-row{flex-direction:row}.obzt .flex-col{flex-direction:column}.obzt .items-start{align-items:flex-start}.obzt .items-center{align-items:center}.obzt .items-stretch{align-items:stretch}.obzt .justify-center{justify-content:center}.obzt .gap-1{gap:.25rem}.obzt .gap-2{gap:.5rem}.obzt .gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.obzt .space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.obzt .space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.obzt .divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(var(--border-width) * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(var(--border-width) * var(--tw-divide-y-reverse))}.obzt .self-start{align-self:flex-start}.obzt .justify-self-center{justify-self:center}.obzt .overflow-auto{overflow:auto}.obzt .overflow-scroll{overflow:scroll}.obzt .overflow-x-auto{overflow-x:auto}.obzt .overflow-y-auto{overflow-y:auto}.obzt .overflow-y-scroll{overflow-y:scroll}.obzt .whitespace-nowrap{white-space:nowrap}.obzt .break-words{overflow-wrap:break-word}.obzt .rounded{border-radius:var(--radius-m)}.obzt .rounded-\[0\.185rem\]{border-radius:.185rem}.obzt .rounded-md{border-radius:var(--radius-m)}.obzt .rounded-sm{border-radius:var(--radius-s)}.obzt .border{border-width:var(--border-width)}.obzt .border-y{border-top-width:var(--border-width);border-bottom-width:var(--border-width)}.obzt .border-l-blockquote{border-left-width:var(--blockquote-border-thickness)}.obzt .border-none{border-style:none}.obzt .bg-primary{background-color:var(--background-primary)}.obzt .bg-primary-alt{background-color:var(--background-primary-alt)}.obzt .bg-secondary{background-color:var(--background-secondary)}.obzt .bg-transparent{background-color:transparent}.obzt .bg-\[length\:12px\]{background-size:12px}.obzt .bg-\[center_right_3px\]{background-position:center right 3px}.obzt .object-cover{-o-object-fit:cover;object-fit:cover}.obzt .object-scale-down{-o-object-fit:scale-down;object-fit:scale-down}.obzt .object-left-top{-o-object-position:left top;object-position:left top}.obzt .p-0{padding:0}.obzt .p-0\.5{padding:.125rem}.obzt .p-1{padding:.25rem}.obzt .p-2{padding:.5rem}.obzt .p-4{padding:1rem}.obzt .p-6{padding:1.5rem}.obzt .px-2{padding-left:.5rem;padding-right:.5rem}.obzt .px-3{padding-left:.75rem;padding-right:.75rem}.obzt .py-0{padding-top:0;padding-bottom:0}.obzt .py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.obzt .py-1{padding-top:.25rem;padding-bottom:.25rem}.obzt .py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.obzt .pb-8{padding-bottom:2rem}.obzt .pl-2{padding-left:.5rem}.obzt .pl-4{padding-left:1rem}.obzt .pr-1{padding-right:.25rem}.obzt .pr-2{padding-right:.5rem}.obzt .pr-\[18px\]{padding-right:18px}.obzt .pt-1{padding-top:.25rem}.obzt .text-left{text-align:left}.obzt .text-center{text-align:center}.obzt .align-middle{vertical-align:middle}.obzt .text-base{font-size:var(--font-text-size)}.obzt .text-sm{font-size:var(--font-ui-small)}.obzt .text-status-bar{font-size:var(--status-bar-font-size)}.obzt .text-xs{font-size:var(--font-ui-smaller)}.obzt .font-medium{font-weight:var(--font-medium)}.obzt .font-semibold{font-weight:var(--font-semibold)}.obzt .leading-none{line-height:1}.obzt .leading-tight{line-height:var(--line-height-tight)}.obzt .text-txt-accent{color:var(--text-accent)}.obzt .text-txt-error{color:var(--text-error)}.obzt .text-txt-muted{color:var(--text-muted)}.obzt .text-txt-normal{color:var(--text-normal)}.obzt .text-txt-status-bar{color:var(--status-bar-text-color)}.obzt .underline{text-decoration-line:underline}.obzt .opacity-0{opacity:0}.obzt .opacity-\[var\(--icon-opacity\)\]{opacity:var(--icon-opacity)}.obzt .shadow-border{--tw-shadow: 0 0 0 1px var(--background-modifier-border);--tw-shadow-colored: 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.obzt .ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.obzt .blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.obzt .filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.obzt .transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.obzt .transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.obzt .transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.obzt .\@container{container-type:inline-size}.obzt .line-clamp-3{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3}@keyframes enter{0%{opacity:var(--tw-enter-opacity, 1);transform:translate3d(var(--tw-enter-translate-x, 0),var(--tw-enter-translate-y, 0),0) scale3d(var(--tw-enter-scale, 1),var(--tw-enter-scale, 1),var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity, 1);transform:translate3d(var(--tw-exit-translate-x, 0),var(--tw-exit-translate-y, 0),0) scale3d(var(--tw-exit-scale, 1),var(--tw-exit-scale, 1),var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0))}}button.obzt-btn-reset{box-shadow:none;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0;-webkit-appearance:button;background-color:transparent;background-image:none}.obzt .zt-icon svg.svg-icon{height:var(--icon-size);width:var(--icon-size);stroke-width:var(--icon-stroke)}.obzt .focus-within\:outline-none:focus-within{outline:2px solid transparent;outline-offset:2px}.obzt .focus-within\:ring-2:focus-within{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.obzt .focus-within\:ring-inset:focus-within{--tw-ring-inset: inset}.obzt .focus-within\:ring-mod-border-focus:focus-within{--tw-ring-color: var(--background-modifier-border-focus)}.obzt .focus-within\:ring-offset-2:focus-within{--tw-ring-offset-width: 2px}.obzt .hover\:bg-mod-hover:hover{background-color:var(--background-modifier-hover)}.obzt .hover\:opacity-100:hover{opacity:1}.obzt .focus\:border-none:focus{border-style:none}.obzt .focus\:ring-0:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.obzt .disabled\:pointer-events-none:disabled{pointer-events:none}.obzt .disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.obzt .disabled\:opacity-50:disabled{opacity:.5}.obzt .peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.obzt .peer[data-state=checked]~.peer-\[\[data-state\=checked\]\]\:text-mod-error{color:var(--background-modifier-error)}.obzt .data-\[state\=active\]\:bg-primary[data-state=active]{background-color:var(--background-primary)}.obzt .data-\[state\=active\]\:text-txt-normal[data-state=active]{color:var(--text-normal)}.obzt .data-\[state\=checked\]\:text-mod-error[data-state=checked]{color:var(--background-modifier-error)}.obzt .data-\[state\=disabled\]\:text-txt-muted[data-state=disabled]{color:var(--text-muted)}.obzt .data-\[state\=failed\]\:text-txt-error[data-state=failed]{color:var(--text-error)}.obzt .data-\[state\=success\]\:text-txt-success[data-state=success]{color:var(--text-success)}.obzt .data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}@container (min-width: 28rem){.obzt .\@md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.obzt .\@md\:gap-3{gap:.75rem}}@container (min-width: 48rem){.obzt .\@3xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.ophidian-dialog .dialog-text{margin-bottom:.75em}.ophidian-dialog.mod-confirmation input[type=text]:invalid,.ophidian-dialog.mod-confirmation input[type=text][aria-invalid=true],.ophidian-dialog.mod-confirmation input[type=text]:invalid:enabled:focus,.ophidian-dialog.mod-confirmation input[type=text][aria-invalid=true]:enabled:focus{border-color:var(--text-error);background-color:var(--background-modifier-error)}.zt-citations .suggestion-item{padding-right:var(--size-2-3);line-height:var(--line-height-tight)}.zt-citations .suggestion-item .suggestion-aux{gap:var(--size-2-2)}.zt-citations .suggestion-item .suggestion-hotkey{display:flex;--icon-size: var(--font-ui-smaller);padding:2px}.zt-citations .suggestion-item .suggestion-hotkey:not(:last-child){margin-left:var(--size-2-2)}.zt-citations .suggestion-item .title{font-weight:var(--file-header-font-weight);font-size:var(--font-ui-small)}.zt-citations .suggestion-item .title .suggestion-highlight{color:var(--text-accent)}.zt-citations .suggestion-item .citekey{background-color:transparent;border:1px solid var(--background-modifier-border);color:var(--text-muted);font-size:small;padding:1px 8px;text-align:center;text-decoration:none;vertical-align:middle;display:inline-block;margin:1px 0;border-radius:14px}.zt-citations .suggestion-item .meta{color:var(--text-faint);font-size:var(--font-ui-smaller)}.zt-citations .suggestion-item .meta>:not(:last-child):after{content:", "}.zt-citations .suggestion-item .meta .author-year>:not(:last-child):after{content:" "}.zt-citations .suggestion-item .meta .author-year .date:before{content:"("}.zt-citations .suggestion-item .meta .author-year .date:after{content:")"}.zt-citations .suggestion-item .meta .publication{font-style:italic}.zt-citations .suggestion-item .meta .issue:before{content:"("}.zt-citations .suggestion-item .meta .issue:after{content:")"}.zt-citations .suggestion-item .meta:after{content:"."}.workspace-leaf-content[data-type=zotero-annotation-view] .view-content{padding:0;display:flex;flex-direction:column;height:100%}.workspace-leaf-content[data-type=zotero-annotation-view] .view-content .select-flashing{background-color:var(--text-highlight-bg);mix-blend-mode:var(--highlight-mix-blend-mode)} diff --git a/.obsidian/types.json b/.obsidian/types.json new file mode 100644 index 00000000..bb1c11f1 --- /dev/null +++ b/.obsidian/types.json @@ -0,0 +1,8 @@ +{ + "types": { + "aliases": "aliases", + "cssclasses": "multitext", + "tags": "tags", + "Title": "text" + } +} \ No newline at end of file diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 2f7f1dc5..e927d708 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -8,7 +8,135 @@ "type": "tabs", "children": [ { - "id": "a65907065a9d31f7", + "id": "e00ed9afd6ffa196", + "type": "leaf", + "pane-relief:history-v1": { + "pos": 1, + "stack": [ + { + "title": "évolution des mémoires à tore de ferrite", + "icon": "lucide-file", + "state": "{\"type\":\"markdown\",\"state\":{\"file\":\"évolution des mémoires à tore de ferrite.md\",\"mode\":\"source\",\"backlinks\":false,\"source\":false}}", + "eState": "{\"cursor\":{\"from\":{\"line\":1,\"ch\":23},\"to\":{\"line\":1,\"ch\":23}}}" + }, + { + "state": "{}", + "eState": "{}" + } + ] + }, + "state": { + "type": "markdown", + "state": { + "file": "mémoire à tore de ferrite.md", + "mode": "source", + "backlinks": false, + "source": false + } + } + }, + { + "id": "0c55023cec4c91c3", + "type": "leaf", + "pane-relief:history-v1": { + "pos": 1, + "stack": [ + { + "title": "Untitled 2", + "icon": "lucide-file", + "state": "{\"type\":\"markdown\",\"state\":{\"file\":\"problèmes des mémoires à tores de ferrite.md\",\"mode\":\"source\",\"backlinks\":false,\"source\":false}}", + "eState": "{\"cursor\":{\"from\":{\"line\":0,\"ch\":0},\"to\":{\"line\":0,\"ch\":0}},\"scroll\":0}" + }, + { + "state": "{}", + "eState": "{}" + }, + { + "title": "hystérésis magnétique", + "icon": "lucide-file", + "state": "{\"type\":\"markdown\",\"state\":{\"file\":\"hystérésis magnétique.md\",\"mode\":\"source\",\"backlinks\":false,\"source\":false}}", + "eState": "{\"cursor\":{\"from\":{\"line\":0,\"ch\":0},\"to\":{\"line\":0,\"ch\":0}},\"scroll\":0}" + } + ] + }, + "state": { + "type": "markdown", + "state": { + "file": "historique des mémoires à tore.md", + "mode": "source", + "backlinks": false, + "source": false + } + } + }, + { + "id": "2990dbd1808e00c1", + "type": "leaf", + "pane-relief:history-v1": { + "pos": 0, + "stack": [ + { + "state": "{}", + "eState": "{}" + } + ] + }, + "state": { + "type": "markdown", + "state": { + "file": "mémoire à cordes de ferrites.md", + "mode": "source", + "backlinks": false, + "source": false + } + } + }, + { + "id": "52a5df4b12a608fa", + "type": "leaf", + "pane-relief:history-v1": { + "pos": 0, + "stack": [ + { + "state": "{}", + "eState": "{}" + } + ] + }, + "state": { + "type": "markdown", + "state": { + "file": "dictature de la commodité.md", + "mode": "source", + "backlinks": false, + "source": false + } + } + }, + { + "id": "31b6e29bdae66736", + "type": "leaf", + "pane-relief:history-v1": { + "pos": 0, + "stack": [ + { + "state": "{}", + "eState": "{}" + } + ] + }, + "state": { + "type": "markdown", + "state": { + "file": "problèmes des mémoires à tores de ferrite.md", + "mode": "source", + "backlinks": false, + "source": false + } + } + }, + { + "id": "0c733bba5b595bf0", "type": "leaf", "pane-relief:history-v1": { "pos": 0, @@ -18,17 +146,23 @@ "eState": "{}" }, { - "title": "programmation web serveur", + "title": "science ouverte", "icon": "lucide-file", - "state": "{\"type\":\"markdown\",\"state\":{\"file\":\"programmation web serveur.md\",\"mode\":\"source\",\"backlinks\":false,\"source\":false}}", - "eState": "{\"cursor\":{\"from\":{\"line\":13,\"ch\":0},\"to\":{\"line\":13,\"ch\":0}}}" + "state": "{\"type\":\"markdown\",\"state\":{\"file\":\"science ouverte.md\",\"mode\":\"source\",\"backlinks\":false,\"source\":false}}", + "eState": "{\"cursor\":{\"from\":{\"line\":4,\"ch\":0},\"to\":{\"line\":4,\"ch\":0}}}" + }, + { + "title": "forme quadratique définie", + "icon": "lucide-file", + "state": "{\"type\":\"markdown\",\"state\":{\"file\":\"forme quadratique définie.md\",\"mode\":\"source\",\"backlinks\":false,\"source\":false}}", + "eState": "{\"cursor\":{\"from\":{\"line\":25,\"ch\":0},\"to\":{\"line\":25,\"ch\":0}},\"scroll\":3}" } ] }, "state": { "type": "markdown", "state": { - "file": "travail de délégué.md", + "file": "principes FAIR.md", "mode": "source", "backlinks": false, "source": false @@ -36,7 +170,7 @@ } }, { - "id": "f28563c395747d66", + "id": "3113d196520e11e4", "type": "leaf", "pane-relief:history-v1": { "pos": 0, @@ -50,7 +184,7 @@ "state": { "type": "markdown", "state": { - "file": "conseil de département 5ème semestre.md", + "file": "science ouverte.md", "mode": "source", "backlinks": false, "source": false @@ -58,7 +192,35 @@ } }, { - "id": "f78a03dad612c422", + "id": "5910f9a34653f0f8", + "type": "leaf", + "pane-relief:history-v1": { + "pos": 1, + "stack": [ + { + "title": "Untitled 2", + "icon": "lucide-file", + "state": "{\"type\":\"markdown\",\"state\":{\"file\":\"gradient d'une fonction.md\",\"mode\":\"source\",\"backlinks\":false,\"source\":false}}", + "eState": "{\"cursor\":{\"from\":{\"line\":0,\"ch\":0},\"to\":{\"line\":0,\"ch\":0}},\"scroll\":0}" + }, + { + "state": "{}", + "eState": "{}" + } + ] + }, + "state": { + "type": "markdown", + "state": { + "file": "mesurer l'importance dans un graphe de connaissances.md", + "mode": "source", + "backlinks": false, + "source": false + } + } + }, + { + "id": "a2f5c2beead93b32", "type": "leaf", "pane-relief:history-v1": { "pos": 0, @@ -72,7 +234,7 @@ "state": { "type": "markdown", "state": { - "file": "stage de licence 3 informatique.md", + "file": "discours baptême civil.md", "mode": "source", "backlinks": false, "source": false @@ -80,7 +242,41 @@ } }, { - "id": "57664ccff3340ca2", + "id": "d4cb3551345508a2", + "type": "leaf", + "pane-relief:history-v1": { + "pos": 0, + "stack": [ + { + "state": "{}", + "eState": "{}" + }, + { + "title": "matrice hessienne", + "icon": "lucide-file", + "state": "{\"type\":\"markdown\",\"state\":{\"file\":\"matrice hessienne.md\",\"mode\":\"source\",\"backlinks\":false,\"source\":false}}", + "eState": "{\"cursor\":{\"from\":{\"line\":33,\"ch\":0},\"to\":{\"line\":33,\"ch\":0}},\"scroll\":10.513531673448057}" + }, + { + "title": "gradient d'une fonction", + "icon": "lucide-file", + "state": "{\"type\":\"markdown\",\"state\":{\"file\":\"gradient d'une fonction.md\",\"mode\":\"source\",\"backlinks\":false,\"source\":false}}", + "eState": "{\"cursor\":{\"from\":{\"line\":1,\"ch\":15},\"to\":{\"line\":1,\"ch\":15}}}" + } + ] + }, + "state": { + "type": "markdown", + "state": { + "file": "déterminant hessien.md", + "mode": "source", + "backlinks": false, + "source": false + } + } + }, + { + "id": "215194cd1aed58e3", "type": "leaf", "pane-relief:history-v1": { "pos": 0, @@ -94,7 +290,7 @@ "state": { "type": "markdown", "state": { - "file": "SEB.md", + "file": "gradient d'une fonction.md", "mode": "source", "backlinks": false, "source": false @@ -102,7 +298,7 @@ } } ], - "currentTab": 3 + "currentTab": 9 } ], "direction": "vertical" @@ -149,7 +345,7 @@ "state": { "type": "search", "state": { - "query": "espanso", + "query": "", "matchingCase": false, "explainSearch": false, "collapseAll": false, @@ -216,23 +412,6 @@ "state": {} } }, - { - "id": "ea9ae28999c66714", - "type": "leaf", - "pane-relief:history-v1": { - "pos": 0, - "stack": [ - { - "state": "{}", - "eState": "{}" - } - ] - }, - "state": { - "type": "RSS_FEED", - "state": {} - } - }, { "id": "2c78bc8186d3e556", "type": "leaf", @@ -250,12 +429,11 @@ "state": {} } } - ], - "currentTab": 1 + ] } ], "direction": "horizontal", - "width": 303.5, + "width": 383.5, "collapsed": true }, "right": { @@ -265,10 +443,10 @@ { "id": "980f845ab893296e", "type": "tabs", - "dimension": 53, + "dimension": 59.90740740740741, "children": [ { - "id": "9ae2ad8ad7426276", + "id": "187e85dff41c3275", "type": "leaf", "pane-relief:history-v1": { "pos": 0, @@ -282,11 +460,11 @@ "state": { "type": "localgraph", "state": { - "file": "SEB.md", + "file": "déterminant hessien.md", "options": { "collapse-filter": false, "search": "", - "localJumps": 2, + "localJumps": 1, "localBacklinks": true, "localForelinks": true, "localInterlinks": false, @@ -414,11 +592,11 @@ "nodeSizeMultiplier": 1, "lineSizeMultiplier": 1, "collapse-forces": true, - "centerStrength": 0.907958984375, - "repelStrength": 3.17789713541667, + "centerStrength": 0.518713248970312, + "repelStrength": 10, "linkStrength": 1, - "linkDistance": 30, - "scale": 0.42822871250067424, + "linkDistance": 250, + "scale": 0.6998387988977927, "close": true } } @@ -439,7 +617,7 @@ "state": { "type": "outline", "state": { - "file": "SEB.md" + "file": "déterminant hessien.md" } } }, @@ -497,7 +675,7 @@ "state": { "type": "file-properties", "state": { - "file": "SEB.md" + "file": "déterminant hessien.md" } } }, @@ -518,6 +696,77 @@ "state": {} } }, + { + "id": "c5296986be89aae5", + "type": "leaf", + "pane-relief:history-v1": { + "pos": 0, + "stack": [ + { + "state": "{}", + "eState": "{}" + } + ] + }, + "state": { + "type": "tasks_timeline_view", + "state": {} + } + } + ] + }, + { + "id": "a739497ed8e21a5c", + "type": "tabs", + "dimension": 40.09259259259259, + "children": [ + { + "id": "c7afda8b81d643de", + "type": "leaf", + "pane-relief:history-v1": { + "pos": 0, + "stack": [ + { + "state": "{}", + "eState": "{}" + } + ] + }, + "state": { + "type": "outgoing-link", + "state": { + "file": "déterminant hessien.md", + "linksCollapsed": false, + "unlinkedCollapsed": true + } + } + }, + { + "id": "e855affa02bb755e", + "type": "leaf", + "pane-relief:history-v1": { + "pos": 0, + "stack": [ + { + "state": "{}", + "eState": "{}" + } + ] + }, + "state": { + "type": "backlink", + "state": { + "file": "déterminant hessien.md", + "collapseAll": true, + "extraContext": false, + "sortOrder": "alphabetical", + "showSearch": false, + "searchQuery": "", + "backlinkCollapsed": false, + "unlinkedCollapsed": false + } + } + }, { "id": "e332be6a6a6d6817", "type": "leaf", @@ -551,83 +800,14 @@ "type": "BC-tree", "state": {} } - }, - { - "id": "f408f8d35dd42c62", - "type": "leaf", - "pane-relief:history-v1": { - "pos": 0, - "stack": [ - { - "state": "{}", - "eState": "{}" - } - ] - }, - "state": { - "type": "tasks_timeline_view", - "state": {} - } } - ] - }, - { - "id": "a739497ed8e21a5c", - "type": "tabs", - "dimension": 47, - "children": [ - { - "id": "c7afda8b81d643de", - "type": "leaf", - "pane-relief:history-v1": { - "pos": 0, - "stack": [ - { - "state": "{}", - "eState": "{}" - } - ] - }, - "state": { - "type": "outgoing-link", - "state": { - "file": "SEB.md", - "linksCollapsed": false, - "unlinkedCollapsed": true - } - } - }, - { - "id": "e855affa02bb755e", - "type": "leaf", - "pane-relief:history-v1": { - "pos": 0, - "stack": [ - { - "state": "{}", - "eState": "{}" - } - ] - }, - "state": { - "type": "backlink", - "state": { - "file": "SEB.md", - "collapseAll": true, - "extraContext": false, - "sortOrder": "alphabetical", - "showSearch": false, - "searchQuery": "", - "backlinkCollapsed": false, - "unlinkedCollapsed": false - } - } - } - ] + ], + "currentTab": 2 } ], "direction": "horizontal", - "width": 311.5 + "width": 364.5, + "collapsed": true }, "left-ribbon": { "hiddenItems": { @@ -640,66 +820,66 @@ "workspaces:Manage workspace layouts": true, "switcher:Open quick switcher": false, "random-note:Open random note": false, - "darlal-switcher-plus:Open in Headings Mode": false, - "darlal-switcher-plus:Open Symbols for the active editor": false, "terminal:Open terminal": false, "templater-obsidian:Templater": false, "obsidian-spaced-repetition:Review flashcards": false, "obsidian-excalidraw-plugin:Create new drawing": false, - "breadcrumbs:Breadcrumbs Visualisation": false + "breadcrumbs:Breadcrumbs Visualisation": false, + "darlal-switcher-plus:Open in Headings Mode": false, + "darlal-switcher-plus:Open Symbols for the active editor": false } }, - "active": "57664ccff3340ca2", + "active": "d4cb3551345508a2", "ophidian:layout-settings": { "pane-relief:focus-lock": true }, "lastOpenFiles": [ - "CP création du seb.md", - "SEB.md", - "stage de licence 3 informatique.md", - "informatique/python/identités.md", - "sources/01 Notetaking for Historians - Doing History with Zotero and Obsidian - Obsidian Publish 6.md", - "sources/Getting Started 6.md", - "sources/a delightful & open source framework for Zsh.md", - "travail de délégué.md", - "prof idéal.md", - "sources/01 Notetaking for Historians - Doing History with Zotero and Obsidian - Obsidian Publish 5.md", - "sources/Getting Started 5.md", - "kanban soirée jeux.md", - "sources/01 Notetaking for Historians - Doing History with Zotero and Obsidian - Obsidian Publish 4.md", - "sources/Getting Started 4.md", - "sources/01 Notetaking for Historians - Doing History with Zotero and Obsidian - Obsidian Publish 3.md", - "sources/Getting Started 3.md", - "sources/01 Notetaking for Historians - Doing History with Zotero and Obsidian - Obsidian Publish 2.md", - "sources/Getting Started 2.md", - "sources/Google Colaboratory.md", - "sources/Browser not supported.md", - "sources/01 Notetaking for Historians - Doing History with Zotero and Obsidian - Obsidian Publish.md", - "sources/Getting Started.md", - "sources/The Command Line Heroes BASH!.md", - "plan com soirées jeux.md", - "unix redirection de flux.md", - "ligne de commande.md", - "www.gnu.org/software", - "www.gnu.org", - "blog/_site/index-listing.json", - "blog/_site/posts/>>reflexions-listing.json", - "blog/index.feed-full-staged", - "blog/index.html", - "blog/index_files/mediabag", - "blog/posts/>>reflexions-listing.json", - "blog/site_libs/quarto-listing/quarto-listing.js", - "blog/site_libs/quarto-listing/list.min.js", - "informatique/programmation_web_serveur/TP5/node_modules/retry/equation.gif", - "informatique/programmation_web_serveur/TP5/node_modules/passport/sponsors/workos.png", - "informatique/programmation_web_serveur/TP5/node_modules/passport/sponsors/snyk.png", - "informatique/programmation_web_serveur/TP5/node_modules/passport/sponsors/loginradius.png", - "attachments/Pasted Image 20231214004621_241.png", - "images/affiche_flyer_FEUTRE.png", - "informatique/programmation_web_serveur/TP4/node_modules/passport/sponsors/workos.png", - "informatique/programmation_web_serveur/TP4/node_modules/passport/sponsors/snyk.png", - "informatique/programmation_web_serveur/TP4/node_modules/passport/sponsors/loginradius.png", - "informatique/programmation_web_serveur/TP4/node_modules/monocle/logo.png", + "gradient d'une fonction.md", + "dimension d'un espace vectoriel.md", + "déterminant hessien.md", + "matrice.md", + "matrice hessienne.md", + "graphe d'une fonction.md", + "discours baptême civil.md", + "danger des catégories.md", + "fonction de plusieurs variables.md", + "suite de Cauchy.md", + "attachments/IMG_6724.heic", + "phrases.md", + "le travail n'est pas une valeur morale, c'est pourquoi il a une valeur marchande.md", + "capitalisme.md", + "films à voir.md", + "socialisme.md", + "mesurer l'importance dans un graphe de connaissances.md", + "identités.md", + "science ouverte.md", + "principes FAIR.md", + "problèmes des mémoires à tores de ferrite.md", + "Kanban mémoire L3.md", + "paradigme de programmation.md", + "Excalidraw/représentation d'un programme comme graphe.excalidraw.md", + "sources/cours/S5/L3_info_TLA_TD2.pdf", + "mémoire de L3.md", + "forme quadratique définie.md", + "Excalidraw/UML diagramme d'activités 2022-10-12 13.09.32.excalidraw.md", + "Excalidraw/Projet BDD 2022-11-28 13.22.29.excalidraw.png", + "Excalidraw/changement de base 2022-11-04 15.41.02.excalidraw.png", + "Excalidraw/architecture de Von Neumann 2022-09-14 10.56.32.excalidraw.png", + "sources/notation as a tool of thought.pdf", + "informatique/xml/L3/miniprojet_documents_et_schemas 2/sujet.pdf", + "informatique/xml/L3/miniprojet_documents_et_schemas 2/Makefile", + "informatique/xml/L3/miniprojet_documents_et_schemas 2/2.xsd", + "informatique/xml/L3/miniprojet_documents_et_schemas 2/2.xml", + "informatique/xml/L3/miniprojet_documents_et_schemas 2/1.dtd", + "informatique/xml/L3/miniprojet_documents_et_schemas 2/1.xml", + "informatique/xml/L3/miniprojet_documents_et_schemas 2", + "informatique/java/L3/programmation_mobile/rendu_1/mermaid_gantt.png", + "blag/blog/posts/maths/_images/permutations/double_2cycle_6.gif", + "blag/blog/posts/maths/_images/permutations/decomp_transpositions.gif", + "blag/blog/posts/maths/_images/permutations/decomp_proc_cycles_disjoints_.gif", + "blag/blog/posts/maths/_images/permutations/decomp_proc_cycles_disjoints.gif", + "blag/blog/posts/maths/_images/permutations/composition_de_transpositions_3cycle.gif", + "blag/blog/posts/maths/_images/permutations/3cycle_6.gif", "Arithmétique.canvas" ] } \ No newline at end of file diff --git a/CP création du seb.md b/CP création du seb.md index c8257327..160660aa 100644 --- a/CP création du seb.md +++ b/CP création du seb.md @@ -1,4 +1,14 @@ up:: [[SEB]] #fac #politique -Un premier pas important dans le paysage étudiant Blésois : la création du Syndicat Etudiant de Blois \ No newline at end of file + +La création du Syndicat étudiant blaisois constitue une étape importante dans le paysage étudiant blaisois. Constitué d'étudiants du Loir-et-Cher, ce syndicat s'engage à représenter leurs intérêts, défendre leurs droits et améliorer leur bien-être durant les études. + +Le SEB est né de la volonté d'un groupe d'étudiants Blaisois, members de la Fédération des étudiants de l'université de Tours pour la représentation et l'égalité (FEUTRE), qui souhaitaient être plus indépendants lors du traitement des questions locales. +Les défis sont nombreux : précarité étudiants, démantellement de l'offre éducative, ou diverses discriminations (sur la base du genre, du handicap, du pays d'origine ou tout autre critère arbitraire). +Il était nécessaire que les étudiants de Blois puissent s'unir pour se protéger et se faire représenter, notamment dans les différents conseils étudiants. + +Le SEB encourage tout étudiant qui se reconnaît dans les valeurs de démocratie participative, de solidarité, d'entraide, et qui souhaite aider à une meilleure représentation à le rejoindre. + +le seb encourage tout etudiant se reconaissant dans nos valeurs d'égalité, de démocratie participative, + diff --git a/CR du conseil DI 2023-12-07.md b/CR du conseil DI 2023-12-07.md index 3c53eeaa..f9eb2d49 100644 --- a/CR du conseil DI 2023-12-07.md +++ b/CR du conseil DI 2023-12-07.md @@ -1,4 +1,11 @@ -date: 2023-12-07 +--- +date: + - 2023-12-07 +tags: + - fac +--- + +up:: [[travail de délégué]] #informatique # présents diff --git a/Commutation de Processus.md b/Commutation de Processus.md index 60a5d60a..da0bda96 100644 --- a/Commutation de Processus.md +++ b/Commutation de Processus.md @@ -1,5 +1,5 @@ down:: [[interruption horloge]] -up::[[système d'exploitation]] +up::[[Sous-système de gestion de processus]] #informatique --- diff --git a/Contributions pour une autocritique du marxisme.md b/Contributions pour une autocritique du marxisme.md new file mode 100644 index 00000000..742c3c90 --- /dev/null +++ b/Contributions pour une autocritique du marxisme.md @@ -0,0 +1,14 @@ +author::[[Julius Dickmann]] +date::2024-01-24 +#source + +--- + + +## Notes personnelles + + - notes personnelles sur la source + - idées importantes + - conclusions personnelles + - Partie _Developp_ de l'[[ENCODE framework]] + diff --git a/DTD.md b/DTD.md new file mode 100644 index 00000000..bd22a9fc --- /dev/null +++ b/DTD.md @@ -0,0 +1,17 @@ +up:: [[langage de description de schéma XML]] +#informatique + + +# Lier une DTD à un document xml + +```xml + + + + + +... + +``` + +# Contenu d'une DTD diff --git a/Excalidraw/bulle d'air parapente inégalités culturelles.excalidraw.md b/Excalidraw/bulle d'air parapente inégalités culturelles.excalidraw.md index 0132b668..5048d2eb 100644 --- a/Excalidraw/bulle d'air parapente inégalités culturelles.excalidraw.md +++ b/Excalidraw/bulle d'air parapente inégalités culturelles.excalidraw.md @@ -47,12 +47,12 @@ s'éduquent plus vite ^sMERNe6p { "type": "excalidraw", "version": 2, - "source": "https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/1.9.3", + "source": "https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/2.0.16", "elements": [ { "type": "line", - "version": 67, - "versionNonce": 344744473, + "version": 80, + "versionNonce": 1920459117, "isDeleted": false, "id": "HwtmxNecGxC8hTbLX93-3", "fillStyle": "hachure", @@ -71,11 +71,12 @@ s'éduquent plus vite ^sMERNe6p "groupIds": [ "HazctpCb1fj50BOqPJEwP" ], + "frameId": null, "roundness": { "type": 2 }, "boundElements": [], - "updated": 1688215739335, + "updated": 1709127669089, "link": null, "locked": false, "startBinding": null, @@ -96,8 +97,8 @@ s'éduquent plus vite ^sMERNe6p }, { "type": "line", - "version": 155, - "versionNonce": 309667831, + "version": 168, + "versionNonce": 2055403491, "isDeleted": false, "id": "Wo1xTSB5d556ueaFrwTpD", "fillStyle": "hachure", @@ -116,11 +117,12 @@ s'éduquent plus vite ^sMERNe6p "groupIds": [ "HazctpCb1fj50BOqPJEwP" ], + "frameId": null, "roundness": { "type": 2 }, "boundElements": [], - "updated": 1688215739335, + "updated": 1709127669089, "link": null, "locked": false, "startBinding": null, @@ -141,8 +143,8 @@ s'éduquent plus vite ^sMERNe6p }, { "type": "line", - "version": 152, - "versionNonce": 1489680121, + "version": 165, + "versionNonce": 489892813, "isDeleted": false, "id": "jb0Jd58ZTB0jAZ7NdvV7d", "fillStyle": "hachure", @@ -161,11 +163,12 @@ s'éduquent plus vite ^sMERNe6p "groupIds": [ "HazctpCb1fj50BOqPJEwP" ], + "frameId": null, "roundness": { "type": 2 }, "boundElements": [], - "updated": 1688215739335, + "updated": 1709127669089, "link": null, "locked": false, "startBinding": null, @@ -186,8 +189,8 @@ s'éduquent plus vite ^sMERNe6p }, { "type": "text", - "version": 111, - "versionNonce": 2006651159, + "version": 124, + "versionNonce": 1673528195, "isDeleted": false, "id": "nVMUVWyQ", "fillStyle": "hachure", @@ -204,6 +207,7 @@ s'éduquent plus vite ^sMERNe6p "height": 25, "seed": 595917593, "groupIds": [], + "frameId": null, "roundness": null, "boundElements": [ { @@ -211,7 +215,7 @@ s'éduquent plus vite ^sMERNe6p "type": "arrow" } ], - "updated": 1688215739335, + "updated": 1709127669089, "link": null, "locked": false, "fontSize": 20, @@ -227,8 +231,8 @@ s'éduquent plus vite ^sMERNe6p }, { "type": "text", - "version": 103, - "versionNonce": 808153049, + "version": 116, + "versionNonce": 987114029, "isDeleted": false, "id": "x2SYuPUF", "fillStyle": "hachure", @@ -245,6 +249,7 @@ s'éduquent plus vite ^sMERNe6p "height": 25, "seed": 1208586361, "groupIds": [], + "frameId": null, "roundness": null, "boundElements": [ { @@ -252,7 +257,7 @@ s'éduquent plus vite ^sMERNe6p "type": "arrow" } ], - "updated": 1688215739335, + "updated": 1709127669089, "link": null, "locked": false, "fontSize": 20, @@ -268,8 +273,8 @@ s'éduquent plus vite ^sMERNe6p }, { "type": "text", - "version": 186, - "versionNonce": 1315362359, + "version": 199, + "versionNonce": 614112035, "isDeleted": false, "id": "VO6Mdqgl", "fillStyle": "hachure", @@ -286,9 +291,10 @@ s'éduquent plus vite ^sMERNe6p "height": 25, "seed": 952907129, "groupIds": [], + "frameId": null, "roundness": null, "boundElements": [], - "updated": 1688215739335, + "updated": 1709127669089, "link": null, "locked": false, "fontSize": 20, @@ -304,8 +310,8 @@ s'éduquent plus vite ^sMERNe6p }, { "type": "text", - "version": 180, - "versionNonce": 1354894521, + "version": 193, + "versionNonce": 2085248141, "isDeleted": false, "id": "TkGghEEd", "fillStyle": "hachure", @@ -322,6 +328,7 @@ s'éduquent plus vite ^sMERNe6p "height": 40, "seed": 1694465817, "groupIds": [], + "frameId": null, "roundness": null, "boundElements": [ { @@ -333,7 +340,7 @@ s'éduquent plus vite ^sMERNe6p "type": "arrow" } ], - "updated": 1688215739335, + "updated": 1709127669089, "link": null, "locked": false, "fontSize": 16, @@ -349,8 +356,8 @@ s'éduquent plus vite ^sMERNe6p }, { "type": "arrow", - "version": 453, - "versionNonce": 498923351, + "version": 466, + "versionNonce": 159465155, "isDeleted": false, "id": "TjhOm7qLy5lp-46cgjwMC", "fillStyle": "hachure", @@ -367,11 +374,12 @@ s'éduquent plus vite ^sMERNe6p "height": 45.55862041884228, "seed": 100414617, "groupIds": [], + "frameId": null, "roundness": { "type": 2 }, "boundElements": [], - "updated": 1688215739335, + "updated": 1709127669090, "link": null, "locked": false, "startBinding": { @@ -408,8 +416,8 @@ s'éduquent plus vite ^sMERNe6p }, { "type": "text", - "version": 214, - "versionNonce": 1647447449, + "version": 227, + "versionNonce": 961102573, "isDeleted": false, "id": "4Oc9ul1l", "fillStyle": "hachure", @@ -426,6 +434,7 @@ s'éduquent plus vite ^sMERNe6p "height": 20, "seed": 1479988439, "groupIds": [], + "frameId": null, "roundness": null, "boundElements": [ { @@ -433,7 +442,7 @@ s'éduquent plus vite ^sMERNe6p "type": "arrow" } ], - "updated": 1688215739335, + "updated": 1709127669090, "link": null, "locked": false, "fontSize": 16, @@ -449,8 +458,8 @@ s'éduquent plus vite ^sMERNe6p }, { "type": "arrow", - "version": 788, - "versionNonce": 468841591, + "version": 801, + "versionNonce": 1293053539, "isDeleted": false, "id": "yyEwMiE5O-Lfhr0codVeF", "fillStyle": "hachure", @@ -467,11 +476,12 @@ s'éduquent plus vite ^sMERNe6p "height": 26.14798046551394, "seed": 1612968761, "groupIds": [], + "frameId": null, "roundness": { "type": 2 }, "boundElements": [], - "updated": 1688215739335, + "updated": 1709127669090, "link": null, "locked": false, "startBinding": { @@ -504,8 +514,8 @@ s'éduquent plus vite ^sMERNe6p }, { "type": "text", - "version": 100, - "versionNonce": 1269756537, + "version": 113, + "versionNonce": 375151949, "isDeleted": false, "id": "03c9zdAK", "fillStyle": "hachure", @@ -522,6 +532,7 @@ s'éduquent plus vite ^sMERNe6p "height": 40, "seed": 891156377, "groupIds": [], + "frameId": null, "roundness": null, "boundElements": [ { @@ -533,7 +544,7 @@ s'éduquent plus vite ^sMERNe6p "type": "arrow" } ], - "updated": 1688215739335, + "updated": 1709127669090, "link": null, "locked": false, "fontSize": 16, @@ -549,8 +560,8 @@ s'éduquent plus vite ^sMERNe6p }, { "type": "arrow", - "version": 405, - "versionNonce": 1086999959, + "version": 418, + "versionNonce": 1377610243, "isDeleted": false, "id": "a7e0wuWQ4p8QFXMyZcP9J", "fillStyle": "hachure", @@ -567,11 +578,12 @@ s'éduquent plus vite ^sMERNe6p "height": 40.63311340419624, "seed": 22483225, "groupIds": [], + "frameId": null, "roundness": { "type": 2 }, "boundElements": [], - "updated": 1688215739335, + "updated": 1709127669090, "link": null, "locked": false, "startBinding": { @@ -608,8 +620,8 @@ s'éduquent plus vite ^sMERNe6p }, { "type": "text", - "version": 198, - "versionNonce": 1107049305, + "version": 211, + "versionNonce": 1792879533, "isDeleted": false, "id": "Qy4xUCoi", "fillStyle": "hachure", @@ -626,6 +638,7 @@ s'éduquent plus vite ^sMERNe6p "height": 20, "seed": 772077497, "groupIds": [], + "frameId": null, "roundness": null, "boundElements": [ { @@ -633,7 +646,7 @@ s'éduquent plus vite ^sMERNe6p "type": "arrow" } ], - "updated": 1688215739335, + "updated": 1709127669090, "link": null, "locked": false, "fontSize": 16, @@ -649,8 +662,8 @@ s'éduquent plus vite ^sMERNe6p }, { "type": "arrow", - "version": 426, - "versionNonce": 393904823, + "version": 439, + "versionNonce": 496923043, "isDeleted": false, "id": "F0WEt5o7OkTZ77qvnwbuV", "fillStyle": "hachure", @@ -667,11 +680,12 @@ s'éduquent plus vite ^sMERNe6p "height": 36.08839774582694, "seed": 1658765945, "groupIds": [], + "frameId": null, "roundness": { "type": 2 }, "boundElements": [], - "updated": 1688215739335, + "updated": 1709127669090, "link": null, "locked": false, "startBinding": { @@ -703,28 +717,29 @@ s'éduquent plus vite ^sMERNe6p ] }, { - "id": "7U2UH58_ALbPomBYeP9Ij", "type": "ellipse", - "x": -25.359394752413223, - "y": -92.40739657287651, - "width": 151, - "height": 76, - "angle": 0, - "strokeColor": "#fa5252", - "backgroundColor": "transparent", + "version": 296, + "versionNonce": 1727344141, + "isDeleted": false, + "id": "7U2UH58_ALbPomBYeP9Ij", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": -25.359394752413223, + "y": -92.40739657287651, + "strokeColor": "#fa5252", + "backgroundColor": "transparent", + "width": 151, + "height": 76, + "seed": 2080288729, "groupIds": [], + "frameId": null, "roundness": { "type": 2 }, - "seed": 2080288729, - "version": 283, - "versionNonce": 1068420473, - "isDeleted": false, "boundElements": [ { "type": "text", @@ -735,75 +750,86 @@ s'éduquent plus vite ^sMERNe6p "type": "arrow" } ], - "updated": 1688218019831, + "updated": 1709127669090, "link": null, "locked": false }, { - "id": "mhRpksYp", "type": "text", - "x": 6.102073358334465, - "y": -74.27745425796532, - "width": 88.30393981933594, - "height": 40, + "version": 190, + "versionNonce": 281429315, + "isDeleted": false, + "id": "mhRpksYp", + "fillStyle": "hachure", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, "angle": 0, + "x": 10.102073358334465, + "y": -74.27745425796532, "strokeColor": "#fa5252", "backgroundColor": "#e03131", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "roundness": null, + "width": 80.30393981933594, + "height": 40, "seed": 754492663, - "version": 175, - "versionNonce": 449888087, - "isDeleted": false, - "boundElements": null, - "updated": 1688215754911, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1709127669090, "link": null, "locked": false, - "text": "Bulle d'air \nchaud", - "rawText": "Bulle d'air chaud", "fontSize": 16, "fontFamily": 1, + "text": "Bulle d'air\nchaud", + "rawText": "Bulle d'air chaud", "textAlign": "center", "verticalAlign": "middle", - "baseline": 34, "containerId": "7U2UH58_ALbPomBYeP9Ij", "originalText": "Bulle d'air chaud", - "lineHeight": 1.25 + "lineHeight": 1.25, + "baseline": 34 }, { - "id": "MwI67HFjeTKYFMIFwkKTP", "type": "arrow", - "x": 168.6601638543088, - "y": -65.42011907231867, - "width": 96.02514451564561, - "height": 67.66635391594681, - "angle": 0, - "strokeColor": "#228be6", - "backgroundColor": "transparent", + "version": 355, + "versionNonce": 2040390765, + "isDeleted": false, + "id": "MwI67HFjeTKYFMIFwkKTP", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 168.6601638543088, + "y": -65.42011907231867, + "strokeColor": "#228be6", + "backgroundColor": "transparent", + "width": 96.02514451564561, + "height": 67.66635391594681, + "seed": 1384094169, "groupIds": [ "N3Ysf9dW_bmgjOot91-UT" ], + "frameId": null, "roundness": { "type": 2 }, - "seed": 1384094169, - "version": 342, - "versionNonce": 1422997367, - "isDeleted": false, - "boundElements": null, - "updated": 1688218014781, + "boundElements": [], + "updated": 1709127669090, "link": null, "locked": false, + "startBinding": { + "elementId": "liF3lJGC", + "focus": 0.6864910051390365, + "gap": 13.25007956201447 + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "triangle", "points": [ [ 0, @@ -821,49 +847,47 @@ s'éduquent plus vite ^sMERNe6p -96.02514451564561, 67.66635391594681 ] - ], - "lastCommittedPoint": [ - -100.826171875, - 62.05078125 - ], - "startBinding": { - "elementId": "liF3lJGC", - "focus": 0.6864910051390365, - "gap": 13.25007956201447 - }, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": "triangle" + ] }, { - "id": "euZOOG90ML9JUK8KRwRtp", "type": "arrow", - "x": 204.91019104125095, - "y": -54.95329501037651, - "width": 100.892578125, - "height": 56.638671875, - "angle": 0, - "strokeColor": "#228be6", - "backgroundColor": "transparent", + "version": 123, + "versionNonce": 1660069091, + "isDeleted": false, + "id": "euZOOG90ML9JUK8KRwRtp", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 204.91019104125095, + "y": -54.95329501037651, + "strokeColor": "#228be6", + "backgroundColor": "transparent", + "width": 100.892578125, + "height": 56.638671875, + "seed": 285747417, "groupIds": [ "N3Ysf9dW_bmgjOot91-UT" ], + "frameId": null, "roundness": { "type": 2 }, - "seed": 285747417, - "version": 110, - "versionNonce": 93937529, - "isDeleted": false, - "boundElements": null, - "updated": 1688218014781, + "boundElements": [], + "updated": 1709127669090, "link": null, "locked": false, + "startBinding": { + "elementId": "liF3lJGC", + "focus": -0.22967460532903117, + "gap": 5.150764140736506 + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "triangle", "points": [ [ 0, @@ -881,49 +905,47 @@ s'éduquent plus vite ^sMERNe6p -100.892578125, 56.638671875 ] - ], - "lastCommittedPoint": [ - -100.892578125, - 56.638671875 - ], - "startBinding": { - "elementId": "liF3lJGC", - "focus": -0.22967460532903117, - "gap": 5.150764140736506 - }, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": "triangle" + ] }, { - "id": "TTl1XSgoZTXYT7xgDdVj8", "type": "arrow", - "x": 224.77151916625095, - "y": -35.28923251037651, - "width": 80.66015625, - "height": 36.91796875, - "angle": 0, - "strokeColor": "#228be6", - "backgroundColor": "transparent", + "version": 79, + "versionNonce": 1990250189, + "isDeleted": false, + "id": "TTl1XSgoZTXYT7xgDdVj8", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 224.77151916625095, + "y": -35.28923251037651, + "strokeColor": "#228be6", + "backgroundColor": "transparent", + "width": 80.66015625, + "height": 36.91796875, + "seed": 651844247, "groupIds": [ "N3Ysf9dW_bmgjOot91-UT" ], + "frameId": null, "roundness": { "type": 2 }, - "seed": 651844247, - "version": 66, - "versionNonce": 1120481431, - "isDeleted": false, - "boundElements": null, - "updated": 1688218014781, + "boundElements": [], + "updated": 1709127669090, "link": null, "locked": false, + "startBinding": { + "elementId": "liF3lJGC", + "focus": -0.9564319959071855, + "gap": 12.954346631903782 + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "triangle", "points": [ [ 0, @@ -937,91 +959,78 @@ s'éduquent plus vite ^sMERNe6p -80.66015625, 36.91796875 ] - ], - "lastCommittedPoint": [ - -80.66015625, - 36.91796875 - ], - "startBinding": { - "elementId": "liF3lJGC", - "focus": -0.9564319959071855, - "gap": 12.954346631903782 - }, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": "triangle" + ] }, { - "id": "_yTtrveNMSH4nC8LPoBAx", "type": "arrow", - "x": 50.320672261707244, - "y": -94.47281244442482, - "width": 0, - "height": 54.555675582730686, - "angle": 0, - "strokeColor": "#fa5252", - "backgroundColor": "transparent", + "version": 109, + "versionNonce": 1538396291, + "isDeleted": false, + "id": "_yTtrveNMSH4nC8LPoBAx", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 49.88521659718641, + "y": -94.4736830735094, + "strokeColor": "#fa5252", + "backgroundColor": "transparent", + "width": 0.4354556645208376, + "height": 54.5548049536461, + "seed": 2039812183, "groupIds": [], + "frameId": null, "roundness": { "type": 2 }, - "seed": 2039812183, - "version": 95, - "versionNonce": 1397537911, - "isDeleted": false, - "boundElements": null, - "updated": 1688215754911, + "boundElements": [], + "updated": 1709127669090, "link": null, "locked": false, + "startBinding": { + "elementId": "7U2UH58_ALbPomBYeP9Ij", + "gap": 2.0665036744085583, + "focus": -0.007618444084411371 + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "triangle", "points": [ [ 0, 0 ], [ - 0, - -54.555675582730686 + 0.4354556645208376, + -54.5548049536461 ] - ], - "lastCommittedPoint": [ - 0, - -54.77148437500003 - ], - "startBinding": { - "elementId": "7U2UH58_ALbPomBYeP9Ij", - "focus": -0.007618444084411371, - "gap": 2.0665036744085583 - }, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": "triangle" + ] }, { - "id": "liF3lJGC", "type": "text", - "x": 175.87605207206445, - "y": -95.36540438537651, - "width": 78.60841369628906, - "height": 37.539062500000014, - "angle": 0.4974384151845328, - "strokeColor": "#228be6", - "backgroundColor": "transparent", + "version": 544, + "versionNonce": 2090298669, + "isDeleted": false, + "id": "liF3lJGC", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, - "groupIds": [], - "roundness": null, + "angle": 0.4974384151845328, + "x": 175.87605207206445, + "y": -95.36540438537651, + "strokeColor": "#228be6", + "backgroundColor": "transparent", + "width": 78.60841369628906, + "height": 37.539062500000014, "seed": 650310743, - "version": 531, - "versionNonce": 1597499767, - "isDeleted": false, + "groupIds": [], + "frameId": null, + "roundness": null, "boundElements": [ { "id": "MwI67HFjeTKYFMIFwkKTP", @@ -1036,24 +1045,24 @@ s'éduquent plus vite ^sMERNe6p "type": "arrow" } ], - "updated": 1688218019831, + "updated": 1709127669090, "link": null, "locked": false, - "text": "air froid qui\ns'engouffre\nsous l'air chaud", - "rawText": "air froid qui\ns'engouffre\nsous l'air chaud", "fontSize": 10.01041666666667, "fontFamily": 1, + "text": "air froid qui\ns'engouffre\nsous l'air chaud", + "rawText": "air froid qui\ns'engouffre\nsous l'air chaud", "textAlign": "center", "verticalAlign": "top", - "baseline": 34, "containerId": null, "originalText": "air froid qui\ns'engouffre\nsous l'air chaud", - "lineHeight": 1.25 + "lineHeight": 1.25, + "baseline": 34 }, { "type": "ellipse", - "version": 451, - "versionNonce": 1648667257, + "version": 464, + "versionNonce": 1287850019, "isDeleted": false, "id": "l98NzQaS36_ds_TAG4NEl", "fillStyle": "hachure", @@ -1070,194 +1079,199 @@ s'éduquent plus vite ^sMERNe6p "height": 76.56920354458077, "seed": 1762295449, "groupIds": [], + "frameId": null, "roundness": { "type": 2 }, "boundElements": [], - "updated": 1688215754911, + "updated": 1709127669091, "link": null, "locked": false }, { - "id": "cMOPM2VJ5ZKdDa6FA_5d3", "type": "arrow", - "x": 47.4293988905047, - "y": -247.86292167708797, - "width": 109.35572717749429, - "height": 5.743075713758145, - "angle": 0, - "strokeColor": "#6741d9", - "backgroundColor": "#fa5252", + "version": 267, + "versionNonce": 451624845, + "isDeleted": false, + "id": "cMOPM2VJ5ZKdDa6FA_5d3", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 51.313335663618915, + "y": -250.7801292270957, + "strokeColor": "#6741d9", + "backgroundColor": "#fa5252", + "width": 105.47179040438007, + "height": 2.825868163750414, + "seed": 924201401, "groupIds": [], + "frameId": null, "roundness": { "type": 2 }, - "seed": 924201401, - "version": 192, - "versionNonce": 330260119, - "isDeleted": false, - "boundElements": null, - "updated": 1688217411880, + "boundElements": [], + "updated": 1709127669091, "link": null, "locked": false, + "startBinding": null, + "endBinding": { + "elementId": "Hk45U3HQ", + "focus": 0.0901335713586119, + "gap": 7.540678553011162 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "triangle", "points": [ [ 0, 0 ], [ - 109.35572717749429, - -5.743075713758145 + 105.47179040438007, + -2.825868163750414 ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": { - "elementId": "Hk45U3HQ", - "focus": 0.21327856633772954, - "gap": 7.540678553011162 - }, - "startArrowhead": null, - "endArrowhead": "triangle" + ] }, { - "id": "Hk45U3HQ", "type": "text", - "x": 164.32580462101015, - "y": -264.3997825512239, - "width": 122.49592590332031, - "height": 20, - "angle": 0, - "strokeColor": "#6741d9", - "backgroundColor": "#fa5252", + "version": 207, + "versionNonce": 1276382147, + "isDeleted": false, + "id": "Hk45U3HQ", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, - "groupIds": [], - "roundness": null, + "angle": 0, + "x": 164.32580462101015, + "y": -264.3997825512239, + "strokeColor": "#6741d9", + "backgroundColor": "#fa5252", + "width": 122.49592590332031, + "height": 20, "seed": 1410714231, - "version": 194, - "versionNonce": 1061677367, - "isDeleted": false, + "groupIds": [], + "frameId": null, + "roundness": null, "boundElements": [ { "id": "cMOPM2VJ5ZKdDa6FA_5d3", "type": "arrow" } ], - "updated": 1688215768126, + "updated": 1709127669091, "link": "[[bourgeoisie]]", "locked": false, - "text": "📍[[bourgeois]]", - "rawText": "[[bourgeoisie|bourgeois]]", "fontSize": 16, "fontFamily": 1, + "text": "📍[[bourgeois]]", + "rawText": "[[bourgeoisie|bourgeois]]", "textAlign": "center", "verticalAlign": "top", - "baseline": 14, "containerId": null, "originalText": "📍[[bourgeois]]", - "lineHeight": 1.25 + "lineHeight": 1.25, + "baseline": 14 }, { - "id": "pZ0K1gZlEWjlYYRxNo87U", "type": "arrow", - "x": 49.45565457073482, - "y": -184.19110508017994, - "width": 93.81837683379442, - "height": 0.5804445394817321, - "angle": 0, - "strokeColor": "#2f9e44", - "backgroundColor": "#fa5252", + "version": 361, + "versionNonce": 936756717, + "isDeleted": false, + "id": "pZ0K1gZlEWjlYYRxNo87U", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 49.33991938205301, + "y": -183.9562307266788, + "strokeColor": "#2f9e44", + "backgroundColor": "#fa5252", + "width": 88.70220069883331, + "height": 1.4756902636964355, + "seed": 615929977, "groupIds": [], + "frameId": null, "roundness": { "type": 2 }, - "seed": 615929977, - "version": 221, - "versionNonce": 1179689495, - "isDeleted": false, - "boundElements": null, - "updated": 1688217405826, + "boundElements": [], + "updated": 1709127669091, "link": null, "locked": false, + "startBinding": null, + "endBinding": { + "elementId": "oBUOqljq", + "focus": 0.2541743634756069, + "gap": 14.884633627904577 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "triangle", "points": [ [ 0, 0 ], [ - 93.81837683379442, - -0.5804445394817321 + 88.70220069883331, + -1.4756902636964355 ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": { - "elementId": "oBUOqljq", - "focus": 0.12159883863420383, - "gap": 9.652722304261658 - }, - "startArrowhead": null, - "endArrowhead": "triangle" + ] }, { - "id": "oBUOqljq", "type": "text", - "x": 152.9267537087909, - "y": -193.98739766322794, - "width": 136.9438934326172, - "height": 20, - "angle": 0, - "strokeColor": "#2f9e44", - "backgroundColor": "#fa5252", + "version": 183, + "versionNonce": 767794019, + "isDeleted": false, + "id": "oBUOqljq", "fillStyle": "hachure", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, - "groupIds": [], - "roundness": null, + "angle": 0, + "x": 152.9267537087909, + "y": -193.98739766322794, + "strokeColor": "#2f9e44", + "backgroundColor": "#fa5252", + "width": 136.9438934326172, + "height": 20, "seed": 1960197465, - "version": 170, - "versionNonce": 351095545, - "isDeleted": false, + "groupIds": [], + "frameId": null, + "roundness": null, "boundElements": [ { "id": "pZ0K1gZlEWjlYYRxNo87U", "type": "arrow" } ], - "updated": 1688215784588, + "updated": 1709127669091, "link": "[[prolétariat]]", "locked": false, - "text": "📍[[prolétaires]]", - "rawText": "[[prolétariat|prolétaires]]", "fontSize": 16, "fontFamily": 1, + "text": "📍[[prolétaires]]", + "rawText": "[[prolétariat|prolétaires]]", "textAlign": "center", "verticalAlign": "top", - "baseline": 14, "containerId": null, "originalText": "📍[[prolétaires]]", - "lineHeight": 1.25 + "lineHeight": 1.25, + "baseline": 14 }, { "type": "ellipse", - "version": 158, - "versionNonce": 2015712855, + "version": 171, + "versionNonce": 912293965, "isDeleted": false, "id": "ZHDne57ZcqipGphobMutO", "fillStyle": "solid", @@ -1274,18 +1288,19 @@ s'éduquent plus vite ^sMERNe6p "height": 18.609415407274582, "seed": 1580096537, "groupIds": [], + "frameId": null, "roundness": { "type": 2 }, "boundElements": [], - "updated": 1688217400911, + "updated": 1709127669091, "link": null, "locked": false }, { "type": "ellipse", - "version": 553, - "versionNonce": 1668381911, + "version": 727, + "versionNonce": 1042298627, "isDeleted": false, "id": "EEL488Yz4WOQOxnNtWqry", "fillStyle": "hachure", @@ -1304,48 +1319,50 @@ s'éduquent plus vite ^sMERNe6p "groupIds": [ "UgogCNylT-nVxFcx88ThA" ], + "frameId": null, "roundness": { "type": 2 }, "boundElements": [], - "updated": 1688217960870, + "updated": 1709127669091, "link": null, "locked": false }, { - "id": "13OpziDb4wMOHKw4krbOM", "type": "ellipse", - "x": 38.82032326182076, - "y": -328.16336384081825, - "width": 18.609415407274582, - "height": 18.609415407274582, - "angle": 0, - "strokeColor": "#2f9e44", - "backgroundColor": "#2f9e44", + "version": 291, + "versionNonce": 1550118573, + "isDeleted": false, + "id": "13OpziDb4wMOHKw4krbOM", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 38.82032326182076, + "y": -328.16336384081825, + "strokeColor": "#2f9e44", + "backgroundColor": "#2f9e44", + "width": 18.609415407274582, + "height": 18.609415407274582, + "seed": 1948779001, "groupIds": [ "UgogCNylT-nVxFcx88ThA" ], + "frameId": null, "roundness": { "type": 2 }, - "seed": 1948779001, - "version": 138, - "versionNonce": 1678942233, - "isDeleted": false, - "boundElements": null, - "updated": 1688217960870, + "boundElements": [], + "updated": 1709127669091, "link": null, "locked": false }, { "type": "ellipse", - "version": 226, - "versionNonce": 335137271, + "version": 382, + "versionNonce": 1000890019, "isDeleted": false, "id": "4oHK3JRgTUWh1Br9Z-0Fi", "fillStyle": "solid", @@ -1364,18 +1381,19 @@ s'éduquent plus vite ^sMERNe6p "groupIds": [ "UgogCNylT-nVxFcx88ThA" ], + "frameId": null, "roundness": { "type": 2 }, "boundElements": [], - "updated": 1688217960870, + "updated": 1709127669091, "link": null, "locked": false }, { "type": "ellipse", - "version": 267, - "versionNonce": 709568567, + "version": 365, + "versionNonce": 2022478093, "isDeleted": false, "id": "zElonsbF5f59svnmYX92t", "fillStyle": "solid", @@ -1384,49 +1402,56 @@ s'éduquent plus vite ^sMERNe6p "roughness": 1, "opacity": 100, "angle": 0, - "x": 40.70925656393513, - "y": -259.15303313192084, + "x": 45.36249194416922, + "y": -261.433697144179, "strokeColor": "#6741d9", "backgroundColor": "#6741d9", "width": 18.609415407274582, "height": 18.609415407274582, "seed": 634993527, "groupIds": [], + "frameId": null, "roundness": { "type": 2 }, "boundElements": [], - "updated": 1688217429841, + "updated": 1709127669091, "link": null, "locked": false }, { - "id": "3LRFjh6Yv6yxM7GwQOOg0", "type": "line", - "x": 117.02180928618525, - "y": -441.1823062271082, - "width": 40.84103518915403, - "height": 130.64991598386888, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#6741d9", + "version": 697, + "versionNonce": 285905475, + "isDeleted": false, + "id": "3LRFjh6Yv6yxM7GwQOOg0", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, + "angle": 0, + "x": 117.02180928618525, + "y": -441.1823062271082, + "strokeColor": "#1e1e1e", + "backgroundColor": "#6741d9", + "width": 40.84103518915403, + "height": 130.64991598386888, + "seed": 1564936535, "groupIds": [], + "frameId": null, "roundness": { "type": 2 }, - "seed": 1564936535, - "version": 684, - "versionNonce": 416888057, - "isDeleted": false, - "boundElements": null, - "updated": 1688217960870, + "boundElements": [], + "updated": 1709127669091, "link": null, "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, "points": [ [ 0, @@ -1464,56 +1489,49 @@ s'éduquent plus vite ^sMERNe6p 3.0802354493820374, 130.64991598386888 ] - ], - "lastCommittedPoint": [ - 5.757398532266677, - 135.5085720773239 - ], - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null + ] }, { - "id": "sMERNe6p", "type": "text", - "x": 164.43862235644573, - "y": -435.71022109550773, - "width": 189.119873046875, - "height": 120, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#6741d9", + "version": 423, + "versionNonce": 1213261677, + "isDeleted": false, + "id": "sMERNe6p", "fillStyle": "solid", "strokeWidth": 2, "strokeStyle": "solid", "roughness": 1, "opacity": 100, - "groupIds": [], - "roundness": null, + "angle": 0, + "x": 164.43862235644573, + "y": -435.71022109550773, + "strokeColor": "#1e1e1e", + "backgroundColor": "#6741d9", + "width": 189.119873046875, + "height": 120, "seed": 18275415, - "version": 410, - "versionNonce": 1681617687, - "isDeleted": false, - "boundElements": null, - "updated": 1688217960870, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1709127669091, "link": null, "locked": false, - "text": "même si les prolétaires\nmontent, les différences\nne se réduisent pas.\nElles augmentent même,\ncar les bourgeois\ns'éduquent plus vite", - "rawText": "même si les prolétaires\nmontent, les différences\nne se réduisent pas.\nElles augmentent même,\ncar les bourgeois\ns'éduquent plus vite", "fontSize": 16, "fontFamily": 1, + "text": "même si les prolétaires\nmontent, les différences\nne se réduisent pas.\nElles augmentent même,\ncar les bourgeois\ns'éduquent plus vite", + "rawText": "même si les prolétaires\nmontent, les différences\nne se réduisent pas.\nElles augmentent même,\ncar les bourgeois\ns'éduquent plus vite", "textAlign": "left", "verticalAlign": "top", - "baseline": 114, "containerId": null, "originalText": "même si les prolétaires\nmontent, les différences\nne se réduisent pas.\nElles augmentent même,\ncar les bourgeois\ns'éduquent plus vite", - "lineHeight": 1.25 + "lineHeight": 1.25, + "baseline": 114 }, { "type": "arrow", - "version": 462, - "versionNonce": 1873857529, + "version": 475, + "versionNonce": 1327845859, "isDeleted": false, "id": "gsyCDbDhCOLNx0a4q5du2", "fillStyle": "hachure", @@ -1532,11 +1550,12 @@ s'éduquent plus vite ^sMERNe6p "groupIds": [ "q9kviP1zilqUYRSgaEQzN" ], + "frameId": null, "roundness": { "type": 2 }, "boundElements": [], - "updated": 1688218030205, + "updated": 1709127669091, "link": null, "locked": false, "startBinding": null, @@ -1565,8 +1584,8 @@ s'éduquent plus vite ^sMERNe6p }, { "type": "arrow", - "version": 228, - "versionNonce": 965528599, + "version": 241, + "versionNonce": 503017933, "isDeleted": false, "id": "zjI6xEbMl6uF6nELx5AcE", "fillStyle": "hachure", @@ -1585,11 +1604,12 @@ s'éduquent plus vite ^sMERNe6p "groupIds": [ "q9kviP1zilqUYRSgaEQzN" ], + "frameId": null, "roundness": { "type": 2 }, "boundElements": [], - "updated": 1688218030205, + "updated": 1709127669091, "link": null, "locked": false, "startBinding": null, @@ -1618,8 +1638,8 @@ s'éduquent plus vite ^sMERNe6p }, { "type": "arrow", - "version": 189, - "versionNonce": 193389785, + "version": 202, + "versionNonce": 1728519555, "isDeleted": false, "id": "xyAmzP3PPeQcFO5Bi_wXR", "fillStyle": "hachure", @@ -1638,11 +1658,12 @@ s'éduquent plus vite ^sMERNe6p "groupIds": [ "q9kviP1zilqUYRSgaEQzN" ], + "frameId": null, "roundness": { "type": 2 }, "boundElements": [], - "updated": 1688218030205, + "updated": 1709127669091, "link": null, "locked": false, "startBinding": null, @@ -1664,174 +1685,6 @@ s'éduquent plus vite ^sMERNe6p 36.91796875000002 ] ] - }, - { - "id": "a6nXjVrf23yozy6KxFNvA", - "type": "rectangle", - "x": -192.91191566437578, - "y": -435.86290440816555, - "width": 51.7101505448303, - "height": 18.455421082861392, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#6741d9", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "roundness": { - "type": 3 - }, - "seed": 420362265, - "version": 31, - "versionNonce": 1864257977, - "isDeleted": true, - "boundElements": null, - "updated": 1688229017947, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 33, - "versionNonce": 1442021975, - "isDeleted": true, - "id": "g0FlIUW_ngxjhZTJQUbWZ", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": -167.20944335698687, - "y": -386.7772069389428, - "strokeColor": "#1e1e1e", - "backgroundColor": "#6741d9", - "width": 51.7101505448303, - "height": 18.455421082861392, - "seed": 1520553209, - "groupIds": [], - "roundness": { - "type": 3 - }, - "boundElements": null, - "updated": 1688229017947, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 33, - "versionNonce": 1455272601, - "isDeleted": true, - "id": "m0DUJEEGhkM4n63Wda9Fp", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": -191.62591776118586, - "y": -317.5971961270457, - "strokeColor": "#1e1e1e", - "backgroundColor": "#6741d9", - "width": 51.7101505448303, - "height": 18.455421082861392, - "seed": 1387251161, - "groupIds": [], - "roundness": { - "type": 3 - }, - "boundElements": null, - "updated": 1688229017947, - "link": null, - "locked": false - }, - { - "id": "ziuT4ieM8ozN8-GLmBQtf", - "type": "rectangle", - "x": -143.89775083500913, - "y": -389.81178048305844, - "width": 51.7101505448303, - "height": 18.455421082861392, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#6741d9", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "roundness": { - "type": 3 - }, - "seed": 2061951417, - "version": 63, - "versionNonce": 1401525367, - "isDeleted": true, - "boundElements": null, - "updated": 1688218088148, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 65, - "versionNonce": 853627513, - "isDeleted": true, - "id": "bKsQhiXpNZlJzS57DJQjR", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": -118.19527852762022, - "y": -340.7260830138357, - "strokeColor": "#1e1e1e", - "backgroundColor": "#6741d9", - "width": 51.7101505448303, - "height": 18.455421082861392, - "seed": 422587513, - "groupIds": [], - "roundness": { - "type": 3 - }, - "boundElements": [], - "updated": 1688218088148, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 65, - "versionNonce": 1684925847, - "isDeleted": true, - "id": "3uCczO-Ou2H8zuMthOods", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": -142.6117529318192, - "y": -271.5460722019386, - "strokeColor": "#1e1e1e", - "backgroundColor": "#6741d9", - "width": 51.7101505448303, - "height": 18.455421082861392, - "seed": 660940983, - "groupIds": [], - "roundness": { - "type": 3 - }, - "boundElements": [], - "updated": 1688218088148, - "link": null, - "locked": false } ], "appState": { @@ -1849,15 +1702,25 @@ s'éduquent plus vite ^sMERNe6p "currentItemTextAlign": "left", "currentItemStartArrowhead": null, "currentItemEndArrowhead": "triangle", - "scrollX": 367.0732287290145, - "scrollY": 575.596352717196, + "scrollX": 428.0982748895777, + "scrollY": 578.0370110604435, "zoom": { - "value": 1.2286786168784787 + "value": 1.147555047974243 }, "currentItemRoundness": "round", "gridSize": null, + "gridColor": { + "Bold": "#C9C9C9FF", + "Regular": "#EDEDEDFF" + }, "currentStrokeOptions": null, - "previousGridSize": null + "previousGridSize": null, + "frameRendering": { + "enabled": true, + "clip": true, + "name": true, + "outline": true + } }, "files": {} } diff --git a/Excalidraw/mémoire à cordes de ferrites 2024-02-15 20.04.20.excalidraw.md b/Excalidraw/mémoire à cordes de ferrites 2024-02-15 20.04.20.excalidraw.md new file mode 100644 index 00000000..583227cc --- /dev/null +++ b/Excalidraw/mémoire à cordes de ferrites 2024-02-15 20.04.20.excalidraw.md @@ -0,0 +1,2566 @@ +--- + +excalidraw-plugin: parsed +tags: [excalidraw] + +--- +==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== + + +# Text Elements +A ^Q8s9owVo + +B ^K0fuBTTp + +C ^3Df6uKTr + +D ^bsYpUJSv + +A ^vkPYWVGm + +B ^6aGyYy7i + +C ^NXjBBSc0 + +D ^yKP3NSdr + +adresse 0 ^V1Lg8hOP + +adresse 1 ^tOYHUe0B + +adresse 2 ^IzarIVg0 + +adresse 3 ^NpBOLyur + +mot 1 ^VatXplBs + +mot 1 ^dWBc4qIU + +1011 ^su7cRtQ8 + +1110 ^HYYNfvtT + +1010 ^Ijom74bS + +1100 ^fwTNVnUX + +0011 ^bmb6OWnD + +0111 ^YrCUTkHA + +1010 ^o6FPN7Ut + +0100 ^w4mYsYVB + +%% +# Drawing +```json +{ + "type": "excalidraw", + "version": 2, + "source": "https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/2.0.16", + "elements": [ + { + "id": "lnfR--pOT-1cq1X6HfNBn", + "type": "ellipse", + "x": -278.81409143518533, + "y": -228.71809895833331, + "width": 93.81640625, + "height": 170.81640625, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "seed": 1923257596, + "version": 172, + "versionNonce": 212203972, + "isDeleted": false, + "boundElements": [], + "updated": 1708024272193, + "link": null, + "locked": false + }, + { + "type": "ellipse", + "version": 108, + "versionNonce": 751444292, + "isDeleted": false, + "id": "27NibZvy1DdGIojSe1Q7Z", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -518.6025390625, + "y": -228.71809895833331, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 93.81640625, + "height": 170.81640625, + "seed": 1747328580, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1708024272193, + "link": null, + "locked": false + }, + { + "type": "ellipse", + "version": 107, + "versionNonce": 1454052604, + "isDeleted": false, + "id": "XcUrJf47k34Ba_9irS1eC", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -39.02564380787064, + "y": -228.71809895833331, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 93.81640625, + "height": 170.81640625, + "seed": 343148796, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1708024036473, + "link": null, + "locked": false + }, + { + "type": "ellipse", + "version": 143, + "versionNonce": 217696452, + "isDeleted": false, + "id": "Pw1aTxuyIgjBMcn4_MBNp", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 200.76280381944406, + "y": -228.71809895833331, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 93.81640625, + "height": 170.81640625, + "seed": 2008462276, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1708024036473, + "link": null, + "locked": false + }, + { + "id": "uZu6DO401_O7yC4PDAdQW", + "type": "line", + "x": -633.0455726553913, + "y": -211.56493868835764, + "width": 178.36439645472785, + "height": 0, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1527049340, + "version": 331, + "versionNonce": 1732410748, + "isDeleted": false, + "boundElements": null, + "updated": 1708024111467, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 85.13926428004936, + 0 + ], + [ + 178.36439645472785, + 0 + ] + ], + "lastCommittedPoint": [ + 127.00914015621163, + 58.51561830732766 + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "4ewbY6TqHAFyQAwINs3th", + "type": "line", + "x": -435.0156265315844, + "y": -211.9040139664288, + "width": 217.87754207540468, + "height": 0, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1454295420, + "version": 96, + "versionNonce": 691135100, + "isDeleted": false, + "boundElements": null, + "updated": 1708024104688, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 217.87754207540468, + 0 + ] + ], + "lastCommittedPoint": [ + 217.87754207540468, + 0 + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "Hp6dxhaf1mwQBm6JgOhYX", + "type": "line", + "x": -195.9023856003771, + "y": -212.21598681487632, + "width": 458.07850954466096, + "height": 44.07568057630101, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 272398588, + "version": 252, + "versionNonce": 1514129348, + "isDeleted": false, + "boundElements": null, + "updated": 1708024091342, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 86.45377956811535, + 0 + ], + [ + 130.52946014441633, + -44.07568057630101 + ], + [ + 263.6940402282904, + -44.07568057630101 + ], + [ + 306.59893565014323, + -1.1707851544481969 + ], + [ + 458.07850954466096, + -1.1707851544481969 + ] + ], + "lastCommittedPoint": [ + 458.07850954466096, + -1.1707851544481969 + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "90pouee7Yb6f2uEFMohW5", + "type": "line", + "x": 282.92484899434896, + "y": -211.64605468743397, + "width": 125.41623518417327, + "height": 0, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1433818876, + "version": 54, + "versionNonce": 623940420, + "isDeleted": false, + "boundElements": null, + "updated": 1708024104688, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 125.41623518417327, + 0 + ] + ], + "lastCommittedPoint": [ + 125.41623518417327, + 0 + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "YRbzxG4XZalD4C6EaWMzc", + "type": "line", + "x": -631.7257371071308, + "y": -191.28521548229298, + "width": 1045.423533148765, + "height": 87.35106930803425, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1120239556, + "version": 508, + "versionNonce": 699079548, + "isDeleted": false, + "boundElements": null, + "updated": 1708024133709, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 96.6347179179719, + 0 + ], + [ + 120.04036639705475, + -87.35106930803425 + ], + [ + 913.4081202232901, + -87.35106930803425 + ], + [ + 942.0758585629173, + -87.35106930803425 + ], + [ + 965.2969711273124, + -0.6886974094359175 + ], + [ + 1045.423533148765, + -0.6886974094359175 + ] + ], + "lastCommittedPoint": [ + 1045.423533148765, + -0.6886974094359175 + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "zLi5e5c3SF60rvNer0DMD", + "type": "line", + "x": -632.8362194304948, + "y": -172.37317410675422, + "width": 195.24008684420835, + "height": 0, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 454316156, + "version": 75, + "versionNonce": 417815364, + "isDeleted": false, + "boundElements": null, + "updated": 1708024190130, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 195.24008684420835, + 0 + ] + ], + "lastCommittedPoint": [ + 195.24008684420835, + 0 + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "H7lCSMckf7naHj0S85lYk", + "type": "line", + "x": -417.12502811706224, + "y": -171.70887706546193, + "width": 219.6297375446469, + "height": 0, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 869204220, + "version": 90, + "versionNonce": 1029919428, + "isDeleted": false, + "boundElements": null, + "updated": 1708024190130, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 219.6297375446469, + 0 + ] + ], + "lastCommittedPoint": [ + 219.6297375446469, + 0 + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "line", + "version": 173, + "versionNonce": 1853119044, + "isDeleted": false, + "id": "gdHizq_Y31is79E_XVj_J", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -179.54097595901158, + "y": -172.29261192706318, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 219.6297375446469, + "height": 0, + "seed": 502691012, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1708024190130, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 219.6297375446469, + 0 + ] + ] + }, + { + "type": "line", + "version": 219, + "versionNonce": 1995993540, + "isDeleted": false, + "id": "8ANmo2u50HwU6HpBPMVDQ", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 63.37703227683568, + "y": -172.00616590687386, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 219.6297375446469, + "height": 0, + "seed": 607537348, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1708024190130, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 219.6297375446469, + 0 + ] + ] + }, + { + "id": "rQwRfwcvyOgr1eSWl6QNL", + "type": "line", + "x": 301.2022957592234, + "y": -172.7979907328956, + "width": 114.30230963640861, + "height": 0, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 239715580, + "version": 55, + "versionNonce": 369989956, + "isDeleted": false, + "boundElements": null, + "updated": 1708024190130, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 114.30230963640861, + 0 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "Q8s9owVo", + "type": "text", + "x": -666.464718968756, + "y": -225.03659626125386, + "width": 13.1199951171875, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 429879236, + "version": 13, + "versionNonce": 1123403972, + "isDeleted": false, + "boundElements": null, + "updated": 1708024200165, + "link": null, + "locked": false, + "text": "A", + "rawText": "A", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 18, + "containerId": null, + "originalText": "A", + "lineHeight": 1.25 + }, + { + "id": "K0fuBTTp", + "type": "text", + "x": -654.6408129191684, + "y": -202.22619706166472, + "width": 14.539993286132812, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 149671748, + "version": 36, + "versionNonce": 1663035772, + "isDeleted": false, + "boundElements": null, + "updated": 1708024205598, + "link": null, + "locked": false, + "text": "B", + "rawText": "B", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 18, + "containerId": null, + "originalText": "B", + "lineHeight": 1.25 + }, + { + "id": "StYtcYs2g10rcMOZGZnls", + "type": "line", + "x": -630.396799244744, + "y": -97.954637592035, + "width": 179.52039034872132, + "height": 0, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1186235772, + "version": 117, + "versionNonce": 338805444, + "isDeleted": false, + "boundElements": null, + "updated": 1708024312381, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 179.52039034872132, + 0 + ] + ], + "lastCommittedPoint": [ + 179.52039034872132, + 0 + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "GuJtxf__0BJn5tsAdSj7N", + "type": "line", + "x": -423.25088552381476, + "y": -98.1267388824651, + "width": 220.68105482619217, + "height": 0, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1820368764, + "version": 192, + "versionNonce": 1656823036, + "isDeleted": false, + "boundElements": null, + "updated": 1708024315686, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 122.04837895757794, + 0 + ], + [ + 220.68105482619217, + 0 + ] + ], + "lastCommittedPoint": [ + 220.68105482619217, + 0 + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "PMh9mDayc-hBEU9VbG_yY", + "type": "line", + "x": -182.89972987148064, + "y": -98.20685842336192, + "width": 221.60493970997447, + "height": 0, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1110404732, + "version": 69, + "versionNonce": 2066235588, + "isDeleted": false, + "boundElements": null, + "updated": 1708024315686, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 221.60493970997447, + 0 + ] + ], + "lastCommittedPoint": [ + 221.60493970997447, + 0 + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "Z4EDTrqvhxF6dbDYgdBX-", + "type": "line", + "x": 55.69923031161136, + "y": -97.37878373662386, + "width": 367.0735729135786, + "height": 50.21903988758858, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 224161916, + "version": 309, + "versionNonce": 986344700, + "isDeleted": false, + "boundElements": null, + "updated": 1708024567677, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 95.33763815502641, + 0 + ], + [ + 123.5401423243255, + 48.84817012189913 + ], + [ + 263.7076936994788, + 48.84817012189913 + ], + [ + 292.7016698970226, + -1.3708697656894486 + ], + [ + 367.0735729135786, + -1.3708697656894486 + ] + ], + "lastCommittedPoint": [ + 363.60559123159817, + 7.804881227008423 + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "3Df6uKTr", + "type": "text", + "x": -667.2429668265225, + "y": -184.03977343805002, + "width": 12.879989624023438, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 999376708, + "version": 69, + "versionNonce": 1636864252, + "isDeleted": false, + "boundElements": null, + "updated": 1708024628112, + "link": null, + "locked": false, + "text": "C", + "rawText": "C", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 18, + "containerId": null, + "originalText": "C", + "lineHeight": 1.25 + }, + { + "id": "PnN5_fbJSTotgwjIPleQq", + "type": "line", + "x": -629.1588845236171, + "y": -156.09566907143443, + "width": 188.12662835479136, + "height": 0, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1225141372, + "version": 118, + "versionNonce": 267251524, + "isDeleted": false, + "boundElements": null, + "updated": 1708024337136, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 188.12662835479136, + 0 + ] + ], + "lastCommittedPoint": [ + 188.12662835479136, + 0 + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "pfHnpcgBfW2UdWgO9ZVj1", + "type": "line", + "x": -413.86639965997745, + "y": -155.7816392340897, + "width": 460.12653022299605, + "height": 91.8191453622513, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 338319228, + "version": 211, + "versionNonce": 1133059524, + "isDeleted": false, + "boundElements": null, + "updated": 1708024349235, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 64.2168261584601, + 0 + ], + [ + 117.2286344501174, + -91.8191453622513 + ], + [ + 234.32997485802923, + -91.8191453622513 + ], + [ + 286.9050089679527, + -0.7565150741970967 + ], + [ + 460.12653022299605, + -0.7565150741970967 + ] + ], + "lastCommittedPoint": [ + 460.12653022299605, + -0.7565150741970967 + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "7e2sSjnVyK07sNRRUwIPB", + "type": "line", + "x": 67.94639396805485, + "y": -156.69187064668307, + "width": 345.27808173903134, + "height": 88.50885260004162, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 472129788, + "version": 397, + "versionNonce": 1665842756, + "isDeleted": false, + "boundElements": null, + "updated": 1708024369981, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 92.46130689123129, + 0 + ], + [ + 142.67858514436057, + -86.97887735224359 + ], + [ + 219.05629175471302, + -86.97887735224359 + ], + [ + 270.1569016290119, + 1.5299752477980348 + ], + [ + 345.27808173903134, + 1.5299752477980348 + ] + ], + "lastCommittedPoint": [ + 347.8039739089779, + 2.4309554191540883 + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "C47c-UqB6QEOftptyye0M", + "type": "line", + "x": -629.4274027903326, + "y": -87.33678816413334, + "width": 175.50171866212173, + "height": 0, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1391057020, + "version": 247, + "versionNonce": 238273092, + "isDeleted": false, + "boundElements": null, + "updated": 1708024478444, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 175.50171866212173, + 0 + ] + ], + "lastCommittedPoint": [ + 173.10781004700124, + 0 + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "CWSViKX3Ag3AiBtTHRmQT", + "type": "line", + "x": -426.7962368758664, + "y": -86.64658456642091, + "width": 458.5290740938947, + "height": 41.50871821099072, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 729519228, + "version": 327, + "versionNonce": 460448508, + "isDeleted": false, + "boundElements": null, + "updated": 1708024512352, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 136.1387612245228, + 0 + ], + [ + 147.2609887480088, + 41.50871821099072 + ], + [ + 239.60476589400764, + 41.50871821099072 + ], + [ + 250.22684464574752, + 1.866580627499843 + ], + [ + 458.5290740938947, + 1.866580627499843 + ] + ], + "lastCommittedPoint": [ + 458.5290740938947, + 1.866580627499843 + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "sgXzUdMBDG8THIW7uzEw-", + "type": "line", + "x": 51.08435704976273, + "y": -87.38442252849684, + "width": 218.7104038179276, + "height": 0, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1654630268, + "version": 69, + "versionNonce": 2001656516, + "isDeleted": false, + "boundElements": null, + "updated": 1708024512352, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 218.7104038179276, + 0 + ] + ], + "lastCommittedPoint": [ + 218.7104038179276, + 0 + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "Pgq-dHg-OfU4nEdYCx5aI", + "type": "line", + "x": 290.09292136852184, + "y": -87.13223142233993, + "width": 132.39315896170115, + "height": 0, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1998596476, + "version": 49, + "versionNonce": 229909372, + "isDeleted": false, + "boundElements": null, + "updated": 1708024512353, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 132.39315896170115, + 0 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "UclQjhjtufK3UsPV-RVVS", + "type": "line", + "x": -628.1712834409539, + "y": -107.22534452929779, + "width": 187.77163810388004, + "height": 0, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1101134276, + "version": 112, + "versionNonce": 490003324, + "isDeleted": false, + "boundElements": null, + "updated": 1708024527191, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 187.77163810388004, + 0 + ] + ], + "lastCommittedPoint": [ + 187.77163810388004, + 0 + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "oPmnUU_bU4WYLMee_cgHC", + "type": "line", + "x": -418.4858240788892, + "y": -106.46985245684533, + "width": 220.03023936618797, + "height": 0, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1435484612, + "version": 104, + "versionNonce": 1539952508, + "isDeleted": false, + "boundElements": null, + "updated": 1708024535191, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 220.03023936618797, + 0 + ] + ], + "lastCommittedPoint": [ + 220.03023936618797, + 0 + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "9E5Hwo9TIVhIeaWvUNTLG", + "type": "line", + "x": -180.00974513649726, + "y": -105.80083236858923, + "width": 605.9273978921971, + "height": 85.72067140844857, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 864718276, + "version": 373, + "versionNonce": 1985665532, + "isDeleted": false, + "boundElements": null, + "updated": 1708024552240, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 78.80783570233132, + 0 + ], + [ + 127.39762434343376, + 84.15998265542251 + ], + [ + 508.3050788915615, + 84.15998265542251 + ], + [ + 557.7959316043447, + -1.5606887530260565 + ], + [ + 605.9273978921971, + -1.5606887530260565 + ] + ], + "lastCommittedPoint": [ + 605.9273978921971, + -1.5606887530260565 + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "SzlcKh52G3WyIm0a_c3d-", + "type": "line", + "x": -628.7811384873913, + "y": -76.42311352713921, + "width": 651.989658526483, + "height": 40.678961206959016, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1201095676, + "version": 341, + "versionNonce": 861276228, + "isDeleted": false, + "boundElements": null, + "updated": 1708024605102, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 99.44733298288531, + 0 + ], + [ + 122.93334218607748, + 40.678961206959016 + ], + [ + 472.79240032923235, + 40.678961206959016 + ], + [ + 493.85907402179566, + 4.190412024964729 + ], + [ + 651.989658526483, + 4.190412024964729 + ] + ], + "lastCommittedPoint": [ + 651.989658526483, + 4.190412024964729 + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "HScGZYMhuvSV5qLVxGmen", + "type": "line", + "x": 42.036656808584894, + "y": -71.30306183130165, + "width": 382.4018699016507, + "height": 41.58014328629638, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1481993852, + "version": 301, + "versionNonce": 1761266116, + "isDeleted": false, + "boundElements": null, + "updated": 1708024617971, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 102.36462466024693, + 0 + ], + [ + 125.87198218006705, + 40.71593757601474 + ], + [ + 313.8750980045612, + 40.71593757601474 + ], + [ + 337.88140492384764, + -0.8642057102816381 + ], + [ + 382.4018699016507, + -0.8642057102816381 + ] + ], + "lastCommittedPoint": [ + 382.4018699016507, + -0.8642057102816381 + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "bsYpUJSv", + "type": "text", + "x": -649.6891540346604, + "y": -166.408590976117, + "width": 15.599990844726562, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 363098180, + "version": 39, + "versionNonce": 1237769284, + "isDeleted": false, + "boundElements": null, + "updated": 1708024625909, + "link": null, + "locked": false, + "text": "D", + "rawText": "D", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 18, + "containerId": null, + "originalText": "D", + "lineHeight": 1.25 + }, + { + "id": "vkPYWVGm", + "type": "text", + "x": -669.9395507386487, + "y": -121.22613915529669, + "width": 13.1199951171875, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 203154044, + "version": 145, + "versionNonce": 461942468, + "isDeleted": false, + "boundElements": null, + "updated": 1708024669077, + "link": null, + "locked": false, + "text": "A", + "rawText": "A", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 18, + "containerId": null, + "originalText": "A", + "lineHeight": 1.25 + }, + { + "id": "6aGyYy7i", + "type": "text", + "x": -652.3728218820942, + "y": -110.75672792561386, + "width": 14.539993286132812, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1037624900, + "version": 73, + "versionNonce": 870131908, + "isDeleted": false, + "boundElements": null, + "updated": 1708024670942, + "link": null, + "locked": false, + "text": "B", + "rawText": "B", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 18, + "containerId": null, + "originalText": "B", + "lineHeight": 1.25 + }, + { + "id": "NXjBBSc0", + "type": "text", + "x": -669.3408150111808, + "y": -99.75158422132026, + "width": 12.879989624023438, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1301957060, + "version": 135, + "versionNonce": 759579516, + "isDeleted": false, + "boundElements": null, + "updated": 1708024666991, + "link": null, + "locked": false, + "text": "C", + "rawText": "C", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 18, + "containerId": null, + "originalText": "C", + "lineHeight": 1.25 + }, + { + "id": "yKP3NSdr", + "type": "text", + "x": -652.2339511992119, + "y": -88.8495197867949, + "width": 15.599990844726562, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1148050556, + "version": 80, + "versionNonce": 1266652412, + "isDeleted": false, + "boundElements": null, + "updated": 1708024664940, + "link": null, + "locked": false, + "text": "D", + "rawText": "D", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 18, + "containerId": null, + "originalText": "D", + "lineHeight": 1.25 + }, + { + "id": "nRzxvroyR68mdc5PD-dik", + "type": "rectangle", + "x": -563.8892335067908, + "y": -368.28019223876356, + "width": 186.9719002761919, + "height": 370.6492992175689, + "angle": 0, + "strokeColor": "#6741d9", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 1726973564, + "version": 287, + "versionNonce": 11832004, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "V1Lg8hOP" + } + ], + "updated": 1708025305037, + "link": null, + "locked": false + }, + { + "id": "V1Lg8hOP", + "type": "text", + "x": -520.7432415596128, + "y": -363.28019223876356, + "width": 100.67991638183594, + "height": 25, + "angle": 0, + "strokeColor": "#6741d9", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1154200316, + "version": 200, + "versionNonce": 585011780, + "isDeleted": false, + "boundElements": null, + "updated": 1708025305037, + "link": null, + "locked": false, + "text": "adresse 0", + "rawText": "adresse 0", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "top", + "baseline": 18, + "containerId": "nRzxvroyR68mdc5PD-dik", + "originalText": "adresse 0", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 314, + "versionNonce": 2048075900, + "isDeleted": false, + "id": "lbQGc7Nk05imXExbuVOVJ", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -324.66814207015284, + "y": -368.2921136284344, + "strokeColor": "#6741d9", + "backgroundColor": "transparent", + "width": 186.9719002761919, + "height": 370.6492992175689, + "seed": 273908604, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "tOYHUe0B" + } + ], + "updated": 1708025080111, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 229, + "versionNonce": 1114549572, + "isDeleted": false, + "id": "tOYHUe0B", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -277.3521519540295, + "y": -363.2921136284344, + "strokeColor": "#6741d9", + "backgroundColor": "transparent", + "width": 92.33992004394531, + "height": 25, + "seed": 646820860, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1708025080111, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "adresse 1", + "rawText": "adresse 1", + "textAlign": "center", + "verticalAlign": "top", + "containerId": "lbQGc7Nk05imXExbuVOVJ", + "originalText": "adresse 1", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "rectangle", + "version": 396, + "versionNonce": 1662040316, + "isDeleted": false, + "id": "urTxlTa3zS6CY_fgnD9oF", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -85.58696063438106, + "y": -368.28019223876356, + "strokeColor": "#6741d9", + "backgroundColor": "transparent", + "width": 186.9719002761919, + "height": 370.6492992175689, + "seed": 1308393796, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "IzarIVg0" + } + ], + "updated": 1708025080111, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 312, + "versionNonce": 506488004, + "isDeleted": false, + "id": "IzarIVg0", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -42.68096655097261, + "y": -363.28019223876356, + "strokeColor": "#6741d9", + "backgroundColor": "transparent", + "width": 101.159912109375, + "height": 25, + "seed": 551794884, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1708025080111, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "adresse 2", + "rawText": "adresse 2", + "textAlign": "center", + "verticalAlign": "top", + "containerId": "urTxlTa3zS6CY_fgnD9oF", + "originalText": "adresse 2", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "rectangle", + "version": 441, + "versionNonce": 1728592252, + "isDeleted": false, + "id": "ufX2Qnf_sfXhIA-KpdbJj", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 153.49422080139072, + "y": -368.40735372858575, + "strokeColor": "#6741d9", + "backgroundColor": "transparent", + "width": 186.9719002761919, + "height": 370.6492992175689, + "seed": 714573692, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "NpBOLyur" + } + ], + "updated": 1708025080111, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 357, + "versionNonce": 399453252, + "isDeleted": false, + "id": "NpBOLyur", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 196.71021244339292, + "y": -363.40735372858575, + "strokeColor": "#6741d9", + "backgroundColor": "transparent", + "width": 100.5399169921875, + "height": 25, + "seed": 1639004156, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1708025080111, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "adresse 3", + "rawText": "adresse 3", + "textAlign": "center", + "verticalAlign": "top", + "containerId": "ufX2Qnf_sfXhIA-KpdbJj", + "originalText": "adresse 3", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "id": "OG67IFd32gyjgO86uJ3tF", + "type": "rectangle", + "x": -689.1120981914474, + "y": -263.84258473279675, + "width": 79.06391297493765, + "height": 124.0846627998185, + "angle": 0, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "seed": 1390726468, + "version": 424, + "versionNonce": 63742148, + "isDeleted": false, + "boundElements": [ + { + "type": "text", + "id": "VatXplBs" + } + ], + "updated": 1708024913564, + "link": null, + "locked": false + }, + { + "id": "VatXplBs", + "type": "text", + "x": -674.8101221727286, + "y": -258.84258473279675, + "width": 50.4599609375, + "height": 25, + "angle": 0, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 981855940, + "version": 421, + "versionNonce": 1053211900, + "isDeleted": false, + "boundElements": null, + "updated": 1708024913564, + "link": null, + "locked": false, + "text": "mot 1", + "rawText": "mot 1", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "center", + "verticalAlign": "top", + "baseline": 18, + "containerId": "OG67IFd32gyjgO86uJ3tF", + "originalText": "mot 1", + "lineHeight": 1.25 + }, + { + "type": "rectangle", + "version": 529, + "versionNonce": 1388126716, + "isDeleted": false, + "id": "F_1QKq82yZ73IM9eVvmHG", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -689.1120981914474, + "y": -128.53887212572005, + "strokeColor": "#1971c2", + "backgroundColor": "transparent", + "width": 79.06391297493765, + "height": 104.02689168240171, + "seed": 598792388, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "dWBc4qIU" + } + ], + "updated": 1708025073125, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 529, + "versionNonce": 479923140, + "isDeleted": false, + "id": "dWBc4qIU", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -674.8101221727286, + "y": -54.511980443318336, + "strokeColor": "#1971c2", + "backgroundColor": "transparent", + "width": 50.4599609375, + "height": 25, + "seed": 2099322948, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1708025073125, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "mot 1", + "rawText": "mot 1", + "textAlign": "center", + "verticalAlign": "bottom", + "containerId": "F_1QKq82yZ73IM9eVvmHG", + "originalText": "mot 1", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "id": "su7cRtQ8", + "type": "text", + "x": -493.8407833686948, + "y": 23.617044040153417, + "width": 46.875, + "height": 24, + "angle": 0, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "A2gDIx4O92NufAsp_NzLz" + ], + "frameId": null, + "roundness": null, + "seed": 1749744892, + "version": 97, + "versionNonce": 1275529412, + "isDeleted": false, + "boundElements": null, + "updated": 1708025313575, + "link": null, + "locked": false, + "text": "1011", + "rawText": "1011", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 20, + "containerId": null, + "originalText": "1011", + "lineHeight": 1.2 + }, + { + "id": "HYYNfvtT", + "type": "text", + "x": -493.8407833686948, + "y": 64.220926025143, + "width": 46.875, + "height": 24, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [ + "A2gDIx4O92NufAsp_NzLz" + ], + "frameId": null, + "roundness": null, + "seed": 563938044, + "version": 96, + "versionNonce": 576574844, + "isDeleted": false, + "boundElements": null, + "updated": 1708025313575, + "link": null, + "locked": false, + "text": "1110", + "rawText": "1110", + "fontSize": 20, + "fontFamily": 3, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 20, + "containerId": null, + "originalText": "1110", + "lineHeight": 1.2 + }, + { + "type": "text", + "version": 141, + "versionNonce": 416318020, + "isDeleted": false, + "id": "Ijom74bS", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -254.71419512760588, + "y": 23.677922191244022, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 46.875, + "height": 24, + "seed": 230788548, + "groupIds": [ + "OUx4fylAVBnkzdhLSARdY" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1708025323289, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 3, + "text": "1010", + "rawText": "1010", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "1010", + "lineHeight": 1.2, + "baseline": 20 + }, + { + "type": "text", + "version": 141, + "versionNonce": 2082649084, + "isDeleted": false, + "id": "fwTNVnUX", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -254.71419512760588, + "y": 64.1600478740524, + "strokeColor": "#1971c2", + "backgroundColor": "transparent", + "width": 46.875, + "height": 24, + "seed": 760427844, + "groupIds": [ + "OUx4fylAVBnkzdhLSARdY" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1708025323289, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 3, + "text": "1100", + "rawText": "1100", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "1100", + "lineHeight": 1.2, + "baseline": 20 + }, + { + "type": "text", + "version": 105, + "versionNonce": 1401919940, + "isDeleted": false, + "id": "bmb6OWnD", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -15.583917301602327, + "y": 23.558010681520045, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 46.875, + "height": 24, + "seed": 1257459836, + "groupIds": [ + "SOEe2NRiI2Ye6L_UmravI" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1708025323289, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 3, + "text": "0011", + "rawText": "0011", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "0011", + "lineHeight": 1.2, + "baseline": 20 + }, + { + "type": "text", + "version": 104, + "versionNonce": 572707964, + "isDeleted": false, + "id": "YrCUTkHA", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -15.587606886516909, + "y": 64.27995938377637, + "strokeColor": "#1971c2", + "backgroundColor": "transparent", + "width": 46.875, + "height": 24, + "seed": 1974198524, + "groupIds": [ + "SOEe2NRiI2Ye6L_UmravI" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1708025323289, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 3, + "text": "0111", + "rawText": "0111", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "0111", + "lineHeight": 1.2, + "baseline": 20 + }, + { + "type": "text", + "version": 156, + "versionNonce": 629129540, + "isDeleted": false, + "id": "o6FPN7Ut", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 223.54267093948664, + "y": 23.617044040153417, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 46.875, + "height": 24, + "seed": 1023544060, + "groupIds": [ + "YPf_pxRjbiwG9Ql2mwMDL" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1708025323289, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 3, + "text": "1010", + "rawText": "1010", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "1010", + "lineHeight": 1.2, + "baseline": 20 + }, + { + "type": "text", + "version": 155, + "versionNonce": 1145758972, + "isDeleted": false, + "id": "w4mYsYVB", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 223.54267093948664, + "y": 64.220926025143, + "strokeColor": "#1971c2", + "backgroundColor": "transparent", + "width": 46.875, + "height": 24, + "seed": 1526680444, + "groupIds": [ + "YPf_pxRjbiwG9Ql2mwMDL" + ], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1708025323289, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 3, + "text": "0100", + "rawText": "0100", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "0100", + "lineHeight": 1.2, + "baseline": 20 + } + ], + "appState": { + "theme": "dark", + "viewBackgroundColor": "#ffffff", + "currentItemStrokeColor": "#1971c2", + "currentItemBackgroundColor": "transparent", + "currentItemFillStyle": "solid", + "currentItemStrokeWidth": 2, + "currentItemStrokeStyle": "solid", + "currentItemRoughness": 1, + "currentItemOpacity": 100, + "currentItemFontFamily": 3, + "currentItemFontSize": 20, + "currentItemTextAlign": "left", + "currentItemStartArrowhead": null, + "currentItemEndArrowhead": "arrow", + "scrollX": 892.2538794853775, + "scrollY": 554.6153608799849, + "zoom": { + "value": 0.8934314861418471 + }, + "currentItemRoundness": "round", + "gridSize": null, + "gridColor": { + "Bold": "#C9C9C9FF", + "Regular": "#EDEDEDFF" + }, + "currentStrokeOptions": null, + "previousGridSize": null, + "frameRendering": { + "enabled": true, + "clip": true, + "name": true, + "outline": true + } + }, + "files": {} +} +``` +%% \ No newline at end of file diff --git a/Excalidraw/mémoire à tore de ferrite 2024-02-15 01.02.52.excalidraw.md b/Excalidraw/mémoire à tore de ferrite 2024-02-15 01.02.52.excalidraw.md new file mode 100644 index 00000000..76b405f1 --- /dev/null +++ b/Excalidraw/mémoire à tore de ferrite 2024-02-15 01.02.52.excalidraw.md @@ -0,0 +1,676 @@ +--- + +excalidraw-plugin: parsed +tags: [excalidraw] + +--- +==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== + + +# Text Elements +Reset ^RoHLK7dp + +Set ^NORclDsY + +Sense ^1Hgsf293 + +%% +# Drawing +```json +{ + "type": "excalidraw", + "version": 2, + "source": "https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/2.0.16", + "elements": [ + { + "id": "M3sG8YHxZ9sgeIVjjEQLA", + "type": "ellipse", + "x": -85.12890625, + "y": -261.17578125, + "width": 126.60546875, + "height": 197.8984375, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "seed": 993107708, + "version": 156, + "versionNonce": 1305930308, + "isDeleted": false, + "boundElements": [ + { + "id": "ZYIT0c9oGbNc5aehe-1SY", + "type": "arrow" + }, + { + "id": "Ut1skK0QDvebF6_jIOg2G", + "type": "arrow" + } + ], + "updated": 1707955502767, + "link": null, + "locked": false + }, + { + "id": "rYTrBs1w9j1SpRu51PUHS", + "type": "line", + "x": 30, + "y": -231.359375, + "width": 71.591796875, + "height": 26.908203125, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1842072388, + "version": 154, + "versionNonce": 211812860, + "isDeleted": false, + "boundElements": null, + "updated": 1707955441542, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 44.68359375, + 0 + ], + [ + 71.591796875, + -26.908203125 + ] + ], + "lastCommittedPoint": [ + 71.591796875, + -26.908203125 + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "RoHLK7dp", + "type": "text", + "x": -193.41796875, + "y": -300.7421875, + "width": 57.599945068359375, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 819643516, + "version": 69, + "versionNonce": 642532292, + "isDeleted": false, + "boundElements": [ + { + "id": "BpGvrmBpa8qqpkuxhhofa", + "type": "arrow" + } + ], + "updated": 1707955428464, + "link": null, + "locked": false, + "text": "Reset", + "rawText": "Reset", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 18, + "containerId": null, + "originalText": "Reset", + "lineHeight": 1.25 + }, + { + "id": "BpGvrmBpa8qqpkuxhhofa", + "type": "arrow", + "x": -144.28125, + "y": -259.96484375, + "width": 152.21875, + "height": 28.537109375, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 759511292, + "version": 133, + "versionNonce": 1349727684, + "isDeleted": false, + "boundElements": null, + "updated": 1707955439251, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 28.537109375000014, + 28.537109375 + ], + [ + 152.21875, + 28.537109375 + ] + ], + "lastCommittedPoint": [ + 152.21875, + 28.537109375 + ], + "startBinding": { + "elementId": "RoHLK7dp", + "focus": 0.19226641198388442, + "gap": 15.77734375 + }, + "endBinding": null, + "startArrowhead": "arrow", + "endArrowhead": null + }, + { + "id": "jT8cpDxp-r2QKdnlSbfIo", + "type": "line", + "x": -172.37890625, + "y": -229.9765625, + "width": 195.75390625, + "height": 28.3984375, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1414312700, + "version": 136, + "versionNonce": 1363863492, + "isDeleted": false, + "boundElements": null, + "updated": 1707955450248, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 28.3984375, + 28.3984375 + ], + [ + 195.75390625, + 28.3984375 + ] + ], + "lastCommittedPoint": [ + 195.75390625, + 28.3984375 + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "ZYIT0c9oGbNc5aehe-1SY", + "type": "arrow", + "x": 46.71484375, + "y": -201.4765625, + "width": 72.607421875, + "height": 30.279296875, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1179727612, + "version": 129, + "versionNonce": 915842500, + "isDeleted": false, + "boundElements": null, + "updated": 1707955470759, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 42.328125, + 0 + ], + [ + 72.607421875, + -30.279296875 + ] + ], + "lastCommittedPoint": [ + 72.607421875, + -30.279296875 + ], + "startBinding": { + "elementId": "M3sG8YHxZ9sgeIVjjEQLA", + "focus": -0.39666811416841025, + "gap": 10.081109002050752 + }, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "NORclDsY", + "type": "text", + "x": -201.171875, + "y": -256.671875, + "width": 34.39996337890625, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 679451004, + "version": 58, + "versionNonce": 883398396, + "isDeleted": false, + "boundElements": null, + "updated": 1707955477526, + "link": null, + "locked": false, + "text": "Set", + "rawText": "Set", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 18, + "containerId": null, + "originalText": "Set", + "lineHeight": 1.25 + }, + { + "id": "1Hgsf293", + "type": "text", + "x": -218, + "y": -71.12109375, + "width": 54.23994445800781, + "height": 25, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 503883900, + "version": 6, + "versionNonce": 1649959620, + "isDeleted": false, + "boundElements": null, + "updated": 1707955483329, + "link": null, + "locked": false, + "text": "Sense", + "rawText": "Sense", + "fontSize": 20, + "fontFamily": 1, + "textAlign": "left", + "verticalAlign": "top", + "baseline": 18, + "containerId": null, + "originalText": "Sense", + "lineHeight": 1.25 + }, + { + "id": "EXG1HESfTEgrowhlvpiIJ", + "type": "line", + "x": -185.4609375, + "y": -75.3359375, + "width": 205.71484375, + "height": 51.369140625000014, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1086024828, + "version": 113, + "versionNonce": 1701267908, + "isDeleted": false, + "boundElements": null, + "updated": 1707955494737, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 51.369140625, + -51.369140625000014 + ], + [ + 205.71484375, + -51.369140625000014 + ] + ], + "lastCommittedPoint": [ + 205.71484375, + -51.369140625000014 + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "Ut1skK0QDvebF6_jIOg2G", + "type": "arrow", + "x": 53.5546875, + "y": -127.328125, + "width": 98.052734375, + "height": 57.98632812499997, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 219952380, + "version": 142, + "versionNonce": 2044191428, + "isDeleted": false, + "boundElements": null, + "updated": 1707955502767, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 40.06640625, + 0 + ], + [ + 98.052734375, + 57.98632812499997 + ] + ], + "lastCommittedPoint": [ + 98.052734375, + 57.98632812499997 + ], + "startBinding": { + "elementId": "M3sG8YHxZ9sgeIVjjEQLA", + "focus": 0.3526903793770479, + "gap": 15.742398994673962 + }, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "id": "nncj4ka5ApjaYmY9671F-", + "type": "line", + "x": -162.7890625, + "y": -263.49609375, + "width": 35.3828125, + "height": 39.88671875, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "seed": 309309892, + "version": 39, + "versionNonce": 1405615868, + "isDeleted": true, + "boundElements": null, + "updated": 1707955384973, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 35.3828125, + 39.88671875 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "2XQhDcb86qZC5JjvFLgJL", + "type": "line", + "x": -164.96875, + "y": -264.05859375, + "width": 293.26171875, + "height": 54.359375, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "seed": 216448892, + "version": 208, + "versionNonce": 423814908, + "isDeleted": true, + "boundElements": null, + "updated": 1707955392037, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 23.66796875, + 44.890625 + ], + [ + 150.67578125, + 54.359375 + ], + [ + 247.19140625, + 50.421875 + ], + [ + 293.26171875, + 0.7734375 + ] + ], + "lastCommittedPoint": [ + 293.26171875, + 0.7734375 + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "bF1N0TAEimzYDSIdUsgk7", + "type": "line", + "x": -153.57421875, + "y": -271.875, + "width": 164.00390625, + "height": 34.048828125, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": null, + "seed": 1188601412, + "version": 167, + "versionNonce": 282568828, + "isDeleted": true, + "boundElements": null, + "updated": 1707955422561, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 34.048828125000014, + 34.048828125 + ], + [ + 164.00390625, + 34.048828125 + ] + ], + "lastCommittedPoint": [ + 164.00390625, + 34.048828125 + ], + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + } + ], + "appState": { + "theme": "dark", + "viewBackgroundColor": "#ffffff", + "currentItemStrokeColor": "#1e1e1e", + "currentItemBackgroundColor": "transparent", + "currentItemFillStyle": "solid", + "currentItemStrokeWidth": 2, + "currentItemStrokeStyle": "solid", + "currentItemRoughness": 1, + "currentItemOpacity": 100, + "currentItemFontFamily": 1, + "currentItemFontSize": 20, + "currentItemTextAlign": "left", + "currentItemStartArrowhead": null, + "currentItemEndArrowhead": "arrow", + "scrollX": 495.3359375, + "scrollY": 410.21484375, + "zoom": { + "value": 1 + }, + "currentItemRoundness": "sharp", + "gridSize": null, + "gridColor": { + "Bold": "#C9C9C9FF", + "Regular": "#EDEDEDFF" + }, + "currentStrokeOptions": null, + "previousGridSize": null, + "frameRendering": { + "enabled": true, + "clip": true, + "name": true, + "outline": true + } + }, + "files": {} +} +``` +%% \ No newline at end of file diff --git a/Excalidraw/pizza hawaienne.excalidraw.md b/Excalidraw/pizza hawaienne.excalidraw.md index c135564e..c5b29db2 100644 --- a/Excalidraw/pizza hawaienne.excalidraw.md +++ b/Excalidraw/pizza hawaienne.excalidraw.md @@ -13,7 +13,7 @@ tags: [excalidraw] { "type": "excalidraw", "version": 2, - "source": "https://excalidraw.com", + "source": "https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/2.0.16", "elements": [ { "type": "ellipse", @@ -35,7 +35,8 @@ tags: [excalidraw] "height": 634.534912109375, "seed": 1280738705, "groupIds": [], - "strokeSharpness": "sharp", + "frameId": null, + "roundness": null, "boundElements": [], "updated": 1647371390783, "link": null, @@ -64,7 +65,8 @@ tags: [excalidraw] "HpCYaXtmYopeOJkTcnH6W", "PMhlotCQucWH8KZV28ngO" ], - "strokeSharpness": "sharp", + "frameId": null, + "roundness": null, "boundElements": [], "updated": 1654702227248, "link": null, @@ -93,7 +95,8 @@ tags: [excalidraw] "HpCYaXtmYopeOJkTcnH6W", "PMhlotCQucWH8KZV28ngO" ], - "strokeSharpness": "sharp", + "frameId": null, + "roundness": null, "boundElements": [], "updated": 1654702227248, "link": null, @@ -121,7 +124,10 @@ tags: [excalidraw] "groupIds": [ "PMhlotCQucWH8KZV28ngO" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1654702227248, "link": null, @@ -330,7 +336,10 @@ tags: [excalidraw] "groupIds": [ "PMhlotCQucWH8KZV28ngO" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1654702227248, "link": null, @@ -527,7 +536,10 @@ tags: [excalidraw] "groupIds": [ "PMhlotCQucWH8KZV28ngO" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1654702227248, "link": null, @@ -664,7 +676,10 @@ tags: [excalidraw] "groupIds": [ "PMhlotCQucWH8KZV28ngO" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1654702227248, "link": null, @@ -905,7 +920,10 @@ tags: [excalidraw] "groupIds": [ "PMhlotCQucWH8KZV28ngO" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1654702227248, "link": null, @@ -1082,7 +1100,10 @@ tags: [excalidraw] "groupIds": [ "PMhlotCQucWH8KZV28ngO" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1654702227248, "link": null, @@ -1323,7 +1344,10 @@ tags: [excalidraw] "groupIds": [ "PMhlotCQucWH8KZV28ngO" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1654702227248, "link": null, @@ -1584,7 +1608,10 @@ tags: [excalidraw] "groupIds": [ "PMhlotCQucWH8KZV28ngO" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1654702227248, "link": null, @@ -1817,7 +1844,10 @@ tags: [excalidraw] "groupIds": [ "PMhlotCQucWH8KZV28ngO" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1654702227248, "link": null, @@ -1946,7 +1976,10 @@ tags: [excalidraw] "groupIds": [ "PMhlotCQucWH8KZV28ngO" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1654702227248, "link": null, @@ -2083,7 +2116,10 @@ tags: [excalidraw] "groupIds": [ "PMhlotCQucWH8KZV28ngO" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1654702227248, "link": null, @@ -2248,7 +2284,10 @@ tags: [excalidraw] "groupIds": [ "PMhlotCQucWH8KZV28ngO" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1654702227248, "link": null, @@ -2405,7 +2444,10 @@ tags: [excalidraw] "groupIds": [ "PMhlotCQucWH8KZV28ngO" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1654702227248, "link": null, @@ -2538,7 +2580,10 @@ tags: [excalidraw] "groupIds": [ "PMhlotCQucWH8KZV28ngO" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1654702227248, "link": null, @@ -2699,7 +2744,10 @@ tags: [excalidraw] "groupIds": [ "PMhlotCQucWH8KZV28ngO" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1654702227248, "link": null, @@ -2936,7 +2984,10 @@ tags: [excalidraw] "groupIds": [ "PMhlotCQucWH8KZV28ngO" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1654702227248, "link": null, @@ -3109,7 +3160,10 @@ tags: [excalidraw] "groupIds": [ "PMhlotCQucWH8KZV28ngO" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1654702227248, "link": null, @@ -3338,7 +3392,10 @@ tags: [excalidraw] "groupIds": [ "PMhlotCQucWH8KZV28ngO" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1654702227248, "link": null, @@ -3571,7 +3628,10 @@ tags: [excalidraw] "groupIds": [ "PMhlotCQucWH8KZV28ngO" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1654702227248, "link": null, @@ -3776,7 +3836,10 @@ tags: [excalidraw] "groupIds": [ "PMhlotCQucWH8KZV28ngO" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1654702227248, "link": null, @@ -3941,7 +4004,10 @@ tags: [excalidraw] "groupIds": [ "PMhlotCQucWH8KZV28ngO" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1654702227248, "link": null, @@ -4130,7 +4196,10 @@ tags: [excalidraw] "groupIds": [ "PMhlotCQucWH8KZV28ngO" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1654702227248, "link": null, @@ -4335,7 +4404,10 @@ tags: [excalidraw] "groupIds": [ "PMhlotCQucWH8KZV28ngO" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1654702227248, "link": null, @@ -4508,7 +4580,10 @@ tags: [excalidraw] "groupIds": [ "PMhlotCQucWH8KZV28ngO" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1654702227248, "link": null, @@ -4773,7 +4848,10 @@ tags: [excalidraw] "groupIds": [ "PMhlotCQucWH8KZV28ngO" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1654702227248, "link": null, @@ -4935,7 +5013,8 @@ tags: [excalidraw] "F4y0EaocdikZeNHUjHc02", "wiSlmVyRf-pjUrjjbtCrA" ], - "strokeSharpness": "sharp", + "frameId": null, + "roundness": null, "boundElements": [], "updated": 1647371390784, "link": null, @@ -4964,7 +5043,8 @@ tags: [excalidraw] "F4y0EaocdikZeNHUjHc02", "wiSlmVyRf-pjUrjjbtCrA" ], - "strokeSharpness": "sharp", + "frameId": null, + "roundness": null, "boundElements": [], "updated": 1647371390784, "link": null, @@ -4992,7 +5072,10 @@ tags: [excalidraw] "groupIds": [ "wiSlmVyRf-pjUrjjbtCrA" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390784, "link": null, @@ -5201,7 +5284,10 @@ tags: [excalidraw] "groupIds": [ "wiSlmVyRf-pjUrjjbtCrA" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390784, "link": null, @@ -5398,7 +5484,10 @@ tags: [excalidraw] "groupIds": [ "wiSlmVyRf-pjUrjjbtCrA" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390784, "link": null, @@ -5535,7 +5624,10 @@ tags: [excalidraw] "groupIds": [ "wiSlmVyRf-pjUrjjbtCrA" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390784, "link": null, @@ -5776,7 +5868,10 @@ tags: [excalidraw] "groupIds": [ "wiSlmVyRf-pjUrjjbtCrA" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390784, "link": null, @@ -5953,7 +6048,10 @@ tags: [excalidraw] "groupIds": [ "wiSlmVyRf-pjUrjjbtCrA" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390784, "link": null, @@ -6194,7 +6292,10 @@ tags: [excalidraw] "groupIds": [ "wiSlmVyRf-pjUrjjbtCrA" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390784, "link": null, @@ -6455,7 +6556,10 @@ tags: [excalidraw] "groupIds": [ "wiSlmVyRf-pjUrjjbtCrA" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390784, "link": null, @@ -6688,7 +6792,10 @@ tags: [excalidraw] "groupIds": [ "wiSlmVyRf-pjUrjjbtCrA" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390784, "link": null, @@ -6817,7 +6924,10 @@ tags: [excalidraw] "groupIds": [ "wiSlmVyRf-pjUrjjbtCrA" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390784, "link": null, @@ -6954,7 +7064,10 @@ tags: [excalidraw] "groupIds": [ "wiSlmVyRf-pjUrjjbtCrA" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390784, "link": null, @@ -7119,7 +7232,10 @@ tags: [excalidraw] "groupIds": [ "wiSlmVyRf-pjUrjjbtCrA" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390784, "link": null, @@ -7276,7 +7392,10 @@ tags: [excalidraw] "groupIds": [ "wiSlmVyRf-pjUrjjbtCrA" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390784, "link": null, @@ -7409,7 +7528,10 @@ tags: [excalidraw] "groupIds": [ "wiSlmVyRf-pjUrjjbtCrA" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390784, "link": null, @@ -7570,7 +7692,10 @@ tags: [excalidraw] "groupIds": [ "wiSlmVyRf-pjUrjjbtCrA" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390784, "link": null, @@ -7807,7 +7932,10 @@ tags: [excalidraw] "groupIds": [ "wiSlmVyRf-pjUrjjbtCrA" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390784, "link": null, @@ -7980,7 +8108,10 @@ tags: [excalidraw] "groupIds": [ "wiSlmVyRf-pjUrjjbtCrA" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390784, "link": null, @@ -8209,7 +8340,10 @@ tags: [excalidraw] "groupIds": [ "wiSlmVyRf-pjUrjjbtCrA" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390784, "link": null, @@ -8442,7 +8576,10 @@ tags: [excalidraw] "groupIds": [ "wiSlmVyRf-pjUrjjbtCrA" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390784, "link": null, @@ -8647,7 +8784,10 @@ tags: [excalidraw] "groupIds": [ "wiSlmVyRf-pjUrjjbtCrA" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390785, "link": null, @@ -8812,7 +8952,10 @@ tags: [excalidraw] "groupIds": [ "wiSlmVyRf-pjUrjjbtCrA" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390785, "link": null, @@ -9001,7 +9144,10 @@ tags: [excalidraw] "groupIds": [ "wiSlmVyRf-pjUrjjbtCrA" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390785, "link": null, @@ -9206,7 +9352,10 @@ tags: [excalidraw] "groupIds": [ "wiSlmVyRf-pjUrjjbtCrA" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390785, "link": null, @@ -9379,7 +9528,10 @@ tags: [excalidraw] "groupIds": [ "wiSlmVyRf-pjUrjjbtCrA" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390785, "link": null, @@ -9644,7 +9796,10 @@ tags: [excalidraw] "groupIds": [ "wiSlmVyRf-pjUrjjbtCrA" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390785, "link": null, @@ -9806,7 +9961,8 @@ tags: [excalidraw] "jGNeXtzcrLwrsQGczKyTn", "9QolODzXdyH1rc2MkHsPD" ], - "strokeSharpness": "sharp", + "frameId": null, + "roundness": null, "boundElements": [], "updated": 1647371390785, "link": null, @@ -9835,7 +9991,8 @@ tags: [excalidraw] "jGNeXtzcrLwrsQGczKyTn", "9QolODzXdyH1rc2MkHsPD" ], - "strokeSharpness": "sharp", + "frameId": null, + "roundness": null, "boundElements": [], "updated": 1647371390785, "link": null, @@ -9863,7 +10020,10 @@ tags: [excalidraw] "groupIds": [ "9QolODzXdyH1rc2MkHsPD" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390785, "link": null, @@ -10072,7 +10232,10 @@ tags: [excalidraw] "groupIds": [ "9QolODzXdyH1rc2MkHsPD" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390785, "link": null, @@ -10269,7 +10432,10 @@ tags: [excalidraw] "groupIds": [ "9QolODzXdyH1rc2MkHsPD" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390785, "link": null, @@ -10406,7 +10572,10 @@ tags: [excalidraw] "groupIds": [ "9QolODzXdyH1rc2MkHsPD" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390785, "link": null, @@ -10647,7 +10816,10 @@ tags: [excalidraw] "groupIds": [ "9QolODzXdyH1rc2MkHsPD" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390785, "link": null, @@ -10824,7 +10996,10 @@ tags: [excalidraw] "groupIds": [ "9QolODzXdyH1rc2MkHsPD" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390785, "link": null, @@ -11065,7 +11240,10 @@ tags: [excalidraw] "groupIds": [ "9QolODzXdyH1rc2MkHsPD" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390785, "link": null, @@ -11326,7 +11504,10 @@ tags: [excalidraw] "groupIds": [ "9QolODzXdyH1rc2MkHsPD" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390785, "link": null, @@ -11559,7 +11740,10 @@ tags: [excalidraw] "groupIds": [ "9QolODzXdyH1rc2MkHsPD" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390785, "link": null, @@ -11688,7 +11872,10 @@ tags: [excalidraw] "groupIds": [ "9QolODzXdyH1rc2MkHsPD" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390785, "link": null, @@ -11825,7 +12012,10 @@ tags: [excalidraw] "groupIds": [ "9QolODzXdyH1rc2MkHsPD" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390785, "link": null, @@ -11990,7 +12180,10 @@ tags: [excalidraw] "groupIds": [ "9QolODzXdyH1rc2MkHsPD" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390785, "link": null, @@ -12147,7 +12340,10 @@ tags: [excalidraw] "groupIds": [ "9QolODzXdyH1rc2MkHsPD" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390785, "link": null, @@ -12280,7 +12476,10 @@ tags: [excalidraw] "groupIds": [ "9QolODzXdyH1rc2MkHsPD" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390785, "link": null, @@ -12441,7 +12640,10 @@ tags: [excalidraw] "groupIds": [ "9QolODzXdyH1rc2MkHsPD" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390785, "link": null, @@ -12678,7 +12880,10 @@ tags: [excalidraw] "groupIds": [ "9QolODzXdyH1rc2MkHsPD" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390785, "link": null, @@ -12851,7 +13056,10 @@ tags: [excalidraw] "groupIds": [ "9QolODzXdyH1rc2MkHsPD" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390785, "link": null, @@ -13080,7 +13288,10 @@ tags: [excalidraw] "groupIds": [ "9QolODzXdyH1rc2MkHsPD" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390785, "link": null, @@ -13313,7 +13524,10 @@ tags: [excalidraw] "groupIds": [ "9QolODzXdyH1rc2MkHsPD" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390785, "link": null, @@ -13518,7 +13732,10 @@ tags: [excalidraw] "groupIds": [ "9QolODzXdyH1rc2MkHsPD" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390785, "link": null, @@ -13683,7 +13900,10 @@ tags: [excalidraw] "groupIds": [ "9QolODzXdyH1rc2MkHsPD" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390785, "link": null, @@ -13872,7 +14092,10 @@ tags: [excalidraw] "groupIds": [ "9QolODzXdyH1rc2MkHsPD" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390785, "link": null, @@ -14077,7 +14300,10 @@ tags: [excalidraw] "groupIds": [ "9QolODzXdyH1rc2MkHsPD" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390785, "link": null, @@ -14250,7 +14476,10 @@ tags: [excalidraw] "groupIds": [ "9QolODzXdyH1rc2MkHsPD" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390785, "link": null, @@ -14515,7 +14744,10 @@ tags: [excalidraw] "groupIds": [ "9QolODzXdyH1rc2MkHsPD" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390785, "link": null, @@ -14677,7 +14909,8 @@ tags: [excalidraw] "pzq7NcxOpUXIPtZT2wU0N", "XvXxiFGNcTWwWs2FtcAyo" ], - "strokeSharpness": "sharp", + "frameId": null, + "roundness": null, "boundElements": [], "updated": 1647371390785, "link": null, @@ -14706,7 +14939,8 @@ tags: [excalidraw] "pzq7NcxOpUXIPtZT2wU0N", "XvXxiFGNcTWwWs2FtcAyo" ], - "strokeSharpness": "sharp", + "frameId": null, + "roundness": null, "boundElements": [], "updated": 1647371390786, "link": null, @@ -14734,7 +14968,10 @@ tags: [excalidraw] "groupIds": [ "XvXxiFGNcTWwWs2FtcAyo" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390786, "link": null, @@ -14943,7 +15180,10 @@ tags: [excalidraw] "groupIds": [ "XvXxiFGNcTWwWs2FtcAyo" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390786, "link": null, @@ -15140,7 +15380,10 @@ tags: [excalidraw] "groupIds": [ "XvXxiFGNcTWwWs2FtcAyo" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390786, "link": null, @@ -15277,7 +15520,10 @@ tags: [excalidraw] "groupIds": [ "XvXxiFGNcTWwWs2FtcAyo" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390786, "link": null, @@ -15518,7 +15764,10 @@ tags: [excalidraw] "groupIds": [ "XvXxiFGNcTWwWs2FtcAyo" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390786, "link": null, @@ -15695,7 +15944,10 @@ tags: [excalidraw] "groupIds": [ "XvXxiFGNcTWwWs2FtcAyo" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390786, "link": null, @@ -15936,7 +16188,10 @@ tags: [excalidraw] "groupIds": [ "XvXxiFGNcTWwWs2FtcAyo" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390786, "link": null, @@ -16197,7 +16452,10 @@ tags: [excalidraw] "groupIds": [ "XvXxiFGNcTWwWs2FtcAyo" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390786, "link": null, @@ -16430,7 +16688,10 @@ tags: [excalidraw] "groupIds": [ "XvXxiFGNcTWwWs2FtcAyo" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390786, "link": null, @@ -16559,7 +16820,10 @@ tags: [excalidraw] "groupIds": [ "XvXxiFGNcTWwWs2FtcAyo" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390786, "link": null, @@ -16696,7 +16960,10 @@ tags: [excalidraw] "groupIds": [ "XvXxiFGNcTWwWs2FtcAyo" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390786, "link": null, @@ -16861,7 +17128,10 @@ tags: [excalidraw] "groupIds": [ "XvXxiFGNcTWwWs2FtcAyo" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390786, "link": null, @@ -17018,7 +17288,10 @@ tags: [excalidraw] "groupIds": [ "XvXxiFGNcTWwWs2FtcAyo" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390786, "link": null, @@ -17151,7 +17424,10 @@ tags: [excalidraw] "groupIds": [ "XvXxiFGNcTWwWs2FtcAyo" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390786, "link": null, @@ -17312,7 +17588,10 @@ tags: [excalidraw] "groupIds": [ "XvXxiFGNcTWwWs2FtcAyo" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390786, "link": null, @@ -17549,7 +17828,10 @@ tags: [excalidraw] "groupIds": [ "XvXxiFGNcTWwWs2FtcAyo" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390786, "link": null, @@ -17722,7 +18004,10 @@ tags: [excalidraw] "groupIds": [ "XvXxiFGNcTWwWs2FtcAyo" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390786, "link": null, @@ -17951,7 +18236,10 @@ tags: [excalidraw] "groupIds": [ "XvXxiFGNcTWwWs2FtcAyo" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390786, "link": null, @@ -18184,7 +18472,10 @@ tags: [excalidraw] "groupIds": [ "XvXxiFGNcTWwWs2FtcAyo" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390786, "link": null, @@ -18389,7 +18680,10 @@ tags: [excalidraw] "groupIds": [ "XvXxiFGNcTWwWs2FtcAyo" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390786, "link": null, @@ -18554,7 +18848,10 @@ tags: [excalidraw] "groupIds": [ "XvXxiFGNcTWwWs2FtcAyo" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390786, "link": null, @@ -18743,7 +19040,10 @@ tags: [excalidraw] "groupIds": [ "XvXxiFGNcTWwWs2FtcAyo" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390786, "link": null, @@ -18948,7 +19248,10 @@ tags: [excalidraw] "groupIds": [ "XvXxiFGNcTWwWs2FtcAyo" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390786, "link": null, @@ -19121,7 +19424,10 @@ tags: [excalidraw] "groupIds": [ "XvXxiFGNcTWwWs2FtcAyo" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390786, "link": null, @@ -19386,7 +19692,10 @@ tags: [excalidraw] "groupIds": [ "XvXxiFGNcTWwWs2FtcAyo" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390786, "link": null, @@ -19548,7 +19857,8 @@ tags: [excalidraw] "K7GLWHNjuftUPn3n0L5oF", "kzkxLMHRG6nFCxrtjOsYC" ], - "strokeSharpness": "sharp", + "frameId": null, + "roundness": null, "boundElements": [], "updated": 1647371390786, "link": null, @@ -19577,7 +19887,8 @@ tags: [excalidraw] "K7GLWHNjuftUPn3n0L5oF", "kzkxLMHRG6nFCxrtjOsYC" ], - "strokeSharpness": "sharp", + "frameId": null, + "roundness": null, "boundElements": [], "updated": 1647371390786, "link": null, @@ -19605,7 +19916,10 @@ tags: [excalidraw] "groupIds": [ "kzkxLMHRG6nFCxrtjOsYC" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390786, "link": null, @@ -19814,7 +20128,10 @@ tags: [excalidraw] "groupIds": [ "kzkxLMHRG6nFCxrtjOsYC" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390786, "link": null, @@ -20011,7 +20328,10 @@ tags: [excalidraw] "groupIds": [ "kzkxLMHRG6nFCxrtjOsYC" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390786, "link": null, @@ -20148,7 +20468,10 @@ tags: [excalidraw] "groupIds": [ "kzkxLMHRG6nFCxrtjOsYC" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390786, "link": null, @@ -20389,7 +20712,10 @@ tags: [excalidraw] "groupIds": [ "kzkxLMHRG6nFCxrtjOsYC" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -20566,7 +20892,10 @@ tags: [excalidraw] "groupIds": [ "kzkxLMHRG6nFCxrtjOsYC" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -20807,7 +21136,10 @@ tags: [excalidraw] "groupIds": [ "kzkxLMHRG6nFCxrtjOsYC" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -21068,7 +21400,10 @@ tags: [excalidraw] "groupIds": [ "kzkxLMHRG6nFCxrtjOsYC" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -21301,7 +21636,10 @@ tags: [excalidraw] "groupIds": [ "kzkxLMHRG6nFCxrtjOsYC" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -21430,7 +21768,10 @@ tags: [excalidraw] "groupIds": [ "kzkxLMHRG6nFCxrtjOsYC" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -21567,7 +21908,10 @@ tags: [excalidraw] "groupIds": [ "kzkxLMHRG6nFCxrtjOsYC" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -21732,7 +22076,10 @@ tags: [excalidraw] "groupIds": [ "kzkxLMHRG6nFCxrtjOsYC" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -21889,7 +22236,10 @@ tags: [excalidraw] "groupIds": [ "kzkxLMHRG6nFCxrtjOsYC" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -22022,7 +22372,10 @@ tags: [excalidraw] "groupIds": [ "kzkxLMHRG6nFCxrtjOsYC" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -22183,7 +22536,10 @@ tags: [excalidraw] "groupIds": [ "kzkxLMHRG6nFCxrtjOsYC" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -22420,7 +22776,10 @@ tags: [excalidraw] "groupIds": [ "kzkxLMHRG6nFCxrtjOsYC" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -22593,7 +22952,10 @@ tags: [excalidraw] "groupIds": [ "kzkxLMHRG6nFCxrtjOsYC" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -22822,7 +23184,10 @@ tags: [excalidraw] "groupIds": [ "kzkxLMHRG6nFCxrtjOsYC" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -23055,7 +23420,10 @@ tags: [excalidraw] "groupIds": [ "kzkxLMHRG6nFCxrtjOsYC" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -23260,7 +23628,10 @@ tags: [excalidraw] "groupIds": [ "kzkxLMHRG6nFCxrtjOsYC" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -23425,7 +23796,10 @@ tags: [excalidraw] "groupIds": [ "kzkxLMHRG6nFCxrtjOsYC" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -23614,7 +23988,10 @@ tags: [excalidraw] "groupIds": [ "kzkxLMHRG6nFCxrtjOsYC" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -23819,7 +24196,10 @@ tags: [excalidraw] "groupIds": [ "kzkxLMHRG6nFCxrtjOsYC" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -23992,7 +24372,10 @@ tags: [excalidraw] "groupIds": [ "kzkxLMHRG6nFCxrtjOsYC" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -24257,7 +24640,10 @@ tags: [excalidraw] "groupIds": [ "kzkxLMHRG6nFCxrtjOsYC" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -24419,7 +24805,8 @@ tags: [excalidraw] "eekwFNMiYTOBAC6fTYIMI", "qCKYi5gTFblTgyB8ixz4V" ], - "strokeSharpness": "sharp", + "frameId": null, + "roundness": null, "boundElements": [], "updated": 1647371390787, "link": null, @@ -24448,7 +24835,8 @@ tags: [excalidraw] "eekwFNMiYTOBAC6fTYIMI", "qCKYi5gTFblTgyB8ixz4V" ], - "strokeSharpness": "sharp", + "frameId": null, + "roundness": null, "boundElements": [], "updated": 1647371390787, "link": null, @@ -24476,7 +24864,10 @@ tags: [excalidraw] "groupIds": [ "qCKYi5gTFblTgyB8ixz4V" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -24685,7 +25076,10 @@ tags: [excalidraw] "groupIds": [ "qCKYi5gTFblTgyB8ixz4V" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -24882,7 +25276,10 @@ tags: [excalidraw] "groupIds": [ "qCKYi5gTFblTgyB8ixz4V" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -25019,7 +25416,10 @@ tags: [excalidraw] "groupIds": [ "qCKYi5gTFblTgyB8ixz4V" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -25260,7 +25660,10 @@ tags: [excalidraw] "groupIds": [ "qCKYi5gTFblTgyB8ixz4V" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -25437,7 +25840,10 @@ tags: [excalidraw] "groupIds": [ "qCKYi5gTFblTgyB8ixz4V" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -25678,7 +26084,10 @@ tags: [excalidraw] "groupIds": [ "qCKYi5gTFblTgyB8ixz4V" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -25939,7 +26348,10 @@ tags: [excalidraw] "groupIds": [ "qCKYi5gTFblTgyB8ixz4V" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -26172,7 +26584,10 @@ tags: [excalidraw] "groupIds": [ "qCKYi5gTFblTgyB8ixz4V" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -26301,7 +26716,10 @@ tags: [excalidraw] "groupIds": [ "qCKYi5gTFblTgyB8ixz4V" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -26438,7 +26856,10 @@ tags: [excalidraw] "groupIds": [ "qCKYi5gTFblTgyB8ixz4V" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -26603,7 +27024,10 @@ tags: [excalidraw] "groupIds": [ "qCKYi5gTFblTgyB8ixz4V" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -26760,7 +27184,10 @@ tags: [excalidraw] "groupIds": [ "qCKYi5gTFblTgyB8ixz4V" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -26893,7 +27320,10 @@ tags: [excalidraw] "groupIds": [ "qCKYi5gTFblTgyB8ixz4V" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -27054,7 +27484,10 @@ tags: [excalidraw] "groupIds": [ "qCKYi5gTFblTgyB8ixz4V" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -27291,7 +27724,10 @@ tags: [excalidraw] "groupIds": [ "qCKYi5gTFblTgyB8ixz4V" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -27464,7 +27900,10 @@ tags: [excalidraw] "groupIds": [ "qCKYi5gTFblTgyB8ixz4V" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390787, "link": null, @@ -27693,7 +28132,10 @@ tags: [excalidraw] "groupIds": [ "qCKYi5gTFblTgyB8ixz4V" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390788, "link": null, @@ -27926,7 +28368,10 @@ tags: [excalidraw] "groupIds": [ "qCKYi5gTFblTgyB8ixz4V" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390788, "link": null, @@ -28131,7 +28576,10 @@ tags: [excalidraw] "groupIds": [ "qCKYi5gTFblTgyB8ixz4V" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390788, "link": null, @@ -28296,7 +28744,10 @@ tags: [excalidraw] "groupIds": [ "qCKYi5gTFblTgyB8ixz4V" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390788, "link": null, @@ -28485,7 +28936,10 @@ tags: [excalidraw] "groupIds": [ "qCKYi5gTFblTgyB8ixz4V" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390788, "link": null, @@ -28690,7 +29144,10 @@ tags: [excalidraw] "groupIds": [ "qCKYi5gTFblTgyB8ixz4V" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390788, "link": null, @@ -28863,7 +29320,10 @@ tags: [excalidraw] "groupIds": [ "qCKYi5gTFblTgyB8ixz4V" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390788, "link": null, @@ -29128,7 +29588,10 @@ tags: [excalidraw] "groupIds": [ "qCKYi5gTFblTgyB8ixz4V" ], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390788, "link": null, @@ -29287,7 +29750,8 @@ tags: [excalidraw] "height": 642.6027410170612, "seed": 295135889, "groupIds": [], - "strokeSharpness": "sharp", + "frameId": null, + "roundness": null, "boundElements": [], "updated": 1647371390788, "link": null, @@ -29313,7 +29777,8 @@ tags: [excalidraw] "height": 652.3747796306575, "seed": 598204625, "groupIds": [], - "strokeSharpness": "sharp", + "frameId": null, + "roundness": null, "boundElements": [], "updated": 1672360035634, "link": null, @@ -29339,7 +29804,8 @@ tags: [excalidraw] "height": 30.973724365234375, "seed": 528521151, "groupIds": [], - "strokeSharpness": "sharp", + "frameId": null, + "roundness": null, "boundElements": [], "updated": 1647371390788, "link": null, @@ -29365,7 +29831,8 @@ tags: [excalidraw] "height": 25.46401977539062, "seed": 650917887, "groupIds": [], - "strokeSharpness": "sharp", + "frameId": null, + "roundness": null, "boundElements": [], "updated": 1647371390788, "link": null, @@ -29391,7 +29858,8 @@ tags: [excalidraw] "height": 30.973724365234375, "seed": 809798047, "groupIds": [], - "strokeSharpness": "sharp", + "frameId": null, + "roundness": null, "boundElements": [], "updated": 1647371390788, "link": null, @@ -29417,7 +29885,8 @@ tags: [excalidraw] "height": 27.492279052734375, "seed": 1226243505, "groupIds": [], - "strokeSharpness": "sharp", + "frameId": null, + "roundness": null, "boundElements": [], "updated": 1647371390788, "link": null, @@ -29443,7 +29912,10 @@ tags: [excalidraw] "height": 0.0001, "seed": 218713809, "groupIds": [], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390788, "link": null, @@ -29482,7 +29954,10 @@ tags: [excalidraw] "height": 0.0001, "seed": 1259590367, "groupIds": [], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390788, "link": null, @@ -29521,7 +29996,10 @@ tags: [excalidraw] "height": 0.7137451171875, "seed": 673223793, "groupIds": [], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390788, "link": null, @@ -29564,7 +30042,10 @@ tags: [excalidraw] "height": 0.333770751953125, "seed": 1150282591, "groupIds": [], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390788, "link": null, @@ -29607,7 +30088,10 @@ tags: [excalidraw] "height": 0, "seed": 664841681, "groupIds": [], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390788, "link": null, @@ -29650,7 +30134,10 @@ tags: [excalidraw] "height": 0.0001, "seed": 162918399, "groupIds": [], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390788, "link": null, @@ -29689,7 +30176,10 @@ tags: [excalidraw] "height": 0.33380126953125, "seed": 491175249, "groupIds": [], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390788, "link": null, @@ -29732,7 +30222,10 @@ tags: [excalidraw] "height": 0.0001, "seed": 422213759, "groupIds": [], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390788, "link": null, @@ -29771,7 +30264,10 @@ tags: [excalidraw] "height": 0.35430908203125, "seed": 1034489041, "groupIds": [], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390788, "link": null, @@ -29814,7 +30310,10 @@ tags: [excalidraw] "height": 0.0001, "seed": 802603263, "groupIds": [], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390788, "link": null, @@ -29853,7 +30352,10 @@ tags: [excalidraw] "height": 0.323486328125, "seed": 682073169, "groupIds": [], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390788, "link": null, @@ -29896,7 +30398,10 @@ tags: [excalidraw] "height": 70.71783447265625, "seed": 2099579423, "groupIds": [], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390788, "link": null, @@ -30919,7 +31424,10 @@ tags: [excalidraw] "height": 30.758056640625, "seed": 240768447, "groupIds": [], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390788, "link": null, @@ -31594,7 +32102,10 @@ tags: [excalidraw] "height": 65.69076538085938, "seed": 712716255, "groupIds": [], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390788, "link": null, @@ -32473,7 +32984,10 @@ tags: [excalidraw] "height": 27.42034912109375, "seed": 341075025, "groupIds": [], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390788, "link": null, @@ -33132,7 +33646,10 @@ tags: [excalidraw] "height": 54.2193603515625, "seed": 743788657, "groupIds": [], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390788, "link": null, @@ -33711,7 +34228,10 @@ tags: [excalidraw] "height": 26.4395751953125, "seed": 874439121, "groupIds": [], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390788, "link": null, @@ -34086,7 +34606,10 @@ tags: [excalidraw] "height": 28.83245849609375, "seed": 1091914833, "groupIds": [], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390788, "link": null, @@ -34641,7 +35164,10 @@ tags: [excalidraw] "height": 30.439697265625, "seed": 2118525969, "groupIds": [], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390788, "link": null, @@ -35240,7 +35766,10 @@ tags: [excalidraw] "height": 27.476837158203125, "seed": 559783519, "groupIds": [], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390789, "link": null, @@ -35643,7 +36172,10 @@ tags: [excalidraw] "height": 0.0001, "seed": 995763263, "groupIds": [], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390789, "link": null, @@ -35682,7 +36214,10 @@ tags: [excalidraw] "height": 0.0001, "seed": 1128461585, "groupIds": [], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390789, "link": null, @@ -35721,7 +36256,10 @@ tags: [excalidraw] "height": 0.0001, "seed": 1639774367, "groupIds": [], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390789, "link": null, @@ -35760,7 +36298,10 @@ tags: [excalidraw] "height": 0.333740234375, "seed": 1961591103, "groupIds": [], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390789, "link": null, @@ -35803,7 +36344,10 @@ tags: [excalidraw] "height": 0, "seed": 1472355825, "groupIds": [], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390789, "link": null, @@ -35846,7 +36390,10 @@ tags: [excalidraw] "height": 0.0001, "seed": 213375455, "groupIds": [], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390789, "link": null, @@ -35885,7 +36432,10 @@ tags: [excalidraw] "height": 0.0001, "seed": 1501519217, "groupIds": [], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371390789, "link": null, @@ -35924,7 +36474,10 @@ tags: [excalidraw] "height": 10.28009033203125, "seed": 1982406737, "groupIds": [], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371393429, "link": null, @@ -36163,7 +36716,10 @@ tags: [excalidraw] "height": 0.318359375, "seed": 1878364913, "groupIds": [], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371394976, "link": null, @@ -36206,7 +36762,10 @@ tags: [excalidraw] "height": 5.31976318359375, "seed": 160675039, "groupIds": [], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371397940, "link": null, @@ -36345,7 +36904,10 @@ tags: [excalidraw] "height": 12.934814453125, "seed": 2062273233, "groupIds": [], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371401269, "link": null, @@ -36660,7 +37222,10 @@ tags: [excalidraw] "height": 8.61126708984375, "seed": 168875601, "groupIds": [], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371405292, "link": null, @@ -36863,7 +37428,10 @@ tags: [excalidraw] "height": 0.0001, "seed": 939661823, "groupIds": [], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371408389, "link": null, @@ -36902,7 +37470,10 @@ tags: [excalidraw] "height": 3.5584716796875, "seed": 1489728337, "groupIds": [], - "strokeSharpness": "round", + "frameId": null, + "roundness": { + "type": 2 + }, "boundElements": [], "updated": 1647371411788, "link": null, @@ -36955,7 +37526,7 @@ tags: [excalidraw] } ], "appState": { - "theme": "dark", + "theme": "light", "viewBackgroundColor": "#ffffff", "currentItemStrokeColor": "#d9480f", "currentItemBackgroundColor": "#fd7e14", @@ -36967,12 +37538,28 @@ tags: [excalidraw] "currentItemFontFamily": 1, "currentItemFontSize": 20, "currentItemTextAlign": "left", - "currentItemStrokeSharpness": "sharp", "currentItemStartArrowhead": null, "currentItemEndArrowhead": "arrow", - "currentItemLinearStrokeSharpness": "round", + "scrollX": 242.2803859746437, + "scrollY": 431.5953127618247, + "zoom": { + "value": 0.8935778015230595 + }, + "currentItemRoundness": "round", "gridSize": null, - "colorPalette": {} + "gridColor": { + "Bold": "#C9C9C9FF", + "Regular": "#EDEDEDFF" + }, + "colorPalette": {}, + "currentStrokeOptions": null, + "previousGridSize": null, + "frameRendering": { + "enabled": true, + "clip": true, + "name": true, + "outline": true + } }, "files": {} } diff --git a/Excalidraw/représentation d'un programme comme graphe.excalidraw.md b/Excalidraw/représentation d'un programme comme graphe.excalidraw.md index 028698b8..fbb2f65f 100644 --- a/Excalidraw/représentation d'un programme comme graphe.excalidraw.md +++ b/Excalidraw/représentation d'un programme comme graphe.excalidraw.md @@ -28,29 +28,30 @@ e ^EnXhanWu { "type": "excalidraw", "version": 2, - "source": "https://excalidraw.com", + "source": "https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/2.0.16", "elements": [ { - "id": "eKbjeXabsaClYS-pcVTfy", "type": "ellipse", - "x": -42.21598434448242, - "y": -276.79640197753906, - "width": 53, - "height": 53, - "angle": 0, - "strokeColor": "#000000", - "backgroundColor": "transparent", + "version": 63, + "versionNonce": 205951206, + "isDeleted": false, + "id": "eKbjeXabsaClYS-pcVTfy", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", + "angle": 0, + "x": -42.21598434448242, + "y": -276.79640197753906, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 53, + "height": 53, "seed": 88927206, - "version": 63, - "versionNonce": 205951206, - "isDeleted": false, + "groupIds": [], + "frameId": null, + "roundness": null, "boundElements": [ { "type": "text", @@ -63,42 +64,47 @@ e ^EnXhanWu ], "updated": 1666335014263, "link": null, - "locked": false + "locked": false, + "customData": { + "legacyTextWrap": true + } }, { - "id": "b7o7cgYW", "type": "text", - "x": -25.215984344482422, - "y": -266.79640197753906, - "width": 19, - "height": 33, - "angle": 0, - "strokeColor": "#000000", - "backgroundColor": "transparent", + "version": 40, + "versionNonce": 731610751, + "isDeleted": false, + "id": "b7o7cgYW", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", + "angle": 0, + "x": -23.919109344482422, + "y": -267.0964019775391, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 16.40625, + "height": 33.6, "seed": 1807090022, - "version": 38, - "versionNonce": 959700922, - "isDeleted": false, - "boundElements": null, - "updated": 1666335014263, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1708994770733, "link": null, "locked": false, - "text": "a", - "rawText": "a", "fontSize": 28, "fontFamily": 3, + "text": "a", + "rawText": "a", "textAlign": "center", "verticalAlign": "middle", - "baseline": 27, "containerId": "eKbjeXabsaClYS-pcVTfy", - "originalText": "a" + "originalText": "a", + "lineHeight": 1.2, + "baseline": 26 }, { "type": "ellipse", @@ -120,7 +126,8 @@ e ^EnXhanWu "height": 53, "seed": 306071526, "groupIds": [], - "strokeSharpness": "sharp", + "frameId": null, + "roundness": null, "boundElements": [ { "id": "ReJZJLWp", @@ -149,12 +156,15 @@ e ^EnXhanWu ], "updated": 1666335530172, "link": null, - "locked": false + "locked": false, + "customData": { + "legacyTextWrap": true + } }, { "type": "text", - "version": 99, - "versionNonce": 768858234, + "version": 101, + "versionNonce": 1248410559, "isDeleted": false, "id": "ReJZJLWp", "fillStyle": "hachure", @@ -163,28 +173,30 @@ e ^EnXhanWu "roughness": 1, "opacity": 100, "angle": 0, - "x": -25.215984344482422, - "y": -124.52058410644531, + "x": -23.919109344482422, + "y": -124.82058410644531, "strokeColor": "#000000", "backgroundColor": "transparent", - "width": 19, - "height": 33, + "width": 16.40625, + "height": 33.6, "seed": 1838616954, "groupIds": [], - "strokeSharpness": "sharp", + "frameId": null, + "roundness": null, "boundElements": [], - "updated": 1666335014264, + "updated": 1708994770733, "link": null, "locked": false, "fontSize": 28, "fontFamily": 3, "text": "b", "rawText": "b", - "baseline": 27, "textAlign": "center", "verticalAlign": "middle", "containerId": "tQtPXvgzrG3aLhwg3WZkx", - "originalText": "b" + "originalText": "b", + "lineHeight": 1.2, + "baseline": 26 }, { "type": "ellipse", @@ -206,7 +218,8 @@ e ^EnXhanWu "height": 53, "seed": 545815290, "groupIds": [], - "strokeSharpness": "sharp", + "frameId": null, + "roundness": null, "boundElements": [ { "id": "WfI4nfVv", @@ -223,12 +236,15 @@ e ^EnXhanWu ], "updated": 1666334869357, "link": null, - "locked": false + "locked": false, + "customData": { + "legacyTextWrap": true + } }, { "type": "text", - "version": 277, - "versionNonce": 928580134, + "version": 279, + "versionNonce": 420421759, "isDeleted": false, "id": "WfI4nfVv", "fillStyle": "hachure", @@ -237,28 +253,30 @@ e ^EnXhanWu "roughness": 1, "opacity": 100, "angle": 0, - "x": -203.48466110229492, - "y": 43.21333312988281, + "x": -202.18778610229492, + "y": 42.913333129882815, "strokeColor": "#000000", "backgroundColor": "transparent", - "width": 19, - "height": 33, + "width": 16.40625, + "height": 33.6, "seed": 1720469926, "groupIds": [], - "strokeSharpness": "sharp", + "frameId": null, + "roundness": null, "boundElements": [], - "updated": 1666334972678, + "updated": 1708994770734, "link": null, "locked": false, "fontSize": 28, "fontFamily": 3, "text": "c", "rawText": "c", - "baseline": 27, "textAlign": "center", "verticalAlign": "middle", "containerId": "jNgaM3FXKOlC1QWwGs8hp", - "originalText": "c" + "originalText": "c", + "lineHeight": 1.2, + "baseline": 26 }, { "type": "ellipse", @@ -280,7 +298,8 @@ e ^EnXhanWu "height": 53, "seed": 244750374, "groupIds": [], - "strokeSharpness": "sharp", + "frameId": null, + "roundness": null, "boundElements": [ { "id": "bZBj7qvG", @@ -301,12 +320,15 @@ e ^EnXhanWu ], "updated": 1666335571896, "link": null, - "locked": false + "locked": false, + "customData": { + "legacyTextWrap": true + } }, { "type": "text", - "version": 405, - "versionNonce": 628537658, + "version": 407, + "versionNonce": 1280275807, "isDeleted": false, "id": "bZBj7qvG", "fillStyle": "hachure", @@ -315,54 +337,72 @@ e ^EnXhanWu "roughness": 1, "opacity": 100, "angle": 0, - "x": -25.215984344482422, - "y": 176.97862243652344, + "x": -23.919109344482422, + "y": 176.67862243652343, "strokeColor": "#000000", "backgroundColor": "transparent", - "width": 19, - "height": 33, + "width": 16.40625, + "height": 33.6, "seed": 1037755706, "groupIds": [], - "strokeSharpness": "sharp", + "frameId": null, + "roundness": null, "boundElements": [], - "updated": 1666335014264, + "updated": 1708994770734, "link": null, "locked": false, "fontSize": 28, "fontFamily": 3, "text": "d", "rawText": "d", - "baseline": 27, "textAlign": "center", "verticalAlign": "middle", "containerId": "0YD2GfcikFlAlP5u1eu5w", - "originalText": "d" + "originalText": "d", + "lineHeight": 1.2, + "baseline": 26 }, { - "id": "WdRxFms9j10zu_EYfQcRY", "type": "arrow", - "x": -41.425273609938984, - "y": -97.59579562601024, - "width": 133.16799425052602, - "height": 137.1852659005614, - "angle": 0, - "strokeColor": "#000000", - "backgroundColor": "transparent", + "version": 363, + "versionNonce": 1060018175, + "isDeleted": false, + "id": "WdRxFms9j10zu_EYfQcRY", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, - "groupIds": [], - "strokeSharpness": "round", + "angle": 0, + "x": -41.425273609938984, + "y": -97.59579562601024, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 133.16799425052602, + "height": 137.1852659005614, "seed": 565296934, - "version": 359, - "versionNonce": 2054950886, - "isDeleted": false, - "boundElements": null, - "updated": 1666335022710, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1708994770733, "link": null, "locked": false, + "startBinding": { + "elementId": "tQtPXvgzrG3aLhwg3WZkx", + "gap": 1.2424542785372843, + "focus": 0.42212094866578365 + }, + "endBinding": { + "elementId": "jNgaM3FXKOlC1QWwGs8hp", + "gap": 1.4463054459705695, + "focus": -0.003876622377253745 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "triangle", "points": [ [ 0, @@ -372,130 +412,138 @@ e ^EnXhanWu -133.16799425052602, 137.1852659005614 ] - ], - "lastCommittedPoint": null, - "startBinding": { - "elementId": "tQtPXvgzrG3aLhwg3WZkx", - "focus": 0.42212094866578365, - "gap": 1.2424542785372843 - }, - "endBinding": { - "elementId": "jNgaM3FXKOlC1QWwGs8hp", - "focus": -0.003876622377253745, - "gap": 1.4463054459705695 - }, - "startArrowhead": null, - "endArrowhead": "triangle" + ] }, { - "id": "YRLVNDCN", "type": "text", + "version": 169, + "versionNonce": 51725201, + "isDeleted": false, + "id": "YRLVNDCN", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 5.497787143782138, "x": -183.36814498901367, "y": -69.58934020996094, - "width": 133, - "height": 33, - "angle": 5.497787143782138, "strokeColor": "#000000", "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", + "width": 131.25, + "height": 33.6, "seed": 2004766182, - "version": 168, - "versionNonce": 1027306618, - "isDeleted": false, - "boundElements": null, - "updated": 1666335007348, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1709036801626, "link": null, "locked": false, - "text": "a[i] > 0", - "rawText": "a[i] > 0", "fontSize": 28, "fontFamily": 3, + "text": "a[i] > 0", + "rawText": "a[i] > 0", "textAlign": "left", "verticalAlign": "top", - "baseline": 27, "containerId": null, - "originalText": "a[i] > 0" + "originalText": "a[i] > 0", + "lineHeight": 1.2, + "baseline": 27 }, { - "id": "CdwHwrRla9IUuhd3sKH1g", "type": "arrow", - "x": -15.742431795279138, - "y": -74.08243299637249, - "width": 1.7763568394002505e-14, - "height": 235.13972974930218, - "angle": 0, - "strokeColor": "#000000", - "backgroundColor": "transparent", + "version": 638, + "versionNonce": 330452159, + "isDeleted": false, + "id": "CdwHwrRla9IUuhd3sKH1g", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, - "groupIds": [], - "strokeSharpness": "round", + "angle": 0, + "x": -13.898037919999435, + "y": -74.04528382023122, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 4.161891267875131, + "height": 235.05599712855653, "seed": 1977770790, - "version": 634, - "versionNonce": 260014586, - "isDeleted": false, - "boundElements": null, - "updated": 1666335014264, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1708994770734, "link": null, "locked": false, + "startBinding": { + "elementId": "tQtPXvgzrG3aLhwg3WZkx", + "gap": 7.523902755867244, + "focus": -0.09109795033232303 + }, + "endBinding": { + "elementId": "0YD2GfcikFlAlP5u1eu5w", + "gap": 6.052406986055534, + "focus": -0.11012689857687595 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "triangle", "points": [ [ 0, 0 ], [ - -1.7763568394002505e-14, - 235.13972974930218 + -4.161891267875131, + 235.05599712855653 ] - ], - "lastCommittedPoint": null, - "startBinding": { - "elementId": "tQtPXvgzrG3aLhwg3WZkx", - "focus": -0.09109795033232303, - "gap": 7.523902755867244 - }, - "endBinding": { - "elementId": "0YD2GfcikFlAlP5u1eu5w", - "focus": -0.11012689857687595, - "gap": 6.052406986055534 - }, - "startArrowhead": null, - "endArrowhead": "triangle" + ] }, { - "id": "-QiYT7sJj_oxJinE5KIBZ", "type": "arrow", - "x": -172.1018034492469, - "y": 79.72408761714598, - "width": 127.94475212323721, - "height": 102.56045852808984, - "angle": 0, - "strokeColor": "#000000", - "backgroundColor": "transparent", + "version": 731, + "versionNonce": 1680304383, + "isDeleted": false, + "id": "-QiYT7sJj_oxJinE5KIBZ", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, - "groupIds": [], - "strokeSharpness": "round", + "angle": 0, + "x": -172.1018034492469, + "y": 79.72408761714598, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 127.94475212323721, + "height": 102.56045852808984, "seed": 1737881190, - "version": 727, - "versionNonce": 152815674, - "isDeleted": false, - "boundElements": null, - "updated": 1666335028039, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1708994770734, "link": null, "locked": false, + "startBinding": { + "elementId": "jNgaM3FXKOlC1QWwGs8hp", + "gap": 3.152820341631685, + "focus": 0.07271033751137523 + }, + "endBinding": { + "elementId": "0YD2GfcikFlAlP5u1eu5w", + "gap": 4.064712252250761, + "focus": -0.3416733557086538 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "triangle", "points": [ [ 0, @@ -505,55 +553,44 @@ e ^EnXhanWu 127.94475212323721, 102.56045852808984 ] - ], - "lastCommittedPoint": null, - "startBinding": { - "elementId": "jNgaM3FXKOlC1QWwGs8hp", - "focus": 0.07271033751137523, - "gap": 3.152820341631685 - }, - "endBinding": { - "elementId": "0YD2GfcikFlAlP5u1eu5w", - "focus": -0.3416733557086538, - "gap": 4.064712252250761 - }, - "startArrowhead": null, - "endArrowhead": "triangle" + ] }, { - "id": "N58kuxso", "type": "text", - "x": -94.96012496948244, - "y": 12.941116333007812, - "width": 199, - "height": 33, - "angle": 1.5707963267948957, - "strokeColor": "#000000", - "backgroundColor": "transparent", + "version": 281, + "versionNonce": 1451178495, + "isDeleted": false, + "id": "N58kuxso", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, - "groupIds": [], - "strokeSharpness": "sharp", + "angle": 1.5707963267948957, + "x": -94.96012496948244, + "y": 12.941116333007812, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 196.875, + "height": 33.6, "seed": 1241543418, - "version": 280, - "versionNonce": 1162015354, - "isDeleted": false, - "boundElements": null, - "updated": 1666335522765, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1709036801628, "link": null, "locked": false, - "text": "i < a+length", - "rawText": "i < a+length", "fontSize": 28, "fontFamily": 3, + "text": "i < a+length", + "rawText": "i < a+length", "textAlign": "left", "verticalAlign": "top", - "baseline": 27, "containerId": null, - "originalText": "i < a+length" + "originalText": "i < a+length", + "lineHeight": 1.2, + "baseline": 27 }, { "type": "ellipse", @@ -575,7 +612,8 @@ e ^EnXhanWu "height": 53, "seed": 549649254, "groupIds": [], - "strokeSharpness": "sharp", + "frameId": null, + "roundness": null, "boundElements": [ { "id": "EnXhanWu", @@ -589,10 +627,6 @@ e ^EnXhanWu "id": "-QiYT7sJj_oxJinE5KIBZ", "type": "arrow" }, - { - "id": "9qTsqX_ALkOV0G0Cy4CjO", - "type": "arrow" - }, { "id": "8pK_U8z8J9gOBFNa-XBh1", "type": "arrow" @@ -600,12 +634,15 @@ e ^EnXhanWu ], "updated": 1666335571896, "link": null, - "locked": false + "locked": false, + "customData": { + "legacyTextWrap": true + } }, { "type": "text", - "version": 435, - "versionNonce": 1269641894, + "version": 437, + "versionNonce": 639262143, "isDeleted": false, "id": "EnXhanWu", "fillStyle": "hachure", @@ -614,103 +651,124 @@ e ^EnXhanWu "roughness": 1, "opacity": 100, "angle": 0, - "x": -25.215984344482422, - "y": 364.0460662841797, + "x": -23.919109344482422, + "y": 363.7460662841797, "strokeColor": "#000000", "backgroundColor": "transparent", - "width": 19, - "height": 33, + "width": 16.40625, + "height": 33.6, "seed": 2106152442, "groupIds": [], - "strokeSharpness": "sharp", + "frameId": null, + "roundness": null, "boundElements": [], - "updated": 1666335014264, + "updated": 1708994770734, "link": null, "locked": false, "fontSize": 28, "fontFamily": 3, "text": "e", "rawText": "e", - "baseline": 26, "textAlign": "center", "verticalAlign": "middle", "containerId": "qDTNXhct6bCH4pebUc8lR", - "originalText": "e" + "originalText": "e", + "lineHeight": 1.2, + "baseline": 26 }, { - "id": "hz7SK19Nce6L2jekqGKKP", "type": "arrow", - "x": -15.834157103588804, - "y": -221.6654052734375, - "width": 0, - "height": 83.06983947753906, - "angle": 0, - "strokeColor": "#000000", - "backgroundColor": "transparent", + "version": 37, + "versionNonce": 333468479, + "isDeleted": false, + "id": "hz7SK19Nce6L2jekqGKKP", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, - "groupIds": [], - "strokeSharpness": "round", + "angle": 0, + "x": -16.85846100500257, + "y": -221.6050118381747, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 3.1495117899662173, + "height": 82.91115402328467, "seed": 1956489702, - "version": 33, - "versionNonce": 242142074, - "isDeleted": false, - "boundElements": null, - "updated": 1666335014264, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1708994770733, "link": null, "locked": false, + "startBinding": { + "elementId": "eKbjeXabsaClYS-pcVTfy", + "gap": 2.21412755159119, + "focus": 0.08239170290389151 + }, + "endBinding": { + "elementId": "tQtPXvgzrG3aLhwg3WZkx", + "gap": 4.238866439802191, + "focus": 0.11961969339622641 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "triangle", "points": [ [ 0, 0 ], [ - 0, - 83.06983947753906 + 3.1495117899662173, + 82.91115402328467 ] - ], - "lastCommittedPoint": null, - "startBinding": { - "elementId": "eKbjeXabsaClYS-pcVTfy", - "focus": 0.08239170290389151, - "gap": 2.21412755159119 - }, - "endBinding": { - "elementId": "tQtPXvgzrG3aLhwg3WZkx", - "focus": 0.11961969339622641, - "gap": 4.238866439802191 - }, - "startArrowhead": null, - "endArrowhead": "triangle" + ] }, { - "id": "8pK_U8z8J9gOBFNa-XBh1", "type": "arrow", - "x": 14.004657745361328, - "y": -121.17829895019531, - "width": 141.24395751953125, - "height": 505.47943115234375, - "angle": 0, - "strokeColor": "#000000", - "backgroundColor": "transparent", + "version": 799, + "versionNonce": 1721201023, + "isDeleted": false, + "id": "8pK_U8z8J9gOBFNa-XBh1", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, - "groupIds": [], - "strokeSharpness": "round", + "angle": 0, + "x": 14.004657745361328, + "y": -121.17829895019534, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 141.24395751953125, + "height": 505.47943115234375, "seed": 598010342, - "version": 797, - "versionNonce": 157104826, - "isDeleted": false, - "boundElements": null, - "updated": 1666335593020, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1708994770734, "link": null, "locked": false, + "startBinding": { + "elementId": "tQtPXvgzrG3aLhwg3WZkx", + "gap": 6.00295411408063, + "focus": -0.8460552286299754 + }, + "endBinding": { + "elementId": "qDTNXhct6bCH4pebUc8lR", + "gap": 3.771099411906313, + "focus": 0.5421196865258499 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "triangle", "points": [ [ 0, @@ -718,7 +776,7 @@ e ^EnXhanWu ], [ 141.24395751953125, - 50.66864013671875 + 50.66864013671878 ], [ 134.65411376953125, @@ -728,49 +786,49 @@ e ^EnXhanWu 0.316650390625, 505.47943115234375 ] - ], - "lastCommittedPoint": [ - 1.39501953125, - 480.37835693359375 - ], - "startBinding": { - "elementId": "tQtPXvgzrG3aLhwg3WZkx", - "focus": -0.8460552286299754, - "gap": 6.00295411408063 - }, - "endBinding": { - "elementId": "qDTNXhct6bCH4pebUc8lR", - "focus": 0.5421196865258499, - "gap": 3.771099411906313 - }, - "startArrowhead": null, - "endArrowhead": "triangle" + ] }, { - "id": "c7mPpk7zW39Iwy_STZpe2", "type": "arrow", - "x": 18.844318389892578, - "y": 193.7322235107422, - "width": 89.00054931640625, - "height": 296.1724548339844, - "angle": 0, - "strokeColor": "#000000", - "backgroundColor": "transparent", + "version": 405, + "versionNonce": 309326111, + "isDeleted": false, + "id": "c7mPpk7zW39Iwy_STZpe2", "fillStyle": "hachure", "strokeWidth": 1, "strokeStyle": "solid", "roughness": 1, "opacity": 100, - "groupIds": [], - "strokeSharpness": "round", + "angle": 0, + "x": 18.844318389892578, + "y": 193.7322235107422, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 89.00054931640625, + "height": 296.1724548339844, "seed": 1945277242, - "version": 403, - "versionNonce": 311565414, - "isDeleted": false, - "boundElements": null, - "updated": 1666335541121, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1708994770734, "link": null, "locked": false, + "startBinding": { + "elementId": "0YD2GfcikFlAlP5u1eu5w", + "gap": 8.061233175286048, + "focus": 0.4094338637529142 + }, + "endBinding": { + "elementId": "tQtPXvgzrG3aLhwg3WZkx", + "gap": 7.262336785780683, + "focus": -0.15037945201909775 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "triangle", "points": [ [ 0, @@ -788,184 +846,7 @@ e ^EnXhanWu -1.2623291015625, -296.1724548339844 ] - ], - "lastCommittedPoint": [ - -1.2623291015625, - -296.1724548339844 - ], - "startBinding": { - "elementId": "0YD2GfcikFlAlP5u1eu5w", - "focus": 0.4094338637529142, - "gap": 8.061233175286048 - }, - "endBinding": { - "elementId": "tQtPXvgzrG3aLhwg3WZkx", - "focus": -0.15037945201909775, - "gap": 7.262336785780683 - }, - "startArrowhead": null, - "endArrowhead": "triangle" - }, - { - "id": "9qTsqX_ALkOV0G0Cy4CjO", - "type": "arrow", - "x": -7.941997528076179, - "y": 223.6377410888672, - "width": 81.09716796875, - "height": 369.19500732421875, - "angle": 0, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "round", - "seed": 2057839462, - "version": 1300, - "versionNonce": 291647226, - "isDeleted": true, - "boundElements": null, - "updated": 1666335477314, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 22.20416259765625, - 37.3135986328125 - ], - [ - 77.67746496240775, - -3.855039420911993 - ], - [ - 81.09716796875, - -292.329833984375 - ], - [ - 17.655456542968757, - -331.88140869140625 - ] - ], - "lastCommittedPoint": [ - -6.5341796875, - -305.47088623046875 - ], - "startBinding": { - "elementId": "0YD2GfcikFlAlP5u1eu5w", - "focus": 0.3266797497590149, - "gap": 4.669783170025614 - }, - "endBinding": { - "elementId": "tQtPXvgzrG3aLhwg3WZkx", - "focus": -0.6232443608297156, - "gap": 4.361646134122804 - }, - "startArrowhead": null, - "endArrowhead": "triangle" - }, - { - "id": "H_ZYBQ3Oq0pb6J6T-Kzev", - "type": "arrow", - "x": -15.68537759685423, - "y": 225.2606658935547, - "width": 0, - "height": 126.9296875, - "angle": 0, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "round", - "seed": 5612858, - "version": 135, - "versionNonce": 191920230, - "isDeleted": true, - "boundElements": null, - "updated": 1666335571896, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 126.9296875 - ] - ], - "lastCommittedPoint": null, - "startBinding": { - "elementId": "0YD2GfcikFlAlP5u1eu5w", - "focus": -0.0011549716086109829, - "gap": 5.282058194484872 - }, - "endBinding": { - "elementId": "qDTNXhct6bCH4pebUc8lR", - "focus": 0.0011549716086109829, - "gap": 1.855729408861226 - }, - "startArrowhead": null, - "endArrowhead": "triangle" - }, - { - "id": "xRW8laRwW3MDZ3OVbDNrl", - "type": "arrow", - "x": 19.229389190673828, - "y": -93.40281677246094, - "width": 117.3795166015625, - "height": 227.01815795898438, - "angle": 0, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "strokeSharpness": "round", - "seed": 587646950, - "version": 78, - "versionNonce": 1036365478, - "isDeleted": true, - "boundElements": null, - "updated": 1666335484915, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 117.3795166015625, - 227.01815795898438 - ] - ], - "lastCommittedPoint": [ - 117.3795166015625, - 227.01815795898438 - ], - "startBinding": { - "elementId": "tQtPXvgzrG3aLhwg3WZkx", - "focus": -0.9180289367036432, - "gap": 11.379522876378733 - }, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": "triangle" + ] } ], "appState": { @@ -981,12 +862,28 @@ e ^EnXhanWu "currentItemFontFamily": 3, "currentItemFontSize": 28, "currentItemTextAlign": "left", - "currentItemStrokeSharpness": "sharp", "currentItemStartArrowhead": null, "currentItemEndArrowhead": "triangle", - "currentItemLinearStrokeSharpness": "round", + "scrollX": 464.4045907996058, + "scrollY": 300.85896414297594, + "zoom": { + "value": 1.35 + }, + "currentItemRoundness": "round", "gridSize": null, - "colorPalette": {} + "gridColor": { + "Bold": "#C9C9C9FF", + "Regular": "#EDEDEDFF" + }, + "colorPalette": {}, + "currentStrokeOptions": null, + "previousGridSize": null, + "frameRendering": { + "enabled": true, + "clip": true, + "name": true, + "outline": true + } }, "files": {} } diff --git a/Excalidraw/équations d'une ellipse 2024-02-14 11.07.42.excalidraw.md b/Excalidraw/équations d'une ellipse 2024-02-14 11.07.42.excalidraw.md new file mode 100644 index 00000000..4e3b54c7 --- /dev/null +++ b/Excalidraw/équations d'une ellipse 2024-02-14 11.07.42.excalidraw.md @@ -0,0 +1,682 @@ +--- + +excalidraw-plugin: parsed +tags: [excalidraw] + +--- +==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== + + +# Text Elements + +# Embedded files +c4d6f5d400851a47d50821ebdae63bda6a962ba5: $$\Large\alpha$$ +af3ece94ee6e83e20e497fbbb02dbac56f1e1eca: $$\Large\beta$$ +44bb49f8bffd31f1eea76ab2b830d3db1e3232ca: $$\Large a$$ +f036546090c49ec9202f2a5a85f4cc8584163841: $$\Large a$$ +e002585c42c99c5cb74ac919241c7ed2c661d019: $$\Large b$$ +f69c9040deb85b69c77d00826549fa3888d32bc5: $$\Large b$$ + +%% +# Drawing +```json +{ + "type": "excalidraw", + "version": 2, + "source": "https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/2.0.16", + "elements": [ + { + "id": "MHBN4PmD6Szf3hzLmcN78", + "type": "arrow", + "x": 203.80302072226561, + "y": 357.70085841049394, + "width": 0, + "height": 801.7216435185187, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "seed": 1456927737, + "version": 158, + "versionNonce": 345300023, + "isDeleted": false, + "boundElements": null, + "updated": 1707905382993, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + -801.7216435185187 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": "arrow" + }, + { + "type": "arrow", + "version": 484, + "versionNonce": 1010449751, + "isDeleted": false, + "id": "-smpXcrDvbeA9faMECgeS", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": -260.44996208146154, + "y": -43.14892517504891, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 928.6737275135604, + "height": 0, + "seed": 1585985687, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1707905382993, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 928.6737275135604, + 0 + ] + ] + }, + { + "id": "XCbafbTL5fULFozZUo17V", + "type": "ellipse", + "x": 233.90785998008073, + "y": -298.4912712191359, + "width": 382.7980324074074, + "height": 191.3146219135803, + "angle": 0, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "seed": 1764627351, + "version": 152, + "versionNonce": 520695063, + "isDeleted": false, + "boundElements": [ + { + "id": "9mtdkfB1rHEDMuVRcjPeI", + "type": "arrow" + }, + { + "id": "YAGdh1dBFCgmUPrY7qa_i", + "type": "arrow" + }, + { + "id": "Pg9K_5noQmf2wWWdl9AIJ", + "type": "arrow" + }, + { + "id": "qpoqD4oV6UdSaqmoqBABp", + "type": "arrow" + } + ], + "updated": 1707905602208, + "link": null, + "locked": false + }, + { + "type": "image", + "version": 153, + "versionNonce": 277059159, + "isDeleted": false, + "id": "gnbAqdfQ", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 417.6838425240675, + "y": -19.831606361485342, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 15, + "height": 11, + "seed": 31563, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1707905500086, + "link": null, + "locked": false, + "status": "pending", + "fileId": "c4d6f5d400851a47d50821ebdae63bda6a962ba5", + "scale": [ + 1, + 1 + ] + }, + { + "type": "image", + "version": 139, + "versionNonce": 1550223351, + "isDeleted": false, + "id": "y2crbcH5", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 167.61273822487755, + "y": -210.43310309571595, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 20, + "height": 21, + "seed": 78257, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1707905504770, + "link": null, + "locked": false, + "status": "pending", + "fileId": "af3ece94ee6e83e20e497fbbb02dbac56f1e1eca", + "scale": [ + 1, + 1 + ] + }, + { + "id": "w23LpJgqOukyHASRViWSN", + "type": "line", + "x": 425.0938760797228, + "y": -30.195638830138705, + "width": 0, + "height": 267.4303742562645, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "seed": 1789750391, + "version": 109, + "versionNonce": 439471897, + "isDeleted": false, + "boundElements": null, + "updated": 1707905551738, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 0, + -267.4303742562645 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "FpOVfIonNmpI1kO_7wW_o", + "type": "line", + "x": 196.5867757953032, + "y": -202.1107182403615, + "width": 421.176867069442, + "height": 0, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "seed": 899858135, + "version": 97, + "versionNonce": 1094353913, + "isDeleted": false, + "boundElements": null, + "updated": 1707905551738, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 421.176867069442, + 0 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "type": "image", + "version": 148, + "versionNonce": 1315587671, + "isDeleted": false, + "id": "4RuOQ0Av", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 513.3878489493101, + "y": -193.48413612574856, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 20, + "height": 11, + "seed": 95746, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1707905529236, + "link": null, + "locked": false, + "status": "pending", + "fileId": "44bb49f8bffd31f1eea76ab2b830d3db1e3232ca", + "scale": [ + 1, + 1 + ] + }, + { + "type": "image", + "version": 230, + "versionNonce": 551778263, + "isDeleted": false, + "id": "hY9-ywe3cvYxUMMeBL-Xv", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 325.3277445298977, + "y": -193.6912470992286, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 20, + "height": 11, + "seed": 884480087, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1707905527475, + "link": null, + "locked": false, + "status": "pending", + "fileId": "f036546090c49ec9202f2a5a85f4cc8584163841", + "scale": [ + 1, + 1 + ] + }, + { + "type": "image", + "version": 90, + "versionNonce": 1708410201, + "isDeleted": false, + "id": "XMMclGXE", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 437.2613198891771, + "y": -153.58651555464917, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 17, + "height": 16, + "seed": 8973, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1707905627036, + "link": null, + "locked": false, + "status": "pending", + "fileId": "e002585c42c99c5cb74ac919241c7ed2c661d019", + "scale": [ + 1, + 1 + ] + }, + { + "type": "image", + "version": 143, + "versionNonce": 737249081, + "isDeleted": false, + "id": "JmVH_AdILKQPLOtyP2pj-", + "fillStyle": "hachure", + "strokeWidth": 1, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 434.5120887412087, + "y": -275.44793995062355, + "strokeColor": "#000000", + "backgroundColor": "transparent", + "width": 17, + "height": 16, + "seed": 54277849, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1707905541202, + "link": null, + "locked": false, + "status": "pending", + "fileId": "f69c9040deb85b69c77d00826549fa3888d32bc5", + "scale": [ + 1, + 1 + ] + }, + { + "id": "9mtdkfB1rHEDMuVRcjPeI", + "type": "arrow", + "x": 388.1763490464489, + "y": -300.16813326089124, + "width": 74.35617997889244, + "height": 0, + "angle": 0, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "seed": 1737385497, + "version": 303, + "versionNonce": 182288087, + "isDeleted": false, + "boundElements": null, + "updated": 1707905615108, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 74.35617997889244, + 0 + ] + ], + "lastCommittedPoint": [ + 75.2347313663962, + -1.149131852856783 + ], + "startBinding": { + "elementId": "XCbafbTL5fULFozZUo17V", + "focus": -1.017529888985828, + "gap": 3.4827326806260714 + }, + "endBinding": null, + "startArrowhead": "triangle", + "endArrowhead": "triangle" + }, + { + "type": "arrow", + "version": 405, + "versionNonce": 987741721, + "isDeleted": false, + "id": "YAGdh1dBFCgmUPrY7qa_i", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 387.5633916115855, + "y": -106.58348281364283, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 74.96415090104335, + "height": 0, + "seed": 1107569399, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1707905615108, + "link": null, + "locked": false, + "startBinding": { + "elementId": "XCbafbTL5fULFozZUo17V", + "focus": 1.006200953026797, + "gap": 2.453352478236269 + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": "triangle", + "endArrowhead": "triangle", + "points": [ + [ + 0, + 0 + ], + [ + 74.96415090104335, + 0 + ] + ] + }, + { + "type": "arrow", + "version": 657, + "versionNonce": 1277964695, + "isDeleted": false, + "id": "Pg9K_5noQmf2wWWdl9AIJ", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 618.6998028397222, + "y": -223.49798129361318, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 0, + "height": 41.607573946448916, + "seed": 2132723129, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1707905622025, + "link": null, + "locked": false, + "startBinding": { + "elementId": "XCbafbTL5fULFozZUo17V", + "focus": -1.0104175585213668, + "gap": 6.056023423775883 + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": "triangle", + "endArrowhead": "triangle", + "points": [ + [ + 0, + 0 + ], + [ + 0, + 41.607573946448916 + ] + ] + }, + { + "type": "arrow", + "version": 760, + "versionNonce": 18519897, + "isDeleted": false, + "id": "qpoqD4oV6UdSaqmoqBABp", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 232.7206489007915, + "y": -223.70089670126058, + "strokeColor": "#2f9e44", + "backgroundColor": "transparent", + "width": 0, + "height": 41.607573946448916, + "seed": 1901293143, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1707905622025, + "link": null, + "locked": false, + "startBinding": { + "elementId": "XCbafbTL5fULFozZUo17V", + "focus": 1.0062028065913655, + "gap": 5.274857297992639 + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": "triangle", + "endArrowhead": "triangle", + "points": [ + [ + 0, + 0 + ], + [ + 0, + 41.607573946448916 + ] + ] + } + ], + "appState": { + "theme": "dark", + "viewBackgroundColor": "#ffffff", + "currentItemStrokeColor": "#2f9e44", + "currentItemBackgroundColor": "transparent", + "currentItemFillStyle": "solid", + "currentItemStrokeWidth": 2, + "currentItemStrokeStyle": "solid", + "currentItemRoughness": 1, + "currentItemOpacity": 100, + "currentItemFontFamily": 1, + "currentItemFontSize": 20, + "currentItemTextAlign": "left", + "currentItemStartArrowhead": "triangle", + "currentItemEndArrowhead": "triangle", + "scrollX": 244.66315320383737, + "scrollY": 440.0682553470592, + "zoom": { + "value": 1.1693610238541363 + }, + "currentItemRoundness": "round", + "gridSize": null, + "gridColor": { + "Bold": "#C9C9C9FF", + "Regular": "#EDEDEDFF" + }, + "currentStrokeOptions": null, + "previousGridSize": null, + "frameRendering": { + "enabled": true, + "clip": true, + "name": true, + "outline": true + } + }, + "files": {} +} +``` +%% \ No newline at end of file diff --git a/Julius Dickmann.md b/Julius Dickmann.md index e3bf392b..c7b0c603 100644 --- a/Julius Dickmann.md +++ b/Julius Dickmann.md @@ -5,12 +5,12 @@ anniv:: --- - -```dataview -TABLE title, description, elink(link) as "link" -FROM "" -WHERE contains(author, this.file.link) -``` +> [!smallquery]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")` +> ```breadcrumbs +> title: false +> type: tree +> dir: down +> ``` # Conférence au [[rendez-vous de l'histoire]] diff --git a/Kanban mémoire L3.md b/Kanban mémoire L3.md new file mode 100644 index 00000000..24cef09e --- /dev/null +++ b/Kanban mémoire L3.md @@ -0,0 +1,36 @@ +--- + +kanban-plugin: basic + +--- + +## ❓ A définir + + + +## 📋 Todo + +- [ ] définition du sujet +- [ ] [[mémoire de L3.fiche bibliographique]] + + +## ⃜➡ En cours + + + +## ✉ Envoyé + + + +## ✅ Done + +**Complete** + + + + +%% kanban:settings +``` +{"kanban-plugin":"basic"} +``` +%% \ No newline at end of file diff --git a/Karl Marx.md b/Karl Marx.md new file mode 100644 index 00000000..da3a92b1 --- /dev/null +++ b/Karl Marx.md @@ -0,0 +1,15 @@ +title:: +link:: +anniv:: +#personne + + + +> [!smallquery]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")` +> ```breadcrumbs +> title: false +> type: tree +> dir: down +> ``` + + diff --git a/Projet programmation web serveur.md b/Projet programmation web serveur.md index 03c9afa7..c1e3e6ef 100644 --- a/Projet programmation web serveur.md +++ b/Projet programmation web serveur.md @@ -5,7 +5,7 @@ aliases: - Projet web serveur - programmation web serveur projet --- -up:: [[programmation web serveur]] +up:: [[cours programmation web serveur]] #fac > [!info] Sujet diff --git a/SEB.md b/SEB.md index 3c15745b..7ea19d05 100644 --- a/SEB.md +++ b/SEB.md @@ -1,7 +1,7 @@ -down:: [[CP création du seb]] up:: [[syndicalisme]] #politique #fac +down:: [[CP création du seb]] diff --git a/aliénation sociale.md b/aliénation sociale.md new file mode 100644 index 00000000..aee29c76 --- /dev/null +++ b/aliénation sociale.md @@ -0,0 +1,17 @@ +--- +aliases: + - aliénation +--- +up:: [[sociologie]], [[politique]] +author:: [[Karl Marx]] +#philosphie + +> [!definition] Aliénation sociale +> En [[philosophie]] +> - la dépossession de l'individu, la perte de sa maîtrise, de se forces propres, au profit d'un autre (parent, individu, groupe ou [[société]] en général). +> +> Chez [[Karl Marx]] +> - lorsque l'humain ne peut se reconnaître ni dans le produit de son travail (qui lui est devenu étranger), ni dans sa propre activité productive (il n'est qu'une ressource humaine aux yeux de l'entreprise). Alors il ne peut pas non plus se reconnaître dans les autres hommes. Ses rapports avec eux perdent leur caractère humain pour être réduit à l'échange des produits du travail. ([[l'aliénation fait cesser l'existance]]) +^definition + + diff --git a/architecture des ordinateurs.md b/architecture des ordinateurs.md index 04e306eb..b2f4d8ab 100644 --- a/architecture des ordinateurs.md +++ b/architecture des ordinateurs.md @@ -3,13 +3,10 @@ up::[[informatique]] title:: #informatique ---- -> [!query] Sous-notes de `=this.file.link` -> ```dataview -> TABLE title, up as "Up", up.up as "2-Up", up.up.up as "3-Up", up.up.up.up as "4-Up" -> FROM -#cours AND -#exercice AND -"daily" AND -#excalidraw AND -#MOC -> WHERE econtains(list(up, up.up, up.up.up, up.up.up.up), this.file.link) -> WHERE file.link != this.file.link -> SORT up.up.up.up, up.up.up, up.up, up -> ``` +> [!smallquery]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")` +> ```breadcrumbs +> title: false +> type: tree +> dir: down +> ``` \ No newline at end of file diff --git a/attachments/IMG_6724.heic b/attachments/IMG_6724.heic new file mode 100644 index 00000000..b0eb22c8 Binary files /dev/null and b/attachments/IMG_6724.heic differ diff --git a/authentification par token.md b/authentification par token.md index 381323d4..55637cce 100644 --- a/authentification par token.md +++ b/authentification par token.md @@ -1,4 +1,4 @@ -up:: [[programmation web serveur]] +up:: [[cours programmation web serveur]] #informatique - le token diff --git a/automate-pile.md b/automate-pile.md index 56199297..5d5d694d 100644 --- a/automate-pile.md +++ b/automate-pile.md @@ -84,4 +84,4 @@ le mot $u$ est reconnu quand Quand $(q_0, u, \gamma_0) \vdash (q', \epsilon, \gamma)$ avec $q \in F$ # Automate à deux piles -Si on lui donne deux piles, un automate devient capable de simuler une [[machine-turing]] \ No newline at end of file +Si on lui donne deux piles, un automate devient capable de simuler une [[machine de turing]] \ No newline at end of file diff --git a/bases du javascript.md b/bases du javascript.md index ee348be7..6b62674a 100644 --- a/bases du javascript.md +++ b/bases du javascript.md @@ -1,4 +1,4 @@ -up:: [[programmation web serveur]] +up:: [[cours programmation web serveur]] #fac #informatique/javascript diff --git a/capitalisme.md b/capitalisme.md index 341bfe8a..05ca4647 100644 --- a/capitalisme.md +++ b/capitalisme.md @@ -12,5 +12,7 @@ opposes:: [[socialisme]] > title: false > type: tree > dir: down +> depth: -3 > ``` + diff --git a/cercle.md b/cercle.md new file mode 100644 index 00000000..1d0698fa --- /dev/null +++ b/cercle.md @@ -0,0 +1,10 @@ +up:: [[géométrie]] +#maths/géométrie + +> [!smallquery]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")` +> ```breadcrumbs +> title: false +> type: tree +> dir: down +> ``` + \ No newline at end of file diff --git a/cheat sheet fonctions trigonométrique.md b/cheat sheet fonctions trigonométrique.md new file mode 100644 index 00000000..4bc13919 --- /dev/null +++ b/cheat sheet fonctions trigonométrique.md @@ -0,0 +1,26 @@ +up::[[cheat sheet]] + +![[fonction sinus]] + +![[fonction cosinus]] + +![[fonction tangente]] + +![[fonction arcsinus]] + +![[fonction arccosinus]] + +![[fonction arctangente]] + +![[fonction sinus hyperbolique]] + +![[fonction cosinus hyperbolique]] + +![[fonction tangente hyperbolique]] + +![[fonction arg sinus hyperbolique]] + +![[fonction arg cosinus hyperbolique]] + +![[fonction arg tangente hyperbolique]] + diff --git a/coconut application partielle de fonction.md b/coconut application partielle de fonction.md new file mode 100644 index 00000000..e2fc63e1 --- /dev/null +++ b/coconut application partielle de fonction.md @@ -0,0 +1,14 @@ +--- +aliases: + - coconut application partielle +--- +up:: [[coconut composer des fonctions]] +#informatique + +Le `$` permet de faire une application partielle de fonction. + +Cette fonction met au carré chacun de ses arguments +```python +square_all = list .. map$(x -> x**2) +``` + diff --git a/coconut chaîner des fonctions.md b/coconut chaîner des fonctions.md new file mode 100644 index 00000000..ff6aa322 --- /dev/null +++ b/coconut chaîner des fonctions.md @@ -0,0 +1,11 @@ +up:: [[coconut composer des fonctions]] +#informatique + + +Calcul de $\pi$ avec $\sum\limits_{k=1}^{n} \left(\frac{1}{k^{2}}\right) = \dfrac{\pi^{2}}{6}$, soit $\pi = \sqrt{ 6\times\sum\limits_{k=1}^{n} \left(\frac{1}{k^{2}}\right)}$ +```python +range(1, n) |> map$(k -> 1/k**2) |> sum |> list |> print +``` + - on utilise `|>` pour chaîner des fonctions + - on utilise `k -> 1/k**2` pour définir une fonction anonyme (`lambda k: 1/k**2)` + - on utilise l'application partielle de fonction pour intégrer dans la chaîne de fonctions diff --git a/coconut composer des fonctions.md b/coconut composer des fonctions.md new file mode 100644 index 00000000..e4eeb8ea --- /dev/null +++ b/coconut composer des fonctions.md @@ -0,0 +1,10 @@ +up:: [[coconut-lang]] +#informatique + +> [!smallquery]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")` +> ```breadcrumbs +> title: false +> type: tree +> dir: down +> ``` + diff --git a/coconut composition de fonction.md b/coconut composition de fonction.md new file mode 100644 index 00000000..b842b014 --- /dev/null +++ b/coconut composition de fonction.md @@ -0,0 +1,18 @@ +--- +aliases: + - coconut composition simple + - coconut opérateur .. + - coconut .. +--- +up:: [[coconut composer des fonctions]] +#informatique + +la fonction `square_plus_1` correspond à `x -> 1 + x**2` + +```python +square = x -> x**2 +plus_1 = x -> x+1 +square_plus_1 = plus_1 .. square +``` +La composition est faîte avec `..` et suit l'ordre mathématique de composition : $(f \circ g)(x) = f(g(x))$ + diff --git a/coconut fonctions lambda.md b/coconut fonctions lambda.md new file mode 100644 index 00000000..264bb106 --- /dev/null +++ b/coconut fonctions lambda.md @@ -0,0 +1,8 @@ +up:: [[coconut-lang]] +#informatique + +La syntaxe des fonctions lambda est améliorée +```python +lambda x: 4 * x # multiplication par 4 +(x -> 4 * x) # même chose +``` \ No newline at end of file diff --git a/coconut gestion des itérables.md b/coconut gestion des itérables.md new file mode 100644 index 00000000..8659c699 --- /dev/null +++ b/coconut gestion des itérables.md @@ -0,0 +1,9 @@ +up:: [[coconut-lang]] +#informatique + +On peut utiliser l'opérateur `::` (cons) pour chaîner des itérables + +```python +concatenation = iter1 :: iter2 +``` + diff --git a/coconut-lang.md b/coconut-lang.md index 35e0559c..9961a980 100644 --- a/coconut-lang.md +++ b/coconut-lang.md @@ -4,44 +4,12 @@ title::"surcouche de python plus fonctionnelle. Pratique pour tester des choses --- Langage de programmation : surcouche de python plus fonctionnelle +Compile en python. -# Exemples - -## Fonctions Lambda -La syntaxe des fonctions lambda est améliorée -```python -lambda x: 4 * x # multiplication par 4 -(x -> 4 * x) # même chose -``` - - -## Composer des fonctions - -### Composition simple -la fonction `square_plus_1` correspond à `x -> 1 + x**2` -```python -square = x -> x**2 -plus_1 = x -> x+1 -square_plus_1 = plus_1 .. square -``` -La composition est faîte avec `..` et suit l'ordre mathématique de composition : $(f \circ g)(x) = f(g(x))$ - -### Application partielle de fonction -Cette fonction met au carré chacun de ses arguments -```python -square_all = list .. map$(x -> x**2) -``` - -### Chaîner des fonctions - -Calcul de $\pi$ avec $\sum\limits_{k=1}^{n} \left(\frac{1}{k^{2}}\right) = \dfrac{\pi^{2}}{6}$, soit $\pi = \sqrt{ 6\times\sum\limits_{k=1}^{n} \left(\frac{1}{k^{2}}\right)}$ -```python -range(1, n) |> map$(k -> 1/k**2) |> sum |> list |> print -``` - - on utilise `|>` pour chaîner des fonctions - - on utilise `k -> 1/k**2` pour définir une fonction anonyme (`lambda k: 1/k**2)` - - on utilise l'application partielle de fonction pour intégrer dans la chaîne de fonctions - -## Gestion des itérables -On peut utiliser l'opérateur `::` (cons) pour chaîner des itérables +> [!smallquery]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")` +> ```breadcrumbs +> title: false +> type: tree +> dir: down +> ``` diff --git a/concept et règles.md b/concept et règles.md new file mode 100644 index 00000000..d545e56a --- /dev/null +++ b/concept et règles.md @@ -0,0 +1,17 @@ +up:: [[salsiphi]] + +but: il faut que ça soit constructif + + + +> [!idea] Title +> - présentation par quelqu'un (type livre blanc) +> - [c] motivation des présentateurs pour préparer +> - [c] épuisement des sujets +> - récapitulatif des trucs intéressants que chacun à trouvé +> - avancement des projets de chacun +> - partie présentation du projet +> - partie discussion sur le projet +> - proposer des sujets +> - faire en sorte que tout le monde puisse proposer des sujets +> - introduction des sujets au début diff --git a/programmation web serveur.md b/cours programmation web serveur.md similarity index 100% rename from programmation web serveur.md rename to cours programmation web serveur.md diff --git a/cycle en V.md b/cycle en V.md index 13f48346..802b155a 100644 --- a/cycle en V.md +++ b/cycle en V.md @@ -33,13 +33,13 @@ description des fonctions (modules) d'un logiciel - spécification technique pour le développement (signature des fonctions...) > [!important] point de vue **statique** -> - découper le logiciel en [[paradygme programmation modulaire|modules]] +> - découper le logiciel en [[paradigme programmation modulaire|modules]] > - module gestion des clients > - module gestion des articles > - module création de facture > - module bilan des ventes > - $\vdots$ -> - définir des classes du système ([[paradygme programmation orientée objet|OOP]]) +> - définir des classes du système ([[paradigme programmation orientée objet|OOP]]) - but - réduire les délais diff --git a/daily/2024-01-10.md b/daily/2024-01-10.md index a8e760cb..2e09bedf 100644 --- a/daily/2024-01-10.md +++ b/daily/2024-01-10.md @@ -4,13 +4,6 @@ kung_fu: 0 --- ## Todo -- [ ] #task contacter asso jeux vidéo pour soirée jeux ABEI 🔽 -- [ ] #task demander à tthan pour baptême ⏫ 📅 2024-03-09 -- [ ] #task payer felix -- [ ] #task permis de conduire ⏫ -- [ ] #task gérer CERCIP ⏫ -- [ ] #task envoyer doc à callista ⏬ -- [ ] #task demander à andreas pour colloc - spaced repetition : `INPUT[toggle(onValue(1), offValue(0)):spaced_repetition]` - kung-fu : `INPUT[number:kung_fu]` minutes diff --git a/daily/2024-01-11.md b/daily/2024-01-11.md new file mode 100644 index 00000000..2e09bedf --- /dev/null +++ b/daily/2024-01-11.md @@ -0,0 +1,32 @@ +--- +spaced_repetition: 0 +kung_fu: 0 +--- + +## Todo +- spaced repetition : `INPUT[toggle(onValue(1), offValue(0)):spaced_repetition]` +- kung-fu : `INPUT[number:kung_fu]` minutes + +## I did +> [!smallquery]+ Modified files +> ```dataview +> LIST file.mtime +> where file.mtime > date(this.file.name) and file.mtime < (date(this.file.name) + dur(1 day)) sort file.mtime asc +> ``` + +## Devoirs +> [!smalltodo]+ Devoirs +> ```dataview +> TABLE difficulty as "", due as "date", title as "description", file.etags as "tags" +> FROM #devoir +> WHERE contains(due, date(this.file.name)) +> ``` +> > [!done]- Devoirs faits +> > ```dataview +> > TABLE difficulty as "", due as "date", title as "description" +> > FROM #devoir-fait +> > WHERE contains(due, date(this.file.name)) +> > ``` + +## I am gratefull to + diff --git a/daily/2024-01-15.md b/daily/2024-01-15.md new file mode 100644 index 00000000..2e09bedf --- /dev/null +++ b/daily/2024-01-15.md @@ -0,0 +1,32 @@ +--- +spaced_repetition: 0 +kung_fu: 0 +--- + +## Todo +- spaced repetition : `INPUT[toggle(onValue(1), offValue(0)):spaced_repetition]` +- kung-fu : `INPUT[number:kung_fu]` minutes + +## I did +> [!smallquery]+ Modified files +> ```dataview +> LIST file.mtime +> where file.mtime > date(this.file.name) and file.mtime < (date(this.file.name) + dur(1 day)) sort file.mtime asc +> ``` + +## Devoirs +> [!smalltodo]+ Devoirs +> ```dataview +> TABLE difficulty as "", due as "date", title as "description", file.etags as "tags" +> FROM #devoir +> WHERE contains(due, date(this.file.name)) +> ``` +> > [!done]- Devoirs faits +> > ```dataview +> > TABLE difficulty as "", due as "date", title as "description" +> > FROM #devoir-fait +> > WHERE contains(due, date(this.file.name)) +> > ``` + +## I am gratefull to + diff --git a/daily/2024-01-17.md b/daily/2024-01-17.md new file mode 100644 index 00000000..9e889992 --- /dev/null +++ b/daily/2024-01-17.md @@ -0,0 +1,33 @@ +--- +spaced_repetition: 0 +kung_fu: 0 +--- + +## Todo +- [x] #task imprimer affiche soirée jeux 🔼 📅 2024-01-16 ✅ 2024-01-17 +- spaced repetition : `INPUT[toggle(onValue(1), offValue(0)):spaced_repetition]` +- kung-fu : `INPUT[number:kung_fu]` minutes + +## I did +> [!smallquery]+ Modified files +> ```dataview +> LIST file.mtime +> where file.mtime > date(this.file.name) and file.mtime < (date(this.file.name) + dur(1 day)) sort file.mtime asc +> ``` + +## Devoirs +> [!smalltodo]+ Devoirs +> ```dataview +> TABLE difficulty as "", due as "date", title as "description", file.etags as "tags" +> FROM #devoir +> WHERE contains(due, date(this.file.name)) +> ``` +> > [!done]- Devoirs faits +> > ```dataview +> > TABLE difficulty as "", due as "date", title as "description" +> > FROM #devoir-fait +> > WHERE contains(due, date(this.file.name)) +> > ``` + +## I am gratefull to + diff --git a/daily/2024-01-23.md b/daily/2024-01-23.md new file mode 100644 index 00000000..777ea303 --- /dev/null +++ b/daily/2024-01-23.md @@ -0,0 +1,33 @@ +--- +spaced_repetition: 0 +kung_fu: 0 +--- + +## Todo +- spaced repetition : `INPUT[toggle(onValue(1), offValue(0)):spaced_repetition]` +- kung-fu : `INPUT[number:kung_fu]` minutes + + +## I did +> [!smallquery]+ Modified files +> ```dataview +> LIST file.mtime +> where file.mtime > date(this.file.name) and file.mtime < (date(this.file.name) + dur(1 day)) sort file.mtime asc +> ``` + +## Devoirs +> [!smalltodo]+ Devoirs +> ```dataview +> TABLE difficulty as "", due as "date", title as "description", file.etags as "tags" +> FROM #devoir +> WHERE contains(due, date(this.file.name)) +> ``` +> > [!done]- Devoirs faits +> > ```dataview +> > TABLE difficulty as "", due as "date", title as "description" +> > FROM #devoir-fait +> > WHERE contains(due, date(this.file.name)) +> > ``` + +## I am gratefull to + diff --git a/daily/2024-01-24.md b/daily/2024-01-24.md new file mode 100644 index 00000000..2e09bedf --- /dev/null +++ b/daily/2024-01-24.md @@ -0,0 +1,32 @@ +--- +spaced_repetition: 0 +kung_fu: 0 +--- + +## Todo +- spaced repetition : `INPUT[toggle(onValue(1), offValue(0)):spaced_repetition]` +- kung-fu : `INPUT[number:kung_fu]` minutes + +## I did +> [!smallquery]+ Modified files +> ```dataview +> LIST file.mtime +> where file.mtime > date(this.file.name) and file.mtime < (date(this.file.name) + dur(1 day)) sort file.mtime asc +> ``` + +## Devoirs +> [!smalltodo]+ Devoirs +> ```dataview +> TABLE difficulty as "", due as "date", title as "description", file.etags as "tags" +> FROM #devoir +> WHERE contains(due, date(this.file.name)) +> ``` +> > [!done]- Devoirs faits +> > ```dataview +> > TABLE difficulty as "", due as "date", title as "description" +> > FROM #devoir-fait +> > WHERE contains(due, date(this.file.name)) +> > ``` + +## I am gratefull to + diff --git a/daily/2024-01-28.md b/daily/2024-01-28.md new file mode 100644 index 00000000..42ebe250 --- /dev/null +++ b/daily/2024-01-28.md @@ -0,0 +1,33 @@ +--- +spaced_repetition: 0 +kung_fu: 0 +--- + + +## Todo +- spaced repetition : `INPUT[toggle(onValue(1), offValue(0)):spaced_repetition]` +- kung-fu : `INPUT[number:kung_fu]` minutes + +## I did +> [!smallquery]+ Modified files +> ```dataview +> LIST file.mtime +> where file.mtime > date(this.file.name) and file.mtime < (date(this.file.name) + dur(1 day)) sort file.mtime asc +> ``` + +## Devoirs +> [!smalltodo]+ Devoirs +> ```dataview +> TABLE difficulty as "", due as "date", title as "description", file.etags as "tags" +> FROM #devoir +> WHERE contains(due, date(this.file.name)) +> ``` +> > [!done]- Devoirs faits +> > ```dataview +> > TABLE difficulty as "", due as "date", title as "description" +> > FROM #devoir-fait +> > WHERE contains(due, date(this.file.name)) +> > ``` + +## I am gratefull to + diff --git a/daily/2024-01-29.md b/daily/2024-01-29.md new file mode 100644 index 00000000..2e09bedf --- /dev/null +++ b/daily/2024-01-29.md @@ -0,0 +1,32 @@ +--- +spaced_repetition: 0 +kung_fu: 0 +--- + +## Todo +- spaced repetition : `INPUT[toggle(onValue(1), offValue(0)):spaced_repetition]` +- kung-fu : `INPUT[number:kung_fu]` minutes + +## I did +> [!smallquery]+ Modified files +> ```dataview +> LIST file.mtime +> where file.mtime > date(this.file.name) and file.mtime < (date(this.file.name) + dur(1 day)) sort file.mtime asc +> ``` + +## Devoirs +> [!smalltodo]+ Devoirs +> ```dataview +> TABLE difficulty as "", due as "date", title as "description", file.etags as "tags" +> FROM #devoir +> WHERE contains(due, date(this.file.name)) +> ``` +> > [!done]- Devoirs faits +> > ```dataview +> > TABLE difficulty as "", due as "date", title as "description" +> > FROM #devoir-fait +> > WHERE contains(due, date(this.file.name)) +> > ``` + +## I am gratefull to + diff --git a/daily/2024-02-05.md b/daily/2024-02-05.md new file mode 100644 index 00000000..0665643a --- /dev/null +++ b/daily/2024-02-05.md @@ -0,0 +1,33 @@ +--- +spaced_repetition: 0 +kung_fu: 0 +--- + +## Todo +- [x] #task envoyer deadlines mémoire à M.chanson ✅ 2024-02-05 +- spaced repetition : `INPUT[toggle(onValue(1), offValue(0)):spaced_repetition]` +- kung-fu : `INPUT[number:kung_fu]` minutes + +## I did +> [!smallquery]+ Modified files +> ```dataview +> LIST file.mtime +> where file.mtime > date(this.file.name) and file.mtime < (date(this.file.name) + dur(1 day)) sort file.mtime asc +> ``` + +## Devoirs +> [!smalltodo]+ Devoirs +> ```dataview +> TABLE difficulty as "", due as "date", title as "description", file.etags as "tags" +> FROM #devoir +> WHERE contains(due, date(this.file.name)) +> ``` +> > [!done]- Devoirs faits +> > ```dataview +> > TABLE difficulty as "", due as "date", title as "description" +> > FROM #devoir-fait +> > WHERE contains(due, date(this.file.name)) +> > ``` + +## I am gratefull to + diff --git a/daily/2024-02-08.md b/daily/2024-02-08.md new file mode 100644 index 00000000..2e09bedf --- /dev/null +++ b/daily/2024-02-08.md @@ -0,0 +1,32 @@ +--- +spaced_repetition: 0 +kung_fu: 0 +--- + +## Todo +- spaced repetition : `INPUT[toggle(onValue(1), offValue(0)):spaced_repetition]` +- kung-fu : `INPUT[number:kung_fu]` minutes + +## I did +> [!smallquery]+ Modified files +> ```dataview +> LIST file.mtime +> where file.mtime > date(this.file.name) and file.mtime < (date(this.file.name) + dur(1 day)) sort file.mtime asc +> ``` + +## Devoirs +> [!smalltodo]+ Devoirs +> ```dataview +> TABLE difficulty as "", due as "date", title as "description", file.etags as "tags" +> FROM #devoir +> WHERE contains(due, date(this.file.name)) +> ``` +> > [!done]- Devoirs faits +> > ```dataview +> > TABLE difficulty as "", due as "date", title as "description" +> > FROM #devoir-fait +> > WHERE contains(due, date(this.file.name)) +> > ``` + +## I am gratefull to + diff --git a/daily/2024-02-12.md b/daily/2024-02-12.md new file mode 100644 index 00000000..2bd4405c --- /dev/null +++ b/daily/2024-02-12.md @@ -0,0 +1,34 @@ +--- +spaced_repetition: 0 +kung_fu: 0 +--- + +## Todo +- [x] #task demander à tthan pour baptême ⏫ 📅 2024-03-09 ✅ 2024-02-12 +- [x] #task permis de conduire ⏫ ✅ 2024-02-12 +- spaced repetition : `INPUT[toggle(onValue(1), offValue(0)):spaced_repetition]` +- kung-fu : `INPUT[number:kung_fu]` minutes + +## I did +> [!smallquery]+ Modified files +> ```dataview +> LIST file.mtime +> where file.mtime > date(this.file.name) and file.mtime < (date(this.file.name) + dur(1 day)) sort file.mtime asc +> ``` + +## Devoirs +> [!smalltodo]+ Devoirs +> ```dataview +> TABLE difficulty as "", due as "date", title as "description", file.etags as "tags" +> FROM #devoir +> WHERE contains(due, date(this.file.name)) +> ``` +> > [!done]- Devoirs faits +> > ```dataview +> > TABLE difficulty as "", due as "date", title as "description" +> > FROM #devoir-fait +> > WHERE contains(due, date(this.file.name)) +> > ``` + +## I am gratefull to + diff --git a/daily/2024-02-14.md b/daily/2024-02-14.md new file mode 100644 index 00000000..2e09bedf --- /dev/null +++ b/daily/2024-02-14.md @@ -0,0 +1,32 @@ +--- +spaced_repetition: 0 +kung_fu: 0 +--- + +## Todo +- spaced repetition : `INPUT[toggle(onValue(1), offValue(0)):spaced_repetition]` +- kung-fu : `INPUT[number:kung_fu]` minutes + +## I did +> [!smallquery]+ Modified files +> ```dataview +> LIST file.mtime +> where file.mtime > date(this.file.name) and file.mtime < (date(this.file.name) + dur(1 day)) sort file.mtime asc +> ``` + +## Devoirs +> [!smalltodo]+ Devoirs +> ```dataview +> TABLE difficulty as "", due as "date", title as "description", file.etags as "tags" +> FROM #devoir +> WHERE contains(due, date(this.file.name)) +> ``` +> > [!done]- Devoirs faits +> > ```dataview +> > TABLE difficulty as "", due as "date", title as "description" +> > FROM #devoir-fait +> > WHERE contains(due, date(this.file.name)) +> > ``` + +## I am gratefull to + diff --git a/daily/2024-02-19.md b/daily/2024-02-19.md new file mode 100644 index 00000000..ccbb0549 --- /dev/null +++ b/daily/2024-02-19.md @@ -0,0 +1,45 @@ +--- +spaced_repetition: 0 +kung_fu: 0 +--- + +## Todo +- [ ] #task définir sujet mémoire ⏫ 📅 2024-02-26 +- [x] #task dates de stage ✅ 2024-02-21 +- [x] #task permis de conduire ✅ 2024-02-21 +- [ ] #task formulaire Avril 📅 2024-02-18 +- [x] #task envoyer dates possibles stage à maîtres de stage ✅ 2024-02-21 +- [ ] #task remettre camille +- [ ] #task courrier recommandé pour annuler plainte 🔺 +- [ ] #task convention de stage ⏫ +- [ ] #task contacter asso jeux vidéo pour soirée jeux ABEI 🔽 +- [ ] #task payer felix +- [ ] #task gérer CERCIP ⏫ +- [ ] #task envoyer doc à callista ⏬ +- [ ] #task demander à andreas pour colloc +- spaced repetition : `INPUT[toggle(onValue(1), offValue(0)):spaced_repetition]` +- kung-fu : `INPUT[number:kung_fu]` minutes + +## I did +> [!smallquery]+ Modified files +> ```dataview +> LIST file.mtime +> where file.mtime > date(this.file.name) and file.mtime < (date(this.file.name) + dur(1 day)) sort file.mtime asc +> ``` + +## Devoirs +> [!smalltodo]+ Devoirs +> ```dataview +> TABLE difficulty as "", due as "date", title as "description", file.etags as "tags" +> FROM #devoir +> WHERE contains(due, date(this.file.name)) +> ``` +> > [!done]- Devoirs faits +> > ```dataview +> > TABLE difficulty as "", due as "date", title as "description" +> > FROM #devoir-fait +> > WHERE contains(due, date(this.file.name)) +> > ``` + +## I am gratefull to + diff --git a/danger des catégories.md b/danger des catégories.md new file mode 100644 index 00000000..49e588b5 --- /dev/null +++ b/danger des catégories.md @@ -0,0 +1,14 @@ +#philosphie + + +ex: amitié, patrie... + +parler en catégories permet de simplifier +problème : perte de subtilité +"Je me méfie du langage des catégories" + +Manipuler des catégories n'est pas penser : on manipule simplement des stéréotypes. + + + +A voir : kant et les catégories mentales \ No newline at end of file diff --git a/diagonaliser une matrice.md b/diagonaliser une matrice.md index 89b7b7d1..fef9b310 100644 --- a/diagonaliser une matrice.md +++ b/diagonaliser une matrice.md @@ -29,3 +29,4 @@ Toutes les matrices ne sont pas diagonalisables, donc toutes > Alors, on remarque que $\begin{pmatrix}1\\0\\0\end{pmatrix}$ est un [[vecteur propre|vecteur propre]] associé à la [[valeur propre d'une application linéaire|valeur propre]] $\lambda = 2$ > + diff --git a/dictature de la commodité.md b/dictature de la commodité.md new file mode 100644 index 00000000..5eafde5b --- /dev/null +++ b/dictature de la commodité.md @@ -0,0 +1,7 @@ +up:: [[technologie]] +#science #philosphie + +> [!definition] +> [[aliénation sociale|aliénation]] à la facilité que procure la [[technologie]]. +> [[subordination]] aux outils qui facilitent la vie, et donc à leurs effets, à leurs conséquences. +^definition diff --git a/discours baptême civil.md b/discours baptême civil.md new file mode 100644 index 00000000..c8bf35f8 --- /dev/null +++ b/discours baptême civil.md @@ -0,0 +1,53 @@ + +Bonjour, + +Longtemps je me suis couché tard. Il y a deux jours encore, dans le calme qu'apporte la journée qui s'éteint, je rédigeais un texte que je m'apprête à vous lire. Ce discours est le fruit de certaines réflexions sur le baptême civil et sur le sens que l'on pourrait donner à cette cérémonie, sur le lien qui nous unit, Jean-Claude et moi et sur d'autres points qui me semblait important d'aborder. + +Il serait aisé de tomber dans la facilité, et d'axer ce discours autour de la république, de sa devise... +Mais il me semble qu'il n'y a pas tant de choses à dire sur cette devise, puisqu'il n'est personne qui se dise contre la liberté, contre l'égalité, contre la fraternité. +On peut tout de même être pour l'équité plutôt que l'égalité, pour certaines formes de liberté plutôt que d'autres, et on peut penser que la fraternité est excluante pour les femmes, parce qu'il lui manque la sororité... +Mais, si l'on cesse d'être mesquins, il n'est pas grand-chose à dire, et cette devise est assez facilement acceptée comme un idéal à atteindre. +Je vais donc m'efforcer de ne pas dire des évidences, peut être au risque d'être moins consensuel. + +La première chose qui vient en tête avec le baptême républicain est son opposition au baptême religieux. + +Si le baptême civil peut être vu comme une émancipation face à l'hégémonie morale et culturelle de la religion, il est important de faire attention à ne pas faire de la république une nouvelle église, dont les crédos seraient une devise vidée de sa consistance, une laïcité galvaudée et un système moral semblable à celui d'une religion, qui ne serait là que pour justifier le fonctionnement de la société actuelle. +Il faut au contraire garder en tête que c'est en allant contre des ordres moraux établis, contre des valeurs dogmatiques, que nous pourrons construire une société désirable. +Je ne veux pas seulement dire par là que la morale objective n'existe pas, mais surtout que les principes moraux que nous acceptons doivent toujours être questionnés, jamais admis, toujours débatus, jamais brandis comme des vérités absolues. + +Durant l'une de nos discussions, Jean-Claude m'a dit "Je me méfie du langage des catégories". Parler en catégories permet de simplifier à outrance, de réduire toute subtilité. Mais par-dessus tout, manipuler des catégories n'est pas penser. +Or, que sont les valeurs morales, sinon des catégories ? +Je considère que le fait de fixer des valeurs comme des vérités inconditionnelles est en cela, une forme d'oppression, puisque le fait de présenter une valeur comme irréfutable s'oppose à la réflexion, au débat, à la démocratie. En somme, je considère qu'une valeur peut être bonne comme idéal, mais jamais comme dogme. +La république ne doit pas être la nouvelle église, elle doit permettre à chacun de s'émanciper, et à l'humanité d'écrire sa propre histoire. +Je plaide alors pour que ce baptême soit un parrainage civil. + +Je ne doute pas que certains d'entre vous ont déjà remarqué l'aspect initiatique que l'on pourrait donner à cette cérémonie. À l'aube de ma majorité, ce passage semble pouvoir marquer le début d'une citoyenneté, d'une émancipation, d'une prise de liberté. + +La liberté ne s'use que si l'on ne s'en sert pas, et c'est pourquoi je voudrais que ce parrainage marque mon refus de devenir un jour réac et conservateur, aigri et démobilisateur, puisque Jean-Claude, par son engagement militant, constitue pour moi un modèle. + +Jean-Claude est d'ailleurs un modèle sur beaucoup d'aspects, notamment par son érudition, et par la qualité qu'il apporte à une discussion, par son à propos et ses idées riches. +En cela, le statut de parrain à, ici, quelque chose du mentor. + +L'un de nos points communs, je crois, est que nous aimons tous deux les idées. Il me semble partager avec Jean-Claude cette fascination pour les choses de l'esprit, cet amour de la beauté d'une pensée. +Je voudrais donc proposer le terme idéiste, puisqu'il désigne ce dont le but est l'expression des idées : quelque chose d'idéiste, c'est quelque chose qui cherche à exprimer des idées. Idéiste désigne également une approche selon laquelle l'art doit être l'expression des idées. Mais surtout, idéiste pourrait être entendu comme le préfixe i- suivi de "déiste", donc une sorte d'opposition au déisme, a la manière de l'ignosticime. Je trouve ce double sens assez approprié à la situation, puisqu'il permet de célébrer à la fois le règne des idées et l'émancipation de la religion dont j'ai parlé plus tôt. +Je plaide alors pour que cette cérémonie soit un parrainage idéiste. + +La fête est aussi une chose commune entre nous, car elle est un alambic dans lequel la vie est distillée en bonheur. +Faisons un joyeux bordel. +Pierre Bourdieu, certainement le plus célèbre des sociologues, s'est vu poser la question "ça vous va bien, non, c'est presque un slogan, "joyeux bordel" ? Vous aimeriez bien que la société soit un peu moins attentiste ?". +Sa réponse a été "oui, oui, oui, un petit peu plus agitée, un petit peu plus troublée, troublante, un peu moins monotone, un peu moins bureaucratique." +Bourdieu défendait que l'on pouvait associer la recherche du savoir et de la connaissance avec le bordel, notamment parce que le savoir nouveau chahute beaucoup les cerveaux. +Il rappelle qu'il y a une gaie science, un gai savoir (un peu à la manière du gai savoir de Nietzsche), même si ce savoir rapporte des choses tristes. +Je plaide alors pour que cette cérémonie soit un parrainage du gai. + +Il me serait impossible d'énumérer tout ce qui nous relie, tout ce qui est en commun entre nous. +Cependant, je crois que le commun est lui-même une chose très importante, puisqu'il implique à la fois la liberté, égalité et fraternité. +Le commun nécessite la liberté, car sans liberté, il n'est pas de commun. Le savoir doit être libre pour être mis en commun. +Le commun nécessite l'égalité, parce que ce qui est inégal n'est, par définition, pas un commun. +La fraternité découle du commun, puisque c'est en accentuant nos communs plutôt que nos distincts que nous pourrons être frères et sœurs. +Ainsi, je voudrais ériger le commun, non pas comme un dogme, mais comme un idéal. +Je plaide alors pour que cette cérémonie soit un parrainage du commun. + +Je me permets une tentative de résumer toute ma pensée en ceci : +Je voudrais que cette cérémonie soit un parrainage civil et commun des gais idéistes. + diff --git a/discours manif immigration.md b/discours manif immigration.md new file mode 100644 index 00000000..86afbeac --- /dev/null +++ b/discours manif immigration.md @@ -0,0 +1,12 @@ +#politique + +Nous sommes tous là car nous pensons que cette loi est xénophobe, excluante. Nous sommes tous d'accord pour dire qu'elle est à la fois contre les valeurs de l'humanisme, contre les valeurs de la république, et contre le principe de solidarité le plus essentiel. + +Mais la droite veut nous faire croire que cette loi est nécessaire. Que la situation les oblige, qu'il y à urgence. L'idée de préférence nationale — lubie de l'extrême droite depuis des décennies — consiste à utiliser n'importe quel problème de notre système pour expliquer que "les vrais Français devraient avoir la priorité", et donc pour justifier des lois racistes. + +L'immigration n'est pas un problème. Ou plutôt si, c'est un problème, pour les immigrés, surtout pour ceux qui souhaitent s'intégrer, comme on leur demande si souvent de faire. Mais ce droit d'intégration, devenu devoir, est aliéné par des conditions inhumaines, par de l'esclavagisme — que l'on dit moderne, par la relégation des immigrés à une classe sociale inférieure, par la naturalisation de leur domination. + +Comment un système peut-il justifier tant de violence ? C'est par réaction à une agression fantasmée : l'idée que par leur arrivée massive, les immigrants pourraient prendre le dessus sur la culture Française, pour imposer la leur. +Cette idée est bien sûr stupide. Les immigrés ne partagent pas tous une même culture puisqu'ils ne viennent pas tous du même endroit. Mais surtout ils sont relégués au plus basses catégories sociales. Or ce sont toujours les dominants qui sont capables de faire changer la culture. Ce sont les dominants qui décident quel art est légitime, quelle histoire est vraie, quelle politique est bonne. Ce sont les dominants qui peuvent nous imposer le néolibéralisme. +Mais au-delà de la stupidité de ce concept de remplacement culturel, se cache une idéologie bien plus grave. L'idée que, parce que notre culture, donc notre peuple, notre nation, serait menacée par un ennemi (intérieur), une réaction violente de défense est légitime, dans le but de préserver cette culture. L'idée que la xénophobie peut être justifiée par le risque de domination des étrangers sur notre peuple. L'idée que la force peut être utilisée, car les Français seraient en danger. + diff --git a/dynamic programming definition by Floyd.md b/dynamic programming definition by Floyd.md new file mode 100644 index 00000000..9b76dd6e --- /dev/null +++ b/dynamic programming definition by Floyd.md @@ -0,0 +1,13 @@ +author:: +source:: [[floydParadigmsProgramming1979]] +date::2024-02-02 +#source + +> The dynamic programming paradigm solves a problem for given input by first iteratively solving it for all smaller inputs. + + +## Notes personnelles + +- le problème est résolu en commencant par résoudre itérativement les cas plus simples + + diff --git a/déterminant hessien.md b/déterminant hessien.md new file mode 100644 index 00000000..ef45d9a6 --- /dev/null +++ b/déterminant hessien.md @@ -0,0 +1,23 @@ +up:: [[matrice hessienne]], [[déterminant d'une matrice|déterminant]], [[fonction de plusieurs variables]] +#maths/analyse + +> [!definition] déterminant hessien +> Le déterminant de la [[matrice hessienne]] d'une [[fonction de plusieurs variables]] $f$, noté $| H(f) |$. +^definition + +# Propriétés + +Les déterminants mineurs d'une [[matrice hessienne]] $H(f)$ permettent de calculer la nature des points critiques de la fonction $f$. + +On définit les déterminants mineurs $\Delta _{i}f$ (avec $i \in [\![1; n]\!]$) comme les déterminants des sous-matrices carrées de $H(f)$ (qui partent du coin supérieur gauche de $H(f)$), et où $\Delta _{i}f$ est de taile $i \times i$. +On peut noter : $\Delta _{i}f = \det\; i\; i \uparrow H(f)$ en utilisant l'opérateur *take*. + +On a alors les propriétés suivantes : +Soit $a$ un point critique (un point qui annulle le [[gradient d'une fonction|gradient]]) +- $(1)$ si tous les $\Delta _{i}f(a) > 0$, alors le point $a$ est un minimum local +- $(2)$ si tous les $(-1)^{i}\Delta _{i}f(a) > 0$, alors le point $a$ est un maximum local +- si $(1)$ ou $(2)$ est respecté, sauf pour au moins un déterminant qui est nul, on ne peut pas conclure, par manque d'information + - si tous les $\Delta _{i}f(a)$ non nuls respectent soit $(1)$, soit $(2)$ +- dans tous les autres cas, c'est un point col + - si les déterminants non-nuls ne respectent ni $(1)$, ni $(2)$ + diff --git a/entr - exécuter une commande lorsqu'un fichier change.md b/entr - exécuter une commande lorsqu'un fichier change.md new file mode 100644 index 00000000..244a2a52 --- /dev/null +++ b/entr - exécuter une commande lorsqu'un fichier change.md @@ -0,0 +1,39 @@ +--- +aliases: + - entr +link: http://eradman.com/entrproject/ +tags: + - informatique +--- +up:: [[terminal commandes|utilitaires ligne de commande]] + +> [!definition] `entr` +> Permet d'exécuter une commande donnée dès que des fichiers (spécifiés) sont modifiés. +^definition + + +> [!example] Exemples +> ##### compiler à nouveau si un fichier change +> ```sh +> $ ls | entr make +> ``` +> +> ##### compiler à nouveau et exécuter les tests si un fichier change +> ```sh +> $ ls | entr -s "make && make test" +> ``` +> +> ##### redémarrer un processus dès qu'un fichier change +> - l'option `-r` permet de stopper le processus et de le redémarrer à chaque fois +> ```zsh +> $> ls *.rb | entr -r ruby main.rb +> ``` +> +> ##### vérrifier les nouveaux fichiers +> ```bash +> while true; do +> ls -d src/*.py | entr -d ./setup.py +> done +> ``` + + diff --git a/existence.md b/existence.md new file mode 100644 index 00000000..3683f18b --- /dev/null +++ b/existence.md @@ -0,0 +1,19 @@ +--- +aliases: + - exister +--- +up:: [[philosophie]] +#philosphie + +> [!definition] existence +> Langage courant : fait d'être, d'avoir une réalité +> étymologie : +> - vient de *existere* : *ex* + *sistere*, "sortir de", "se manifester", "se montrer" +> - interprété comme "être hors de soi", donc être auprès des choses +> On peut voir l'existence comme le fait de se manifester. +> +^definition + + +Voir aussi : + - [[quantificateurs.il existe|quantificateur existanciel]] \ No newline at end of file diff --git a/expressions détournées.md b/expressions détournées.md new file mode 100644 index 00000000..52e4d04b --- /dev/null +++ b/expressions détournées.md @@ -0,0 +1,7 @@ +prev:: [[phrases]] + + +- c'est pas la corde la plus aiguisée du panier +- il n'y va pas avec le dos de la main morte +- ya des briques qui ont raté des machoires +- c'est pas le pavé qui à touché le plus de CRS diff --git a/films à voir.md b/films à voir.md index 61b49736..19036c6c 100644 --- a/films à voir.md +++ b/films à voir.md @@ -4,7 +4,6 @@ # Films -- papillon (dustin hoffman) - barry lindon - beetlejuice - les fugitifs @@ -26,6 +25,9 @@ - populaire - qui à peur de virginia wolf ? - molli and max in the future (comédie-romance space opéra déjanté) +- the truman show +- primer (film de sf sur le voyage dans le temps) +- mon nom est personne ## documentaires @@ -42,6 +44,7 @@ > - rain man > - everything, everywhere, all at once > - soylent green (soleil vert) +> - papillon (dustin hoffman) # Séries diff --git a/firefox masquer les onglets.md b/firefox masquer les onglets.md new file mode 100644 index 00000000..0a9cd381 --- /dev/null +++ b/firefox masquer les onglets.md @@ -0,0 +1,3 @@ +up:: [[firefox]] + +Il semble nécessaire d'activer le [[firefox enable userChrome (custom css)|user CSS (chrome css)]] \ No newline at end of file diff --git a/flashcards anglais.md b/flashcards anglais.md index d92d345b..a3468bc6 100644 --- a/flashcards anglais.md +++ b/flashcards anglais.md @@ -2,6 +2,9 @@ ---- + +# Vocabulary + _praise_ :: éloges, admiration @@ -15,7 +18,7 @@ _hurdle_ :: obstacle, difficulté, barrière *culprit* :: *criminal* - + rehearsal ::: répétition (d'un spectacle). @@ -54,7 +57,7 @@ to streamline :: simplifier (rendre accessible), uniformiser to impersonate ::: imiter - + whereabouts ::: localisation, endroit @@ -69,10 +72,10 @@ to part with :: se séparer de ## Work, enterprise to work in shifts (to do the night shifts) ::: Faire les $3\times 8$ - + to clock in (at work) ::: pointer (au travail) - + to moonlight ::: travailler au noir @@ -99,10 +102,10 @@ to be workshy ::: être fainéant a workaholic ::: un bourreau de travail - + to resign ::: démissionner - + jobless ::: au chômage @@ -111,7 +114,7 @@ standard of living ::: niveau de vie on strike ::: en grève - + cover letter ::: lettre de motivation @@ -119,13 +122,26 @@ cover letter ::: lettre de motivation fixed-term ::: à durée déterminée +gig economy ::: le freelance + +gig worker ::: un freelanceur, un travailleur en freelance + +regulatory bodies ::: organismes de réglementation + +enforcing regulations :: appliquer les règlements, les régulations + + + # Idioms and expressions _to happen overnight_ :: _to happend quickly_ _to roll out_ :: déployer, implémenter, généraliser - + To climb up the ladder ::: gravir les échelons - \ No newline at end of file + + +to exercise reasonable care :: faire preuve d'une (dilligence|prudence) raisonnable. + diff --git a/fonction de plusieurs variables.md b/fonction de plusieurs variables.md new file mode 100644 index 00000000..f5015a65 --- /dev/null +++ b/fonction de plusieurs variables.md @@ -0,0 +1,3 @@ +up:: [[fonction]] +#maths/analyse + diff --git a/fonction.md b/fonction.md index 5d285383..4da51bc8 100644 --- a/fonction.md +++ b/fonction.md @@ -5,3 +5,10 @@ up::[[fonctions]] Une _fonction_ est un objet qui à une valeur donnée associe une autre valeur +> [!smallquery]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")` +> ```breadcrumbs +> title: false +> type: tree +> dir: down +> depth: -1 +> ``` diff --git a/forme normale de chomsky.md b/forme normale de chomsky.md new file mode 100644 index 00000000..69ff3cf5 --- /dev/null +++ b/forme normale de chomsky.md @@ -0,0 +1,21 @@ +--- +aliases: + - forme normale de chomsky + - forme normale +--- +up:: [[grammaire non-contextuelle]] +author:: [[noam chomsky]] +#informatique + +> [!definition] forme normale de chomsky d'une [[grammaire non-contextuelle]] +> Une [[grammaire non-contextuelle]] est sous *forme normale de chomsky* si et seulement si toutes ses règles de production sont de la forme : +> $$\begin{cases} +> X \to YZ \\ +> \text{ou}\\ +> X \to A \\ +> ou \\ +> S \to \varepsilon +> \end{cases}$$ +> +> où $X$, $Y$ et $Z$ sont des [[grammaire symbole non terminal|symboles non terminaux]], $a$ est un [[grammaire symbole terminal|symbole terminal]], $S$ est l'[[axiome]] de la grammaire et $\varepsilon $ est le mot vide. +^definition diff --git a/gradient d'une fonction.md b/gradient d'une fonction.md new file mode 100644 index 00000000..59ab1be0 --- /dev/null +++ b/gradient d'une fonction.md @@ -0,0 +1,20 @@ +--- +aliases: + - gradient +--- +up:: [[fonction de plusieurs variables]] +#maths/analyse + + +> [!definition] gradient d'une fonction +> Dans un système de [[coordonnées cartésiennes]], soit $f$ une fonction différentiable au point $a = (x_1, x_2, \dots ,x_{n})$ +> Le gradient de $f$ en $a$, est le vecteur $\nabla f(a)$ et défini par : +> $\nabla f(a) = \begin{pmatrix}\dfrac{ \partial f }{ \partial x_1 }\\ \dfrac{ \partial f }{ \partial x_2 } \\ \vdots \\ \dfrac{ \partial f }{ \partial x_{n} }\end{pmatrix}$ +^definition + +# Propriétés + + +- Si le vecteur gradient n'est pas nul, alors : + - il pointe dans la direction où la fonction croît le plus vite + - sa [[Norme]] est égale au taux de croissance dans cette direction \ No newline at end of file diff --git a/grammaire non-contextuelle.md b/grammaire non-contextuelle.md new file mode 100644 index 00000000..71a84cef --- /dev/null +++ b/grammaire non-contextuelle.md @@ -0,0 +1,17 @@ +--- +aliases: + - grammaire hors contexte + - grammaire hors-contexte + - grammaire non contextuelle + - grammaire non-contextuelle +--- +up:: [[grammaire]] +sibling:: [[langage non-contextuel]] +#informatique + +> [!smallquery]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")` +> ```breadcrumbs +> title: false +> type: tree +> dir: down +> ``` \ No newline at end of file diff --git a/grammaire.md b/grammaire.md new file mode 100644 index 00000000..fd2ece79 --- /dev/null +++ b/grammaire.md @@ -0,0 +1,9 @@ +up:: [[langages formels|langage formel]] + +> [!smallquery]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")` +> ```breadcrumbs +> title: false +> type: tree +> dir: down +> ``` + diff --git a/graphe d'une fonction.md b/graphe d'une fonction.md index 9f64457a..e12b32d5 100644 --- a/graphe d'une fonction.md +++ b/graphe d'une fonction.md @@ -1,3 +1,6 @@ +--- +aliases: [] +--- up::[[fonction]] title::"$\big\{ (x;f(x)) \mid x \in \mathscr{D}_{f} \big\}$" #maths/analyse diff --git a/historique des mémoires à tore.md b/historique des mémoires à tore.md new file mode 100644 index 00000000..fb9682f4 --- /dev/null +++ b/historique des mémoires à tore.md @@ -0,0 +1,17 @@ +up:: [[mémoire à tore de ferrite]] +#informatique #physique + +# évolution des caractéristiques + +## temps d'accès + +- [<] années 50 : cycles de $6\mu s$ +- [<] début 70' : cycles de $1.2\mu s$ +- [<] fin 70' : cycles de $0.6\mu s$ + +cependant, il existait déjà des mémoires plus rapides dans les années 60 : (par exemple, celle du CDC 6600, avec un cycle de $1\mu s$, en 1964). + +## coût par bit + + + diff --git a/hystérésis magnétique.md b/hystérésis magnétique.md new file mode 100644 index 00000000..e4831f38 --- /dev/null +++ b/hystérésis magnétique.md @@ -0,0 +1,15 @@ +up:: [[hystérésis]] +#physique + + +> [!definition] hystérésis magnétique +> Le phénomène d'[[hystérésis]] observé lors de la magnétisation d'un matériau. +> +> Lorsqu'un champ magnétique externe est appliqué à matériau ferromagnétique, les dipôles magnétiques atomiques s'alignent en fonction de ce dernier. +> +> Lorsque le champ est retiré, une partie de l'alignement demeure au sein du matériau : il à été aimanté +> [source : wikipedia](https://www.wikiwand.com/fr/Hyst%C3%A9r%C3%A9sis_magn%C3%A9tique) +^definition + + + diff --git a/hystérésis élastique.md b/hystérésis élastique.md new file mode 100644 index 00000000..b863d5d1 --- /dev/null +++ b/hystérésis élastique.md @@ -0,0 +1,10 @@ +up:: [[hystérésis]] +#physique + +> [!definition] hystérésis élastique +> Lors d'une déformation élastique, il y à hystérésis. +> +> L'hystérésis élastique est la différence entre **l'énergie de déformation nécessaire** pour créer une certaine contrainte et **l'énergie d'élasticité** pour cette contrainte. Elle est égale à l'énergie dissipée sous forme de chaleur dans le matériau. +> L’hystérésis élastique divisée par l’énergie de déformation élastique donne la capacité d’amortissement. +> [source](https://www.instron.com/fr-fr/resources/glossary/elastic-hysteresis) +^definition \ No newline at end of file diff --git a/hystérésis.md b/hystérésis.md new file mode 100644 index 00000000..4c7a15d6 --- /dev/null +++ b/hystérésis.md @@ -0,0 +1,19 @@ +up:: [[physique]] +#physique + +> [!definition] hystérésis +> Propriété d'un système dont l'évolution ne suit pas le même chemin selon qu'une cause extérieure augmente ou diminue +^definition + +> [!definition] hystérésis +> Soit une grandeur *cause* notée $C$ produisant une grandeur *effet* notée $E$. +> On dit qu'il y à hystérésis lorsque la courbe $E = f(C)$ obtenue à la croissance de $C$ ne se superpose pas avec la courbe $E = f(C)$ obtenue à la décroissance de $C$. +^definition-formelle + + +> [!info] Cause +> En général, l'hystérésis est due au fait que les variations de $E$ ne sont pas totalement [[système réversible|réversibles]]. +> Par exemple, la magnétisation d'un matériau par un courant électrique qui persiste lorsque le courant à disparu ([[hystérésis magnétique]]). + + + diff --git a/idée présentations salsiphi.md b/idée présentations salsiphi.md new file mode 100644 index 00000000..b789993a --- /dev/null +++ b/idée présentations salsiphi.md @@ -0,0 +1,18 @@ +--- +tags: + - PKM +--- +up:: [[salsiphi]], [[post queues]] +#science + + +> [!todo] meilleurs xkcd +> trouver les meilleurs xkcd et décrire le lore + + + +> [!done] Outlines +> Pourquoi les outlines sont un format d'information très pratique ? +> En quoi les outlines sont le format central de l'information ? +> [[présentation sur les outlines]] + diff --git a/importance des corps de métier.md b/importance des corps de métier.md index b8646525..ac968542 100644 --- a/importance des corps de métier.md +++ b/importance des corps de métier.md @@ -1,7 +1,7 @@ --- alias: [ "corps de métier" ] --- -up:: [[politique]] +up:: [[travail]] title:: #politique diff --git a/java héritage.md b/java héritage.md index e6b23faa..3bae40d5 100644 --- a/java héritage.md +++ b/java héritage.md @@ -1,7 +1,7 @@ --- alias: "héritage" --- -up::[[java]], [[paradygme programmation orientée objet|OOP]] +up::[[java]], [[programmation orientée objet java|OOP java]] #informatique ---- diff --git a/java objets.md b/java objets.md index 03978db9..8434c8c7 100644 --- a/java objets.md +++ b/java objets.md @@ -1,4 +1,4 @@ -up::[[java]], [[paradygme programmation orientée objet|OOP]] +up::[[java]], [[programmation orientée objet java|OOP java]] #informatique ---- diff --git a/java.md b/java.md index eda95799..c50f95df 100644 --- a/java.md +++ b/java.md @@ -1,5 +1,5 @@ up::[[langage de programmation]] -title::"[[paradygme programmation orientée objet|OOP]], haut niveau" +title::"[[paradigme programmation orientée objet|OOP]], haut niveau" #informatique ---- @@ -13,7 +13,7 @@ title::"[[paradygme programmation orientée objet|OOP]], haut niveau" > ``` # OOP -voir : [[paradygme programmation orientée objet|OOP]] +voir : [[paradigme programmation orientée objet|OOP]] diff --git a/kanban soirée jeux.md b/kanban soirée jeux.md index 5e2cda1e..dab738d9 100644 --- a/kanban soirée jeux.md +++ b/kanban soirée jeux.md @@ -6,12 +6,13 @@ kanban-plugin: basic ## :fas_list: A faire +- [ ] Choisir date : 18 - [ ] Mail pour la salle - [ ] Mail à Romain +- [ ] Créer affiche - [ ] Com par mail (envoyer l'affiche)
    [[plan com soirées jeux]] - [ ] Acheter nourriture - [ ] Etre sûr d'avoir des jeux -- [ ] Créer affiche ## :luc_send: Envoyé
    (attente de réponse) @@ -24,7 +25,6 @@ kanban-plugin: basic ## :fas_check: fait -- [ ] Choisir date : 18 diff --git a/langage accepté par une machine de Turing.md b/langage accepté par une machine de Turing.md new file mode 100644 index 00000000..9aecfe8c --- /dev/null +++ b/langage accepté par une machine de Turing.md @@ -0,0 +1,9 @@ +up:: [[machine de turing]], [[langages formels|langage formel]] +#informatique + +> [!definition] langage accepté par une machine de Turing +> Un [[langages formels|langage]] est accepté par une [[machine de turing]] $M$ si pour tout mot de ce langage, l'exécution de $M$ conduit à un état acceptateur. +> +> On ne sait pas ce qui se passe pour les mots qui n'appartiennent pas au langage. +^definition + diff --git a/langage de description de schéma XML.md b/langage de description de schéma XML.md new file mode 100644 index 00000000..70195a8b --- /dev/null +++ b/langage de description de schéma XML.md @@ -0,0 +1,15 @@ +--- +aliases: + - langage de schéma XML +--- +down:: [[DTD]] +up:: [[xml]], [[langage descriptif]] +#informatique + +> [!smallquery]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")` +> ```breadcrumbs +> title: false +> type: tree +> dir: down +> ``` + diff --git a/langage de programmation.md b/langage de programmation.md index 94ce33a5..4a5786af 100644 --- a/langage de programmation.md +++ b/langage de programmation.md @@ -1,7 +1,13 @@ up:: [[programmation]], [[langages]] #informatique ----- +> [!smallquery]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")` +> ```breadcrumbs +> title: false +> type: tree +> dir: down +> depth: -1 +> ``` # Liste des langages Listes des langages référencés dans ce vault @@ -11,11 +17,4 @@ FROM #informatique WHERE up = this.file.link ``` -> [!smallquery]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")` -> ```breadcrumbs -> title: false -> type: tree -> dir: down -> depth: -2 -> ``` diff --git a/langage descriptif.md b/langage descriptif.md new file mode 100644 index 00000000..47e23bc3 --- /dev/null +++ b/langage descriptif.md @@ -0,0 +1,12 @@ +up:: [[langages]] +#informatique + + +> [!smallquery]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")` +> ```breadcrumbs +> title: false +> type: tree +> dir: down +> ``` + + diff --git a/langage décidé.md b/langage décidé.md new file mode 100644 index 00000000..2001a2a7 --- /dev/null +++ b/langage décidé.md @@ -0,0 +1,13 @@ +up:: [[langages formels|langage formel]], [[machine de turing]] +sibling:: [[décidabilité]] +#informatique + +> [!definition] langage décidé +> Un langage est dit *décidé* si il est [[langage accepté par une machine de Turing|accepté]] par une [[machine de turing]] ET que cette machine n'a aucune exécution infinie. +> +> Cela garantit que : +> - tout mot du langage représente une instance d'un [[problème de décision]] +> - on peut toujours dire **en un temps fini** si la réponse au problème de décision modélisé est VRAI ou FAUX +^definition + + diff --git a/le travail n'est pas une valeur morale, c'est pourquoi il a une valeur marchande.md b/le travail n'est pas une valeur morale, c'est pourquoi il a une valeur marchande.md new file mode 100644 index 00000000..c6ae20ca --- /dev/null +++ b/le travail n'est pas une valeur morale, c'est pourquoi il a une valeur marchande.md @@ -0,0 +1,25 @@ +--- +aliases: + - le travail n'est pas une valeur morale, c'est pourquoi il a une valeur marchande + - Le travail n'est pas un devoir, c'est pourquoi il a un prix + - Le travail en lui-même ne vaut rien - au sens des valeurs morales - c'est pourquoi on le paie + - André Comte-Sponville le travail n'est pas une valeur morale, c'est pourquoi il a une valeur marchande +--- +author:: [[André Comte-Sponville]] +source:: +link:: +date-seen::2024-03-04 +#citation + +> [!cite] Titre +> Le travail n'est pas une valeur morale, c'est ce que prouvent le premier mai, les vacances, et le salaire (c'est-à-dire, au fond, trois conquêtes syndicales). +> Le travail en lui-même ne vaut rien - au sens des valeurs morales - c'est pourquoi on le paie. +> Il n'est pas une valeur morale, c'est pourquoi il a une valeur marchande. +> Il n'est pas un devoir, c'est pourquoi il a un prix. +^cite + +## Interprétation +- argument contre la [[valeur travail]] +- opposition entre : + - ce qui est une valeur morale, un devoir, ce qui a une valeur en soi + - ce qui a une valeur marchande, ce que l'on paie, ce que l'on fait contre rémunération diff --git a/machine de turing.md b/machine de turing.md new file mode 100644 index 00000000..476aeb60 --- /dev/null +++ b/machine de turing.md @@ -0,0 +1,10 @@ +up:: [[automate]] +#informatique + +> [!smallquery]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")` +> ```breadcrumbs +> title: false +> type: tree +> dir: down +> ``` + diff --git a/matrice hessienne.md b/matrice hessienne.md new file mode 100644 index 00000000..7ab3ca2d --- /dev/null +++ b/matrice hessienne.md @@ -0,0 +1,33 @@ +up:: [[points critiques d'une fonction]], [[fonction de plusieurs variables]] +#maths/analyse + +> [!definition] matrice hessienne +> Soit une fonction $\begin{align} f :\;& \mathbb{R}^{n}\to\mathbb{R}\\&(x_1, x_2, \dots ,x_{n}) \mapsto f(x_1,\dots,x_{n}) \end{align}$ +> +> Dont toutes les [[dérivée partielle|dérivées partielles]] secondes existent. +> La matrice hessienne de $f$, $H(f)$ est définie comme : +> +> $\displaystyle H_{ij}(f) = \frac{ \partial f }{ \partial x_{i} \partial x_{j} }$ +> +> Donc : +> +> $$ H(f) = +> \begin{pmatrix} +> \dfrac{ \partial f }{ \partial {x_1}^{2} } & \dfrac{ \partial f }{ \partial x_1 \partial x_2 } & \cdots & \dfrac{ \partial f }{ \partial x_1 \partial x_{n} } \\ +> \dfrac{ \partial f }{ \partial x_2 \partial x_1 } & \dfrac{ \partial f }{ \partial x_2 \partial x_2 } & \cdots & \dfrac{ \partial f }{ \partial x_2 \partial x_{n} } \\ +> \vdots & \vdots & \ddots & \vdots \\ +> \dfrac{ \partial f }{ \partial x_n \partial x_1 } & \dfrac{ \partial f }{ \partial x_n \partial x_2 } & \cdots & \dfrac{ \partial f }{ \partial x_n \partial x_{n} } \\ +> \end{pmatrix} +> $$ +> +> Le [[déterminant hessien]] permet de déduire des propriétés sur la fonction (points critiques) +^definition + +> [!definition] Définition par rapport au [[gradient d'une fonction|gradient]] +> Soit $\nabla f$ le [[gradient d'une fonction|gradient]] de $f$, on a : +> $H_i(f) = \dfrac{ \partial \nabla f }{ \partial x_{i} }$ +> Soit : +> $\displaystyle H_{ij}(f) = \frac{ \partial }{ \partial x_{i} } \left( \nabla f \right)_{j}$ + +# Propriétés +- [[déterminant hessien]] diff --git a/matrice.md b/matrice.md index dacc09c2..c49632ac 100644 --- a/matrice.md +++ b/matrice.md @@ -10,8 +10,8 @@ $A=\begin{pmatrix} 0 &1 & 2 & 3\\ 4 & 5 & 6 & 7\\ 8 & 9 & 10 & 11\\ \end{pmatrix # Élément d'une matrice -On note $A_{i,j}$ l'élément à la ligne $i$ et à la colonne $j$. -$A_{2,3} = 6$ +On note $\displaystyle A_{i,j}$ l'élément à la ligne $i$ et à la colonne $j$. +$\displaystyle A_{2,3} = 6$ # Opérations sur les matrices : diff --git a/mermaid-cli.md b/mermaid-cli.md new file mode 100644 index 00000000..c1d5185d --- /dev/null +++ b/mermaid-cli.md @@ -0,0 +1,4 @@ +up:: [[terminal commandes]] +#informatique + +Outil pour compiler le mermaid en images png/svg/pdf \ No newline at end of file diff --git a/mesurer l'importance dans un graphe de connaissances.md b/mesurer l'importance dans un graphe de connaissances.md new file mode 100644 index 00000000..85ddab30 --- /dev/null +++ b/mesurer l'importance dans un graphe de connaissances.md @@ -0,0 +1,32 @@ +up:: [[graphe de connaissances]] +link:: https://www.rankingdom.org/ +#informatique + + + +> [!idea] Idée clef +> On peut mesurer l'importance par le nombre de liens (entrants/sortants) + + +> [!definition] Champ +> Les noeuds qui partent du sujet mesuré. +> Le **champ** est donc le **[[degré d'un graphe|degré]] sortant** +> Ex: L'*art* fait partie du champ de *la peinture* + +> [!definition] Influence +> Les noeuds qui arrivent sur le sujet mesuré. +> L'**influence** est donc le **[[degré d'un graphe|degré]] entrant** +> Ex: *Picasso* fait partie de l'influence de *la peinture* + + + +> [!note] Site utilisant ce principe +> Rankingdom : site créé par le LIFAT +> https://www.rankingdom.org/ +> +> Organisation des données : +> - de plus général à plus spécifique +> - réflexion sur l'organisation des données présentées, sur leur "lisibilité" + + + diff --git a/militantisme.méthodes d'action.md b/militantisme.méthodes d'action.md index 04252ae6..6a18980c 100644 --- a/militantisme.méthodes d'action.md +++ b/militantisme.méthodes d'action.md @@ -1,7 +1,7 @@ up:: [[militantisme]] #politique -> [!query]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")` +> [!smallquery]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")` > ```breadcrumbs > title: false > type: tree diff --git a/mémoire de L3.md b/mémoire de L3.md new file mode 100644 index 00000000..e973d584 --- /dev/null +++ b/mémoire de L3.md @@ -0,0 +1,19 @@ +#informatique #fac + + +# Sujet + +- il existe de nombreux paradigmes de programmation +- sachant que tous les langages turing-complets sont formellement équivalents (ils ont la même capacité à exprimer l'ensemble des problèmes calculables), l'existance de tant de paradigmes différents peut sembler étonnante, voire inutile. +- Nous allons étudier : + - une définition de ce qu'est un paradigme de programmation + - une présentation de plusieurs paradigmes + - en quoi certains paradigmes sont plus adaptés + - pour l'apprentissage + - pour la résolution de problèmes particuliers + - pour l'expression de problèmes (pouvoir d'expression) + +Il existe de nombreux paradigmes de programmation. Puisque tous les langages turing-complets sont formellement équivalents (ils ont la même capacité à exprimer l'ensemble des problèmes calculables), l'existance de tant de paradigmes différents peut sembler étonnante, voire inutile. Nous essayerons de comprendre pourquoi il existe tant de paradigmes différents. Nous présenteront d'abord une définition de ce qu'est un paradigme de programmation, puis nous exposeront en quoi différents paradigmes sont plus adaptés pour différentes raisons : pour l'apprentissage, pour la résolution ou l'expression de certains types de problèmes et pour les apports que fait chaque paradigme en général. + + + diff --git a/mémoire à cordes de ferrites.md b/mémoire à cordes de ferrites.md new file mode 100644 index 00000000..cfb4f123 --- /dev/null +++ b/mémoire à cordes de ferrites.md @@ -0,0 +1,36 @@ +up:: [[mémoire à tore de ferrite]] +#informatique #physique + + +> [!definition] mémoire à cordes de ferrites +> La mémoire à cordes de ferrites (*core rope memory*) est un type de [[mémoire ROM]]. +> Le principe est d'écrire des 1 ou des 0 en faisant passer ou non des fils électriques dans un toroide magnétique. +> Les toroides sont ensuite utilisés, non pas pour stocker des valeurs, mais pour faire le décodage des addresses. +> +^definition + +# Fonctionnement + + +## Encodage + +![[mémoire à cordes de ferrites 2024-02-15 20.04.20.excalidraw|1100]] + +Chaque adresse mémoire à son propre toroide. +Chaque fil peut passer ou non dans ce toroide. +- Un fil qui **passe** dans ce toroide représente un bit 1 à cette adresse. +- Un fil qui ne **passe pas** dans ce toroide représente un bit 0 à cette adresse. +On divise les fils en groupes pour chaque mot. Des circuits s'occupent de la commutation entre les mots ([[multiplexage]]) + +## Lecture + +Les toroides servent à l'adressage. +La lecture fonctionne avec le cycle suivant : +- On envoie une impulsion sur le câble `Reset` pour aligner la polarisation de tous les toroides +- On choisit les bons câbles d'inhibition pour inhiber tous les toroides sauf celui de l'adresse qu'on veut lire + - On envoie une impulsion dans le câble `Set`, pour inverser la polarité du toroide choisi +- On envoie une impulsion dans le câble `Reset` + - Le toroide choisi a sa polarité inversée + - le changement de polarité induit un courrant électrique dans tous les câbles qui passent au travers, donc on peut lire le mot qui nous intéresse. + + diff --git a/mémoire à tore de ferrite.md b/mémoire à tore de ferrite.md new file mode 100644 index 00000000..a03a419c --- /dev/null +++ b/mémoire à tore de ferrite.md @@ -0,0 +1,62 @@ +up:: [[mémoire]] +#informatique #physique + +> [!definition] mémoire à tore de ferrite +> Type de [[mémoire]] qui utilise l'[[hystérésis magnétique]] pour stocker de l'information binaire dans un toroide de métal magnétique (notamment la ferrite). +^definition + +# Fonctionnement + +> [!info] Stockage par [[hystérésis magnétique]] +> Un tore de ferrite est capable de garder une magnétisation imposée, grâce à son [[hystérésis magnétique]]. +> Plus particulièrement, son hystérésis fait que, lorsqu'elle est exposée à un courant électrique suffisamment fort dans une orientation, le [[courant de foucault]] créée un flux magnétique à travers le toroide, et peut changer sa polarisation magnétique. +> +> Pour stocker des données, on décide d'une polarisation qui correspond au 0 binaire, et la polarisation opposée correspondra au 1 binaire. + +> [!note]- écriture +> Pour écrire sur un toroide, il suffit de le faire traverser par un courant électrique suffisamment [[intensité électrique|intense]] dans la bonne direction pour fixer sa polarisation. +> +> Il faut donc faire passer un fil à l'intérieur du tore. Selon l'orientation du courant, et si l'intensité est suffisante, le tore prendra la même polarisation que courant du fil qui le traverse. +> +> Certaines mémoires à tore utilisent plusieurs fils pour l'écriture : +> - un fil `Reset`, qui est dans l'orientation du 0 (il écrit 0 sur le tore si un courrant le traverse) +> - un fil `Set`, qui est dans l'orientation du 1 (il écrit A sur le tore si un courant le traverse) +> - parfois un fil `Inhibit`, qui inhibe l'action du `Set`, c'est-à-dire qu'il est impossible de faire passer un tore à 1 si un courant traverse ce fil + +> [!note]- Lecture +> Il est compliqué de détecter précisément un champ magnétique statique. Cependant, un champ magnétique qui s'inverse génère une impulsion électrique si il traverse un conducteur (l'inversion du champ magnétique génère un flux magnétique dans le conduction, ce qui génère un courant par induction). +> +> Il est donc possible de connaître l'état d'un tore de ferrite en le "forcant" à adopter une polarité. +> +> Pour connaître l'orientation contenue dans un tore, il suffit donc de le forcer à changer ver une orientation donnée. Si l'orientation ne change pas, aucun flux magnétique important ne sera généré par le tore. Si l'orientation s'inverse, un flux magnétique sera généré, et un cable qui passe à travers le tore recevra une impulsion électrique. +> +> Voici le shéma d'un tore avec 3 fils : +> +> ![[mémoire à tore de ferrite 2024-02-15 01.02.52.excalidraw]] +> +> Un cycle de lecture serait d'envoyer une impulsion dans le fil `Reset`. Deux cas de figure sont alors possible : +> - le tore est dans l'orientation 0, le courant dans `Reset` ne change pas sa polarisation et le tore ne génère pas de flux magnétique important +> - le tore est dans l'orientation 1, le courant dans `Reset` **change sa polarisation** et le tore génère un flux magnétique, qui induit une impulsion électrique dans le fil `Sense` +> +> +> > [!attention] Lecture destructive +> > Puisqu'il faut forcément mettre le tore à 0 pour pouvoir lire son état, la lecture de l'état du tore est **destructive** : elle supprime l'information. +> > +> > Il est donc important d'implémenter un cycle **écriture-après-lecture**, qui permet de réécrire la valeur sur le tore si elle à été perdue. +> > +> > > [!NOTE]- Instructions assembleurs spécifiques +> > > Certains processeurs utilisant ces mémoires ont implémenté des instructions assembleur qui profitaient de ce cycle écriture-après-lecture, par exemple des instructon qui inversent directement des bits dans la mémoire, sans avoir à passer par un registre. + + +# Types de mémoire + +- [[mémoire à tore de ferrite matricielle]] +- [[mémoire à cordes de ferrites]] + + +> [!query]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")` +> ```breadcrumbs +> title: false +> type: tree +> dir: down +> ``` \ No newline at end of file diff --git a/mémoire.md b/mémoire.md index 95bbdd3f..670f1f9c 100644 --- a/mémoire.md +++ b/mémoire.md @@ -1,36 +1,15 @@ -up::[[architecture des ordinateurs]] -#informatique +--- +aliases: + - mémoire (informatique) +tags: + - informatique +--- +up:: [[architecture des ordinateurs]] ----- - - - espace de [[stockage des données]] - - composées de circuits logiques - - - quantifiée en fonction de : - - son coût - - son temps de réponse - - sa taille - - - mémoire de stockage (hors [[registres]]) - - se retrouve partout <== pour accélérer les échanges - - différence entre certains processeurs - - malgré des mêmes [[registres]] - -> [!note] différence ROM/RAM -> - ROM : lecture seule -> - RAM : écriture - - - -# Types de mémoire -![[mémoire 2022-09-21 10.21.29.excalidraw|600]] - -# Sous-notes -> [!query] Sous-notes de `=this.file.link` -> ```dataview -> TABLE title, up as "Up", up.up as "2-Up", up.up.up as "3-Up", up.up.up.up as "4-Up" -> FROM -#cours AND -#exercice AND -"daily" AND -#excalidraw AND -#MOC -> WHERE econtains(list(up, up.up, up.up.up, up.up.up.up), this.file.link) -> WHERE file.link != this.file.link -> SORT up.up.up.up, up.up.up, up.up, up +> [!smallquery]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")` +> ```breadcrumbs +> title: false +> type: tree +> dir: down > ``` + diff --git a/naissance du capitalisme.md b/naissance du capitalisme.md new file mode 100644 index 00000000..df554f07 --- /dev/null +++ b/naissance du capitalisme.md @@ -0,0 +1,2 @@ +up:: [[capitalisme]] + diff --git a/noam chomsky.md b/noam chomsky.md new file mode 100644 index 00000000..d7490dc3 --- /dev/null +++ b/noam chomsky.md @@ -0,0 +1,14 @@ +title:: +link:: +#personne + +Linguiste et informaticien. + +> [!smallquery]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")` +> ```breadcrumbs +> title: false +> type: tree +> dir: down +> ``` + + diff --git a/obsidian syntaxe.md b/obsidian syntaxe.md index ded7ac71..801625e0 100644 --- a/obsidian syntaxe.md +++ b/obsidian syntaxe.md @@ -2,7 +2,6 @@ up:: [[obsidian]] title::"syntaxe de base de obsidian" #obsidian ----- # Titres diff --git a/paradigme de l'assignation simultanée.md b/paradigme de l'assignation simultanée.md new file mode 100644 index 00000000..e44be994 --- /dev/null +++ b/paradigme de l'assignation simultanée.md @@ -0,0 +1,40 @@ +up:: [[paradigme de programmation|paradigmes]] +source::[[floydParadigmsProgramming1979]] +#informatique + +> [!definition] paradigme de l'assignation simultanée +> Consiste à faire en sorte que plusieurs variables soient modifiées sans que leurs effets de bord ne se mélangent (les effets de bord sont "reardés" après l'assignation). +> Cela est équivalent à imaginer que ces assignations se font simultanément +^definition + + +> [!example] Exemple +> Si on veut ajouter la valeur de `f(Y)` à `X` et à `Y` : +> ```python +> temp = f(Y) +> X += temp +> Y += temp +> ``` + + +> [!example] Exemple - modèle proie-prédateur +> Si on à un modèle proie-prédateur de la forme : +> $W' = f(W, R)$ +> $R' = g(W, R)$ +> +> Un débutant coderait ceci : +> ```python +> for _ in range(...): +> W = f(W, R) +> R = f(W, R) +> ``` +> +> Le problème est que la plupart des lagages ne supportent pas directement l'assignation simultanée. Il faut donc faire : +> +> ```python +> for _ in range(...): +> temp = f(W, R) +> W = f(W, R) +> R = f(W, R) +> W = temp +> ``` diff --git a/paradigme de programmation.md b/paradigme de programmation.md new file mode 100644 index 00000000..4bcad1a5 --- /dev/null +++ b/paradigme de programmation.md @@ -0,0 +1,32 @@ +--- +aliases: + - paradigmes de programmation + - paradigmes +--- +up:: [[programmation]] +source:: [[ParadigmeProgrammation]] +#informatique + +> [!definition] paradigme de programmation +> Un paradigme est une façon d'approcher la [[programmation]] et de formuler les problèmes et leurs formalisation dans un [[langage de programmation]]. Ce n'est pas la méthodologie (concept plus bas niveau). +> +> Le paradigme fournit (et détermine) la vision du développeur sur l'exécution de son programme. +^definition + + +> [!example] Exemples de paradigmes +> - [[paradigme programmation orientée objet|programmation orientée objet]] +> - on considère un programme comme un ensemble d'objets qui intéragissent +> - [[paradigme programmation fonctionnelle|programmation fonctionnelle]] +> - on considère un programme comme l'évaluation de fonctions sans état + + +> [!smallquery]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")` +> ```breadcrumbs +> title: false +> type: tree +> dir: down +> depth: -1 +> ``` + + diff --git a/paradigme programmation concurrente.md b/paradigme programmation concurrente.md new file mode 100644 index 00000000..e67a4832 --- /dev/null +++ b/paradigme programmation concurrente.md @@ -0,0 +1,14 @@ +up:: [[paradigme de programmation]] +#informatique + + +> [!definition] programmation concurrente +> Lorsque plusieurs "fils d'exécution", plusieurs [[processus]], plusieurs +^definition + + + +> [!cite] Définition wikipedia (en) +> **Concurrent computing** is a form of [computing](https://www.wikiwand.com/en/Computing "Computing") in which several [computations](https://www.wikiwand.com/en/Computation "Computation") are executed _[concurrently](https://www.wikiwand.com/en/Concurrency_(computer_science) "Concurrency (computer science)")_—during overlapping time periods—instead of _sequentially—_with one completing before the next starts. + + diff --git a/paradigme programmation dynamique.md b/paradigme programmation dynamique.md new file mode 100644 index 00000000..1f741e86 --- /dev/null +++ b/paradigme programmation dynamique.md @@ -0,0 +1,4 @@ +up:: [[paradigme de programmation]] +#informatique + + diff --git a/paradigme programmation modulaire.md b/paradigme programmation modulaire.md new file mode 100644 index 00000000..f14fa79b --- /dev/null +++ b/paradigme programmation modulaire.md @@ -0,0 +1,3 @@ +up:: [[paradigme de programmation]] +#informatique + diff --git a/paradigme programmation orientée objet.md b/paradigme programmation orientée objet.md new file mode 100644 index 00000000..c58ce7b2 --- /dev/null +++ b/paradigme programmation orientée objet.md @@ -0,0 +1,25 @@ +--- +alias: ["orienté objet", "programmation orientée objet", "OOP"] +--- +up::[[paradigme de programmation]] +#informatique + +Contrairement a la programmation [[paradigme programmation procédurale|procédurale]] (définition de _procédures_), la programmation _orientée objet_ repose sur la définition de _classes_, qui instancient des *objets*. + +En programmation orientée objet, on considère un programme comme un ensemble d'objets qui intéragissent. + +> [!définition] Classe +> - _champs_ : données manipulées par la classe +> - _méthodes_ : permettent : +> - de modifier / calculer les attributs +> - d'interagir avec d'autres objets + + +> [!smallquery]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")` +> ```breadcrumbs +> title: false +> type: tree +> dir: down +> depth: -2 +> ``` + diff --git a/paradigme programmation procédurale.md b/paradigme programmation procédurale.md new file mode 100644 index 00000000..350157a2 --- /dev/null +++ b/paradigme programmation procédurale.md @@ -0,0 +1,2 @@ +up:: [[paradigme de programmation]] +#informatique diff --git a/paradygme de programmation.md b/paradygme de programmation.md deleted file mode 100644 index 369e07bf..00000000 --- a/paradygme de programmation.md +++ /dev/null @@ -1,15 +0,0 @@ -up:: [[programmation]] -title:: -#informatique - ---- - - - -> [!query] sous-notes directes de `=this.file.link` -> ```dataview -> LIST title -> FROM "" -> WHERE econtains(up, this.file.link) -> ``` - diff --git a/paradygme programmation orientée objet.md b/paradygme programmation orientée objet.md deleted file mode 100644 index d8f4f62b..00000000 --- a/paradygme programmation orientée objet.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -alias: ["orienté objet", "programmation orientée objet", "OOP"] ---- -up::[[paradygme de programmation]] -#informatique - ----- - -Contrairement a la programmation [[paradygme programmation procédurale|procédurale]] (définition de _procédures_), la programmation _orientée objet_ repose sur la définition de _classe_ - -> [!définition] Classe -> - _champs_ : données manipulées par la classe -> - _méthodes_ : permettent : -> - de modifier / calculer les attributs -> - d'interagir avec d'autres objets - - - diff --git a/phrases.md b/phrases.md index 07521006..e1e96421 100644 --- a/phrases.md +++ b/phrases.md @@ -1,7 +1,5 @@ #autres ----- - # Claire > - j'ai un truc qui bloque le levier de vitesse @@ -12,11 +10,10 @@ - je suis malade, j'ai du mal à ne plus l'être -# Eric - # Oscar - "Dans mon contrôle de maths, pour avoir $20$, il fallait avoir $0$" - Tu as entendu, Oscar ? Gérard a dit que tu avais des parents intelligents ! Et Oscar de répondre : « s’il a fallu quelqu’un d’aussi intelligent que lui pour le remarquer, c’est que c’était pas facile à voir ! » + - "qui à fait l'appel du 18 juin ? Je sait pas, mais il devait pas être bien après 18 joints" # Samuel - Pourquoi les plongeurs basculent en arrière ? Parce que si ils basculent en avant, ils tombent dans le bateau. @@ -43,6 +40,9 @@ - Max Lemoine - "je sais écrire mon prénom en anglais" - "ta tête, elle te va bien !" + - Dario Weinberger + - "Mais non, c'est juste que je suis né avant les autres" + diff --git a/politique.md b/politique.md index 47dad981..2f021e9d 100644 --- a/politique.md +++ b/politique.md @@ -17,6 +17,15 @@ title:: > title: false > type: tree > dir: down -> depth: -3 +> depth: -1 +> ``` + + +> [!smallquery]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")` +> ```breadcrumbs +> title: false +> type: tree +> dir: down +> depth: -2 > ``` diff --git a/presentation_outlines.md b/presentation_outlines.md new file mode 100644 index 00000000..57a90908 --- /dev/null +++ b/presentation_outlines.md @@ -0,0 +1,270 @@ +--- +title: "" +--- + +```h2 +Bonjour +``` + +--- + +```h2 +Aujourd'hui +``` + +--- + + +```h1 +EMACS +``` + +--- + +# Les raccourcis EMACS + +. . . + + 1. Brève histoire + 2. Principe + 3. Modularité et extensibilité + 4. Comparaison avec vim + 5. Conclusion + 6. Exemples supplémentaires + +--- + + +# Les raccourcis EMACS + +. . . + +EMACS = Extensible MACro System + +. . . + +EMACS = Eight Mega And Constantly Swappig + +. . . + +EMACS = Esc Meta Alt Control Shift + + +--- + +```h1 +Gotcha ! +``` +(catch chem all) + +--- + +# Les *Outline* + +En quoi les *outlines* sont le format central d'expression de l'information ? + +--- + +## 1. L'information textuelle + +> - manipulable +> - conservable +> - extraits, citations + + +--- + +## 2. Les *outlines* + +> - Texte indenté +> > - indentation sémantique +> > > - meilleur compromis visuel / pratique +> > - idées séquentielles ou en vrac +> > > - numérotation +> > > - dates +> > > - symboles +> > - manipulabilité +> > > - facile à créer +> > > - texte seulement +> > > - outliners + +--- + +## 2. Les *outlines* + +```h2 +c'est cool ! +``` + +--- + +## 3. Le centre de tous les formats + +``` + + + + + .--------. + |outlines| + '--------' + + + + + + +``` + +--- + +## 3. Le centre de tous les formats + +``` + + + + texte à chapitres + .--------. / + |outlines| ----------' + '--------' + + + + + + +``` + +--- + +## 3. Le centre de tous les formats + +``` + + texte rédigé + / + texte à chapitres------' + .--------. / + |outlines| ----------' + '--------' + + + + + + +``` + +--- + +## 3. Le centre de tous les formats + +``` + + texte rédigé + / | + texte à chapitres------' | + .--------. / / + |outlines| ----------' / + '--------' vidéo + + + + + + +``` + +--- + +## 3. Le centre de tous les formats + +``` + + texte rédigé + / | + texte à chapitres------' | + .--------. / / + .--------- |outlines| ----------' / + / '--------' vidéo + cartes mentales + + + + + +``` + +--- + +## 3. Le centre de tous les formats + +``` + + texte rédigé + / | + texte à chapitres------' | + .--------. / / + .--------- |outlines| ----------' / + / '--------' vidéo + cartes mentales \_________ + \ + slides textuelles + + + +``` + +--- + +## 3. Le centre de tous les formats + +``` + + texte rédigé + / | + texte à chapitres------' | + .--------. / / + .--------- |outlines| ----------' / + / '--------' vidéo + cartes mentales \_________ + \ + slides textuelles + \______ + \ + slides +``` + +--- + +## 3. Le centre de tous les formats + +``` +.-------------------------------------------------------------------. +| texte rédigé| +| / | | +| texte à chapitres------' | | +| .--------. / / | +| .--------- |outlines| ----------' / | +| / '--------' vidéo | +|cartes mentales \_________ | +| \ | +| slides textuelles | +| \______ | +| \ | +| slides | +'-------------------------------------------------------------------' +``` + +--- + +## 4. Limitations + + + - moins visuel qu'une carte mentale + - liens complexes / organisations riches + +--- +penser à proposer un secrétariat + diff --git a/principe du parapluie.md b/principe du parapluie.md new file mode 100644 index 00000000..eda6112e --- /dev/null +++ b/principe du parapluie.md @@ -0,0 +1,29 @@ +--- +aliases: + - principe du parapluie + - parapluie +--- +up:: +#maths #philosphie + +> [!definition] parapluie +> Un parapluie désigne, en matématiques, une combinaison particulière de deux fonctions : +> $$\boxed{f^{-1}\circ g \circ f}$$ +> +> En général, cela désigne le fait de réaliser un processus $g$, mais de réaliser d'abord un processus $f$, et ensuite un processus $f^{-1}$ qui est la [[fonction réciproque|réciproque]] de $f$. +> +> L'intérêt est d'exécuter $g$ dans le contexte apporté par $f$, mais sans garder ce contexte. +> Par exemple : +> 1. mettre le parapluie ($f$) +> 2. traverser le pont ($g$) +> 3. enlever le parapluie ($f^{-1}$) +> Cela permet de traverser le pont sans être mouillé, mais les autres paramètres sont inchangés (on a pas gardé le parapluie). +^definition + +# Exemples + +- lorsque l'on pose une clef sous le paillasson : + 1. on prends la clef sous le paillasson + 2. on ouvre la porte + 3. on remet la clef sous le paillasson + diff --git a/principes FAIR.md b/principes FAIR.md new file mode 100644 index 00000000..3e43dd34 --- /dev/null +++ b/principes FAIR.md @@ -0,0 +1,53 @@ +sibling:: [[science ouverte]] +#informatique + +> [!definition] +> FAIR : +> - Findable +> - A +> - Interoperable +> - Reusable +> +> pas nécessairement ouvert (peut être privatif) +> +^definition + +# FAIR + +## Findable +- pouvoir identifier des objets +- indexer les données (médadonnées pour avoir un index unique) + +## Accessible +- interdiction de limiter l'accès + - [c] on ne veut pas : + - demander le l'argent + - demander une authentification (carte de crédit) + +## Interoperable +- standardisation des métadonnées +- donner un format universel et précis +- la standardisation + +## Reusable +- préciser le contexte des informations + - dater les informations + - pour que l'information soit réutilisable : même les informations qui fluctuent dans le temps deviennent réutilisable si on les date + - préciser la langue + +# Historique + +- [<] 2007 : 'Principles and Guidelines for Acess to Research Data from Public Funding', OCDE +- [<] 2014 : workshop : 'Jointly Designing a Data Fairport' + - acteurs académiques et privés + - création des prinipes FAIR +- [<] 2016 : principes FAIR + + +# Voir + +- il existe des calculateurs FAIR + - verrifier automatiquement si une ressource respecte les principes FAIR + - [FAIR-Checker](https://fair-checker.france-bioinformatique.fr/) + + diff --git a/problèmes des mémoires à tores de ferrite.md b/problèmes des mémoires à tores de ferrite.md new file mode 100644 index 00000000..ac424e6f --- /dev/null +++ b/problèmes des mémoires à tores de ferrite.md @@ -0,0 +1,30 @@ +--- +aliases: + - désavantages des mémoires à tores de ferrite +--- +up:: [[mémoire à tore de ferrite]] +opposes:: [[avantages des mémoires à tores de ferrite]] +#informatique #physique + +# Sensibilité à la température + +Malgré son insensibilité à beaucoup de perturbations (impulsions électromagnétiques, rayonnements radioactifs), la mémoire à tore de ferrite est sensible à la **température**. + +Plusieurs stratégies ont été mises en place : + - thermistance pour réguler le flux de courant en fonction de la température ambiante + - régulation de la température de la mémoire + - refroidir est plus compliqué, chauffer la mémoire est plus simple + - problème : cela prends du temps (démarrage qui prends parfois jusqu'à 30 minutes) + +# Fabrication + +La fabrication des mémoires à tore de ferrite à toujours été faîte à la main. De nombreuses tentatives d'automatisation ont conduit à des procédés semi-automatiques, mais le passage des fils au travers des matrices de tores s'est toujours fait à la main. + +# Dépannage + +Le diagnostic et le dépannage est lent, car il faut tester chaque tore sous diverses conditions. + +Le dépannage consistait parfois à taper doucement, ce qui déplacait les tores, et pouvait les réaligner. + +Ceci dit, les problèmes étaient rares, car ces mémoires étaient fiables comparativement aux autres composants des ordinateurs de l'époque. + diff --git a/programmation orientée objet java.md b/programmation orientée objet java.md new file mode 100644 index 00000000..a3be4adf --- /dev/null +++ b/programmation orientée objet java.md @@ -0,0 +1,7 @@ +--- +aliases: + - OOP java +--- +up:: [[paradigme programmation orientée objet]] +#informatique + diff --git a/programmation serveur (backend).md b/programmation serveur (backend).md new file mode 100644 index 00000000..fbb886b4 --- /dev/null +++ b/programmation serveur (backend).md @@ -0,0 +1,15 @@ +--- +aliases: + - backend + - programmation côté serveur + - programmation serveur +--- +up:: [[programmation web]] +#informatique + +> [!smallquery]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")` +> ```breadcrumbs +> title: false +> type: tree +> dir: down +> ``` \ No newline at end of file diff --git a/programmation structurée.md b/programmation structurée.md new file mode 100644 index 00000000..f5f27a5c --- /dev/null +++ b/programmation structurée.md @@ -0,0 +1,27 @@ +--- +aliases: + - programmation structurée + - paradigme programmation structurée +--- +up:: [[paradigme de programmation]] +#informatique + +2 étapes : + +# Raffinement progressif + +*top-down design* + +Découper un problème en sous-problèmes simples (on répète jusqu'a ce que les sous-problèmes soient assez simples pour être implémentés directement). + +# Cacher les détails + +*bottom top* + +On implémente les sous-problèmes, en [[encapsulation|encapsulant]] tous les détails d'implémentation. On **cache les détails**. + + +# Références + +source:: [[floydParadigmsProgramming1979]] + diff --git a/programmation web.md b/programmation web.md new file mode 100644 index 00000000..b39b49f0 --- /dev/null +++ b/programmation web.md @@ -0,0 +1,9 @@ +up:: [[programmation]] +#informatique + +> [!smallquery]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")` +> ```breadcrumbs +> title: false +> type: tree +> dir: down +> ``` \ No newline at end of file diff --git a/programmation.argument d'une fonction.md b/programmation.argument d'une fonction.md new file mode 100644 index 00000000..15de46c8 --- /dev/null +++ b/programmation.argument d'une fonction.md @@ -0,0 +1,9 @@ +up::[[programmation]] +opposes:: [[programmation.paramètre d'une fonction]] +#informatique + + +> [!definition] Argument d'une fonction +> Un argument d'une [[programmation.fonction|fonction]] est la valeur d'un [[programmation.paramètre d'une fonction|paramètre]] lors de l'appel de cette [[programmation.fonction|fonction]]. +^definition + diff --git a/programmation.fonction.md b/programmation.fonction.md new file mode 100644 index 00000000..39caad34 --- /dev/null +++ b/programmation.fonction.md @@ -0,0 +1,6 @@ +--- +aliases: + - fonction +--- +up:: [[programmation]] +#informatique \ No newline at end of file diff --git a/programmation.md b/programmation.md index b454e791..50c01859 100644 --- a/programmation.md +++ b/programmation.md @@ -2,14 +2,13 @@ up:: [[informatique|informatique]] title:: #informatique ---- - -```dataview -TABLE title, up as "Up", up.up as "2-Up", up.up.up as "3-Up", up.up.up.up as "4-Up" -FROM -#cours AND -#exercice AND -"daily" AND -#excalidraw AND -#MOC -WHERE any(map([up, up.up, up.up.up, up.up.up.up], (x) => econtains(x, this.file.link))) -WHERE file != this.file -SORT up.up.up.up, up.up.up, up.up, up -``` +> [!smallquery]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")` +> ```breadcrumbs +> title: false +> type: tree +> dir: down +> depth: -2 +> ``` + diff --git a/programmation.paramètre d'une fonction.md b/programmation.paramètre d'une fonction.md new file mode 100644 index 00000000..11244a4f --- /dev/null +++ b/programmation.paramètre d'une fonction.md @@ -0,0 +1,11 @@ +--- +aliases: + - paramètre +--- +up::[[programmation]] +#informatique + +> [!definition] paramètre d'une fonction +> Un paramètre d'une [[programmation.fonction|fonction]] est une variable particulière, utilisée dans la définition +^definition + diff --git a/présentation sur les outlines.md b/présentation sur les outlines.md new file mode 100644 index 00000000..57a90908 --- /dev/null +++ b/présentation sur les outlines.md @@ -0,0 +1,270 @@ +--- +title: "" +--- + +```h2 +Bonjour +``` + +--- + +```h2 +Aujourd'hui +``` + +--- + + +```h1 +EMACS +``` + +--- + +# Les raccourcis EMACS + +. . . + + 1. Brève histoire + 2. Principe + 3. Modularité et extensibilité + 4. Comparaison avec vim + 5. Conclusion + 6. Exemples supplémentaires + +--- + + +# Les raccourcis EMACS + +. . . + +EMACS = Extensible MACro System + +. . . + +EMACS = Eight Mega And Constantly Swappig + +. . . + +EMACS = Esc Meta Alt Control Shift + + +--- + +```h1 +Gotcha ! +``` +(catch chem all) + +--- + +# Les *Outline* + +En quoi les *outlines* sont le format central d'expression de l'information ? + +--- + +## 1. L'information textuelle + +> - manipulable +> - conservable +> - extraits, citations + + +--- + +## 2. Les *outlines* + +> - Texte indenté +> > - indentation sémantique +> > > - meilleur compromis visuel / pratique +> > - idées séquentielles ou en vrac +> > > - numérotation +> > > - dates +> > > - symboles +> > - manipulabilité +> > > - facile à créer +> > > - texte seulement +> > > - outliners + +--- + +## 2. Les *outlines* + +```h2 +c'est cool ! +``` + +--- + +## 3. Le centre de tous les formats + +``` + + + + + .--------. + |outlines| + '--------' + + + + + + +``` + +--- + +## 3. Le centre de tous les formats + +``` + + + + texte à chapitres + .--------. / + |outlines| ----------' + '--------' + + + + + + +``` + +--- + +## 3. Le centre de tous les formats + +``` + + texte rédigé + / + texte à chapitres------' + .--------. / + |outlines| ----------' + '--------' + + + + + + +``` + +--- + +## 3. Le centre de tous les formats + +``` + + texte rédigé + / | + texte à chapitres------' | + .--------. / / + |outlines| ----------' / + '--------' vidéo + + + + + + +``` + +--- + +## 3. Le centre de tous les formats + +``` + + texte rédigé + / | + texte à chapitres------' | + .--------. / / + .--------- |outlines| ----------' / + / '--------' vidéo + cartes mentales + + + + + +``` + +--- + +## 3. Le centre de tous les formats + +``` + + texte rédigé + / | + texte à chapitres------' | + .--------. / / + .--------- |outlines| ----------' / + / '--------' vidéo + cartes mentales \_________ + \ + slides textuelles + + + +``` + +--- + +## 3. Le centre de tous les formats + +``` + + texte rédigé + / | + texte à chapitres------' | + .--------. / / + .--------- |outlines| ----------' / + / '--------' vidéo + cartes mentales \_________ + \ + slides textuelles + \______ + \ + slides +``` + +--- + +## 3. Le centre de tous les formats + +``` +.-------------------------------------------------------------------. +| texte rédigé| +| / | | +| texte à chapitres------' | | +| .--------. / / | +| .--------- |outlines| ----------' / | +| / '--------' vidéo | +|cartes mentales \_________ | +| \ | +| slides textuelles | +| \______ | +| \ | +| slides | +'-------------------------------------------------------------------' +``` + +--- + +## 4. Limitations + + + - moins visuel qu'une carte mentale + - liens complexes / organisations riches + +--- +penser à proposer un secrétariat + diff --git a/quantificateurs.il existe.md b/quantificateurs.il existe.md new file mode 100644 index 00000000..e5d60cd4 --- /dev/null +++ b/quantificateurs.il existe.md @@ -0,0 +1,16 @@ +--- +aliases: + - quantificateur existanciel +--- +up:: [[quantificateurs]] +#maths/logique + + + + +> [!idea] Changement de point de vue sur l'existence +> Le plus grand apport de Frege à la logique : le quantificateur $\exists$, et le changement de la définition d'existence qui en découle. +> +> Affirmer qu'une montagne d'or existe ne signifie pas qu'on doit attribuer les propriétés *est en or* et *existe* à cette montagne, mais plutôt que l'ensemble des objets qualifiés de *montagne d'or* n'est pas vide. +> +> En découle la syntaxe du quantificateur $\exists$ : $\exists \text{(nom)},\; \text{(prédicat)}$, qui affirme que l'ensemble des objets qui [[satisfaisable|satisfont]] le prédicat n'est pas vide. diff --git a/quantificateurs.md b/quantificateurs.md new file mode 100644 index 00000000..7bece894 --- /dev/null +++ b/quantificateurs.md @@ -0,0 +1,9 @@ +up:: [[logique]] +#maths/logique + +> [!smallquery]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")` +> ```breadcrumbs +> title: false +> type: tree +> dir: down +> ``` \ No newline at end of file diff --git a/salsiphi 2024-01-27.md b/salsiphi 2024-01-27.md new file mode 100644 index 00000000..770cdb84 --- /dev/null +++ b/salsiphi 2024-01-27.md @@ -0,0 +1,36 @@ +up:: [[salsiphi comptes rendus]] +#science + +# sujets abordés + +## Oscar Plaisant +[[présentation sur les outlines]] + +## Nicolas Canovas + +- Les systèmes de magie (dans les jeux de rôle et dans la fiction) + - le statut / la définition de la magie dans les fictions + - l'équilibrage + - les règles pour un bon design + - une meilleure organisation des types de magie (notamment pour D&D) + +## Max Lemoine + +les meilleurs frontières. + +- frontière belgique / hollande + - frontière due à une ligne de train belge, mais qui est restée même si c'est devenu une voie verte +- la guerre des stops + - guerre entre la france et l'espagne pour savoir quelle route allait avoir un stop + - soit la route vers une enclave espagnole + - soit une nationale qui la croisait +- le mur de trump +- la "frontière à bascule" + - l'île au faisans + - une île au milieu d'une rivière + - l'île est francaise la moitié de l'année, espagnole pour l'autre + + +# idées + +- faire également un (autre) rendez-vous sur twitch diff --git a/salsiphi comptes rendus.md b/salsiphi comptes rendus.md new file mode 100644 index 00000000..1e1e6a67 --- /dev/null +++ b/salsiphi comptes rendus.md @@ -0,0 +1,14 @@ +--- +aliases: + - comptes-rendus +--- +up::[[salsiphi]] +#PKM + +> [!smallquery]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")` +> ```breadcrumbs +> title: false +> type: tree +> dir: down +> ``` + diff --git a/salsiphi.md b/salsiphi.md new file mode 100644 index 00000000..756f0774 --- /dev/null +++ b/salsiphi.md @@ -0,0 +1,8 @@ + +> [!smallquery]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")` +> ```breadcrumbs +> title: false +> type: tree +> dir: down +> ``` + diff --git a/science ouverte.md b/science ouverte.md new file mode 100644 index 00000000..eb37255d --- /dev/null +++ b/science ouverte.md @@ -0,0 +1,28 @@ +--- +aliases: + - open science +--- +up:: [[science]] +#informatique + +> [!definition] science ouverte +> +^definition + +# Historique + +Historique de la collaboration scientifique + - [<] avant le XVIIe : Mécénat + - financement de la science via patronnages individuels + - [<] XVIIe-XXe : Revues et académies + - début de la collaboration scientifique + - début du partage scientifique (discussions) + - [<] années 1990 : bulle internet + - ouverture de la science et du savoir (via le web) + - arXiv + - 1987 : premier journal en ligne + - [projet polymath](https://www.wikiwand.com/en/Polymath) +- [<] 2002 : création des licences Creative Commons +- [<] 2001 : création de HAL (en France) + + diff --git a/server side.md b/server side.md new file mode 100644 index 00000000..e1521931 --- /dev/null +++ b/server side.md @@ -0,0 +1,4 @@ +up:: [[programmation web]] +#informatique + + diff --git a/servlet.md b/servlet.md new file mode 100644 index 00000000..9dc4ea44 --- /dev/null +++ b/servlet.md @@ -0,0 +1,8 @@ +up:: [[cours programmation web serveur]] +#informatique + +> [!definition] Servlet +> contraction de **serv**er app**let** +> - une [[applet]] est exécutée [[server side|côté client]] +> - une servlet est exécutée [[server side|côté serveur]] +^definition diff --git a/sources/01 Notetaking for Historians - Doing History with Zotero and Obsidian - Obsidian Publish 2.md b/sources/01 Notetaking for Historians - Doing History with Zotero and Obsidian - Obsidian Publish 2.md deleted file mode 100644 index dec8e74e..00000000 --- a/sources/01 Notetaking for Historians - Doing History with Zotero and Obsidian - Obsidian Publish 2.md +++ /dev/null @@ -1,11 +0,0 @@ - ---- -Title: "01 Notetaking for Historians - Doing History with Zotero and Obsidian - Obsidian Publish" -URL: https://publish.obsidian.md/history-notes/01+Notetaking+for+Historians -Pocket URL: https://getpocket.com/read/3670883865 -Tags: [pocket, obsidian, obsidian_export, pkm] -Excerpt: > - ---- -#obsidian, #obsidian_export, #pkm - diff --git a/sources/01 Notetaking for Historians - Doing History with Zotero and Obsidian - Obsidian Publish 3.md b/sources/01 Notetaking for Historians - Doing History with Zotero and Obsidian - Obsidian Publish 3.md deleted file mode 100644 index dec8e74e..00000000 --- a/sources/01 Notetaking for Historians - Doing History with Zotero and Obsidian - Obsidian Publish 3.md +++ /dev/null @@ -1,11 +0,0 @@ - ---- -Title: "01 Notetaking for Historians - Doing History with Zotero and Obsidian - Obsidian Publish" -URL: https://publish.obsidian.md/history-notes/01+Notetaking+for+Historians -Pocket URL: https://getpocket.com/read/3670883865 -Tags: [pocket, obsidian, obsidian_export, pkm] -Excerpt: > - ---- -#obsidian, #obsidian_export, #pkm - diff --git a/sources/01 Notetaking for Historians - Doing History with Zotero and Obsidian - Obsidian Publish 4.md b/sources/01 Notetaking for Historians - Doing History with Zotero and Obsidian - Obsidian Publish 4.md deleted file mode 100644 index dec8e74e..00000000 --- a/sources/01 Notetaking for Historians - Doing History with Zotero and Obsidian - Obsidian Publish 4.md +++ /dev/null @@ -1,11 +0,0 @@ - ---- -Title: "01 Notetaking for Historians - Doing History with Zotero and Obsidian - Obsidian Publish" -URL: https://publish.obsidian.md/history-notes/01+Notetaking+for+Historians -Pocket URL: https://getpocket.com/read/3670883865 -Tags: [pocket, obsidian, obsidian_export, pkm] -Excerpt: > - ---- -#obsidian, #obsidian_export, #pkm - diff --git a/sources/01 Notetaking for Historians - Doing History with Zotero and Obsidian - Obsidian Publish 5.md b/sources/01 Notetaking for Historians - Doing History with Zotero and Obsidian - Obsidian Publish 5.md deleted file mode 100644 index dec8e74e..00000000 --- a/sources/01 Notetaking for Historians - Doing History with Zotero and Obsidian - Obsidian Publish 5.md +++ /dev/null @@ -1,11 +0,0 @@ - ---- -Title: "01 Notetaking for Historians - Doing History with Zotero and Obsidian - Obsidian Publish" -URL: https://publish.obsidian.md/history-notes/01+Notetaking+for+Historians -Pocket URL: https://getpocket.com/read/3670883865 -Tags: [pocket, obsidian, obsidian_export, pkm] -Excerpt: > - ---- -#obsidian, #obsidian_export, #pkm - diff --git a/sources/01 Notetaking for Historians - Doing History with Zotero and Obsidian - Obsidian Publish 6.md b/sources/01 Notetaking for Historians - Doing History with Zotero and Obsidian - Obsidian Publish 6.md deleted file mode 100644 index dec8e74e..00000000 --- a/sources/01 Notetaking for Historians - Doing History with Zotero and Obsidian - Obsidian Publish 6.md +++ /dev/null @@ -1,11 +0,0 @@ - ---- -Title: "01 Notetaking for Historians - Doing History with Zotero and Obsidian - Obsidian Publish" -URL: https://publish.obsidian.md/history-notes/01+Notetaking+for+Historians -Pocket URL: https://getpocket.com/read/3670883865 -Tags: [pocket, obsidian, obsidian_export, pkm] -Excerpt: > - ---- -#obsidian, #obsidian_export, #pkm - diff --git a/sources/01 Notetaking for Historians - Doing History with Zotero and Obsidian - Obsidian Publish.md b/sources/01 Notetaking for Historians - Doing History with Zotero and Obsidian - Obsidian Publish.md index c8b5f1ab..0dd87ed5 100644 --- a/sources/01 Notetaking for Historians - Doing History with Zotero and Obsidian - Obsidian Publish.md +++ b/sources/01 Notetaking for Historians - Doing History with Zotero and Obsidian - Obsidian Publish.md @@ -1,4 +1,3 @@ - --- Title: "01 Notetaking for Historians - Doing History with Zotero and Obsidian - Obsidian Publish" URL: https://publish.obsidian.md/history-notes/01+Notetaking+for+Historians diff --git a/sources/1j01 textual-paint.md b/sources/1j01 textual-paint.md new file mode 100644 index 00000000..2436988f --- /dev/null +++ b/sources/1j01 textual-paint.md @@ -0,0 +1,10 @@ +--- +Title: "1j01/textual-paint" +URL: https://github.com/1j01/textual-paint +Pocket URL: https://getpocket.com/read/3856689512 +Tags: [pocket, informatique, obsidan_export] +Excerpt: > + MS Paint in your terminal. This is a TUI (Text User Interface) image editor, inspired by MS Paint, built with Textual. +--- +#informatique, #obsidan_export +![image](https://github.com/1j01/textual-paint/raw/main/screenshot.svg) diff --git a/sources/202401242342.md b/sources/202401242342.md new file mode 100644 index 00000000..f8a6ab32 --- /dev/null +++ b/sources/202401242342.md @@ -0,0 +1,18 @@ +--- +aliases: + - le capitalisme est né avant la révolution industrielle + - julius dickmann naissance du capitalisme +--- +author:: [[Julius Dickmann]] +source:: [[Contributions pour une autocritique du marxisme]] +link:: +date-seen::2024-01-24 +next:: [[202401242351|julius dickmann mort du corporatisme féodal et naissance du capitalisme]] +#citation #politique + +> Le capitalisme ne parvint réellement à s'affirmer que sous l'impulsion du grand boulversement technique des XVIIIe et XIXe siècles, mais la première étape de son évolution n'a absolument rien à voir avec celui-ci. + +## Interprétation + +- constatation : la [[révolution industrielle]] est ce qui à poussé le [[capitalisme]] +- cependant : le [[capitalisme]] à existé avant la [[révolution industrielle]]. \ No newline at end of file diff --git a/sources/202401242351.md b/sources/202401242351.md new file mode 100644 index 00000000..63d7969b --- /dev/null +++ b/sources/202401242351.md @@ -0,0 +1,17 @@ +--- +aliases: + - la mort du corporatisme féodal à causé l'apparition du capitalisme + - julius dickmann naissance du capitalisme +--- +author::[[Julius Dickmann]] +source::[[Contributions pour une autocritique du marxisme]] +date-seen::2024-01-24 +#citation #politique + +> Le capitalisme n'a pu émerger que parce que la production liée au corporations féodales s'est effondrée pour des raisons internes. Il fut la conséquence et non la cause de cet inélucable déclin. + +## Interprétation + +- comme dit précédemment : [[202401242342|le capitalisme est né avant la révolution industrielle]] +- c'est le déclin du système corporatif qui à permis le capitalisme, et non le capitalisme qui à tué le système corporatif +- la naissance du [[capitalisme]] **n'est pas due** à des progès techniques ou des modifications de l'appareil productif diff --git a/sources/Browser not supported.md b/sources/Browser not supported.md deleted file mode 100644 index 1fc8d174..00000000 --- a/sources/Browser not supported.md +++ /dev/null @@ -1,11 +0,0 @@ - ---- -Title: "Browser not supported" -URL: https://configure.zsa.io/moonlander/layouts/pJ7eb/latest/config/audio -Pocket URL: https://getpocket.com/read/3755583883 -Tags: [pocket, ] -Excerpt: > - Unfortunately the configurator uses features that your browser doesn't support. Please retry using Chrome 49+, Edge 12+, Firefox 18+, Opera 36+, Safari 12+ . Contact us ---- - - diff --git a/sources/CARD GAME RULES.md b/sources/CARD GAME RULES.md new file mode 100644 index 00000000..85d30e54 --- /dev/null +++ b/sources/CARD GAME RULES.md @@ -0,0 +1,10 @@ +--- +Title: "CARD GAME RULES" +URL: https://www.pagat.com/ +Pocket URL: https://getpocket.com/read/1319170 +Tags: [pocket, jeux, obsidan_export] +Excerpt: > + The Pagat website was founded in 1995. Its aim is to document the rules of traditional card and domino games for the benefit of players who would like to broaden their knowledge and try out unfamiliar games. It takes its name from the Pagat, the lowest trump in the Central European game of Tarock. +--- +#jeux, #obsidan_export + diff --git a/sources/Epigrams on programming.md b/sources/Epigrams on programming.md index 3c604921..452e08e2 100644 --- a/sources/Epigrams on programming.md +++ b/sources/Epigrams on programming.md @@ -1,8 +1,6 @@ author::[[Alan Perlis]] title::"dictons sur la programmation" -#informatique - ----- +#informatique #citation 1. One man's constant is another man's variable. diff --git a/sources/FirefoxCSS-Store 2.md b/sources/FirefoxCSS-Store 2.md new file mode 100644 index 00000000..7839fa8f --- /dev/null +++ b/sources/FirefoxCSS-Store 2.md @@ -0,0 +1,11 @@ + +--- +Title: "FirefoxCSS-Store" +URL: https://github.com/FirefoxCSS-Store/FirefoxCSS-Store.github.io +Pocket URL: https://getpocket.com/read/3259216786 +Tags: [pocket, ] +Excerpt: > + FirefoxCSS-Store A collection site of Firefox userchrome themes, mostly from FirefoxCSS Reddit.Preview here. Generic Installation Go to the wanted theme and click the download button. You should now be on the github page for that topic. +--- + +![image](https://github.com/FirefoxCSS-Store/FirefoxCSS-Store.github.io/blob/main/images/icon.png) diff --git a/sources/FirefoxCSS-Store.md b/sources/FirefoxCSS-Store.md new file mode 100644 index 00000000..a2a52d8d --- /dev/null +++ b/sources/FirefoxCSS-Store.md @@ -0,0 +1,10 @@ +--- +Title: "FirefoxCSS-Store" +URL: https://github.com/FirefoxCSS-Store/FirefoxCSS-Store.github.io +Pocket URL: https://getpocket.com/read/3259216786 +Tags: [pocket, ] +Excerpt: > + FirefoxCSS-Store A collection site of Firefox userchrome themes, mostly from FirefoxCSS Reddit.Preview here. Generic Installation Go to the wanted theme and click the download button. You should now be on the github page for that topic. +--- + +![image](https://github.com/FirefoxCSS-Store/FirefoxCSS-Store.github.io/blob/main/images/icon.png) diff --git a/sources/Getting Started 2.md b/sources/Getting Started 2.md deleted file mode 100644 index 9bdb5bd7..00000000 --- a/sources/Getting Started 2.md +++ /dev/null @@ -1,11 +0,0 @@ - ---- -Title: "Getting Started" -URL: https://espanso.org/docs/get-started/ -Pocket URL: https://getpocket.com/read/2769444793 -Tags: [pocket, informatique, obsidian_export] -Excerpt: > - In this section, we will cover the basics of Espanso to quickly get you started. Make sure to install Espanso before diving into the next sections. If you followed the installation correctly, Espanso should be running on your computer. ---- -#informatique, #obsidian_export -![image](https://espanso.org/assets/images/tray_explain_image_windows-a4482a39604313a2484a7361cacf93f8.png) diff --git a/sources/Getting Started 3.md b/sources/Getting Started 3.md deleted file mode 100644 index 9bdb5bd7..00000000 --- a/sources/Getting Started 3.md +++ /dev/null @@ -1,11 +0,0 @@ - ---- -Title: "Getting Started" -URL: https://espanso.org/docs/get-started/ -Pocket URL: https://getpocket.com/read/2769444793 -Tags: [pocket, informatique, obsidian_export] -Excerpt: > - In this section, we will cover the basics of Espanso to quickly get you started. Make sure to install Espanso before diving into the next sections. If you followed the installation correctly, Espanso should be running on your computer. ---- -#informatique, #obsidian_export -![image](https://espanso.org/assets/images/tray_explain_image_windows-a4482a39604313a2484a7361cacf93f8.png) diff --git a/sources/Getting Started 4.md b/sources/Getting Started 4.md deleted file mode 100644 index 9bdb5bd7..00000000 --- a/sources/Getting Started 4.md +++ /dev/null @@ -1,11 +0,0 @@ - ---- -Title: "Getting Started" -URL: https://espanso.org/docs/get-started/ -Pocket URL: https://getpocket.com/read/2769444793 -Tags: [pocket, informatique, obsidian_export] -Excerpt: > - In this section, we will cover the basics of Espanso to quickly get you started. Make sure to install Espanso before diving into the next sections. If you followed the installation correctly, Espanso should be running on your computer. ---- -#informatique, #obsidian_export -![image](https://espanso.org/assets/images/tray_explain_image_windows-a4482a39604313a2484a7361cacf93f8.png) diff --git a/sources/Getting Started 5.md b/sources/Getting Started 5.md deleted file mode 100644 index 9bdb5bd7..00000000 --- a/sources/Getting Started 5.md +++ /dev/null @@ -1,11 +0,0 @@ - ---- -Title: "Getting Started" -URL: https://espanso.org/docs/get-started/ -Pocket URL: https://getpocket.com/read/2769444793 -Tags: [pocket, informatique, obsidian_export] -Excerpt: > - In this section, we will cover the basics of Espanso to quickly get you started. Make sure to install Espanso before diving into the next sections. If you followed the installation correctly, Espanso should be running on your computer. ---- -#informatique, #obsidian_export -![image](https://espanso.org/assets/images/tray_explain_image_windows-a4482a39604313a2484a7361cacf93f8.png) diff --git a/sources/Getting Started 6.md b/sources/Getting Started 6.md deleted file mode 100644 index 9bdb5bd7..00000000 --- a/sources/Getting Started 6.md +++ /dev/null @@ -1,11 +0,0 @@ - ---- -Title: "Getting Started" -URL: https://espanso.org/docs/get-started/ -Pocket URL: https://getpocket.com/read/2769444793 -Tags: [pocket, informatique, obsidian_export] -Excerpt: > - In this section, we will cover the basics of Espanso to quickly get you started. Make sure to install Espanso before diving into the next sections. If you followed the installation correctly, Espanso should be running on your computer. ---- -#informatique, #obsidian_export -![image](https://espanso.org/assets/images/tray_explain_image_windows-a4482a39604313a2484a7361cacf93f8.png) diff --git a/sources/Getting Started.md b/sources/Getting Started.md index 69650025..23620cf5 100644 --- a/sources/Getting Started.md +++ b/sources/Getting Started.md @@ -1,4 +1,3 @@ - --- Title: "Getting Started" URL: https://espanso.org/docs/get-started/ diff --git a/sources/ICVL24 Skyline Learning (Stage).pdf b/sources/ICVL24 Skyline Learning (Stage).pdf new file mode 100644 index 00000000..cedd03f2 Binary files /dev/null and b/sources/ICVL24 Skyline Learning (Stage).pdf differ diff --git a/Jean Jaurès sur la peine de mort.md b/sources/Jean Jaurès sur la peine de mort.md similarity index 100% rename from Jean Jaurès sur la peine de mort.md rename to sources/Jean Jaurès sur la peine de mort.md diff --git a/sources/Programmation concurrente (wikipedia).md b/sources/Programmation concurrente (wikipedia).md new file mode 100644 index 00000000..93c79172 --- /dev/null +++ b/sources/Programmation concurrente (wikipedia).md @@ -0,0 +1,17 @@ +up:: [[paradigme programmation concurrente]] +date-seen::2024-02-20 +author:: [[wikipedia]] +link:: https://www.wikiwand.com/fr/Programmation_concurrente +#informatique #citation + +> [!cite] Définition wikipedia (fr) +> [[paradigme de programmation]] tenant compte, dans un programme, l'existence de plusieurs piles sémantiques, qui peuvent être appelées threads, processus ou tâches. Elles sont matérialisées en machine par une pile d'exécution et un ensemble de données privées. +[Wikipédia](https://www.wikiwand.com/fr/Programmation_concurrente) +^cite + +## Interprétation +- la programmation concurrente implique la division d'un programme en plusieurs parties. Ces parties : + - sont sémantiquement indépendantes (au moins en partie) + - possèdent leur propre contexte d'exécution + - pile d'exécution propre + - mémoire (données) privée·s propre·s diff --git a/sources/The Command Line Heroes BASH! 2.md b/sources/The Command Line Heroes BASH! 2.md new file mode 100644 index 00000000..1c6746b5 --- /dev/null +++ b/sources/The Command Line Heroes BASH! 2.md @@ -0,0 +1,11 @@ + +--- +Title: "The Command Line Heroes BASH!" +URL: https://www.redhat.com/en/command-line-heroes/bash/index.html +Pocket URL: https://getpocket.com/read/2490756547 +Tags: [pocket, informatique] +Excerpt: > + Test your command line skills. You have {{parseInt(gameDuration/1000)}} seconds to type commands from: Set the terminal on fire. Type PLAY to begin. +--- +#informatique +![image](https://www.redhat.com/en/command-line-heroes/bash/assets/clh-logo-white.svg) diff --git a/sources/firefox enable userChrome (custom css).md b/sources/firefox enable userChrome (custom css).md new file mode 100644 index 00000000..80db5310 --- /dev/null +++ b/sources/firefox enable userChrome (custom css).md @@ -0,0 +1,13 @@ +--- +URL: https://github.com/FirefoxCSS-Store/FirefoxCSS-Store.github.io +Pocket URL: https://getpocket.com/read/3259216786 +tags: + - pocket +Excerpt: | + FirefoxCSS-Store A collection site of Firefox userchrome themes, mostly from FirefoxCSS Reddit.Preview here. Generic Installation Go to the wanted theme and click the download button. You should now be on the github page for that topic. +aliases: + - firefox user css + - user CSS (chrome css) +--- + +![image](https://github.com/FirefoxCSS-Store/FirefoxCSS-Store.github.io/blob/main/images/icon.png) diff --git a/le petit nombre qui fait travailler le grand.md b/sources/le petit nombre qui fait travailler le grand.md similarity index 100% rename from le petit nombre qui fait travailler le grand.md rename to sources/le petit nombre qui fait travailler le grand.md diff --git a/le secret de l'action, c'est de commencer.md b/sources/le secret de l'action, c'est de commencer.md similarity index 100% rename from le secret de l'action, c'est de commencer.md rename to sources/le secret de l'action, c'est de commencer.md diff --git a/sources/les avancées en programmation devraient demander l'élaboration de nouveaux paradigmes.md b/sources/les avancées en programmation devraient demander l'élaboration de nouveaux paradigmes.md new file mode 100644 index 00000000..1240c191 --- /dev/null +++ b/sources/les avancées en programmation devraient demander l'élaboration de nouveaux paradigmes.md @@ -0,0 +1,12 @@ +up:: [[paradigme de programmation]] +source:: [[floydParadigmsProgramming1979]] +next:: [[un programmeur doit étendre son répertoire de paradigmes]] +#informatique + +> If the advancement of the general art of programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires that he expand his repertory of paradigms. + + +# Description + +- de nouveaux paradigmes permettent de résoudre de nouveaux problèmes +- puisque les algorithmes doivent devenir plus complexes, de nouveaux paradigmes doivent être développés \ No newline at end of file diff --git a/sources/méthode pour trouver de nouveaux paradigmes.md b/sources/méthode pour trouver de nouveaux paradigmes.md new file mode 100644 index 00000000..e43553ef --- /dev/null +++ b/sources/méthode pour trouver de nouveaux paradigmes.md @@ -0,0 +1,17 @@ +source:: [[floydParadigmsProgramming1979]] +date-seen::2024-02-03 +#citation #informatique + +> After solving a challenging problem, I solve it again from scratch, retracing only the insight of the earlier solution. I repeat this until the solution is as clear and direct as I can hope for. Then I look for a general rule for attacking similar problems, that would have led me to approach the given problem in the most efficient way the first time. Often, such a rule is of permanent value. + +## Interprétation + +- méthode pour créer de nouveaux [[paradigme de programmation|paradigmes de programmation]] +- principe : + - après avoir résolu un problème complexe + - on résout à nouveau le problème en se concentrant sur l'idée principale de la précédente solution + - on recommence jusqu'à ce que la solution soit la plus claire et directe + - on cherche alors la règle générale pour résoudre tous les problèmes du même type + - quelles règles auraient amené directement à la solution la plus efficace ? +- c'est une méthode pour trouver de nouveaux [[paradigme de programmation|paradigmes]] + diff --git a/sources/textual-paint (paint dans un terminal).md b/sources/textual-paint (paint dans un terminal).md new file mode 100644 index 00000000..40e613cf --- /dev/null +++ b/sources/textual-paint (paint dans un terminal).md @@ -0,0 +1,16 @@ +--- +URL: https://github.com/1j01/textual-paint +Pocket URL: https://getpocket.com/read/3856689512 +tags: + - pocket + - informatique + - obsidan_export +Excerpt: MS Paint in your terminal. This is a TUI (Text User Interface) image editor, inspired by MS Paint, built with Textual. +aliases: + - textual-paint + - command line paint + - paint dans un terminal +--- +Un clone de MS paint qui fonctionne dans un terminal. + +![image](https://github.com/1j01/textual-paint/raw/main/screenshot.svg) diff --git a/sources/un programmeur doit étendre son répertoire de paradigmes.md b/sources/un programmeur doit étendre son répertoire de paradigmes.md new file mode 100644 index 00000000..1b9183cb --- /dev/null +++ b/sources/un programmeur doit étendre son répertoire de paradigmes.md @@ -0,0 +1,12 @@ +source:: [[floydParadigmsProgramming1979]] +date-seen::2024-02-03 +prev:: [[les avancées en programmation devraient demander l'élaboration de nouveaux paradigmes]] +#informatique #citation + +> If the advancement of the general art of programming requires the continuing invention and elaboration of paradigms, advancement of the art of the individual programmer requires that he expand his *repertory* of paradigms. + +## Interprétation + +- présupposé : [[les avancées en programmation devraient demander l'élaboration de nouveaux paradigmes]] +- Les programmeurs doivent également apprendre ces nouveaux paradigmes + - De nouveaux paradigmes permettent la résolution de nouveaux problèmes \ No newline at end of file diff --git a/sources/zotero/ParadigmeProgrammation.md b/sources/zotero/ParadigmeProgrammation.md new file mode 100644 index 00000000..04aa09d0 --- /dev/null +++ b/sources/zotero/ParadigmeProgrammation.md @@ -0,0 +1,26 @@ +--- +zotero-key: BCTII35Rg5383243 +title: Paradigme (programmation) +citekey: ParadigmeProgrammation +--- +link:: [Zotero](zotero://select/groups/5383243/items/BCTII35R) + + +> [!cite] +> > Le **paradigme de programmation** est la façon (parmi d'autres) d'approcher la [programmation informatique](https://www.wikiwand.com/fr/Programmation_informatique "Programmation informatique") et de formuler les solutions aux problèmes et leur formalisation dans un [langage de programmation](https://www.wikiwand.com/fr/Langage_de_programmation "Langage de programmation") approprié[](https://www.wikiwand.com/fr/Paradigme_(programmation)#cite_note-1). Ce n'est pas de la [méthodologie](https://www.wikiwand.com/fr/Méthodologie "Méthodologie") contenant une méthode ; cette dernière [organise le traitement des problèmes reconnus dans l'écosystème concerné](https://www.wikiwand.com/fr/Système_d'information "Système d'information") pour aboutir à la [solution conceptuelle et programme exécutable](https://www.wikiwand.com/fr/Génie_logiciel "Génie logiciel"). +> > +> - paradigme = façon d'approcher la programmation, de formuler et formaliser les problèmes +> - paradigme $\neq$ méthodologie +> - la méthodologie organise le traîtement des problèmes pour obtenir un programme exécutable +> - un paradigme définit la vision et le rapport à l'execution d'un programme + + + +> [!cite] +> > Un paradigme de programmation fournit (et détermine) la vue qu’a le [développeur](https://www.wikiwand.com/fr/Développeur "Développeur") de l’exécution de son [programme](https://www.wikiwand.com/fr/Programme_informatique "Programme informatique") en situation d'exploitation. Par exemple, en [programmation orientée objet](https://www.wikiwand.com/fr/Programmation_orientée_objet "Programmation orientée objet"), les développeurs peuvent considérer le programme comme une collection d’[objets](https://www.wikiwand.com/fr/Objet_(informatique) "Objet (informatique)") en interaction, tandis qu’en [programmation fonctionnelle](https://www.wikiwand.com/fr/Programmation_fonctionnelle "Programmation fonctionnelle") un programme peut être vu comme une suite d'évaluations de fonctions sans [états](https://www.wikiwand.com/fr/Automate_fini "Automate fini"). Lors de la programmation d’ordinateurs ou de systèmes [multi-processeurs](https://www.wikiwand.com/fr/Multiprocesseur "Multiprocesseur"), la programmation orientée processus permet aux développeurs de voir les applications comme des ensembles de [processus](https://www.wikiwand.com/fr/Processus_(informatique) "Processus (informatique)") agissant sur des [structures de données](https://www.wikiwand.com/fr/Structure_de_données "Structure de données") localement partagées. +> > +> > - définition d'un paradigme +> > - définit la vue sur l'exécution d'un programme +> > - définit la façon de voir l'implémentation des problèmes + + diff --git a/sources/zotero/floydParadigmsProgramming1979.md b/sources/zotero/floydParadigmsProgramming1979.md new file mode 100644 index 00000000..d3af210f --- /dev/null +++ b/sources/zotero/floydParadigmsProgramming1979.md @@ -0,0 +1,14 @@ +--- +zotero-key: ZH92H67Gg5383243 +title: The paradigms of programming +citekey: floydParadigmsProgramming1979 +--- +link:: [Zotero](zotero://select/groups/5383243/items/ZH92H67G) + +> [!smallquery]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")` +> ```breadcrumbs +> title: false +> type: tree +> dir: down +> ``` + diff --git a/sources/zotero/zt-import/Description des paradigmes, de leurs limites.md b/sources/zotero/zt-import/Description des paradigmes, de leurs limites.md new file mode 100644 index 00000000..8c7fdc46 --- /dev/null +++ b/sources/zotero/zt-import/Description des paradigmes, de leurs limites.md @@ -0,0 +1,15 @@ +source:: [[floydParadigmsProgramming1979]] +#informatique + +Paradigme programmation structurée : fonctionne en 2 étapes + +1\. raffinement progressif : découpage du problème en sous-problèmes de plus en plus petits, jusqu'à être assez simple pour être implémentés directement + +2\. cacher les détails : on implémente les sous-problèmes de façon encapsulée, en partant des plus simples, et en construisant l'abstraction. On cache tous les détails d'implémentation (dans des fonctions, objets...) + +Le processus fait donc : 1. top-down, 2. bottom-top. + +Il existe des écoles de pensée qui encouragent certains paradigmes et s'opposent aux autres. Par exemple, la programmation LISP, APL, ALGOL. Certaines de ces écoles prônent la manipulation de flots de données, d'autres la manipulation de flots de contrôle. + +La récursion, l'itération, la copie et le partage de structure de données, l'appel par nom, l'appel par valeur, l'appel par nécessité... chacun à ses défenseurs. + diff --git a/stage.md b/stage.md new file mode 100644 index 00000000..7b1654ba --- /dev/null +++ b/stage.md @@ -0,0 +1,20 @@ + +# Sujet + +question: +- Est-ce que la combinaison de plusieurs modèles légers (*small models*) peut améliorer la performance (éventuellement pour battre des grands modèles (*large models*)) ? +- Est-ce qu'on peut classer le type d'anomalies par type de modèles qui trouvent bien ces anomalies ? + + + + +# Ressources +sujet: [[ICVL24 Skyline Learning (Stage).pdf]] + +## ADBench +link:: https://www.github.com/Minqi824/ADBench +pour la détection d'anomalies +- 57 jeux de données +- des modèles de détection d'anomalies +- un papier sur la détection d'anomalies + diff --git a/stratégie d'évaluation.md b/stratégie d'évaluation.md new file mode 100644 index 00000000..ca30bf73 --- /dev/null +++ b/stratégie d'évaluation.md @@ -0,0 +1,7 @@ +up:: [[programmation]] +#informatique + + +> [!definition] stratégie d'évaluation +> Méthode utilisée pour déterminer "quand" évaluer les [[argument]] d'une fonction lors de son appel +^definition \ No newline at end of file diff --git a/syntaxe d'une DTD.md b/syntaxe d'une DTD.md new file mode 100644 index 00000000..11517b7a --- /dev/null +++ b/syntaxe d'une DTD.md @@ -0,0 +1,107 @@ +up:: [[DTD]] +#informatique + +# Déclaration des éléments + +```dtd + +``` + +`DEF-CONTENU` peut être : +- `EMPTY` : contenu vide +- `ANY` : peut contenir n'importe quel élément de la DTD +- `(#PCDATA)` : contient du texte +- une expression régulière sur les nom d'éléments + + +## Exemples + +```dtd + + + + +``` + + +```dtd + + + + +``` + +# Déclaration de liste d'attributs + +```dtd + +``` + +- TYPE peut être : + - `CDATA` : du texte + - `ID` : un identifiant unique **dans tout le document** + - `IDREF` : une référence vers un ID + - `IDREFS` : une liste de références vers des ID + - `NMTOKEN` : un mot + - `NMTOKENs` : une liste de mots + - une énumération de valeurs séparées par des `|` +- L'`OBLIGATION` ne concerne pas les énumérations suivies d'une valeur par défaut. Dans les autres cas, cela peut être : + - `#REQUIRED` : obligatoire + - `#IMPLIED` : optionnel + - `#FIXED` : attribut toujours présent avec une valeur (sert pour imposer la déclaration d'un espace de noms) +- La `VALEUR-PAR-DEFAUT` permet de donner la valeur si aucune valeur n'est précisée + +## Exemples + + +### Exemple 1 + +```dtd + + + + Mme. Markov + + + Introduction + Présentation générale de XML + +``` + + +### Exemple 2 +```dtd + + +``` + + +# Déclaration d'entités + +Les entités permettent de définir des remplacements de préprocesseur. + +```dtd + +``` +- on utilise ensuite `&nomEntite;` qui sera remplacé par `remplacement` + +## Exemple + +```dtd + + + +``` + +```xml + &chap1; &chap2; &chap3; +``` diff --git a/système d'exploitation.md b/système d'exploitation.md index e418ad1d..9969d509 100644 --- a/système d'exploitation.md +++ b/système d'exploitation.md @@ -6,20 +6,14 @@ up:: [[informatique]] ---- -> [!smallquery]- Sous-notes de `=this.file.link` -> ```dataview -> TABLE title, up as "Up", up.up as "2-Up", up.up.up as "3-Up", up.up.up.up as "4-Up" -> FROM -#cours AND -#exercice AND -"daily" AND -#excalidraw AND -#MOC -> WHERE any(map([up, up.up, up.up.up, up.up.up.up], (x) => econtains(x, this.file.link))) -> WHERE file != this.file -> SORT up.up.up.up, up.up.up, up.up, up +> [!smallquery]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")` +> ```breadcrumbs +> title: false +> type: tree +> dir: down +> depth: -1 > ``` - - [[Sous-système de gestion de processus]] - - [[Ordonnancement d'exécution des processus|ordonnancement]] - - [[sous-système de gestion de mémoire]] - - [[sous-système de gestion des fichiers]] - # Definition - Un [[système d'exploitation|SE]] est un allocateur de ressources diff --git a/tangente à une courbe paramétrée.md b/tangente à une courbe paramétrée.md index 2373cbf1..6fa7d6e0 100644 --- a/tangente à une courbe paramétrée.md +++ b/tangente à une courbe paramétrée.md @@ -3,7 +3,7 @@ up::[[courbe paramétrée]] ---- # Définition -Soit $f: t\mapsto M(t)$ avec $t\in D\subset \R$ une [[courbe paramétrée]]. +Soit $f: t\mapsto M(t)$ avec $t\in D\subset \mathbb{R}$ une [[courbe paramétrée]]. Soit $t_{0}\in D$ On veut définir la [[tangente à une courbe|tangente]] à $f$ en $M(t_{0})$ diff --git a/taxer le profit, c'est le rendre indispensable pour les prestations sociales.md b/taxer le profit, c'est le rendre indispensable pour les prestations sociales.md new file mode 100644 index 00000000..2e85927e --- /dev/null +++ b/taxer le profit, c'est le rendre indispensable pour les prestations sociales.md @@ -0,0 +1,11 @@ +--- +aliases: + - taxer légitime le profit +--- +up:: [[taxe]] +#politique + +- la [[taxe]] corrige une mauvaise répartition salaire / profit +- la [[taxe]] est prise sur le profit, le profit est donc nécessaire à la taxe +- taxer, c'est légitimer le profit, puisqu'il devient indispensable aux prestations sociales +- la [[cotisation]] est un meilleur moyen : elle ne prends pas sur les profits, mais change la répartition de la [[plus-value]] diff --git a/templates/citation.md b/templates/citation.md index 644386f1..154977b5 100644 --- a/templates/citation.md +++ b/templates/citation.md @@ -2,10 +2,10 @@ author:: source:: link:: date-seen::{{DATE:yyyy-MM-DD}} -#citation # - ---- +#citation +> [!cite] Titre > ... +^cite ## Interprétation \ No newline at end of file diff --git a/templates/sources.md b/templates/sources.md index 2a062259..3795f574 100644 --- a/templates/sources.md +++ b/templates/sources.md @@ -2,8 +2,6 @@ author:: date::{{DATE:YYYY-MM-DD}} #source ---- - Description de la source diff --git a/templates/zotero/zt-annot.eta.md b/templates/zotero/zt-annot.eta.md new file mode 100644 index 00000000..5d9ce881 --- /dev/null +++ b/templates/zotero/zt-annot.eta.md @@ -0,0 +1,7 @@ +[!note] Page <%= it.pageLabel %> + +<%= it.imgEmbed %><%= it.text %> +<% if (it.comment) { %> +--- +<%= it.comment %> +<% } %> \ No newline at end of file diff --git a/templates/zotero/zt-annots.eta.md b/templates/zotero/zt-annots.eta.md new file mode 100644 index 00000000..07a3032e --- /dev/null +++ b/templates/zotero/zt-annots.eta.md @@ -0,0 +1,3 @@ +<% for (const annotation of it) { %> +<%~ include("annotation", annotation) %> +<% } %> \ No newline at end of file diff --git a/templates/zotero/zt-cite.eta.md b/templates/zotero/zt-cite.eta.md new file mode 100644 index 00000000..c9311f79 --- /dev/null +++ b/templates/zotero/zt-cite.eta.md @@ -0,0 +1 @@ +[[<%= it.map(lit => `${lit.citekey ?? lit.DOI ?? lit.title ?? lit.key}`).join("; ") %>]] \ No newline at end of file diff --git a/templates/zotero/zt-cite2.eta.md b/templates/zotero/zt-cite2.eta.md new file mode 100644 index 00000000..84ee4e3f --- /dev/null +++ b/templates/zotero/zt-cite2.eta.md @@ -0,0 +1 @@ +<%= it.map(lit => `[${lit.citekey ?? lit.DOI ?? lit.title ?? lit.key}]`).join("; ") %> \ No newline at end of file diff --git a/templates/zotero/zt-colored.eta.md b/templates/zotero/zt-colored.eta.md new file mode 100644 index 00000000..12e058f7 --- /dev/null +++ b/templates/zotero/zt-colored.eta.md @@ -0,0 +1,4 @@ +<%= it.content %> \ No newline at end of file diff --git a/templates/zotero/zt-field.eta.md b/templates/zotero/zt-field.eta.md new file mode 100644 index 00000000..8f72bab1 --- /dev/null +++ b/templates/zotero/zt-field.eta.md @@ -0,0 +1 @@ +citekey: "<%= it.citekey %>" \ No newline at end of file diff --git a/templates/zotero/zt-note.eta.md b/templates/zotero/zt-note.eta.md new file mode 100644 index 00000000..2393ef99 --- /dev/null +++ b/templates/zotero/zt-note.eta.md @@ -0,0 +1,2 @@ +link:: [Zotero](<%= it.backlink %>) <%= it.fileLink %> +<%~ include("annots", it.annotations) %> \ No newline at end of file diff --git a/terminal commandes.md b/terminal commandes.md index b9f4abf9..20d495e8 100644 --- a/terminal commandes.md +++ b/terminal commandes.md @@ -5,17 +5,13 @@ up::[[unix]] title::"commandes du shell unix" #informatique/unix ----- - - -> [!query] Sous-notes de `=this.file.link` -> ```dataview -> LIST title -> FROM -#cours AND -#exercice AND -"daily" AND -#excalidraw AND -#MOC -> WHERE any(map([up, up.up, up.up.up, up.up.up.up], (x) => econtains(x, this.file.link))) -> WHERE file != this.file -> SORT up!=this.file.link, up.up.up.up, up.up.up, up.up, up, file.name +> [!smallquery]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")` +> ```breadcrumbs +> title: false +> type: tree +> dir: down +> depth: -1 > ``` diff --git a/transformer une grammaire hors-contexte en automate à pile.md b/transformer une grammaire hors-contexte en automate à pile.md new file mode 100644 index 00000000..57d1125e --- /dev/null +++ b/transformer une grammaire hors-contexte en automate à pile.md @@ -0,0 +1,16 @@ +--- +aliases: + - grammaire hors-contexte en automate à pile +tags: + - informatique +--- +up:: [[grammaire non-contextuelle]], [[automate-pile]] + +Pour transformer une [[grammaire non-contextuelle]] en [[automate-pile|automate à pile]], il suffit d'appliquer 2 règles : + +Soient $G = (V, T, Q, S)$ une [[grammaire non-contextuelle|grammaire hors contexte]] et $P = ({q}, T, V \cup T, \delta, q, S)$ un [[automate-pile|automate à pile]] qui accepte $L(G)$ par pile vide. + +1. pour chaque variable $A$ : +$$ d(q, \epsilon, A) = \{(q, \beta ) | A \to \beta \in Q\} $$ +2. pour chaque symbole terminal $a$ : +$$\delta(q, a, a) = \{(q, \epsilon)\}$$ diff --git a/travail de délégué.md b/travail de délégué.md index 1de5a7b0..77f30451 100644 --- a/travail de délégué.md +++ b/travail de délégué.md @@ -1,11 +1,23 @@ -#fac +--- +tags: + - fac +--- + - [x] #task récupérer la liste des groupes pour le projet web server 📅 2023-09-29 ✅ 2023-09-30 -- [ ] les informations diverses dans le groupe de discussion +- informations diverses dans le groupe de discussion - tout changement d'emploi du temps - événements étudiants importants - document de cours transmis par les professeurs +- rencontres avec M. Taghelit (responsable d'année) + - discussions sur la pédagogie et l'organisation des études + - faire déplacer des contrôle -[[conseil de département 5ème semestre]] \ No newline at end of file +> [!smallquery]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")` +> ```breadcrumbs +> title: false +> type: tree +> dir: down +> ``` diff --git a/travail.md b/travail.md index 607e3d0e..b1b9f34e 100644 --- a/travail.md +++ b/travail.md @@ -1,4 +1,4 @@ -up::[[philosophie]], [[sociologie]] +up::[[politique]], [[philosophie]], [[sociologie]] #philosphie #science/sociologie > [!query]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")` diff --git a/xml.md b/xml.md new file mode 100644 index 00000000..5d3d182f --- /dev/null +++ b/xml.md @@ -0,0 +1,10 @@ +up:: [[langage descriptif]] +#informatique + +> [!smallquery]+ Sous-notes de `$= dv.el("span", "[[" + dv.current().file.name + "]]")` +> ```breadcrumbs +> title: false +> type: tree +> dir: down +> ``` + diff --git a/équations d'un cercle.md b/équations d'un cercle.md new file mode 100644 index 00000000..1015cf8e --- /dev/null +++ b/équations d'un cercle.md @@ -0,0 +1,7 @@ +up:: [[cercle]] +#maths/géométrie + +> [!definition] équations d'un cercle +> Sur un plan, les équations suivantes définissent un cercle : +> - $(x - \alpha )^{2} + (y-\beta)^{2} = r$ un cercle de centre $(\alpha; \beta )$ et de rayon $r$ +^definition diff --git a/équations d'une ellipse.md b/équations d'une ellipse.md new file mode 100644 index 00000000..ac640dae --- /dev/null +++ b/équations d'une ellipse.md @@ -0,0 +1,9 @@ +up:: [[ellipse]] +#maths/géométrie + +> [!definition] équations d'une ellipse +> Dans un plan euclidien, les équations suivantes définissent une ellipse : +> - $\displaystyle\frac{(x-\alpha )^{2}}{a^{2}} + \frac{(y-\beta)^{2}}{b^{2}} =1$ une ellipse de centre $(\alpha; \beta)$, et de rayon $a$ et $b$ respectivement dans les directions $Ox$ et $Oy$ +^definition + +![[équations d'une ellipse 2024-02-14 11.07.42.excalidraw]]