Oscar Plaisant aa751faf29 update
2024-03-28 23:43:36 +01:00

85890 lines
5.2 MiB
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

'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 <https://github.com/jonschlinkert/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<Function>} patterns
* @param {Array<Function>} 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 <https://github.com/jonschlinkert/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 <https://github.com/jonschlinkert/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 <https://github.com/jonschlinkert/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<String,FsWatchContainer>}
*/
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<Boolean>} 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<Function>} 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<Function>} 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<Path,FsEventsWatchContainer>}
*/
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<void>}
*/
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<void>}
*/
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<String>}
*/
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<Path>} items
*/
class DirEntry {
/**
* @param {Path} dir
* @param {Function} removeWatcher
*/
constructor(dir, removeWatcher) {
this.path = dir;
this._removeWatcher = removeWatcher;
/** @type {Set<Path>} */
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<String>}
*/
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<String, DirEntry>} */
this._watched = new Map();
/** @type {Map<String, Array>} */
this._closers = new Map();
/** @type {Set<String>} */
this._ignoredPaths = new Set();
/** @type {Map<ThrottleType, Map>} */
this._throttled = new Map();
/** @type {Map<Path, String|Boolean>} */
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);
}
// Youre frozen when your hearts not open.
Object.freeze(opts);
}
// Public methods
/**
* Adds paths to be watched on an existing FSWatcher instance
* @param {Path|Array<Path>} 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<Path>} 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<void>}.
*/
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<any> */
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<Path, Object>} */
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<String>} 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 = {
'&': '&amp;',
'<': '&lt;',
'>': '&gt;',
'"': '&quot;',
"'": '&#x27;',
'`': '&#x60;',
'=': '&#x3D;'
};
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 '<dir>/..' 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, '\u00A1')
.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
},
"": {
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"
},
"<22>": {
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}"
},
"": {
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"
},
"<22>": {
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": "<22>",
"\\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: '<sub>', close: '</sub>' },
sup: { open: '<sup>', close: '</sup>' },
bold: { open: '<b>', close: '</b>' },
italics: { open: '<i>', close: '</i>' },
smallCaps: { open: '<span style="font-variant:small-caps;">', close: '</span>' },
caseProtect: { open: '<span class="nocase">', close: '</span>' },
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: `<h${i}>`, close: `</h${i}>` };
}
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: '<li>', 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, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
}
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: '<ol>', itemize: '<ul>' }[node.env];
this.convert_block(Object.assign(Object.assign({}, node), { kind: 'Block', markup: {} }));
this.field.text += { enumerate: '</ol>', itemize: '</ul>' }[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}</${mode}>`;
}
script = script.replace(new RegExp(`</${mode}><${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 || '<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, '\u00A1')
.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
},
"": {
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"
},
"<22>": {
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}"
},
"": {
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"
},
"<22>": {
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": "<22>",
"\\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: '<sub>', close: '</sub>' },
sup: { open: '<sup>', close: '</sup>' },
bold: { open: '<b>', close: '</b>' },
italics: { open: '<i>', close: '</i>' },
smallCaps: { open: '<span style="font-variant:small-caps;">', close: '</span>' },
caseProtect: { open: '<span class="nocase">', close: '</span>' },
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: `<h${i}>`, close: `</h${i}>` };
}
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: '<li>', 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, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
}
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: '<ol>', itemize: '<ul>' }[node.env];
this.convert_block(Object.assign(Object.assign({}, node), { kind: 'Block', markup: {} }));
this.field.text += { enumerate: '</ol>', itemize: '</ul>' }[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}</${mode}>`;
}
script = script.replace(new RegExp(`</${mode}><${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 || '<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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QUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUN4RixJQUFJLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztFQUNoRSxJQUFJLFFBQVEsRUFBRSxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztFQUNqRSxJQUFJLE1BQU0sRUFBRSxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUMxSCxJQUFJLFFBQVEsRUFBRSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQzdDLElBQUksUUFBUSxFQUFFLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDN0MsSUFBSSxRQUFRLEVBQUUsVUFBVTtFQUN4QixJQUFJLFFBQVEsRUFBRSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQzVDLElBQUksV0FBVyxFQUFFLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDdEQsSUFBSSxXQUFXLEVBQUUsSUFBSSxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENB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');
/* 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+IHtcbiAgICBjb25zdCBmdW5jID0gYWx0ZXJuYXRpdmVcbiAgICAgID8gdGhpcy5nZXRBbHRlcm5hdGl2ZU1hcmtkb3duQ2l0YXRpb25Gb3JDaXRla2V5XG4gICAgICA6IHRoaXMuZ2V0TWFya2Rvd25DaXRhdGlvbkZvckNpdGVrZXk7XG4gICAgY29uc3QgY2l0YXRpb24gPSBmdW5jLmJpbmQodGhpcykoY2l0ZWtleSk7XG5cbiAgICB0aGlzLmVkaXRvci5yZXBsYWNlUmFuZ2UoY2l0YXRpb24sIHRoaXMuZWRpdG9yLmdldEN1cnNvcigpKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbInBhdGgiLCJyZXF1aXJlJCQwIiwiUE9TSVhfUkVHRVhfU09VUkNFIiwicGFyc2UiLCJzY2FuIiwicmVxdWlyZSQkMSIsImZzIiwicGljb21hdGNoIiwic3lzUGF0aCIsInV0aWxzIiwiaXNPYmplY3QiLCJpc051bWJlciIsInN0cmluZ2lmeSIsInRvUmVnZXhSYW5nZSIsInV0aWwiLCJmaWxsIiwiTUFYX0xFTkdUSCIsIkNIQVJfQ09NTUEiLCJDSEFSX0RPVCIsIkNIQVJfTEVGVF9QQVJFTlRIRVNFUyIsIkNIQVJfUklHSFRfUEFSRU5USEVTRVMiLCJDSEFSX0xFRlRfQ1VSTFlfQlJBQ0UiLCJDSEFSX1JJR0hUX0NVUkxZX0JSQUNFIiwiQ0hBUl9MRUZUX1NRVUFSRV9CUkFDS0VUIiwiQ0hBUl9SSUdIVF9TUVVBUkVfQlJBQ0tFVCIsImNvbXBpbGUiLCJleHBhbmQiLCJwcm9taXNpZnkiLCJTVEFSIiwib3BlbiIsInN0YXQiLCJsc3RhdCIsIkVWX0FERCIsIkVWX0NIQU5HRSIsIkVWX0FERF9ESVIiLCJFVl9FUlJPUiIsIlNUUl9EQVRBIiwiU1RSX0VORCIsIkVNUFRZX0ZOIiwicmVhbHBhdGgiLCJzdGF0TWV0aG9kcyIsInJlcXVpcmUkJDIiLCJFVl9VTkxJTksiLCJCUkFDRV9TVEFSVCIsIkJBTkciLCJGVU5DVElPTl9UWVBFIiwiRU1QVFlfU1RSIiwiaXNXaW5kb3dzIiwicmVxdWlyZSQkMyIsInJlYWRkaXIiLCJicmFjZXMiLCJGc0V2ZW50c0hhbmRsZXIiLCJOb2RlRnNIYW5kbGVyIiwicmVhZGRpcnAiLCJfdXRpbHMiLCJfZXhjZXB0aW9uIiwiZ2xvYmFsIiwiX2hlbHBlcnNCbG9ja0hlbHBlck1pc3NpbmciLCJfaGVscGVyc0VhY2giLCJfaGVscGVyc0hlbHBlck1pc3NpbmciLCJfaGVscGVyc0lmIiwiX2hlbHBlcnNMb2ciLCJfaGVscGVyc0xvb2t1cCIsIl9oZWxwZXJzV2l0aCIsIl9kZWNvcmF0b3JzSW5saW5lIiwiX2xvZ2dlciIsIl9jcmVhdGVOZXdMb29rdXBPYmplY3QiLCJoZWxwZXJzIiwiZGVjb3JhdG9ycyIsIl9oZWxwZXJzIiwiX2RlY29yYXRvcnMiLCJfaW50ZXJuYWxQcm90b0FjY2VzcyIsIl9iYXNlIiwiX2ludGVybmFsV3JhcEhlbHBlciIsImJhc2UiLCJfaGFuZGxlYmFyc0Jhc2UiLCJfaGFuZGxlYmFyc1NhZmVTdHJpbmciLCJfaGFuZGxlYmFyc0V4Y2VwdGlvbiIsIl9oYW5kbGViYXJzVXRpbHMiLCJydW50aW1lIiwiX2hhbmRsZWJhcnNSdW50aW1lIiwiX2hhbmRsZWJhcnNOb0NvbmZsaWN0IiwiX3Zpc2l0b3IiLCJfcGFyc2VyIiwiX3doaXRlc3BhY2VDb250cm9sIiwiX2FzdCIsIkFycmF5U2V0IiwiTWFwcGluZ0xpc3QiLCJiYXNlNjRWTFEiLCJxdWlja1NvcnQiLCJTb3VyY2VNYXBHZW5lcmF0b3IiLCJkZWZpbmUiLCJfY29kZUdlbiIsIl9oYW5kbGViYXJzQ29tcGlsZXJBc3QiLCJfaGFuZGxlYmFyc0NvbXBpbGVySmF2YXNjcmlwdENvbXBpbGVyIiwiX2hhbmRsZWJhcnNDb21waWxlclZpc2l0b3IiLCJfaGFuZGxlYmFyc0NvbXBpbGVyQ29tcGlsZXIiLCJfaGFuZGxlYmFyc0NvbXBpbGVyQmFzZSIsImhhbmRsZWJhcnMiLCJyZXF1aXJlIiwiRXZlbnRzIiwicmVuZGVyTWF0Y2hlcyIsIkZ1enp5U3VnZ2VzdE1vZGFsIiwiTm90aWNlIiwiY2hhckNhdGVnb3JpZXMiLCJjaHVua2VyXzEiLCJiaWJ0ZXgiLCJ1bmljb2RlMmxhdGV4XzEiLCJqYWJyZWZfMSIsIlNldHRpbmciLCJGaWxlU3lzdGVtQWRhcHRlciIsIlBsdWdpblNldHRpbmdUYWIiLCJQcm9taXNlV29ya2VyIiwiTG9hZFdvcmtlciIsIk1hcmtkb3duVmlldyIsImNob2tpZGFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLndhdGNoIiwicGF0aC5yZXNvbHZlIiwiY29tcGlsZVRlbXBsYXRlIiwicGF0aC5qb2luIiwibm9ybWFsaXplUGF0aCIsIlBsdWdpbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxhQUFhLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ25DLElBQUksYUFBYSxHQUFHLE1BQU0sQ0FBQyxjQUFjO0FBQ3pDLFNBQVMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFlBQVksS0FBSyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNwRixRQUFRLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUMxRyxJQUFJLE9BQU8sYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMvQixDQUFDLENBQUM7QUFDRjtBQUNPLFNBQVMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDaEMsSUFBSSxhQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3hCLElBQUksU0FBUyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxFQUFFO0FBQzNDLElBQUksQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN6RixDQUFDO0FBQ0Q7QUFDTyxJQUFJLFFBQVEsR0FBRyxXQUFXO0FBQ2pDLElBQUksUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksU0FBUyxRQUFRLENBQUMsQ0FBQyxFQUFFO0FBQ3JELFFBQVEsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDN0QsWUFBWSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCLFlBQVksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekYsU0FBUztBQUNULFFBQVEsT0FBTyxDQUFDLENBQUM7QUFDakIsTUFBSztBQUNMLElBQUksT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztBQUMzQyxFQUFDO0FBNEJEO0FBQ08sU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFO0FBQzdELElBQUksU0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxLQUFLLFlBQVksQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxVQUFVLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0FBQ2hILElBQUksT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsVUFBVSxPQUFPLEVBQUUsTUFBTSxFQUFFO0FBQy9ELFFBQVEsU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUNuRyxRQUFRLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUN0RyxRQUFRLFNBQVMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRTtBQUN0SCxRQUFRLElBQUksQ0FBQyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxVQUFVLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUM5RSxLQUFLLENBQUMsQ0FBQztBQUNQLENBQUM7QUFDRDtBQUNPLFNBQVMsV0FBVyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUU7QUFDM0MsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3JILElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sTUFBTSxLQUFLLFVBQVUsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFdBQVcsRUFBRSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDN0osSUFBSSxTQUFTLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxPQUFPLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUN0RSxJQUFJLFNBQVMsSUFBSSxDQUFDLEVBQUUsRUFBRTtBQUN0QixRQUFRLElBQUksQ0FBQyxFQUFFLE1BQU0sSUFBSSxTQUFTLENBQUMsaUNBQWlDLENBQUMsQ0FBQztBQUN0RSxRQUFRLE9BQU8sQ0FBQyxFQUFFLElBQUk7QUFDdEIsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN6SyxZQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDcEQsWUFBWSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDekIsZ0JBQWdCLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU07QUFDOUMsZ0JBQWdCLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUN4RSxnQkFBZ0IsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztBQUNqRSxnQkFBZ0IsS0FBSyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUztBQUNqRSxnQkFBZ0I7QUFDaEIsb0JBQW9CLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUU7QUFDaEksb0JBQW9CLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUU7QUFDMUcsb0JBQW9CLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtBQUN6RixvQkFBb0IsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFO0FBQ3ZGLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQzFDLG9CQUFvQixDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUztBQUMzQyxhQUFhO0FBQ2IsWUFBWSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdkMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO0FBQ2xFLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUN6RixLQUFLO0FBQ0w7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3BHQSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUM7QUFDMUIsTUFBTSxZQUFZLEdBQUcsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUM7QUFDMUIsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDO0FBQzNCLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQztBQUM1QixNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUM7QUFDNUIsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDO0FBQ3pCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQztBQUNyQixNQUFNLFVBQVUsR0FBRyxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlDLE1BQU0sVUFBVSxHQUFHLENBQUMsRUFBRSxXQUFXLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDdEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BDLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuRCxNQUFNLFlBQVksR0FBRyxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1RCxNQUFNLGFBQWEsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxHQUFHLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVDLE1BQU0sSUFBSSxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDMUI7QUFDQSxNQUFNLFdBQVcsR0FBRztBQUNwQixFQUFFLFdBQVc7QUFDYixFQUFFLFlBQVk7QUFDZCxFQUFFLGFBQWE7QUFDZixFQUFFLGFBQWE7QUFDZixFQUFFLFFBQVE7QUFDVixFQUFFLEtBQUs7QUFDUCxFQUFFLFVBQVU7QUFDWixFQUFFLFVBQVU7QUFDWixFQUFFLE1BQU07QUFDUixFQUFFLE9BQU87QUFDVCxFQUFFLFlBQVk7QUFDZCxFQUFFLGFBQWE7QUFDZixFQUFFLFlBQVk7QUFDZCxFQUFFLElBQUk7QUFDTixFQUFFLFlBQVk7QUFDZCxDQUFDLENBQUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxhQUFhLEdBQUc7QUFDdEIsRUFBRSxHQUFHLFdBQVc7QUFDaEI7QUFDQSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLEVBQUUsS0FBSyxFQUFFLFlBQVk7QUFDckIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUM7QUFDM0IsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQztBQUN2RCxFQUFFLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO0FBQzlCLEVBQUUsT0FBTyxFQUFFLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUUsV0FBVyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsS0FBSyxDQUFDO0FBQzVFLEVBQUUsWUFBWSxFQUFFLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQztBQUM3RCxFQUFFLGFBQWEsRUFBRSxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUM7QUFDOUQsRUFBRSxZQUFZLEVBQUUsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUNsQyxFQUFFLFlBQVksRUFBRSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDO0FBQ3RDLEVBQUUsVUFBVSxFQUFFLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUM7QUFDcEMsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sa0JBQWtCLEdBQUc7QUFDM0IsRUFBRSxLQUFLLEVBQUUsV0FBVztBQUNwQixFQUFFLEtBQUssRUFBRSxRQUFRO0FBQ2pCLEVBQUUsS0FBSyxFQUFFLGFBQWE7QUFDdEIsRUFBRSxLQUFLLEVBQUUsTUFBTTtBQUNmLEVBQUUsS0FBSyxFQUFFLGtCQUFrQjtBQUMzQixFQUFFLEtBQUssRUFBRSxLQUFLO0FBQ2QsRUFBRSxLQUFLLEVBQUUsYUFBYTtBQUN0QixFQUFFLEtBQUssRUFBRSxLQUFLO0FBQ2QsRUFBRSxLQUFLLEVBQUUsY0FBYztBQUN2QixFQUFFLEtBQUssRUFBRSx3Q0FBd0M7QUFDakQsRUFBRSxLQUFLLEVBQUUsa0JBQWtCO0FBQzNCLEVBQUUsS0FBSyxFQUFFLEtBQUs7QUFDZCxFQUFFLElBQUksRUFBRSxZQUFZO0FBQ3BCLEVBQUUsTUFBTSxFQUFFLFdBQVc7QUFDckIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxhQUFjLEdBQUc7QUFDakIsRUFBRSxVQUFVLEVBQUUsSUFBSSxHQUFHLEVBQUU7QUFDdkIsRUFBRSxrQkFBa0I7QUFDcEI7QUFDQTtBQUNBLEVBQUUsZUFBZSxFQUFFLHdCQUF3QjtBQUMzQyxFQUFFLHVCQUF1QixFQUFFLDJCQUEyQjtBQUN0RCxFQUFFLG1CQUFtQixFQUFFLG1CQUFtQjtBQUMxQyxFQUFFLDJCQUEyQixFQUFFLG1CQUFtQjtBQUNsRCxFQUFFLDBCQUEwQixFQUFFLHNCQUFzQjtBQUNwRCxFQUFFLHNCQUFzQixFQUFFLDJCQUEyQjtBQUNyRDtBQUNBO0FBQ0EsRUFBRSxZQUFZLEVBQUU7QUFDaEIsSUFBSSxLQUFLLEVBQUUsR0FBRztBQUNkLElBQUksT0FBTyxFQUFFLElBQUk7QUFDakIsSUFBSSxVQUFVLEVBQUUsSUFBSTtBQUNwQixHQUFHO0FBQ0g7QUFDQTtBQUNBLEVBQUUsTUFBTSxFQUFFLEVBQUU7QUFDWixFQUFFLE1BQU0sRUFBRSxFQUFFO0FBQ1o7QUFDQTtBQUNBLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRTtBQUN0QixFQUFFLGdCQUFnQixFQUFFLEVBQUU7QUFDdEIsRUFBRSxnQkFBZ0IsRUFBRSxFQUFFO0FBQ3RCLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRztBQUN2QjtBQUNBLEVBQUUscUJBQXFCLEVBQUUsRUFBRTtBQUMzQixFQUFFLHNCQUFzQixFQUFFLEVBQUU7QUFDNUI7QUFDQSxFQUFFLGFBQWEsRUFBRSxFQUFFO0FBQ25CO0FBQ0E7QUFDQSxFQUFFLGNBQWMsRUFBRSxFQUFFO0FBQ3BCLEVBQUUsT0FBTyxFQUFFLEVBQUU7QUFDYixFQUFFLG1CQUFtQixFQUFFLEVBQUU7QUFDekIsRUFBRSxvQkFBb0IsRUFBRSxFQUFFO0FBQzFCLEVBQUUsc0JBQXNCLEVBQUUsRUFBRTtBQUM1QixFQUFFLFVBQVUsRUFBRSxFQUFFO0FBQ2hCLEVBQUUsVUFBVSxFQUFFLEVBQUU7QUFDaEIsRUFBRSxRQUFRLEVBQUUsRUFBRTtBQUNkLEVBQUUsaUJBQWlCLEVBQUUsRUFBRTtBQUN2QixFQUFFLFVBQVUsRUFBRSxFQUFFO0FBQ2hCLEVBQUUscUJBQXFCLEVBQUUsRUFBRTtBQUMzQixFQUFFLGNBQWMsRUFBRSxFQUFFO0FBQ3BCLEVBQUUsa0JBQWtCLEVBQUUsRUFBRTtBQUN4QixFQUFFLGlCQUFpQixFQUFFLEVBQUU7QUFDdkIsRUFBRSxTQUFTLEVBQUUsRUFBRTtBQUNmLEVBQUUsaUJBQWlCLEVBQUUsRUFBRTtBQUN2QixFQUFFLHVCQUF1QixFQUFFLEVBQUU7QUFDN0IsRUFBRSxxQkFBcUIsRUFBRSxHQUFHO0FBQzVCLEVBQUUsd0JBQXdCLEVBQUUsRUFBRTtBQUM5QixFQUFFLGNBQWMsRUFBRSxFQUFFO0FBQ3BCLEVBQUUsbUJBQW1CLEVBQUUsR0FBRztBQUMxQixFQUFFLFlBQVksRUFBRSxFQUFFO0FBQ2xCLEVBQUUsU0FBUyxFQUFFLEVBQUU7QUFDZixFQUFFLGtCQUFrQixFQUFFLEVBQUU7QUFDeEIsRUFBRSx3QkFBd0IsRUFBRSxFQUFFO0FBQzlCLEVBQUUsc0JBQXNCLEVBQUUsR0FBRztBQUM3QixFQUFFLHlCQUF5QixFQUFFLEVBQUU7QUFDL0IsRUFBRSxjQUFjLEVBQUUsRUFBRTtBQUNwQixFQUFFLGlCQUFpQixFQUFFLEVBQUU7QUFDdkIsRUFBRSxVQUFVLEVBQUUsRUFBRTtBQUNoQixFQUFFLFFBQVEsRUFBRSxDQUFDO0FBQ2IsRUFBRSxlQUFlLEVBQUUsRUFBRTtBQUNyQixFQUFFLGtCQUFrQixFQUFFLEdBQUc7QUFDekIsRUFBRSw2QkFBNkIsRUFBRSxLQUFLO0FBQ3RDO0FBQ0EsRUFBRSxHQUFHLEVBQUVBLDJCQUFJLENBQUMsR0FBRztBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFLFlBQVksQ0FBQyxLQUFLLEVBQUU7QUFDdEIsSUFBSSxPQUFPO0FBQ1gsTUFBTSxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDM0UsTUFBTSxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtBQUN0RCxNQUFNLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0FBQ3JELE1BQU0sR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7QUFDckQsTUFBTSxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUNsRCxLQUFLLENBQUM7QUFDTixHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsU0FBUyxDQUFDLEtBQUssRUFBRTtBQUNuQixJQUFJLE9BQU8sS0FBSyxLQUFLLElBQUksR0FBRyxhQUFhLEdBQUcsV0FBVyxDQUFDO0FBQ3hELEdBQUc7QUFDSCxDQUFDOzs7QUNqTEQ7QUFDNkI7QUFDN0IsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLFFBQVEsS0FBSyxPQUFPLENBQUM7QUFDM0MsTUFBTTtBQUNOLEVBQUUsZUFBZTtBQUNqQixFQUFFLHNCQUFzQjtBQUN4QixFQUFFLG1CQUFtQjtBQUNyQixFQUFFLDBCQUEwQjtBQUM1QixDQUFDLEdBQUdDLFNBQXNCLENBQUM7QUFDM0I7QUFDQSxnQkFBZ0IsR0FBRyxHQUFHLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3pGLHFCQUFxQixHQUFHLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0QsbUJBQW1CLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUUsbUJBQW1CLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsMEJBQTBCLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDN0Usc0JBQXNCLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ2xFO0FBQ0EseUJBQXlCLEdBQUcsR0FBRyxJQUFJO0FBQ25DLEVBQUUsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLHNCQUFzQixFQUFFLEtBQUssSUFBSTtBQUN0RCxJQUFJLE9BQU8sS0FBSyxLQUFLLElBQUksR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDO0FBQ3ZDLEdBQUcsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSwyQkFBMkIsR0FBRyxNQUFNO0FBQ3BDLEVBQUUsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMvRCxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRTtBQUM3RSxJQUFJLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLEdBQUc7QUFDSCxFQUFFLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBQ0Y7QUFDQSxpQkFBaUIsR0FBRyxPQUFPLElBQUk7QUFDL0IsRUFBRSxJQUFJLE9BQU8sSUFBSSxPQUFPLE9BQU8sQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFO0FBQ3ZELElBQUksT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDO0FBQzNCLEdBQUc7QUFDSCxFQUFFLE9BQU8sS0FBSyxLQUFLLElBQUksSUFBSUQsMkJBQUksQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDO0FBQzdDLENBQUMsQ0FBQztBQUNGO0FBQ0Esa0JBQWtCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sS0FBSztBQUMvQyxFQUFFLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQy9DLEVBQUUsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUUsT0FBTyxLQUFLLENBQUM7QUFDL0IsRUFBRSxJQUFJLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFLE9BQU8sT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMvRSxFQUFFLE9BQU8sQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RCxDQUFDLENBQUM7QUFDRjtBQUNBLG9CQUFvQixHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssR0FBRyxFQUFFLEtBQUs7QUFDOUMsRUFBRSxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7QUFDckIsRUFBRSxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDL0IsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QixJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0FBQ3hCLEdBQUc7QUFDSCxFQUFFLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUNGO0FBQ0Esa0JBQWtCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxHQUFHLEVBQUUsRUFBRSxPQUFPLEdBQUcsRUFBRSxLQUFLO0FBQzFELEVBQUUsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFFBQVEsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDO0FBQzlDLEVBQUUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDO0FBQzdDO0FBQ0EsRUFBRSxJQUFJLE1BQU0sR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDakQsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssSUFBSSxFQUFFO0FBQzlCLElBQUksTUFBTSxHQUFHLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNyQyxHQUFHO0FBQ0gsRUFBRSxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDOzs7QUM1REQsTUFBTTtBQUNOLEVBQUUsYUFBYTtBQUNmLEVBQUUsT0FBTztBQUNULEVBQUUsbUJBQW1CO0FBQ3JCLEVBQUUsVUFBVTtBQUNaLEVBQUUsUUFBUTtBQUNWLEVBQUUscUJBQXFCO0FBQ3ZCLEVBQUUsa0JBQWtCO0FBQ3BCLEVBQUUscUJBQXFCO0FBQ3ZCLEVBQUUscUJBQXFCO0FBQ3ZCLEVBQUUsd0JBQXdCO0FBQzFCLEVBQUUsU0FBUztBQUNYLEVBQUUsa0JBQWtCO0FBQ3BCLEVBQUUsc0JBQXNCO0FBQ3hCLEVBQUUsc0JBQXNCO0FBQ3hCLEVBQUUseUJBQXlCO0FBQzNCLENBQUMsR0FBR0MsU0FBc0IsQ0FBQztBQUMzQjtBQUNBLE1BQU0sZUFBZSxHQUFHLElBQUksSUFBSTtBQUNoQyxFQUFFLE9BQU8sSUFBSSxLQUFLLGtCQUFrQixJQUFJLElBQUksS0FBSyxtQkFBbUIsQ0FBQztBQUNyRSxDQUFDLENBQUM7QUFDRjtBQUNBLE1BQU0sS0FBSyxHQUFHLEtBQUssSUFBSTtBQUN2QixFQUFFLElBQUksS0FBSyxDQUFDLFFBQVEsS0FBSyxJQUFJLEVBQUU7QUFDL0IsSUFBSSxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxVQUFVLEdBQUcsUUFBUSxHQUFHLENBQUMsQ0FBQztBQUNsRCxHQUFHO0FBQ0gsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sS0FBSztBQUNqQyxFQUFFLE1BQU0sSUFBSSxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDN0I7QUFDQSxFQUFFLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ2xDLEVBQUUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUM7QUFDbkUsRUFBRSxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUM7QUFDckIsRUFBRSxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDcEIsRUFBRSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7QUFDbkI7QUFDQSxFQUFFLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQztBQUNsQixFQUFFLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2pCLEVBQUUsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBQ2hCLEVBQUUsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCLEVBQUUsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDO0FBQ3RCLEVBQUUsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDO0FBQ3hCLEVBQUUsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDO0FBQ3JCLEVBQUUsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDO0FBQ3hCLEVBQUUsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDO0FBQ3pCLEVBQUUsSUFBSSxZQUFZLEdBQUcsS0FBSyxDQUFDO0FBQzNCLEVBQUUsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDO0FBQzFCLEVBQUUsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDO0FBQ3RCLEVBQUUsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO0FBQ3ZCLEVBQUUsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ2pCLEVBQUUsSUFBSSxJQUFJLENBQUM7QUFDWCxFQUFFLElBQUksSUFBSSxDQUFDO0FBQ1gsRUFBRSxJQUFJLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDckQ7QUFDQSxFQUFFLE1BQU0sR0FBRyxHQUFHLE1BQU0sS0FBSyxJQUFJLE1BQU0sQ0FBQztBQUNwQyxFQUFFLE1BQU0sSUFBSSxHQUFHLE1BQU0sR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDL0MsRUFBRSxNQUFNLE9BQU8sR0FBRyxNQUFNO0FBQ3hCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztBQUNoQixJQUFJLE9BQU8sR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ25DLEdBQUcsQ0FBQztBQUNKO0FBQ0EsRUFBRSxPQUFPLEtBQUssR0FBRyxNQUFNLEVBQUU7QUFDekIsSUFBSSxJQUFJLEdBQUcsT0FBTyxFQUFFLENBQUM7QUFDckIsSUFBSSxJQUFJLElBQUksQ0FBQztBQUNiO0FBQ0EsSUFBSSxJQUFJLElBQUksS0FBSyxtQkFBbUIsRUFBRTtBQUN0QyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztBQUM3QyxNQUFNLElBQUksR0FBRyxPQUFPLEVBQUUsQ0FBQztBQUN2QjtBQUNBLE1BQU0sSUFBSSxJQUFJLEtBQUsscUJBQXFCLEVBQUU7QUFDMUMsUUFBUSxZQUFZLEdBQUcsSUFBSSxDQUFDO0FBQzVCLE9BQU87QUFDUCxNQUFNLFNBQVM7QUFDZixLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksWUFBWSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUsscUJBQXFCLEVBQUU7QUFDakUsTUFBTSxNQUFNLEVBQUUsQ0FBQztBQUNmO0FBQ0EsTUFBTSxPQUFPLEdBQUcsRUFBRSxLQUFLLElBQUksS0FBSyxJQUFJLEdBQUcsT0FBTyxFQUFFLENBQUMsRUFBRTtBQUNuRCxRQUFRLElBQUksSUFBSSxLQUFLLG1CQUFtQixFQUFFO0FBQzFDLFVBQVUsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0FBQ2pELFVBQVUsT0FBTyxFQUFFLENBQUM7QUFDcEIsVUFBVSxTQUFTO0FBQ25CLFNBQVM7QUFDVDtBQUNBLFFBQVEsSUFBSSxJQUFJLEtBQUsscUJBQXFCLEVBQUU7QUFDNUMsVUFBVSxNQUFNLEVBQUUsQ0FBQztBQUNuQixVQUFVLFNBQVM7QUFDbkIsU0FBUztBQUNUO0FBQ0EsUUFBUSxJQUFJLFlBQVksS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLEVBQUUsTUFBTSxRQUFRLEVBQUU7QUFDM0YsVUFBVSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDekMsVUFBVSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7QUFDdkMsVUFBVSxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQzFCO0FBQ0EsVUFBVSxJQUFJLFNBQVMsS0FBSyxJQUFJLEVBQUU7QUFDbEMsWUFBWSxTQUFTO0FBQ3JCLFdBQVc7QUFDWDtBQUNBLFVBQVUsTUFBTTtBQUNoQixTQUFTO0FBQ1Q7QUFDQSxRQUFRLElBQUksWUFBWSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssVUFBVSxFQUFFO0FBQzFELFVBQVUsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQ3pDLFVBQVUsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0FBQ3ZDLFVBQVUsUUFBUSxHQUFHLElBQUksQ0FBQztBQUMxQjtBQUNBLFVBQVUsSUFBSSxTQUFTLEtBQUssSUFBSSxFQUFFO0FBQ2xDLFlBQVksU0FBUztBQUNyQixXQUFXO0FBQ1g7QUFDQSxVQUFVLE1BQU07QUFDaEIsU0FBUztBQUNUO0FBQ0EsUUFBUSxJQUFJLElBQUksS0FBSyxzQkFBc0IsRUFBRTtBQUM3QyxVQUFVLE1BQU0sRUFBRSxDQUFDO0FBQ25CO0FBQ0EsVUFBVSxJQUFJLE1BQU0sS0FBSyxDQUFDLEVBQUU7QUFDNUIsWUFBWSxZQUFZLEdBQUcsS0FBSyxDQUFDO0FBQ2pDLFlBQVksT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQzNDLFlBQVksUUFBUSxHQUFHLElBQUksQ0FBQztBQUM1QixZQUFZLE1BQU07QUFDbEIsV0FBVztBQUNYLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQSxNQUFNLElBQUksU0FBUyxLQUFLLElBQUksRUFBRTtBQUM5QixRQUFRLFNBQVM7QUFDakIsT0FBTztBQUNQO0FBQ0EsTUFBTSxNQUFNO0FBQ1osS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLElBQUksS0FBSyxrQkFBa0IsRUFBRTtBQUNyQyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDMUIsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLE1BQU0sS0FBSyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUNyRDtBQUNBLE1BQU0sSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFLFNBQVM7QUFDdEMsTUFBTSxJQUFJLElBQUksS0FBSyxRQUFRLElBQUksS0FBSyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRTtBQUN0RCxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUM7QUFDbkIsUUFBUSxTQUFTO0FBQ2pCLE9BQU87QUFDUDtBQUNBLE1BQU0sU0FBUyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDNUIsTUFBTSxTQUFTO0FBQ2YsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFO0FBQzdCLE1BQU0sTUFBTSxhQUFhLEdBQUcsSUFBSSxLQUFLLFNBQVM7QUFDOUMsV0FBVyxJQUFJLEtBQUssT0FBTztBQUMzQixXQUFXLElBQUksS0FBSyxhQUFhO0FBQ2pDLFdBQVcsSUFBSSxLQUFLLGtCQUFrQjtBQUN0QyxXQUFXLElBQUksS0FBSyxxQkFBcUIsQ0FBQztBQUMxQztBQUNBLE1BQU0sSUFBSSxhQUFhLEtBQUssSUFBSSxJQUFJLElBQUksRUFBRSxLQUFLLHFCQUFxQixFQUFFO0FBQ3RFLFFBQVEsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0FBQ3JDLFFBQVEsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0FBQzNDLFFBQVEsUUFBUSxHQUFHLElBQUksQ0FBQztBQUN4QjtBQUNBLFFBQVEsSUFBSSxTQUFTLEtBQUssSUFBSSxFQUFFO0FBQ2hDLFVBQVUsT0FBTyxHQUFHLEVBQUUsS0FBSyxJQUFJLEtBQUssSUFBSSxHQUFHLE9BQU8sRUFBRSxDQUFDLEVBQUU7QUFDdkQsWUFBWSxJQUFJLElBQUksS0FBSyxtQkFBbUIsRUFBRTtBQUM5QyxjQUFjLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztBQUNyRCxjQUFjLElBQUksR0FBRyxPQUFPLEVBQUUsQ0FBQztBQUMvQixjQUFjLFNBQVM7QUFDdkIsYUFBYTtBQUNiO0FBQ0EsWUFBWSxJQUFJLElBQUksS0FBSyxzQkFBc0IsRUFBRTtBQUNqRCxjQUFjLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztBQUMzQyxjQUFjLFFBQVEsR0FBRyxJQUFJLENBQUM7QUFDOUIsY0FBYyxNQUFNO0FBQ3BCLGFBQWE7QUFDYixXQUFXO0FBQ1gsVUFBVSxTQUFTO0FBQ25CLFNBQVM7QUFDVCxRQUFRLE1BQU07QUFDZCxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLElBQUksS0FBSyxhQUFhLEVBQUU7QUFDaEMsTUFBTSxJQUFJLElBQUksS0FBSyxhQUFhLEVBQUUsVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBQ3ZFLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0FBQ25DLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQztBQUN0QjtBQUNBLE1BQU0sSUFBSSxTQUFTLEtBQUssSUFBSSxFQUFFO0FBQzlCLFFBQVEsU0FBUztBQUNqQixPQUFPO0FBQ1AsTUFBTSxNQUFNO0FBQ1osS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLElBQUksS0FBSyxrQkFBa0IsRUFBRTtBQUNyQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztBQUNuQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUM7QUFDdEI7QUFDQSxNQUFNLElBQUksU0FBUyxLQUFLLElBQUksRUFBRTtBQUM5QixRQUFRLFNBQVM7QUFDakIsT0FBTztBQUNQLE1BQU0sTUFBTTtBQUNaLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxJQUFJLEtBQUssd0JBQXdCLEVBQUU7QUFDM0MsTUFBTSxPQUFPLEdBQUcsRUFBRSxLQUFLLElBQUksS0FBSyxJQUFJLEdBQUcsT0FBTyxFQUFFLENBQUMsRUFBRTtBQUNuRCxRQUFRLElBQUksSUFBSSxLQUFLLG1CQUFtQixFQUFFO0FBQzFDLFVBQVUsV0FBVyxHQUFHLEtBQUssQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0FBQ2pELFVBQVUsT0FBTyxFQUFFLENBQUM7QUFDcEIsVUFBVSxTQUFTO0FBQ25CLFNBQVM7QUFDVDtBQUNBLFFBQVEsSUFBSSxJQUFJLEtBQUsseUJBQXlCLEVBQUU7QUFDaEQsVUFBVSxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7QUFDN0MsVUFBVSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7QUFDdkMsVUFBVSxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQzFCO0FBQ0EsVUFBVSxJQUFJLFNBQVMsS0FBSyxJQUFJLEVBQUU7QUFDbEMsWUFBWSxTQUFTO0FBQ3JCLFdBQVc7QUFDWCxVQUFVLE1BQU07QUFDaEIsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLHFCQUFxQixJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUU7QUFDckYsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDckMsTUFBTSxLQUFLLEVBQUUsQ0FBQztBQUNkLE1BQU0sU0FBUztBQUNmLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUsscUJBQXFCLEVBQUU7QUFDakUsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7QUFDbkM7QUFDQSxNQUFNLElBQUksU0FBUyxLQUFLLElBQUksRUFBRTtBQUM5QixRQUFRLE9BQU8sR0FBRyxFQUFFLEtBQUssSUFBSSxLQUFLLElBQUksR0FBRyxPQUFPLEVBQUUsQ0FBQyxFQUFFO0FBQ3JELFVBQVUsSUFBSSxJQUFJLEtBQUsscUJBQXFCLEVBQUU7QUFDOUMsWUFBWSxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7QUFDbkQsWUFBWSxJQUFJLEdBQUcsT0FBTyxFQUFFLENBQUM7QUFDN0IsWUFBWSxTQUFTO0FBQ3JCLFdBQVc7QUFDWDtBQUNBLFVBQVUsSUFBSSxJQUFJLEtBQUssc0JBQXNCLEVBQUU7QUFDL0MsWUFBWSxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQzVCLFlBQVksTUFBTTtBQUNsQixXQUFXO0FBQ1gsU0FBUztBQUNULFFBQVEsU0FBUztBQUNqQixPQUFPO0FBQ1AsTUFBTSxNQUFNO0FBQ1osS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7QUFDekIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQ3RCO0FBQ0EsTUFBTSxJQUFJLFNBQVMsS0FBSyxJQUFJLEVBQUU7QUFDOUIsUUFBUSxTQUFTO0FBQ2pCLE9BQU87QUFDUDtBQUNBLE1BQU0sTUFBTTtBQUNaLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUU7QUFDM0IsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDO0FBQ3RCLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQztBQUNuQixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQztBQUNqQixFQUFFLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUNsQixFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUNoQjtBQUNBLEVBQUUsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFO0FBQ2pCLElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2pDLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDM0IsSUFBSSxTQUFTLElBQUksS0FBSyxDQUFDO0FBQ3ZCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxJQUFJLElBQUksTUFBTSxLQUFLLElBQUksSUFBSSxTQUFTLEdBQUcsQ0FBQyxFQUFFO0FBQ2hELElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ25DLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDaEMsR0FBRyxNQUFNLElBQUksTUFBTSxLQUFLLElBQUksRUFBRTtBQUM5QixJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7QUFDZCxJQUFJLElBQUksR0FBRyxHQUFHLENBQUM7QUFDZixHQUFHLE1BQU07QUFDVCxJQUFJLElBQUksR0FBRyxHQUFHLENBQUM7QUFDZixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFLElBQUksSUFBSSxLQUFLLEdBQUcsSUFBSSxJQUFJLEtBQUssR0FBRyxFQUFFO0FBQzNELElBQUksSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDM0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvQixLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxFQUFFO0FBQzlCLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNuRDtBQUNBLElBQUksSUFBSSxJQUFJLElBQUksV0FBVyxLQUFLLElBQUksRUFBRTtBQUN0QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDM0MsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLEVBQUUsTUFBTSxLQUFLLEdBQUc7QUFDaEIsSUFBSSxNQUFNO0FBQ1YsSUFBSSxLQUFLO0FBQ1QsSUFBSSxLQUFLO0FBQ1QsSUFBSSxJQUFJO0FBQ1IsSUFBSSxJQUFJO0FBQ1IsSUFBSSxPQUFPO0FBQ1gsSUFBSSxTQUFTO0FBQ2IsSUFBSSxNQUFNO0FBQ1YsSUFBSSxTQUFTO0FBQ2IsSUFBSSxVQUFVO0FBQ2QsSUFBSSxPQUFPO0FBQ1gsR0FBRyxDQUFDO0FBQ0o7QUFDQSxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLEVBQUU7QUFDNUIsSUFBSSxLQUFLLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztBQUN2QixJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDaEMsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLEtBQUs7QUFDTCxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0FBQzFCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksRUFBRTtBQUNuRCxJQUFJLElBQUksU0FBUyxDQUFDO0FBQ2xCO0FBQ0EsSUFBSSxLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUNuRCxNQUFNLE1BQU0sQ0FBQyxHQUFHLFNBQVMsR0FBRyxTQUFTLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUNsRCxNQUFNLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM3QixNQUFNLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ3ZCLFFBQVEsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUU7QUFDdEMsVUFBVSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztBQUN0QyxVQUFVLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO0FBQ3JDLFNBQVMsTUFBTTtBQUNmLFVBQVUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDcEMsU0FBUztBQUNULFFBQVEsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzNCLFFBQVEsS0FBSyxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQzVDLE9BQU87QUFDUCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFO0FBQ3JDLFFBQVEsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMxQixPQUFPO0FBQ1AsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxTQUFTLElBQUksU0FBUyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFO0FBQ25ELE1BQU0sTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDL0MsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hCO0FBQ0EsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDdkIsUUFBUSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQ2hELFFBQVEsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekMsUUFBUSxLQUFLLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUMxRCxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsSUFBSSxLQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztBQUM1QixJQUFJLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQ3hCLEdBQUc7QUFDSDtBQUNBLEVBQUUsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUM7QUFDRjtBQUNBLFVBQWMsR0FBRyxJQUFJOztBQ3pYckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ04sRUFBRSxVQUFVO0FBQ1osc0JBQUVDLG9CQUFrQjtBQUNwQixFQUFFLHVCQUF1QjtBQUN6QixFQUFFLDJCQUEyQjtBQUM3QixFQUFFLFlBQVk7QUFDZCxDQUFDLEdBQUcsU0FBUyxDQUFDO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBSSxFQUFFLE9BQU8sS0FBSztBQUN2QyxFQUFFLElBQUksT0FBTyxPQUFPLENBQUMsV0FBVyxLQUFLLFVBQVUsRUFBRTtBQUNqRCxJQUFJLE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNqRCxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNkLEVBQUUsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QztBQUNBLEVBQUUsSUFBSTtBQUNOO0FBQ0EsSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN0QixHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUU7QUFDZixJQUFJLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMxRCxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksS0FBSztBQUNwQyxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0FBQ3RGLENBQUMsQ0FBQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLEtBQUssR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLEtBQUs7QUFDbEMsRUFBRSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtBQUNqQyxJQUFJLE1BQU0sSUFBSSxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUM3QyxHQUFHO0FBQ0g7QUFDQSxFQUFFLEtBQUssR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDO0FBQ3ZDO0FBQ0EsRUFBRSxNQUFNLElBQUksR0FBRyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7QUFDOUIsRUFBRSxNQUFNLEdBQUcsR0FBRyxPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxVQUFVLENBQUM7QUFDckc7QUFDQSxFQUFFLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDekIsRUFBRSxJQUFJLEdBQUcsR0FBRyxHQUFHLEVBQUU7QUFDakIsSUFBSSxNQUFNLElBQUksV0FBVyxDQUFDLENBQUMsY0FBYyxFQUFFLEdBQUcsQ0FBQyxrQ0FBa0MsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUYsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLEVBQUUsQ0FBQztBQUNyRSxFQUFFLE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdkI7QUFDQSxFQUFFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUMzQyxFQUFFLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDekM7QUFDQTtBQUNBLEVBQUUsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNwRCxFQUFFLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDL0Q7QUFDQSxFQUFFLE1BQU07QUFDUixJQUFJLFdBQVc7QUFDZixJQUFJLFlBQVk7QUFDaEIsSUFBSSxhQUFhO0FBQ2pCLElBQUksUUFBUTtBQUNaLElBQUksVUFBVTtBQUNkLElBQUksTUFBTTtBQUNWLElBQUksWUFBWTtBQUNoQixJQUFJLGFBQWE7QUFDakIsSUFBSSxLQUFLO0FBQ1QsSUFBSSxZQUFZO0FBQ2hCLElBQUksSUFBSTtBQUNSLElBQUksWUFBWTtBQUNoQixHQUFHLEdBQUcsY0FBYyxDQUFDO0FBQ3JCO0FBQ0EsRUFBRSxNQUFNLFFBQVEsR0FBRyxDQUFDLElBQUksS0FBSztBQUM3QixJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLFVBQVUsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDMUYsR0FBRyxDQUFDO0FBQ0o7QUFDQSxFQUFFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQztBQUN2QyxFQUFFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxHQUFHLFlBQVksQ0FBQztBQUNyRCxFQUFFLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDeEQ7QUFDQSxFQUFFLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtBQUNwQixJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkIsR0FBRztBQUNIO0FBQ0E7QUFDQSxFQUFFLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRTtBQUN2QyxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztBQUNoQyxHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sS0FBSyxHQUFHO0FBQ2hCLElBQUksS0FBSztBQUNULElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQztBQUNiLElBQUksS0FBSyxFQUFFLENBQUM7QUFDWixJQUFJLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxLQUFLLElBQUk7QUFDMUIsSUFBSSxRQUFRLEVBQUUsRUFBRTtBQUNoQixJQUFJLE1BQU0sRUFBRSxFQUFFO0FBQ2QsSUFBSSxNQUFNLEVBQUUsRUFBRTtBQUNkLElBQUksU0FBUyxFQUFFLEtBQUs7QUFDcEIsSUFBSSxPQUFPLEVBQUUsS0FBSztBQUNsQixJQUFJLFFBQVEsRUFBRSxDQUFDO0FBQ2YsSUFBSSxNQUFNLEVBQUUsQ0FBQztBQUNiLElBQUksTUFBTSxFQUFFLENBQUM7QUFDYixJQUFJLE1BQU0sRUFBRSxDQUFDO0FBQ2IsSUFBSSxRQUFRLEVBQUUsS0FBSztBQUNuQixJQUFJLE1BQU07QUFDVixHQUFHLENBQUM7QUFDSjtBQUNBLEVBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzNDLEVBQUUsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDckI7QUFDQSxFQUFFLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztBQUN0QixFQUFFLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUNwQixFQUFFLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztBQUNuQixFQUFFLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQztBQUNqQixFQUFFLElBQUksS0FBSyxDQUFDO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsTUFBTSxHQUFHLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDNUMsRUFBRSxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM5RCxFQUFFLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDN0QsRUFBRSxNQUFNLFNBQVMsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN2RCxFQUFFLE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBSyxHQUFHLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxLQUFLO0FBQzNDLElBQUksS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUM7QUFDNUIsSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQztBQUN2QixHQUFHLENBQUM7QUFDSixFQUFFLE1BQU0sTUFBTSxHQUFHLEtBQUssSUFBSTtBQUMxQixJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0FBQ3RFLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6QixHQUFHLENBQUM7QUFDSjtBQUNBLEVBQUUsTUFBTSxNQUFNLEdBQUcsTUFBTTtBQUN2QixJQUFJLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztBQUNsQjtBQUNBLElBQUksT0FBTyxJQUFJLEVBQUUsS0FBSyxHQUFHLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUU7QUFDbkUsTUFBTSxPQUFPLEVBQUUsQ0FBQztBQUNoQixNQUFNLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNwQixNQUFNLEtBQUssRUFBRSxDQUFDO0FBQ2QsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ3pCLE1BQU0sT0FBTyxLQUFLLENBQUM7QUFDbkIsS0FBSztBQUNMO0FBQ0EsSUFBSSxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztBQUN6QixJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNsQixJQUFJLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLEdBQUcsQ0FBQztBQUNKO0FBQ0EsRUFBRSxNQUFNLFNBQVMsR0FBRyxJQUFJLElBQUk7QUFDNUIsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUNsQixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckIsR0FBRyxDQUFDO0FBQ0o7QUFDQSxFQUFFLE1BQU0sU0FBUyxHQUFHLElBQUksSUFBSTtBQUM1QixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQ2xCLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ2hCLEdBQUcsQ0FBQztBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsTUFBTSxJQUFJLEdBQUcsR0FBRyxJQUFJO0FBQ3RCLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRTtBQUNsQyxNQUFNLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssT0FBTyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLENBQUM7QUFDekYsTUFBTSxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsT0FBTyxLQUFLLElBQUksS0FBSyxRQUFRLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNuSDtBQUNBLE1BQU0sSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRTtBQUNsRixRQUFRLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNsRSxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO0FBQzNCLFFBQVEsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7QUFDekIsUUFBUSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztBQUMzQixRQUFRLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUNwQyxPQUFPO0FBQ1AsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLFFBQVEsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQzlFLE1BQU0sUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFDdkQsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0MsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTtBQUM3RCxNQUFNLElBQUksQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQztBQUM5QixNQUFNLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDO0FBQ3BELE1BQU0sT0FBTztBQUNiLEtBQUs7QUFDTDtBQUNBLElBQUksR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDcEIsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JCLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQztBQUNmLEdBQUcsQ0FBQztBQUNKO0FBQ0EsRUFBRSxNQUFNLFdBQVcsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLEtBQUs7QUFDdkMsSUFBSSxNQUFNLEtBQUssR0FBRyxFQUFFLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ3hFO0FBQ0EsSUFBSSxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUN0QixJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FB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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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